diff --git a/docs/index.html b/docs/index.html index fcd2d200..d31e982b 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,9 +1,18 @@ Prettier - - - + + + + @@ -94,7 +103,7 @@ - + @@ -113,6 +122,7 @@ - diff --git a/docs/index.js b/docs/index.js new file mode 100644 index 00000000..c34a63e2 --- /dev/null +++ b/docs/index.js @@ -0,0 +1,12425 @@ +'use strict'; + +function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } + +var require$$0 = _interopDefault(require('assert')); + +function assertDoc(val) { + if ( + !(typeof val === "string" || (val != null && typeof val.type === "string")) + ) { + throw new Error( + "Value " + JSON.stringify(val) + " is not a valid document" + ); + } +} + +function concat$1(parts) { + parts.forEach(assertDoc); + + // We cannot do this until we change `printJSXElement` to not + // access the internals of a document directly. + // if(parts.length === 1) { + // // If it's a single document, no need to concat it. + // return parts[0]; + // } + return { type: "concat", parts }; +} + +function indent$1(contents) { + assertDoc(contents); + + return { type: "indent", contents }; +} + +function align(n, contents) { + assertDoc(contents); + + return { type: "align", contents, n }; +} + +function group(contents, opts) { + opts = opts || {}; + + assertDoc(contents); + + return { + type: "group", + contents: contents, + break: !!opts.shouldBreak, + expandedStates: opts.expandedStates + }; +} + +function conditionalGroup(states, opts) { + return group( + states[0], + Object.assign(opts || {}, { expandedStates: states }) + ); +} + +function fill(parts) { + parts.forEach(assertDoc); + + return { type: "fill", parts }; +} + +function ifBreak(breakContents, flatContents) { + if (breakContents) { + assertDoc(breakContents); + } + if (flatContents) { + assertDoc(flatContents); + } + + return { type: "if-break", breakContents, flatContents }; +} + +function lineSuffix$1(contents) { + assertDoc(contents); + return { type: "line-suffix", contents }; +} + +const lineSuffixBoundary = { type: "line-suffix-boundary" }; +const breakParent$1 = { type: "break-parent" }; +const line = { type: "line" }; +const softline = { type: "line", soft: true }; +const hardline$1 = concat$1([{ type: "line", hard: true }, breakParent$1]); +const literalline = concat$1([ + { type: "line", hard: true, literal: true }, + breakParent$1 +]); + +function join$1(sep, arr) { + const res = []; + + for (let i = 0; i < arr.length; i++) { + if (i !== 0) { + res.push(sep); + } + + res.push(arr[i]); + } + + return concat$1(res); +} + +function addAlignmentToDoc(doc, size, tabWidth) { + let aligned = doc; + if (size > 0) { + // Use indent to add tabs for all the levels of tabs we need + for (let i = 0; i < Math.floor(size / tabWidth); ++i) { + aligned = indent$1(aligned); + } + // Use align for all the spaces that are needed + aligned = align(size % tabWidth, aligned); + // size is absolute from 0 and not relative to the current + // indentation, so we use -Infinity to reset the indentation to 0 + aligned = align(-Infinity, aligned); + } + return aligned; +} + +var docBuilders$1 = { + concat: concat$1, + join: join$1, + line, + softline, + hardline: hardline$1, + literalline, + group, + conditionalGroup, + fill, + lineSuffix: lineSuffix$1, + lineSuffixBoundary, + breakParent: breakParent$1, + ifBreak, + indent: indent$1, + align, + addAlignmentToDoc +}; + +function isExportDeclaration(node) { + if (node) { + switch (node.type) { + case "ExportDeclaration": + case "ExportDefaultDeclaration": + case "ExportDefaultSpecifier": + case "DeclareExportDeclaration": + case "ExportNamedDeclaration": + case "ExportAllDeclaration": + return true; + } + } + + return false; +} + +function getParentExportDeclaration(path) { + const parentNode = path.getParentNode(); + if (path.getName() === "declaration" && isExportDeclaration(parentNode)) { + return parentNode; + } + + return null; +} + +function getPenultimate(arr) { + if (arr.length > 1) { + return arr[arr.length - 2]; + } + return null; +} + +function getLast(arr) { + if (arr.length > 0) { + return arr[arr.length - 1]; + } + return null; +} + +function skip(chars) { + return (text, index, opts) => { + const backwards = opts && opts.backwards; + + // Allow `skip` functions to be threaded together without having + // to check for failures (did someone say monads?). + if (index === false) { + return false; + } + + const length = text.length; + let cursor = index; + while (cursor >= 0 && cursor < length) { + const c = text.charAt(cursor); + if (chars instanceof RegExp) { + if (!chars.test(c)) { + return cursor; + } + } else if (chars.indexOf(c) === -1) { + return cursor; + } + + backwards ? cursor-- : cursor++; + } + + if (cursor === -1 || cursor === length) { + // If we reached the beginning or end of the file, return the + // out-of-bounds cursor. It's up to the caller to handle this + // correctly. We don't want to indicate `false` though if it + // actually skipped valid characters. + return cursor; + } + return false; + }; +} + +const skipWhitespace = skip(/\s/); +const skipSpaces = skip(" \t"); +const skipToLineEnd = skip(",; \t"); +const skipEverythingButNewLine = skip(/[^\r\n]/); + +function skipInlineComment(text, index) { + if (index === false) { + return false; + } + + if (text.charAt(index) === "/" && text.charAt(index + 1) === "*") { + for (let i = index + 2; i < text.length; ++i) { + if (text.charAt(i) === "*" && text.charAt(i + 1) === "/") { + return i + 2; + } + } + } + return index; +} + +function skipTrailingComment(text, index) { + if (index === false) { + return false; + } + + if (text.charAt(index) === "/" && text.charAt(index + 1) === "/") { + return skipEverythingButNewLine(text, index); + } + return index; +} + +// This one doesn't use the above helper function because it wants to +// test \r\n in order and `skip` doesn't support ordering and we only +// want to skip one newline. It's simple to implement. +function skipNewline(text, index, opts) { + const backwards = opts && opts.backwards; + if (index === false) { + return false; + } + + const atIndex = text.charAt(index); + if (backwards) { + if (text.charAt(index - 1) === "\r" && atIndex === "\n") { + return index - 2; + } + if ( + atIndex === "\n" || + atIndex === "\r" || + atIndex === "\u2028" || + atIndex === "\u2029" + ) { + return index - 1; + } + } else { + if (atIndex === "\r" && text.charAt(index + 1) === "\n") { + return index + 2; + } + if ( + atIndex === "\n" || + atIndex === "\r" || + atIndex === "\u2028" || + atIndex === "\u2029" + ) { + return index + 1; + } + } + + return index; +} + +function hasNewline(text, index, opts) { + opts = opts || {}; + const idx = skipSpaces(text, opts.backwards ? index - 1 : index, opts); + const idx2 = skipNewline(text, idx, opts); + return idx !== idx2; +} + +function hasNewlineInRange(text, start, end) { + for (let i = start; i < end; ++i) { + if (text.charAt(i) === "\n") { + return true; + } + } + return false; +} + +// Note: this function doesn't ignore leading comments unlike isNextLineEmpty +function isPreviousLineEmpty(text, node) { + let idx = locStart$1(node) - 1; + idx = skipSpaces(text, idx, { backwards: true }); + idx = skipNewline(text, idx, { backwards: true }); + idx = skipSpaces(text, idx, { backwards: true }); + const idx2 = skipNewline(text, idx, { backwards: true }); + return idx !== idx2; +} + +function isNextLineEmpty(text, node) { + let oldIdx = null; + let idx = locEnd$1(node); + while (idx !== oldIdx) { + // We need to skip all the potential trailing inline comments + oldIdx = idx; + idx = skipToLineEnd(text, idx); + idx = skipInlineComment(text, idx); + idx = skipSpaces(text, idx); + } + idx = skipTrailingComment(text, idx); + idx = skipNewline(text, idx); + return hasNewline(text, idx); +} + +function getNextNonSpaceNonCommentCharacter$1(text, node) { + let oldIdx = null; + let idx = locEnd$1(node); + while (idx !== oldIdx) { + oldIdx = idx; + idx = skipSpaces(text, idx); + idx = skipInlineComment(text, idx); + idx = skipTrailingComment(text, idx); + idx = skipNewline(text, idx); + } + return text.charAt(idx); +} + +function hasSpaces(text, index, opts) { + opts = opts || {}; + const idx = skipSpaces(text, opts.backwards ? index - 1 : index, opts); + return idx !== index; +} + +function locStart$1(node) { + if (node.decorators && node.decorators.length > 0) { + return locStart$1(node.decorators[0]); + } + if (node.range) { + return node.range[0]; + } + if (typeof node.start === "number") { + return node.start; + } + if (node.source) { + return lineColumnToIndex(node.source.start, node.source.input.css) - 1; + } +} + +function locEnd$1(node) { + if (node.range) { + return node.range[1]; + } + if (typeof node.end === "number") { + return node.end; + } + if (node.source) { + return lineColumnToIndex(node.source.end, node.source.input.css); + } +} + +// Super inefficient, needs to be cached. +function lineColumnToIndex(lineColumn, text) { + let index = 0; + for (let i = 0; i < lineColumn.line - 1; ++i) { + index = text.indexOf("\n", index) + 1; + if (index === -1) { + return -1; + } + } + return index + lineColumn.column; +} + +function setLocStart(node, index) { + if (node.range) { + node.range[0] = index; + } else { + node.start = index; + } +} + +function setLocEnd(node, index) { + if (node.range) { + node.range[1] = index; + } else { + node.end = index; + } +} + +const PRECEDENCE = {}; +[ + ["||"], + ["&&"], + ["|"], + ["^"], + ["&"], + ["==", "===", "!=", "!=="], + ["<", ">", "<=", ">=", "in", "instanceof"], + [">>", "<<", ">>>"], + ["+", "-"], + ["*", "/", "%"], + ["**"] +].forEach((tier, i) => { + tier.forEach(op => { + PRECEDENCE[op] = i; + }); +}); + +function getPrecedence(op) { + return PRECEDENCE[op]; +} + +// Tests if an expression starts with `{`, or (if forbidFunctionAndClass holds) `function` or `class`. +// Will be overzealous if there's already necessary grouping parentheses. +function startsWithNoLookaheadToken(node, forbidFunctionAndClass) { + node = getLeftMost(node); + switch (node.type) { + case "FunctionExpression": + case "ClassExpression": + return forbidFunctionAndClass; + case "ObjectExpression": + return true; + case "MemberExpression": + return startsWithNoLookaheadToken(node.object, forbidFunctionAndClass); + case "TaggedTemplateExpression": + if (node.tag.type === "FunctionExpression") { + // IIFEs are always already parenthesized + return false; + } + return startsWithNoLookaheadToken(node.tag, forbidFunctionAndClass); + case "CallExpression": + if (node.callee.type === "FunctionExpression") { + // IIFEs are always already parenthesized + return false; + } + return startsWithNoLookaheadToken(node.callee, forbidFunctionAndClass); + case "ConditionalExpression": + return startsWithNoLookaheadToken(node.test, forbidFunctionAndClass); + case "UpdateExpression": + return ( + !node.prefix && + startsWithNoLookaheadToken(node.argument, forbidFunctionAndClass) + ); + case "BindExpression": + return ( + node.object && + startsWithNoLookaheadToken(node.object, forbidFunctionAndClass) + ); + case "SequenceExpression": + return startsWithNoLookaheadToken( + node.expressions[0], + forbidFunctionAndClass + ); + default: + return false; + } +} + +function getLeftMost(node) { + if (node.left) { + return getLeftMost(node.left); + } else { + return node; + } +} + +function hasBlockComments(node) { + return node.comments && node.comments.some(isBlockComment); +} + +function isBlockComment(comment) { + return comment.type === "Block" || comment.type === "CommentBlock"; +} + +function getAlignmentSize(value, tabWidth, startIndex) { + startIndex = startIndex || 0; + + let size = 0; + for (let i = startIndex; i < value.length; ++i) { + if (value[i] === "\t") { + // Tabs behave in a way that they are aligned to the nearest + // multiple of tabWidth: + // 0 -> 4, 1 -> 4, 2 -> 4, 3 -> 4 + // 4 -> 8, 5 -> 8, 6 -> 8, 7 -> 8 ... + size = size + tabWidth - size % tabWidth; + } else { + size++; + } + } + + return size; +} + +var util$2 = { + getPrecedence, + isExportDeclaration, + getParentExportDeclaration, + getPenultimate, + getLast, + getNextNonSpaceNonCommentCharacter: getNextNonSpaceNonCommentCharacter$1, + skipWhitespace, + skipSpaces, + skipNewline, + isNextLineEmpty, + isPreviousLineEmpty, + hasNewline, + hasNewlineInRange, + hasSpaces, + locStart: locStart$1, + locEnd: locEnd$1, + setLocStart, + setLocEnd, + startsWithNoLookaheadToken, + hasBlockComments, + isBlockComment, + getAlignmentSize +}; + +const assert = require$$0; +const docBuilders = docBuilders$1; +const concat = docBuilders.concat; +const hardline = docBuilders.hardline; +const breakParent = docBuilders.breakParent; +const indent = docBuilders.indent; +const lineSuffix = docBuilders.lineSuffix; +const join = docBuilders.join; +const util$1 = util$2; +const childNodesCacheKey = Symbol("child-nodes"); +const locStart = util$1.locStart; +const locEnd = util$1.locEnd; +const getNextNonSpaceNonCommentCharacter = + util$1.getNextNonSpaceNonCommentCharacter; + +function getSortedChildNodes(node, text, resultArray) { + if (!node) { + return; + } + + if (resultArray) { + if ( + node && + node.type && + node.type !== "CommentBlock" && + node.type !== "CommentLine" && + node.type !== "Line" && + node.type !== "Block" && + node.type !== "EmptyStatement" && + node.type !== "TemplateElement" + ) { + // This reverse insertion sort almost always takes constant + // time because we almost always (maybe always?) append the + // nodes in order anyway. + let i; + for (i = resultArray.length - 1; i >= 0; --i) { + if ( + locStart(resultArray[i]) <= locStart(node) && + locEnd(resultArray[i]) <= locEnd(node) + ) { + break; + } + } + resultArray.splice(i + 1, 0, node); + return; + } + } else if (node[childNodesCacheKey]) { + return node[childNodesCacheKey]; + } + + let names; + if (node && typeof node === "object") { + names = Object.keys(node).filter( + n => + n !== "enclosingNode" && n !== "precedingNode" && n !== "followingNode" + ); + } else { + return; + } + + if (!resultArray) { + Object.defineProperty(node, childNodesCacheKey, { + value: (resultArray = []), + enumerable: false + }); + } + + for (let i = 0, nameCount = names.length; i < nameCount; ++i) { + getSortedChildNodes(node[names[i]], text, resultArray); + } + + return resultArray; +} + +// As efficiently as possible, decorate the comment object with +// .precedingNode, .enclosingNode, and/or .followingNode properties, at +// least one of which is guaranteed to be defined. +function decorateComment(node, comment, text) { + const childNodes = getSortedChildNodes(node, text); + let precedingNode, followingNode; + // Time to dust off the old binary search robes and wizard hat. + let left = 0, right = childNodes.length; + while (left < right) { + const middle = (left + right) >> 1; + const child = childNodes[middle]; + + if ( + locStart(child) - locStart(comment) <= 0 && + locEnd(comment) - locEnd(child) <= 0 + ) { + // The comment is completely contained by this child node. + comment.enclosingNode = child; + + decorateComment(child, comment, text); + return; // Abandon the binary search at this level. + } + + if (locEnd(child) - locStart(comment) <= 0) { + // This child node falls completely before the comment. + // Because we will never consider this node or any nodes + // before it again, this node must be the closest preceding + // node we have encountered so far. + precedingNode = child; + left = middle + 1; + continue; + } + + if (locEnd(comment) - locStart(child) <= 0) { + // This child node falls completely after the comment. + // Because we will never consider this node or any nodes after + // it again, this node must be the closest following node we + // have encountered so far. + followingNode = child; + right = middle; + continue; + } + + throw new Error("Comment location overlaps with node location"); + } + + // We don't want comments inside of different expressions inside of the same + // template literal to move to another expression. + if ( + comment.enclosingNode && + comment.enclosingNode.type === "TemplateLiteral" + ) { + const quasis = comment.enclosingNode.quasis; + const commentIndex = findExpressionIndexForComment(quasis, comment); + + if ( + precedingNode && + findExpressionIndexForComment(quasis, precedingNode) !== commentIndex + ) { + precedingNode = null; + } + if ( + followingNode && + findExpressionIndexForComment(quasis, followingNode) !== commentIndex + ) { + followingNode = null; + } + } + + if (precedingNode) { + comment.precedingNode = precedingNode; + } + + if (followingNode) { + comment.followingNode = followingNode; + } +} + +function attach(comments, ast, text) { + if (!Array.isArray(comments)) { + return; + } + + const tiesToBreak = []; + + comments.forEach((comment, i) => { + decorateComment(ast, comment, text); + + const precedingNode = comment.precedingNode; + const enclosingNode = comment.enclosingNode; + const followingNode = comment.followingNode; + + const isLastComment = comments.length - 1 === i; + + if (util$1.hasNewline(text, locStart(comment), { backwards: true })) { + // If a comment exists on its own line, prefer a leading comment. + // We also need to check if it's the first line of the file. + if ( + handleLastFunctionArgComments( + text, + precedingNode, + enclosingNode, + followingNode, + comment + ) || + handleMemberExpressionComments(enclosingNode, followingNode, comment) || + handleIfStatementComments( + text, + precedingNode, + enclosingNode, + followingNode, + comment + ) || + handleTryStatementComments(enclosingNode, followingNode, comment) || + handleClassComments(enclosingNode, comment) || + handleImportSpecifierComments(enclosingNode, comment) || + handleObjectPropertyComments(enclosingNode, comment) || + handleForComments(enclosingNode, precedingNode, comment) || + handleUnionTypeComments( + precedingNode, + enclosingNode, + followingNode, + comment + ) || + handleOnlyComments(enclosingNode, ast, comment, isLastComment) || + handleImportDeclarationComments( + text, + enclosingNode, + precedingNode, + comment + ) || + handleAssignmentPatternComments(enclosingNode, comment) + ) { + // We're good + } else if (followingNode) { + // Always a leading comment. + addLeadingComment(followingNode, comment); + } else if (precedingNode) { + addTrailingComment(precedingNode, comment); + } else if (enclosingNode) { + addDanglingComment(enclosingNode, comment); + } else { + // There are no nodes, let's attach it to the root of the ast + addDanglingComment(ast, comment); + } + } else if (util$1.hasNewline(text, locEnd(comment))) { + if ( + handleLastFunctionArgComments( + text, + precedingNode, + enclosingNode, + followingNode, + comment + ) || + handleConditionalExpressionComments( + enclosingNode, + precedingNode, + followingNode, + comment, + text + ) || + handleImportSpecifierComments(enclosingNode, comment) || + handleIfStatementComments( + text, + precedingNode, + enclosingNode, + followingNode, + comment + ) || + handleClassComments(enclosingNode, comment) || + handleLabeledStatementComments(enclosingNode, comment) || + handleCallExpressionComments(precedingNode, enclosingNode, comment) || + handlePropertyComments(enclosingNode, comment) || + handleExportNamedDeclarationComments(enclosingNode, comment) || + handleOnlyComments(enclosingNode, ast, comment, isLastComment) || + handleClassMethodComments(enclosingNode, comment) || + handleTypeAliasComments(enclosingNode, followingNode, comment) || + handleVariableDeclaratorComments(enclosingNode, followingNode, comment) + ) { + // We're good + } else if (precedingNode) { + // There is content before this comment on the same line, but + // none after it, so prefer a trailing comment of the previous node. + addTrailingComment(precedingNode, comment); + } else if (followingNode) { + addLeadingComment(followingNode, comment); + } else if (enclosingNode) { + addDanglingComment(enclosingNode, comment); + } else { + // There are no nodes, let's attach it to the root of the ast + addDanglingComment(ast, comment); + } + } else { + if ( + handleIfStatementComments( + text, + precedingNode, + enclosingNode, + followingNode, + comment + ) || + handleObjectPropertyAssignment(enclosingNode, precedingNode, comment) || + handleCommentInEmptyParens(text, enclosingNode, comment) || + handleOnlyComments(enclosingNode, ast, comment, isLastComment) + ) { + // We're good + } else if (precedingNode && followingNode) { + // Otherwise, text exists both before and after the comment on + // the same line. If there is both a preceding and following + // node, use a tie-breaking algorithm to determine if it should + // be attached to the next or previous node. In the last case, + // simply attach the right node; + const tieCount = tiesToBreak.length; + if (tieCount > 0) { + const lastTie = tiesToBreak[tieCount - 1]; + if (lastTie.followingNode !== comment.followingNode) { + breakTies(tiesToBreak, text); + } + } + tiesToBreak.push(comment); + } else if (precedingNode) { + addTrailingComment(precedingNode, comment); + } else if (followingNode) { + addLeadingComment(followingNode, comment); + } else if (enclosingNode) { + addDanglingComment(enclosingNode, comment); + } else { + // There are no nodes, let's attach it to the root of the ast + addDanglingComment(ast, comment); + } + } + }); + + breakTies(tiesToBreak, text); + + comments.forEach(comment => { + // These node references were useful for breaking ties, but we + // don't need them anymore, and they create cycles in the AST that + // may lead to infinite recursion if we don't delete them here. + delete comment.precedingNode; + delete comment.enclosingNode; + delete comment.followingNode; + }); +} + +function breakTies(tiesToBreak, text) { + const tieCount = tiesToBreak.length; + if (tieCount === 0) { + return; + } + + const precedingNode = tiesToBreak[0].precedingNode; + const followingNode = tiesToBreak[0].followingNode; + let gapEndPos = locStart(followingNode); + + // Iterate backwards through tiesToBreak, examining the gaps + // between the tied comments. In order to qualify as leading, a + // comment must be separated from followingNode by an unbroken series of + // whitespace-only gaps (or other comments). + let indexOfFirstLeadingComment; + for ( + indexOfFirstLeadingComment = tieCount; + indexOfFirstLeadingComment > 0; + --indexOfFirstLeadingComment + ) { + const comment = tiesToBreak[indexOfFirstLeadingComment - 1]; + assert.strictEqual(comment.precedingNode, precedingNode); + assert.strictEqual(comment.followingNode, followingNode); + + const gap = text.slice(locEnd(comment), gapEndPos); + if (/\S/.test(gap)) { + // The gap string contained something other than whitespace. + break; + } + + gapEndPos = locStart(comment); + } + + tiesToBreak.forEach((comment, i) => { + if (i < indexOfFirstLeadingComment) { + addTrailingComment(precedingNode, comment); + } else { + addLeadingComment(followingNode, comment); + } + }); + + tiesToBreak.length = 0; +} + +function addCommentHelper(node, comment) { + const comments = node.comments || (node.comments = []); + comments.push(comment); + comment.printed = false; +} + +function addLeadingComment(node, comment) { + comment.leading = true; + comment.trailing = false; + addCommentHelper(node, comment); +} + +function addDanglingComment(node, comment) { + comment.leading = false; + comment.trailing = false; + addCommentHelper(node, comment); +} + +function addTrailingComment(node, comment) { + comment.leading = false; + comment.trailing = true; + addCommentHelper(node, comment); +} + +function addBlockStatementFirstComment(node, comment) { + const body = node.body.filter(n => n.type !== "EmptyStatement"); + if (body.length === 0) { + addDanglingComment(node, comment); + } else { + addLeadingComment(body[0], comment); + } +} + +function addBlockOrNotComment(node, comment) { + if (node.type === "BlockStatement") { + addBlockStatementFirstComment(node, comment); + } else { + addLeadingComment(node, comment); + } +} + +// There are often comments before the else clause of if statements like +// +// if (1) { ... } +// // comment +// else { ... } +// +// They are being attached as leading comments of the BlockExpression which +// is not well printed. What we want is to instead move the comment inside +// of the block and make it leadingComment of the first element of the block +// or dangling comment of the block if there is nothing inside +// +// if (1) { ... } +// else { +// // comment +// ... +// } +function handleIfStatementComments( + text, + precedingNode, + enclosingNode, + followingNode, + comment +) { + if ( + !enclosingNode || + enclosingNode.type !== "IfStatement" || + !followingNode + ) { + return false; + } + + // We unfortunately have no way using the AST or location of nodes to know + // if the comment is positioned before or after the condition parenthesis: + // if (a /* comment */) {} + // if (a) /* comment */ {} + // The only workaround I found is to look at the next character to see if + // it is a ). + if (getNextNonSpaceNonCommentCharacter(text, comment) === ")") { + addTrailingComment(precedingNode, comment); + return true; + } + + if (followingNode.type === "BlockStatement") { + addBlockStatementFirstComment(followingNode, comment); + return true; + } + + if (followingNode.type === "IfStatement") { + addBlockOrNotComment(followingNode.consequent, comment); + return true; + } + + return false; +} + +// Same as IfStatement but for TryStatement +function handleTryStatementComments(enclosingNode, followingNode, comment) { + if ( + !enclosingNode || + enclosingNode.type !== "TryStatement" || + !followingNode + ) { + return false; + } + + if (followingNode.type === "BlockStatement") { + addBlockStatementFirstComment(followingNode, comment); + return true; + } + + if (followingNode.type === "TryStatement") { + addBlockOrNotComment(followingNode.finalizer, comment); + return true; + } + + if (followingNode.type === "CatchClause") { + addBlockOrNotComment(followingNode.body, comment); + return true; + } + + return false; +} + +function handleMemberExpressionComments(enclosingNode, followingNode, comment) { + if ( + enclosingNode && + enclosingNode.type === "MemberExpression" && + followingNode && + followingNode.type === "Identifier" + ) { + addLeadingComment(enclosingNode, comment); + return true; + } + + return false; +} + +function handleConditionalExpressionComments( + enclosingNode, + precedingNode, + followingNode, + comment, + text +) { + const isSameLineAsPrecedingNode = + precedingNode && + !util$1.hasNewlineInRange(text, locEnd(precedingNode), locStart(comment)); + + if ( + (!precedingNode || !isSameLineAsPrecedingNode) && + enclosingNode && + enclosingNode.type === "ConditionalExpression" && + followingNode + ) { + addLeadingComment(followingNode, comment); + return true; + } + return false; +} + +function handleObjectPropertyAssignment(enclosingNode, precedingNode, comment) { + if ( + enclosingNode && + (enclosingNode.type === "ObjectProperty" || + enclosingNode.type === "Property") && + enclosingNode.shorthand && + enclosingNode.key === precedingNode && + enclosingNode.value.type === "AssignmentPattern" + ) { + addTrailingComment(enclosingNode.value.left, comment); + return true; + } + return false; +} + +function handleCommentInEmptyParens(text, enclosingNode, comment) { + if (getNextNonSpaceNonCommentCharacter(text, comment) !== ")") { + return false; + } + + // Only add dangling comments to fix the case when no params are present, + // i.e. a function without any argument. + if ( + enclosingNode && + (((enclosingNode.type === "FunctionDeclaration" || + enclosingNode.type === "FunctionExpression" || + enclosingNode.type === "ArrowFunctionExpression" || + enclosingNode.type === "ClassMethod" || + enclosingNode.type === "ObjectMethod") && + enclosingNode.params.length === 0) || + (enclosingNode.type === "CallExpression" && + enclosingNode.arguments.length === 0)) + ) { + addDanglingComment(enclosingNode, comment); + return true; + } + if ( + enclosingNode && + (enclosingNode.type === "MethodDefinition" && + enclosingNode.value.params.length === 0) + ) { + addDanglingComment(enclosingNode.value, comment); + return true; + } + return false; +} + +function handleLastFunctionArgComments( + text, + precedingNode, + enclosingNode, + followingNode, + comment +) { + // Type definitions functions + if ( + precedingNode && + precedingNode.type === "FunctionTypeParam" && + enclosingNode && + enclosingNode.type === "FunctionTypeAnnotation" && + followingNode && + followingNode.type !== "FunctionTypeParam" + ) { + addTrailingComment(precedingNode, comment); + return true; + } + + // Real functions + if ( + precedingNode && + (precedingNode.type === "Identifier" || + precedingNode.type === "AssignmentPattern") && + enclosingNode && + (enclosingNode.type === "ArrowFunctionExpression" || + enclosingNode.type === "FunctionExpression" || + enclosingNode.type === "FunctionDeclaration" || + enclosingNode.type === "ObjectMethod" || + enclosingNode.type === "ClassMethod") && + getNextNonSpaceNonCommentCharacter(text, comment) === ")" + ) { + addTrailingComment(precedingNode, comment); + return true; + } + return false; +} + +function handleClassComments(enclosingNode, comment) { + if ( + enclosingNode && + (enclosingNode.type === "ClassDeclaration" || + enclosingNode.type === "ClassExpression") + ) { + addLeadingComment(enclosingNode, comment); + return true; + } + return false; +} + +function handleImportSpecifierComments(enclosingNode, comment) { + if (enclosingNode && enclosingNode.type === "ImportSpecifier") { + addLeadingComment(enclosingNode, comment); + return true; + } + return false; +} + +function handleObjectPropertyComments(enclosingNode, comment) { + if (enclosingNode && enclosingNode.type === "ObjectProperty") { + addLeadingComment(enclosingNode, comment); + return true; + } + return false; +} + +function handleLabeledStatementComments(enclosingNode, comment) { + if (enclosingNode && enclosingNode.type === "LabeledStatement") { + addLeadingComment(enclosingNode, comment); + return true; + } + return false; +} + +function handleCallExpressionComments(precedingNode, enclosingNode, comment) { + if ( + enclosingNode && + enclosingNode.type === "CallExpression" && + precedingNode && + enclosingNode.callee === precedingNode && + enclosingNode.arguments.length > 0 + ) { + addLeadingComment(enclosingNode.arguments[0], comment); + return true; + } + return false; +} + +function handleUnionTypeComments( + precedingNode, + enclosingNode, + followingNode, + comment +) { + if ( + enclosingNode && + (enclosingNode.type === "UnionTypeAnnotation" || + enclosingNode.type === "TSUnionType") + ) { + addTrailingComment(precedingNode, comment); + return true; + } + return false; +} + +function handlePropertyComments(enclosingNode, comment) { + if ( + enclosingNode && + (enclosingNode.type === "Property" || + enclosingNode.type === "ObjectProperty") + ) { + addLeadingComment(enclosingNode, comment); + return true; + } + return false; +} + +function handleExportNamedDeclarationComments(enclosingNode, comment) { + if (enclosingNode && enclosingNode.type === "ExportNamedDeclaration") { + addLeadingComment(enclosingNode, comment); + return true; + } + return false; +} + +function handleOnlyComments(enclosingNode, ast, comment, isLastComment) { + // With Flow the enclosingNode is undefined so use the AST instead. + if (ast && ast.body && ast.body.length === 0) { + if (isLastComment) { + addDanglingComment(ast, comment); + } else { + addLeadingComment(ast, comment); + } + return true; + } else if ( + enclosingNode && + enclosingNode.type === "Program" && + enclosingNode.body.length === 0 && + enclosingNode.directives && + enclosingNode.directives.length === 0 + ) { + if (isLastComment) { + addDanglingComment(enclosingNode, comment); + } else { + addLeadingComment(enclosingNode, comment); + } + return true; + } + return false; +} + +function handleForComments(enclosingNode, precedingNode, comment) { + if ( + enclosingNode && + (enclosingNode.type === "ForInStatement" || + enclosingNode.type === "ForOfStatement") + ) { + addLeadingComment(enclosingNode, comment); + return true; + } + return false; +} + +function handleImportDeclarationComments( + text, + enclosingNode, + precedingNode, + comment +) { + if ( + precedingNode && + enclosingNode && + enclosingNode.type === "ImportDeclaration" && + util$1.hasNewline(text, util$1.locEnd(comment)) + ) { + addTrailingComment(precedingNode, comment); + return true; + } + return false; +} + +function handleAssignmentPatternComments(enclosingNode, comment) { + if (enclosingNode && enclosingNode.type === "AssignmentPattern") { + addLeadingComment(enclosingNode, comment); + return true; + } + return false; +} + +function handleClassMethodComments(enclosingNode, comment) { + if (enclosingNode && enclosingNode.type === "ClassMethod") { + addTrailingComment(enclosingNode, comment); + return true; + } + return false; +} + +function handleTypeAliasComments(enclosingNode, followingNode, comment) { + if (enclosingNode && enclosingNode.type === "TypeAlias") { + addLeadingComment(enclosingNode, comment); + return true; + } + return false; +} + +function handleVariableDeclaratorComments( + enclosingNode, + followingNode, + comment +) { + if ( + enclosingNode && + enclosingNode.type === "VariableDeclarator" && + followingNode && + (followingNode.type === "ObjectExpression" || + followingNode.type === "ArrayExpression") + ) { + addLeadingComment(followingNode, comment); + return true; + } + return false; +} + +function printComment(commentPath, options) { + const comment = commentPath.getValue(); + comment.printed = true; + + switch (comment.type) { + case "CommentBlock": + case "Block": + return "/*" + comment.value + "*/"; + case "CommentLine": + case "Line": + // Don't print the shebang, it's taken care of in index.js + if (options.originalText.slice(util$1.locStart(comment)).startsWith("#!")) { + return ""; + } + return "//" + comment.value; + default: + throw new Error("Not a comment: " + JSON.stringify(comment)); + } +} + +function findExpressionIndexForComment(quasis, comment) { + const startPos = locStart(comment) - 1; + + for (let i = 1; i < quasis.length; ++i) { + if (startPos < getQuasiRange(quasis[i]).start) { + return i - 1; + } + } + + // We haven't found it, it probably means that some of the locations are off. + // Let's just return the first one. + return 0; +} + +function getQuasiRange(expr) { + if (expr.start !== undefined) { + // Babylon + return { start: expr.start, end: expr.end }; + } + // Flow + return { start: expr.range[0], end: expr.range[1] }; +} + +function printLeadingComment(commentPath, print, options) { + const comment = commentPath.getValue(); + const contents = printComment(commentPath, options); + if (!contents) { + return ""; + } + const isBlock = util$1.isBlockComment(comment); + + // Leading block comments should see if they need to stay on the + // same line or not. + if (isBlock) { + return concat([ + contents, + util$1.hasNewline(options.originalText, locEnd(comment)) ? hardline : " " + ]); + } + + return concat([contents, hardline]); +} + +function printTrailingComment(commentPath, print, options) { + const comment = commentPath.getValue(); + const contents = printComment(commentPath, options); + if (!contents) { + return ""; + } + const isBlock = util$1.isBlockComment(comment); + + if ( + util$1.hasNewline(options.originalText, locStart(comment), { + backwards: true + }) + ) { + // This allows comments at the end of nested structures: + // { + // x: 1, + // y: 2 + // // A comment + // } + // Those kinds of comments are almost always leading comments, but + // here it doesn't go "outside" the block and turns it into a + // trailing comment for `2`. We can simulate the above by checking + // if this a comment on its own line; normal trailing comments are + // always at the end of another expression. + + const isLineBeforeEmpty = util$1.isPreviousLineEmpty( + options.originalText, + comment + ); + + return lineSuffix( + concat([hardline, isLineBeforeEmpty ? hardline : "", contents]) + ); + } else if (isBlock) { + // Trailing block comments never need a newline + return concat([" ", contents]); + } + + return concat([lineSuffix(" " + contents), !isBlock ? breakParent : ""]); +} + +function printDanglingComments(path, options, sameIndent) { + const parts = []; + const node = path.getValue(); + + if (!node || !node.comments) { + return ""; + } + + path.each(commentPath => { + const comment = commentPath.getValue(); + if (comment && !comment.leading && !comment.trailing) { + parts.push(printComment(commentPath, options)); + } + }, "comments"); + + if (parts.length === 0) { + return ""; + } + + if (sameIndent) { + return join(hardline, parts); + } + return indent(concat([hardline, join(hardline, parts)])); +} + +function printComments(path, print, options, needsSemi) { + const value = path.getValue(); + const printed = print(path); + const comments = value && value.comments; + + if (!comments || comments.length === 0) { + return printed; + } + + const leadingParts = []; + const trailingParts = [needsSemi ? ";" : "", printed]; + + path.each(commentPath => { + const comment = commentPath.getValue(); + const leading = comment.leading; + const trailing = comment.trailing; + + if (leading) { + const contents = printLeadingComment(commentPath, print, options); + if (!contents) { + return; + } + leadingParts.push(contents); + + const text = options.originalText; + if (util$1.hasNewline(text, util$1.skipNewline(text, util$1.locEnd(comment)))) { + leadingParts.push(hardline); + } + } else if (trailing) { + trailingParts.push(printTrailingComment(commentPath, print, options)); + } + }, "comments"); + + return concat(leadingParts.concat(trailingParts)); +} + +var comments$1 = { + attach, + printComments, + printDanglingComments, + getSortedChildNodes +}; + +var name = "prettier"; +var version$1 = "1.4.0-beta"; +var description = "Prettier is an opinionated JavaScript formatter"; +var bin = {"prettier":"./bin/prettier.js"}; +var repository = "prettier/prettier"; +var author = "James Long"; +var license = "MIT"; +var main = "./index.js"; +var dependencies = {"babel-code-frame":"6.22.0","babylon":"7.0.0-beta.10","chalk":"1.1.3","esutils":"2.0.2","flow-parser":"0.47.0","get-stdin":"5.0.1","glob":"7.1.1","jest-validate":"20.0.0","minimist":"1.2.0"}; +var devDependencies = {"cross-spawn":"^5.1.0","diff":"3.2.0","eslint":"^3.19.0","eslint-plugin-prettier":"^2.1.1","jest":"20.0.0","mkdirp":"^0.5.1","postcss":"^6.0.1","postcss-less":"^1.0.0","postcss-media-query-parser":"^0.2.3","postcss-scss":"1.0.0","postcss-selector-parser":"^2.2.3","postcss-values-parser":"git://github.com/shellscape/postcss-values-parser.git#5e351360479116f3fe309602cdd15b0a233bc29f","prettier":"^1.3.1","rimraf":"^2.6.1","rollup":"0.41.1","rollup-plugin-commonjs":"7.0.0","rollup-plugin-json":"2.1.0","rollup-plugin-node-builtins":"2.0.0","rollup-plugin-node-globals":"1.1.0","rollup-plugin-node-resolve":"2.0.0","rollup-plugin-replace":"1.1.1","typescript":"2.3.2","typescript-eslint-parser":"git://github.com/eslint/typescript-eslint-parser.git#3dcba7d53f61f51069ed84b57e053802c014d703","uglify-es":"mishoo/UglifyJS2#harmony","webpack":"^2.6.1"}; +var scripts = {"test":"jest","test-integration":"jest tests_integration","lint":"eslint .","build":"./scripts/build/build.sh","build:docs":"rollup -c docs/rollup.config.js"}; +var jest = {"setupFiles":["/tests_config/run_spec.js"],"snapshotSerializers":["/tests_config/raw-serializer.js"],"testRegex":"jsfmt\\.spec\\.js$|__tests__/.*\\.js$","testPathIgnorePatterns":["tests/new_react","tests/more_react"]}; +var _package = { + name: name, + version: version$1, + description: description, + bin: bin, + repository: repository, + author: author, + license: license, + main: main, + dependencies: dependencies, + devDependencies: devDependencies, + scripts: scripts, + jest: jest +}; + +var _package$1 = Object.freeze({ + name: name, + version: version$1, + description: description, + bin: bin, + repository: repository, + author: author, + license: license, + main: main, + dependencies: dependencies, + devDependencies: devDependencies, + scripts: scripts, + jest: jest, + default: _package +}); + +const assert$2 = require$$0; +const util$5 = util$2; +const startsWithNoLookaheadToken$1 = util$5.startsWithNoLookaheadToken; + +function FastPath$1(value) { + assert$2.ok(this instanceof FastPath$1); + this.stack = [value]; +} + +// The name of the current property is always the penultimate element of +// this.stack, and always a String. +FastPath$1.prototype.getName = function getName() { + const s = this.stack; + const len = s.length; + if (len > 1) { + return s[len - 2]; + } + // Since the name is always a string, null is a safe sentinel value to + // return if we do not know the name of the (root) value. + return null; +}; + +// The value of the current property is always the final element of +// this.stack. +FastPath$1.prototype.getValue = function getValue() { + const s = this.stack; + return s[s.length - 1]; +}; + +function getNodeHelper(path, count) { + const s = path.stack; + + for (let i = s.length - 1; i >= 0; i -= 2) { + const value = s[i]; + + if (value && !Array.isArray(value) && --count < 0) { + return value; + } + } + + return null; +} + +FastPath$1.prototype.getNode = function getNode(count) { + return getNodeHelper(this, ~~count); +}; + +FastPath$1.prototype.getParentNode = function getParentNode(count) { + return getNodeHelper(this, ~~count + 1); +}; + +// Temporarily push properties named by string arguments given after the +// callback function onto this.stack, then call the callback with a +// reference to this (modified) FastPath object. Note that the stack will +// be restored to its original state after the callback is finished, so it +// is probably a mistake to retain a reference to the path. +FastPath$1.prototype.call = function call(callback /*, name1, name2, ... */) { + const s = this.stack; + const origLen = s.length; + let value = s[origLen - 1]; + const argc = arguments.length; + for (let i = 1; i < argc; ++i) { + const name = arguments[i]; + value = value[name]; + s.push(name, value); + } + const result = callback(this); + s.length = origLen; + return result; +}; + +// Similar to FastPath.prototype.call, except that the value obtained by +// accessing this.getValue()[name1][name2]... should be array-like. The +// callback will be called with a reference to this path object for each +// element of the array. +FastPath$1.prototype.each = function each(callback /*, name1, name2, ... */) { + const s = this.stack; + const origLen = s.length; + let value = s[origLen - 1]; + const argc = arguments.length; + + for (let i = 1; i < argc; ++i) { + const name = arguments[i]; + value = value[name]; + s.push(name, value); + } + + for (let i = 0; i < value.length; ++i) { + if (i in value) { + s.push(i, value[i]); + // If the callback needs to know the value of i, call + // path.getName(), assuming path is the parameter name. + callback(this); + s.length -= 2; + } + } + + s.length = origLen; +}; + +// Similar to FastPath.prototype.each, except that the results of the +// callback function invocations are stored in an array and returned at +// the end of the iteration. +FastPath$1.prototype.map = function map(callback /*, name1, name2, ... */) { + const s = this.stack; + const origLen = s.length; + let value = s[origLen - 1]; + const argc = arguments.length; + + for (let i = 1; i < argc; ++i) { + const name = arguments[i]; + value = value[name]; + s.push(name, value); + } + + const result = new Array(value.length); + + for (let i = 0; i < value.length; ++i) { + if (i in value) { + s.push(i, value[i]); + result[i] = callback(this, i); + s.length -= 2; + } + } + + s.length = origLen; + + return result; +}; + +FastPath$1.prototype.needsParens = function() { + const parent = this.getParentNode(); + if (!parent) { + return false; + } + + const name = this.getName(); + const node = this.getNode(); + + // If the value of this path is some child of a Node and not a Node + // itself, then it doesn't need parentheses. Only Node objects (in + // fact, only Expression nodes) need parentheses. + if (this.getValue() !== node) { + return false; + } + + // Only statements don't need parentheses. + if (isStatement(node)) { + return false; + } + + // Identifiers never need parentheses. + if (node.type === "Identifier") { + return false; + } + + if (parent.type === "ParenthesizedExpression") { + return false; + } + + // Add parens around the extends clause of a class. It is needed for almost + // all expressions. + if ( + (parent.type === "ClassDeclaration" || parent.type === "ClassExpression") && + parent.superClass === node && + (node.type === "ArrowFunctionExpression" || + node.type === "AssignmentExpression" || + node.type === "AwaitExpression" || + node.type === "BinaryExpression" || + node.type === "ConditionalExpression" || + node.type === "LogicalExpression" || + node.type === "NewExpression" || + node.type === "ObjectExpression" || + node.type === "ParenthesizedExpression" || + node.type === "SequenceExpression" || + node.type === "TaggedTemplateExpression" || + node.type === "UnaryExpression" || + node.type === "UpdateExpression" || + node.type === "YieldExpression") + ) { + return true; + } + + if ( + (parent.type === "ArrowFunctionExpression" && + parent.body === node && + startsWithNoLookaheadToken$1(node, /* forbidFunctionAndClass */ false)) || + (parent.type === "ExpressionStatement" && + startsWithNoLookaheadToken$1(node, /* forbidFunctionAndClass */ true)) + ) { + return true; + } + + switch (node.type) { + case "CallExpression": + if (parent.type === "NewExpression" && parent.callee === node) { + return true; + } + return false; + + case "SpreadElement": + case "SpreadProperty": + return ( + parent.type === "MemberExpression" && + name === "object" && + parent.object === node + ); + + case "UpdateExpression": + if (parent.type === "UnaryExpression") { + return ( + node.prefix && + ((node.operator === "++" && parent.operator === "+") || + (node.operator === "--" && parent.operator === "-")) + ); + } + // else fallthrough + case "UnaryExpression": + switch (parent.type) { + case "UnaryExpression": + return ( + node.operator === parent.operator && + (node.operator === "+" || node.operator === "-") + ); + + case "MemberExpression": + return name === "object" && parent.object === node; + + case "TaggedTemplateExpression": + return true; + + case "NewExpression": + case "CallExpression": + return name === "callee" && parent.callee === node; + + case "BinaryExpression": + return parent.operator === "**" && name === "left"; + + default: + return false; + } + + case "BinaryExpression": { + if (parent.type === "UpdateExpression") { + return true; + } + + const isLeftOfAForStatement = node => { + let i = 0; + while (node) { + const parent = this.getParentNode(i++); + if (!parent) { + return false; + } + if (parent.type === "ForStatement" && parent.init === node) { + return true; + } + node = parent; + } + return false; + }; + if (node.operator === "in" && isLeftOfAForStatement(node)) { + return true; + } + } + // fallthrough + case "TSTypeAssertionExpression": + case "TSAsExpression": + case "LogicalExpression": + switch (parent.type) { + case "CallExpression": + case "NewExpression": + return name === "callee" && parent.callee === node; + + case "ClassDeclaration": + return name === "superClass" && parent.superClass === node; + case "TSTypeAssertionExpression": + case "TaggedTemplateExpression": + case "UnaryExpression": + case "SpreadElement": + case "SpreadProperty": + case "AwaitExpression": + case "TSAsExpression": + case "TSNonNullExpression": + return true; + + case "MemberExpression": + return name === "object" && parent.object === node; + + case "BinaryExpression": + case "LogicalExpression": { + if (!node.operator) { + return true; + } + + const po = parent.operator; + const pp = util$5.getPrecedence(po); + const no = node.operator; + const np = util$5.getPrecedence(no); + + if (po === "||" && no === "&&") { + return true; + } + + if (pp > np) { + return true; + } + + if (no === "**" && po === "**") { + return name === "left"; + } + + if (pp === np && name === "right") { + assert$2.strictEqual(parent.right, node); + return true; + } + + // Add parenthesis when working with binary operators + // It's not stricly needed but helps with code understanding + if (["|", "^", "&", ">>", "<<", ">>>"].indexOf(po) !== -1) { + return true; + } + + return false; + } + + default: + return false; + } + + case "SequenceExpression": + switch (parent.type) { + case "ReturnStatement": + return false; + + case "ForStatement": + // Although parentheses wouldn't hurt around sequence + // expressions in the head of for loops, traditional style + // dictates that e.g. i++, j++ should not be wrapped with + // parentheses. + return false; + + case "ExpressionStatement": + return name !== "expression"; + + default: + // Otherwise err on the side of overparenthesization, adding + // explicit exceptions above if this proves overzealous. + return true; + } + + case "YieldExpression": + if ( + parent.type === "UnaryExpression" || + parent.type === "AwaitExpression" + ) { + return true; + } + // else fallthrough + case "AwaitExpression": + switch (parent.type) { + case "TaggedTemplateExpression": + case "BinaryExpression": + case "LogicalExpression": + case "SpreadElement": + case "SpreadProperty": + return true; + + case "MemberExpression": + return parent.object === node; + + case "NewExpression": + case "CallExpression": + return parent.callee === node; + + case "ConditionalExpression": + return parent.test === node; + + default: + return false; + } + + case "ArrayTypeAnnotation": + return parent.type === "NullableTypeAnnotation"; + + case "IntersectionTypeAnnotation": + case "UnionTypeAnnotation": + return ( + parent.type === "ArrayTypeAnnotation" || + parent.type === "NullableTypeAnnotation" || + parent.type === "IntersectionTypeAnnotation" || + parent.type === "UnionTypeAnnotation" + ); + + case "NullableTypeAnnotation": + return parent.type === "ArrayTypeAnnotation"; + + case "FunctionTypeAnnotation": + return ( + parent.type === "UnionTypeAnnotation" || + parent.type === "IntersectionTypeAnnotation" + ); + + case "NumericLiteral": + case "Literal": + return ( + parent.type === "MemberExpression" && + typeof node.value === "number" && + name === "object" && + parent.object === node + ); + + case "AssignmentExpression": { + const grandParent = this.getParentNode(1); + + if (parent.type === "ArrowFunctionExpression" && parent.body === node) { + return true; + } else if ( + parent.type === "ClassProperty" && + parent.key === node && + parent.computed + ) { + return false; + } else if ( + parent.type === "TSPropertySignature" && + parent.name === node + ) { + return false; + } else if ( + parent.type === "ForStatement" && + (parent.init === node || parent.update === node) + ) { + return false; + } else if (parent.type === "ExpressionStatement") { + return node.left.type === "ObjectPattern"; + } else if (parent.type === "TSPropertySignature" && parent.key === node) { + return false; + } else if (parent.type === "AssignmentExpression") { + return false; + } else if ( + parent.type === "SequenceExpression" && + grandParent && + grandParent.type === "ForStatement" && + (grandParent.init === parent || grandParent.update === parent) + ) { + return false; + } + return true; + } + case "ConditionalExpression": + switch (parent.type) { + case "TaggedTemplateExpression": + case "UnaryExpression": + case "SpreadElement": + case "SpreadProperty": + case "BinaryExpression": + case "LogicalExpression": + case "ExportDefaultDeclaration": + case "AwaitExpression": + case "JSXSpreadAttribute": + case "TSTypeAssertionExpression": + case "TSAsExpression": + case "TSNonNullExpression": + return true; + + case "NewExpression": + case "CallExpression": + return name === "callee" && parent.callee === node; + + case "ConditionalExpression": + return name === "test" && parent.test === node; + + case "MemberExpression": + return name === "object" && parent.object === node; + + default: + return false; + } + + case "FunctionExpression": + switch (parent.type) { + case "CallExpression": + return name === "callee"; // Not strictly necessary, but it's clearer to the reader if IIFEs are wrapped in parentheses. + case "TaggedTemplateExpression": + return true; // This is basically a kind of IIFE. + case "ExportDefaultDeclaration": + return true; + default: + return false; + } + + case "ArrowFunctionExpression": + switch (parent.type) { + case "CallExpression": + return name === "callee"; + + case "NewExpression": + return name === "callee"; + + case "MemberExpression": + return name === "object"; + + case "TSAsExpression": + case "BindExpression": + case "TaggedTemplateExpression": + case "UnaryExpression": + case "LogicalExpression": + case "BinaryExpression": + case "AwaitExpression": + case "TSTypeAssertionExpression": + return true; + + case "ConditionalExpression": + return name === "test"; + + default: + return false; + } + + case "ClassExpression": + return parent.type === "ExportDefaultDeclaration"; + + case "StringLiteral": + return parent.type === "ExpressionStatement"; // To avoid becoming a directive + } + + return false; +}; + +function isStatement(node) { + return ( + node.type === "BlockStatement" || + node.type === "BreakStatement" || + node.type === "ClassBody" || + node.type === "ClassDeclaration" || + node.type === "ClassMethod" || + node.type === "ClassProperty" || + node.type === "ContinueStatement" || + node.type === "DebuggerStatement" || + node.type === "DeclareClass" || + node.type === "DeclareExportAllDeclaration" || + node.type === "DeclareExportDeclaration" || + node.type === "DeclareFunction" || + node.type === "DeclareInterface" || + node.type === "DeclareModule" || + node.type === "DeclareModuleExports" || + node.type === "DeclareVariable" || + node.type === "DoWhileStatement" || + node.type === "ExportAllDeclaration" || + node.type === "ExportDefaultDeclaration" || + node.type === "ExportNamedDeclaration" || + node.type === "ExpressionStatement" || + node.type === "ForAwaitStatement" || + node.type === "ForInStatement" || + node.type === "ForOfStatement" || + node.type === "ForStatement" || + node.type === "FunctionDeclaration" || + node.type === "IfStatement" || + node.type === "ImportDeclaration" || + node.type === "InterfaceDeclaration" || + node.type === "LabeledStatement" || + node.type === "MethodDefinition" || + node.type === "ReturnStatement" || + node.type === "SwitchStatement" || + node.type === "ThrowStatement" || + node.type === "TryStatement" || + node.type === "TSAbstractClassDeclaration" || + node.type === "TSEnumDeclaration" || + node.type === "TSImportEqualsDeclaration" || + node.type === "TSInterfaceDeclaration" || + node.type === "TSModuleDeclaration" || + node.type === "TSNamespaceExportDeclaration" || + node.type === "TSNamespaceFunctionDeclaration" || + node.type === "TypeAlias" || + node.type === "VariableDeclaration" || + node.type === "WhileStatement" || + node.type === "WithStatement" + ); +} + +var fastPath = FastPath$1; + +function createCommonjsModule(fn, module) { + return module = { exports: {} }, fn(module, module.exports), module.exports; +} + +var ast = createCommonjsModule(function (module) { +/* + Copyright (C) 2013 Yusuke Suzuki + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +(function () { + 'use strict'; + + function isExpression(node) { + if (node == null) { return false; } + switch (node.type) { + case 'ArrayExpression': + case 'AssignmentExpression': + case 'BinaryExpression': + case 'CallExpression': + case 'ConditionalExpression': + case 'FunctionExpression': + case 'Identifier': + case 'Literal': + case 'LogicalExpression': + case 'MemberExpression': + case 'NewExpression': + case 'ObjectExpression': + case 'SequenceExpression': + case 'ThisExpression': + case 'UnaryExpression': + case 'UpdateExpression': + return true; + } + return false; + } + + function isIterationStatement(node) { + if (node == null) { return false; } + switch (node.type) { + case 'DoWhileStatement': + case 'ForInStatement': + case 'ForStatement': + case 'WhileStatement': + return true; + } + return false; + } + + function isStatement(node) { + if (node == null) { return false; } + switch (node.type) { + case 'BlockStatement': + case 'BreakStatement': + case 'ContinueStatement': + case 'DebuggerStatement': + case 'DoWhileStatement': + case 'EmptyStatement': + case 'ExpressionStatement': + case 'ForInStatement': + case 'ForStatement': + case 'IfStatement': + case 'LabeledStatement': + case 'ReturnStatement': + case 'SwitchStatement': + case 'ThrowStatement': + case 'TryStatement': + case 'VariableDeclaration': + case 'WhileStatement': + case 'WithStatement': + return true; + } + return false; + } + + function isSourceElement(node) { + return isStatement(node) || node != null && node.type === 'FunctionDeclaration'; + } + + function trailingStatement(node) { + switch (node.type) { + case 'IfStatement': + if (node.alternate != null) { + return node.alternate; + } + return node.consequent; + + case 'LabeledStatement': + case 'ForStatement': + case 'ForInStatement': + case 'WhileStatement': + case 'WithStatement': + return node.body; + } + return null; + } + + function isProblematicIfStatement(node) { + var current; + + if (node.type !== 'IfStatement') { + return false; + } + if (node.alternate == null) { + return false; + } + current = node.consequent; + do { + if (current.type === 'IfStatement') { + if (current.alternate == null) { + return true; + } + } + current = trailingStatement(current); + } while (current); + + return false; + } + + module.exports = { + isExpression: isExpression, + isStatement: isStatement, + isIterationStatement: isIterationStatement, + isSourceElement: isSourceElement, + isProblematicIfStatement: isProblematicIfStatement, + + trailingStatement: trailingStatement + }; +}()); +/* vim: set sw=4 ts=4 et tw=80 : */ +}); + +var code = createCommonjsModule(function (module) { +/* + Copyright (C) 2013-2014 Yusuke Suzuki + Copyright (C) 2014 Ivan Nikulin + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +(function () { + 'use strict'; + + var ES6Regex, ES5Regex, NON_ASCII_WHITESPACES, IDENTIFIER_START, IDENTIFIER_PART, ch; + + // See `tools/generate-identifier-regex.js`. + ES5Regex = { + // ECMAScript 5.1/Unicode v7.0.0 NonAsciiIdentifierStart: + 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-\u08B2\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\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\u0C59\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\u0D60\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-\u13F4\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\u19C1-\u19C7\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\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\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\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\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-\uAB5F\uAB64\uAB65\uABC0-\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]/, + // ECMAScript 5.1/Unicode v7.0.0 NonAsciiIdentifierPart: + NonAsciiIdentifierPart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B2\u08E4-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA69D\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2D\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/ + }; + + ES6Regex = { + // ECMAScript 6/Unicode v7.0.0 NonAsciiIdentifierStart: + 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-\u08B2\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\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\u0C59\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\u0D60\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-\u13F4\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\u19C1-\u19C7\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-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\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-\uAB5F\uAB64\uAB65\uABC0-\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\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]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDE00-\uDE11\uDE13-\uDE2B\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDE00-\uDE2F\uDE44\uDE80-\uDEAA]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF98]|\uD809[\uDC00-\uDC6E]|[\uD80C\uD840-\uD868\uD86A-\uD86C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\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]|\uD87E[\uDC00-\uDE1D]/, + // ECMAScript 6/Unicode v7.0.0 NonAsciiIdentifierPart: + 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-\u08B2\u08E4-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\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-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA69D\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2D\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\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\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]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDD0-\uDDDA\uDE00-\uDE11\uDE13-\uDE37\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF01-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF98]|\uD809[\uDC00-\uDC6E]|[\uD80C\uD840-\uD868\uD86A-\uD86C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\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]|\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]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/ + }; + + function isDecimalDigit(ch) { + return 0x30 <= ch && ch <= 0x39; // 0..9 + } + + function isHexDigit(ch) { + return 0x30 <= ch && ch <= 0x39 || // 0..9 + 0x61 <= ch && ch <= 0x66 || // a..f + 0x41 <= ch && ch <= 0x46; // A..F + } + + function isOctalDigit(ch) { + return ch >= 0x30 && ch <= 0x37; // 0..7 + } + + // 7.2 White Space + + NON_ASCII_WHITESPACES = [ + 0x1680, 0x180E, + 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, + 0x202F, 0x205F, + 0x3000, + 0xFEFF + ]; + + function isWhiteSpace(ch) { + return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 || + ch >= 0x1680 && NON_ASCII_WHITESPACES.indexOf(ch) >= 0; + } + + // 7.3 Line Terminators + + function isLineTerminator(ch) { + return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029; + } + + // 7.6 Identifier Names and Identifiers + + function fromCodePoint(cp) { + if (cp <= 0xFFFF) { return String.fromCharCode(cp); } + var cu1 = String.fromCharCode(Math.floor((cp - 0x10000) / 0x400) + 0xD800); + var cu2 = String.fromCharCode(((cp - 0x10000) % 0x400) + 0xDC00); + return cu1 + cu2; + } + + IDENTIFIER_START = new Array(0x80); + for(ch = 0; ch < 0x80; ++ch) { + IDENTIFIER_START[ch] = + ch >= 0x61 && ch <= 0x7A || // a..z + ch >= 0x41 && ch <= 0x5A || // A..Z + ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore) + } + + IDENTIFIER_PART = new Array(0x80); + for(ch = 0; ch < 0x80; ++ch) { + IDENTIFIER_PART[ch] = + ch >= 0x61 && ch <= 0x7A || // a..z + ch >= 0x41 && ch <= 0x5A || // A..Z + ch >= 0x30 && ch <= 0x39 || // 0..9 + ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore) + } + + function isIdentifierStartES5(ch) { + return ch < 0x80 ? IDENTIFIER_START[ch] : ES5Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch)); + } + + function isIdentifierPartES5(ch) { + return ch < 0x80 ? IDENTIFIER_PART[ch] : ES5Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch)); + } + + function isIdentifierStartES6(ch) { + return ch < 0x80 ? IDENTIFIER_START[ch] : ES6Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch)); + } + + function isIdentifierPartES6(ch) { + return ch < 0x80 ? IDENTIFIER_PART[ch] : ES6Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch)); + } + + module.exports = { + isDecimalDigit: isDecimalDigit, + isHexDigit: isHexDigit, + isOctalDigit: isOctalDigit, + isWhiteSpace: isWhiteSpace, + isLineTerminator: isLineTerminator, + isIdentifierStartES5: isIdentifierStartES5, + isIdentifierPartES5: isIdentifierPartES5, + isIdentifierStartES6: isIdentifierStartES6, + isIdentifierPartES6: isIdentifierPartES6 + }; +}()); +/* vim: set sw=4 ts=4 et tw=80 : */ +}); + +var keyword = createCommonjsModule(function (module) { +/* + Copyright (C) 2013 Yusuke Suzuki + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +(function () { + 'use strict'; + + var code$$1 = code; + + function isStrictModeReservedWordES6(id) { + switch (id) { + case 'implements': + case 'interface': + case 'package': + case 'private': + case 'protected': + case 'public': + case 'static': + case 'let': + return true; + default: + return false; + } + } + + function isKeywordES5(id, strict) { + // yield should not be treated as keyword under non-strict mode. + if (!strict && id === 'yield') { + return false; + } + return isKeywordES6(id, strict); + } + + function isKeywordES6(id, strict) { + if (strict && isStrictModeReservedWordES6(id)) { + return true; + } + + switch (id.length) { + case 2: + return (id === 'if') || (id === 'in') || (id === 'do'); + case 3: + return (id === 'var') || (id === 'for') || (id === 'new') || (id === 'try'); + case 4: + return (id === 'this') || (id === 'else') || (id === 'case') || + (id === 'void') || (id === 'with') || (id === 'enum'); + case 5: + return (id === 'while') || (id === 'break') || (id === 'catch') || + (id === 'throw') || (id === 'const') || (id === 'yield') || + (id === 'class') || (id === 'super'); + case 6: + return (id === 'return') || (id === 'typeof') || (id === 'delete') || + (id === 'switch') || (id === 'export') || (id === 'import'); + case 7: + return (id === 'default') || (id === 'finally') || (id === 'extends'); + case 8: + return (id === 'function') || (id === 'continue') || (id === 'debugger'); + case 10: + return (id === 'instanceof'); + default: + return false; + } + } + + function isReservedWordES5(id, strict) { + return id === 'null' || id === 'true' || id === 'false' || isKeywordES5(id, strict); + } + + function isReservedWordES6(id, strict) { + return id === 'null' || id === 'true' || id === 'false' || isKeywordES6(id, strict); + } + + function isRestrictedWord(id) { + return id === 'eval' || id === 'arguments'; + } + + function isIdentifierNameES5(id) { + var i, iz, ch; + + if (id.length === 0) { return false; } + + ch = id.charCodeAt(0); + if (!code$$1.isIdentifierStartES5(ch)) { + return false; + } + + for (i = 1, iz = id.length; i < iz; ++i) { + ch = id.charCodeAt(i); + if (!code$$1.isIdentifierPartES5(ch)) { + return false; + } + } + return true; + } + + function decodeUtf16(lead, trail) { + return (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000; + } + + function isIdentifierNameES6(id) { + var i, iz, ch, lowCh, check; + + if (id.length === 0) { return false; } + + check = code$$1.isIdentifierStartES6; + for (i = 0, iz = id.length; i < iz; ++i) { + ch = id.charCodeAt(i); + if (0xD800 <= ch && ch <= 0xDBFF) { + ++i; + if (i >= iz) { return false; } + lowCh = id.charCodeAt(i); + if (!(0xDC00 <= lowCh && lowCh <= 0xDFFF)) { + return false; + } + ch = decodeUtf16(ch, lowCh); + } + if (!check(ch)) { + return false; + } + check = code$$1.isIdentifierPartES6; + } + return true; + } + + function isIdentifierES5(id, strict) { + return isIdentifierNameES5(id) && !isReservedWordES5(id, strict); + } + + function isIdentifierES6(id, strict) { + return isIdentifierNameES6(id) && !isReservedWordES6(id, strict); + } + + module.exports = { + isKeywordES5: isKeywordES5, + isKeywordES6: isKeywordES6, + isReservedWordES5: isReservedWordES5, + isReservedWordES6: isReservedWordES6, + isRestrictedWord: isRestrictedWord, + isIdentifierNameES5: isIdentifierNameES5, + isIdentifierNameES6: isIdentifierNameES6, + isIdentifierES5: isIdentifierES5, + isIdentifierES6: isIdentifierES6 + }; +}()); +/* vim: set sw=4 ts=4 et tw=80 : */ +}); + +var utils = createCommonjsModule(function (module, exports) { +/* + Copyright (C) 2013 Yusuke Suzuki + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +(function () { + 'use strict'; + + exports.ast = ast; + exports.code = code; + exports.keyword = keyword; +}()); +/* vim: set sw=4 ts=4 et tw=80 : */ +}); + +function traverseDoc(doc, onEnter, onExit, shouldTraverseConditionalGroups) { + function traverseDocRec(doc) { + let shouldRecurse = true; + if (onEnter) { + if (onEnter(doc) === false) { + shouldRecurse = false; + } + } + + if (shouldRecurse) { + if (doc.type === "concat" || doc.type === "fill") { + for (let i = 0; i < doc.parts.length; i++) { + traverseDocRec(doc.parts[i]); + } + } else if (doc.type === "if-break") { + if (doc.breakContents) { + traverseDocRec(doc.breakContents); + } + if (doc.flatContents) { + traverseDocRec(doc.flatContents); + } + } else if (doc.type === "group" && doc.expandedStates) { + if (shouldTraverseConditionalGroups) { + doc.expandedStates.forEach(traverseDocRec); + } else { + traverseDocRec(doc.contents); + } + } else if (doc.contents) { + traverseDocRec(doc.contents); + } + } + + if (onExit) { + onExit(doc); + } + } + + traverseDocRec(doc); +} + +function mapDoc(doc, func) { + doc = func(doc); + + if (doc.type === "concat" || doc.type === "fill") { + return Object.assign({}, doc, { + parts: doc.parts.map(d => mapDoc(d, func)) + }); + } else if (doc.type === "if-break") { + return Object.assign({}, doc, { + breakContents: doc.breakContents && mapDoc(doc.breakContents, func), + flatContents: doc.flatContents && mapDoc(doc.flatContents, func) + }); + } else if (doc.contents) { + return Object.assign({}, doc, { contents: mapDoc(doc.contents, func) }); + } else { + return doc; + } +} + +function findInDoc(doc, fn, defaultValue) { + let result = defaultValue; + let hasStopped = false; + traverseDoc(doc, doc => { + const maybeResult = fn(doc); + if (maybeResult !== undefined) { + hasStopped = true; + result = maybeResult; + } + if (hasStopped) { + return false; + } + }); + return result; +} + +function isEmpty$1(n) { + return typeof n === "string" && n.length === 0; +} + +function isLineNext$1(doc) { + return findInDoc( + doc, + doc => { + if (typeof doc === "string") { + return false; + } + if (doc.type === "line") { + return true; + } + }, + false + ); +} + +function willBreak$1(doc) { + return findInDoc( + doc, + doc => { + if (doc.type === "group" && doc.break) { + return true; + } + if (doc.type === "line" && doc.hard) { + return true; + } + if (doc.type === "break-parent") { + return true; + } + }, + false + ); +} + +function breakParentGroup(groupStack) { + if (groupStack.length > 0) { + const parentGroup = groupStack[groupStack.length - 1]; + // Breaks are not propagated through conditional groups because + // the user is expected to manually handle what breaks. + if (!parentGroup.expandedStates) { + parentGroup.break = true; + } + } + return null; +} + +function propagateBreaks(doc) { + const alreadyVisited = new Map(); + const groupStack = []; + traverseDoc( + doc, + doc => { + if (doc.type === "break-parent") { + breakParentGroup(groupStack); + } + if (doc.type === "group") { + groupStack.push(doc); + if (alreadyVisited.has(doc)) { + return false; + } + alreadyVisited.set(doc, true); + } + }, + doc => { + if (doc.type === "group") { + const group = groupStack.pop(); + if (group.break) { + breakParentGroup(groupStack); + } + } + }, + /* shouldTraverseConditionalGroups */ true + ); +} + +var docUtils$1 = { + isEmpty: isEmpty$1, + willBreak: willBreak$1, + isLineNext: isLineNext$1, + traverseDoc, + mapDoc, + propagateBreaks +}; + +const assert$1 = require$$0; +const comments$3 = comments$1; +const FastPath = fastPath; +const util$4 = util$2; +const isIdentifierName = utils.keyword.isIdentifierNameES6; + +const docBuilders$3 = docBuilders$1; +const concat$2 = docBuilders$3.concat; +const join$2 = docBuilders$3.join; +const line$1 = docBuilders$3.line; +const hardline$2 = docBuilders$3.hardline; +const softline$1 = docBuilders$3.softline; +const literalline$1 = docBuilders$3.literalline; +const group$1 = docBuilders$3.group; +const indent$2 = docBuilders$3.indent; +const align$1 = docBuilders$3.align; +const conditionalGroup$1 = docBuilders$3.conditionalGroup; +const fill$1 = docBuilders$3.fill; +const ifBreak$1 = docBuilders$3.ifBreak; +const breakParent$2 = docBuilders$3.breakParent; +const lineSuffixBoundary$1 = docBuilders$3.lineSuffixBoundary; +const addAlignmentToDoc$1 = docBuilders$3.addAlignmentToDoc; + +const docUtils = docUtils$1; +const willBreak = docUtils.willBreak; +const isLineNext = docUtils.isLineNext; +const isEmpty = docUtils.isEmpty; + +function shouldPrintComma(options, level) { + level = level || "es5"; + + switch (options.trailingComma) { + case "all": + if (level === "all") { + return true; + } + // fallthrough + case "es5": + if (level === "es5") { + return true; + } + // fallthrough + case "none": + default: + return false; + } +} + +function genericPrint(path, options, printPath, args) { + assert$1.ok(path instanceof FastPath); + + const node = path.getValue(); + + // Escape hatch + if ( + node && + node.comments && + node.comments.length > 0 && + node.comments.some(comment => comment.value.trim() === "prettier-ignore") + ) { + return options.originalText.slice(util$4.locStart(node), util$4.locEnd(node)); + } + + const parts = []; + let needsParens = false; + const linesWithoutParens = genericPrintNoParens( + path, + options, + printPath, + args + ); + + if (!node || isEmpty(linesWithoutParens)) { + return linesWithoutParens; + } + + if ( + node.decorators && + node.decorators.length > 0 && + // If the parent node is an export declaration, it will be + // responsible for printing node.decorators. + !util$4.getParentExportDeclaration(path) + ) { + let separator = hardline$2; + path.each(decoratorPath => { + let prefix = "@"; + let decorator = decoratorPath.getValue(); + if (decorator.expression) { + decorator = decorator.expression; + prefix = ""; + } + + if ( + node.decorators.length === 1 && + (decorator.type === "Identifier" || + decorator.type === "MemberExpression") + ) { + separator = " "; + } + + parts.push(prefix, printPath(decoratorPath), separator); + }, "decorators"); + } else if ( + util$4.isExportDeclaration(node) && + node.declaration && + node.declaration.decorators + ) { + // Export declarations are responsible for printing any decorators + // that logically apply to node.declaration. + path.each( + decoratorPath => { + const decorator = decoratorPath.getValue(); + const prefix = decorator.type === "Decorator" || + decorator.type === "TSDecorator" + ? "" + : "@"; + parts.push(prefix, printPath(decoratorPath), line$1); + }, + "declaration", + "decorators" + ); + } else { + // Nodes with decorators can't have parentheses, so we can avoid + // computing path.needsParens() except in this case. + needsParens = path.needsParens(); + } + + if (node.type) { + // HACK: ASI prevention in no-semi mode relies on knowledge of whether + // or not a paren has been inserted (see `exprNeedsASIProtection()`). + // For now, we're just passing that information by mutating the AST here, + // but it would be nice to find a cleaner way to do this. + node.needsParens = needsParens; + } + + if (needsParens) { + parts.unshift("("); + } + + parts.push(linesWithoutParens); + + if (needsParens) { + parts.push(")"); + } + + return concat$2(parts); +} + +function genericPrintNoParens(path, options, print, args) { + const n = path.getValue(); + const semi = options.semi ? ";" : ""; + + if (!n) { + return ""; + } + + if (typeof n === "string") { + return n; + } + + let parts = []; + switch (n.type) { + case "File": + return path.call(print, "program"); + case "Program": + // Babel 6 + if (n.directives) { + path.each(childPath => { + parts.push(print(childPath), semi, hardline$2); + if ( + util$4.isNextLineEmpty(options.originalText, childPath.getValue()) + ) { + parts.push(hardline$2); + } + }, "directives"); + } + + parts.push( + path.call(bodyPath => { + return printStatementSequence(bodyPath, options, print); + }, "body") + ); + + parts.push( + comments$3.printDanglingComments(path, options, /* sameIndent */ true) + ); + + // Only force a trailing newline if there were any contents. + if (n.body.length || n.comments) { + parts.push(hardline$2); + } + + return concat$2(parts); + // Babel extension. + case "Noop": + case "EmptyStatement": + return ""; + case "ExpressionStatement": + // Detect Flow-parsed directives + if (n.directive) { + return concat$2([nodeStr(n.expression, options, true), semi]); + } + return concat$2([path.call(print, "expression"), semi]); // Babel extension. + case "ParenthesizedExpression": + return concat$2(["(", path.call(print, "expression"), ")"]); + case "AssignmentExpression": + return printAssignment( + n.left, + path.call(print, "left"), + concat$2([" ", n.operator]), + n.right, + path.call(print, "right"), + options + ); + case "BinaryExpression": + case "LogicalExpression": { + const parent = path.getParentNode(); + const parentParent = path.getParentNode(1); + const isInsideParenthesis = + n !== parent.body && + (parent.type === "IfStatement" || + parent.type === "WhileStatement" || + parent.type === "DoStatement"); + + const parts = printBinaryishExpressions( + path, + print, + options, + /* isNested */ false, + isInsideParenthesis + ); + + // if ( + // this.hasPlugin("dynamicImports") && this.lookahead().type === tt.parenLeft + // ) { + // + // looks super weird, we want to break the children if the parent breaks + // + // if ( + // this.hasPlugin("dynamicImports") && + // this.lookahead().type === tt.parenLeft + // ) { + if (isInsideParenthesis) { + return concat$2(parts); + } + + if (parent.type === "UnaryExpression") { + return group$1( + concat$2([indent$2(concat$2([softline$1, concat$2(parts)])), softline$1]) + ); + } + + // Avoid indenting sub-expressions in assignment/return/etc statements. + if ( + parent.type === "AssignmentExpression" || + parent.type === "VariableDeclarator" || + shouldInlineLogicalExpression(n) || + parent.type === "ReturnStatement" || + (parent.type === "JSXExpressionContainer" && + parentParent.type === "JSXAttribute") || + (n === parent.body && parent.type === "ArrowFunctionExpression") || + (n !== parent.body && parent.type === "ForStatement") + ) { + return group$1(concat$2(parts)); + } + + const rest = concat$2(parts.slice(1)); + + return group$1( + concat$2([ + // Don't include the initial expression in the indentation + // level. The first item is guaranteed to be the first + // left-most expression. + parts.length > 0 ? parts[0] : "", + indent$2(rest) + ]) + ); + } + case "AssignmentPattern": + return concat$2([ + path.call(print, "left"), + " = ", + path.call(print, "right") + ]); + case "TSTypeAssertionExpression": + return concat$2([ + "<", + path.call(print, "typeAnnotation"), + ">", + path.call(print, "expression") + ]); + case "MemberExpression": { + const parent = path.getParentNode(); + let firstNonMemberParent; + let i = 0; + do { + firstNonMemberParent = path.getParentNode(i); + i++; + } while ( + firstNonMemberParent && firstNonMemberParent.type === "MemberExpression" + ); + + const shouldInline = + (firstNonMemberParent && + ((firstNonMemberParent.type === "VariableDeclarator" && + firstNonMemberParent.id.type !== "Identifier") || + (firstNonMemberParent.type === "AssignmentExpression" && + firstNonMemberParent.left.type !== "Identifier"))) || + n.computed || + (n.object.type === "Identifier" && + n.property.type === "Identifier" && + parent.type !== "MemberExpression"); + + return concat$2([ + path.call(print, "object"), + shouldInline + ? printMemberLookup(path, options, print) + : group$1( + indent$2( + concat$2([softline$1, printMemberLookup(path, options, print)]) + ) + ) + ]); + } + case "MetaProperty": + return concat$2([ + path.call(print, "meta"), + ".", + path.call(print, "property") + ]); + case "BindExpression": + if (n.object) { + parts.push(path.call(print, "object")); + } + + parts.push("::", path.call(print, "callee")); + + return concat$2(parts); + case "Path": + return join$2(".", n.body); + case "Identifier": { + const parentNode = path.getParentNode(); + const isFunctionDeclarationIdentifier = + parentNode.type === "DeclareFunction" && parentNode.id === n; + + return concat$2([ + n.name, + n.optional ? "?" : "", + n.typeAnnotation && !isFunctionDeclarationIdentifier ? ": " : "", + path.call(print, "typeAnnotation") + ]); + } + case "SpreadElement": + case "SpreadElementPattern": + case "RestProperty": + case "ExperimentalRestProperty": + case "ExperimentalSpreadProperty": + case "SpreadProperty": + case "SpreadPropertyPattern": + case "RestElement": + case "ObjectTypeSpreadProperty": + return concat$2([ + "...", + path.call(print, "argument"), + n.typeAnnotation ? ": " : "", + path.call(print, "typeAnnotation") + ]); + case "FunctionDeclaration": + case "FunctionExpression": + case "TSNamespaceFunctionDeclaration": + if (isNodeStartingWithDeclare(n, options)) { + parts.push("declare "); + } + parts.push(printFunctionDeclaration(path, print, options)); + return concat$2(parts); + case "ArrowFunctionExpression": { + if (n.async) { + parts.push("async "); + } + + parts.push(printFunctionTypeParameters(path, options, print)); + + if (canPrintParamsWithoutParens(n)) { + parts.push(path.call(print, "params", 0)); + } else { + parts.push( + group$1( + concat$2([ + printFunctionParams( + path, + print, + options, + args && (args.expandLastArg || args.expandFirstArg) + ), + printReturnType(path, print) + ]) + ) + ); + } + + parts.push(" =>"); + + const body = path.call(bodyPath => print(bodyPath, args), "body"); + const collapsed = concat$2([concat$2(parts), " ", body]); + + // We want to always keep these types of nodes on the same line + // as the arrow. + if ( + !hasLeadingOwnLineComment(options.originalText, n.body) && + (n.body.type === "ArrayExpression" || + n.body.type === "ObjectExpression" || + n.body.type === "BlockStatement" || + n.body.type === "SequenceExpression" || + isTemplateOnItsOwnLine(n.body, options.originalText) || + n.body.type === "ArrowFunctionExpression") + ) { + return group$1(collapsed); + } + + // if the arrow function is expanded as last argument, we are adding a + // level of indentation and need to add a softline to align the closing ) + // with the opening (. + const shouldAddSoftLine = args && args.expandLastArg; + + // In order to avoid confusion between + // a => a ? a : a + // a <= a ? a : a + const shouldAddParens = + n.body.type === "ConditionalExpression" && + !util$4.startsWithNoLookaheadToken( + n.body, + /* forbidFunctionAndClass */ false + ); + + return group$1( + concat$2([ + concat$2(parts), + group$1( + concat$2([ + indent$2( + concat$2([ + line$1, + shouldAddParens ? ifBreak$1("", "(") : "", + body, + shouldAddParens ? ifBreak$1("", ")") : "" + ]) + ), + shouldAddSoftLine + ? concat$2([ + ifBreak$1(shouldPrintComma(options, "all") ? "," : ""), + softline$1 + ]) + : "" + ]) + ) + ]) + ); + } + case "MethodDefinition": + case "TSAbstractMethodDefinition": + if (n.static) { + parts.push("static "); + } + if (n.accessibility) { + parts.push(n.accessibility + " "); + } + if (n.type === "TSAbstractMethodDefinition") { + parts.push("abstract "); + } + + parts.push(printMethod(path, options, print)); + + return concat$2(parts); + case "YieldExpression": + parts.push("yield"); + + if (n.delegate) { + parts.push("*"); + } + if (n.argument) { + parts.push(" ", path.call(print, "argument")); + } + + return concat$2(parts); + case "AwaitExpression": + parts.push("await"); + + if (n.all) { + parts.push("*"); + } + if (n.argument) { + parts.push(" ", path.call(print, "argument")); + } + + return concat$2(parts); + case "ModuleDeclaration": + parts.push("module", path.call(print, "id")); + + if (n.source) { + assert$1.ok(!n.body); + + parts.push("from", path.call(print, "source")); + } else { + parts.push(path.call(print, "body")); + } + + return join$2(" ", parts); + case "ImportSpecifier": + if (n.imported) { + if (n.importKind) { + parts.push(path.call(print, "importKind"), " "); + } + + parts.push(path.call(print, "imported")); + + if (n.local && n.local.name !== n.imported.name) { + parts.push(" as ", path.call(print, "local")); + } + } else if (n.id) { + parts.push(path.call(print, "id")); + + if (n.name) { + parts.push(" as ", path.call(print, "name")); + } + } + + return concat$2(parts); + case "ExportSpecifier": + if (n.local) { + parts.push(path.call(print, "local")); + + if (n.exported && n.exported.name !== n.local.name) { + parts.push(" as ", path.call(print, "exported")); + } + } else if (n.id) { + parts.push(path.call(print, "id")); + + if (n.name) { + parts.push(" as ", path.call(print, "name")); + } + } + + return concat$2(parts); + case "ExportBatchSpecifier": + return "*"; + case "ImportNamespaceSpecifier": + parts.push("* as "); + + if (n.local) { + parts.push(path.call(print, "local")); + } else if (n.id) { + parts.push(path.call(print, "id")); + } + + return concat$2(parts); + case "ImportDefaultSpecifier": + if (n.local) { + return path.call(print, "local"); + } + + return path.call(print, "id"); + case "ExportDeclaration": + case "ExportDefaultDeclaration": + case "ExportNamedDeclaration": + return printExportDeclaration(path, options, print); + case "ExportAllDeclaration": + parts.push("export *"); + + if (n.exported) { + parts.push(" as ", path.call(print, "exported")); + } + + parts.push(" from ", path.call(print, "source"), semi); + + return concat$2(parts); + case "ExportNamespaceSpecifier": + case "ExportDefaultSpecifier": + return path.call(print, "exported"); + case "ImportDeclaration": { + parts.push("import "); + + if (n.importKind && n.importKind !== "value") { + parts.push(n.importKind + " "); + } + + const standalones = []; + const grouped = []; + if (n.specifiers && n.specifiers.length > 0) { + path.each(specifierPath => { + const value = specifierPath.getValue(); + if ( + value.type === "ImportDefaultSpecifier" || + value.type === "ImportNamespaceSpecifier" + ) { + standalones.push(print(specifierPath)); + } else { + grouped.push(print(specifierPath)); + } + }, "specifiers"); + + if (standalones.length > 0) { + parts.push(join$2(", ", standalones)); + } + + if (standalones.length > 0 && grouped.length > 0) { + parts.push(", "); + } + + if ( + grouped.length === 1 && + n.specifiers && + !n.specifiers.some(node => node.comments) + ) { + parts.push( + concat$2([ + "{", + options.bracketSpacing ? " " : "", + concat$2(grouped), + options.bracketSpacing ? " " : "", + "}" + ]) + ); + } else if (grouped.length >= 1) { + parts.push( + group$1( + concat$2([ + "{", + indent$2( + concat$2([ + options.bracketSpacing ? line$1 : softline$1, + join$2(concat$2([",", line$1]), grouped) + ]) + ), + ifBreak$1(shouldPrintComma(options) ? "," : ""), + options.bracketSpacing ? line$1 : softline$1, + "}" + ]) + ) + ); + } + + parts.push(" ", "from "); + } else if (n.importKind && n.importKind === "type") { + parts.push("{} from "); + } + + parts.push(path.call(print, "source"), semi); + + return concat$2(parts); + } + + case "Import": + return "import"; + case "BlockStatement": { + const naked = path.call(bodyPath => { + return printStatementSequence(bodyPath, options, print); + }, "body"); + + const hasContent = n.body.find(node => node.type !== "EmptyStatement"); + const hasDirectives = n.directives && n.directives.length > 0; + + const parent = path.getParentNode(); + const parentParent = path.getParentNode(1); + if ( + !hasContent && + !hasDirectives && + !n.comments && + (parent.type === "ArrowFunctionExpression" || + parent.type === "FunctionExpression" || + parent.type === "FunctionDeclaration" || + parent.type === "ObjectMethod" || + parent.type === "ClassMethod" || + parent.type === "ForStatement" || + parent.type === "WhileStatement" || + parent.type === "DoWhileStatement" || + (parent.type === "CatchClause" && !parentParent.finalizer)) + ) { + return "{}"; + } + + parts.push("{"); + + // Babel 6 + if (hasDirectives) { + path.each(childPath => { + parts.push(indent$2(concat$2([hardline$2, print(childPath), semi]))); + }, "directives"); + } + + if (hasContent) { + parts.push(indent$2(concat$2([hardline$2, naked]))); + } + + parts.push(comments$3.printDanglingComments(path, options)); + parts.push(hardline$2, "}"); + + return concat$2(parts); + } + case "ReturnStatement": + parts.push("return"); + + if (n.argument) { + if (returnArgumentHasLeadingComment(options, n.argument)) { + parts.push( + concat$2([ + " (", + indent$2(concat$2([softline$1, path.call(print, "argument")])), + line$1, + ")" + ]) + ); + } else if ( + n.argument.type === "LogicalExpression" || + n.argument.type === "BinaryExpression" + ) { + parts.push( + group$1( + concat$2([ + ifBreak$1(" (", " "), + indent$2(concat$2([softline$1, path.call(print, "argument")])), + softline$1, + ifBreak$1(")") + ]) + ) + ); + } else { + parts.push(" ", path.call(print, "argument")); + } + } + + if (hasDanglingComments(n)) { + parts.push( + " ", + comments$3.printDanglingComments(path, options, /* sameIndent */ true) + ); + } + + parts.push(semi); + + return concat$2(parts); + case "CallExpression": { + if ( + // We want to keep require calls as a unit + (n.callee.type === "Identifier" && n.callee.name === "require") || + // Template literals as single arguments + (n.arguments.length === 1 && + isTemplateOnItsOwnLine(n.arguments[0], options.originalText)) || + // Keep test declarations on a single line + // e.g. `it('long name', () => {` + (n.callee.type === "Identifier" && + (n.callee.name === "it" || + n.callee.name === "test" || + n.callee.name === "describe") && + n.arguments.length === 2 && + (n.arguments[0].type === "StringLiteral" || + n.arguments[0].type === "TemplateLiteral" || + (n.arguments[0].type === "Literal" && + typeof n.arguments[0].value === "string")) && + (n.arguments[1].type === "FunctionExpression" || + n.arguments[1].type === "ArrowFunctionExpression") && + n.arguments[1].params.length <= 1) + ) { + return concat$2([ + path.call(print, "callee"), + path.call(print, "typeParameters"), + concat$2(["(", join$2(", ", path.map(print, "arguments")), ")"]) + ]); + } + + // We detect calls on member lookups and possibly print them in a + // special chain format. See `printMemberChain` for more info. + if (n.callee.type === "MemberExpression") { + return printMemberChain(path, options, print); + } + + return concat$2([ + path.call(print, "callee"), + printFunctionTypeParameters(path, options, print), + printArgumentsList(path, options, print) + ]); + } + case "TSInterfaceDeclaration": + parts.push( + n.abstract ? "abstract " : "", + printTypeScriptModifiers(path, options, print), + "interface ", + path.call(print, "id"), + n.typeParameters ? path.call(print, "typeParameters") : "", + " " + ); + + if (n.heritage.length) { + parts.push("extends ", join$2(", ", path.map(print, "heritage")), " "); + } + + parts.push(path.call(print, "body")); + + return concat$2(parts); + case "ObjectExpression": + case "ObjectPattern": + case "TSInterfaceBody": + case "ObjectTypeAnnotation": + case "TSTypeLiteral": { + const isTypeAnnotation = n.type === "ObjectTypeAnnotation"; + const isTypeScriptInterfaceBody = n.type === "TSInterfaceBody"; + // Leave this here because we *might* want to make this + // configurable later -- flow accepts ";" for type separators, + // typescript accepts ";" and newlines + let separator = isTypeAnnotation ? "," : ","; + if (isTypeScriptInterfaceBody) { + separator = semi; + } + const fields = []; + const leftBrace = n.exact ? "{|" : "{"; + const rightBrace = n.exact ? "|}" : "}"; + const parent = path.getParentNode(0); + + let propertiesField; + + if (n.type === "TSTypeLiteral") { + propertiesField = "members"; + } else if (n.type === "TSInterfaceBody") { + propertiesField = "body"; + } else { + propertiesField = "properties"; + } + + if (isTypeAnnotation) { + fields.push("indexers", "callProperties"); + } + fields.push(propertiesField); + + // Unfortunately, things are grouped together in the ast can be + // interleaved in the source code. So we need to reorder them before + // printing them. + const propsAndLoc = []; + fields.forEach(field => { + path.each(childPath => { + const node = childPath.getValue(); + propsAndLoc.push({ + node: node, + printed: print(childPath), + loc: util$4.locStart(node) + }); + }, field); + }); + + let separatorParts = []; + const props = propsAndLoc.sort((a, b) => a.loc - b.loc).map(prop => { + const result = concat$2(separatorParts.concat(group$1(prop.printed))); + separatorParts = [separator, line$1]; + if (util$4.isNextLineEmpty(options.originalText, prop.node)) { + separatorParts.push(hardline$2); + } + return result; + }); + + const lastElem = util$4.getLast(n[propertiesField]); + + const canHaveTrailingSeparator = !(lastElem && + (lastElem.type === "RestProperty" || lastElem.type === "RestElement")); + + let content; + if (props.length === 0 && !n.typeAnnotation) { + if (!hasDanglingComments(n)) { + return concat$2([leftBrace, rightBrace]); + } + + content = group$1( + concat$2([ + leftBrace, + comments$3.printDanglingComments(path, options), + softline$1, + rightBrace + ]) + ); + } else { + content = concat$2([ + leftBrace, + indent$2( + concat$2([options.bracketSpacing ? line$1 : softline$1, concat$2(props)]) + ), + ifBreak$1( + canHaveTrailingSeparator && + (separator !== "," || shouldPrintComma(options)) + ? separator + : "" + ), + concat$2([options.bracketSpacing ? line$1 : softline$1, rightBrace]), + n.typeAnnotation ? ": " : "", + path.call(print, "typeAnnotation") + ]); + } + + // If we inline the object as first argument of the parent, we don't want + // to create another group so that the object breaks before the return + // type + const parentParentParent = path.getParentNode(2); + if ( + (n.type === "ObjectPattern" && + parent && + shouldHugArguments(parent) && + parent.params[0] === n) || + (shouldHugType(n) && + parentParentParent && + shouldHugArguments(parentParentParent) && + parentParentParent.params[0].typeAnnotation.typeAnnotation === n) + ) { + return content; + } + + const shouldBreak = + n.type !== "ObjectPattern" && + util$4.hasNewlineInRange( + options.originalText, + util$4.locStart(n), + util$4.locEnd(n) + ); + + return group$1(content, { shouldBreak }); + } + case "PropertyPattern": + return concat$2([ + path.call(print, "key"), + ": ", + path.call(print, "pattern") + ]); + // Babel 6 + case "ObjectProperty": // Non-standard AST node type. + case "Property": + if (n.method || n.kind === "get" || n.kind === "set") { + return printMethod(path, options, print); + } + + if (n.shorthand) { + parts.push(path.call(print, "value")); + } else { + let printedLeft; + if (n.computed) { + printedLeft = concat$2(["[", path.call(print, "key"), "]"]); + } else { + printedLeft = printPropertyKey(path, options, print); + } + parts.push( + printAssignment( + n.key, + printedLeft, + ":", + n.value, + path.call(print, "value"), + options + ) + ); + } + + return concat$2(parts); // Babel 6 + case "ClassMethod": + if (n.static) { + parts.push("static "); + } + + parts = parts.concat(printObjectMethod(path, options, print)); + + return concat$2(parts); // Babel 6 + case "ObjectMethod": + return printObjectMethod(path, options, print); + case "TSDecorator": + case "Decorator": + return concat$2(["@", path.call(print, "expression")]); + case "ArrayExpression": + case "ArrayPattern": + if (n.elements.length === 0) { + if (!hasDanglingComments(n)) { + parts.push("[]"); + } else { + parts.push( + group$1( + concat$2([ + "[", + comments$3.printDanglingComments(path, options), + softline$1, + "]" + ]) + ) + ); + } + } else { + const lastElem = util$4.getLast(n.elements); + const canHaveTrailingComma = !(lastElem && + lastElem.type === "RestElement"); + + // JavaScript allows you to have empty elements in an array which + // changes its length based on the number of commas. The algorithm + // is that if the last argument is null, we need to force insert + // a comma to ensure JavaScript recognizes it. + // [,].length === 1 + // [1,].length === 1 + // [1,,].length === 2 + // + // Note that util.getLast returns null if the array is empty, but + // we already check for an empty array just above so we are safe + const needsForcedTrailingComma = + canHaveTrailingComma && lastElem === null; + + parts.push( + group$1( + concat$2([ + "[", + indent$2( + concat$2([ + softline$1, + printArrayItems(path, options, "elements", print) + ]) + ), + needsForcedTrailingComma ? "," : "", + ifBreak$1( + canHaveTrailingComma && + !needsForcedTrailingComma && + shouldPrintComma(options) + ? "," + : "" + ), + comments$3.printDanglingComments( + path, + options, + /* sameIndent */ true + ), + softline$1, + "]" + ]) + ) + ); + } + + if (n.typeAnnotation) { + parts.push(": ", path.call(print, "typeAnnotation")); + } + + return concat$2(parts); + case "SequenceExpression": { + const parent = path.getParentNode(); + const shouldInline = + parent.type === "ReturnStatement" || + parent.type === "ForStatement" || + parent.type === "ExpressionStatement"; + + if (shouldInline) { + return join$2(", ", path.map(print, "expressions")); + } + return group$1( + concat$2([ + indent$2( + concat$2([ + softline$1, + join$2(concat$2([",", line$1]), path.map(print, "expressions")) + ]) + ), + softline$1 + ]) + ); + } + case "ThisExpression": + return "this"; + case "Super": + return "super"; + case "NullLiteral": // Babel 6 Literal split + return "null"; + case "RegExpLiteral": // Babel 6 Literal split + return printRegex(n); + case "NumericLiteral": // Babel 6 Literal split + return printNumber(n.extra.raw); + case "BooleanLiteral": // Babel 6 Literal split + case "StringLiteral": // Babel 6 Literal split + case "Literal": + if (n.regex) { + return printRegex(n.regex); + } + if (typeof n.value === "number") { + return printNumber(n.raw); + } + if (typeof n.value !== "string") { + return "" + n.value; + } + return nodeStr(n, options); // Babel 6 + case "Directive": + return path.call(print, "value"); // Babel 6 + case "DirectiveLiteral": + return nodeStr(n, options); + case "ModuleSpecifier": + if (n.local) { + throw new Error("The ESTree ModuleSpecifier type should be abstract"); + } + + // The Esprima ModuleSpecifier type is just a string-valued + // Literal identifying the imported-from module. + return nodeStr(n, options); + case "UnaryExpression": + parts.push(n.operator); + + if (/[a-z]$/.test(n.operator)) { + parts.push(" "); + } + + parts.push(path.call(print, "argument")); + + return concat$2(parts); + case "UpdateExpression": + parts.push(path.call(print, "argument"), n.operator); + + if (n.prefix) { + parts.reverse(); + } + + return concat$2(parts); + case "ConditionalExpression": { + const parent = path.getParentNode(); + const printed = concat$2([ + line$1, + "? ", + n.consequent.type === "ConditionalExpression" ? ifBreak$1("", "(") : "", + align$1(2, path.call(print, "consequent")), + n.consequent.type === "ConditionalExpression" ? ifBreak$1("", ")") : "", + line$1, + ": ", + align$1(2, path.call(print, "alternate")) + ]); + + return group$1( + concat$2([ + path.call(print, "test"), + parent.type === "ConditionalExpression" ? printed : indent$2(printed) + ]) + ); + } + case "NewExpression": + parts.push( + "new ", + path.call(print, "callee"), + printFunctionTypeParameters(path, options, print) + ); + + if (n.arguments) { + parts.push(printArgumentsList(path, options, print)); + } + + return concat$2(parts); + case "VariableDeclaration": { + const printed = path.map(childPath => { + return print(childPath); + }, "declarations"); + + const hasValue = n.declarations.some(decl => decl.init); + + parts = [ + isNodeStartingWithDeclare(n, options) ? "declare " : "", + n.kind, + printed.length ? concat$2([" ", printed[0]]) : "", + indent$2( + concat$2( + printed + .slice(1) + .map(p => concat$2([",", hasValue ? hardline$2 : line$1, p])) + ) + ) + ]; + + // We generally want to terminate all variable declarations with a + // semicolon, except when they in the () part of for loops. + const parentNode = path.getParentNode(); + + const isParentForLoop = + parentNode.type === "ForStatement" || + parentNode.type === "ForInStatement" || + parentNode.type === "ForOfStatement" || + parentNode.type === "ForAwaitStatement"; + + if (!(isParentForLoop && parentNode.body !== n)) { + parts.push(semi); + } + + return group$1(concat$2(parts)); + } + case "VariableDeclarator": + return printAssignment( + n.id, + concat$2([path.call(print, "id"), path.call(print, "typeParameters")]), + " =", + n.init, + n.init && path.call(print, "init"), + options + ); + case "WithStatement": + return group$1( + concat$2([ + "with (", + path.call(print, "object"), + ")", + adjustClause(n.body, path.call(print, "body")) + ]) + ); + case "IfStatement": { + const con = adjustClause(n.consequent, path.call(print, "consequent")); + const opening = group$1( + concat$2([ + "if (", + group$1( + concat$2([ + indent$2(concat$2([softline$1, path.call(print, "test")])), + softline$1 + ]) + ), + ")", + con + ]) + ); + + parts.push(opening); + + if (n.alternate) { + if (n.consequent.type === "BlockStatement") { + parts.push(" else"); + } else { + parts.push(hardline$2, "else"); + } + + parts.push( + group$1( + adjustClause( + n.alternate, + path.call(print, "alternate"), + n.alternate.type === "IfStatement" + ) + ) + ); + } + + return concat$2(parts); + } + case "ForStatement": { + const body = adjustClause(n.body, path.call(print, "body")); + + // We want to keep dangling comments above the loop to stay consistent. + // Any comment positioned between the for statement and the parentheses + // is going to be printed before the statement. + const dangling = comments$3.printDanglingComments( + path, + options, + /* sameLine */ true + ); + const printedComments = dangling ? concat$2([dangling, softline$1]) : ""; + + if (!n.init && !n.test && !n.update) { + return concat$2([printedComments, group$1(concat$2(["for (;;)", body]))]); + } + + return concat$2([ + printedComments, + group$1( + concat$2([ + "for (", + group$1( + concat$2([ + indent$2( + concat$2([ + softline$1, + path.call(print, "init"), + ";", + line$1, + path.call(print, "test"), + ";", + line$1, + path.call(print, "update") + ]) + ), + softline$1 + ]) + ), + ")", + body + ]) + ) + ]); + } + case "WhileStatement": + return group$1( + concat$2([ + "while (", + group$1( + concat$2([ + indent$2(concat$2([softline$1, path.call(print, "test")])), + softline$1 + ]) + ), + ")", + adjustClause(n.body, path.call(print, "body")) + ]) + ); + case "ForInStatement": + // Note: esprima can't actually parse "for each (". + return group$1( + concat$2([ + n.each ? "for each (" : "for (", + path.call(print, "left"), + " in ", + path.call(print, "right"), + ")", + adjustClause(n.body, path.call(print, "body")) + ]) + ); + + case "ForOfStatement": + case "ForAwaitStatement": { + // Babylon 7 removed ForAwaitStatement in favor of ForOfStatement + // with `"await": true`: + // https://github.com/estree/estree/pull/138 + const isAwait = n.type === "ForAwaitStatement" || n.await; + + return group$1( + concat$2([ + "for", + isAwait ? " await" : "", + " (", + path.call(print, "left"), + " of ", + path.call(print, "right"), + ")", + adjustClause(n.body, path.call(print, "body")) + ]) + ); + } + + case "DoWhileStatement": { + const clause = adjustClause(n.body, path.call(print, "body")); + const doBody = group$1(concat$2(["do", clause])); + parts = [doBody]; + + if (n.body.type === "BlockStatement") { + parts.push(" "); + } else { + parts.push(hardline$2); + } + parts.push("while ("); + + parts.push( + group$1(concat$2([indent$2(softline$1), path.call(print, "test"), softline$1])), + ")", + semi + ); + + return concat$2(parts); + } + case "DoExpression": + return concat$2(["do ", path.call(print, "body")]); + case "BreakStatement": + parts.push("break"); + + if (n.label) { + parts.push(" ", path.call(print, "label")); + } + + parts.push(semi); + + return concat$2(parts); + case "ContinueStatement": + parts.push("continue"); + + if (n.label) { + parts.push(" ", path.call(print, "label")); + } + + parts.push(semi); + + return concat$2(parts); + case "LabeledStatement": + if (n.body.type === "EmptyStatement") { + return concat$2([path.call(print, "label"), ":;"]); + } + + return concat$2([ + path.call(print, "label"), + ": ", + path.call(print, "body") + ]); + case "TryStatement": + parts.push("try ", path.call(print, "block")); + + if (n.handler) { + parts.push(" ", path.call(print, "handler")); + } else if (n.handlers) { + path.each(handlerPath => { + parts.push(" ", print(handlerPath)); + }, "handlers"); + } + + if (n.finalizer) { + parts.push(" finally ", path.call(print, "finalizer")); + } + + return concat$2(parts); + case "CatchClause": + parts.push("catch (", path.call(print, "param")); + + if (n.guard) { + // Note: esprima does not recognize conditional catch clauses. + parts.push(" if ", path.call(print, "guard")); + } + + parts.push(") ", path.call(print, "body")); + + return concat$2(parts); + case "ThrowStatement": + return concat$2(["throw ", path.call(print, "argument"), semi]); + // Note: ignoring n.lexical because it has no printing consequences. + case "SwitchStatement": + return concat$2([ + "switch (", + path.call(print, "discriminant"), + ") {", + n.cases.length > 0 + ? indent$2( + concat$2([ + hardline$2, + join$2( + hardline$2, + path.map(casePath => { + const caseNode = casePath.getValue(); + return concat$2([ + casePath.call(print), + n.cases.indexOf(caseNode) !== n.cases.length - 1 && + util$4.isNextLineEmpty(options.originalText, caseNode) + ? hardline$2 + : "" + ]); + }, "cases") + ) + ]) + ) + : "", + hardline$2, + "}" + ]); + case "SwitchCase": { + if (n.test) { + parts.push("case ", path.call(print, "test"), ":"); + } else { + parts.push("default:"); + } + + const consequent = n.consequent.filter( + node => node.type !== "EmptyStatement" + ); + + if (consequent.length > 0) { + const cons = path.call(consequentPath => { + return join$2( + hardline$2, + consequentPath + .map((p, i) => { + if (n.consequent[i].type === "EmptyStatement") { + return null; + } + const shouldAddLine = + i !== n.consequent.length - 1 && + util$4.isNextLineEmpty(options.originalText, p.getValue()); + return concat$2([print(p), shouldAddLine ? hardline$2 : ""]); + }) + .filter(e => e !== null) + ); + }, "consequent"); + + parts.push( + consequent.length === 1 && consequent[0].type === "BlockStatement" + ? concat$2([" ", cons]) + : indent$2(concat$2([hardline$2, cons])) + ); + } + + return concat$2(parts); + } + // JSX extensions below. + case "DebuggerStatement": + return concat$2(["debugger", semi]); + case "JSXAttribute": + parts.push(path.call(print, "name")); + + if (n.value) { + let res; + if (isStringLiteral(n.value)) { + const value = n.value.extra ? n.value.extra.raw : n.value.raw; + res = '"' + value.slice(1, -1).replace(/"/g, """) + '"'; + } else { + res = path.call(print, "value"); + } + parts.push("=", res); + } + + return concat$2(parts); + case "JSXIdentifier": + // Can be removed when this is fixed: + // https://github.com/eslint/typescript-eslint-parser/issues/257 + if (n.object && n.property) { + return join$2(".", [ + path.call(print, "object"), + path.call(print, "property") + ]); + } + return "" + n.name; + case "JSXNamespacedName": + return join$2(":", [ + path.call(print, "namespace"), + path.call(print, "name") + ]); + case "JSXMemberExpression": + return join$2(".", [ + path.call(print, "object"), + path.call(print, "property") + ]); + case "TSQualifiedName": + return join$2(".", [path.call(print, "left"), path.call(print, "right")]); + case "JSXSpreadAttribute": + return concat$2(["{...", path.call(print, "argument"), "}"]); + case "JSXExpressionContainer": { + const parent = path.getParentNode(0); + + const shouldInline = + n.expression.type === "ArrayExpression" || + n.expression.type === "ObjectExpression" || + n.expression.type === "ArrowFunctionExpression" || + n.expression.type === "CallExpression" || + n.expression.type === "FunctionExpression" || + n.expression.type === "JSXEmptyExpression" || + n.expression.type === "TemplateLiteral" || + n.expression.type === "TaggedTemplateExpression" || + (parent.type === "JSXElement" && + (n.expression.type === "ConditionalExpression" || + isBinaryish(n.expression))); + + if (shouldInline) { + return group$1( + concat$2(["{", path.call(print, "expression"), lineSuffixBoundary$1, "}"]) + ); + } + + return group$1( + concat$2([ + "{", + indent$2(concat$2([softline$1, path.call(print, "expression")])), + softline$1, + lineSuffixBoundary$1, + "}" + ]) + ); + } + case "JSXElement": { + const elem = comments$3.printComments( + path, + () => printJSXElement(path, options, print), + options + ); + return maybeWrapJSXElementInParens(path, elem); + } + case "JSXOpeningElement": { + const n = path.getValue(); + + // don't break up opening elements with a single long text attribute + if ( + n.attributes.length === 1 && + n.attributes[0].value && + isStringLiteral(n.attributes[0].value) + ) { + return group$1( + concat$2([ + "<", + path.call(print, "name"), + " ", + concat$2(path.map(print, "attributes")), + n.selfClosing ? " />" : ">" + ]) + ); + } + + return group$1( + concat$2([ + "<", + path.call(print, "name"), + concat$2([ + indent$2( + concat$2( + path.map(attr => concat$2([line$1, print(attr)]), "attributes") + ) + ), + n.selfClosing ? line$1 : options.jsxBracketSameLine ? ">" : softline$1 + ]), + n.selfClosing ? "/>" : options.jsxBracketSameLine ? "" : ">" + ]) + ); + } + case "JSXClosingElement": + return concat$2([""]); + case "JSXText": + throw new Error("JSXTest should be handled by JSXElement"); + case "JSXEmptyExpression": { + const requiresHardline = + n.comments && !n.comments.every(util$4.isBlockComment); + + return concat$2([ + comments$3.printDanglingComments( + path, + options, + /* sameIndent */ !requiresHardline + ), + requiresHardline ? hardline$2 : "" + ]); + } + case "TypeAnnotatedIdentifier": + return concat$2([ + path.call(print, "annotation"), + " ", + path.call(print, "identifier") + ]); + case "ClassBody": + if (!n.comments && n.body.length === 0) { + return "{}"; + } + + return concat$2([ + "{", + n.body.length > 0 + ? indent$2( + concat$2([ + hardline$2, + path.call(bodyPath => { + return printStatementSequence(bodyPath, options, print); + }, "body") + ]) + ) + : comments$3.printDanglingComments(path, options), + hardline$2, + "}" + ]); + case "ClassPropertyDefinition": + parts.push("static ", path.call(print, "definition")); + + if ( + n.definition.type !== "MethodDefinition" && + n.definition.type !== "TSAbstractMethodDefinition" + ) { + parts.push(semi); + } + + return concat$2(parts); + case "ClassProperty": + case "TSAbstractClassProperty": { + if (n.static) { + parts.push("static "); + } + const variance = getFlowVariance(n); + if (variance) { + parts.push(variance); + } + if (n.accessibility) { + parts.push(n.accessibility + " "); + } + if (n.type === "TSAbstractClassProperty") { + parts.push("abstract "); + } + if (n.computed) { + parts.push("[", path.call(print, "key"), "]"); + } else { + parts.push(printPropertyKey(path, options, print)); + } + if (n.typeAnnotation) { + parts.push(": ", path.call(print, "typeAnnotation")); + } + if (n.value) { + parts.push( + " =", + printAssignmentRight( + n.value, + path.call(print, "value"), + false, // canBreak + options + ) + ); + } + + parts.push(semi); + + return concat$2(parts); + } + case "ClassDeclaration": + case "ClassExpression": + case "TSAbstractClassDeclaration": + if (isNodeStartingWithDeclare(n, options)) { + parts.push("declare "); + } + parts.push(concat$2(printClass(path, options, print))); + return concat$2(parts); + case "TSInterfaceHeritage": + parts.push(path.call(print, "id")); + + if (n.typeParameters) { + parts.push(path.call(print, "typeParameters")); + } + + return concat$2(parts); + case "TSHeritageClause": + return join$2(", ", path.map(print, "types")); + case "TSExpressionWithTypeArguments": + return concat$2([ + path.call(print, "expression"), + printTypeParameters(path, options, print, "typeArguments") + ]); + case "TemplateElement": + return join$2(literalline$1, n.value.raw.split(/\r?\n/g)); + case "TemplateLiteral": { + const expressions = path.map(print, "expressions"); + + parts.push("`"); + + path.each(childPath => { + const i = childPath.getName(); + + parts.push(print(childPath)); + + if (i < expressions.length) { + // For a template literal of the following form: + // `someQuery { + // ${call({ + // a, + // b, + // })} + // }` + // the expression is on its own line (there is a \n in the previous + // quasi literal), therefore we want to indent the JavaScript + // expression inside at the beginning of ${ instead of the beginning + // of the `. + let size = 0; + const value = childPath.getValue().value.raw; + const index = value.lastIndexOf("\n"); + const tabWidth = options.tabWidth; + if (index !== -1) { + size = util$4.getAlignmentSize( + // All the leading whitespaces + value.slice(index + 1).match(/^[ \t]*/)[0], + tabWidth + ); + } + + const aligned = addAlignmentToDoc$1(expressions[i], size, tabWidth); + + parts.push("${", aligned, lineSuffixBoundary$1, "}"); + } + }, "quasis"); + + parts.push("`"); + + return concat$2(parts); + } + // These types are unprintable because they serve as abstract + // supertypes for other (printable) types. + case "TaggedTemplateExpression": + return concat$2([path.call(print, "tag"), path.call(print, "quasi")]); + case "Node": + case "Printable": + case "SourceLocation": + case "Position": + case "Statement": + case "Function": + case "Pattern": + case "Expression": + case "Declaration": + case "Specifier": + case "NamedSpecifier": + case "Comment": + case "MemberTypeAnnotation": // Flow + case "Type": + throw new Error("unprintable type: " + JSON.stringify(n.type)); + // Type Annotations for Facebook Flow, typically stripped out or + // transformed away before printing. + case "TypeAnnotation": + if (n.typeAnnotation) { + return path.call(print, "typeAnnotation"); + } + + return ""; + case "TSTupleType": + case "TupleTypeAnnotation": { + const typesField = n.type === "TSTupleType" ? "elementTypes" : "types"; + return group$1( + concat$2([ + "[", + indent$2( + concat$2([ + softline$1, + printArrayItems(path, options, typesField, print) + ]) + ), + ifBreak$1(shouldPrintComma(options) ? "," : ""), + comments$3.printDanglingComments(path, options, /* sameIndent */ true), + softline$1, + "]" + ]) + ); + } + + case "ExistsTypeAnnotation": + return "*"; + case "EmptyTypeAnnotation": + return "empty"; + case "AnyTypeAnnotation": + return "any"; + case "MixedTypeAnnotation": + return "mixed"; + case "ArrayTypeAnnotation": + return concat$2([path.call(print, "elementType"), "[]"]); + case "BooleanTypeAnnotation": + return "boolean"; + case "BooleanLiteralTypeAnnotation": + return "" + n.value; + case "DeclareClass": + return printFlowDeclaration(path, printClass(path, options, print)); + case "DeclareFunction": + // For TypeScript the DeclareFunction node shares the AST + // structure with FunctionDeclaration + if (n.params) { + return concat$2([ + "declare ", + printFunctionDeclaration(path, print, options) + ]); + } + return printFlowDeclaration(path, [ + "function ", + path.call(print, "id"), + n.predicate ? " " : "", + path.call(print, "predicate"), + semi + ]); + case "DeclareModule": + return printFlowDeclaration(path, [ + "module ", + path.call(print, "id"), + " ", + path.call(print, "body") + ]); + case "DeclareModuleExports": + return printFlowDeclaration(path, [ + "module.exports", + ": ", + path.call(print, "typeAnnotation"), + semi + ]); + case "DeclareVariable": + return printFlowDeclaration(path, ["var ", path.call(print, "id"), semi]); + case "DeclareExportAllDeclaration": + return concat$2(["declare export * from ", path.call(print, "source")]); + case "DeclareExportDeclaration": + return concat$2(["declare ", printExportDeclaration(path, options, print)]); + case "FunctionTypeAnnotation": + case "TSFunctionType": { + // FunctionTypeAnnotation is ambiguous: + // declare function foo(a: B): void; OR + // var A: (a: B) => void; + const parent = path.getParentNode(0); + const parentParent = path.getParentNode(1); + const parentParentParent = path.getParentNode(2); + let isArrowFunctionTypeAnnotation = + n.type === "TSFunctionType" || + !((!getFlowVariance(parent) && + !parent.optional && + parent.type === "ObjectTypeProperty") || + parent.type === "ObjectTypeCallProperty" || + (parentParentParent && + parentParentParent.type === "DeclareFunction")); + + let needsColon = + isArrowFunctionTypeAnnotation && parent.type === "TypeAnnotation"; + + // Sadly we can't put it inside of FastPath::needsColon because we are + // printing ":" as part of the expression and it would put parenthesis + // around :( + const needsParens = + needsColon && + isArrowFunctionTypeAnnotation && + parent.type === "TypeAnnotation" && + parentParent.type === "ArrowFunctionExpression"; + + if (isObjectTypePropertyAFunction(parent)) { + isArrowFunctionTypeAnnotation = true; + needsColon = true; + } + + if (needsParens) { + parts.push("("); + } + + parts.push( + printFunctionTypeParameters(path, options, print), + printFunctionParams(path, print, options) + ); + + // The returnType is not wrapped in a TypeAnnotation, so the colon + // needs to be added separately. + if (n.returnType || n.predicate || n.typeAnnotation) { + parts.push( + isArrowFunctionTypeAnnotation ? " => " : ": ", + path.call(print, "returnType"), + path.call(print, "predicate"), + path.call(print, "typeAnnotation") + ); + } + if (needsParens) { + parts.push(")"); + } + + return group$1(concat$2(parts)); + } + case "FunctionTypeParam": + return concat$2([ + path.call(print, "name"), + n.optional ? "?" : "", + n.name ? ": " : "", + path.call(print, "typeAnnotation") + ]); + case "GenericTypeAnnotation": + return concat$2([ + path.call(print, "id"), + path.call(print, "typeParameters") + ]); + case "DeclareInterface": + case "InterfaceDeclaration": { + if ( + n.type === "DeclareInterface" || + isNodeStartingWithDeclare(n, options) + ) { + parts.push("declare "); + } + + parts.push( + "interface ", + path.call(print, "id"), + path.call(print, "typeParameters") + ); + + if (n["extends"].length > 0) { + parts.push( + group$1( + indent$2( + concat$2([line$1, "extends ", join$2(", ", path.map(print, "extends"))]) + ) + ) + ); + } + + parts.push(" "); + parts.push(path.call(print, "body")); + + return group$1(concat$2(parts)); + } + case "ClassImplements": + case "InterfaceExtends": + return concat$2([ + path.call(print, "id"), + path.call(print, "typeParameters") + ]); + case "TSIntersectionType": + case "IntersectionTypeAnnotation": { + const types = path.map(print, "types"); + const result = []; + for (let i = 0; i < types.length; ++i) { + if (i === 0) { + result.push(types[i]); + } else if ( + n.types[i - 1].type !== "ObjectTypeAnnotation" && + n.types[i].type !== "ObjectTypeAnnotation" + ) { + // If no object is involved, go to the next line if it breaks + result.push(indent$2(concat$2([" &", line$1, types[i]]))); + } else { + // If you go from object to non-object or vis-versa, then inline it + result.push(" & ", i > 1 ? indent$2(types[i]) : types[i]); + } + } + return group$1(concat$2(result)); + } + case "TSUnionType": + case "UnionTypeAnnotation": { + // single-line variation + // A | B | C + + // multi-line variation + // | A + // | B + // | C + + const parent = path.getParentNode(); + // If there's a leading comment, the parent is doing the indentation + const shouldIndent = + parent.type !== "TypeParameterInstantiation" && + parent.type !== "GenericTypeAnnotation" && + !((parent.type === "TypeAlias" || + parent.type === "VariableDeclarator") && + hasLeadingOwnLineComment(options.originalText, n)); + + // { + // a: string + // } | null | void + // should be inlined and not be printed in the multi-line variant + const shouldHug = shouldHugType(n); + + // We want to align the children but without its comment, so it looks like + // | child1 + // // comment + // | child2 + const printed = path.map(typePath => { + let printedType = typePath.call(print); + if (!shouldHug && shouldIndent) { + printedType = align$1(2, printedType); + } + return comments$3.printComments(typePath, () => printedType, options); + }, "types"); + + if (shouldHug) { + return join$2(" | ", printed); + } + + const code = concat$2([ + ifBreak$1(concat$2([shouldIndent ? line$1 : "", "| "])), + join$2(concat$2([line$1, "| "]), printed) + ]); + + return group$1(shouldIndent ? indent$2(code) : code); + } + case "NullableTypeAnnotation": + return concat$2(["?", path.call(print, "typeAnnotation")]); + case "NullLiteralTypeAnnotation": + return "null"; + case "ThisTypeAnnotation": + return "this"; + case "NumberTypeAnnotation": + return "number"; + case "ObjectTypeCallProperty": + if (n.static) { + parts.push("static "); + } + + parts.push(path.call(print, "value")); + + return concat$2(parts); + case "ObjectTypeIndexer": { + const variance = getFlowVariance(n); + return concat$2([ + variance || "", + "[", + path.call(print, "id"), + n.id ? ": " : "", + path.call(print, "key"), + "]: ", + path.call(print, "value") + ]); + } + case "ObjectTypeProperty": { + const variance = getFlowVariance(n); + + return concat$2([ + n.static ? "static " : "", + isGetterOrSetter(n) ? n.kind + " " : "", + variance || "", + path.call(print, "key"), + n.optional ? "?" : "", + isFunctionNotation(n) ? "" : ": ", + path.call(print, "value") + ]); + } + case "QualifiedTypeIdentifier": + return concat$2([ + path.call(print, "qualification"), + ".", + path.call(print, "id") + ]); + case "StringLiteralTypeAnnotation": + return nodeStr(n, options); + case "NumberLiteralTypeAnnotation": + assert$1.strictEqual(typeof n.value, "number"); + + if (n.extra != null) { + return printNumber(n.extra.raw); + } else { + return printNumber(n.raw); + } + case "StringTypeAnnotation": + return "string"; + case "DeclareTypeAlias": + case "TypeAlias": { + if ( + n.type === "DeclareTypeAlias" || + isNodeStartingWithDeclare(n, options) + ) { + parts.push("declare "); + } + + const canBreak = n.right.type === "StringLiteralTypeAnnotation"; + + const printed = printAssignmentRight( + n.right, + path.call(print, "right"), + canBreak, + options + ); + + parts.push( + "type ", + path.call(print, "id"), + path.call(print, "typeParameters"), + " =", + printed, + semi + ); + + return group$1(concat$2(parts)); + } + case "TypeCastExpression": + return concat$2([ + "(", + path.call(print, "expression"), + ": ", + path.call(print, "typeAnnotation"), + ")" + ]); + case "TypeParameterDeclaration": + case "TypeParameterInstantiation": + return printTypeParameters(path, options, print, "params"); + case "TypeParameter": { + const variance = getFlowVariance(n); + + if (variance) { + parts.push(variance); + } + + parts.push(path.call(print, "name")); + + if (n.bound) { + parts.push(": "); + parts.push(path.call(print, "bound")); + } + + if (n.constraint) { + parts.push(" extends ", path.call(print, "constraint")); + } + + if (n["default"]) { + parts.push(" = ", path.call(print, "default")); + } + + return concat$2(parts); + } + case "TypeofTypeAnnotation": + return concat$2(["typeof ", path.call(print, "argument")]); + case "VoidTypeAnnotation": + return "void"; + case "NullTypeAnnotation": + return "null"; + case "InferredPredicate": + return "%checks"; + // Unhandled types below. If encountered, nodes of these types should + // be either left alone or desugared into AST types that are fully + // supported by the pretty-printer. + case "DeclaredPredicate": + return concat$2(["%checks(", path.call(print, "value"), ")"]); + case "TSAbstractKeyword": + return "abstract"; + case "TSAnyKeyword": + return "any"; + case "TSAsyncKeyword": + return "async"; + case "TSBooleanKeyword": + return "boolean"; + case "TSConstKeyword": + return "const"; + case "TSDeclareKeyword": + return "declare"; + case "TSExportKeyword": + return "export"; + case "TSNeverKeyword": + return "never"; + case "TSNumberKeyword": + return "number"; + case "TSObjectKeyword": + return "object"; + case "TSProtectedKeyword": + return "protected"; + case "TSPrivateKeyword": + return "private"; + case "TSPublicKeyword": + return "public"; + case "TSReadonlyKeyword": + return "readonly"; + case "TSSymbolKeyword": + return "symbol"; + case "TSStaticKeyword": + return "static"; + case "TSStringKeyword": + return "string"; + case "TSUndefinedKeyword": + return "undefined"; + case "TSVoidKeyword": + return "void"; + case "TSAsExpression": + return concat$2([ + path.call(print, "expression"), + " as ", + path.call(print, "typeAnnotation") + ]); + case "TSArrayType": + return concat$2([path.call(print, "elementType"), "[]"]); + case "TSPropertySignature": { + if (n.accessibility) { + parts.push(n.accessibility + " "); + } + if (n.export) { + parts.push("export "); + } + if (n.static) { + parts.push("static "); + } + if (n.readonly) { + parts.push("readonly "); + } + + if (n.computed) { + parts.push("["); + } + + parts.push(path.call(print, "key")); + + if (n.computed) { + parts.push("]"); + } + + if (n.optional) { + parts.push("?"); + } + + if (n.typeAnnotation) { + parts.push(": "); + parts.push(path.call(print, "typeAnnotation")); + } + + // This isn't valid semantically, but it's in the AST so we can print it. + if (n.initializer) { + parts.push(" = ", path.call(print, "initializer")); + } + + return concat$2(parts); + } + case "TSParameterProperty": + if (n.accessibility) { + parts.push(n.accessibility + " "); + } + if (n.export) { + parts.push("export "); + } + if (n.static) { + parts.push("static "); + } + if (n.readonly) { + parts.push("readonly "); + } + + parts.push(path.call(print, "parameter")); + + return concat$2(parts); + case "TSTypeReference": + return concat$2([ + path.call(print, "typeName"), + printTypeParameters(path, options, print, "typeParameters") + ]); + case "TSTypeQuery": + return concat$2(["typeof ", path.call(print, "exprName")]); + case "TSParenthesizedType": + return concat$2(["(", path.call(print, "typeAnnotation"), ")"]); + case "TSIndexSignature": { + let printedParams = []; + if (n.params) { + printedParams = path.map(print, "params"); + } + if (n.parameters) { + printedParams = path.map(print, "parameters"); + } + + return concat$2([ + n.accessibility ? concat$2([n.accessibility, " "]) : "", + n.export ? "export " : "", + n.static ? "static " : "", + n.readonly ? "readonly " : "", + "[", + path.call(print, "index"), + // This should only contain a single element, however TypeScript parses + // it using parseDelimitedList that uses commas as delimiter. + join$2(", ", printedParams), + "]: ", + path.call(print, "typeAnnotation") + ]); + } + case "TSTypePredicate": + return concat$2([ + path.call(print, "parameterName"), + " is ", + path.call(print, "typeAnnotation") + ]); + case "TSNonNullExpression": + return concat$2([path.call(print, "expression"), "!"]); + case "TSThisType": + return "this"; + case "TSLastTypeNode": + return path.call(print, "literal"); + case "TSIndexedAccessType": + return concat$2([ + path.call(print, "objectType"), + "[", + path.call(print, "indexType"), + "]" + ]); + case "TSConstructSignature": + case "TSConstructorType": + case "TSCallSignature": { + if (n.type !== "TSCallSignature") { + parts.push("new "); + } + const isType = n.type === "TSConstructorType"; + + if (n.typeParameters) { + parts.push(printTypeParameters(path, options, print, "typeParameters")); + } + + const params = n.params + ? path.map(print, "params") + : path.map(print, "parameters"); + parts.push("(", join$2(", ", params), ")"); + if (n.typeAnnotation) { + parts.push(isType ? " => " : ": ", path.call(print, "typeAnnotation")); + } + return concat$2(parts); + } + case "TSTypeOperator": + return concat$2(["keyof ", path.call(print, "typeAnnotation")]); + case "TSMappedType": + return group$1( + concat$2([ + "{", + indent$2( + concat$2([ + options.bracketSpacing ? line$1 : softline$1, + n.readonlyToken + ? concat$2([path.call(print, "readonlyToken"), " "]) + : "", + printTypeScriptModifiers(path, options, print), + "[", + path.call(print, "typeParameter"), + "]", + n.questionToken ? "?" : "", + ": ", + path.call(print, "typeAnnotation") + ]) + ), + comments$3.printDanglingComments(path, options, /* sameIndent */ true), + options.bracketSpacing ? line$1 : softline$1, + "}" + ]) + ); + case "TSTypeParameter": + parts.push(path.call(print, "name")); + + if (n.constraint) { + parts.push(" in ", path.call(print, "constraint")); + } + + return concat$2(parts); + case "TSMethodSignature": + parts.push( + n.accessibility ? concat$2([n.accessibility, " "]) : "", + n.export ? "export " : "", + n.static ? "static " : "", + n.readonly ? "readonly " : "", + n.computed ? "[" : "", + path.call(print, "key"), + n.computed ? "]" : "", + n.optional ? "?" : "", + printFunctionTypeParameters(path, options, print), + printFunctionParams(path, print, options) + ); + + if (n.typeAnnotation) { + parts.push(": ", path.call(print, "typeAnnotation")); + } + return concat$2(parts); + case "TSNamespaceExportDeclaration": + if (n.declaration) { + parts.push("export ", path.call(print, "declaration")); + } else { + parts.push("export as namespace ", path.call(print, "name")); + + if (options.semi) { + parts.push(";"); + } + } + + return group$1(concat$2(parts)); + case "TSEnumDeclaration": + if (n.modifiers) { + parts.push(printTypeScriptModifiers(path, options, print)); + } + + parts.push("enum ", path.call(print, "name"), " "); + + if (n.members.length === 0) { + parts.push( + group$1( + concat$2([ + "{", + comments$3.printDanglingComments(path, options), + softline$1, + "}" + ]) + ) + ); + } else { + parts.push( + group$1( + concat$2([ + "{", + options.bracketSpacing ? line$1 : softline$1, + indent$2( + concat$2([ + softline$1, + printArrayItems(path, options, "members", print) + ]) + ), + comments$3.printDanglingComments( + path, + options, + /* sameIndent */ true + ), + softline$1, + options.bracketSpacing ? line$1 : softline$1, + "}" + ]) + ) + ); + } + + return concat$2(parts); + case "TSEnumMember": + parts.push(path.call(print, "name")); + if (n.initializer) { + parts.push(" = ", path.call(print, "initializer")); + } + return concat$2(parts); + case "TSImportEqualsDeclaration": + parts.push( + printTypeScriptModifiers(path, options, print), + "import ", + path.call(print, "name"), + " = ", + path.call(print, "moduleReference") + ); + + if (options.semi) { + parts.push(";"); + } + + return group$1(concat$2(parts)); + case "TSExternalModuleReference": + return concat$2(["require(", path.call(print, "expression"), ")"]); + case "TSModuleDeclaration": { + const parent = path.getParentNode(); + const isExternalModule = isLiteral(n.name); + const parentIsDeclaration = parent.type === "TSModuleDeclaration"; + const bodyIsDeclaration = n.body && n.body.type === "TSModuleDeclaration"; + + if (parentIsDeclaration) { + parts.push("."); + } else { + parts.push(printTypeScriptModifiers(path, options, print)); + + // Global declaration looks like this: + // declare global { ... } + const isGlobalDeclaration = + n.name.type === "Identifier" && + n.name.name === "global" && + n.modifiers && + n.modifiers.some(modifier => modifier.type === "TSDeclareKeyword"); + + if (!isGlobalDeclaration) { + parts.push(isExternalModule ? "module " : "namespace "); + } + } + + parts.push(path.call(print, "name")); + + if (bodyIsDeclaration) { + parts.push(path.call(print, "body")); + } else if (n.body) { + parts.push( + " {", + indent$2( + concat$2([ + line$1, + path.call( + bodyPath => + comments$3.printDanglingComments(bodyPath, options, true), + "body" + ), + group$1(path.call(print, "body")) + ]) + ), + line$1, + "}" + ); + } else { + parts.push(semi); + } + + return concat$2(parts); + } + case "TSModuleBlock": + return path.call(bodyPath => { + return printStatementSequence(bodyPath, options, print); + }, "body"); + // postcss + case "css-root": { + return concat$2([printNodeSequence(path, options, print), hardline$2]); + } + case "css-comment": { + if (n.raws.content) { + return n.raws.content; + } + const text = options.originalText.slice(util$4.locStart(n), util$4.locEnd(n)); + const rawText = n.raws.text || n.text; + // Workaround a bug where the location is off. + // https://github.com/postcss/postcss-scss/issues/63 + if (text.indexOf(rawText) === -1) { + if (n.raws.inline) { + return concat$2(["// ", rawText]); + } + return concat$2(["/* ", rawText, " */"]); + } + return text; + } + case "css-rule": { + return concat$2([ + path.call(print, "selector"), + n.important ? " !important" : "", + n.nodes + ? concat$2([ + " {", + n.nodes.length > 0 + ? indent$2( + concat$2([hardline$2, printNodeSequence(path, options, print)]) + ) + : "", + hardline$2, + "}" + ]) + : ";" + ]); + } + case "css-decl": { + return concat$2([ + n.raws.before.replace(/[\s;]/g, ""), + n.prop, + ": ", + path.call(print, "value"), + n.important ? " !important" : "", + n.nodes + ? concat$2([ + " {", + indent$2( + concat$2([softline$1, printNodeSequence(path, options, print)]) + ), + softline$1, + "}" + ]) + : ";" + ]); + } + case "css-atrule": { + const hasParams = + n.params && + !(n.params.type === "media-query-list" && n.params.value === ""); + return concat$2([ + "@", + n.name, + hasParams ? concat$2([" ", path.call(print, "params")]) : "", + n.nodes + ? concat$2([ + " {", + indent$2( + concat$2([ + n.nodes.length > 0 ? softline$1 : "", + printNodeSequence(path, options, print) + ]) + ), + softline$1, + "}" + ]) + : ";" + ]); + } + case "css-import": { + return concat$2([ + "@", + n.name, + " ", + n.directives ? concat$2([n.directives, " "]) : "", + n.importPath, + ";" + ]); + } + // postcss-media-query-parser + case "media-query-list": { + const parts = []; + path.each(childPath => { + const node = childPath.getValue(); + if (node.type === "media-query" && node.value === "") { + return; + } + parts.push(childPath.call(print)); + }, "nodes"); + return join$2(", ", parts); + } + case "media-query": { + return join$2(" ", path.map(print, "nodes")); + } + case "media-type": { + return n.value; + } + case "media-feature-expression": { + if (!n.nodes) { + return n.value; + } + return concat$2(["(", concat$2(path.map(print, "nodes")), ")"]); + } + case "media-feature": { + return n.value.replace(/ +/g, " "); + } + case "media-colon": { + return concat$2([n.value, " "]); + } + case "media-value": { + return n.value; + } + case "media-keyword": { + return n.value; + } + case "media-url": { + return n.value; + } + case "media-unknown": { + return n.value; + } + // postcss-selector-parser + case "selector-root": { + return group$1(join$2(concat$2([",", line$1]), path.map(print, "nodes"))); + } + case "selector-comment": { + return n.value; + } + case "selector-string": { + return n.value; + } + case "selector-tag": { + return n.value; + } + case "selector-id": { + return concat$2(["#", n.value]); + } + case "selector-class": { + return concat$2([".", n.value]); + } + case "selector-attribute": { + return concat$2([ + "[", + n.attribute, + n.operator ? n.operator : "", + n.value ? n.value : "", + n.insensitive ? " i" : "", + "]" + ]); + } + case "selector-combinator": { + if (n.value === "+" || n.value === ">" || n.value === "~") { + const parent = path.getParentNode(); + const leading = parent.type === "selector-selector" && + parent.nodes[0] === n + ? "" + : line$1; + return concat$2([leading, n.value, " "]); + } + return n.value; + } + case "selector-universal": { + return n.value; + } + case "selector-selector": { + return group$1(indent$2(concat$2(path.map(print, "nodes")))); + } + case "selector-pseudo": { + return concat$2([ + n.value, + n.nodes && n.nodes.length > 0 + ? concat$2(["(", join$2(", ", path.map(print, "nodes")), ")"]) + : "" + ]); + } + case "selector-nesting": { + return printValue(n.value); + } + // postcss-values-parser + case "value-root": { + return path.call(print, "group"); + } + case "value-comma_group": { + const printed = path.map(print, "groups"); + const parts = []; + for (let i = 0; i < n.groups.length; ++i) { + parts.push(printed[i]); + if ( + i !== n.groups.length - 1 && + n.groups[i + 1].raws && + n.groups[i + 1].raws.before !== "" + ) { + if ( + n.groups[i + 1].type === "value-operator" && + ["+", "-", "/", "*", "%"].indexOf(n.groups[i + 1].value) !== -1 + ) { + parts.push(" "); + } else { + parts.push(line$1); + } + } + } + + return group$1(indent$2(concat$2(parts))); + } + case "value-paren_group": { + const parent = path.getParentNode(); + const isURLCall = + parent && parent.type === "value-func" && parent.value === "url"; + + if ( + isURLCall && + (n.groups.length === 1 || + (n.groups.length > 0 && + n.groups[0].type === "value-comma_group" && + n.groups[0].groups.length > 0 && + n.groups[0].groups[0].type === "value-word" && + n.groups[0].groups[0].value === "data")) + ) { + return concat$2([ + n.open ? path.call(print, "open") : "", + join$2(",", path.map(print, "groups")), + n.close ? path.call(print, "close") : "" + ]); + } + + if (!n.open) { + return group$1( + indent$2(join$2(concat$2([",", line$1]), path.map(print, "groups"))) + ); + } + + return group$1( + concat$2([ + n.open ? path.call(print, "open") : "", + indent$2( + concat$2([ + softline$1, + join$2(concat$2([",", line$1]), path.map(print, "groups")) + ]) + ), + softline$1, + n.close ? path.call(print, "close") : "" + ]) + ); + } + case "value-value": { + return path.call(print, "group"); + } + case "value-func": { + return concat$2([n.value, path.call(print, "group")]); + } + case "value-paren": { + if (n.raws.before !== "") { + return concat$2([line$1, n.value]); + } + return n.value; + } + case "value-number": { + return concat$2([n.value, n.unit]); + } + case "value-operator": { + return n.value; + } + case "value-word": { + return n.value; + } + case "value-colon": { + return n.value; + } + case "value-comma": { + return concat$2([n.value, " "]); + } + case "value-string": { + return concat$2([ + n.quoted ? n.raws.quote : "", + n.value, + n.quoted ? n.raws.quote : "" + ]); + } + case "value-atword": { + return concat$2(["@", n.value]); + } + + default: + throw new Error("unknown type: " + JSON.stringify(n.type)); + } +} + +function printValue(value) { + return value; +} + +function printNodeSequence(path, options, print) { + const node = path.getValue(); + const parts = []; + let i = 0; + path.map(pathChild => { + parts.push(pathChild.call(print)); + if (i !== node.nodes.length - 1) { + if ( + node.nodes[i + 1].type === "css-comment" && + !util$4.hasNewline( + options.originalText, + util$4.locStart(node.nodes[i + 1]), + { backwards: true } + ) + ) { + parts.push(" "); + } else { + parts.push(hardline$2); + if (util$4.isNextLineEmpty(options.originalText, pathChild.getValue())) { + parts.push(hardline$2); + } + } + } + i++; + }, "nodes"); + + return concat$2(parts); +} + +function printStatementSequence(path, options, print) { + const printed = []; + + const bodyNode = path.getNode(); + const isClass = bodyNode.type === "ClassBody"; + + path.map((stmtPath, i) => { + const stmt = stmtPath.getValue(); + + // Just in case the AST has been modified to contain falsy + // "statements," it's safer simply to skip them. + if (!stmt) { + return; + } + + // Skip printing EmptyStatement nodes to avoid leaving stray + // semicolons lying around. + if (stmt.type === "EmptyStatement") { + return; + } + + const stmtPrinted = print(stmtPath); + const text = options.originalText; + const parts = []; + + // in no-semi mode, prepend statement with semicolon if it might break ASI + if (!options.semi && !isClass && stmtNeedsASIProtection(stmtPath)) { + if (stmt.comments && stmt.comments.some(comment => comment.leading)) { + // Note: stmtNeedsASIProtection requires stmtPath to already be printed + // as it reads needsParens which is mutated on the instance + parts.push(print(stmtPath, { needsSemi: true })); + } else { + parts.push(";", stmtPrinted); + } + } else { + parts.push(stmtPrinted); + } + + if (!options.semi && isClass) { + if (classPropMayCauseASIProblems(stmtPath)) { + parts.push(";"); + } else if (stmt.type === "ClassProperty") { + const nextChild = bodyNode.body[i + 1]; + if (classChildNeedsASIProtection(nextChild)) { + parts.push(";"); + } + } + } + + if (util$4.isNextLineEmpty(text, stmt) && !isLastStatement(stmtPath)) { + parts.push(hardline$2); + } + + printed.push(concat$2(parts)); + }); + + return join$2(hardline$2, printed); +} + +function printPropertyKey(path, options, print) { + const node = path.getNode(); + const key = node.key; + + if (isStringLiteral(key) && isIdentifierName(key.value) && !node.computed) { + // 'a' -> a + return path.call( + keyPath => comments$3.printComments(keyPath, () => key.value, options), + "key" + ); + } + return path.call(print, "key"); +} + +function printMethod(path, options, print) { + const node = path.getNode(); + const semi = options.semi ? ";" : ""; + const kind = node.kind; + const parts = []; + + if (node.type === "ObjectMethod" || node.type === "ClassMethod") { + node.value = node; + } + + if (node.value.async) { + parts.push("async "); + } + + if (!kind || kind === "init" || kind === "method" || kind === "constructor") { + if (node.value.generator) { + parts.push("*"); + } + } else { + assert$1.ok(kind === "get" || kind === "set"); + + parts.push(kind, " "); + } + + let key = printPropertyKey(path, options, print); + + if (node.computed) { + key = concat$2(["[", key, "]"]); + } + + parts.push( + key, + concat$2( + path.call( + valuePath => [ + printFunctionTypeParameters(valuePath, options, print), + group$1( + concat$2([ + printFunctionParams(valuePath, print, options), + printReturnType(valuePath, print) + ]) + ) + ], + "value" + ) + ) + ); + + if (!node.value.body || node.value.body.length === 0) { + parts.push(semi); + } else { + parts.push(" ", path.call(print, "value", "body")); + } + + return concat$2(parts); +} + +function couldGroupArg(arg) { + return ( + (arg.type === "ObjectExpression" && arg.properties.length > 0) || + (arg.type === "ArrayExpression" && arg.elements.length > 0) || + arg.type === "FunctionExpression" || + (arg.type === "ArrowFunctionExpression" && + (arg.body.type === "BlockStatement" || + arg.body.type === "ArrowFunctionExpression" || + arg.body.type === "ObjectExpression" || + arg.body.type === "ArrayExpression" || + arg.body.type === "CallExpression" || + arg.body.type === "JSXElement")) + ); +} + +function shouldGroupLastArg(args) { + const lastArg = util$4.getLast(args); + const penultimateArg = util$4.getPenultimate(args); + return ( + (!lastArg.comments || !lastArg.comments.length) && + couldGroupArg(lastArg) && + // If the last two arguments are of the same type, + // disable last element expansion. + (!penultimateArg || penultimateArg.type !== lastArg.type) + ); +} + +function shouldGroupFirstArg(args) { + if (args.length !== 2) { + return false; + } + + const firstArg = args[0]; + const secondArg = args[1]; + return ( + (!firstArg.comments || !firstArg.comments.length) && + (firstArg.type === "FunctionExpression" || + (firstArg.type === "ArrowFunctionExpression" && + firstArg.body.type === "BlockStatement")) && + !couldGroupArg(secondArg) + ); +} + +function printArgumentsList(path, options, print) { + const printed = path.map(print, "arguments"); + if (printed.length === 0) { + return concat$2([ + "(", + comments$3.printDanglingComments(path, options, /* sameIndent */ true), + ")" + ]); + } + + const args = path.getValue().arguments; + // This is just an optimization; I think we could return the + // conditional group for all function calls, but it's more expensive + // so only do it for specific forms. + const shouldGroupFirst = shouldGroupFirstArg(args); + const shouldGroupLast = shouldGroupLastArg(args); + if (shouldGroupFirst || shouldGroupLast) { + const shouldBreak = shouldGroupFirst + ? printed.slice(1).some(willBreak) + : printed.slice(0, -1).some(willBreak); + + // We want to print the last argument with a special flag + let printedExpanded; + let i = 0; + path.each(argPath => { + if (shouldGroupFirst && i === 0) { + printedExpanded = [ + argPath.call(p => print(p, { expandFirstArg: true })) + ].concat(printed.slice(1)); + } + if (shouldGroupLast && i === args.length - 1) { + printedExpanded = printed + .slice(0, -1) + .concat(argPath.call(p => print(p, { expandLastArg: true }))); + } + i++; + }, "arguments"); + + return concat$2([ + printed.some(willBreak) ? breakParent$2 : "", + conditionalGroup$1( + [ + concat$2(["(", join$2(concat$2([", "]), printedExpanded), ")"]), + shouldGroupFirst + ? concat$2([ + "(", + group$1(printedExpanded[0], { shouldBreak: true }), + printed.length > 1 ? ", " : "", + join$2(concat$2([",", line$1]), printed.slice(1)), + ")" + ]) + : concat$2([ + "(", + join$2(concat$2([",", line$1]), printed.slice(0, -1)), + printed.length > 1 ? ", " : "", + group$1(util$4.getLast(printedExpanded), { + shouldBreak: true + }), + ")" + ]), + group$1( + concat$2([ + "(", + indent$2(concat$2([line$1, join$2(concat$2([",", line$1]), printed)])), + shouldPrintComma(options, "all") ? "," : "", + line$1, + ")" + ]), + { shouldBreak: true } + ) + ], + { shouldBreak } + ) + ]); + } + + return group$1( + concat$2([ + "(", + indent$2(concat$2([softline$1, join$2(concat$2([",", line$1]), printed)])), + ifBreak$1(shouldPrintComma(options, "all") ? "," : ""), + softline$1, + ")" + ]), + { shouldBreak: printed.some(willBreak) } + ); +} + +function printFunctionTypeParameters(path, options, print) { + const fun = path.getValue(); + const paramsFieldIsArray = Array.isArray(fun["typeParameters"]); + + if (fun.typeParameters) { + // for TSFunctionType typeParameters is an array + // for FunctionTypeAnnotation it's a single node + if (paramsFieldIsArray) { + return concat$2("<", join$2(", ", path.map(print, "typeParameters")), ">"); + } else { + return path.call(print, "typeParameters"); + } + } else { + return ""; + } +} + +function printFunctionParams(path, print, options, expandArg) { + const fun = path.getValue(); + const paramsField = fun.parameters ? "parameters" : "params"; + + let printed = []; + if (fun[paramsField]) { + printed = path.map(print, paramsField); + } + + if (fun.defaults) { + path.each(defExprPath => { + const i = defExprPath.getName(); + const p = printed[i]; + + if (p && defExprPath.getValue()) { + printed[i] = concat$2([p, " = ", print(defExprPath)]); + } + }, "defaults"); + } + + if (fun.rest) { + printed.push(concat$2(["...", path.call(print, "rest")])); + } + + if (printed.length === 0) { + return concat$2([ + "(", + comments$3.printDanglingComments(path, options, /* sameIndent */ true), + ")" + ]); + } + + const lastParam = util$4.getLast(fun[paramsField]); + + // If the parent is a call with the first/last argument expansion and this is the + // params of the first/last argument, we dont want the arguments to break and instead + // want the whole expression to be on a new line. + // + // Good: Bad: + // verylongcall( verylongcall(( + // (a, b) => { a, + // } b, + // }) ) => { + // }) + if (expandArg) { + return group$1(concat$2(["(", join$2(", ", printed.map(removeLines)), ")"])); + } + + // Single object destructuring should hug + // + // function({ + // a, + // b, + // c + // }) {} + if (shouldHugArguments(fun)) { + return concat$2(["(", join$2(", ", printed), ")"]); + } + + const parent = path.getParentNode(); + + const flowTypeAnnotations = [ + "AnyTypeAnnotation", + "NullLiteralTypeAnnotation", + "GenericTypeAnnotation", + "ThisTypeAnnotation", + "NumberTypeAnnotation", + "VoidTypeAnnotation", + "NullTypeAnnotation", + "EmptyTypeAnnotation", + "MixedTypeAnnotation", + "BooleanTypeAnnotation", + "BooleanLiteralTypeAnnotation", + "StringTypeAnnotation" + ]; + + const isFlowShorthandWithOneArg = + (isObjectTypePropertyAFunction(parent) || + isTypeAnnotationAFunction(parent) || + parent.type === "TypeAlias" || + parent.type === "UnionTypeAnnotation" || + parent.type === "TSUnionType" || + parent.type === "IntersectionTypeAnnotation" || + (parent.type === "FunctionTypeAnnotation" && + parent.returnType === fun)) && + fun[paramsField].length === 1 && + fun[paramsField][0].name === null && + fun[paramsField][0].typeAnnotation && + flowTypeAnnotations.indexOf(fun[paramsField][0].typeAnnotation.type) !== + -1 && + !(fun[paramsField][0].typeAnnotation.type === "GenericTypeAnnotation" && + fun[paramsField][0].typeAnnotation.typeParameters) && + !fun.rest; + + if (isFlowShorthandWithOneArg) { + return concat$2(printed); + } + + const canHaveTrailingComma = + !(lastParam && lastParam.type === "RestElement") && !fun.rest; + + return concat$2([ + "(", + indent$2(concat$2([softline$1, join$2(concat$2([",", line$1]), printed)])), + ifBreak$1( + canHaveTrailingComma && shouldPrintComma(options, "all") ? "," : "" + ), + softline$1, + ")" + ]); +} + +function canPrintParamsWithoutParens(node) { + return ( + node.params.length === 1 && + !node.rest && + node.params[0].type === "Identifier" && + !node.params[0].typeAnnotation && + !util$4.hasBlockComments(node.params[0]) && + !node.params[0].optional && + !node.predicate && + !node.returnType + ); +} + +function printFunctionDeclaration(path, print, options) { + const n = path.getValue(); + const parts = []; + + if (n.async) { + parts.push("async "); + } + + parts.push("function"); + + if (n.generator) { + parts.push("*"); + } + if (n.id) { + parts.push(" ", path.call(print, "id")); + } + + parts.push( + printFunctionTypeParameters(path, options, print), + group$1( + concat$2([ + printFunctionParams(path, print, options), + printReturnType(path, print) + ]) + ), + n.body ? " " : "", + path.call(print, "body") + ); + + return concat$2(parts); +} + +function printObjectMethod(path, options, print) { + const objMethod = path.getValue(); + const parts = []; + + if (objMethod.async) { + parts.push("async "); + } + if (objMethod.generator) { + parts.push("*"); + } + if ( + objMethod.method || + objMethod.kind === "get" || + objMethod.kind === "set" + ) { + return printMethod(path, options, print); + } + + const key = printPropertyKey(path, options, print); + + if (objMethod.computed) { + parts.push("[", key, "]"); + } else { + parts.push(key); + } + + parts.push( + printFunctionTypeParameters(path, options, print), + group$1( + concat$2([ + printFunctionParams(path, print, options), + printReturnType(path, print) + ]) + ), + " ", + path.call(print, "body") + ); + + return concat$2(parts); +} + +function printReturnType(path, print) { + const n = path.getValue(); + const parts = [path.call(print, "returnType")]; + + // prepend colon to TypeScript type annotation + if (n.returnType && n.returnType.typeAnnotation) { + parts.unshift(": "); + } + + if (n.predicate) { + // The return type will already add the colon, but otherwise we + // need to do it ourselves + parts.push(n.returnType ? " " : ": ", path.call(print, "predicate")); + } + + return concat$2(parts); +} + +function printExportDeclaration(path, options, print) { + const decl = path.getValue(); + const semi = options.semi ? ";" : ""; + const parts = ["export "]; + + if (decl["default"] || decl.type === "ExportDefaultDeclaration") { + parts.push("default "); + } + + parts.push( + comments$3.printDanglingComments(path, options, /* sameIndent */ true) + ); + + if (decl.declaration) { + parts.push(path.call(print, "declaration")); + + if ( + decl.type === "ExportDefaultDeclaration" && + (decl.declaration.type !== "ClassDeclaration" && + decl.declaration.type !== "FunctionDeclaration") + ) { + parts.push(semi); + } + } else { + if (decl.specifiers && decl.specifiers.length > 0) { + if ( + decl.specifiers.length === 1 && + decl.specifiers[0].type === "ExportBatchSpecifier" + ) { + parts.push("*"); + } else { + const specifiers = []; + const defaultSpecifiers = []; + const namespaceSpecifiers = []; + + path.map(specifierPath => { + const specifierType = path.getValue().type; + if (specifierType === "ExportSpecifier") { + specifiers.push(print(specifierPath)); + } else if (specifierType === "ExportDefaultSpecifier") { + defaultSpecifiers.push(print(specifierPath)); + } else if (specifierType === "ExportNamespaceSpecifier") { + namespaceSpecifiers.push(concat$2(["* as ", print(specifierPath)])); + } + }, "specifiers"); + + const isNamespaceFollowed = + namespaceSpecifiers.length !== 0 && + (specifiers.length !== 0 || defaultSpecifiers.length !== 0); + const isDefaultFollowed = + defaultSpecifiers.length !== 0 && specifiers.length !== 0; + + parts.push( + decl.exportKind === "type" ? "type " : "", + concat$2(namespaceSpecifiers), + concat$2([isNamespaceFollowed ? ", " : ""]), + concat$2(defaultSpecifiers), + concat$2([isDefaultFollowed ? ", " : ""]), + specifiers.length !== 0 + ? group$1( + concat$2([ + "{", + indent$2( + concat$2([ + options.bracketSpacing ? line$1 : softline$1, + join$2(concat$2([",", line$1]), specifiers) + ]) + ), + ifBreak$1(shouldPrintComma(options) ? "," : ""), + options.bracketSpacing ? line$1 : softline$1, + "}" + ]) + ) + : "" + ); + } + } else { + parts.push("{}"); + } + + if (decl.source) { + parts.push(" from ", path.call(print, "source")); + } + + parts.push(semi); + } + + return concat$2(parts); +} + +function printFlowDeclaration(path, parts) { + const parentExportDecl = util$4.getParentExportDeclaration(path); + + if (parentExportDecl) { + assert$1.strictEqual(parentExportDecl.type, "DeclareExportDeclaration"); + } else { + // If the parent node has type DeclareExportDeclaration, then it + // will be responsible for printing the "declare" token. Otherwise + // it needs to be printed with this non-exported declaration node. + parts.unshift("declare "); + } + + return concat$2(parts); +} + +function getFlowVariance(path) { + if (!path.variance) { + return null; + } + + // Babylon 7.0 currently uses variance node type, and flow should + // follow suit soon: + // https://github.com/babel/babel/issues/4722 + const variance = path.variance.kind || path.variance; + + switch (variance) { + case "plus": + return "+"; + + case "minus": + return "-"; + + default: + return variance; + } +} + +function printTypeScriptModifiers(path, options, print) { + const n = path.getValue(); + if (!n.modifiers || !n.modifiers.length) { + return ""; + } + return concat$2([join$2(" ", path.map(print, "modifiers")), " "]); +} + +function printTypeParameters(path, options, print, paramsKey) { + const n = path.getValue(); + + if (!n[paramsKey]) { + return ""; + } + + // for TypeParameterDeclaration typeParameters is a single node + if (!Array.isArray(n[paramsKey])) { + return path.call(print, paramsKey); + } + + const shouldInline = + n[paramsKey].length === 1 && + (shouldHugType(n[paramsKey][0]) || + (n[paramsKey][0].type === "GenericTypeAnnotation" && + shouldHugType(n[paramsKey][0].id)) || + n[paramsKey][0].type === "NullableTypeAnnotation"); + + if (shouldInline) { + return concat$2(["<", join$2(", ", path.map(print, paramsKey)), ">"]); + } + + return group$1( + concat$2([ + "<", + indent$2( + concat$2([ + softline$1, + join$2(concat$2([",", line$1]), path.map(print, paramsKey)) + ]) + ), + ifBreak$1( + options.parser !== "typescript" && shouldPrintComma(options, "all") + ? "," + : "" + ), + softline$1, + ">" + ]) + ); +} + +function printClass(path, options, print) { + const n = path.getValue(); + const parts = []; + + if (n.accessibility) { + parts.push(n.accessibility + " "); + } + if (n.type === "TSAbstractClassDeclaration") { + parts.push("abstract "); + } + + parts.push("class"); + + if (n.id) { + parts.push(" ", path.call(print, "id")); + } + + parts.push(path.call(print, "typeParameters")); + + const partsGroup = []; + if (n.superClass) { + parts.push( + " extends ", + path.call(print, "superClass"), + path.call(print, "superTypeParameters") + ); + } else if (n.extends && n.extends.length > 0) { + parts.push(" extends ", join$2(", ", path.map(print, "extends"))); + } + + if (n["implements"] && n["implements"].length > 0) { + partsGroup.push( + line$1, + "implements ", + group$1(indent$2(join$2(concat$2([",", line$1]), path.map(print, "implements")))) + ); + } + + if (partsGroup.length > 0) { + parts.push(group$1(indent$2(concat$2(partsGroup)))); + } + + parts.push(" ", path.call(print, "body")); + + return parts; +} + +function printMemberLookup(path, options, print) { + const property = path.call(print, "property"); + const n = path.getValue(); + + if (!n.computed) { + return concat$2([".", property]); + } + + if ( + !n.property || + (n.property.type === "Literal" && typeof n.property.value === "number") || + n.property.type === "NumericLiteral" + ) { + return concat$2(["[", property, "]"]); + } + + return group$1( + concat$2(["[", indent$2(concat$2([softline$1, property])), softline$1, "]"]) + ); +} + +// We detect calls on member expressions specially to format a +// comman pattern better. The pattern we are looking for is this: +// +// arr +// .map(x => x + 1) +// .filter(x => x > 10) +// .some(x => x % 2) +// +// The way it is structured in the AST is via a nested sequence of +// MemberExpression and CallExpression. We need to traverse the AST +// and make groups out of it to print it in the desired way. +function printMemberChain(path, options, print) { + // The first phase is to linearize the AST by traversing it down. + // + // a().b() + // has the following AST structure: + // CallExpression(MemberExpression(CallExpression(Identifier))) + // and we transform it into + // [Identifier, CallExpression, MemberExpression, CallExpression] + const printedNodes = []; + + function rec(path) { + const node = path.getValue(); + if (node.type === "CallExpression") { + printedNodes.unshift({ + node: node, + printed: comments$3.printComments( + path, + () => + concat$2([ + printFunctionTypeParameters(path, options, print), + printArgumentsList(path, options, print) + ]), + options + ) + }); + path.call(callee => rec(callee), "callee"); + } else if (node.type === "MemberExpression") { + printedNodes.unshift({ + node: node, + printed: comments$3.printComments( + path, + () => printMemberLookup(path, options, print), + options + ) + }); + path.call(object => rec(object), "object"); + } else { + printedNodes.unshift({ + node: node, + printed: path.call(print) + }); + } + } + // Note: the comments of the root node have already been printed, so we + // need to extract this first call without printing them as they would + // if handled inside of the recursive call. + printedNodes.unshift({ + node: path.getValue(), + printed: concat$2([ + printFunctionTypeParameters(path, options, print), + printArgumentsList(path, options, print) + ]) + }); + path.call(callee => rec(callee), "callee"); + + // Once we have a linear list of printed nodes, we want to create groups out + // of it. + // + // a().b.c().d().e + // will be grouped as + // [ + // [Identifier, CallExpression], + // [MemberExpression, MemberExpression, CallExpression], + // [MemberExpression, CallExpression], + // [MemberExpression], + // ] + // so that we can print it as + // a() + // .b.c() + // .d() + // .e + + // The first group is the first node followed by + // - as many CallExpression as possible + // < fn()()() >.something() + // - then, as many MemberExpression as possible but the last one + // < this.items >.something() + const groups = []; + let currentGroup = [printedNodes[0]]; + let i = 1; + for (; i < printedNodes.length; ++i) { + if (printedNodes[i].node.type === "CallExpression") { + currentGroup.push(printedNodes[i]); + } else { + break; + } + } + for (; i + 1 < printedNodes.length; ++i) { + if ( + printedNodes[i].node.type === "MemberExpression" && + printedNodes[i + 1].node.type === "MemberExpression" + ) { + currentGroup.push(printedNodes[i]); + } else { + break; + } + } + groups.push(currentGroup); + currentGroup = []; + + // Then, each following group is a sequence of MemberExpression followed by + // a sequence of CallExpression. To compute it, we keep adding things to the + // group until we has seen a CallExpression in the past and reach a + // MemberExpression + let hasSeenCallExpression = false; + for (; i < printedNodes.length; ++i) { + if ( + hasSeenCallExpression && + printedNodes[i].node.type === "MemberExpression" + ) { + // [0] should be appended at the end of the group instead of the + // beginning of the next one + if (printedNodes[i].node.computed) { + currentGroup.push(printedNodes[i]); + continue; + } + + groups.push(currentGroup); + currentGroup = []; + hasSeenCallExpression = false; + } + + if (printedNodes[i].node.type === "CallExpression") { + hasSeenCallExpression = true; + } + currentGroup.push(printedNodes[i]); + + if ( + printedNodes[i].node.comments && + printedNodes[i].node.comments.some(comment => comment.trailing) + ) { + groups.push(currentGroup); + currentGroup = []; + hasSeenCallExpression = false; + } + } + if (currentGroup.length > 0) { + groups.push(currentGroup); + } + + // There are cases like Object.keys(), Observable.of(), _.values() where + // they are the subject of all the chained calls and therefore should + // be kept on the same line: + // + // Object.keys(items) + // .filter(x => x) + // .map(x => x) + // + // In order to detect those cases, we use an heuristic: if the first + // node is just an identifier with the name starting with a capital + // letter, just a sequence of _$ or this. The rationale is that they are + // likely to be factories. + const shouldMerge = + groups.length >= 2 && + !groups[1][0].node.comments && + groups[0].length === 1 && + (groups[0][0].node.type === "ThisExpression" || + (groups[0][0].node.type === "Identifier" && + groups[0][0].node.name.match(/(^[A-Z])|^[_$]+$/))); + + function printGroup(printedGroup) { + return concat$2(printedGroup.map(tuple => tuple.printed)); + } + + function printIndentedGroup(groups) { + if (groups.length === 0) { + return ""; + } + return indent$2( + group$1(concat$2([hardline$2, join$2(hardline$2, groups.map(printGroup))])) + ); + } + + const printedGroups = groups.map(printGroup); + const oneLine = concat$2(printedGroups); + + const flatGroups = groups + .slice(0, shouldMerge ? 3 : 2) + .reduce((res, group) => res.concat(group), []); + + const hasComment = + flatGroups.slice(1).some(node => hasLeadingComment(node.node)) || + flatGroups.slice(0, -1).some(node => hasTrailingComment(node.node)); + + // If we only have a single `.`, we shouldn't do anything fancy and just + // render everything concatenated together. + if ( + groups.length <= (shouldMerge ? 3 : 2) && + !hasComment && + // (a || b).map() should be break before .map() instead of || + groups[0][0].node.type !== "LogicalExpression" + ) { + return group$1(oneLine); + } + + const expanded = concat$2([ + printGroup(groups[0]), + shouldMerge ? concat$2(groups.slice(1, 2).map(printGroup)) : "", + printIndentedGroup(groups.slice(shouldMerge ? 2 : 1)) + ]); + + // If there's a comment, we don't want to print in one line. + if (hasComment) { + return group$1(expanded); + } + + // If any group but the last one has a hard line, we want to force expand + // it. If the last group is a function it's okay to inline if it fits. + if (printedGroups.slice(0, -1).some(willBreak)) { + return group$1(expanded); + } + + return concat$2([ + // We only need to check `oneLine` because if `expanded` is chosen + // that means that the parent group has already been broken + // naturally + willBreak(oneLine) ? breakParent$2 : "", + conditionalGroup$1([oneLine, expanded]) + ]); +} + +function isEmptyJSXElement(node) { + if (node.children.length === 0) { + return true; + } + if (node.children.length > 1) { + return false; + } + + // if there is one child but it's just a newline, treat as empty + const value = node.children[0].value; + if (!/\S/.test(value) && /\n/.test(value)) { + return true; + } else { + return false; + } +} + +// JSX Children are strange, mostly for two reasons: +// 1. JSX reads newlines into string values, instead of skipping them like JS +// 2. up to one whitespace between elements within a line is significant, +// but not between lines. +// +// So for one thing, '\n' needs to be parsed out of string literals +// and turned into hardlines (with string boundaries otherwise using softline) +// +// For another, leading, trailing, and lone whitespace all need to +// turn themselves into the rather ugly `{' '}` when breaking. +// +// Finally we print JSX using the `fill` doc primitive. +// This requires that we give it an array of alternating +// content and whitespace elements. +// To ensure this we add dummy `""` content elements as needed. +function printJSXChildren(path, options, print, jsxWhitespace) { + const n = path.getValue(); + const children = []; + + // using `map` instead of `each` because it provides `i` + path.map((childPath, i) => { + const child = childPath.getValue(); + if (isLiteral(child) && typeof child.value === "string") { + const value = child.raw || child.extra.raw; + + // Contains a non-whitespace character + if (/[^ \n\r\t]/.test(value)) { + // treat each line of text as its own entity + value.split(/(\r?\n\s*)/).forEach(textLine => { + const newlines = textLine.match(/\n/g); + if (newlines) { + children.push(""); + children.push(hardline$2); + + // allow one extra newline + if (newlines.length > 1) { + children.push(""); + children.push(hardline$2); + } + return; + } + + if (textLine.length === 0) { + return; + } + + const beginSpace = /^[ \n\r\t]+/.test(textLine); + if (beginSpace) { + children.push(""); + children.push(jsxWhitespace); + } + + const stripped = textLine.replace(/^[ \n\r\t]+|[ \n\r\t]+$/g, ""); + // Split text into words separated by "line"s. + stripped.split(/([ \n\r\t]+)/).forEach(word => { + const space = /[ \n\r\t]+/.test(word); + if (space) { + children.push(line$1); + } else { + children.push(word); + } + }); + + const endSpace = /[ \n\r\t]+$/.test(textLine); + if (endSpace) { + children.push(jsxWhitespace); + } else { + // Ideally this would be a `softline` to allow a break between + // tags and text. + // Unfortunately Facebook have a custom translation pipeline + // (https://github.com/prettier/prettier/issues/1581#issuecomment-300975032) + // that uses the JSX syntax, but does not follow the React whitespace + // rules. + // Ensuring that we never have a break between tags and text in JSX + // will allow Facebook to adopt Prettier without too much of an + // adverse effect on formatting algorithm. + children.push(""); + } + }); + } else if (/\n/.test(value)) { + children.push(""); + children.push(hardline$2); + + // allow one extra newline + if (value.match(/\n/g).length > 1) { + children.push(""); + children.push(hardline$2); + } + } else if (/[ \n\r\t]/.test(value)) { + // whitespace(s)-only without newlines, + // eg; one or more spaces separating two elements + for (let i = 0; i < value.length; ++i) { + // Because fill expects alternating content and whitespace parts + // we need to include an empty content part before each JSX + // whitespace. + children.push(""); + children.push(jsxWhitespace); + } + } + } else { + children.push(print(childPath)); + + const next = n.children[i + 1]; + const followedByJSXElement = next && !isLiteral(next); + if (followedByJSXElement) { + children.push(softline$1); + } else { + // Ideally this would be a softline as well. + // See the comment above about the Facebook translation pipeline as + // to why this is an empty string. + children.push(""); + } + } + }, "children"); + + return children; +} + +// JSX expands children from the inside-out, instead of the outside-in. +// This is both to break children before attributes, +// and to ensure that when children break, their parents do as well. +// +// Any element that is written without any newlines and fits on a single line +// is left that way. +// Not only that, any user-written-line containing multiple JSX siblings +// should also be kept on one line if possible, +// so each user-written-line is wrapped in its own group. +// +// Elements that contain newlines or don't fit on a single line (recursively) +// are fully-split, using hardline and shouldBreak: true. +// +// To support that case properly, all leading and trailing spaces +// are stripped from the list of children, and replaced with a single hardline. +function printJSXElement(path, options, print) { + const n = path.getValue(); + + // Turn
into
+ if (isEmptyJSXElement(n)) { + n.openingElement.selfClosing = true; + delete n.closingElement; + } + + const openingLines = path.call(print, "openingElement"); + const closingLines = path.call(print, "closingElement"); + + if ( + n.children.length === 1 && + n.children[0].type === "JSXExpressionContainer" && + (n.children[0].expression.type === "TemplateLiteral" || + n.children[0].expression.type === "TaggedTemplateExpression") + ) { + return concat$2([ + openingLines, + concat$2(path.map(print, "children")), + closingLines + ]); + } + + // If no children, just print the opening element + if (n.openingElement.selfClosing) { + assert$1.ok(!n.closingElement); + return openingLines; + } + // Record any breaks. Should never go from true to false, only false to true. + let forcedBreak = willBreak(openingLines); + + const rawJsxWhitespace = options.singleQuote ? "{' '}" : '{" "}'; + const jsxWhitespace = ifBreak$1(concat$2([softline$1, rawJsxWhitespace]), " "); + + const children = printJSXChildren(path, options, print, jsxWhitespace); + + // Remove multiple filler empty strings + // These can occur when a text element is followed by a newline. + for (let i = children.length - 2; i >= 0; i--) { + if (children[i] === "" && children[i + 1] === "") { + children.splice(i, 2); + } + } + + // Trim trailing lines (or empty strings), recording if there was a hardline + let numTrailingHard = 0; + while ( + children.length && + (isLineNext(util$4.getLast(children)) || isEmpty(util$4.getLast(children))) + ) { + if (willBreak(util$4.getLast(children))) { + ++numTrailingHard; + forcedBreak = true; + } + children.pop(); + } + // allow one extra newline + if (numTrailingHard > 1) { + children.push(""); + children.push(hardline$2); + } + + // Trim leading lines (or empty strings), recording if there was a hardline + let numLeadingHard = 0; + while ( + children.length && + (isLineNext(children[0]) || isEmpty(children[0])) && + (isLineNext(children[1]) || isEmpty(children[1])) + ) { + if (willBreak(children[0]) || willBreak(children[1])) { + ++numLeadingHard; + forcedBreak = true; + } + children.shift(); + children.shift(); + } + // allow one extra newline + if (numLeadingHard > 1) { + children.unshift(hardline$2); + children.unshift(""); + } + + // Tweak how we format children if outputting this element over multiple lines. + // Also detect whether we will force this element to output over multiple lines. + const multilineChildren = []; + children.forEach((child, i) => { + // Ensure that we display leading, trailing, and solitary whitespace as + // `{" "}` when outputting this element over multiple lines. + if (child === jsxWhitespace) { + if (i === 1 && children[i - 1] === "") { + multilineChildren.push(rawJsxWhitespace); + return; + } else if (i === children.length - 1) { + multilineChildren.push(concat$2([hardline$2, rawJsxWhitespace])); + return; + } else if (willBreak(children[i - 1]) || willBreak(children[i + 1])) { + // If we come before or after a JSX element that is multiline + // ensure the JSX whitespace appears on a line by itself. + // NOTE: Currently this only detects elements that are already + // multiline before formatting! + multilineChildren.push(concat$2([hardline$2, rawJsxWhitespace, hardline$2])); + return; + } + } + + multilineChildren.push(child); + + if (willBreak(child)) { + forcedBreak = true; + } + }); + + const multiLineElem = group$1( + concat$2([ + openingLines, + indent$2(concat$2([hardline$2, fill$1(multilineChildren)])), + hardline$2, + closingLines + ]) + ); + + if (forcedBreak) { + return multiLineElem; + } + + return conditionalGroup$1([ + group$1(concat$2([openingLines, fill$1(children), closingLines])), + multiLineElem + ]); +} + +function maybeWrapJSXElementInParens(path, elem) { + const parent = path.getParentNode(); + if (!parent) { + return elem; + } + + const NO_WRAP_PARENTS = { + ArrayExpression: true, + JSXElement: true, + JSXExpressionContainer: true, + ExpressionStatement: true, + CallExpression: true, + ConditionalExpression: true, + LogicalExpression: true, + ArrowFunctionExpression: true + }; + if (NO_WRAP_PARENTS[parent.type]) { + return elem; + } + + return group$1( + concat$2([ + ifBreak$1("("), + indent$2(concat$2([softline$1, elem])), + softline$1, + ifBreak$1(")") + ]) + ); +} + +function isBinaryish(node) { + return node.type === "BinaryExpression" || node.type === "LogicalExpression"; +} + +function shouldInlineLogicalExpression(node) { + if (node.type !== "LogicalExpression") { + return false; + } + + if ( + node.right.type === "ObjectExpression" && + node.right.properties.length !== 0 + ) { + return true; + } + + if ( + node.right.type === "ArrayExpression" && + node.right.elements.length !== 0 + ) { + return true; + } + + return false; +} + +// For binary expressions to be consistent, we need to group +// subsequent operators with the same precedence level under a single +// group. Otherwise they will be nested such that some of them break +// onto new lines but not all. Operators with the same precedence +// level should either all break or not. Because we group them by +// precedence level and the AST is structured based on precedence +// level, things are naturally broken up correctly, i.e. `&&` is +// broken before `+`. +function printBinaryishExpressions( + path, + print, + options, + isNested, + isInsideParenthesis +) { + let parts = []; + const node = path.getValue(); + + // We treat BinaryExpression and LogicalExpression nodes the same. + if (isBinaryish(node)) { + // Put all operators with the same precedence level in the same + // group. The reason we only need to do this with the `left` + // expression is because given an expression like `1 + 2 - 3`, it + // is always parsed like `((1 + 2) - 3)`, meaning the `left` side + // is where the rest of the expression will exist. Binary + // expressions on the right side mean they have a difference + // precedence level and should be treated as a separate group, so + // print them normally. (This doesn't hold for the `**` operator, + // which is unique in that it is right-associative.) + if ( + util$4.getPrecedence(node.left.operator) === + util$4.getPrecedence(node.operator) && + node.operator !== "**" + ) { + // Flatten them out by recursively calling this function. + parts = parts.concat( + path.call( + left => + printBinaryishExpressions( + left, + print, + options, + /* isNested */ true, + isInsideParenthesis + ), + "left" + ) + ); + } else { + parts.push(path.call(print, "left")); + } + + const right = concat$2([ + node.operator, + shouldInlineLogicalExpression(node) ? " " : line$1, + path.call(print, "right") + ]); + + // If there's only a single binary expression, we want to create a group + // in order to avoid having a small right part like -1 be on its own line. + const parent = path.getParentNode(); + const shouldGroup = + !(isInsideParenthesis && node.type === "LogicalExpression") && + parent.type !== node.type && + node.left.type !== node.type && + node.right.type !== node.type; + + parts.push(" ", shouldGroup ? group$1(right) : right); + + // The root comments are already printed, but we need to manually print + // the other ones since we don't call the normal print on BinaryExpression, + // only for the left and right parts + if (isNested && node.comments) { + parts = comments$3.printComments(path, () => concat$2(parts), options); + } + } else { + // Our stopping case. Simply print the node normally. + parts.push(path.call(print)); + } + + return parts; +} + +function printAssignmentRight(rightNode, printedRight, canBreak, options) { + if (hasLeadingOwnLineComment(options.originalText, rightNode)) { + return indent$2(concat$2([hardline$2, printedRight])); + } + + if (canBreak) { + return indent$2(concat$2([line$1, printedRight])); + } + + return concat$2([" ", printedRight]); +} + +function printAssignment( + leftNode, + printedLeft, + operator, + rightNode, + printedRight, + options +) { + if (!rightNode) { + return printedLeft; + } + + const canBreak = + (isBinaryish(rightNode) && !shouldInlineLogicalExpression(rightNode)) || + ((leftNode.type === "Identifier" || + isStringLiteral(leftNode) || + leftNode.type === "MemberExpression") && + (isStringLiteral(rightNode) || isMemberExpressionChain(rightNode))); + + const printed = printAssignmentRight( + rightNode, + printedRight, + canBreak, + options + ); + + return group$1(concat$2([printedLeft, operator, printed])); +} + +function adjustClause(node, clause, forceSpace) { + if (node.type === "EmptyStatement") { + return ";"; + } + + if (node.type === "BlockStatement" || forceSpace) { + return concat$2([" ", clause]); + } + + return indent$2(concat$2([line$1, clause])); +} + +function nodeStr(node, options, isFlowDirectiveLiteral) { + const raw = node.extra ? node.extra.raw : node.raw; + // `rawContent` is the string exactly like it appeared in the input source + // code, with its enclosing quote. + const rawContent = raw.slice(1, -1); + + const double = { quote: '"', regex: /"/g }; + const single = { quote: "'", regex: /'/g }; + + const preferred = options.singleQuote ? single : double; + const alternate = preferred === single ? double : single; + + let shouldUseAlternateQuote = false; + const isDirectiveLiteral = + isFlowDirectiveLiteral || node.type === "DirectiveLiteral"; + let canChangeDirectiveQuotes = false; + + // If `rawContent` contains at least one of the quote preferred for enclosing + // the string, we might want to enclose with the alternate quote instead, to + // minimize the number of escaped quotes. + // Also check for the alternate quote, to determine if we're allowed to swap + // the quotes on a DirectiveLiteral. + if ( + rawContent.includes(preferred.quote) || + rawContent.includes(alternate.quote) + ) { + const numPreferredQuotes = (rawContent.match(preferred.regex) || []).length; + const numAlternateQuotes = (rawContent.match(alternate.regex) || []).length; + + shouldUseAlternateQuote = numPreferredQuotes > numAlternateQuotes; + } else { + canChangeDirectiveQuotes = true; + } + + const enclosingQuote = shouldUseAlternateQuote + ? alternate.quote + : preferred.quote; + + // Directives are exact code unit sequences, which means that you can't + // change the escape sequences they use. + // See https://github.com/prettier/prettier/issues/1555 + // and https://tc39.github.io/ecma262/#directive-prologue + if (isDirectiveLiteral) { + if (canChangeDirectiveQuotes) { + return enclosingQuote + rawContent + enclosingQuote; + } else { + return raw; + } + } + + // It might sound unnecessary to use `makeString` even if `node.raw` already + // is enclosed with `enclosingQuote`, but it isn't. `node.raw` could contain + // unnecessary escapes (such as in `"\'"`). Always using `makeString` makes + // sure that we consistently output the minimum amount of escaped quotes. + return makeString(rawContent, enclosingQuote); +} + +function makeString(rawContent, enclosingQuote) { + const otherQuote = enclosingQuote === '"' ? "'" : '"'; + + // Matches _any_ escape and unescaped quotes (both single and double). + const regex = /\\([\s\S])|(['"])/g; + + // Escape and unescape single and double quotes as needed to be able to + // enclose `rawContent` with `enclosingQuote`. + const newContent = rawContent.replace(regex, (match, escaped, quote) => { + // If we matched an escape, and the escaped character is a quote of the + // other type than we intend to enclose the string with, there's no need for + // it to be escaped, so return it _without_ the backslash. + if (escaped === otherQuote) { + return escaped; + } + + // If we matched an unescaped quote and it is of the _same_ type as we + // intend to enclose the string with, it must be escaped, so return it with + // a backslash. + if (quote === enclosingQuote) { + return "\\" + quote; + } + + if (quote) { + return quote; + } + + // Unescape any unnecessarily escaped character. + // Adapted from https://github.com/eslint/eslint/blob/de0b4ad7bd820ade41b1f606008bea68683dc11a/lib/rules/no-useless-escape.js#L27 + return /^[^\\nrvtbfux\r\n\u2028\u2029"'0-7]$/.test(escaped) + ? escaped + : "\\" + escaped; + }); + + return enclosingQuote + newContent + enclosingQuote; +} + +function printRegex(node) { + const flags = node.flags.split("").sort().join(""); + return `/${node.pattern}/${flags}`; +} + +function printNumber(rawNumber) { + return ( + rawNumber + .toLowerCase() + // Remove unnecessary plus and zeroes from scientific notation. + .replace(/^([\d.]+e)(?:\+|(-))?0*(\d)/, "$1$2$3") + // Remove unnecessary scientific notation (1e0). + .replace(/^([\d.]+)e[+-]?0+$/, "$1") + // Make sure numbers always start with a digit. + .replace(/^\./, "0.") + // Remove extraneous trailing decimal zeroes. + .replace(/(\.\d+?)0+(?=e|$)/, "$1") + // Remove trailing dot. + .replace(/\.(?=e|$)/, "") + ); +} + +function isLastStatement(path) { + const parent = path.getParentNode(); + if (!parent) { + return true; + } + const node = path.getValue(); + const body = parent.body.filter(stmt => stmt.type !== "EmptyStatement"); + return body && body[body.length - 1] === node; +} + +function hasLeadingComment(node) { + return node.comments && node.comments.some(comment => comment.leading); +} + +function hasTrailingComment(node) { + return node.comments && node.comments.some(comment => comment.trailing); +} + +function hasLeadingOwnLineComment(text, node) { + if (node.type === "JSXElement") { + return false; + } + + const res = + node.comments && + node.comments.some( + comment => comment.leading && util$4.hasNewline(text, util$4.locEnd(comment)) + ); + return res; +} + +function hasNakedLeftSide(node) { + return ( + node.type === "AssignmentExpression" || + node.type === "BinaryExpression" || + node.type === "LogicalExpression" || + node.type === "ConditionalExpression" || + node.type === "CallExpression" || + node.type === "MemberExpression" || + node.type === "SequenceExpression" || + node.type === "TaggedTemplateExpression" || + (node.type === "UpdateExpression" && !node.prefix) + ); +} + +function getLeftSide(node) { + if (node.expressions) { + return node.expressions[0]; + } + return ( + node.left || + node.test || + node.callee || + node.object || + node.tag || + node.argument + ); +} + +function exprNeedsASIProtection(node) { + // HACK: node.needsParens is added in `genericPrint()` for the sole purpose + // of being used here. It'd be preferable to find a cleaner way to do this. + const maybeASIProblem = + node.needsParens || + node.type === "ParenthesizedExpression" || + node.type === "TypeCastExpression" || + (node.type === "ArrowFunctionExpression" && + !canPrintParamsWithoutParens(node)) || + node.type === "ArrayExpression" || + node.type === "ArrayPattern" || + (node.type === "UnaryExpression" && + node.prefix && + (node.operator === "+" || node.operator === "-")) || + node.type === "TemplateLiteral" || + node.type === "TemplateElement" || + node.type === "JSXElement" || + node.type === "BindExpression" || + node.type === "RegExpLiteral" || + (node.type === "Literal" && node.pattern) || + (node.type === "Literal" && node.regex); + + if (maybeASIProblem) { + return true; + } + + if (!hasNakedLeftSide(node)) { + return false; + } + + return exprNeedsASIProtection(getLeftSide(node)); +} + +function stmtNeedsASIProtection(path) { + if (!path) { + return false; + } + const node = path.getNode(); + + if (node.type !== "ExpressionStatement") { + return false; + } + + return exprNeedsASIProtection(node.expression); +} + +function classPropMayCauseASIProblems(path) { + const node = path.getNode(); + + if (node.type !== "ClassProperty") { + return false; + } + + const name = node.key && node.key.name; + if (!name) { + return false; + } + + // this isn't actually possible yet with most parsers available today + // so isn't properly tested yet. + if (name === "static" || name === "get" || name === "set") { + return true; + } +} + +function classChildNeedsASIProtection(node) { + if (!node) { + return; + } + + switch (node.type) { + case "ClassProperty": + case "TSAbstractClassProperty": + return node.computed; + case "MethodDefinition": // Flow + case "TSAbstractMethodDefinition": // TypeScript + case "ClassMethod": { + // Babylon + const isAsync = node.value ? node.value.async : node.async; + const isGenerator = node.value ? node.value.generator : node.generator; + if ( + isAsync || + node.static || + node.kind === "get" || + node.kind === "set" + ) { + return false; + } + if (node.computed || isGenerator) { + return true; + } + return false; + } + + default: + return false; + } +} + +// This recurses the return argument, looking for the first token +// (the leftmost leaf node) and, if it (or its parents) has any +// leadingComments, returns true (so it can be wrapped in parens). +function returnArgumentHasLeadingComment(options, argument) { + if (hasLeadingOwnLineComment(options.originalText, argument)) { + return true; + } + + if (hasNakedLeftSide(argument)) { + let leftMost = argument; + let newLeftMost; + while ((newLeftMost = getLeftSide(leftMost))) { + leftMost = newLeftMost; + + if (hasLeadingOwnLineComment(options.originalText, leftMost)) { + return true; + } + } + } + + return false; +} + +function isMemberExpressionChain(node) { + if (node.type !== "MemberExpression") { + return false; + } + if (node.object.type === "Identifier") { + return true; + } + return isMemberExpressionChain(node.object); +} + +// Hack to differentiate between the following two which have the same ast +// type T = { method: () => void }; +// type T = { method(): void }; +function isObjectTypePropertyAFunction(node) { + return ( + node.type === "ObjectTypeProperty" && + node.value.type === "FunctionTypeAnnotation" && + !node.static && + !isFunctionNotation(node) + ); +} + +// TODO: This is a bad hack and we need a better way to distinguish between +// arrow functions and otherwise +function isFunctionNotation(node) { + return isGetterOrSetter(node) || sameLocStart(node, node.value); +} + +function isGetterOrSetter(node) { + return node.kind === "get" || node.kind === "set"; +} + +function sameLocStart(nodeA, nodeB) { + return util$4.locStart(nodeA) === util$4.locStart(nodeB); +} + +// Hack to differentiate between the following two which have the same ast +// declare function f(a): void; +// var f: (a) => void; +function isTypeAnnotationAFunction(node) { + return ( + node.type === "TypeAnnotation" && + node.typeAnnotation.type === "FunctionTypeAnnotation" && + !node.static && + !sameLocStart(node, node.typeAnnotation) + ); +} + +function isNodeStartingWithDeclare(node, options) { + if (!(options.parser === "flow" || options.parser === "typescript")) { + return false; + } + return ( + options.originalText.slice(0, util$4.locStart(node)).match(/declare\s*$/) || + options.originalText + .slice(node.range[0], node.range[1]) + .startsWith("declare ") + ); +} + +function shouldHugType(node) { + if (node.type === "ObjectTypeAnnotation") { + return true; + } + + if (node.type === "UnionTypeAnnotation" || node.type === "TSUnionType") { + const count = node.types.filter( + n => + n.type === "VoidTypeAnnotation" || + n.type === "TSVoidKeyword" || + n.type === "NullLiteralTypeAnnotation" || + (n.type === "Literal" && n.value === null) + ).length; + + if (node.types.length - 1 === count) { + return true; + } + } + return false; +} + +function shouldHugArguments(fun) { + return ( + fun && + fun.params && + fun.params.length === 1 && + !fun.params[0].comments && + (fun.params[0].type === "ObjectPattern" || + (fun.params[0].type === "Identifier" && + fun.params[0].typeAnnotation && + fun.params[0].typeAnnotation.type === "TypeAnnotation" && + shouldHugType(fun.params[0].typeAnnotation.typeAnnotation)) || + (fun.params[0].type === "FunctionTypeParam" && + shouldHugType(fun.params[0].typeAnnotation))) && + !fun.rest + ); +} + +function templateLiteralHasNewLines(template) { + return template.quasis.some(quasi => quasi.value.raw.includes("\n")); +} + +function isTemplateOnItsOwnLine(n, text) { + return ( + ((n.type === "TemplateLiteral" && templateLiteralHasNewLines(n)) || + (n.type === "TaggedTemplateExpression" && + templateLiteralHasNewLines(n.quasi))) && + !util$4.hasNewline(text, util$4.locStart(n), { backwards: true }) + ); +} + +function printArrayItems(path, options, printPath, print) { + const printedElements = []; + let separatorParts = []; + + path.each(childPath => { + printedElements.push(concat$2(separatorParts)); + printedElements.push(group$1(print(childPath))); + + separatorParts = [",", line$1]; + if ( + childPath.getValue() && + util$4.isNextLineEmpty(options.originalText, childPath.getValue()) + ) { + separatorParts.push(softline$1); + } + }, printPath); + + return concat$2(printedElements); +} + +function hasDanglingComments(node) { + return ( + node.comments && + node.comments.some(comment => !comment.leading && !comment.trailing) + ); +} + +function isLiteral(node) { + return ( + node.type === "BooleanLiteral" || + node.type === "DirectiveLiteral" || + node.type === "Literal" || + node.type === "NullLiteral" || + node.type === "NumericLiteral" || + node.type === "RegExpLiteral" || + node.type === "StringLiteral" || + node.type === "TemplateLiteral" || + node.type === "TSTypeLiteral" || + node.type === "JSXText" + ); +} + +function isStringLiteral(node) { + return ( + node.type === "StringLiteral" || + (node.type === "Literal" && typeof node.value === "string") + ); +} + +function removeLines(doc) { + // Force this doc into flat mode by statically converting all + // lines into spaces (or soft lines into nothing). Hard lines + // should still output because there's too great of a chance + // of breaking existing assumptions otherwise. + return docUtils.mapDoc(doc, d => { + if (d.type === "line" && !d.hard) { + return d.soft ? "" : " "; + } else if (d.type === "if-break") { + return d.flatContents || ""; + } + return d; + }); +} + +function printAstToDoc$1(ast, options, addAlignmentSize) { + addAlignmentSize = addAlignmentSize || 0; + + function printGenerically(path, args) { + const node = path.getValue(); + const parent = path.getParentNode(0); + // We let JSXElement print its comments itself because it adds () around + // UnionTypeAnnotation has to align the child without the comments + if ( + (node && node.type === "JSXElement") || + (parent && + (parent.type === "UnionTypeAnnotation" || + parent.type === "TSUnionType")) + ) { + return genericPrint(path, options, printGenerically, args); + } + + return comments$3.printComments( + path, + p => genericPrint(p, options, printGenerically, args), + options, + args && args.needsSemi + ); + } + + let doc = printGenerically(new FastPath(ast)); + if (addAlignmentSize > 0) { + // Add a hardline to make the indents take effect + // It should be removed in index.js format() + doc = addAlignmentToDoc$1( + removeLines(concat$2([hardline$2, doc])), + addAlignmentSize, + options.tabWidth + ); + } + docUtils.propagateBreaks(doc); + return doc; +} + +var printer = { printAstToDoc: printAstToDoc$1 }; + +const docBuilders$4 = docBuilders$1; +const concat$3 = docBuilders$4.concat; +const fill$2 = docBuilders$4.fill; + +const MODE_BREAK = 1; +const MODE_FLAT = 2; + +function rootIndent() { + return { + indent: 0, + align: { + spaces: 0, + tabs: 0 + } + }; +} + +function makeIndent(ind) { + return { + indent: ind.indent + 1, + align: ind.align + }; +} + +function makeAlign(ind, n) { + if (n === -Infinity) { + return { + indent: 0, + align: { + spaces: 0, + tabs: 0 + } + }; + } + + return { + indent: ind.indent, + align: { + spaces: ind.align.spaces + n, + tabs: ind.align.tabs + (n ? 1 : 0) + } + }; +} + +function fits(next, restCommands, width, mustBeFlat) { + let restIdx = restCommands.length; + const cmds = [next]; + while (width >= 0) { + if (cmds.length === 0) { + if (restIdx === 0) { + return true; + } else { + cmds.push(restCommands[restIdx - 1]); + + restIdx--; + + continue; + } + } + + const x = cmds.pop(); + const ind = x[0]; + const mode = x[1]; + const doc = x[2]; + + if (typeof doc === "string") { + width -= doc.length; + } else { + switch (doc.type) { + case "concat": + for (let i = doc.parts.length - 1; i >= 0; i--) { + cmds.push([ind, mode, doc.parts[i]]); + } + + break; + case "indent": + cmds.push([makeIndent(ind), mode, doc.contents]); + + break; + case "align": + cmds.push([makeAlign(ind, doc.n), mode, doc.contents]); + + break; + case "group": + if (mustBeFlat && doc.break) { + return false; + } + cmds.push([ind, doc.break ? MODE_BREAK : mode, doc.contents]); + + break; + case "fill": + for (let i = doc.parts.length - 1; i >= 0; i--) { + cmds.push([ind, mode, doc.parts[i]]); + } + + break; + case "if-break": + if (mode === MODE_BREAK) { + if (doc.breakContents) { + cmds.push([ind, mode, doc.breakContents]); + } + } + if (mode === MODE_FLAT) { + if (doc.flatContents) { + cmds.push([ind, mode, doc.flatContents]); + } + } + + break; + case "line": + switch (mode) { + // fallthrough + case MODE_FLAT: + if (!doc.hard) { + if (!doc.soft) { + width -= 1; + } + + break; + } + return true; + + case MODE_BREAK: + return true; + } + break; + } + } + } + return false; +} + +function printDocToString$1(doc, options) { + const width = options.printWidth; + const newLine = options.newLine || "\n"; + let pos = 0; + // cmds is basically a stack. We've turned a recursive call into a + // while loop which is much faster. The while loop below adds new + // cmds to the array instead of recursively calling `print`. + const cmds = [[rootIndent(), MODE_BREAK, doc]]; + const out = []; + let shouldRemeasure = false; + let lineSuffix = []; + + while (cmds.length !== 0) { + const x = cmds.pop(); + const ind = x[0]; + const mode = x[1]; + const doc = x[2]; + + if (typeof doc === "string") { + out.push(doc); + + pos += doc.length; + } else { + switch (doc.type) { + case "concat": + for (let i = doc.parts.length - 1; i >= 0; i--) { + cmds.push([ind, mode, doc.parts[i]]); + } + + break; + case "indent": + cmds.push([makeIndent(ind), mode, doc.contents]); + + break; + case "align": + cmds.push([makeAlign(ind, doc.n), mode, doc.contents]); + + break; + case "group": + switch (mode) { + case MODE_FLAT: + if (!shouldRemeasure) { + cmds.push([ + ind, + doc.break ? MODE_BREAK : MODE_FLAT, + doc.contents + ]); + + break; + } + // fallthrough + + + case MODE_BREAK: { + shouldRemeasure = false; + + const next = [ind, MODE_FLAT, doc.contents]; + const rem = width - pos; + + if (!doc.break && fits(next, cmds, rem)) { + cmds.push(next); + } else { + // Expanded states are a rare case where a document + // can manually provide multiple representations of + // itself. It provides an array of documents + // going from the least expanded (most flattened) + // representation first to the most expanded. If a + // group has these, we need to manually go through + // these states and find the first one that fits. + if (doc.expandedStates) { + const mostExpanded = + doc.expandedStates[doc.expandedStates.length - 1]; + + if (doc.break) { + cmds.push([ind, MODE_BREAK, mostExpanded]); + + break; + } else { + for (let i = 1; i < doc.expandedStates.length + 1; i++) { + if (i >= doc.expandedStates.length) { + cmds.push([ind, MODE_BREAK, mostExpanded]); + + break; + } else { + const state = doc.expandedStates[i]; + const cmd = [ind, MODE_FLAT, state]; + + if (fits(cmd, cmds, rem)) { + cmds.push(cmd); + + break; + } + } + } + } + } else { + cmds.push([ind, MODE_BREAK, doc.contents]); + } + } + + break; + } + } + break; + // Fills each line with as much code as possible before moving to a new + // line with the same indentation. + // + // Expects doc.parts to be an array of alternating content and + // whitespace. The whitespace contains the linebreaks. + // + // For example: + // ["I", line, "love", line, "monkeys"] + // or + // [{ type: group, ... }, softline, { type: group, ... }] + // + // It uses this parts structure to handle three main layout cases: + // * The first two content items fit on the same line without + // breaking + // -> output the first content item and the whitespace "flat". + // * Only the first content item fits on the line without breaking + // -> output the first content item "flat" and the whitespace with + // "break". + // * Neither content item fits on the line without breaking + // -> output the first content item and the whitespace with "break". + case "fill": { + const rem = width - pos; + + const parts = doc.parts; + if (parts.length === 0) { + break; + } + + const content = parts[0]; + const contentFlatCmd = [ind, MODE_FLAT, content]; + const contentBreakCmd = [ind, MODE_BREAK, content]; + const contentFits = fits(contentFlatCmd, [], width - rem, true); + + if (parts.length === 1) { + if (contentFits) { + cmds.push(contentFlatCmd); + } else { + cmds.push(contentBreakCmd); + } + break; + } + + const whitespace = parts[1]; + const whitespaceFlatCmd = [ind, MODE_FLAT, whitespace]; + const whitespaceBreakCmd = [ind, MODE_BREAK, whitespace]; + + if (parts.length === 2) { + if (contentFits) { + cmds.push(whitespaceFlatCmd); + cmds.push(contentFlatCmd); + } else { + cmds.push(whitespaceBreakCmd); + cmds.push(contentBreakCmd); + } + break; + } + + const remaining = parts.slice(2); + const remainingCmd = [ind, mode, fill$2(remaining)]; + + const secondContent = parts[2]; + const firstAndSecondContentFlatCmd = [ + ind, + MODE_FLAT, + concat$3([content, whitespace, secondContent]) + ]; + const firstAndSecondContentFits = fits( + firstAndSecondContentFlatCmd, + [], + rem, + true + ); + + if (firstAndSecondContentFits) { + cmds.push(remainingCmd); + cmds.push(whitespaceFlatCmd); + cmds.push(contentFlatCmd); + } else if (contentFits) { + cmds.push(remainingCmd); + cmds.push(whitespaceBreakCmd); + cmds.push(contentFlatCmd); + } else { + cmds.push(remainingCmd); + cmds.push(whitespaceBreakCmd); + cmds.push(contentBreakCmd); + } + break; + } + case "if-break": + if (mode === MODE_BREAK) { + if (doc.breakContents) { + cmds.push([ind, mode, doc.breakContents]); + } + } + if (mode === MODE_FLAT) { + if (doc.flatContents) { + cmds.push([ind, mode, doc.flatContents]); + } + } + + break; + case "line-suffix": + lineSuffix.push([ind, mode, doc.contents]); + break; + case "line-suffix-boundary": + if (lineSuffix.length > 0) { + cmds.push([ind, mode, { type: "line", hard: true }]); + } + break; + case "line": + switch (mode) { + case MODE_FLAT: + if (!doc.hard) { + if (!doc.soft) { + out.push(" "); + + pos += 1; + } + + break; + } else { + // This line was forced into the output even if we + // were in flattened mode, so we need to tell the next + // group that no matter what, it needs to remeasure + // because the previous measurement didn't accurately + // capture the entire expression (this is necessary + // for nested groups) + shouldRemeasure = true; + } + // fallthrough + + + case MODE_BREAK: + if (lineSuffix.length) { + cmds.push([ind, mode, doc]); + [].push.apply(cmds, lineSuffix.reverse()); + lineSuffix = []; + break; + } + + if (doc.literal) { + out.push(newLine); + pos = 0; + } else { + if (out.length > 0) { + // Trim whitespace at the end of line + while ( + out.length > 0 && + out[out.length - 1].match(/^[^\S\n]*$/) + ) { + out.pop(); + } + + if (out.length) { + out[out.length - 1] = out[out.length - 1].replace( + /[^\S\n]*$/, + "" + ); + } + } + + const length = ind.indent * options.tabWidth + ind.align.spaces; + const indentString = options.useTabs + ? "\t".repeat(ind.indent + ind.align.tabs) + : " ".repeat(length); + out.push(newLine + indentString); + pos = length; + } + break; + } + break; + default: + } + } + } + return out.join(""); +} + +var docPrinter = { printDocToString: printDocToString$1 }; + +var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; + +var index$6 = function (str) { + if (typeof str !== 'string') { + throw new TypeError('Expected a string'); + } + + return str.replace(matchOperatorsRe, '\\$&'); +}; + +var index$8 = createCommonjsModule(function (module) { +'use strict'; + +function assembleStyles () { + var styles = { + modifiers: { + reset: [0, 0], + bold: [1, 22], // 21 isn't widely supported and 22 does the same thing + dim: [2, 22], + italic: [3, 23], + underline: [4, 24], + inverse: [7, 27], + hidden: [8, 28], + strikethrough: [9, 29] + }, + colors: { + black: [30, 39], + red: [31, 39], + green: [32, 39], + yellow: [33, 39], + blue: [34, 39], + magenta: [35, 39], + cyan: [36, 39], + white: [37, 39], + gray: [90, 39] + }, + bgColors: { + bgBlack: [40, 49], + bgRed: [41, 49], + bgGreen: [42, 49], + bgYellow: [43, 49], + bgBlue: [44, 49], + bgMagenta: [45, 49], + bgCyan: [46, 49], + bgWhite: [47, 49] + } + }; + + // fix humans + styles.colors.grey = styles.colors.gray; + + Object.keys(styles).forEach(function (groupName) { + var group = styles[groupName]; + + Object.keys(group).forEach(function (styleName) { + var style = group[styleName]; + + styles[styleName] = group[styleName] = { + open: '\u001b[' + style[0] + 'm', + close: '\u001b[' + style[1] + 'm' + }; + }); + + Object.defineProperty(styles, groupName, { + value: group, + enumerable: false + }); + }); + + return styles; +} + +Object.defineProperty(module, 'exports', { + enumerable: true, + get: assembleStyles +}); +}); + +var index$12 = function () { + return /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-PRZcf-nqry=><]/g; +}; + +var ansiRegex = index$12(); + +var index$10 = function (str) { + return typeof str === 'string' ? str.replace(ansiRegex, '') : str; +}; + +var ansiRegex$1 = index$12; +var re = new RegExp(ansiRegex$1().source); // remove the `g` flag +var index$14 = re.test.bind(re); + +var argv = process.argv; + +var terminator = argv.indexOf('--'); +var hasFlag = function (flag) { + flag = '--' + flag; + var pos = argv.indexOf(flag); + return pos !== -1 && (terminator !== -1 ? pos < terminator : true); +}; + +var index$16 = (function () { + if ('FORCE_COLOR' in process.env) { + return true; + } + + if (hasFlag('no-color') || + hasFlag('no-colors') || + hasFlag('color=false')) { + return false; + } + + if (hasFlag('color') || + hasFlag('colors') || + hasFlag('color=true') || + hasFlag('color=always')) { + return true; + } + + if (process.stdout && !process.stdout.isTTY) { + return false; + } + + if (process.platform === 'win32') { + return true; + } + + if ('COLORTERM' in process.env) { + return true; + } + + if (process.env.TERM === 'dumb') { + return false; + } + + if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(process.env.TERM)) { + return true; + } + + return false; +})(); + +var escapeStringRegexp = index$6; +var ansiStyles = index$8; +var stripAnsi = index$10; +var hasAnsi = index$14; +var supportsColor = index$16; +var defineProps = Object.defineProperties; +var isSimpleWindowsTerm = process.platform === 'win32' && !/^xterm/i.test(process.env.TERM); + +function Chalk(options) { + // detect mode if not set manually + this.enabled = !options || options.enabled === undefined ? supportsColor : options.enabled; +} + +// use bright blue on Windows as the normal blue color is illegible +if (isSimpleWindowsTerm) { + ansiStyles.blue.open = '\u001b[94m'; +} + +var styles = (function () { + var ret = {}; + + Object.keys(ansiStyles).forEach(function (key) { + ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g'); + + ret[key] = { + get: function () { + return build.call(this, this._styles.concat(key)); + } + }; + }); + + return ret; +})(); + +var proto = defineProps(function chalk() {}, styles); + +function build(_styles) { + var builder = function () { + return applyStyle.apply(builder, arguments); + }; + + builder._styles = _styles; + builder.enabled = this.enabled; + // __proto__ is used because we must return a function, but there is + // no way to create a function with a different prototype. + /* eslint-disable no-proto */ + builder.__proto__ = proto; + + return builder; +} + +function applyStyle() { + // support varags, but simply cast to string in case there's only one arg + var args = arguments; + var argsLen = args.length; + var str = argsLen !== 0 && String(arguments[0]); + + if (argsLen > 1) { + // don't slice `arguments`, it prevents v8 optimizations + for (var a = 1; a < argsLen; a++) { + str += ' ' + args[a]; + } + } + + if (!this.enabled || !str) { + return str; + } + + var nestedStyles = this._styles; + var i = nestedStyles.length; + + // Turns out that on Windows dimmed gray text becomes invisible in cmd.exe, + // see https://github.com/chalk/chalk/issues/58 + // If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop. + var originalDim = ansiStyles.dim.open; + if (isSimpleWindowsTerm && (nestedStyles.indexOf('gray') !== -1 || nestedStyles.indexOf('grey') !== -1)) { + ansiStyles.dim.open = ''; + } + + while (i--) { + var code = ansiStyles[nestedStyles[i]]; + + // Replace any instances already present with a re-opening code + // otherwise only the part of the string until said closing code + // will be colored, and the rest will simply be 'plain'. + str = code.open + str.replace(code.closeRe, code.open) + code.close; + } + + // Reset the original 'dim' if we changed it to work around the Windows dimmed gray issue. + ansiStyles.dim.open = originalDim; + + return str; +} + +function init() { + var ret = {}; + + Object.keys(styles).forEach(function (name) { + ret[name] = { + get: function () { + return build.call(this, [name]); + } + }; + }); + + return ret; +} + +defineProps(Chalk.prototype, init()); + +var index$4 = new Chalk(); +var styles_1 = ansiStyles; +var hasColor = hasAnsi; +var stripColor = stripAnsi; +var supportsColor_1 = supportsColor; + +index$4.styles = styles_1; +index$4.hasColor = hasColor; +index$4.stripColor = stripColor; +index$4.supportsColor = supportsColor_1; + +var index$24 = { + "aliceblue": [240, 248, 255], + "antiquewhite": [250, 235, 215], + "aqua": [0, 255, 255], + "aquamarine": [127, 255, 212], + "azure": [240, 255, 255], + "beige": [245, 245, 220], + "bisque": [255, 228, 196], + "black": [0, 0, 0], + "blanchedalmond": [255, 235, 205], + "blue": [0, 0, 255], + "blueviolet": [138, 43, 226], + "brown": [165, 42, 42], + "burlywood": [222, 184, 135], + "cadetblue": [95, 158, 160], + "chartreuse": [127, 255, 0], + "chocolate": [210, 105, 30], + "coral": [255, 127, 80], + "cornflowerblue": [100, 149, 237], + "cornsilk": [255, 248, 220], + "crimson": [220, 20, 60], + "cyan": [0, 255, 255], + "darkblue": [0, 0, 139], + "darkcyan": [0, 139, 139], + "darkgoldenrod": [184, 134, 11], + "darkgray": [169, 169, 169], + "darkgreen": [0, 100, 0], + "darkgrey": [169, 169, 169], + "darkkhaki": [189, 183, 107], + "darkmagenta": [139, 0, 139], + "darkolivegreen": [85, 107, 47], + "darkorange": [255, 140, 0], + "darkorchid": [153, 50, 204], + "darkred": [139, 0, 0], + "darksalmon": [233, 150, 122], + "darkseagreen": [143, 188, 143], + "darkslateblue": [72, 61, 139], + "darkslategray": [47, 79, 79], + "darkslategrey": [47, 79, 79], + "darkturquoise": [0, 206, 209], + "darkviolet": [148, 0, 211], + "deeppink": [255, 20, 147], + "deepskyblue": [0, 191, 255], + "dimgray": [105, 105, 105], + "dimgrey": [105, 105, 105], + "dodgerblue": [30, 144, 255], + "firebrick": [178, 34, 34], + "floralwhite": [255, 250, 240], + "forestgreen": [34, 139, 34], + "fuchsia": [255, 0, 255], + "gainsboro": [220, 220, 220], + "ghostwhite": [248, 248, 255], + "gold": [255, 215, 0], + "goldenrod": [218, 165, 32], + "gray": [128, 128, 128], + "green": [0, 128, 0], + "greenyellow": [173, 255, 47], + "grey": [128, 128, 128], + "honeydew": [240, 255, 240], + "hotpink": [255, 105, 180], + "indianred": [205, 92, 92], + "indigo": [75, 0, 130], + "ivory": [255, 255, 240], + "khaki": [240, 230, 140], + "lavender": [230, 230, 250], + "lavenderblush": [255, 240, 245], + "lawngreen": [124, 252, 0], + "lemonchiffon": [255, 250, 205], + "lightblue": [173, 216, 230], + "lightcoral": [240, 128, 128], + "lightcyan": [224, 255, 255], + "lightgoldenrodyellow": [250, 250, 210], + "lightgray": [211, 211, 211], + "lightgreen": [144, 238, 144], + "lightgrey": [211, 211, 211], + "lightpink": [255, 182, 193], + "lightsalmon": [255, 160, 122], + "lightseagreen": [32, 178, 170], + "lightskyblue": [135, 206, 250], + "lightslategray": [119, 136, 153], + "lightslategrey": [119, 136, 153], + "lightsteelblue": [176, 196, 222], + "lightyellow": [255, 255, 224], + "lime": [0, 255, 0], + "limegreen": [50, 205, 50], + "linen": [250, 240, 230], + "magenta": [255, 0, 255], + "maroon": [128, 0, 0], + "mediumaquamarine": [102, 205, 170], + "mediumblue": [0, 0, 205], + "mediumorchid": [186, 85, 211], + "mediumpurple": [147, 112, 219], + "mediumseagreen": [60, 179, 113], + "mediumslateblue": [123, 104, 238], + "mediumspringgreen": [0, 250, 154], + "mediumturquoise": [72, 209, 204], + "mediumvioletred": [199, 21, 133], + "midnightblue": [25, 25, 112], + "mintcream": [245, 255, 250], + "mistyrose": [255, 228, 225], + "moccasin": [255, 228, 181], + "navajowhite": [255, 222, 173], + "navy": [0, 0, 128], + "oldlace": [253, 245, 230], + "olive": [128, 128, 0], + "olivedrab": [107, 142, 35], + "orange": [255, 165, 0], + "orangered": [255, 69, 0], + "orchid": [218, 112, 214], + "palegoldenrod": [238, 232, 170], + "palegreen": [152, 251, 152], + "paleturquoise": [175, 238, 238], + "palevioletred": [219, 112, 147], + "papayawhip": [255, 239, 213], + "peachpuff": [255, 218, 185], + "peru": [205, 133, 63], + "pink": [255, 192, 203], + "plum": [221, 160, 221], + "powderblue": [176, 224, 230], + "purple": [128, 0, 128], + "rebeccapurple": [102, 51, 153], + "red": [255, 0, 0], + "rosybrown": [188, 143, 143], + "royalblue": [65, 105, 225], + "saddlebrown": [139, 69, 19], + "salmon": [250, 128, 114], + "sandybrown": [244, 164, 96], + "seagreen": [46, 139, 87], + "seashell": [255, 245, 238], + "sienna": [160, 82, 45], + "silver": [192, 192, 192], + "skyblue": [135, 206, 235], + "slateblue": [106, 90, 205], + "slategray": [112, 128, 144], + "slategrey": [112, 128, 144], + "snow": [255, 250, 250], + "springgreen": [0, 255, 127], + "steelblue": [70, 130, 180], + "tan": [210, 180, 140], + "teal": [0, 128, 128], + "thistle": [216, 191, 216], + "tomato": [255, 99, 71], + "turquoise": [64, 224, 208], + "violet": [238, 130, 238], + "wheat": [245, 222, 179], + "white": [255, 255, 255], + "whitesmoke": [245, 245, 245], + "yellow": [255, 255, 0], + "yellowgreen": [154, 205, 50] +}; + +var conversions$1 = createCommonjsModule(function (module) { +/* MIT license */ +var cssKeywords = index$24; + +// NOTE: conversions should only return primitive values (i.e. arrays, or +// values that give correct `typeof` results). +// do not use box values types (i.e. Number(), String(), etc.) + +var reverseKeywords = {}; +for (var key in cssKeywords) { + if (cssKeywords.hasOwnProperty(key)) { + reverseKeywords[cssKeywords[key]] = key; + } +} + +var convert = module.exports = { + rgb: {channels: 3, labels: 'rgb'}, + hsl: {channels: 3, labels: 'hsl'}, + hsv: {channels: 3, labels: 'hsv'}, + hwb: {channels: 3, labels: 'hwb'}, + cmyk: {channels: 4, labels: 'cmyk'}, + xyz: {channels: 3, labels: 'xyz'}, + lab: {channels: 3, labels: 'lab'}, + lch: {channels: 3, labels: 'lch'}, + hex: {channels: 1, labels: ['hex']}, + keyword: {channels: 1, labels: ['keyword']}, + ansi16: {channels: 1, labels: ['ansi16']}, + ansi256: {channels: 1, labels: ['ansi256']}, + hcg: {channels: 3, labels: ['h', 'c', 'g']}, + apple: {channels: 3, labels: ['r16', 'g16', 'b16']}, + gray: {channels: 1, labels: ['gray']} +}; + +// hide .channels and .labels properties +for (var model in convert) { + if (convert.hasOwnProperty(model)) { + if (!('channels' in convert[model])) { + throw new Error('missing channels property: ' + model); + } + + if (!('labels' in convert[model])) { + throw new Error('missing channel labels property: ' + model); + } + + if (convert[model].labels.length !== convert[model].channels) { + throw new Error('channel and label counts mismatch: ' + model); + } + + var channels = convert[model].channels; + var labels = convert[model].labels; + delete convert[model].channels; + delete convert[model].labels; + Object.defineProperty(convert[model], 'channels', {value: channels}); + Object.defineProperty(convert[model], 'labels', {value: labels}); + } +} + +convert.rgb.hsl = function (rgb) { + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + var min = Math.min(r, g, b); + var max = Math.max(r, g, b); + var delta = max - min; + var h; + var s; + var l; + + if (max === min) { + h = 0; + } else if (r === max) { + h = (g - b) / delta; + } else if (g === max) { + h = 2 + (b - r) / delta; + } else if (b === max) { + h = 4 + (r - g) / delta; + } + + h = Math.min(h * 60, 360); + + if (h < 0) { + h += 360; + } + + l = (min + max) / 2; + + if (max === min) { + s = 0; + } else if (l <= 0.5) { + s = delta / (max + min); + } else { + s = delta / (2 - max - min); + } + + return [h, s * 100, l * 100]; +}; + +convert.rgb.hsv = function (rgb) { + var r = rgb[0]; + var g = rgb[1]; + var b = rgb[2]; + var min = Math.min(r, g, b); + var max = Math.max(r, g, b); + var delta = max - min; + var h; + var s; + var v; + + if (max === 0) { + s = 0; + } else { + s = (delta / max * 1000) / 10; + } + + if (max === min) { + h = 0; + } else if (r === max) { + h = (g - b) / delta; + } else if (g === max) { + h = 2 + (b - r) / delta; + } else if (b === max) { + h = 4 + (r - g) / delta; + } + + h = Math.min(h * 60, 360); + + if (h < 0) { + h += 360; + } + + v = ((max / 255) * 1000) / 10; + + return [h, s, v]; +}; + +convert.rgb.hwb = function (rgb) { + var r = rgb[0]; + var g = rgb[1]; + var b = rgb[2]; + var h = convert.rgb.hsl(rgb)[0]; + var w = 1 / 255 * Math.min(r, Math.min(g, b)); + + b = 1 - 1 / 255 * Math.max(r, Math.max(g, b)); + + return [h, w * 100, b * 100]; +}; + +convert.rgb.cmyk = function (rgb) { + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + var c; + var m; + var y; + var k; + + k = Math.min(1 - r, 1 - g, 1 - b); + c = (1 - r - k) / (1 - k) || 0; + m = (1 - g - k) / (1 - k) || 0; + y = (1 - b - k) / (1 - k) || 0; + + return [c * 100, m * 100, y * 100, k * 100]; +}; + +/** + * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance + * */ +function comparativeDistance(x, y) { + return ( + Math.pow(x[0] - y[0], 2) + + Math.pow(x[1] - y[1], 2) + + Math.pow(x[2] - y[2], 2) + ); +} + +convert.rgb.keyword = function (rgb) { + var reversed = reverseKeywords[rgb]; + if (reversed) { + return reversed; + } + + var currentClosestDistance = Infinity; + var currentClosestKeyword; + + for (var keyword in cssKeywords) { + if (cssKeywords.hasOwnProperty(keyword)) { + var value = cssKeywords[keyword]; + + // Compute comparative distance + var distance = comparativeDistance(rgb, value); + + // Check if its less, if so set as closest + if (distance < currentClosestDistance) { + currentClosestDistance = distance; + currentClosestKeyword = keyword; + } + } + } + + return currentClosestKeyword; +}; + +convert.keyword.rgb = function (keyword) { + return cssKeywords[keyword]; +}; + +convert.rgb.xyz = function (rgb) { + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + + // assume sRGB + r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92); + g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92); + b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92); + + var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805); + var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722); + var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505); + + return [x * 100, y * 100, z * 100]; +}; + +convert.rgb.lab = function (rgb) { + var xyz = convert.rgb.xyz(rgb); + var x = xyz[0]; + var y = xyz[1]; + var z = xyz[2]; + var l; + var a; + var b; + + x /= 95.047; + y /= 100; + z /= 108.883; + + x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116); + y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116); + z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116); + + l = (116 * y) - 16; + a = 500 * (x - y); + b = 200 * (y - z); + + return [l, a, b]; +}; + +convert.hsl.rgb = function (hsl) { + var h = hsl[0] / 360; + var s = hsl[1] / 100; + var l = hsl[2] / 100; + var t1; + var t2; + var t3; + var rgb; + var val; + + if (s === 0) { + val = l * 255; + return [val, val, val]; + } + + if (l < 0.5) { + t2 = l * (1 + s); + } else { + t2 = l + s - l * s; + } + + t1 = 2 * l - t2; + + rgb = [0, 0, 0]; + for (var i = 0; i < 3; i++) { + t3 = h + 1 / 3 * -(i - 1); + if (t3 < 0) { + t3++; + } + if (t3 > 1) { + t3--; + } + + if (6 * t3 < 1) { + val = t1 + (t2 - t1) * 6 * t3; + } else if (2 * t3 < 1) { + val = t2; + } else if (3 * t3 < 2) { + val = t1 + (t2 - t1) * (2 / 3 - t3) * 6; + } else { + val = t1; + } + + rgb[i] = val * 255; + } + + return rgb; +}; + +convert.hsl.hsv = function (hsl) { + var h = hsl[0]; + var s = hsl[1] / 100; + var l = hsl[2] / 100; + var smin = s; + var lmin = Math.max(l, 0.01); + var sv; + var v; + + l *= 2; + s *= (l <= 1) ? l : 2 - l; + smin *= lmin <= 1 ? lmin : 2 - lmin; + v = (l + s) / 2; + sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s); + + return [h, sv * 100, v * 100]; +}; + +convert.hsv.rgb = function (hsv) { + var h = hsv[0] / 60; + var s = hsv[1] / 100; + var v = hsv[2] / 100; + var hi = Math.floor(h) % 6; + + var f = h - Math.floor(h); + var p = 255 * v * (1 - s); + var q = 255 * v * (1 - (s * f)); + var t = 255 * v * (1 - (s * (1 - f))); + v *= 255; + + switch (hi) { + case 0: + return [v, t, p]; + case 1: + return [q, v, p]; + case 2: + return [p, v, t]; + case 3: + return [p, q, v]; + case 4: + return [t, p, v]; + case 5: + return [v, p, q]; + } +}; + +convert.hsv.hsl = function (hsv) { + var h = hsv[0]; + var s = hsv[1] / 100; + var v = hsv[2] / 100; + var vmin = Math.max(v, 0.01); + var lmin; + var sl; + var l; + + l = (2 - s) * v; + lmin = (2 - s) * vmin; + sl = s * vmin; + sl /= (lmin <= 1) ? lmin : 2 - lmin; + sl = sl || 0; + l /= 2; + + return [h, sl * 100, l * 100]; +}; + +// http://dev.w3.org/csswg/css-color/#hwb-to-rgb +convert.hwb.rgb = function (hwb) { + var h = hwb[0] / 360; + var wh = hwb[1] / 100; + var bl = hwb[2] / 100; + var ratio = wh + bl; + var i; + var v; + var f; + var n; + + // wh + bl cant be > 1 + if (ratio > 1) { + wh /= ratio; + bl /= ratio; + } + + i = Math.floor(6 * h); + v = 1 - bl; + f = 6 * h - i; + + if ((i & 0x01) !== 0) { + f = 1 - f; + } + + n = wh + f * (v - wh); // linear interpolation + + var r; + var g; + var b; + switch (i) { + default: + case 6: + case 0: r = v; g = n; b = wh; break; + case 1: r = n; g = v; b = wh; break; + case 2: r = wh; g = v; b = n; break; + case 3: r = wh; g = n; b = v; break; + case 4: r = n; g = wh; b = v; break; + case 5: r = v; g = wh; b = n; break; + } + + return [r * 255, g * 255, b * 255]; +}; + +convert.cmyk.rgb = function (cmyk) { + var c = cmyk[0] / 100; + var m = cmyk[1] / 100; + var y = cmyk[2] / 100; + var k = cmyk[3] / 100; + var r; + var g; + var b; + + r = 1 - Math.min(1, c * (1 - k) + k); + g = 1 - Math.min(1, m * (1 - k) + k); + b = 1 - Math.min(1, y * (1 - k) + k); + + return [r * 255, g * 255, b * 255]; +}; + +convert.xyz.rgb = function (xyz) { + var x = xyz[0] / 100; + var y = xyz[1] / 100; + var z = xyz[2] / 100; + var r; + var g; + var b; + + r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986); + g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415); + b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570); + + // assume sRGB + r = r > 0.0031308 + ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055) + : r * 12.92; + + g = g > 0.0031308 + ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055) + : g * 12.92; + + b = b > 0.0031308 + ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055) + : b * 12.92; + + r = Math.min(Math.max(0, r), 1); + g = Math.min(Math.max(0, g), 1); + b = Math.min(Math.max(0, b), 1); + + return [r * 255, g * 255, b * 255]; +}; + +convert.xyz.lab = function (xyz) { + var x = xyz[0]; + var y = xyz[1]; + var z = xyz[2]; + var l; + var a; + var b; + + x /= 95.047; + y /= 100; + z /= 108.883; + + x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116); + y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116); + z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116); + + l = (116 * y) - 16; + a = 500 * (x - y); + b = 200 * (y - z); + + return [l, a, b]; +}; + +convert.lab.xyz = function (lab) { + var l = lab[0]; + var a = lab[1]; + var b = lab[2]; + var x; + var y; + var z; + + y = (l + 16) / 116; + x = a / 500 + y; + z = y - b / 200; + + var y2 = Math.pow(y, 3); + var x2 = Math.pow(x, 3); + var z2 = Math.pow(z, 3); + y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787; + x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787; + z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787; + + x *= 95.047; + y *= 100; + z *= 108.883; + + return [x, y, z]; +}; + +convert.lab.lch = function (lab) { + var l = lab[0]; + var a = lab[1]; + var b = lab[2]; + var hr; + var h; + var c; + + hr = Math.atan2(b, a); + h = hr * 360 / 2 / Math.PI; + + if (h < 0) { + h += 360; + } + + c = Math.sqrt(a * a + b * b); + + return [l, c, h]; +}; + +convert.lch.lab = function (lch) { + var l = lch[0]; + var c = lch[1]; + var h = lch[2]; + var a; + var b; + var hr; + + hr = h / 360 * 2 * Math.PI; + a = c * Math.cos(hr); + b = c * Math.sin(hr); + + return [l, a, b]; +}; + +convert.rgb.ansi16 = function (args) { + var r = args[0]; + var g = args[1]; + var b = args[2]; + var value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization + + value = Math.round(value / 50); + + if (value === 0) { + return 30; + } + + var ansi = 30 + + ((Math.round(b / 255) << 2) + | (Math.round(g / 255) << 1) + | Math.round(r / 255)); + + if (value === 2) { + ansi += 60; + } + + return ansi; +}; + +convert.hsv.ansi16 = function (args) { + // optimization here; we already know the value and don't need to get + // it converted for us. + return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]); +}; + +convert.rgb.ansi256 = function (args) { + var r = args[0]; + var g = args[1]; + var b = args[2]; + + // we use the extended greyscale palette here, with the exception of + // black and white. normal palette only has 4 greyscale shades. + if (r === g && g === b) { + if (r < 8) { + return 16; + } + + if (r > 248) { + return 231; + } + + return Math.round(((r - 8) / 247) * 24) + 232; + } + + var ansi = 16 + + (36 * Math.round(r / 255 * 5)) + + (6 * Math.round(g / 255 * 5)) + + Math.round(b / 255 * 5); + + return ansi; +}; + +convert.ansi16.rgb = function (args) { + var color = args % 10; + + // handle greyscale + if (color === 0 || color === 7) { + if (args > 50) { + color += 3.5; + } + + color = color / 10.5 * 255; + + return [color, color, color]; + } + + var mult = (~~(args > 50) + 1) * 0.5; + var r = ((color & 1) * mult) * 255; + var g = (((color >> 1) & 1) * mult) * 255; + var b = (((color >> 2) & 1) * mult) * 255; + + return [r, g, b]; +}; + +convert.ansi256.rgb = function (args) { + // handle greyscale + if (args >= 232) { + var c = (args - 232) * 10 + 8; + return [c, c, c]; + } + + args -= 16; + + var rem; + var r = Math.floor(args / 36) / 5 * 255; + var g = Math.floor((rem = args % 36) / 6) / 5 * 255; + var b = (rem % 6) / 5 * 255; + + return [r, g, b]; +}; + +convert.rgb.hex = function (args) { + var integer = ((Math.round(args[0]) & 0xFF) << 16) + + ((Math.round(args[1]) & 0xFF) << 8) + + (Math.round(args[2]) & 0xFF); + + var string = integer.toString(16).toUpperCase(); + return '000000'.substring(string.length) + string; +}; + +convert.hex.rgb = function (args) { + var match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i); + if (!match) { + return [0, 0, 0]; + } + + var colorString = match[0]; + + if (match[0].length === 3) { + colorString = colorString.split('').map(function (char) { + return char + char; + }).join(''); + } + + var integer = parseInt(colorString, 16); + var r = (integer >> 16) & 0xFF; + var g = (integer >> 8) & 0xFF; + var b = integer & 0xFF; + + return [r, g, b]; +}; + +convert.rgb.hcg = function (rgb) { + var r = rgb[0] / 255; + var g = rgb[1] / 255; + var b = rgb[2] / 255; + var max = Math.max(Math.max(r, g), b); + var min = Math.min(Math.min(r, g), b); + var chroma = (max - min); + var grayscale; + var hue; + + if (chroma < 1) { + grayscale = min / (1 - chroma); + } else { + grayscale = 0; + } + + if (chroma <= 0) { + hue = 0; + } else + if (max === r) { + hue = ((g - b) / chroma) % 6; + } else + if (max === g) { + hue = 2 + (b - r) / chroma; + } else { + hue = 4 + (r - g) / chroma + 4; + } + + hue /= 6; + hue %= 1; + + return [hue * 360, chroma * 100, grayscale * 100]; +}; + +convert.hsl.hcg = function (hsl) { + var s = hsl[1] / 100; + var l = hsl[2] / 100; + var c = 1; + var f = 0; + + if (l < 0.5) { + c = 2.0 * s * l; + } else { + c = 2.0 * s * (1.0 - l); + } + + if (c < 1.0) { + f = (l - 0.5 * c) / (1.0 - c); + } + + return [hsl[0], c * 100, f * 100]; +}; + +convert.hsv.hcg = function (hsv) { + var s = hsv[1] / 100; + var v = hsv[2] / 100; + + var c = s * v; + var f = 0; + + if (c < 1.0) { + f = (v - c) / (1 - c); + } + + return [hsv[0], c * 100, f * 100]; +}; + +convert.hcg.rgb = function (hcg) { + var h = hcg[0] / 360; + var c = hcg[1] / 100; + var g = hcg[2] / 100; + + if (c === 0.0) { + return [g * 255, g * 255, g * 255]; + } + + var pure = [0, 0, 0]; + var hi = (h % 1) * 6; + var v = hi % 1; + var w = 1 - v; + var mg = 0; + + switch (Math.floor(hi)) { + case 0: + pure[0] = 1; pure[1] = v; pure[2] = 0; break; + case 1: + pure[0] = w; pure[1] = 1; pure[2] = 0; break; + case 2: + pure[0] = 0; pure[1] = 1; pure[2] = v; break; + case 3: + pure[0] = 0; pure[1] = w; pure[2] = 1; break; + case 4: + pure[0] = v; pure[1] = 0; pure[2] = 1; break; + default: + pure[0] = 1; pure[1] = 0; pure[2] = w; + } + + mg = (1.0 - c) * g; + + return [ + (c * pure[0] + mg) * 255, + (c * pure[1] + mg) * 255, + (c * pure[2] + mg) * 255 + ]; +}; + +convert.hcg.hsv = function (hcg) { + var c = hcg[1] / 100; + var g = hcg[2] / 100; + + var v = c + g * (1.0 - c); + var f = 0; + + if (v > 0.0) { + f = c / v; + } + + return [hcg[0], f * 100, v * 100]; +}; + +convert.hcg.hsl = function (hcg) { + var c = hcg[1] / 100; + var g = hcg[2] / 100; + + var l = g * (1.0 - c) + 0.5 * c; + var s = 0; + + if (l > 0.0 && l < 0.5) { + s = c / (2 * l); + } else + if (l >= 0.5 && l < 1.0) { + s = c / (2 * (1 - l)); + } + + return [hcg[0], s * 100, l * 100]; +}; + +convert.hcg.hwb = function (hcg) { + var c = hcg[1] / 100; + var g = hcg[2] / 100; + var v = c + g * (1.0 - c); + return [hcg[0], (v - c) * 100, (1 - v) * 100]; +}; + +convert.hwb.hcg = function (hwb) { + var w = hwb[1] / 100; + var b = hwb[2] / 100; + var v = 1 - b; + var c = v - w; + var g = 0; + + if (c < 1) { + g = (v - c) / (1 - c); + } + + return [hwb[0], c * 100, g * 100]; +}; + +convert.apple.rgb = function (apple) { + return [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255]; +}; + +convert.rgb.apple = function (rgb) { + return [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535]; +}; + +convert.gray.rgb = function (args) { + return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255]; +}; + +convert.gray.hsl = convert.gray.hsv = function (args) { + return [0, 0, args[0]]; +}; + +convert.gray.hwb = function (gray) { + return [0, 100, gray[0]]; +}; + +convert.gray.cmyk = function (gray) { + return [0, 0, 0, gray[0]]; +}; + +convert.gray.lab = function (gray) { + return [gray[0], 0, 0]; +}; + +convert.gray.hex = function (gray) { + var val = Math.round(gray[0] / 100 * 255) & 0xFF; + var integer = (val << 16) + (val << 8) + val; + + var string = integer.toString(16).toUpperCase(); + return '000000'.substring(string.length) + string; +}; + +convert.rgb.gray = function (rgb) { + var val = (rgb[0] + rgb[1] + rgb[2]) / 3; + return [val / 255 * 100]; +}; +}); + +var conversions$3 = conversions$1; + +/* + this function routes a model to all other models. + + all functions that are routed have a property `.conversion` attached + to the returned synthetic function. This property is an array + of strings, each with the steps in between the 'from' and 'to' + color models (inclusive). + + conversions that are not possible simply are not included. +*/ + +// https://jsperf.com/object-keys-vs-for-in-with-closure/3 +var models$1 = Object.keys(conversions$3); + +function buildGraph() { + var graph = {}; + + for (var len = models$1.length, i = 0; i < len; i++) { + graph[models$1[i]] = { + // http://jsperf.com/1-vs-infinity + // micro-opt, but this is simple. + distance: -1, + parent: null + }; + } + + return graph; +} + +// https://en.wikipedia.org/wiki/Breadth-first_search +function deriveBFS(fromModel) { + var graph = buildGraph(); + var queue = [fromModel]; // unshift -> queue -> pop + + graph[fromModel].distance = 0; + + while (queue.length) { + var current = queue.pop(); + var adjacents = Object.keys(conversions$3[current]); + + for (var len = adjacents.length, i = 0; i < len; i++) { + var adjacent = adjacents[i]; + var node = graph[adjacent]; + + if (node.distance === -1) { + node.distance = graph[current].distance + 1; + node.parent = current; + queue.unshift(adjacent); + } + } + } + + return graph; +} + +function link(from, to) { + return function (args) { + return to(from(args)); + }; +} + +function wrapConversion(toModel, graph) { + var path = [graph[toModel].parent, toModel]; + var fn = conversions$3[graph[toModel].parent][toModel]; + + var cur = graph[toModel].parent; + while (graph[cur].parent) { + path.unshift(graph[cur].parent); + fn = link(conversions$3[graph[cur].parent][cur], fn); + cur = graph[cur].parent; + } + + fn.conversion = path; + return fn; +} + +var route$1 = function (fromModel) { + var graph = deriveBFS(fromModel); + var conversion = {}; + + var models = Object.keys(graph); + for (var len = models.length, i = 0; i < len; i++) { + var toModel = models[i]; + var node = graph[toModel]; + + if (node.parent === null) { + // no possible conversion, or this node is the source model. + continue; + } + + conversion[toModel] = wrapConversion(toModel, graph); + } + + return conversion; +}; + +var conversions = conversions$1; +var route = route$1; + +var convert = {}; + +var models = Object.keys(conversions); + +function wrapRaw(fn) { + var wrappedFn = function (args) { + if (args === undefined || args === null) { + return args; + } + + if (arguments.length > 1) { + args = Array.prototype.slice.call(arguments); + } + + return fn(args); + }; + + // preserve .conversion property if there is one + if ('conversion' in fn) { + wrappedFn.conversion = fn.conversion; + } + + return wrappedFn; +} + +function wrapRounded(fn) { + var wrappedFn = function (args) { + if (args === undefined || args === null) { + return args; + } + + if (arguments.length > 1) { + args = Array.prototype.slice.call(arguments); + } + + var result = fn(args); + + // we're assuming the result is an array here. + // see notice in conversions.js; don't use box types + // in conversion functions. + if (typeof result === 'object') { + for (var len = result.length, i = 0; i < len; i++) { + result[i] = Math.round(result[i]); + } + } + + return result; + }; + + // preserve .conversion property if there is one + if ('conversion' in fn) { + wrappedFn.conversion = fn.conversion; + } + + return wrappedFn; +} + +models.forEach(function (fromModel) { + convert[fromModel] = {}; + + Object.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels}); + Object.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels}); + + var routes = route(fromModel); + var routeModels = Object.keys(routes); + + routeModels.forEach(function (toModel) { + var fn = routes[toModel]; + + convert[fromModel][toModel] = wrapRounded(fn); + convert[fromModel][toModel].raw = wrapRaw(fn); + }); +}); + +var index$22 = convert; + +var index$20 = createCommonjsModule(function (module) { +'use strict'; +const colorConvert = index$22; + +const wrapAnsi16 = (fn, offset) => function () { + const code = fn.apply(colorConvert, arguments); + return `\u001B[${code + offset}m`; +}; + +const wrapAnsi256 = (fn, offset) => function () { + const code = fn.apply(colorConvert, arguments); + return `\u001B[${38 + offset};5;${code}m`; +}; + +const wrapAnsi16m = (fn, offset) => function () { + const rgb = fn.apply(colorConvert, arguments); + return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`; +}; + +function assembleStyles() { + const styles = { + modifier: { + reset: [0, 0], + // 21 isn't widely supported and 22 does the same thing + bold: [1, 22], + dim: [2, 22], + italic: [3, 23], + underline: [4, 24], + inverse: [7, 27], + hidden: [8, 28], + strikethrough: [9, 29] + }, + color: { + black: [30, 39], + red: [31, 39], + green: [32, 39], + yellow: [33, 39], + blue: [34, 39], + magenta: [35, 39], + cyan: [36, 39], + white: [37, 39], + gray: [90, 39] + }, + bgColor: { + bgBlack: [40, 49], + bgRed: [41, 49], + bgGreen: [42, 49], + bgYellow: [43, 49], + bgBlue: [44, 49], + bgMagenta: [45, 49], + bgCyan: [46, 49], + bgWhite: [47, 49] + } + }; + + // fix humans + styles.color.grey = styles.color.gray; + + Object.keys(styles).forEach(groupName => { + const group = styles[groupName]; + + Object.keys(group).forEach(styleName => { + const style = group[styleName]; + + styles[styleName] = group[styleName] = { + open: `\u001B[${style[0]}m`, + close: `\u001B[${style[1]}m` + }; + }); + + Object.defineProperty(styles, groupName, { + value: group, + enumerable: false + }); + }); + + const rgb2rgb = (r, g, b) => [r, g, b]; + + styles.color.close = '\u001B[39m'; + styles.bgColor.close = '\u001B[49m'; + + styles.color.ansi = {}; + styles.color.ansi256 = {}; + styles.color.ansi16m = { + rgb: wrapAnsi16m(rgb2rgb, 0) + }; + + styles.bgColor.ansi = {}; + styles.bgColor.ansi256 = {}; + styles.bgColor.ansi16m = { + rgb: wrapAnsi16m(rgb2rgb, 10) + }; + + for (const key of Object.keys(colorConvert)) { + if (typeof colorConvert[key] !== 'object') { + continue; + } + + const suite = colorConvert[key]; + + if ('ansi16' in suite) { + styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0); + styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10); + } + + if ('ansi256' in suite) { + styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0); + styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10); + } + + if ('rgb' in suite) { + styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0); + styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10); + } + } + + return styles; +} + +Object.defineProperty(module, 'exports', { + enumerable: true, + get: assembleStyles +}); +}); + +const asymmetricMatcher = Symbol.for('jest.asymmetricMatcher'); /** + * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * + */const SPACE = ' ';class ArrayContaining extends Array {}class ObjectContaining extends Object {}const print$1 = (val, print, +indent, +opts, +colors) => +{ + const stringedValue = val.toString(); + + if (stringedValue === 'ArrayContaining') { + const array = ArrayContaining.from(val.sample); + return opts.spacing === SPACE ? + stringedValue + SPACE + print(array) : + print(array); + } + + if (stringedValue === 'ObjectContaining') { + const object = Object.assign(new ObjectContaining(), val.sample); + return opts.spacing === SPACE ? + stringedValue + SPACE + print(object) : + print(object); + } + + if (stringedValue === 'StringMatching') { + return stringedValue + SPACE + print(val.sample); + } + + if (stringedValue === 'StringContaining') { + return stringedValue + SPACE + print(val.sample); + } + + return val.toAsymmetricMatcher(); +}; + +const test = object => object && object.$$typeof === asymmetricMatcher; + +var AsymmetricMatcher = { print: print$1, test }; + +const ansiRegex$2 = index$12; /** + * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * + */const toHumanReadableAnsi = text => {const style = index$20;return text.replace(ansiRegex$2(), (match, offset, string) => {switch (match) {case style.red.close:case style.green.close:case style.reset.open: + case style.reset.close: + return ''; + case style.red.open: + return ''; + case style.green.open: + return ''; + case style.dim.open: + return ''; + case style.bold.open: + return ''; + default: + return '';} + + }); +}; + +const test$1 = value => +typeof value === 'string' && value.match(ansiRegex$2()); + +const print$2 = ( +val, +print, +indent, +opts, +colors) => +print(toHumanReadableAnsi(val)); + +var ConvertAnsi = { print: print$2, test: test$1 }; + +function escapeHTML$1(str) { + return str.replace(//g, '>'); +} + +var escapeHTML_1 = escapeHTML$1; + +const escapeHTML = escapeHTML_1; /** + * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * + */ + + + + + + + + + + + + + + + +const HTML_ELEMENT_REGEXP = /(HTML\w*?Element)|Text|Comment/; +const test$2 = isHTMLElement; + +function isHTMLElement(value) { + return ( + value !== undefined && + value !== null && ( + value.nodeType === 1 || value.nodeType === 3 || value.nodeType === 8) && + value.constructor !== undefined && + value.constructor.name !== undefined && + HTML_ELEMENT_REGEXP.test(value.constructor.name)); + +} + +function printChildren(flatChildren, print, indent, colors, opts) { + return flatChildren. + map(node => { + if (typeof node === 'object') { + return print(node, print, indent, colors, opts); + } else if (typeof node === 'string') { + return colors.content.open + escapeHTML(node) + colors.content.close; + } else { + return print(node); + } + }). + filter(value => value.trim().length). + join(opts.edgeSpacing); +} + +function printAttributes(attributes, indent, colors, opts) { + return attributes. + sort(). + map(attribute => { + return ( + opts.spacing + + indent(colors.prop.open + attribute.name + colors.prop.close + '=') + + colors.value.open + + `"${attribute.value}"` + + colors.value.close); + + }). + join(''); +} + +const print$3 = ( +element, +print, +indent, +opts, +colors) => +{ + if (element.nodeType === 3) { + return element.data. + split('\n'). + map(text => text.trimLeft()). + filter(text => text.length). + join(' '); + } else if (element.nodeType === 8) { + return ( + colors.comment.open + + '' + + colors.comment.close); + + } + + let result = colors.tag.open + '<'; + const elementName = element.tagName.toLowerCase(); + result += elementName + colors.tag.close; + + const hasAttributes = element.attributes && element.attributes.length; + if (hasAttributes) { + const attributes = Array.prototype.slice.call(element.attributes); + result += printAttributes(attributes, indent, colors, opts); + } + + const flatChildren = Array.prototype.slice.call(element.childNodes); + if (!flatChildren.length && element.textContent) { + flatChildren.push(element.textContent); + } + + const closeInNewLine = hasAttributes && !opts.min; + if (flatChildren.length) { + const children = printChildren(flatChildren, print, indent, colors, opts); + result += + colors.tag.open + ( + closeInNewLine ? '\n' : '') + + '>' + + colors.tag.close + + opts.edgeSpacing + + indent(children) + + opts.edgeSpacing + + colors.tag.open + + '' + + colors.tag.close; + } else { + result += + colors.tag.open + (closeInNewLine ? '\n' : ' ') + '/>' + colors.tag.close; + } + + return result; +}; + +var HTMLElement = { print: print$3, test: test$2 }; + +var _slicedToArray = function () {function sliceIterator(arr, i) {var _arr = [];var _n = true;var _d = false;var _e = undefined;try {for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {_arr.push(_s.value);if (i && _arr.length === i) break;}} catch (err) {_d = true;_e = err;} finally {try {if (!_n && _i["return"]) _i["return"]();} finally {if (_d) throw _e;}}return _arr;}return function (arr, i) {if (Array.isArray(arr)) {return arr;} else if (Symbol.iterator in Object(arr)) {return sliceIterator(arr, i);} else {throw new TypeError("Invalid attempt to destructure non-iterable instance");}};}(); + + + + + + + + + + + +const IMMUTABLE_NAMESPACE = 'Immutable.'; /** + * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * + */const SPACE$1 = ' ';const addKey = (isMap, key) => isMap ? key + ': ' : '';const addFinalEdgeSpacing = (length, edgeSpacing) => length > 0 ? edgeSpacing : '';const printImmutable$1 = ( +val, +print, +indent, +opts, +colors, +immutableDataStructureName, +isMap) => +{var _ref = + isMap ? ['{', '}'] : ['[', ']'],_ref2 = _slicedToArray(_ref, 2);const openTag = _ref2[0],closeTag = _ref2[1]; + let result = + IMMUTABLE_NAMESPACE + + immutableDataStructureName + + SPACE$1 + + openTag + + opts.edgeSpacing; + + const immutableArray = []; + val.forEach((item, key) => + immutableArray.push( + indent(addKey(isMap, key) + print(item, print, indent, opts, colors)))); + + + + result += immutableArray.join(',' + opts.spacing); + if (!opts.min && immutableArray.length > 0) { + result += ','; + } + + return ( + result + + addFinalEdgeSpacing(immutableArray.length, opts.edgeSpacing) + + closeTag); + +}; + +var printImmutable_1 = printImmutable$1; + +const printImmutable = printImmutable_1; /** + * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * + */const IS_LIST = '@@__IMMUTABLE_LIST__@@';const test$3 = maybeList => !!(maybeList && maybeList[IS_LIST]);const print$4 = (val, print, indent, +opts, +colors) => +printImmutable(val, print, indent, opts, colors, 'List', false); + +var ImmutableList = { print: print$4, test: test$3 }; + +const printImmutable$2 = printImmutable_1; /** + * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * + */const IS_SET = '@@__IMMUTABLE_SET__@@';const IS_ORDERED = '@@__IMMUTABLE_ORDERED__@@';const test$4 = maybeSet => !!(maybeSet && maybeSet[IS_SET] && !maybeSet[IS_ORDERED]);const print$5 = (val, +print, +indent, +opts, +colors) => +printImmutable$2(val, print, indent, opts, colors, 'Set', false); + +var ImmutableSet = { print: print$5, test: test$4 }; + +const printImmutable$3 = printImmutable_1; /** + * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * + */const IS_MAP = '@@__IMMUTABLE_MAP__@@';const IS_ORDERED$1 = '@@__IMMUTABLE_ORDERED__@@';const test$5 = maybeMap => !!(maybeMap && maybeMap[IS_MAP] && !maybeMap[IS_ORDERED$1]);const print$6 = (val, +print, +indent, +opts, +colors) => +printImmutable$3(val, print, indent, opts, colors, 'Map', true); + +var ImmutableMap = { print: print$6, test: test$5 }; + +const printImmutable$4 = printImmutable_1; /** + * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * + */const IS_STACK = '@@__IMMUTABLE_STACK__@@';const test$6 = maybeStack => !!(maybeStack && maybeStack[IS_STACK]);const print$7 = (val, print, indent, +opts, +colors) => +printImmutable$4(val, print, indent, opts, colors, 'Stack', false); + +var ImmutableStack = { print: print$7, test: test$6 }; + +const printImmutable$5 = printImmutable_1; /** + * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * + */const IS_SET$1 = '@@__IMMUTABLE_SET__@@';const IS_ORDERED$2 = '@@__IMMUTABLE_ORDERED__@@';const test$7 = maybeOrderedSet => maybeOrderedSet && maybeOrderedSet[IS_SET$1] && maybeOrderedSet[IS_ORDERED$2];const print$8 = (val, +print, +indent, +opts, +colors) => +printImmutable$5(val, print, indent, opts, colors, 'OrderedSet', false); + +var ImmutableOrderedSet = { print: print$8, test: test$7 }; + +const printImmutable$6 = printImmutable_1; /** + * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * + */const IS_MAP$1 = '@@__IMMUTABLE_MAP__@@';const IS_ORDERED$3 = '@@__IMMUTABLE_ORDERED__@@';const test$8 = maybeOrderedMap => maybeOrderedMap && maybeOrderedMap[IS_MAP$1] && maybeOrderedMap[IS_ORDERED$3];const print$9 = (val, +print, +indent, +opts, +colors) => +printImmutable$6(val, print, indent, opts, colors, 'OrderedMap', true); + +var ImmutableOrderedMap = { print: print$9, test: test$8 }; + +var ImmutablePlugins = [ +ImmutableList, +ImmutableSet, +ImmutableMap, +ImmutableStack, +ImmutableOrderedSet, +ImmutableOrderedMap]; + +const escapeHTML$2 = escapeHTML_1; /** + * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * + */const reactElement = Symbol.for('react.element');function traverseChildren(opaqueChildren, cb) {if (Array.isArray(opaqueChildren)) {opaqueChildren.forEach(child => traverseChildren(child, cb));} else if (opaqueChildren != null && opaqueChildren !== false) {cb(opaqueChildren); + } +} + +function printChildren$1(flatChildren, print, indent, colors, opts) { + return flatChildren. + map(node => { + if (typeof node === 'object') { + return print(node, print, indent, colors, opts); + } else if (typeof node === 'string') { + return colors.content.open + escapeHTML$2(node) + colors.content.close; + } else { + return print(node); + } + }). + join(opts.edgeSpacing); +} + +function printProps(props, print, indent, colors, opts) { + return Object.keys(props). + sort(). + map(name => { + if (name === 'children') { + return ''; + } + + const prop = props[name]; + let printed = print(prop); + + if (typeof prop !== 'string') { + if (printed.indexOf('\n') !== -1) { + printed = + '{' + + opts.edgeSpacing + + indent(indent(printed) + opts.edgeSpacing + '}'); + } else { + printed = '{' + printed + '}'; + } + } + + return ( + opts.spacing + + indent(colors.prop.open + name + colors.prop.close + '=') + + colors.value.open + + printed + + colors.value.close); + + }). + join(''); +} + +const print$10 = ( +element, +print, +indent, +opts, +colors) => +{ + let result = colors.tag.open + '<'; + let elementName; + if (typeof element.type === 'string') { + elementName = element.type; + } else if (typeof element.type === 'function') { + elementName = element.type.displayName || element.type.name || 'Unknown'; + } else { + elementName = 'Unknown'; + } + result += elementName + colors.tag.close; + result += printProps(element.props, print, indent, colors, opts); + + const opaqueChildren = element.props.children; + const hasProps = !!Object.keys(element.props).filter( + propName => propName !== 'children'). + length; + const closeInNewLine = hasProps && !opts.min; + + if (opaqueChildren) { + const flatChildren = []; + traverseChildren(opaqueChildren, child => { + flatChildren.push(child); + }); + const children = printChildren$1(flatChildren, print, indent, colors, opts); + result += + colors.tag.open + ( + closeInNewLine ? '\n' : '') + + '>' + + colors.tag.close + + opts.edgeSpacing + + indent(children) + + opts.edgeSpacing + + colors.tag.open + + '' + + colors.tag.close; + } else { + result += + colors.tag.open + (closeInNewLine ? '\n' : ' ') + '/>' + colors.tag.close; + } + + return result; +}; + +const test$9 = object => object && object.$$typeof === reactElement; + +var ReactElement = { print: print$10, test: test$9 }; + +const escapeHTML$3 = escapeHTML_1; /** + * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * + */const reactTestInstance = Symbol.for('react.test.json');function printChildren$2(children, print, indent, colors, +opts) +{ + return children. + map(child => printInstance(child, print, indent, colors, opts)). + join(opts.edgeSpacing); +} + +function printProps$1(props, print, indent, colors, opts) { + return Object.keys(props). + sort(). + map(name => { + const prop = props[name]; + let printed = print(prop); + + if (typeof prop !== 'string') { + if (printed.indexOf('\n') !== -1) { + printed = + '{' + + opts.edgeSpacing + + indent(indent(printed) + opts.edgeSpacing + '}'); + } else { + printed = '{' + printed + '}'; + } + } + + return ( + opts.spacing + + indent(colors.prop.open + name + colors.prop.close + '=') + + colors.value.open + + printed + + colors.value.close); + + }). + join(''); +} + +function printInstance(instance, print, indent, colors, opts) { + if (typeof instance == 'number') { + return print(instance); + } else if (typeof instance === 'string') { + return colors.content.open + escapeHTML$3(instance) + colors.content.close; + } + + let closeInNewLine = false; + let result = colors.tag.open + '<' + instance.type + colors.tag.close; + + if (instance.props) { + closeInNewLine = !!Object.keys(instance.props).length && !opts.min; + result += printProps$1(instance.props, print, indent, colors, opts); + } + + if (instance.children) { + const children = printChildren$2( + instance.children, + print, + indent, + colors, + opts); + + result += + colors.tag.open + ( + closeInNewLine ? '\n' : '') + + '>' + + colors.tag.close + + opts.edgeSpacing + + indent(children) + + opts.edgeSpacing + + colors.tag.open + + '' + + colors.tag.close; + } else { + result += + colors.tag.open + (closeInNewLine ? '\n' : ' ') + '/>' + colors.tag.close; + } + + return result; +} + +const print$11 = ( +val, +print, +indent, +opts, +colors) => +printInstance(val, print, indent, colors, opts); + +const test$10 = object => +object && object.$$typeof === reactTestInstance; + +var ReactTestComponent = { print: print$11, test: test$10 }; + +const style = index$20; /** + * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * + */ + + + + + + + + + + + + + + + +const toString = Object.prototype.toString; +const toISOString = Date.prototype.toISOString; +const errorToString = Error.prototype.toString; +const regExpToString = RegExp.prototype.toString; +const symbolToString = Symbol.prototype.toString; + +const SYMBOL_REGEXP = /^Symbol\((.*)\)(.*)$/; +const NEWLINE_REGEXP = /\n/gi; + +const getSymbols = Object.getOwnPropertySymbols || (obj => []); + +function isToStringedArrayType(toStringed) { + return ( + toStringed === '[object Array]' || + toStringed === '[object ArrayBuffer]' || + toStringed === '[object DataView]' || + toStringed === '[object Float32Array]' || + toStringed === '[object Float64Array]' || + toStringed === '[object Int8Array]' || + toStringed === '[object Int16Array]' || + toStringed === '[object Int32Array]' || + toStringed === '[object Uint8Array]' || + toStringed === '[object Uint8ClampedArray]' || + toStringed === '[object Uint16Array]' || + toStringed === '[object Uint32Array]'); + +} + +function printNumber$1(val) { + if (val != +val) { + return 'NaN'; + } + const isNegativeZero = val === 0 && 1 / val < 0; + return isNegativeZero ? '-0' : '' + val; +} + +function printFunction(val, printFunctionName) { + if (!printFunctionName) { + return '[Function]'; + } else if (val.name === '') { + return '[Function anonymous]'; + } else { + return '[Function ' + val.name + ']'; + } +} + +function printSymbol(val) { + return symbolToString.call(val).replace(SYMBOL_REGEXP, 'Symbol($1)'); +} + +function printError(val) { + return '[' + errorToString.call(val) + ']'; +} + +function printBasicValue( +val, +printFunctionName, +escapeRegex) +{ + if (val === true || val === false) { + return '' + val; + } + if (val === undefined) { + return 'undefined'; + } + if (val === null) { + return 'null'; + } + + const typeOf = typeof val; + + if (typeOf === 'number') { + return printNumber$1(val); + } + if (typeOf === 'string') { + return '"' + val.replace(/"|\\/g, '\\$&') + '"'; + } + if (typeOf === 'function') { + return printFunction(val, printFunctionName); + } + if (typeOf === 'symbol') { + return printSymbol(val); + } + + const toStringed = toString.call(val); + + if (toStringed === '[object WeakMap]') { + return 'WeakMap {}'; + } + if (toStringed === '[object WeakSet]') { + return 'WeakSet {}'; + } + if ( + toStringed === '[object Function]' || + toStringed === '[object GeneratorFunction]') + { + return printFunction(val, printFunctionName); + } + if (toStringed === '[object Symbol]') { + return printSymbol(val); + } + if (toStringed === '[object Date]') { + return toISOString.call(val); + } + if (toStringed === '[object Error]') { + return printError(val); + } + if (toStringed === '[object RegExp]') { + if (escapeRegex) { + // https://github.com/benjamingr/RegExp.escape/blob/master/polyfill.js + return regExpToString.call(val).replace(/[\\^$*+?.()|[\]{}]/g, '\\$&'); + } + return regExpToString.call(val); + } + if (toStringed === '[object Arguments]' && val.length === 0) { + return 'Arguments []'; + } + if (isToStringedArrayType(toStringed) && val.length === 0) { + return val.constructor.name + ' []'; + } + + if (val instanceof Error) { + return printError(val); + } + + return null; +} + +function printList( +list, +indent, +prevIndent, +spacing, +edgeSpacing, +refs, +maxDepth, +currentDepth, +plugins, +min, +callToJSON, +printFunctionName, +escapeRegex, +colors) +{ + let body = ''; + + if (list.length) { + body += edgeSpacing; + + const innerIndent = prevIndent + indent; + + for (let i = 0; i < list.length; i++) { + body += + innerIndent + + print( + list[i], + indent, + innerIndent, + spacing, + edgeSpacing, + refs, + maxDepth, + currentDepth, + plugins, + min, + callToJSON, + printFunctionName, + escapeRegex, + colors); + + + if (i < list.length - 1) { + body += ',' + spacing; + } + } + + body += (min ? '' : ',') + edgeSpacing + prevIndent; + } + + return '[' + body + ']'; +} + +function printArguments( +val, +indent, +prevIndent, +spacing, +edgeSpacing, +refs, +maxDepth, +currentDepth, +plugins, +min, +callToJSON, +printFunctionName, +escapeRegex, +colors) +{ + return ( + (min ? '' : 'Arguments ') + + printList( + val, + indent, + prevIndent, + spacing, + edgeSpacing, + refs, + maxDepth, + currentDepth, + plugins, + min, + callToJSON, + printFunctionName, + escapeRegex, + colors)); + + +} + +function printArray( +val, +indent, +prevIndent, +spacing, +edgeSpacing, +refs, +maxDepth, +currentDepth, +plugins, +min, +callToJSON, +printFunctionName, +escapeRegex, +colors) +{ + return ( + (min ? '' : val.constructor.name + ' ') + + printList( + val, + indent, + prevIndent, + spacing, + edgeSpacing, + refs, + maxDepth, + currentDepth, + plugins, + min, + callToJSON, + printFunctionName, + escapeRegex, + colors)); + + +} + +function printMap( +val, +indent, +prevIndent, +spacing, +edgeSpacing, +refs, +maxDepth, +currentDepth, +plugins, +min, +callToJSON, +printFunctionName, +escapeRegex, +colors) +{ + let result = 'Map {'; + const iterator = val.entries(); + let current = iterator.next(); + + if (!current.done) { + result += edgeSpacing; + + const innerIndent = prevIndent + indent; + + while (!current.done) { + const key = print( + current.value[0], + indent, + innerIndent, + spacing, + edgeSpacing, + refs, + maxDepth, + currentDepth, + plugins, + min, + callToJSON, + printFunctionName, + escapeRegex, + colors); + + const value = print( + current.value[1], + indent, + innerIndent, + spacing, + edgeSpacing, + refs, + maxDepth, + currentDepth, + plugins, + min, + callToJSON, + printFunctionName, + escapeRegex, + colors); + + + result += innerIndent + key + ' => ' + value; + + current = iterator.next(); + + if (!current.done) { + result += ',' + spacing; + } + } + + result += (min ? '' : ',') + edgeSpacing + prevIndent; + } + + return result + '}'; +} + +function printObject( +val, +indent, +prevIndent, +spacing, +edgeSpacing, +refs, +maxDepth, +currentDepth, +plugins, +min, +callToJSON, +printFunctionName, +escapeRegex, +colors) +{ + const constructor = min ? + '' : + val.constructor ? val.constructor.name + ' ' : 'Object '; + let result = constructor + '{'; + let keys = Object.keys(val).sort(); + const symbols = getSymbols(val); + + if (symbols.length) { + keys = keys. + filter( + key => + // $FlowFixMe string literal `symbol`. This value is not a valid `typeof` return value + !(typeof key === 'symbol' || + toString.call(key) === '[object Symbol]')). + + concat(symbols); + } + + if (keys.length) { + result += edgeSpacing; + + const innerIndent = prevIndent + indent; + + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + const name = print( + key, + indent, + innerIndent, + spacing, + edgeSpacing, + refs, + maxDepth, + currentDepth, + plugins, + min, + callToJSON, + printFunctionName, + escapeRegex, + colors); + + const value = print( + val[key], + indent, + innerIndent, + spacing, + edgeSpacing, + refs, + maxDepth, + currentDepth, + plugins, + min, + callToJSON, + printFunctionName, + escapeRegex, + colors); + + + result += innerIndent + name + ': ' + value; + + if (i < keys.length - 1) { + result += ',' + spacing; + } + } + + result += (min ? '' : ',') + edgeSpacing + prevIndent; + } + + return result + '}'; +} + +function printSet( +val, +indent, +prevIndent, +spacing, +edgeSpacing, +refs, +maxDepth, +currentDepth, +plugins, +min, +callToJSON, +printFunctionName, +escapeRegex, +colors) +{ + let result = 'Set {'; + const iterator = val.entries(); + let current = iterator.next(); + + if (!current.done) { + result += edgeSpacing; + + const innerIndent = prevIndent + indent; + + while (!current.done) { + result += + innerIndent + + print( + current.value[1], + indent, + innerIndent, + spacing, + edgeSpacing, + refs, + maxDepth, + currentDepth, + plugins, + min, + callToJSON, + printFunctionName, + escapeRegex, + colors); + + + current = iterator.next(); + + if (!current.done) { + result += ',' + spacing; + } + } + + result += (min ? '' : ',') + edgeSpacing + prevIndent; + } + + return result + '}'; +} + +function printComplexValue( +val, +indent, +prevIndent, +spacing, +edgeSpacing, +refs, +maxDepth, +currentDepth, +plugins, +min, +callToJSON, +printFunctionName, +escapeRegex, +colors) +{ + refs = refs.slice(); + if (refs.indexOf(val) > -1) { + return '[Circular]'; + } else { + refs.push(val); + } + + currentDepth++; + + const hitMaxDepth = currentDepth > maxDepth; + + if ( + callToJSON && + !hitMaxDepth && + val.toJSON && + typeof val.toJSON === 'function') + { + return print( + val.toJSON(), + indent, + prevIndent, + spacing, + edgeSpacing, + refs, + maxDepth, + currentDepth, + plugins, + min, + callToJSON, + printFunctionName, + escapeRegex, + colors); + + } + + const toStringed = toString.call(val); + if (toStringed === '[object Arguments]') { + return hitMaxDepth ? + '[Arguments]' : + printArguments( + val, + indent, + prevIndent, + spacing, + edgeSpacing, + refs, + maxDepth, + currentDepth, + plugins, + min, + callToJSON, + printFunctionName, + escapeRegex, + colors); + + } else if (isToStringedArrayType(toStringed)) { + return hitMaxDepth ? + '[Array]' : + printArray( + val, + indent, + prevIndent, + spacing, + edgeSpacing, + refs, + maxDepth, + currentDepth, + plugins, + min, + callToJSON, + printFunctionName, + escapeRegex, + colors); + + } else if (toStringed === '[object Map]') { + return hitMaxDepth ? + '[Map]' : + printMap( + val, + indent, + prevIndent, + spacing, + edgeSpacing, + refs, + maxDepth, + currentDepth, + plugins, + min, + callToJSON, + printFunctionName, + escapeRegex, + colors); + + } else if (toStringed === '[object Set]') { + return hitMaxDepth ? + '[Set]' : + printSet( + val, + indent, + prevIndent, + spacing, + edgeSpacing, + refs, + maxDepth, + currentDepth, + plugins, + min, + callToJSON, + printFunctionName, + escapeRegex, + colors); + + } + + return hitMaxDepth ? + '[Object]' : + printObject( + val, + indent, + prevIndent, + spacing, + edgeSpacing, + refs, + maxDepth, + currentDepth, + plugins, + min, + callToJSON, + printFunctionName, + escapeRegex, + colors); + +} + +function printPlugin( +val, +indent, +prevIndent, +spacing, +edgeSpacing, +refs, +maxDepth, +currentDepth, +plugins, +min, +callToJSON, +printFunctionName, +escapeRegex, +colors) +{ + let plugin; + + for (let p = 0; p < plugins.length; p++) { + if (plugins[p].test(val)) { + plugin = plugins[p]; + break; + } + } + + if (!plugin) { + return null; + } + + function boundPrint(val) { + return print( + val, + indent, + prevIndent, + spacing, + edgeSpacing, + refs, + maxDepth, + currentDepth, + plugins, + min, + callToJSON, + printFunctionName, + escapeRegex, + colors); + + } + + function boundIndent(str) { + const indentation = prevIndent + indent; + return indentation + str.replace(NEWLINE_REGEXP, '\n' + indentation); + } + + const opts = { + edgeSpacing, + min, + spacing }; + + return plugin.print(val, boundPrint, boundIndent, opts, colors); +} + +function print( +val, +indent, +prevIndent, +spacing, +edgeSpacing, +refs, +maxDepth, +currentDepth, +plugins, +min, +callToJSON, +printFunctionName, +escapeRegex, +colors) +{ + const pluginsResult = printPlugin( + val, + indent, + prevIndent, + spacing, + edgeSpacing, + refs, + maxDepth, + currentDepth, + plugins, + min, + callToJSON, + printFunctionName, + escapeRegex, + colors); + + if (typeof pluginsResult === 'string') { + return pluginsResult; + } + + const basicResult = printBasicValue(val, printFunctionName, escapeRegex); + if (basicResult !== null) { + return basicResult; + } + + return printComplexValue( + val, + indent, + prevIndent, + spacing, + edgeSpacing, + refs, + maxDepth, + currentDepth, + plugins, + min, + callToJSON, + printFunctionName, + escapeRegex, + colors); + +} + +const DEFAULTS = { + callToJSON: true, + edgeSpacing: '\n', + escapeRegex: false, + highlight: false, + indent: 2, + maxDepth: Infinity, + min: false, + plugins: [], + printFunctionName: true, + spacing: '\n', + theme: { + comment: 'gray', + content: 'reset', + prop: 'yellow', + tag: 'cyan', + value: 'green' } }; + + + +function validateOptions(opts) { + Object.keys(opts).forEach(key => { + if (!DEFAULTS.hasOwnProperty(key)) { + throw new Error(`pretty-format: Unknown option "${key}".`); + } + }); + + if (opts.min && opts.indent !== undefined && opts.indent !== 0) { + throw new Error( + 'pretty-format: Options "min" and "indent" cannot be used together.'); + + } +} + +function normalizeOptions$1(opts) { + const result = {}; + + Object.keys(DEFAULTS).forEach( + key => + result[key] = opts.hasOwnProperty(key) ? + key === 'theme' ? normalizeTheme(opts.theme) : opts[key] : + DEFAULTS[key]); + + + if (result.min) { + result.indent = 0; + } + + // $FlowFixMe the type cast below means YOU are responsible to verify the code above. + return result; +} + +function normalizeTheme(themeOption) { + if (!themeOption) { + throw new Error(`pretty-format: Option "theme" must not be null.`); + } + + if (typeof themeOption !== 'object') { + throw new Error( + `pretty-format: Option "theme" must be of type "object" but instead received "${typeof themeOption}".`); + + } + + // Silently ignore any keys in `theme` that are not in defaults. + const themeRefined = themeOption; + const themeDefaults = DEFAULTS.theme; + return Object.keys(themeDefaults).reduce((theme, key) => { + theme[key] = Object.prototype.hasOwnProperty.call(themeOption, key) ? + themeRefined[key] : + themeDefaults[key]; + return theme; + }, {}); +} + +function createIndent(indent) { + return new Array(indent + 1).join(' '); +} + +function prettyFormat(val, initialOptions) { + let opts; + if (!initialOptions) { + opts = DEFAULTS; + } else { + validateOptions(initialOptions); + opts = normalizeOptions$1(initialOptions); + } + + const colors = { + comment: { close: '', open: '' }, + content: { close: '', open: '' }, + prop: { close: '', open: '' }, + tag: { close: '', open: '' }, + value: { close: '', open: '' } }; + + Object.keys(opts.theme).forEach(key => { + if (opts.highlight) { + const color = colors[key] = style[opts.theme[key]]; + if ( + !color || + typeof color.close !== 'string' || + typeof color.open !== 'string') + { + throw new Error( + `pretty-format: Option "theme" has a key "${key}" whose value "${opts.theme[key]}" is undefined in ansi-styles.`); + + } + } + }); + + let indent; + let refs; + const prevIndent = ''; + const currentDepth = 0; + const spacing = opts.min ? ' ' : '\n'; + const edgeSpacing = opts.min ? '' : '\n'; + + if (opts && opts.plugins.length) { + indent = createIndent(opts.indent); + refs = []; + const pluginsResult = printPlugin( + val, + indent, + prevIndent, + spacing, + edgeSpacing, + refs, + opts.maxDepth, + currentDepth, + opts.plugins, + opts.min, + opts.callToJSON, + opts.printFunctionName, + opts.escapeRegex, + colors); + + if (typeof pluginsResult === 'string') { + return pluginsResult; + } + } + + const basicResult = printBasicValue( + val, + opts.printFunctionName, + opts.escapeRegex); + + if (basicResult !== null) { + return basicResult; + } + + if (!indent) { + indent = createIndent(opts.indent); + } + if (!refs) { + refs = []; + } + return printComplexValue( + val, + indent, + prevIndent, + spacing, + edgeSpacing, + refs, + opts.maxDepth, + currentDepth, + opts.plugins, + opts.min, + opts.callToJSON, + opts.printFunctionName, + opts.escapeRegex, + colors); + +} + +prettyFormat.plugins = { + AsymmetricMatcher: AsymmetricMatcher, + ConvertAnsi: ConvertAnsi, + HTMLElement: HTMLElement, + Immutable: ImmutablePlugins, + ReactElement: ReactElement, + ReactTestComponent: ReactTestComponent }; + + +var index$18 = prettyFormat; + +/* eslint-disable no-nested-ternary */ +var arr = []; +var charCodeCache = []; + +var index$26 = function (a, b) { + if (a === b) { + return 0; + } + + var swap = a; + + // Swapping the strings if `a` is longer than `b` so we know which one is the + // shortest & which one is the longest + if (a.length > b.length) { + a = b; + b = swap; + } + + var aLen = a.length; + var bLen = b.length; + + if (aLen === 0) { + return bLen; + } + + if (bLen === 0) { + return aLen; + } + + // Performing suffix trimming: + // We can linearly drop suffix common to both strings since they + // don't increase distance at all + // Note: `~-` is the bitwise way to perform a `- 1` operation + while (aLen > 0 && (a.charCodeAt(~-aLen) === b.charCodeAt(~-bLen))) { + aLen--; + bLen--; + } + + if (aLen === 0) { + return bLen; + } + + // Performing prefix trimming + // We can linearly drop prefix common to both strings since they + // don't increase distance at all + var start = 0; + + while (start < aLen && (a.charCodeAt(start) === b.charCodeAt(start))) { + start++; + } + + aLen -= start; + bLen -= start; + + if (aLen === 0) { + return bLen; + } + + var bCharCode; + var ret; + var tmp; + var tmp2; + var i = 0; + var j = 0; + + while (i < aLen) { + charCodeCache[start + i] = a.charCodeAt(start + i); + arr[i] = ++i; + } + + while (j < bLen) { + bCharCode = b.charCodeAt(start + j); + tmp = j++; + ret = j; + + for (i = 0; i < aLen; i++) { + tmp2 = bCharCode === charCodeCache[start + i] ? tmp : tmp + 1; + tmp = arr[i]; + ret = arr[i] = tmp > ret ? tmp2 > ret ? ret + 1 : tmp2 : tmp2 > tmp ? tmp + 1 : tmp2; + } + } + + return ret; +}; + +const chalk$1 = index$4; +const BULLET = chalk$1.bold('\u25cf'); +const DEPRECATION = `${BULLET} Deprecation Warning`; +const ERROR$1 = `${BULLET} Validation Error`; +const WARNING = `${BULLET} Validation Warning`; + +const format$2 = value => +typeof value === 'function' ? +value.toString() : +index$18(value, { min: true }); + +class ValidationError$1 extends Error { + + + + constructor(name, message, comment) { + super(); + comment = comment ? '\n\n' + comment : '\n'; + this.name = ''; + this.message = chalk$1.red(chalk$1.bold(name) + ':\n\n' + message + comment); + Error.captureStackTrace(this, () => {}); + }} + + +const logValidationWarning = ( +name, +message, +comment) => +{ + comment = comment ? '\n\n' + comment : '\n'; + console.warn(chalk$1.yellow(chalk$1.bold(name) + ':\n\n' + message + comment)); +}; + +const createDidYouMeanMessage = ( +unrecognized, +allowedOptions) => +{ + const leven = index$26; + const suggestion = allowedOptions.find(option => { + const steps = leven(option, unrecognized); + return steps < 3; + }); + + return suggestion ? `Did you mean ${chalk$1.bold(format$2(suggestion))}?` : ''; +}; + +var utils$2 = { + DEPRECATION, + ERROR: ERROR$1, + ValidationError: ValidationError$1, + WARNING, + createDidYouMeanMessage, + format: format$2, + logValidationWarning }; + +const chalk$2 = index$4; +const prettyFormat$1 = index$18;var _require$plugins = + + + + + +index$18.plugins;const AsymmetricMatcher$2 = _require$plugins.AsymmetricMatcher; const ReactElement$2 = _require$plugins.ReactElement; const HTMLElement$2 = _require$plugins.HTMLElement; const Immutable = _require$plugins.Immutable; + +const PLUGINS = [AsymmetricMatcher$2, ReactElement$2, HTMLElement$2].concat( +Immutable); + + + + + + + + + + + + + + + + +const EXPECTED_COLOR = chalk$2.green; +const EXPECTED_BG = chalk$2.bgGreen; +const RECEIVED_COLOR = chalk$2.red; +const RECEIVED_BG = chalk$2.bgRed; + +const NUMBERS = [ +'zero', +'one', +'two', +'three', +'four', +'five', +'six', +'seven', +'eight', +'nine', +'ten', +'eleven', +'twelve', +'thirteen']; + + +// get the type of a value with handling the edge cases like `typeof []` +// and `typeof null` +const getType$1 = value => { + if (typeof value === 'undefined') { + return 'undefined'; + } else if (value === null) { + return 'null'; + } else if (Array.isArray(value)) { + return 'array'; + } else if (typeof value === 'boolean') { + return 'boolean'; + } else if (typeof value === 'function') { + return 'function'; + } else if (typeof value === 'number') { + return 'number'; + } else if (typeof value === 'string') { + return 'string'; + } else if (typeof value === 'object') { + if (value.constructor === RegExp) { + return 'regexp'; + } else if (value.constructor === Map) { + return 'map'; + } else if (value.constructor === Set) { + return 'set'; + } + return 'object'; + // $FlowFixMe https://github.com/facebook/flow/issues/1015 + } else if (typeof value === 'symbol') { + return 'symbol'; + } + + throw new Error(`value of unknown type: ${value}`); +}; + +const stringify = function (object) {let maxDepth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10; + const MAX_LENGTH = 10000; + let result; + + try { + result = prettyFormat$1(object, { + maxDepth, + min: true, + plugins: PLUGINS }); + + } catch (e) { + result = prettyFormat$1(object, { + callToJSON: false, + maxDepth, + min: true, + plugins: PLUGINS }); + + } + + return result.length >= MAX_LENGTH && maxDepth > 1 ? + stringify(object, Math.floor(maxDepth / 2)) : + result; +}; + +const highlightTrailingWhitespace = (text, bgColor) => +text.replace(/\s+$/gm, bgColor('$&')); + +const printReceived = object => +highlightTrailingWhitespace(RECEIVED_COLOR(stringify(object)), RECEIVED_BG); +const printExpected = value => +highlightTrailingWhitespace(EXPECTED_COLOR(stringify(value)), EXPECTED_BG); + +const printWithType = ( +name, +received, +print) => +{ + const type = getType$1(received); + return ( + name + + ':' + ( + type !== 'null' && type !== 'undefined' ? '\n ' + type + ': ' : ' ') + + print(received)); + +}; + +const ensureNoExpected = (expected, matcherName) => { + matcherName || (matcherName = 'This'); + if (typeof expected !== 'undefined') { + throw new Error( + matcherHint('[.not]' + matcherName, undefined, '') + + '\n\n' + + 'Matcher does not accept any arguments.\n' + + printWithType('Got', expected, printExpected)); + + } +}; + +const ensureActualIsNumber = (actual, matcherName) => { + matcherName || (matcherName = 'This matcher'); + if (typeof actual !== 'number') { + throw new Error( + matcherHint('[.not]' + matcherName) + + '\n\n' + + `Received value must be a number.\n` + + printWithType('Received', actual, printReceived)); + + } +}; + +const ensureExpectedIsNumber = (expected, matcherName) => { + matcherName || (matcherName = 'This matcher'); + if (typeof expected !== 'number') { + throw new Error( + matcherHint('[.not]' + matcherName) + + '\n\n' + + `Expected value must be a number.\n` + + printWithType('Got', expected, printExpected)); + + } +}; + +const ensureNumbers = (actual, expected, matcherName) => { + ensureActualIsNumber(actual, matcherName); + ensureExpectedIsNumber(expected, matcherName); +}; + +const pluralize = (word, count) => +(NUMBERS[count] || count) + ' ' + word + (count === 1 ? '' : 's'); + +const matcherHint = function ( +matcherName) + + + + + + +{let received = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'received';let expected = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'expected';let options = arguments[3]; + const secondArgument = options && options.secondArgument; + const isDirectExpectCall = options && options.isDirectExpectCall; + return ( + chalk$2.dim('expect' + (isDirectExpectCall ? '' : '(')) + + RECEIVED_COLOR(received) + + chalk$2.dim((isDirectExpectCall ? '' : ')') + matcherName + '(') + + EXPECTED_COLOR(expected) + ( + secondArgument ? `, ${EXPECTED_COLOR(secondArgument)}` : '') + + chalk$2.dim(')')); + +}; + +var index$28 = { + EXPECTED_BG, + EXPECTED_COLOR, + RECEIVED_BG, + RECEIVED_COLOR, + ensureActualIsNumber, + ensureExpectedIsNumber, + ensureNoExpected, + ensureNumbers, + getType: getType$1, + highlightTrailingWhitespace, + matcherHint, + pluralize, + printExpected, + printReceived, + printWithType, + stringify }; + +const chalk = index$4;var _require = +utils$2;const format$1 = _require.format; const ValidationError = _require.ValidationError; const ERROR = _require.ERROR;var _require2 = +index$28;const getType = _require2.getType; + +const errorMessage = ( +option, +received, +defaultValue, +options) => +{ + const message = ` Option ${chalk.bold(`"${option}"`)} must be of type: + ${chalk.bold.green(getType(defaultValue))} + but instead received: + ${chalk.bold.red(getType(received))} + + Example: + { + ${chalk.bold(`"${option}"`)}: ${chalk.bold(format$1(defaultValue))} + }`; + + const comment = options.comment; + const name = options.title && options.title.error || ERROR; + + throw new ValidationError(name, message, comment); +}; + +var errors = { + ValidationError, + errorMessage }; + +var _require$2 = + + + +utils$2;const logValidationWarning$1 = _require$2.logValidationWarning; const DEPRECATION$2 = _require$2.DEPRECATION; + +const deprecationMessage = (message, options) => { + const comment = options.comment; + const name = options.title && options.title.deprecation || DEPRECATION$2; + + logValidationWarning$1(name, message, comment); +}; + +const deprecationWarning$1 = ( +config, +option, +deprecatedOptions, +options) => +{ + if (option in deprecatedOptions) { + deprecationMessage(deprecatedOptions[option](config), options); + + return true; + } + + return false; +}; + +var deprecated = { + deprecationWarning: deprecationWarning$1 }; + +const chalk$3 = index$4;var _require$3 = + + + + + +utils$2;const format$3 = _require$3.format; const logValidationWarning$2 = _require$3.logValidationWarning; const createDidYouMeanMessage$1 = _require$3.createDidYouMeanMessage; const WARNING$2 = _require$3.WARNING; + +const unknownOptionWarning$1 = ( +config, +exampleConfig, +option, +options) => +{ + const didYouMean = createDidYouMeanMessage$1( + option, + Object.keys(exampleConfig)); + + /* eslint-disable max-len */ + const message = + ` Unknown option ${chalk$3.bold(`"${option}"`)} with value ${chalk$3.bold(format$3(config[option]))} was found.` + ( + didYouMean && ` ${didYouMean}`) + + `\n This is probably a typing mistake. Fixing it will remove this message.`; + /* eslint-enable max-len */ + + const comment = options.comment; + const name = options.title && options.title.warning || WARNING$2; + + logValidationWarning$2(name, message, comment); +}; + +var warnings = { + unknownOptionWarning: unknownOptionWarning$1 }; + +/** + * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * + */ + +const config = { + comment: ' A comment', + condition: (option, validOption) => true, + deprecate: (config, option, deprecatedOptions, options) => false, + deprecatedConfig: { + key: config => {} }, + + error: (option, received, defaultValue, options) => {}, + exampleConfig: { key: 'value', test: 'case' }, + title: { + deprecation: 'Deprecation Warning', + error: 'Validation Error', + warning: 'Validation Warning' }, + + unknown: (config, option, options) => {} }; + + +var exampleConfig$2 = config; + +/** + * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * + */ + +const toString$1 = Object.prototype.toString; + +const validationCondition$1 = (option, validOption) => { + return ( + option === null || + option === undefined || + toString$1.call(option) === toString$1.call(validOption)); + +}; + +var condition = validationCondition$1; + +var _require$1 = + + + +deprecated;const deprecationWarning = _require$1.deprecationWarning;var _require2$1 = +warnings;const unknownOptionWarning = _require2$1.unknownOptionWarning;var _require3 = +errors;const errorMessage$1 = _require3.errorMessage; +const exampleConfig$1 = exampleConfig$2; +const validationCondition = condition;var _require4 = +utils$2;const ERROR$2 = _require4.ERROR; const DEPRECATION$1 = _require4.DEPRECATION; const WARNING$1 = _require4.WARNING; + +var defaultConfig$1 = { + comment: '', + condition: validationCondition, + deprecate: deprecationWarning, + deprecatedConfig: {}, + error: errorMessage$1, + exampleConfig: exampleConfig$1, + title: { + deprecation: DEPRECATION$1, + error: ERROR$2, + warning: WARNING$1 }, + + unknown: unknownOptionWarning }; + +const defaultConfig = defaultConfig$1; + +const _validate = (config, options) => { + let hasDeprecationWarnings = false; + + for (const key in config) { + if ( + options.deprecatedConfig && + key in options.deprecatedConfig && + typeof options.deprecate === 'function') + { + const isDeprecatedKey = options.deprecate( + config, + key, + options.deprecatedConfig, + options); + + + hasDeprecationWarnings = hasDeprecationWarnings || isDeprecatedKey; + } else if (hasOwnProperty.call(options.exampleConfig, key)) { + if ( + typeof options.condition === 'function' && + typeof options.error === 'function' && + !options.condition(config[key], options.exampleConfig[key])) + { + options.error(key, config[key], options.exampleConfig[key], options); + } + } else { + options.unknown && + options.unknown(config, options.exampleConfig, key, options); + } + } + + return { hasDeprecationWarnings }; +}; + +const validate$1 = (config, options) => { + _validate(options, defaultConfig); // validate against jest-validate config + + const defaultedOptions = Object.assign( + {}, + defaultConfig, + options, + { title: Object.assign({}, defaultConfig.title, options.title) });var _validate2 = + + + _validate(config, defaultedOptions);const hasDeprecationWarnings = _validate2.hasDeprecationWarnings; + + return { + hasDeprecationWarnings, + isValid: true }; + +}; + +var validate_1 = validate$1; + +var index$2 = { + ValidationError: errors.ValidationError, + createDidYouMeanMessage: utils$2.createDidYouMeanMessage, + format: utils$2.format, + logValidationWarning: utils$2.logValidationWarning, + validate: validate_1 }; + +const deprecated$2 = { + useFlowParser: config => + ` The ${'"useFlowParser"'} option is deprecated. Use ${'"parser"'} instead. + + Prettier now treats your configuration as: + { + ${'"parser"'}: ${config.useFlowParser ? '"flow"' : '"babylon"'} + }` +}; + +var deprecated_1 = deprecated$2; + +const validate = index$2.validate; +const deprecatedConfig = deprecated_1; + +const defaults = { + rangeStart: 0, + rangeEnd: Infinity, + useTabs: false, + tabWidth: 2, + printWidth: 80, + singleQuote: false, + trailingComma: "none", + bracketSpacing: true, + jsxBracketSameLine: false, + parser: "babylon", + semi: true +}; + +const exampleConfig = Object.assign({}, defaults, { + filepath: "path/to/Filename", + printWidth: 80, + originalText: "text" +}); + +// Copy options and fill in default values. +function normalize(options) { + const normalized = Object.assign({}, options || {}); + const filepath = normalized.filepath; + + if (/\.(css|less|scss)$/.test(filepath)) { + normalized.parser = "postcss"; + } else if (/\.(ts|tsx)$/.test(filepath)) { + normalized.parser = "typescript"; + } + + if (typeof normalized.trailingComma === "boolean") { + // Support a deprecated boolean type for the trailing comma config + // for a few versions. This code can be removed later. + normalized.trailingComma = "es5"; + + console.warn( + "Warning: `trailingComma` without any argument is deprecated. " + + 'Specify "none", "es5", or "all".' + ); + } + + validate(normalized, { exampleConfig, deprecatedConfig }); + + // For backward compatibility. Deprecated in 0.0.10 + if ("useFlowParser" in normalized) { + normalized.parser = normalized.useFlowParser ? "flow" : "babylon"; + delete normalized.useFlowParser; + } + + Object.keys(defaults).forEach(k => { + if (normalized[k] == null) { + normalized[k] = defaults[k]; + } + }); + + return normalized; +} + +var options = { normalize }; + +var index$32 = createCommonjsModule(function (module, exports) { +// Copyright 2014, 2015, 2016, 2017 Simon Lydell +// License: MIT. (See LICENSE.) + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +// This regex comes from regex.coffee, and is inserted here by generate-index.js +// (run `npm run build`). +exports.default = /((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyu]{1,5}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g; + +exports.matchToToken = function(match) { + var token = {type: "invalid", value: match[0]}; + if (match[ 1]) token.type = "string" , token.closed = !!(match[3] || match[4]); + else if (match[ 5]) token.type = "comment"; + else if (match[ 6]) token.type = "comment", token.closed = !!match[7]; + else if (match[ 8]) token.type = "regex"; + else if (match[ 9]) token.type = "number"; + else if (match[10]) token.type = "name"; + else if (match[11]) token.type = "punctuator"; + else if (match[12]) token.type = "whitespace"; + return token +}; +}); + +var index$30 = createCommonjsModule(function (module, exports) { +"use strict"; + +exports.__esModule = true; + +exports.default = function (rawLines, lineNumber, colNumber) { + var opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; + + colNumber = Math.max(colNumber, 0); + + var highlighted = opts.highlightCode && _chalk2.default.supportsColor || opts.forceColor; + var chalk = _chalk2.default; + if (opts.forceColor) { + chalk = new _chalk2.default.constructor({ enabled: true }); + } + var maybeHighlight = function maybeHighlight(chalkFn, string) { + return highlighted ? chalkFn(string) : string; + }; + var defs = getDefs(chalk); + if (highlighted) rawLines = highlight(defs, rawLines); + + var linesAbove = opts.linesAbove || 2; + var linesBelow = opts.linesBelow || 3; + + var lines = rawLines.split(NEWLINE); + var start = Math.max(lineNumber - (linesAbove + 1), 0); + var end = Math.min(lines.length, lineNumber + linesBelow); + + if (!lineNumber && !colNumber) { + start = 0; + end = lines.length; + } + + var numberMaxWidth = String(end).length; + + var frame = lines.slice(start, end).map(function (line, index) { + var number = start + 1 + index; + var paddedNumber = (" " + number).slice(-numberMaxWidth); + var gutter = " " + paddedNumber + " | "; + if (number === lineNumber) { + var markerLine = ""; + if (colNumber) { + var markerSpacing = line.slice(0, colNumber - 1).replace(/[^\t]/g, " "); + markerLine = ["\n ", maybeHighlight(defs.gutter, gutter.replace(/\d/g, " ")), markerSpacing, maybeHighlight(defs.marker, "^")].join(""); + } + return [maybeHighlight(defs.marker, ">"), maybeHighlight(defs.gutter, gutter), line, markerLine].join(""); + } else { + return " " + maybeHighlight(defs.gutter, gutter) + line; + } + }).join("\n"); + + if (highlighted) { + return chalk.reset(frame); + } else { + return frame; + } +}; + +var _jsTokens = index$32; + +var _jsTokens2 = _interopRequireDefault(_jsTokens); + +var _esutils = utils; + +var _esutils2 = _interopRequireDefault(_esutils); + +var _chalk = index$4; + +var _chalk2 = _interopRequireDefault(_chalk); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function getDefs(chalk) { + return { + keyword: chalk.cyan, + capitalized: chalk.yellow, + jsx_tag: chalk.yellow, + punctuator: chalk.yellow, + + number: chalk.magenta, + string: chalk.green, + regex: chalk.magenta, + comment: chalk.grey, + invalid: chalk.white.bgRed.bold, + gutter: chalk.grey, + marker: chalk.red.bold + }; +} + +var NEWLINE = /\r\n|[\n\r\u2028\u2029]/; + +var JSX_TAG = /^[a-z][\w-]*$/i; + +var BRACKET = /^[()\[\]{}]$/; + +function getTokenType(match) { + var _match$slice = match.slice(-2), + offset = _match$slice[0], + text = _match$slice[1]; + + var token = (0, _jsTokens.matchToToken)(match); + + if (token.type === "name") { + if (_esutils2.default.keyword.isReservedWordES6(token.value)) { + return "keyword"; + } + + if (JSX_TAG.test(token.value) && (text[offset - 1] === "<" || text.substr(offset - 2, 2) == "= 0 && text.charAt(index - 1) === "\r") { + return "\r\n"; + } + return "\n"; +} + +function attachComments(text, ast, opts) { + const astComments = ast.comments; + if (astComments) { + delete ast.comments; + comments.attach(astComments, ast, text, opts); + } + ast.tokens = []; + opts.originalText = text.trimRight(); + return astComments; +} + +function ensureAllCommentsPrinted(astComments) { + if (!astComments) { + return; + } + + for (let i = 0; i < astComments.length; ++i) { + if (astComments[i].value.trim() === "prettier-ignore") { + // If there's a prettier-ignore, we're not printing that sub-tree so we + // don't know if the comments was printed or not. + return; + } + } + + astComments.forEach(comment => { + if (!comment.printed) { + throw new Error( + 'Comment "' + + comment.value.trim() + + '" was not printed. Please report this error!' + ); + } + delete comment.printed; + }); +} + +function format(text, opts, addAlignmentSize) { + addAlignmentSize = addAlignmentSize || 0; + + const ast = parser.parse(text, opts); + + const formattedRangeOnly = formatRange(text, opts, ast); + if (formattedRangeOnly) { + return formattedRangeOnly; + } + + const astComments = attachComments(text, ast, opts); + const doc = printAstToDoc(ast, opts, addAlignmentSize); + opts.newLine = guessLineEnding(text); + const str = printDocToString(doc, opts); + ensureAllCommentsPrinted(astComments); + // Remove extra leading indentation as well as the added indentation after last newline + if (addAlignmentSize > 0) { + return str.trim() + opts.newLine; + } + return str; +} + +function findSiblingAncestors(startNodeAndParents, endNodeAndParents) { + let resultStartNode = startNodeAndParents.node; + let resultEndNode = endNodeAndParents.node; + + for (const endParent of endNodeAndParents.parentNodes) { + if (util.locStart(endParent) >= util.locStart(startNodeAndParents.node)) { + resultEndNode = endParent; + } else { + break; + } + } + + for (const startParent of startNodeAndParents.parentNodes) { + if (util.locEnd(startParent) <= util.locEnd(endNodeAndParents.node)) { + resultStartNode = startParent; + } else { + break; + } + } + + return { + startNode: resultStartNode, + endNode: resultEndNode + }; +} + +function findNodeAtOffset(node, offset, parentNodes) { + parentNodes = parentNodes || []; + const start = util.locStart(node); + const end = util.locEnd(node); + if (start <= offset && offset <= end) { + for (const childNode of comments.getSortedChildNodes(node)) { + const childResult = findNodeAtOffset( + childNode, + offset, + [node].concat(parentNodes) + ); + if (childResult) { + return childResult; + } + } + + if (isSourceElement(node)) { + return { + node: node, + parentNodes: parentNodes + }; + } + } +} + +// See https://www.ecma-international.org/ecma-262/5.1/#sec-A.5 +function isSourceElement(node) { + if (node == null) { + return false; + } + switch (node.type) { + case "FunctionDeclaration": + case "BlockStatement": + case "BreakStatement": + case "ContinueStatement": + case "DebuggerStatement": + case "DoWhileStatement": + case "EmptyStatement": + case "ExpressionStatement": + case "ForInStatement": + case "ForStatement": + case "IfStatement": + case "LabeledStatement": + case "ReturnStatement": + case "SwitchStatement": + case "ThrowStatement": + case "TryStatement": + case "VariableDeclaration": + case "WhileStatement": + case "WithStatement": + return true; + } + return false; +} + +function calculateRange(text, opts, ast) { + // Contract the range so that it has non-whitespace characters at its endpoints. + // This ensures we can format a range that doesn't end on a node. + const rangeStringOrig = text.slice(opts.rangeStart, opts.rangeEnd); + const startNonWhitespace = Math.max( + opts.rangeStart + rangeStringOrig.search(/\S/), + opts.rangeStart + ); + let endNonWhitespace; + for ( + endNonWhitespace = opts.rangeEnd; + endNonWhitespace > opts.rangeStart; + --endNonWhitespace + ) { + if (text[endNonWhitespace - 1].match(/\S/)) { + break; + } + } + + const startNodeAndParents = findNodeAtOffset(ast, startNonWhitespace); + const endNodeAndParents = findNodeAtOffset(ast, endNonWhitespace); + const siblingAncestors = findSiblingAncestors( + startNodeAndParents, + endNodeAndParents + ); + const startNode = siblingAncestors.startNode; + const endNode = siblingAncestors.endNode; + const rangeStart = Math.min(util.locStart(startNode), util.locStart(endNode)); + const rangeEnd = Math.max(util.locEnd(startNode), util.locEnd(endNode)); + + return { + rangeStart: rangeStart, + rangeEnd: rangeEnd + }; +} + +function formatRange(text, opts, ast) { + if (0 < opts.rangeStart || opts.rangeEnd < text.length) { + const range = calculateRange(text, opts, ast); + const rangeStart = range.rangeStart; + const rangeEnd = range.rangeEnd; + const rangeString = text.slice(rangeStart, rangeEnd); + + // Try to extend the range backwards to the beginning of the line. + // This is so we can detect indentation correctly and restore it. + // Use `Math.min` since `lastIndexOf` returns 0 when `rangeStart` is 0 + const rangeStart2 = Math.min( + rangeStart, + text.lastIndexOf("\n", rangeStart) + 1 + ); + const indentString = text.slice(rangeStart2, rangeStart); + + const alignmentSize = util.getAlignmentSize(indentString, opts.tabWidth); + + const rangeFormatted = format( + rangeString, + Object.assign({}, opts, { + rangeStart: 0, + rangeEnd: Infinity, + printWidth: opts.printWidth - alignmentSize + }), + alignmentSize + ); + + // Since the range contracts to avoid trailing whitespace, + // we need to remove the newline that was inserted by the `format` call. + const rangeTrimmed = rangeFormatted.trimRight(); + + return text.slice(0, rangeStart) + rangeTrimmed + text.slice(rangeEnd); + } +} + +function formatWithShebang(text, opts) { + if (!text.startsWith("#!")) { + return format(text, opts); + } + + const index = text.indexOf("\n"); + const shebang = text.slice(0, index + 1); + const nextChar = text.charAt(index + 1); + const newLine = nextChar === "\n" ? "\n" : nextChar === "\r" ? "\r\n" : ""; + + return shebang + newLine + format(text, opts); +} + +var index = { + format: function(text, opts) { + return formatWithShebang(text, normalizeOptions(opts)); + }, + check: function(text, opts) { + try { + const formatted = formatWithShebang(text, normalizeOptions(opts)); + return formatted === text; + } catch (e) { + return false; + } + }, + version: version, + __debug: { + parse: function(text, opts) { + return parser.parse(text, opts); + }, + formatAST: function(ast, opts) { + opts = normalizeOptions(opts); + const doc = printAstToDoc(ast, opts); + const str = printDocToString(doc, opts); + return str; + }, + // Doesn't handle shebang for now + formatDoc: function(doc, opts) { + opts = normalizeOptions(opts); + const debug = printDocToDebug(doc); + const str = format(debug, opts); + return str; + }, + printToDoc: function(text, opts) { + opts = normalizeOptions(opts); + const ast = parser.parse(text, opts); + attachComments(text, ast, opts); + const doc = printAstToDoc(ast, opts); + return doc; + }, + printDocToString: function(doc, opts) { + opts = normalizeOptions(opts); + const str = printDocToString(doc, opts); + return str; + } + } +}; + +module.exports = index; diff --git a/docs/parser-babylon.js b/docs/parser-babylon.js new file mode 100644 index 00000000..931acb2d --- /dev/null +++ b/docs/parser-babylon.js @@ -0,0 +1,18 @@ +var babylon = (function () { +function unwrapExports (x) { + return x && x.__esModule ? x['default'] : x; +} + +function createCommonjsModule(fn, module) { + return module = { exports: {} }, fn(module, module.exports), module.exports; +} + +var parserBabylon_1 = createCommonjsModule(function (module) { +"use strict";function createCommonjsModule$$1(t,e){return e={exports:{}},t(e,e.exports),e.exports}function parse(t){const e=index,s={sourceType:"module",allowImportExportEverywhere:!1,allowReturnOutsideFunction:!0,plugins:["jsx","flow","doExpressions","objectRestSpread","decorators","classProperties","exportExtensions","asyncGenerators","functionBind","functionSent","dynamicImport"]};let i;try{i=e.parse(t,s);}catch(i){try{return e.parse(t,Object.assign({},s,{strictMode:!1}))}catch(t){throw i}}return delete i.tokens,i}var index=createCommonjsModule$$1(function(t,e){function s(t){var e={};for(var s in b)e[s]=t&&s in t?t[s]:b[s];return e}function i(t){var e=t.split(" ");return function(t){return e.indexOf(t)>=0}}function r(t,e){for(var s=65536,i=0;it)return!1;if((s+=e[i+1])>=t)return!0}return!1}function a(t){return t<65?36===t:t<91||(t<97?95===t:t<123||(t<=65535?t>=170&&j.test(String.fromCharCode(t)):r(t,D)))}function n(t){return t<48?36===t:t<58||!(t<65)&&(t<91||(t<97?95===t:t<123||(t<=65535?t>=170&&R.test(String.fromCharCode(t)):r(t,D)||r(t,O))))}function o(t){return 10===t||13===t||8232===t||8233===t}function h(t,e){for(var s=1,i=0;;){F.lastIndex=i;var r=F.exec(t);if(!(r&&r.index>10),56320+(t-65536&1023))}function l(t){for(var e={},s=t,i=Array.isArray(s),r=0,s=i?s:s[Symbol.iterator]();;){var a;if(i){if(r>=s.length)break;a=s[r++];}else{if((r=s.next()).done)break;a=r.value;}e[a]=!0;}return e}function u(t){return null!=t&&"Property"===t.type&&"init"===t.kind&&!1===t.method}function d(t){return"DeclareExportAllDeclaration"===t.type||"DeclareExportDeclaration"===t.type&&(!t.declaration||"TypeAlias"!==t.declaration.type&&"InterfaceDeclaration"!==t.declaration.type)}function f(t){if("JSXIdentifier"===t.type)return t.name;if("JSXNamespacedName"===t.type)return t.namespace.name+":"+t.name.name;if("JSXMemberExpression"===t.type)return f(t.object)+"."+f(t.property);throw new Error("Node had unexpected type: "+t.type)}function m(t,e){return x(e,t).parse()}function y(t,e){var s=x(e,t);return s.options.strictMode&&(s.state.strict=!0),s.getExpression()}function x(t,e){return new(t&&t.plugins?v(t.plugins):tt)(t,e)}function v(t){var e=t.filter(function(t){return"estree"===t||"flow"===t||"jsx"===t});e.indexOf("flow")>=0&&(e=e.filter(function(t){return"flow"!==t})).push("flow"),e.indexOf("estree")>=0&&(e=e.filter(function(t){return"estree"!==t})).unshift("estree");var s=e.join("/"),i=pt[s];if(!i){i=tt;for(var r=e,a=Array.isArray(r),n=0,r=a?r:r[Symbol.iterator]();;){var o;if(a){if(n>=r.length)break;o=r[n++];}else{if((n=r.next()).done)break;o=n.value;}i=Z[o](i);}pt[s]=i;}return i}Object.defineProperty(e,"__esModule",{value:!0});var b={sourceType:"script",sourceFilename:void 0,startLine:1,allowReturnOutsideFunction:!1,allowImportExportEverywhere:!1,allowSuperOutsideMethod:!1,plugins:[],strictMode:null,ranges:!1},g=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},w=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e);},P=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e},A=!0,k=function t(e){var s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};g(this,t),this.label=e,this.keyword=s.keyword,this.beforeExpr=!!s.beforeExpr,this.startsExpr=!!s.startsExpr,this.rightAssociative=!!s.rightAssociative,this.isLoop=!!s.isLoop,this.isAssign=!!s.isAssign,this.prefix=!!s.prefix,this.postfix=!!s.postfix,this.binop=s.binop||null,this.updateContext=null;},E=function(t){function e(s){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return g(this,e),i.keyword=s,P(this,t.call(this,s,i))}return w(e,t),e}(k),T=function(t){function e(s,i){return g(this,e),P(this,t.call(this,s,{beforeExpr:A,binop:i}))}return w(e,t),e}(k),C={num:new k("num",{startsExpr:!0}),regexp:new k("regexp",{startsExpr:!0}),string:new k("string",{startsExpr:!0}),name:new k("name",{startsExpr:!0}),eof:new k("eof"),bracketL:new k("[",{beforeExpr:A,startsExpr:!0}),bracketR:new k("]"),braceL:new k("{",{beforeExpr:A,startsExpr:!0}),braceBarL:new k("{|",{beforeExpr:A,startsExpr:!0}),braceR:new k("}"),braceBarR:new k("|}"),parenL:new k("(",{beforeExpr:A,startsExpr:!0}),parenR:new k(")"),comma:new k(",",{beforeExpr:A}),semi:new k(";",{beforeExpr:A}),colon:new k(":",{beforeExpr:A}),doubleColon:new k("::",{beforeExpr:A}),dot:new k("."),question:new k("?",{beforeExpr:A}),arrow:new k("=>",{beforeExpr:A}),template:new k("template"),ellipsis:new k("...",{beforeExpr:A}),backQuote:new k("`",{startsExpr:!0}),dollarBraceL:new k("${",{beforeExpr:A,startsExpr:!0}),at:new k("@"),hash:new k("#"),eq:new k("=",{beforeExpr:A,isAssign:!0}),assign:new k("_=",{beforeExpr:A,isAssign:!0}),incDec:new k("++/--",{prefix:!0,postfix:!0,startsExpr:!0}),prefix:new k("prefix",{beforeExpr:A,prefix:!0,startsExpr:!0}),logicalOR:new T("||",1),logicalAND:new T("&&",2),bitwiseOR:new T("|",3),bitwiseXOR:new T("^",4),bitwiseAND:new T("&",5),equality:new T("==/!=",6),relational:new T("",7),bitShift:new T("<>",8),plusMin:new k("+/-",{beforeExpr:A,binop:9,prefix:!0,startsExpr:!0}),modulo:new T("%",10),star:new T("*",10),slash:new T("/",10),exponent:new k("**",{beforeExpr:A,binop:11,rightAssociative:!0})},N={break:new E("break"),case:new E("case",{beforeExpr:A}),catch:new E("catch"),continue:new E("continue"),debugger:new E("debugger"),default:new E("default",{beforeExpr:A}),do:new E("do",{isLoop:!0,beforeExpr:A}),else:new E("else",{beforeExpr:A}),finally:new E("finally"),for:new E("for",{isLoop:!0}),function:new E("function",{startsExpr:!0}),if:new E("if"),return:new E("return",{beforeExpr:A}),switch:new E("switch"),throw:new E("throw",{beforeExpr:A}),try:new E("try"),var:new E("var"),let:new E("let"),const:new E("const"),while:new E("while",{isLoop:!0}),with:new E("with"),new:new E("new",{beforeExpr:A,startsExpr:!0}),this:new E("this",{startsExpr:!0}),super:new E("super",{startsExpr:!0}),class:new E("class"),extends:new E("extends",{beforeExpr:A}),export:new E("export"),import:new E("import",{startsExpr:!0}),yield:new E("yield",{beforeExpr:A,startsExpr:!0}),null:new E("null",{startsExpr:!0}),true:new E("true",{startsExpr:!0}),false:new E("false",{startsExpr:!0}),in:new E("in",{beforeExpr:A,binop:7}),instanceof:new E("instanceof",{beforeExpr:A,binop:7}),typeof:new E("typeof",{beforeExpr:A,prefix:!0,startsExpr:!0}),void:new E("void",{beforeExpr:A,prefix:!0,startsExpr:!0}),delete:new E("delete",{beforeExpr:A,prefix:!0,startsExpr:!0})};Object.keys(N).forEach(function(t){C["_"+t]=N[t];});var S={6:i("enum await"),strict:i("implements interface let package private protected public static yield"),strictBind:i("eval arguments")},L=i("break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this let const class extends export import yield super"),I="ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠ-ࢴࢶ-ࢽऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౠౡಀಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൔ-ൖൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᲀ-ᲈᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕ℘-ℝℤΩℨK-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ々-〇〡-〩〱-〵〸-〼ぁ-ゖ゛-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿕ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞮꞰ-ꞷꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭥꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ",_="‌‍·̀-ͯ·҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-٩ٰۖ-ۜ۟-۪ۤۧۨ-ۭ۰-۹ܑܰ-݊ަ-ް߀-߉߫-߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛ࣔ-ࣣ࣡-ःऺ-़ा-ॏ॑-ॗॢॣ०-९ঁ-ঃ়া-ৄেৈো-্ৗৢৣ০-৯ਁ-ਃ਼ਾ-ੂੇੈੋ-੍ੑ੦-ੱੵઁ-ઃ઼ા-ૅે-ૉો-્ૢૣ૦-૯ଁ-ଃ଼ା-ୄେୈୋ-୍ୖୗୢୣ୦-୯ஂா-ூெ-ைொ-்ௗ௦-௯ఀ-ఃా-ౄె-ైొ-్ౕౖౢౣ౦-౯ಁ-ಃ಼ಾ-ೄೆ-ೈೊ-್ೕೖೢೣ೦-೯ഁ-ഃാ-ൄെ-ൈൊ-്ൗൢൣ൦-൯ංඃ්ා-ුූෘ-ෟ෦-෯ෲෳัิ-ฺ็-๎๐-๙ັິ-ູົຼ່-ໍ໐-໙༘༙༠-༩༹༵༷༾༿ཱ-྄྆྇ྍ-ྗྙ-ྼ࿆ါ-ှ၀-၉ၖ-ၙၞ-ၠၢ-ၤၧ-ၭၱ-ၴႂ-ႍႏ-ႝ፝-፟፩-፱ᜒ-᜔ᜲ-᜴ᝒᝓᝲᝳ឴-៓៝០-៩᠋-᠍᠐-᠙ᢩᤠ-ᤫᤰ-᤻᥆-᥏᧐-᧚ᨗ-ᨛᩕ-ᩞ᩠-᩿᩼-᪉᪐-᪙᪰-᪽ᬀ-ᬄ᬴-᭄᭐-᭙᭫-᭳ᮀ-ᮂᮡ-ᮭ᮰-᮹᯦-᯳ᰤ-᰷᱀-᱉᱐-᱙᳐-᳔᳒-᳨᳭ᳲ-᳴᳸᳹᷀-᷵᷻-᷿‿⁀⁔⃐-⃥⃜⃡-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〯꘠-꘩꙯ꙴ-꙽ꚞꚟ꛰꛱ꠂ꠆ꠋꠣ-ꠧꢀꢁꢴ-ꣅ꣐-꣙꣠-꣱꤀-꤉ꤦ-꤭ꥇ-꥓ꦀ-ꦃ꦳-꧀꧐-꧙ꧥ꧰-꧹ꨩ-ꨶꩃꩌꩍ꩐-꩙ꩻ-ꩽꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫫ-ꫯꫵ꫶ꯣ-ꯪ꯬꯭꯰-꯹ﬞ︀-️︠-︯︳︴﹍-﹏0-9_",j=new RegExp("["+I+"]"),R=new RegExp("["+I+_+"]");I=_=null;var D=[0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,17,26,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,26,45,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,785,52,76,44,33,24,27,35,42,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,54,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,86,25,391,63,32,0,449,56,264,8,2,36,18,0,50,29,881,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,881,68,12,0,67,12,65,0,32,6124,20,754,9486,1,3071,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,4149,196,60,67,1213,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42710,42,4148,12,221,3,5761,10591,541],O=[509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,1306,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,52,0,13,2,49,13,10,2,4,9,83,11,7,0,161,11,6,9,7,3,57,0,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,87,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,423,9,838,7,2,7,17,9,57,21,2,13,19882,9,135,4,60,6,26,9,1016,45,17,3,19723,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,2214,6,110,6,6,9,792487,239],M=/\r\n?|\n|\u2028|\u2029/,F=new RegExp(M.source,"g"),B=/[\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff]/,q=function t(e,s,i,r){g(this,t),this.token=e,this.isExpr=!!s,this.preserveSpace=!!i,this.override=r;},V={braceStatement:new q("{",!1),braceExpression:new q("{",!0),templateQuasi:new q("${",!0),parenStatement:new q("(",!1),parenExpression:new q("(",!0),template:new q("`",!0,!0,function(t){return t.readTmplToken()}),functionExpression:new q("function",!0)};C.parenR.updateContext=C.braceR.updateContext=function(){if(1!==this.state.context.length){var t=this.state.context.pop();t===V.braceStatement&&this.curContext()===V.functionExpression?(this.state.context.pop(),this.state.exprAllowed=!1):t===V.templateQuasi?this.state.exprAllowed=!0:this.state.exprAllowed=!t.isExpr;}else this.state.exprAllowed=!0;},C.name.updateContext=function(t){this.state.exprAllowed=!1,t!==C._let&&t!==C._const&&t!==C._var||M.test(this.input.slice(this.state.end))&&(this.state.exprAllowed=!0);},C.braceL.updateContext=function(t){this.state.context.push(this.braceIsBlock(t)?V.braceStatement:V.braceExpression),this.state.exprAllowed=!0;},C.dollarBraceL.updateContext=function(){this.state.context.push(V.templateQuasi),this.state.exprAllowed=!0;},C.parenL.updateContext=function(t){var e=t===C._if||t===C._for||t===C._with||t===C._while;this.state.context.push(e?V.parenStatement:V.parenExpression),this.state.exprAllowed=!0;},C.incDec.updateContext=function(){},C._function.updateContext=function(){this.curContext()!==V.braceStatement&&this.state.context.push(V.functionExpression),this.state.exprAllowed=!1;},C.backQuote.updateContext=function(){this.curContext()===V.template?this.state.context.pop():this.state.context.push(V.template),this.state.exprAllowed=!1;};var U=function t(e,s){g(this,t),this.line=e,this.column=s;},X=function t(e,s){g(this,t),this.start=e,this.end=s;},J=function(t){function e(){return g(this,e),P(this,t.apply(this,arguments))}return w(e,t),e.prototype.raise=function(t,e){var s=h(this.input,t);e+=" ("+s.line+":"+s.column+")";var i=new SyntaxError(e);throw i.pos=t,i.loc=s,i},e}(function(t){function e(){return g(this,e),P(this,t.apply(this,arguments))}return w(e,t),e.prototype.addComment=function(t){this.filename&&(t.loc.filename=this.filename),this.state.trailingComments.push(t),this.state.leadingComments.push(t);},e.prototype.processComment=function(t){if(!("Program"===t.type&&t.body.length>0)){var e=this.state.commentStack,s=void 0,i=void 0,r=void 0,a=void 0,n=void 0;if(this.state.trailingComments.length>0)this.state.trailingComments[0].start>=t.end?(r=this.state.trailingComments,this.state.trailingComments=[]):this.state.trailingComments.length=0;else{var o=p(e);e.length>0&&o.trailingComments&&o.trailingComments[0].start>=t.end&&(r=o.trailingComments,o.trailingComments=null);}for(e.length>0&&p(e).start>=t.start&&(s=e.pop());e.length>0&&p(e).start>=t.start;)i=e.pop();if(!i&&s&&(i=s),s&&("ObjectProperty"===s.type||"CallExpression"===t.type)&&this.state.leadingComments.length>0&&p(this.state.leadingComments).start>=t.start&&this.state.commentPreviousNode){for(n=0;n0&&(s.trailingComments=this.state.leadingComments,this.state.leadingComments=[]);}if(i){if(i.leadingComments)if(i!==t&&p(i.leadingComments).end<=t.start)t.leadingComments=i.leadingComments,i.leadingComments=null;else for(a=i.leadingComments.length-2;a>=0;--a)if(i.leadingComments[a].end<=t.start){t.leadingComments=i.leadingComments.splice(0,a+1);break}}else if(this.state.leadingComments.length>0)if(p(this.state.leadingComments).end<=t.start){if(this.state.commentPreviousNode)for(n=0;n0&&(t.leadingComments=this.state.leadingComments,this.state.leadingComments=[]);}else{for(a=0;at.start);a++);var h=this.state.leadingComments.slice(0,a);t.leadingComments=0===h.length?null:h,0===(r=this.state.leadingComments.slice(a)).length&&(r=null);}this.state.commentPreviousNode=t,r&&(r.length&&r[0].start>=t.start&&p(r).end<=t.end?t.innerComments=r:t.trailingComments=r),e.push(t);}},e}(function(){function t(){g(this,t);}return t.prototype.isReservedWord=function(t){return"await"===t?this.inModule:S[6](t)},t.prototype.hasPlugin=function(t){return!!this.plugins[t]},t}())),W=function(){function t(){g(this,t);}return t.prototype.init=function(t,e){this.strict=!1!==t.strictMode&&"module"===t.sourceType,this.input=e,this.potentialArrowAt=-1,this.inMethod=this.inFunction=this.inGenerator=this.inAsync=this.inPropertyName=this.inType=this.inClass=this.inClassProperty=this.noAnonFunctionType=!1,this.labels=[],this.decorators=[],this.tokens=[],this.comments=[],this.trailingComments=[],this.leadingComments=[],this.commentStack=[],this.pos=this.lineStart=0,this.curLine=t.startLine,this.type=C.eof,this.value=null,this.start=this.end=this.pos,this.startLoc=this.endLoc=this.curPosition(),this.lastTokEndLoc=this.lastTokStartLoc=null,this.lastTokStart=this.lastTokEnd=this.pos,this.context=[V.braceStatement],this.exprAllowed=!0,this.containsEsc=this.containsOctal=!1,this.octalPosition=null,this.invalidTemplateEscapePosition=null,this.exportedIdentifiers=[];},t.prototype.curPosition=function(){return new U(this.curLine,this.pos-this.lineStart)},t.prototype.clone=function(e){var s=new t;for(var i in this){var r=this[i];e&&"context"!==i||!Array.isArray(r)||(r=r.slice()),s[i]=r;}return s},t}(),G=function t(e){g(this,t),this.type=e.type,this.value=e.value,this.start=e.start,this.end=e.end,this.loc=new X(e.startLoc,e.endLoc);},K=function(t){function e(){return g(this,e),P(this,t.apply(this,arguments))}return w(e,t),e.prototype.addExtra=function(t,e,s){t&&((t.extra=t.extra||{})[e]=s);},e.prototype.isRelational=function(t){return this.match(C.relational)&&this.state.value===t},e.prototype.expectRelational=function(t){this.isRelational(t)?this.next():this.unexpected(null,C.relational);},e.prototype.isContextual=function(t){return this.match(C.name)&&this.state.value===t},e.prototype.eatContextual=function(t){return this.state.value===t&&this.eat(C.name)},e.prototype.expectContextual=function(t,e){this.eatContextual(t)||this.unexpected(null,e);},e.prototype.canInsertSemicolon=function(){return this.match(C.eof)||this.match(C.braceR)||M.test(this.input.slice(this.state.lastTokEnd,this.state.start))},e.prototype.isLineTerminator=function(){return this.eat(C.semi)||this.canInsertSemicolon()},e.prototype.semicolon=function(){this.isLineTerminator()||this.unexpected(null,C.semi);},e.prototype.expect=function(t,e){this.eat(t)||this.unexpected(e,t);},e.prototype.unexpected=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Unexpected token";throw"string"!=typeof e&&(e="Unexpected token, expected "+e.label),this.raise(null!=t?t:this.state.start,e)},e}(function(t){function e(s,i){g(this,e);var r=P(this,t.call(this));return r.state=new W,r.state.init(s,i),r}return w(e,t),e.prototype.next=function(){this.isLookahead||this.state.tokens.push(new G(this.state)),this.state.lastTokEnd=this.state.end,this.state.lastTokStart=this.state.start,this.state.lastTokEndLoc=this.state.endLoc,this.state.lastTokStartLoc=this.state.startLoc,this.nextToken();},e.prototype.eat=function(t){return!!this.match(t)&&(this.next(),!0)},e.prototype.match=function(t){return this.state.type===t},e.prototype.isKeyword=function(t){return L(t)},e.prototype.lookahead=function(){var t=this.state;this.state=t.clone(!0),this.isLookahead=!0,this.next(),this.isLookahead=!1;var e=this.state.clone(!0);return this.state=t,e},e.prototype.setStrict=function(t){if(this.state.strict=t,this.match(C.num)||this.match(C.string)){for(this.state.pos=this.state.start;this.state.pos=this.input.length?this.finishToken(C.eof):t.override?t.override(this):this.readToken(this.fullCharCodeAtPos())},e.prototype.readToken=function(t){return a(t)||92===t?this.readWord():this.getTokenFromCode(t)},e.prototype.fullCharCodeAtPos=function(){var t=this.input.charCodeAt(this.state.pos);return t<=55295||t>=57344?t:(t<<10)+this.input.charCodeAt(this.state.pos+1)-56613888},e.prototype.pushComment=function(t,e,s,i,r,a){var n={type:t?"CommentBlock":"CommentLine",value:e,start:s,end:i,loc:new X(r,a)};this.isLookahead||(this.state.tokens.push(n),this.state.comments.push(n),this.addComment(n));},e.prototype.skipBlockComment=function(){var t=this.state.curPosition(),e=this.state.pos,s=this.input.indexOf("*/",this.state.pos+=2);-1===s&&this.raise(this.state.pos-2,"Unterminated comment"),this.state.pos=s+2,F.lastIndex=e;for(var i=void 0;(i=F.exec(this.input))&&i.index8&&t<14||t>=5760&&B.test(String.fromCharCode(t))))break t;++this.state.pos;}}},e.prototype.finishToken=function(t,e){this.state.end=this.state.pos,this.state.endLoc=this.state.curPosition();var s=this.state.type;this.state.type=t,this.state.value=e,this.updateContext(s);},e.prototype.readToken_dot=function(){var t=this.input.charCodeAt(this.state.pos+1);if(t>=48&&t<=57)return this.readNumber(!0);var e=this.input.charCodeAt(this.state.pos+2);return 46===t&&46===e?(this.state.pos+=3,this.finishToken(C.ellipsis)):(++this.state.pos,this.finishToken(C.dot))},e.prototype.readToken_slash=function(){return this.state.exprAllowed?(++this.state.pos,this.readRegexp()):61===this.input.charCodeAt(this.state.pos+1)?this.finishOp(C.assign,2):this.finishOp(C.slash,1)},e.prototype.readToken_mult_modulo=function(t){var e=42===t?C.star:C.modulo,s=1,i=this.input.charCodeAt(this.state.pos+1);return 42===i&&(s++,i=this.input.charCodeAt(this.state.pos+2),e=C.exponent),61===i&&(s++,e=C.assign),this.finishOp(e,s)},e.prototype.readToken_pipe_amp=function(t){var e=this.input.charCodeAt(this.state.pos+1);return e===t?this.finishOp(124===t?C.logicalOR:C.logicalAND,2):61===e?this.finishOp(C.assign,2):124===t&&125===e&&this.hasPlugin("flow")?this.finishOp(C.braceBarR,2):this.finishOp(124===t?C.bitwiseOR:C.bitwiseAND,1)},e.prototype.readToken_caret=function(){return 61===this.input.charCodeAt(this.state.pos+1)?this.finishOp(C.assign,2):this.finishOp(C.bitwiseXOR,1)},e.prototype.readToken_plus_min=function(t){var e=this.input.charCodeAt(this.state.pos+1);return e===t?45===e&&62===this.input.charCodeAt(this.state.pos+2)&&M.test(this.input.slice(this.state.lastTokEnd,this.state.pos))?(this.skipLineComment(3),this.skipSpace(),this.nextToken()):this.finishOp(C.incDec,2):61===e?this.finishOp(C.assign,2):this.finishOp(C.plusMin,1)},e.prototype.readToken_lt_gt=function(t){var e=this.input.charCodeAt(this.state.pos+1),s=1;return e===t?(s=62===t&&62===this.input.charCodeAt(this.state.pos+2)?3:2,61===this.input.charCodeAt(this.state.pos+s)?this.finishOp(C.assign,s+1):this.finishOp(C.bitShift,s)):33===e&&60===t&&45===this.input.charCodeAt(this.state.pos+2)&&45===this.input.charCodeAt(this.state.pos+3)?(this.inModule&&this.unexpected(),this.skipLineComment(4),this.skipSpace(),this.nextToken()):(61===e&&(s=2),this.finishOp(C.relational,s))},e.prototype.readToken_eq_excl=function(t){var e=this.input.charCodeAt(this.state.pos+1);return 61===e?this.finishOp(C.equality,61===this.input.charCodeAt(this.state.pos+2)?3:2):61===t&&62===e?(this.state.pos+=2,this.finishToken(C.arrow)):this.finishOp(61===t?C.eq:C.prefix,1)},e.prototype.getTokenFromCode=function(t){switch(t){case 35:if(this.hasPlugin("classPrivateProperties")&&this.state.inClass)return++this.state.pos,this.finishToken(C.hash);this.raise(this.state.pos,"Unexpected character '"+c(t)+"'");case 46:return this.readToken_dot();case 40:return++this.state.pos,this.finishToken(C.parenL);case 41:return++this.state.pos,this.finishToken(C.parenR);case 59:return++this.state.pos,this.finishToken(C.semi);case 44:return++this.state.pos,this.finishToken(C.comma);case 91:return++this.state.pos,this.finishToken(C.bracketL);case 93:return++this.state.pos,this.finishToken(C.bracketR);case 123:return this.hasPlugin("flow")&&124===this.input.charCodeAt(this.state.pos+1)?this.finishOp(C.braceBarL,2):(++this.state.pos,this.finishToken(C.braceL));case 125:return++this.state.pos,this.finishToken(C.braceR);case 58:return this.hasPlugin("functionBind")&&58===this.input.charCodeAt(this.state.pos+1)?this.finishOp(C.doubleColon,2):(++this.state.pos,this.finishToken(C.colon));case 63:return++this.state.pos,this.finishToken(C.question);case 64:return++this.state.pos,this.finishToken(C.at);case 96:return++this.state.pos,this.finishToken(C.backQuote);case 48:var e=this.input.charCodeAt(this.state.pos+1);if(120===e||88===e)return this.readRadixNumber(16);if(111===e||79===e)return this.readRadixNumber(8);if(98===e||66===e)return this.readRadixNumber(2);case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.readNumber(!1);case 34:case 39:return this.readString(t);case 47:return this.readToken_slash();case 37:case 42:return this.readToken_mult_modulo(t);case 124:case 38:return this.readToken_pipe_amp(t);case 94:return this.readToken_caret();case 43:case 45:return this.readToken_plus_min(t);case 60:case 62:return this.readToken_lt_gt(t);case 61:case 33:return this.readToken_eq_excl(t);case 126:return this.finishOp(C.prefix,1)}this.raise(this.state.pos,"Unexpected character '"+c(t)+"'");},e.prototype.finishOp=function(t,e){var s=this.input.slice(this.state.pos,this.state.pos+e);return this.state.pos+=e,this.finishToken(t,s)},e.prototype.readRegexp=function(){for(var t=this.state.pos,e=void 0,s=void 0;;){this.state.pos>=this.input.length&&this.raise(t,"Unterminated regular expression");var i=this.input.charAt(this.state.pos);if(M.test(i)&&this.raise(t,"Unterminated regular expression"),e)e=!1;else{if("["===i)s=!0;else if("]"===i&&s)s=!1;else if("/"===i&&!s)break;e="\\"===i;}++this.state.pos;}var r=this.input.slice(t,this.state.pos);++this.state.pos;var a=this.readWord1();return a&&(/^[gmsiyu]*$/.test(a)||this.raise(t,"Invalid regular expression flag")),this.finishToken(C.regexp,{pattern:r,flags:a})},e.prototype.readInt=function(t,e){for(var s=this.state.pos,i=0,r=0,a=null==e?1/0:e;r=97?n-97+10:n>=65?n-65+10:n>=48&&n<=57?n-48:1/0)>=t)break;++this.state.pos,i=i*t+o;}return this.state.pos===s||null!=e&&this.state.pos-s!==e?null:i},e.prototype.readRadixNumber=function(t){this.state.pos+=2;var e=this.readInt(t);return null==e&&this.raise(this.state.start+2,"Expected number in radix "+t),a(this.fullCharCodeAtPos())&&this.raise(this.state.pos,"Identifier directly after number"),this.finishToken(C.num,e)},e.prototype.readNumber=function(t){var e=this.state.pos,s=48===this.input.charCodeAt(e),i=!1;t||null!==this.readInt(10)||this.raise(e,"Invalid number"),s&&this.state.pos==e+1&&(s=!1);var r=this.input.charCodeAt(this.state.pos);46!==r||s||(++this.state.pos,this.readInt(10),i=!0,r=this.input.charCodeAt(this.state.pos)),69!==r&&101!==r||s||(43!==(r=this.input.charCodeAt(++this.state.pos))&&45!==r||++this.state.pos,null===this.readInt(10)&&this.raise(e,"Invalid number"),i=!0),a(this.fullCharCodeAtPos())&&this.raise(this.state.pos,"Identifier directly after number");var n=this.input.slice(e,this.state.pos),o=void 0;return i?o=parseFloat(n):s&&1!==n.length?this.state.strict?this.raise(e,"Invalid number"):o=/[89]/.test(n)?parseInt(n,10):parseInt(n,8):o=parseInt(n,10),this.finishToken(C.num,o)},e.prototype.readCodePoint=function(t){var e=void 0;if(123===this.input.charCodeAt(this.state.pos)){var s=++this.state.pos;if(e=this.readHexChar(this.input.indexOf("}",this.state.pos)-this.state.pos,t),++this.state.pos,null===e)--this.state.invalidTemplateEscapePosition;else if(e>1114111){if(!t)return this.state.invalidTemplateEscapePosition=s-2,null;this.raise(s,"Code point out of bounds");}}else e=this.readHexChar(4,t);return e},e.prototype.readString=function(t){for(var e="",s=++this.state.pos;;){this.state.pos>=this.input.length&&this.raise(this.state.start,"Unterminated string constant");var i=this.input.charCodeAt(this.state.pos);if(i===t)break;92===i?(e+=this.input.slice(s,this.state.pos),e+=this.readEscapedChar(!1),s=this.state.pos):(o(i)&&this.raise(this.state.start,"Unterminated string constant"),++this.state.pos);}return e+=this.input.slice(s,this.state.pos++),this.finishToken(C.string,e)},e.prototype.readTmplToken=function(){for(var t="",e=this.state.pos,s=!1;;){this.state.pos>=this.input.length&&this.raise(this.state.start,"Unterminated template");var i=this.input.charCodeAt(this.state.pos);if(96===i||36===i&&123===this.input.charCodeAt(this.state.pos+1))return this.state.pos===this.state.start&&this.match(C.template)?36===i?(this.state.pos+=2,this.finishToken(C.dollarBraceL)):(++this.state.pos,this.finishToken(C.backQuote)):(t+=this.input.slice(e,this.state.pos),this.finishToken(C.template,s?null:t));if(92===i){t+=this.input.slice(e,this.state.pos);var r=this.readEscapedChar(!0);null===r?s=!0:t+=r,e=this.state.pos;}else if(o(i)){switch(t+=this.input.slice(e,this.state.pos),++this.state.pos,i){case 13:10===this.input.charCodeAt(this.state.pos)&&++this.state.pos;case 10:t+="\n";break;default:t+=String.fromCharCode(i);}++this.state.curLine,this.state.lineStart=this.state.pos,e=this.state.pos;}else++this.state.pos;}},e.prototype.readEscapedChar=function(t){var e=!t,s=this.input.charCodeAt(++this.state.pos);switch(++this.state.pos,s){case 110:return"\n";case 114:return"\r";case 120:var i=this.readHexChar(2,e);return null===i?null:String.fromCharCode(i);case 117:var r=this.readCodePoint(e);return null===r?null:c(r);case 116:return"\t";case 98:return"\b";case 118:return"\v";case 102:return"\f";case 13:10===this.input.charCodeAt(this.state.pos)&&++this.state.pos;case 10:return this.state.lineStart=this.state.pos,++this.state.curLine,"";default:if(s>=48&&s<=55){var a=this.state.pos-1,n=this.input.substr(this.state.pos-1,3).match(/^[0-7]+/)[0],o=parseInt(n,8);if(o>255&&(n=n.slice(0,-1),o=parseInt(n,8)),o>0){if(t)return this.state.invalidTemplateEscapePosition=a,null;this.state.strict?this.raise(a,"Octal literal in strict mode"):this.state.containsOctal||(this.state.containsOctal=!0,this.state.octalPosition=a);}return this.state.pos+=n.length-1,String.fromCharCode(o)}return String.fromCharCode(s)}},e.prototype.readHexChar=function(t,e){var s=this.state.pos,i=this.readInt(16,t);return null===i&&(e?this.raise(s,"Bad character escape sequence"):(this.state.pos=s-1,this.state.invalidTemplateEscapePosition=s-1)),i},e.prototype.readWord1=function(){this.state.containsEsc=!1;for(var t="",e=!0,s=this.state.pos;this.state.pos=i.length)break;n=i[a++];}else{if((a=i.next()).done)break;n=a.value;}n.name===e&&this.raise(s.start,"Label '"+e+"' is already declared");}for(var o=this.state.type.isLoop?"loop":this.match(C._switch)?"switch":null,h=this.state.labels.length-1;h>=0;h--){var p=this.state.labels[h];if(p.statementStart!==t.start)break;p.statementStart=this.state.start,p.kind=o;}return this.state.labels.push({name:e,kind:o,statementStart:this.state.start}),t.body=this.parseStatement(!0),this.state.labels.pop(),t.label=s,this.finishNode(t,"LabeledStatement")},e.prototype.parseExpressionStatement=function(t,e){return t.expression=e,this.semicolon(),this.finishNode(t,"ExpressionStatement")},e.prototype.parseBlock=function(t){var e=this.startNode();return this.expect(C.braceL),this.parseBlockBody(e,t,!1,C.braceR),this.finishNode(e,"BlockStatement")},e.prototype.isValidDirective=function(t){return"ExpressionStatement"===t.type&&"StringLiteral"===t.expression.type&&!t.expression.extra.parenthesized},e.prototype.parseBlockBody=function(t,e,s,i){for(var r=t.body=[],a=t.directives=[],n=!1,o=void 0,h=void 0;!this.eat(i);){n||!this.state.containsOctal||h||(h=this.state.octalPosition);var p=this.parseStatement(!0,s);if(e&&!n&&this.isValidDirective(p)){var c=this.stmtToDirective(p);a.push(c),void 0===o&&"use strict"===c.value.value&&(o=this.state.strict,this.setStrict(!0),h&&this.raise(h,"Octal literal in strict mode"));}else n=!0,r.push(p);}!1===o&&this.setStrict(!1);},e.prototype.parseFor=function(t,e){return t.init=e,this.expect(C.semi),t.test=this.match(C.semi)?null:this.parseExpression(),this.expect(C.semi),t.update=this.match(C.parenR)?null:this.parseExpression(),this.expect(C.parenR),t.body=this.parseStatement(!1),this.state.labels.pop(),this.finishNode(t,"ForStatement")},e.prototype.parseForIn=function(t,e,s){var i=this.match(C._in)?"ForInStatement":"ForOfStatement";return s?this.eatContextual("of"):this.next(),"ForOfStatement"===i&&(t.await=!!s),t.left=e,t.right=this.parseExpression(),this.expect(C.parenR),t.body=this.parseStatement(!1),this.state.labels.pop(),this.finishNode(t,i)},e.prototype.parseVar=function(t,e,s){var i=t.declarations=[];for(t.kind=s.keyword;;){var r=this.startNode();if(this.parseVarHead(r),this.eat(C.eq)?r.init=this.parseMaybeAssign(e):s!==C._const||this.match(C._in)||this.isContextual("of")?"Identifier"===r.id.type||e&&(this.match(C._in)||this.isContextual("of"))?r.init=null:this.raise(this.state.lastTokEnd,"Complex binding patterns require an initialization value"):this.unexpected(),i.push(this.finishNode(r,"VariableDeclarator")),!this.eat(C.comma))break}return t},e.prototype.parseVarHead=function(t){t.id=this.parseBindingAtom(),this.checkLVal(t.id,!0,void 0,"variable declaration");},e.prototype.parseFunction=function(t,e,s,i,r){var a=this.state.inMethod;return this.state.inMethod=!1,this.initFunction(t,i),this.match(C.star)&&(t.async&&!this.hasPlugin("asyncGenerators")?this.unexpected():(t.generator=!0,this.next())),!e||r||this.match(C.name)||this.match(C._yield)||this.unexpected(),(this.match(C.name)||this.match(C._yield))&&(t.id=this.parseBindingIdentifier()),this.parseFunctionParams(t),this.parseFunctionBody(t,s),this.state.inMethod=a,this.finishNode(t,e?"FunctionDeclaration":"FunctionExpression")},e.prototype.parseFunctionParams=function(t){this.expect(C.parenL),t.params=this.parseBindingList(C.parenR);},e.prototype.parseClass=function(t,e,s){return this.next(),this.takeDecorators(t),this.parseClassId(t,e,s),this.parseClassSuper(t),this.parseClassBody(t),this.finishNode(t,e?"ClassDeclaration":"ClassExpression")},e.prototype.isClassProperty=function(){return this.match(C.eq)||this.match(C.semi)||this.match(C.braceR)},e.prototype.isClassMethod=function(){return this.match(C.parenL)},e.prototype.isNonstaticConstructor=function(t){return!(t.computed||t.static||"constructor"!==t.key.name&&"constructor"!==t.key.value)},e.prototype.parseClassBody=function(t){var e=this.state.strict;this.state.strict=!0,this.state.inClass=!0;var s=!1,i=[],r=this.startNode();for(r.body=[],this.expect(C.braceL);!this.eat(C.braceR);)if(this.eat(C.semi))i.length>0&&this.raise(this.state.lastTokEnd,"Decorators must not be followed by a semicolon");else if(this.match(C.at))i.push(this.parseDecorator());else{var a=this.startNode();if(i.length&&(a.decorators=i,i=[]),this.hasPlugin("classPrivateProperties")&&this.match(C.hash))this.next(),this.parsePropertyName(a),r.body.push(this.parsePrivateClassProperty(a));else{if(a.static=!1,this.match(C.name)&&"static"===this.state.value){var n=this.parseIdentifier(!0);if(this.isClassMethod()){a.kind="method",a.computed=!1,a.key=n,this.parseClassMethod(r,a,!1,!1);continue}if(this.isClassProperty()){a.computed=!1,a.key=n,r.body.push(this.parseClassProperty(a));continue}a.static=!0;}if(this.eat(C.star))a.kind="method",this.parsePropertyName(a),this.isNonstaticConstructor(a)&&this.raise(a.key.start,"Constructor can't be a generator"),a.computed||!a.static||"prototype"!==a.key.name&&"prototype"!==a.key.value||this.raise(a.key.start,"Classes may not have static property named prototype"),this.parseClassMethod(r,a,!0,!1);else{var o=this.match(C.name),h=this.parsePropertyName(a);if(a.computed||!a.static||"prototype"!==a.key.name&&"prototype"!==a.key.value||this.raise(a.key.start,"Classes may not have static property named prototype"),this.isClassMethod())this.isNonstaticConstructor(a)?(s?this.raise(h.start,"Duplicate constructor in the same class"):a.decorators&&this.raise(a.start,"You can't attach decorators to a class constructor"),s=!0,a.kind="constructor"):a.kind="method",this.parseClassMethod(r,a,!1,!1);else if(this.isClassProperty())this.isNonstaticConstructor(a)&&this.raise(a.key.start,"Classes may not have a non-static field named 'constructor'"),r.body.push(this.parseClassProperty(a));else if(o&&"async"===h.name&&!this.isLineTerminator()){var p=this.hasPlugin("asyncGenerators")&&this.eat(C.star);a.kind="method",this.parsePropertyName(a),this.isNonstaticConstructor(a)&&this.raise(a.key.start,"Constructor can't be an async function"),this.parseClassMethod(r,a,p,!0);}else!o||"get"!==h.name&&"set"!==h.name||this.isLineTerminator()&&this.match(C.star)?this.isLineTerminator()?(this.isNonstaticConstructor(a)&&this.raise(a.key.start,"Classes may not have a non-static field named 'constructor'"),r.body.push(this.parseClassProperty(a))):this.unexpected():(a.kind=h.name,this.parsePropertyName(a),this.isNonstaticConstructor(a)&&this.raise(a.key.start,"Constructor can't have get/set modifier"),this.parseClassMethod(r,a,!1,!1),this.checkGetterSetterParamCount(a));}}}i.length&&this.raise(this.state.start,"You have trailing decorators with no method"),t.body=this.finishNode(r,"ClassBody"),this.state.inClass=!1,this.state.strict=e;},e.prototype.parsePrivateClassProperty=function(t){return this.state.inClassProperty=!0,this.match(C.eq)?(this.next(),t.value=this.parseMaybeAssign()):t.value=null,this.semicolon(),this.state.inClassProperty=!1,this.finishNode(t,"ClassPrivateProperty")},e.prototype.parseClassProperty=function(t){var e=this.hasPlugin("classProperties"),s="You can only use Class Properties when the 'classProperties' plugin is enabled.";return t.typeAnnotation||e||this.raise(t.start,s),this.state.inClassProperty=!0,this.match(C.eq)?(e||this.raise(this.state.start,s),this.next(),t.value=this.parseMaybeAssign()):t.value=null,this.semicolon(),this.state.inClassProperty=!1,this.finishNode(t,"ClassProperty")},e.prototype.parseClassMethod=function(t,e,s,i){this.parseMethod(e,s,i),t.body.push(this.finishNode(e,"ClassMethod"));},e.prototype.parseClassId=function(t,e,s){this.match(C.name)?t.id=this.parseIdentifier():s||!e?t.id=null:this.unexpected(null,"A class name is required");},e.prototype.parseClassSuper=function(t){t.superClass=this.eat(C._extends)?this.parseExprSubscripts():null;},e.prototype.parseExport=function(t){if(this.eat(C._export),this.match(C.star)){var e=this.startNode();if(this.next(),!this.hasPlugin("exportExtensions")||!this.eatContextual("as"))return this.parseExportFrom(t,!0),this.finishNode(t,"ExportAllDeclaration");e.exported=this.parseIdentifier(!0),t.specifiers=[this.finishNode(e,"ExportNamespaceSpecifier")],this.parseExportSpecifiersMaybe(t),this.parseExportFrom(t,!0);}else if(this.hasPlugin("exportExtensions")&&this.isExportDefaultSpecifier()){var s=this.startNode();s.exported=this.parseIdentifier(!0);var i=[this.finishNode(s,"ExportDefaultSpecifier")];if(t.specifiers=i,this.match(C.comma)&&this.lookahead().type===C.star){this.expect(C.comma);var r=this.startNode();this.expect(C.star),this.expectContextual("as"),r.exported=this.parseIdentifier(),i.push(this.finishNode(r,"ExportNamespaceSpecifier"));}else this.parseExportSpecifiersMaybe(t);this.parseExportFrom(t,!0);}else{if(this.eat(C._default)){var a=this.startNode(),n=!1;return this.eat(C._function)?a=this.parseFunction(a,!0,!1,!1,!0):this.isContextual("async")&&this.lookahead().type===C._function?(this.eatContextual("async"),this.eat(C._function),a=this.parseFunction(a,!0,!1,!0,!0)):this.match(C._class)?a=this.parseClass(a,!0,!0):(n=!0,a=this.parseMaybeAssign()),t.declaration=a,n&&this.semicolon(),this.checkExport(t,!0,!0),this.finishNode(t,"ExportDefaultDeclaration")}this.shouldParseExportDeclaration()?(t.specifiers=[],t.source=null,t.declaration=this.parseExportDeclaration(t)):(t.declaration=null,t.specifiers=this.parseExportSpecifiers(),this.parseExportFrom(t));}return this.checkExport(t,!0),this.finishNode(t,"ExportNamedDeclaration")},e.prototype.parseExportDeclaration=function(t){return this.parseStatement(!0)},e.prototype.isExportDefaultSpecifier=function(){if(this.match(C.name))return"async"!==this.state.value;if(!this.match(C._default))return!1;var t=this.lookahead();return t.type===C.comma||t.type===C.name&&"from"===t.value},e.prototype.parseExportSpecifiersMaybe=function(t){this.eat(C.comma)&&(t.specifiers=t.specifiers.concat(this.parseExportSpecifiers()));},e.prototype.parseExportFrom=function(t,e){this.eatContextual("from")?(t.source=this.match(C.string)?this.parseExprAtom():this.unexpected(),this.checkExport(t)):e?this.unexpected():t.source=null,this.semicolon();},e.prototype.shouldParseExportDeclaration=function(){return"var"===this.state.type.keyword||"const"===this.state.type.keyword||"let"===this.state.type.keyword||"function"===this.state.type.keyword||"class"===this.state.type.keyword||this.isContextual("async")},e.prototype.checkExport=function(t,e,s){if(e)if(s)this.checkDuplicateExports(t,"default");else if(t.specifiers&&t.specifiers.length)for(var i=t.specifiers,r=Array.isArray(i),a=0,i=r?i:i[Symbol.iterator]();;){var n;if(r){if(a>=i.length)break;n=i[a++];}else{if((a=i.next()).done)break;n=a.value;}var o=n;this.checkDuplicateExports(o,o.exported.name);}else if(t.declaration)if("FunctionDeclaration"===t.declaration.type||"ClassDeclaration"===t.declaration.type)this.checkDuplicateExports(t,t.declaration.id.name);else if("VariableDeclaration"===t.declaration.type)for(var h=t.declaration.declarations,p=Array.isArray(h),c=0,h=p?h:h[Symbol.iterator]();;){var l;if(p){if(c>=h.length)break;l=h[c++];}else{if((c=h.next()).done)break;l=c.value;}var u=l;this.checkDeclaration(u.id);}if(this.state.decorators.length){var d=t.declaration&&("ClassDeclaration"===t.declaration.type||"ClassExpression"===t.declaration.type);if(!t.declaration||!d)throw this.raise(t.start,"You can only use decorators on an export when exporting a class");this.takeDecorators(t.declaration);}},e.prototype.checkDeclaration=function(t){if("ObjectPattern"===t.type)for(var e=t.properties,s=Array.isArray(e),i=0,e=s?e:e[Symbol.iterator]();;){var r;if(s){if(i>=e.length)break;r=e[i++];}else{if((i=e.next()).done)break;r=i.value;}var a=r;this.checkDeclaration(a);}else if("ArrayPattern"===t.type)for(var n=t.elements,o=Array.isArray(n),h=0,n=o?n:n[Symbol.iterator]();;){var p;if(o){if(h>=n.length)break;p=n[h++];}else{if((h=n.next()).done)break;p=h.value;}var c=p;c&&this.checkDeclaration(c);}else"ObjectProperty"===t.type?this.checkDeclaration(t.value):"RestElement"===t.type?this.checkDeclaration(t.argument):"Identifier"===t.type&&this.checkDuplicateExports(t,t.name);},e.prototype.checkDuplicateExports=function(t,e){this.state.exportedIdentifiers.indexOf(e)>-1&&this.raiseDuplicateExportError(t,e),this.state.exportedIdentifiers.push(e);},e.prototype.raiseDuplicateExportError=function(t,e){throw this.raise(t.start,"default"===e?"Only one default export allowed per module.":"`"+e+"` has already been exported. Exported identifiers must be unique.")},e.prototype.parseExportSpecifiers=function(){var t=[],e=!0,s=void 0;for(this.expect(C.braceL);!this.eat(C.braceR);){if(e)e=!1;else if(this.expect(C.comma),this.eat(C.braceR))break;var i=this.match(C._default);i&&!s&&(s=!0);var r=this.startNode();r.local=this.parseIdentifier(i),r.exported=this.eatContextual("as")?this.parseIdentifier(!0):r.local.__clone(),t.push(this.finishNode(r,"ExportSpecifier"));}return s&&!this.isContextual("from")&&this.unexpected(),t},e.prototype.parseImport=function(t){return this.eat(C._import),this.match(C.string)?(t.specifiers=[],t.source=this.parseExprAtom()):(t.specifiers=[],this.parseImportSpecifiers(t),this.expectContextual("from"),t.source=this.match(C.string)?this.parseExprAtom():this.unexpected()),this.semicolon(),this.finishNode(t,"ImportDeclaration")},e.prototype.parseImportSpecifiers=function(t){var e=!0;if(this.match(C.name)){var s=this.state.start,i=this.state.startLoc;if(t.specifiers.push(this.parseImportSpecifierDefault(this.parseIdentifier(),s,i)),!this.eat(C.comma))return}if(this.match(C.star)){var r=this.startNode();return this.next(),this.expectContextual("as"),r.local=this.parseIdentifier(),this.checkLVal(r.local,!0,void 0,"import namespace specifier"),void t.specifiers.push(this.finishNode(r,"ImportNamespaceSpecifier"))}for(this.expect(C.braceL);!this.eat(C.braceR);){if(e)e=!1;else if(this.eat(C.colon)&&this.unexpected(null,"ES2015 named imports do not destructure. Use another statement for destructuring after the import."),this.expect(C.comma),this.eat(C.braceR))break;this.parseImportSpecifier(t);}},e.prototype.parseImportSpecifier=function(t){var e=this.startNode();e.imported=this.parseIdentifier(!0),this.eatContextual("as")?e.local=this.parseIdentifier():(this.checkReservedWord(e.imported.name,e.start,!0,!0),e.local=e.imported.__clone()),this.checkLVal(e.local,!0,void 0,"import specifier"),t.specifiers.push(this.finishNode(e,"ImportSpecifier"));},e.prototype.parseImportSpecifierDefault=function(t,e,s){var i=this.startNodeAt(e,s);return i.local=t,this.checkLVal(i.local,!0,void 0,"default import specifier"),this.finishNode(i,"ImportDefaultSpecifier")},e}(function(t){function e(){return g(this,e),P(this,t.apply(this,arguments))}return w(e,t),e.prototype.checkPropClash=function(t,e){if(!t.computed&&!t.kind){var s=t.key;"__proto__"===("Identifier"===s.type?s.name:String(s.value))&&(e.proto&&this.raise(s.start,"Redefinition of __proto__ property"),e.proto=!0);}},e.prototype.getExpression=function(){this.nextToken();var t=this.parseExpression();return this.match(C.eof)||this.unexpected(),t},e.prototype.parseExpression=function(t,e){var s=this.state.start,i=this.state.startLoc,r=this.parseMaybeAssign(t,e);if(this.match(C.comma)){var a=this.startNodeAt(s,i);for(a.expressions=[r];this.eat(C.comma);)a.expressions.push(this.parseMaybeAssign(t,e));return this.toReferencedList(a.expressions),this.finishNode(a,"SequenceExpression")}return r},e.prototype.parseMaybeAssign=function(t,e,s,i){var r=this.state.start,a=this.state.startLoc;if(this.match(C._yield)&&this.state.inGenerator){var n=this.parseYield();return s&&(n=s.call(this,n,r,a)),n}var o=void 0;e?o=!1:(e={start:0},o=!0),(this.match(C.parenL)||this.match(C.name))&&(this.state.potentialArrowAt=this.state.start);var h=this.parseMaybeConditional(t,e,i);if(s&&(h=s.call(this,h,r,a)),this.state.type.isAssign){var p=this.startNodeAt(r,a);if(p.operator=this.state.value,p.left=this.match(C.eq)?this.toAssignable(h,void 0,"assignment expression"):h,e.start=0,this.checkLVal(h,void 0,void 0,"assignment expression"),h.extra&&h.extra.parenthesized){var c=void 0;"ObjectPattern"===h.type?c="`({a}) = 0` use `({a} = 0)`":"ArrayPattern"===h.type&&(c="`([a]) = 0` use `([a] = 0)`"),c&&this.raise(h.start,"You're trying to assign to a parenthesized expression, eg. instead of "+c);}return this.next(),p.right=this.parseMaybeAssign(t),this.finishNode(p,"AssignmentExpression")}return o&&e.start&&this.unexpected(e.start),h},e.prototype.parseMaybeConditional=function(t,e,s){var i=this.state.start,r=this.state.startLoc,a=this.parseExprOps(t,e);return e&&e.start?a:this.parseConditional(a,t,i,r,s)},e.prototype.parseConditional=function(t,e,s,i){if(this.eat(C.question)){var r=this.startNodeAt(s,i);return r.test=t,r.consequent=this.parseMaybeAssign(),this.expect(C.colon),r.alternate=this.parseMaybeAssign(e),this.finishNode(r,"ConditionalExpression")}return t},e.prototype.parseExprOps=function(t,e){var s=this.state.start,i=this.state.startLoc,r=this.parseMaybeUnary(e);return e&&e.start?r:this.parseExprOp(r,s,i,-1,t)},e.prototype.parseExprOp=function(t,e,s,i,r){var a=this.state.type.binop;if(!(null==a||r&&this.match(C._in))&&a>i){var n=this.startNodeAt(e,s);n.left=t,n.operator=this.state.value,"**"!==n.operator||"UnaryExpression"!==t.type||!t.extra||t.extra.parenthesizedArgument||t.extra.parenthesized||this.raise(t.argument.start,"Illegal expression. Wrap left hand side or entire exponentiation in parentheses.");var o=this.state.type;this.next();var h=this.state.start,p=this.state.startLoc;return n.right=this.parseExprOp(this.parseMaybeUnary(),h,p,o.rightAssociative?a-1:a,r),this.finishNode(n,o===C.logicalOR||o===C.logicalAND?"LogicalExpression":"BinaryExpression"),this.parseExprOp(n,e,s,i,r)}return t},e.prototype.parseMaybeUnary=function(t){if(this.state.type.prefix){var e=this.startNode(),s=this.match(C.incDec);e.operator=this.state.value,e.prefix=!0,this.next();var i=this.state.type;return e.argument=this.parseMaybeUnary(),this.addExtra(e,"parenthesizedArgument",!(i!==C.parenL||e.argument.extra&&e.argument.extra.parenthesized)),t&&t.start&&this.unexpected(t.start),s?this.checkLVal(e.argument,void 0,void 0,"prefix operation"):this.state.strict&&"delete"===e.operator&&"Identifier"===e.argument.type&&this.raise(e.start,"Deleting local variable in strict mode"),this.finishNode(e,s?"UpdateExpression":"UnaryExpression")}var r=this.state.start,a=this.state.startLoc,n=this.parseExprSubscripts(t);if(t&&t.start)return n;for(;this.state.type.postfix&&!this.canInsertSemicolon();){var o=this.startNodeAt(r,a);o.operator=this.state.value,o.prefix=!1,o.argument=n,this.checkLVal(n,void 0,void 0,"postfix operation"),this.next(),n=this.finishNode(o,"UpdateExpression");}return n},e.prototype.parseExprSubscripts=function(t){var e=this.state.start,s=this.state.startLoc,i=this.state.potentialArrowAt,r=this.parseExprAtom(t);return"ArrowFunctionExpression"===r.type&&r.start===i?r:t&&t.start?r:this.parseSubscripts(r,e,s)},e.prototype.parseSubscripts=function(t,e,s,i){for(;;){if(!i&&this.eat(C.doubleColon)){var r=this.startNodeAt(e,s);return r.object=t,r.callee=this.parseNoCallExpr(),this.parseSubscripts(this.finishNode(r,"BindExpression"),e,s,i)}if(this.eat(C.dot)){var a=this.startNodeAt(e,s);a.object=t,a.property=this.hasPlugin("classPrivateProperties")?this.parseMaybePrivateName():this.parseIdentifier(!0),a.computed=!1,t=this.finishNode(a,"MemberExpression");}else if(this.eat(C.bracketL)){var n=this.startNodeAt(e,s);n.object=t,n.property=this.parseExpression(),n.computed=!0,this.expect(C.bracketR),t=this.finishNode(n,"MemberExpression");}else if(!i&&this.match(C.parenL)){var o=this.state.potentialArrowAt===t.start&&"Identifier"===t.type&&"async"===t.name&&!this.canInsertSemicolon();this.next();var h=this.startNodeAt(e,s);if(h.callee=t,h.arguments=this.parseCallExpressionArguments(C.parenR,o),"Import"===h.callee.type){1!==h.arguments.length&&this.raise(h.start,"import() requires exactly one argument");var p=h.arguments[0];p&&"SpreadElement"===p.type&&this.raise(p.start,"... is not allowed in import()");}if(t=this.finishNode(h,"CallExpression"),o&&this.shouldParseAsyncArrow())return this.parseAsyncArrowFromCallExpression(this.startNodeAt(e,s),h);this.toReferencedList(h.arguments);}else{if(!this.match(C.backQuote))return t;var c=this.startNodeAt(e,s);c.tag=t,c.quasi=this.parseTemplate(!0),t=this.finishNode(c,"TaggedTemplateExpression");}}throw new Error("Unreachable")},e.prototype.parseCallExpressionArguments=function(t,e){for(var s=[],i=void 0,r=!0;!this.eat(t);){if(r)r=!1;else if(this.expect(C.comma),this.eat(t))break;this.match(C.parenL)&&!i&&(i=this.state.start),s.push(this.parseExprListItem(!1,e?{start:0}:void 0,e?{start:0}:void 0));}return e&&i&&this.shouldParseAsyncArrow()&&this.unexpected(),s},e.prototype.shouldParseAsyncArrow=function(){return this.match(C.arrow)},e.prototype.parseAsyncArrowFromCallExpression=function(t,e){return this.expect(C.arrow),this.parseArrowExpression(t,e.arguments,!0)},e.prototype.parseNoCallExpr=function(){var t=this.state.start,e=this.state.startLoc;return this.parseSubscripts(this.parseExprAtom(),t,e,!0)},e.prototype.parseExprAtom=function(t){var e=this.state.potentialArrowAt===this.state.start,s=void 0;switch(this.state.type){case C._super:return this.state.inMethod||this.state.inClassProperty||this.options.allowSuperOutsideMethod||this.raise(this.state.start,"'super' outside of function or class"),s=this.startNode(),this.next(),this.match(C.parenL)||this.match(C.bracketL)||this.match(C.dot)||this.unexpected(),this.match(C.parenL)&&"constructor"!==this.state.inMethod&&!this.options.allowSuperOutsideMethod&&this.raise(s.start,"super() is only valid inside a class constructor. Make sure the method name is spelled exactly as 'constructor'."),this.finishNode(s,"Super");case C._import:return this.hasPlugin("dynamicImport")||this.unexpected(),s=this.startNode(),this.next(),this.match(C.parenL)||this.unexpected(null,C.parenL),this.finishNode(s,"Import");case C._this:return s=this.startNode(),this.next(),this.finishNode(s,"ThisExpression");case C._yield:this.state.inGenerator&&this.unexpected();case C.name:s=this.startNode();var i="await"===this.state.value&&this.state.inAsync,r=this.shouldAllowYieldIdentifier(),a=this.parseIdentifier(i||r);if("await"===a.name){if(this.state.inAsync||this.inModule)return this.parseAwait(s)}else{if("async"===a.name&&this.match(C._function)&&!this.canInsertSemicolon())return this.next(),this.parseFunction(s,!1,!1,!0);if(e&&"async"===a.name&&this.match(C.name)){var n=[this.parseIdentifier()];return this.expect(C.arrow),this.parseArrowExpression(s,n,!0)}}return e&&!this.canInsertSemicolon()&&this.eat(C.arrow)?this.parseArrowExpression(s,[a]):a;case C._do:if(this.hasPlugin("doExpressions")){var o=this.startNode();this.next();var h=this.state.inFunction,p=this.state.labels;return this.state.labels=[],this.state.inFunction=!1,o.body=this.parseBlock(!1,!0),this.state.inFunction=h,this.state.labels=p,this.finishNode(o,"DoExpression")}case C.regexp:var c=this.state.value;return s=this.parseLiteral(c.value,"RegExpLiteral"),s.pattern=c.pattern,s.flags=c.flags,s;case C.num:return this.parseLiteral(this.state.value,"NumericLiteral");case C.string:return this.parseLiteral(this.state.value,"StringLiteral");case C._null:return s=this.startNode(),this.next(),this.finishNode(s,"NullLiteral");case C._true:case C._false:return s=this.startNode(),s.value=this.match(C._true),this.next(),this.finishNode(s,"BooleanLiteral");case C.parenL:return this.parseParenAndDistinguishExpression(e);case C.bracketL:return s=this.startNode(),this.next(),s.elements=this.parseExprList(C.bracketR,!0,t),this.toReferencedList(s.elements),this.finishNode(s,"ArrayExpression");case C.braceL:return this.parseObj(!1,t);case C._function:return this.parseFunctionExpression();case C.at:this.parseDecorators();case C._class:return s=this.startNode(),this.takeDecorators(s),this.parseClass(s,!1);case C.hash:if(this.hasPlugin("classPrivateProperties"))return this.parseMaybePrivateName();this.unexpected();case C._new:return this.parseNew();case C.backQuote:return this.parseTemplate(!1);case C.doubleColon:s=this.startNode(),this.next(),s.object=null;var l=s.callee=this.parseNoCallExpr();if("MemberExpression"===l.type)return this.finishNode(s,"BindExpression");throw this.raise(l.start,"Binding should be performed on object property.");default:throw this.unexpected()}},e.prototype.parseMaybePrivateName=function(){if(this.eat(C.hash)){var t=this.startNode();return t.name=this.parseIdentifier(!0),this.finishNode(t,"PrivateName")}return this.parseIdentifier(!0)},e.prototype.parseFunctionExpression=function(){var t=this.startNode(),e=this.parseIdentifier(!0);return this.state.inGenerator&&this.eat(C.dot)&&this.hasPlugin("functionSent")?this.parseMetaProperty(t,e,"sent"):this.parseFunction(t,!1)},e.prototype.parseMetaProperty=function(t,e,s){return t.meta=e,t.property=this.parseIdentifier(!0),t.property.name!==s&&this.raise(t.property.start,"The only valid meta property for new is "+e.name+"."+s),this.finishNode(t,"MetaProperty")},e.prototype.parseLiteral=function(t,e,s,i){s=s||this.state.start,i=i||this.state.startLoc;var r=this.startNodeAt(s,i);return this.addExtra(r,"rawValue",t),this.addExtra(r,"raw",this.input.slice(s,this.state.end)),r.value=t,this.next(),this.finishNode(r,e)},e.prototype.parseParenExpression=function(){this.expect(C.parenL);var t=this.parseExpression();return this.expect(C.parenR),t},e.prototype.parseParenAndDistinguishExpression=function(t){var e=this.state.start,s=this.state.startLoc,i=void 0;this.expect(C.parenL);for(var r=this.state.start,a=this.state.startLoc,n=[],o={start:0},h={start:0},p=!0,c=void 0,l=void 0;!this.match(C.parenR);){if(p)p=!1;else if(this.expect(C.comma,h.start||null),this.match(C.parenR)){l=this.state.start;break}if(this.match(C.ellipsis)){var u=this.state.start,d=this.state.startLoc;c=this.state.start,n.push(this.parseParenItem(this.parseRest(),u,d));break}n.push(this.parseMaybeAssign(!1,o,this.parseParenItem,h));}var f=this.state.start,m=this.state.startLoc;this.expect(C.parenR);var y=this.startNodeAt(e,s);if(t&&this.shouldParseArrow()&&(y=this.parseArrow(y))){for(var x=n,v=Array.isArray(x),b=0,x=v?x:x[Symbol.iterator]();;){var g;if(v){if(b>=x.length)break;g=x[b++];}else{if((b=x.next()).done)break;g=b.value;}var w=g;w.extra&&w.extra.parenthesized&&this.unexpected(w.extra.parenStart);}return this.parseArrowExpression(y,n)}return n.length||this.unexpected(this.state.lastTokStart),l&&this.unexpected(l),c&&this.unexpected(c),o.start&&this.unexpected(o.start),h.start&&this.unexpected(h.start),n.length>1?((i=this.startNodeAt(r,a)).expressions=n,this.toReferencedList(i.expressions),this.finishNodeAt(i,"SequenceExpression",f,m)):i=n[0],this.addExtra(i,"parenthesized",!0),this.addExtra(i,"parenStart",e),i},e.prototype.shouldParseArrow=function(){return!this.canInsertSemicolon()},e.prototype.parseArrow=function(t){if(this.eat(C.arrow))return t},e.prototype.parseParenItem=function(t,e,s){return t},e.prototype.parseNew=function(){var t=this.startNode(),e=this.parseIdentifier(!0);if(this.eat(C.dot)){var s=this.parseMetaProperty(t,e,"target");return this.state.inFunction||this.raise(s.property.start,"new.target can only be used in functions"),s}return t.callee=this.parseNoCallExpr(),this.eat(C.parenL)?(t.arguments=this.parseExprList(C.parenR),this.toReferencedList(t.arguments)):t.arguments=[],this.finishNode(t,"NewExpression")},e.prototype.parseTemplateElement=function(t){var e=this.startNode();return null===this.state.value&&(t?this.state.invalidTemplateEscapePosition=null:this.raise(this.state.invalidTemplateEscapePosition,"Invalid escape sequence in template")),e.value={raw:this.input.slice(this.state.start,this.state.end).replace(/\r\n?/g,"\n"),cooked:this.state.value},this.next(),e.tail=this.match(C.backQuote),this.finishNode(e,"TemplateElement")},e.prototype.parseTemplate=function(t){var e=this.startNode();this.next(),e.expressions=[];var s=this.parseTemplateElement(t);for(e.quasis=[s];!s.tail;)this.expect(C.dollarBraceL),e.expressions.push(this.parseExpression()),this.expect(C.braceR),e.quasis.push(s=this.parseTemplateElement(t));return this.next(),this.finishNode(e,"TemplateLiteral")},e.prototype.parseObj=function(t,e){var s=[],i=Object.create(null),r=!0,a=this.startNode();a.properties=[],this.next();for(var n=null;!this.eat(C.braceR);){if(r)r=!1;else if(this.expect(C.comma),this.eat(C.braceR))break;for(;this.match(C.at);)s.push(this.parseDecorator());var o=this.startNode(),h=!1,p=!1,c=void 0,l=void 0;if(s.length&&(o.decorators=s,s=[]),this.hasPlugin("objectRestSpread")&&this.match(C.ellipsis)){if(o=this.parseSpread(t?{start:0}:void 0),o.type=t?"RestElement":"SpreadElement",t&&this.toAssignable(o.argument,!0,"object pattern"),a.properties.push(o),!t)continue;var u=this.state.start;if(null!==n)this.unexpected(n,"Cannot have multiple rest elements when destructuring");else{if(this.eat(C.braceR))break;if(!this.match(C.comma)||this.lookahead().type!==C.braceR){n=u;continue}this.unexpected(u,"A trailing comma is not permitted after the rest element");}}if(o.method=!1,(t||e)&&(c=this.state.start,l=this.state.startLoc),t||(h=this.eat(C.star)),!t&&this.isContextual("async")){h&&this.unexpected();var d=this.parseIdentifier();this.match(C.colon)||this.match(C.parenL)||this.match(C.braceR)||this.match(C.eq)||this.match(C.comma)?(o.key=d,o.computed=!1):(p=!0,this.hasPlugin("asyncGenerators")&&(h=this.eat(C.star)),this.parsePropertyName(o));}else this.parsePropertyName(o);this.parseObjPropValue(o,c,l,h,p,t,e),this.checkPropClash(o,i),o.shorthand&&this.addExtra(o,"shorthand",!0),a.properties.push(o);}return null!==n&&this.unexpected(n,"The rest element has to be the last element when destructuring"),s.length&&this.raise(this.state.start,"You have trailing decorators with no property"),this.finishNode(a,t?"ObjectPattern":"ObjectExpression")},e.prototype.isGetterOrSetterMethod=function(t,e){return!e&&!t.computed&&"Identifier"===t.key.type&&("get"===t.key.name||"set"===t.key.name)&&(this.match(C.string)||this.match(C.num)||this.match(C.bracketL)||this.match(C.name)||!!this.state.type.keyword)},e.prototype.checkGetterSetterParamCount=function(t){var e="get"===t.kind?0:1;if(t.params.length!==e){var s=t.start;"get"===t.kind?this.raise(s,"getter should have no params"):this.raise(s,"setter should have exactly one param");}},e.prototype.parseObjectMethod=function(t,e,s,i){return s||e||this.match(C.parenL)?(i&&this.unexpected(),t.kind="method",t.method=!0,this.parseMethod(t,e,s),this.finishNode(t,"ObjectMethod")):this.isGetterOrSetterMethod(t,i)?((e||s)&&this.unexpected(),t.kind=t.key.name,this.parsePropertyName(t),this.parseMethod(t),this.checkGetterSetterParamCount(t),this.finishNode(t,"ObjectMethod")):void 0},e.prototype.parseObjectProperty=function(t,e,s,i,r){return t.shorthand=!1,this.eat(C.colon)?(t.value=i?this.parseMaybeDefault(this.state.start,this.state.startLoc):this.parseMaybeAssign(!1,r),this.finishNode(t,"ObjectProperty")):t.computed||"Identifier"!==t.key.type?void 0:(this.checkReservedWord(t.key.name,t.key.start,!0,!0),i?t.value=this.parseMaybeDefault(e,s,t.key.__clone()):this.match(C.eq)&&r?(r.start||(r.start=this.state.start),t.value=this.parseMaybeDefault(e,s,t.key.__clone())):t.value=t.key.__clone(),t.shorthand=!0,this.finishNode(t,"ObjectProperty"))},e.prototype.parseObjPropValue=function(t,e,s,i,r,a,n){this.parseObjectMethod(t,i,r,a)||this.parseObjectProperty(t,e,s,a,n)||this.unexpected();},e.prototype.parsePropertyName=function(t){if(this.eat(C.bracketL))t.computed=!0,t.key=this.parseMaybeAssign(),this.expect(C.bracketR);else{t.computed=!1;var e=this.state.inPropertyName;this.state.inPropertyName=!0,t.key=this.match(C.num)||this.match(C.string)?this.parseExprAtom():this.parseIdentifier(!0),this.state.inPropertyName=e;}return t.key},e.prototype.initFunction=function(t,e){t.id=null,t.generator=!1,t.expression=!1,t.async=!!e;},e.prototype.parseMethod=function(t,e,s){var i=this.state.inMethod;return this.state.inMethod=t.kind||!0,this.initFunction(t,s),this.expect(C.parenL),t.params=this.parseBindingList(C.parenR),t.generator=!!e,this.parseFunctionBody(t),this.state.inMethod=i,t},e.prototype.parseArrowExpression=function(t,e,s){return this.initFunction(t,s),t.params=this.toAssignableList(e,!0,"arrow function parameters"),this.parseFunctionBody(t,!0),this.finishNode(t,"ArrowFunctionExpression")},e.prototype.isStrictBody=function(t,e){if(!e&&t.body.directives.length)for(var s=t.body.directives,i=Array.isArray(s),r=0,s=i?s:s[Symbol.iterator]();;){var a;if(i){if(r>=s.length)break;a=s[r++];}else{if((r=s.next()).done)break;a=r.value;}if("use strict"===a.value.value)return!0}return!1},e.prototype.parseFunctionBody=function(t,e){var s=e&&!this.match(C.braceL),i=this.state.inAsync;if(this.state.inAsync=t.async,s)t.body=this.parseMaybeAssign(),t.expression=!0;else{var r=this.state.inFunction,a=this.state.inGenerator,n=this.state.labels;this.state.inFunction=!0,this.state.inGenerator=t.generator,this.state.labels=[],t.body=this.parseBlock(!0),t.expression=!1,this.state.inFunction=r,this.state.inGenerator=a,this.state.labels=n;}this.state.inAsync=i;var o=this.isStrictBody(t,s),h=this.state.strict||e||o;if(o&&t.id&&"Identifier"===t.id.type&&"yield"===t.id.name&&this.raise(t.id.start,"Binding yield in strict mode"),h){var p=Object.create(null),c=this.state.strict;o&&(this.state.strict=!0),t.id&&this.checkLVal(t.id,!0,void 0,"function name");for(var l=t.params,u=Array.isArray(l),d=0,l=u?l:l[Symbol.iterator]();;){var f;if(u){if(d>=l.length)break;f=l[d++];}else{if((d=l.next()).done)break;f=d.value;}var m=f;o&&"Identifier"!==m.type&&this.raise(m.start,"Non-simple parameter in strict mode"),this.checkLVal(m,!0,p,"function parameter list");}this.state.strict=c;}},e.prototype.parseExprList=function(t,e,s){for(var i=[],r=!0;!this.eat(t);){if(r)r=!1;else if(this.expect(C.comma),this.eat(t))break;i.push(this.parseExprListItem(e,s));}return i},e.prototype.parseExprListItem=function(t,e,s){return t&&this.match(C.comma)?null:this.match(C.ellipsis)?this.parseSpread(e):this.parseMaybeAssign(!1,e,this.parseParenItem,s)},e.prototype.parseIdentifier=function(t){var e=this.startNode();return t||this.checkReservedWord(this.state.value,this.state.start,!!this.state.type.keyword,!1),this.match(C.name)?e.name=this.state.value:this.state.type.keyword?e.name=this.state.type.keyword:this.unexpected(),!t&&"await"===e.name&&this.state.inAsync&&this.raise(e.start,"invalid use of await inside of an async function"),e.loc.identifierName=e.name,this.next(),this.finishNode(e,"Identifier")},e.prototype.checkReservedWord=function(t,e,s,i){(this.isReservedWord(t)||s&&this.isKeyword(t))&&this.raise(e,t+" is a reserved word"),this.state.strict&&(S.strict(t)||i&&S.strictBind(t))&&this.raise(e,t+" is a reserved word in strict mode");},e.prototype.parseAwait=function(t){return this.state.inAsync||this.unexpected(),this.match(C.star)&&this.raise(t.start,"await* has been removed from the async functions proposal. Use Promise.all() instead."),t.argument=this.parseMaybeUnary(),this.finishNode(t,"AwaitExpression")},e.prototype.parseYield=function(){var t=this.startNode();return this.next(),this.match(C.semi)||this.canInsertSemicolon()||!this.match(C.star)&&!this.state.type.startsExpr?(t.delegate=!1,t.argument=null):(t.delegate=this.eat(C.star),t.argument=this.parseMaybeAssign()),this.finishNode(t,"YieldExpression")},e}(function(t){function e(){return g(this,e),P(this,t.apply(this,arguments))}return w(e,t),e.prototype.toAssignable=function(t,e,s){if(t)switch(t.type){case"Identifier":case"PrivateName":case"ObjectPattern":case"ArrayPattern":case"AssignmentPattern":break;case"ObjectExpression":t.type="ObjectPattern";for(var i=t.properties,r=Array.isArray(i),a=0,i=r?i:i[Symbol.iterator]();;){var n;if(r){if(a>=i.length)break;n=i[a++];}else{if((a=i.next()).done)break;n=a.value;}var o=n;"ObjectMethod"===o.type?"get"===o.kind||"set"===o.kind?this.raise(o.key.start,"Object pattern can't contain getter or setter"):this.raise(o.key.start,"Object pattern can't contain methods"):this.toAssignable(o,e,"object destructuring pattern");}break;case"ObjectProperty":this.toAssignable(t.value,e,s);break;case"SpreadElement":t.type="RestElement";var h=t.argument;this.toAssignable(h,e,s);break;case"ArrayExpression":t.type="ArrayPattern",this.toAssignableList(t.elements,e,s);break;case"AssignmentExpression":"="===t.operator?(t.type="AssignmentPattern",delete t.operator):this.raise(t.left.end,"Only '=' operator can be used for specifying default value.");break;case"MemberExpression":if(!e)break;default:var p="Invalid left-hand side"+(s?" in "+s:"expression");this.raise(t.start,p);}return t},e.prototype.toAssignableList=function(t,e,s){var i=t.length;if(i){var r=t[i-1];if(r&&"RestElement"===r.type)--i;else if(r&&"SpreadElement"===r.type){r.type="RestElement";var a=r.argument;this.toAssignable(a,e,s),"Identifier"!==a.type&&"MemberExpression"!==a.type&&"ArrayPattern"!==a.type&&this.unexpected(a.start),--i;}}for(var n=0;n=a.length)break;h=a[o++];}else{if((o=a.next()).done)break;h=o.value;}var p=h;"ObjectProperty"===p.type&&(p=p.value),this.checkLVal(p,e,s,"object destructuring pattern");}break;case"ArrayPattern":for(var c=t.elements,l=Array.isArray(c),u=0,c=l?c:c[Symbol.iterator]();;){var d;if(l){if(u>=c.length)break;d=c[u++];}else{if((u=c.next()).done)break;d=u.value;}var f=d;f&&this.checkLVal(f,e,s,"array destructuring pattern");}break;case"AssignmentPattern":this.checkLVal(t.left,e,s,"assignment pattern");break;case"RestElement":this.checkLVal(t.argument,e,s,"rest element");break;default:var m=(e?"Binding invalid":"Invalid")+" left-hand side"+(i?" in "+i:"expression");this.raise(t.start,m);}},e}(function(t){function e(){return g(this,e),P(this,t.apply(this,arguments))}return w(e,t),e.prototype.startNode=function(){return new Q(this,this.state.start,this.state.startLoc)},e.prototype.startNodeAt=function(t,e){return new Q(this,t,e)},e.prototype.finishNode=function(t,e){return this.finishNodeAt(t,e,this.state.lastTokEnd,this.state.lastTokEndLoc)},e.prototype.finishNodeAt=function(t,e,s,i){return t.type=e,t.end=s,t.loc.end=i,this.options.ranges&&(t.range[1]=s),this.processComment(t),t},e.prototype.resetStartLocationFromNode=function(t,e){t.start=e.start,t.loc.start=e.loc.start,this.options.ranges&&(t.range[0]=e.range[0]);},e}(K))))),et=function(t){return function(t){function e(){return g(this,e),P(this,t.apply(this,arguments))}return w(e,t),e.prototype.estreeParseRegExpLiteral=function(t){var e=t.pattern,s=t.flags,i=null;try{i=new RegExp(e,s);}catch(t){}var r=this.estreeParseLiteral(i);return r.regex={pattern:e,flags:s},r},e.prototype.estreeParseLiteral=function(t){return this.parseLiteral(t,"Literal")},e.prototype.directiveToStmt=function(t){var e=t.value,s=this.startNodeAt(t.start,t.loc.start),i=this.startNodeAt(e.start,e.loc.start);return i.value=e.value,i.raw=e.extra.raw,s.expression=this.finishNodeAt(i,"Literal",e.end,e.loc.end),s.directive=e.extra.raw.slice(1,-1),this.finishNodeAt(s,"ExpressionStatement",t.end,t.loc.end)},e.prototype.checkDeclaration=function(e){u(e)?this.checkDeclaration(e.value):t.prototype.checkDeclaration.call(this,e);},e.prototype.checkGetterSetterParamCount=function(t){var e="get"===t.kind?0:1;if(t.value.params.length!==e){var s=t.start;"get"===t.kind?this.raise(s,"getter should have no params"):this.raise(s,"setter should have exactly one param");}},e.prototype.checkLVal=function(e,s,i){var r,a=this;switch(e.type){case"ObjectPattern":e.properties.forEach(function(t){a.checkLVal("Property"===t.type?t.value:t,s,i,"object destructuring pattern");});break;default:for(var n=arguments.length,o=Array(n>3?n-3:0),h=3;h0)for(var s=t.body.body,i=Array.isArray(s),r=0,s=i?s:s[Symbol.iterator]();;){var a;if(i){if(r>=s.length)break;a=s[r++];}else{if((r=s.next()).done)break;a=r.value;}var n=a;if("ExpressionStatement"!==n.type||"Literal"!==n.expression.type)break;if("use strict"===n.expression.value)return!0}return!1},e.prototype.isValidDirective=function(t){return!("ExpressionStatement"!==t.type||"Literal"!==t.expression.type||"string"!=typeof t.expression.value||t.expression.extra&&t.expression.extra.parenthesized)},e.prototype.parseBlockBody=function(e){for(var s,i=this,r=arguments.length,a=Array(r>1?r-1:0),n=1;n1?i-1:0),a=1;a1?r-1:0),n=1;n2?r-2:0),n=2;n=o.length)break;c=o[p++];}else{if((p=o.next()).done)break;c=p.value;}var l=c;"get"===l.kind||"set"===l.kind?this.raise(l.key.start,"Object pattern can't contain getter or setter"):l.method?this.raise(l.key.start,"Object pattern can't contain methods"):this.toAssignable(l,s,"object destructuring pattern");}return e}return(i=t.prototype.toAssignable).call.apply(i,[this,e,s].concat(a))},e}(t)},st=["any","mixed","empty","bool","boolean","number","string","void","null"],it={const:"declare export var",let:"declare export var",type:"export type",interface:"export interface"},rt=function(t){return function(t){function e(){return g(this,e),P(this,t.apply(this,arguments))}return w(e,t),e.prototype.flowParseTypeInitialiser=function(t){var e=this.state.inType;this.state.inType=!0,this.expect(t||C.colon);var s=this.flowParseType();return this.state.inType=e,s},e.prototype.flowParsePredicate=function(){var t=this.startNode(),e=this.state.startLoc,s=this.state.start;this.expect(C.modulo);var i=this.state.startLoc;return this.expectContextual("checks"),e.line===i.line&&e.column===i.column-1||this.raise(s,"Spaces between ´%´ and ´checks´ are not allowed here."),this.eat(C.parenL)?(t.value=this.parseExpression(),this.expect(C.parenR),this.finishNode(t,"DeclaredPredicate")):this.finishNode(t,"InferredPredicate")},e.prototype.flowParseTypeAndPredicateInitialiser=function(){var t=this.state.inType;this.state.inType=!0,this.expect(C.colon);var e=null,s=null;return this.match(C.modulo)?(this.state.inType=t,s=this.flowParsePredicate()):(e=this.flowParseType(),this.state.inType=t,this.match(C.modulo)&&(s=this.flowParsePredicate())),[e,s]},e.prototype.flowParseDeclareClass=function(t){return this.next(),this.flowParseInterfaceish(t),this.finishNode(t,"DeclareClass")},e.prototype.flowParseDeclareFunction=function(t){this.next();var e=t.id=this.parseIdentifier(),s=this.startNode(),i=this.startNode();this.isRelational("<")?s.typeParameters=this.flowParseTypeParameterDeclaration():s.typeParameters=null,this.expect(C.parenL);var r=this.flowParseFunctionTypeParams();s.params=r.params,s.rest=r.rest,this.expect(C.parenR);var a=this.flowParseTypeAndPredicateInitialiser();return s.returnType=a[0],t.predicate=a[1],i.typeAnnotation=this.finishNode(s,"FunctionTypeAnnotation"),e.typeAnnotation=this.finishNode(i,"TypeAnnotation"),this.finishNode(e,e.type),this.semicolon(),this.finishNode(t,"DeclareFunction")},e.prototype.flowParseDeclare=function(t,e){if(this.match(C._class))return this.flowParseDeclareClass(t);if(this.match(C._function))return this.flowParseDeclareFunction(t);if(this.match(C._var))return this.flowParseDeclareVariable(t);if(this.isContextual("module"))return this.lookahead().type===C.dot?this.flowParseDeclareModuleExports(t):(e&&this.unexpected(null,"`declare module` cannot be used inside another `declare module`"),this.flowParseDeclareModule(t));if(this.isContextual("type"))return this.flowParseDeclareTypeAlias(t);if(this.isContextual("interface"))return this.flowParseDeclareInterface(t);if(this.match(C._export))return this.flowParseDeclareExportDeclaration(t,e);throw this.unexpected()},e.prototype.flowParseDeclareVariable=function(t){return this.next(),t.id=this.flowParseTypeAnnotatableIdentifier(),this.semicolon(),this.finishNode(t,"DeclareVariable")},e.prototype.flowParseDeclareModule=function(t){var e=this;this.next(),this.match(C.string)?t.id=this.parseExprAtom():t.id=this.parseIdentifier();var s=t.body=this.startNode(),i=s.body=[];for(this.expect(C.braceL);!this.match(C.braceR);){var r=this.startNode();if(this.match(C._import)){var a=this.lookahead();"type"!==a.value&&"typeof"!==a.value&&this.unexpected(null,"Imports within a `declare module` body must always be `import type` or `import typeof`"),this.parseImport(r);}else this.expectContextual("declare","Only declares and type imports are allowed inside declare module"),r=this.flowParseDeclare(r,!0);i.push(r);}this.expect(C.braceR),this.finishNode(s,"BlockStatement");var n=null,o=!1,h="Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module";return i.forEach(function(t){d(t)?("CommonJS"===n&&e.unexpected(t.start,h),n="ES"):"DeclareModuleExports"===t.type&&(o&&e.unexpected(t.start,"Duplicate `declare module.exports` statement"),"ES"===n&&e.unexpected(t.start,h),n="CommonJS",o=!0);}),t.kind=n||"CommonJS",this.finishNode(t,"DeclareModule")},e.prototype.flowParseDeclareExportDeclaration=function(t,e){if(this.expect(C._export),this.eat(C._default))return this.match(C._function)||this.match(C._class)?t.declaration=this.flowParseDeclare(this.startNode()):(t.declaration=this.flowParseType(),this.semicolon()),t.default=!0,this.finishNode(t,"DeclareExportDeclaration");if(this.match(C._const)||this.match(C._let)||(this.isContextual("type")||this.isContextual("interface"))&&!e){var s=this.state.value,i=it[s];this.unexpected(this.state.start,"`declare export "+s+"` is not supported. Use `"+i+"` instead");}if(this.match(C._var)||this.match(C._function)||this.match(C._class))return t.declaration=this.flowParseDeclare(this.startNode()),t.default=!1,this.finishNode(t,"DeclareExportDeclaration");if(this.match(C.star)||this.match(C.braceL)||this.isContextual("interface")||this.isContextual("type"))return"ExportNamedDeclaration"===(t=this.parseExport(t)).type&&(t.type="ExportDeclaration",t.default=!1,delete t.exportKind),t.type="Declare"+t.type,t;throw this.unexpected()},e.prototype.flowParseDeclareModuleExports=function(t){return this.expectContextual("module"),this.expect(C.dot),this.expectContextual("exports"),t.typeAnnotation=this.flowParseTypeAnnotation(),this.semicolon(),this.finishNode(t,"DeclareModuleExports")},e.prototype.flowParseDeclareTypeAlias=function(t){return this.next(),this.flowParseTypeAlias(t),this.finishNode(t,"DeclareTypeAlias")},e.prototype.flowParseDeclareInterface=function(t){return this.next(),this.flowParseInterfaceish(t),this.finishNode(t,"DeclareInterface")},e.prototype.flowParseInterfaceish=function(t){if(t.id=this.parseIdentifier(),this.isRelational("<")?t.typeParameters=this.flowParseTypeParameterDeclaration():t.typeParameters=null,t.extends=[],t.mixins=[],this.eat(C._extends))do{t.extends.push(this.flowParseInterfaceExtends());}while(this.eat(C.comma));if(this.isContextual("mixins")){this.next();do{t.mixins.push(this.flowParseInterfaceExtends());}while(this.eat(C.comma))}t.body=this.flowParseObjectType(!0,!1,!1);},e.prototype.flowParseInterfaceExtends=function(){var t=this.startNode();return t.id=this.flowParseQualifiedTypeIdentifier(),this.isRelational("<")?t.typeParameters=this.flowParseTypeParameterInstantiation():t.typeParameters=null,this.finishNode(t,"InterfaceExtends")},e.prototype.flowParseInterface=function(t){return this.flowParseInterfaceish(t),this.finishNode(t,"InterfaceDeclaration")},e.prototype.flowParseRestrictedIdentifier=function(t){return st.indexOf(this.state.value)>-1&&this.raise(this.state.start,"Cannot overwrite primitive type "+this.state.value),this.parseIdentifier(t)},e.prototype.flowParseTypeAlias=function(t){return t.id=this.flowParseRestrictedIdentifier(),this.isRelational("<")?t.typeParameters=this.flowParseTypeParameterDeclaration():t.typeParameters=null,t.right=this.flowParseTypeInitialiser(C.eq),this.semicolon(),this.finishNode(t,"TypeAlias")},e.prototype.flowParseTypeParameter=function(){var t=this.startNode(),e=this.flowParseVariance(),s=this.flowParseTypeAnnotatableIdentifier();return t.name=s.name,t.variance=e,t.bound=s.typeAnnotation,this.match(C.eq)&&(this.eat(C.eq),t.default=this.flowParseType()),this.finishNode(t,"TypeParameter")},e.prototype.flowParseTypeParameterDeclaration=function(){var t=this.state.inType,e=this.startNode();e.params=[],this.state.inType=!0,this.isRelational("<")||this.match(C.jsxTagStart)?this.next():this.unexpected();do{e.params.push(this.flowParseTypeParameter()),this.isRelational(">")||this.expect(C.comma);}while(!this.isRelational(">"));return this.expectRelational(">"),this.state.inType=t,this.finishNode(e,"TypeParameterDeclaration")},e.prototype.flowParseTypeParameterInstantiation=function(){var t=this.startNode(),e=this.state.inType;for(t.params=[],this.state.inType=!0,this.expectRelational("<");!this.isRelational(">");)t.params.push(this.flowParseType()),this.isRelational(">")||this.expect(C.comma);return this.expectRelational(">"),this.state.inType=e,this.finishNode(t,"TypeParameterInstantiation")},e.prototype.flowParseObjectPropertyKey=function(){return this.match(C.num)||this.match(C.string)?this.parseExprAtom():this.parseIdentifier(!0)},e.prototype.flowParseObjectTypeIndexer=function(t,e,s){return t.static=e,this.expect(C.bracketL),this.lookahead().type===C.colon?(t.id=this.flowParseObjectPropertyKey(),t.key=this.flowParseTypeInitialiser()):(t.id=null,t.key=this.flowParseType()),this.expect(C.bracketR),t.value=this.flowParseTypeInitialiser(),t.variance=s,this.finishNode(t,"ObjectTypeIndexer")},e.prototype.flowParseObjectTypeMethodish=function(t){for(t.params=[],t.rest=null,t.typeParameters=null,this.isRelational("<")&&(t.typeParameters=this.flowParseTypeParameterDeclaration()),this.expect(C.parenL);!this.match(C.parenR)&&!this.match(C.ellipsis);)t.params.push(this.flowParseFunctionTypeParam()),this.match(C.parenR)||this.expect(C.comma);return this.eat(C.ellipsis)&&(t.rest=this.flowParseFunctionTypeParam()),this.expect(C.parenR),t.returnType=this.flowParseTypeInitialiser(),this.finishNode(t,"FunctionTypeAnnotation")},e.prototype.flowParseObjectTypeCallProperty=function(t,e){var s=this.startNode();return t.static=e,t.value=this.flowParseObjectTypeMethodish(s),this.finishNode(t,"ObjectTypeCallProperty")},e.prototype.flowParseObjectType=function(t,e,s){var i=this.state.inType;this.state.inType=!0;var r=this.startNode();r.callProperties=[],r.properties=[],r.indexers=[];var a=void 0,n=void 0;for(e&&this.match(C.braceBarL)?(this.expect(C.braceBarL),a=C.braceBarR,n=!0):(this.expect(C.braceL),a=C.braceR,n=!1),r.exact=n;!this.match(a);){var o=!1,h=this.startNode();t&&this.isContextual("static")&&this.lookahead().type!==C.colon&&(this.next(),o=!0);var p=this.flowParseVariance();if(this.match(C.bracketL))r.indexers.push(this.flowParseObjectTypeIndexer(h,o,p));else if(this.match(C.parenL)||this.isRelational("<"))p&&this.unexpected(p.start),r.callProperties.push(this.flowParseObjectTypeCallProperty(h,o));else{var c="init";if(this.isContextual("get")||this.isContextual("set")){var l=this.lookahead();l.type!==C.name&&l.type!==C.string&&l.type!==C.num||(c=this.state.value,this.next());}r.properties.push(this.flowParseObjectTypeProperty(h,o,p,c,s));}this.flowObjectTypeSemicolon();}this.expect(a);var u=this.finishNode(r,"ObjectTypeAnnotation");return this.state.inType=i,u},e.prototype.flowParseObjectTypeProperty=function(t,e,s,i,r){if(this.match(C.ellipsis))return r||this.unexpected(null,"Spread operator cannot appear in class or interface definitions"),s&&this.unexpected(s.start,"Spread properties cannot have variance"),this.expect(C.ellipsis),t.argument=this.flowParseType(),this.finishNode(t,"ObjectTypeSpreadProperty");t.key=this.flowParseObjectPropertyKey(),t.static=e,t.kind=i;var a=!1;return this.isRelational("<")||this.match(C.parenL)?(s&&this.unexpected(s.start),t.value=this.flowParseObjectTypeMethodish(this.startNodeAt(t.start,t.loc.start)),"get"!==i&&"set"!==i||this.flowCheckGetterSetterParamCount(t)):("init"!==i&&this.unexpected(),this.eat(C.question)&&(a=!0),t.value=this.flowParseTypeInitialiser(),t.variance=s),t.optional=a,this.finishNode(t,"ObjectTypeProperty")},e.prototype.flowCheckGetterSetterParamCount=function(t){var e="get"===t.kind?0:1;if(t.value.params.length!==e){var s=t.start;"get"===t.kind?this.raise(s,"getter should have no params"):this.raise(s,"setter should have exactly one param");}},e.prototype.flowObjectTypeSemicolon=function(){this.eat(C.semi)||this.eat(C.comma)||this.match(C.braceR)||this.match(C.braceBarR)||this.unexpected();},e.prototype.flowParseQualifiedTypeIdentifier=function(t,e,s){t=t||this.state.start,e=e||this.state.startLoc;for(var i=s||this.parseIdentifier();this.eat(C.dot);){var r=this.startNodeAt(t,e);r.qualification=i,r.id=this.parseIdentifier(),i=this.finishNode(r,"QualifiedTypeIdentifier");}return i},e.prototype.flowParseGenericType=function(t,e,s){var i=this.startNodeAt(t,e);return i.typeParameters=null,i.id=this.flowParseQualifiedTypeIdentifier(t,e,s),this.isRelational("<")&&(i.typeParameters=this.flowParseTypeParameterInstantiation()),this.finishNode(i,"GenericTypeAnnotation")},e.prototype.flowParseTypeofType=function(){var t=this.startNode();return this.expect(C._typeof),t.argument=this.flowParsePrimaryType(),this.finishNode(t,"TypeofTypeAnnotation")},e.prototype.flowParseTupleType=function(){var t=this.startNode();for(t.types=[],this.expect(C.bracketL);this.state.pos0&&void 0!==arguments[0]?arguments[0]:[],e=null;!this.match(C.parenR)&&!this.match(C.ellipsis);)t.push(this.flowParseFunctionTypeParam()),this.match(C.parenR)||this.expect(C.comma);return this.eat(C.ellipsis)&&(e=this.flowParseFunctionTypeParam()),{params:t,rest:e}},e.prototype.flowIdentToTypeAnnotation=function(t,e,s,i){switch(i.name){case"any":return this.finishNode(s,"AnyTypeAnnotation");case"void":return this.finishNode(s,"VoidTypeAnnotation");case"bool":case"boolean":return this.finishNode(s,"BooleanTypeAnnotation");case"mixed":return this.finishNode(s,"MixedTypeAnnotation");case"empty":return this.finishNode(s,"EmptyTypeAnnotation");case"number":return this.finishNode(s,"NumberTypeAnnotation");case"string":return this.finishNode(s,"StringTypeAnnotation");default:return this.flowParseGenericType(t,e,i)}},e.prototype.flowParsePrimaryType=function(){var t=this.state.start,e=this.state.startLoc,s=this.startNode(),i=void 0,r=void 0,a=!1,n=this.state.noAnonFunctionType;switch(this.state.type){case C.name:return this.flowIdentToTypeAnnotation(t,e,s,this.parseIdentifier());case C.braceL:return this.flowParseObjectType(!1,!1,!0);case C.braceBarL:return this.flowParseObjectType(!1,!0,!0);case C.bracketL:return this.flowParseTupleType();case C.relational:if("<"===this.state.value)return s.typeParameters=this.flowParseTypeParameterDeclaration(),this.expect(C.parenL),i=this.flowParseFunctionTypeParams(),s.params=i.params,s.rest=i.rest,this.expect(C.parenR),this.expect(C.arrow),s.returnType=this.flowParseType(),this.finishNode(s,"FunctionTypeAnnotation");break;case C.parenL:if(this.next(),!this.match(C.parenR)&&!this.match(C.ellipsis))if(this.match(C.name)){var o=this.lookahead().type;a=o!==C.question&&o!==C.colon;}else a=!0;if(a){if(this.state.noAnonFunctionType=!1,r=this.flowParseType(),this.state.noAnonFunctionType=n,this.state.noAnonFunctionType||!(this.match(C.comma)||this.match(C.parenR)&&this.lookahead().type===C.arrow))return this.expect(C.parenR),r;this.eat(C.comma);}return i=r?this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(r)]):this.flowParseFunctionTypeParams(),s.params=i.params,s.rest=i.rest,this.expect(C.parenR),this.expect(C.arrow),s.returnType=this.flowParseType(),s.typeParameters=null,this.finishNode(s,"FunctionTypeAnnotation");case C.string:return this.parseLiteral(this.state.value,"StringLiteralTypeAnnotation");case C._true:case C._false:return s.value=this.match(C._true),this.next(),this.finishNode(s,"BooleanLiteralTypeAnnotation");case C.plusMin:if("-"===this.state.value)return this.next(),this.match(C.num)||this.unexpected(null,"Unexpected token, expected number"),this.parseLiteral(-this.state.value,"NumberLiteralTypeAnnotation",s.start,s.loc.start);this.unexpected();case C.num:return this.parseLiteral(this.state.value,"NumberLiteralTypeAnnotation");case C._null:return s.value=this.match(C._null),this.next(),this.finishNode(s,"NullLiteralTypeAnnotation");case C._this:return s.value=this.match(C._this),this.next(),this.finishNode(s,"ThisTypeAnnotation");case C.star:return this.next(),this.finishNode(s,"ExistsTypeAnnotation");default:if("typeof"===this.state.type.keyword)return this.flowParseTypeofType()}throw this.unexpected()},e.prototype.flowParsePostfixType=function(){for(var t=this.state.start,e=this.state.startLoc,s=this.flowParsePrimaryType();!this.canInsertSemicolon()&&this.match(C.bracketL);){var i=this.startNodeAt(t,e);i.elementType=s,this.expect(C.bracketL),this.expect(C.bracketR),s=this.finishNode(i,"ArrayTypeAnnotation");}return s},e.prototype.flowParsePrefixType=function(){var t=this.startNode();return this.eat(C.question)?(t.typeAnnotation=this.flowParsePrefixType(),this.finishNode(t,"NullableTypeAnnotation")):this.flowParsePostfixType()},e.prototype.flowParseAnonFunctionWithoutParens=function(){var t=this.flowParsePrefixType();if(!this.state.noAnonFunctionType&&this.eat(C.arrow)){var e=this.startNodeAt(t.start,t.loc);return e.params=[this.reinterpretTypeAsFunctionTypeParam(t)],e.rest=null,e.returnType=this.flowParseType(),e.typeParameters=null,this.finishNode(e,"FunctionTypeAnnotation")}return t},e.prototype.flowParseIntersectionType=function(){var t=this.startNode();this.eat(C.bitwiseAND);var e=this.flowParseAnonFunctionWithoutParens();for(t.types=[e];this.eat(C.bitwiseAND);)t.types.push(this.flowParseAnonFunctionWithoutParens());return 1===t.types.length?e:this.finishNode(t,"IntersectionTypeAnnotation")},e.prototype.flowParseUnionType=function(){var t=this.startNode();this.eat(C.bitwiseOR);var e=this.flowParseIntersectionType();for(t.types=[e];this.eat(C.bitwiseOR);)t.types.push(this.flowParseIntersectionType());return 1===t.types.length?e:this.finishNode(t,"UnionTypeAnnotation")},e.prototype.flowParseType=function(){var t=this.state.inType;this.state.inType=!0;var e=this.flowParseUnionType();return this.state.inType=t,e},e.prototype.flowParseTypeAnnotation=function(){var t=this.startNode();return t.typeAnnotation=this.flowParseTypeInitialiser(),this.finishNode(t,"TypeAnnotation")},e.prototype.flowParseTypeAnnotatableIdentifier=function(){var t=this.flowParseRestrictedIdentifier();return this.match(C.colon)&&(t.typeAnnotation=this.flowParseTypeAnnotation(),this.finishNode(t,t.type)),t},e.prototype.typeCastToParameter=function(t){return t.expression.typeAnnotation=t.typeAnnotation,this.finishNodeAt(t.expression,t.expression.type,t.typeAnnotation.end,t.typeAnnotation.loc.end)},e.prototype.flowParseVariance=function(){var t=null;return this.match(C.plusMin)&&(t=this.startNode(),"+"===this.state.value?t.kind="plus":t.kind="minus",this.next(),this.finishNode(t,"Variance")),t},e.prototype.parseFunctionBody=function(e,s){if(this.match(C.colon)&&!s){var i=this.startNode(),r=this.flowParseTypeAndPredicateInitialiser();i.typeAnnotation=r[0],e.predicate=r[1],e.returnType=i.typeAnnotation?this.finishNode(i,"TypeAnnotation"):null;}return t.prototype.parseFunctionBody.call(this,e,s)},e.prototype.parseStatement=function(e,s){if(this.state.strict&&this.match(C.name)&&"interface"===this.state.value){var i=this.startNode();return this.next(),this.flowParseInterface(i)}return t.prototype.parseStatement.call(this,e,s)},e.prototype.parseExpressionStatement=function(e,s){if("Identifier"===s.type)if("declare"===s.name){if(this.match(C._class)||this.match(C.name)||this.match(C._function)||this.match(C._var)||this.match(C._export))return this.flowParseDeclare(e)}else if(this.match(C.name)){if("interface"===s.name)return this.flowParseInterface(e);if("type"===s.name)return this.flowParseTypeAlias(e)}return t.prototype.parseExpressionStatement.call(this,e,s)},e.prototype.shouldParseExportDeclaration=function(){return this.isContextual("type")||this.isContextual("interface")||t.prototype.shouldParseExportDeclaration.call(this)},e.prototype.isExportDefaultSpecifier=function(){return(!this.match(C.name)||"type"!==this.state.value&&"interface"!==this.state.value)&&t.prototype.isExportDefaultSpecifier.call(this)},e.prototype.parseConditional=function(e,s,i,r,a){if(a&&this.match(C.question)){var n=this.state.clone();try{return t.prototype.parseConditional.call(this,e,s,i,r)}catch(t){if(t instanceof SyntaxError)return this.state=n,a.start=t.pos||this.state.start,e;throw t}}return t.prototype.parseConditional.call(this,e,s,i,r)},e.prototype.parseParenItem=function(e,s,i){if(e=t.prototype.parseParenItem.call(this,e,s,i),this.eat(C.question)&&(e.optional=!0),this.match(C.colon)){var r=this.startNodeAt(s,i);return r.expression=e,r.typeAnnotation=this.flowParseTypeAnnotation(),this.finishNode(r,"TypeCastExpression")}return e},e.prototype.parseExport=function(e){return"ExportNamedDeclaration"===(e=t.prototype.parseExport.call(this,e)).type&&(e.exportKind=e.exportKind||"value"),e},e.prototype.parseExportDeclaration=function(e){if(this.isContextual("type")){e.exportKind="type";var s=this.startNode();return this.next(),this.match(C.braceL)?(e.specifiers=this.parseExportSpecifiers(),this.parseExportFrom(e),null):this.flowParseTypeAlias(s)}if(this.isContextual("interface")){e.exportKind="type";var i=this.startNode();return this.next(),this.flowParseInterface(i)}return t.prototype.parseExportDeclaration.call(this,e)},e.prototype.parseClassId=function(e){for(var s,i=arguments.length,r=Array(i>1?i-1:0),a=1;a1?i-1:0),a=1;a2?r-2:0),n=2;n1?r-1:0),n=1;n",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:"⌋",lang:"〈",rang:"〉",loz:"◊",spades:"♠",clubs:"♣",hearts:"♥",diams:"♦"},nt=/^[\da-fA-F]+$/,ot=/^\d+$/;V.j_oTag=new q("...",!0,!0),C.jsxName=new k("jsxName"),C.jsxText=new k("jsxText",{beforeExpr:!0}),C.jsxTagStart=new k("jsxTagStart",{startsExpr:!0}),C.jsxTagEnd=new k("jsxTagEnd"),C.jsxTagStart.updateContext=function(){this.state.context.push(V.j_expr),this.state.context.push(V.j_oTag),this.state.exprAllowed=!1;},C.jsxTagEnd.updateContext=function(t){var e=this.state.context.pop();e===V.j_oTag&&t===C.slash||e===V.j_cTag?(this.state.context.pop(),this.state.exprAllowed=this.curContext()===V.j_expr):this.state.exprAllowed=!0;};var ht=function(t){return function(t){function e(){return g(this,e),P(this,t.apply(this,arguments))}return w(e,t),e.prototype.jsxReadToken=function(){for(var t="",e=this.state.pos;;){this.state.pos>=this.input.length&&this.raise(this.state.start,"Unterminated JSX contents");var s=this.input.charCodeAt(this.state.pos);switch(s){case 60:case 123:return this.state.pos===this.state.start?60===s&&this.state.exprAllowed?(++this.state.pos,this.finishToken(C.jsxTagStart)):this.getTokenFromCode(s):(t+=this.input.slice(e,this.state.pos),this.finishToken(C.jsxText,t));case 38:t+=this.input.slice(e,this.state.pos),t+=this.jsxReadEntity(),e=this.state.pos;break;default:o(s)?(t+=this.input.slice(e,this.state.pos),t+=this.jsxReadNewLine(!0),e=this.state.pos):++this.state.pos;}}},e.prototype.jsxReadNewLine=function(t){var e=this.input.charCodeAt(this.state.pos),s=void 0;return++this.state.pos,13===e&&10===this.input.charCodeAt(this.state.pos)?(++this.state.pos,s=t?"\n":"\r\n"):s=String.fromCharCode(e),++this.state.curLine,this.state.lineStart=this.state.pos,s},e.prototype.jsxReadString=function(t){for(var e="",s=++this.state.pos;;){this.state.pos>=this.input.length&&this.raise(this.state.start,"Unterminated string constant");var i=this.input.charCodeAt(this.state.pos);if(i===t)break;38===i?(e+=this.input.slice(s,this.state.pos),e+=this.jsxReadEntity(),s=this.state.pos):o(i)?(e+=this.input.slice(s,this.state.pos),e+=this.jsxReadNewLine(!1),s=this.state.pos):++this.state.pos;}return e+=this.input.slice(s,this.state.pos++),this.finishToken(C.string,e)},e.prototype.jsxReadEntity=function(){for(var t="",e=0,s=void 0,i=this.input[this.state.pos],r=++this.state.pos;this.state.pos");}return s.openingElement=r,s.closingElement=a,s.children=i,this.match(C.relational)&&"<"===this.state.value&&this.raise(this.state.start,"Adjacent JSX elements must be wrapped in an enclosing tag"),this.finishNode(s,"JSXElement")},e.prototype.jsxParseElement=function(){var t=this.state.start,e=this.state.startLoc;return this.next(),this.jsxParseElementAt(t,e)},e.prototype.parseExprAtom=function(e){return this.match(C.jsxText)?this.parseLiteral(this.state.value,"JSXText"):this.match(C.jsxTagStart)?this.jsxParseElement():t.prototype.parseExprAtom.call(this,e)},e.prototype.readToken=function(e){if(this.state.inPropertyName)return t.prototype.readToken.call(this,e);var s=this.curContext();if(s===V.j_expr)return this.jsxReadToken();if(s===V.j_oTag||s===V.j_cTag){if(a(e))return this.jsxReadWord();if(62===e)return++this.state.pos,this.finishToken(C.jsxTagEnd);if((34===e||39===e)&&s===V.j_oTag)return this.jsxReadString(e)}return 60===e&&this.state.exprAllowed?(++this.state.pos,this.finishToken(C.jsxTagStart)):t.prototype.readToken.call(this,e)},e.prototype.updateContext=function(e){if(this.match(C.braceL)){var s=this.curContext();s===V.j_oTag?this.state.context.push(V.braceExpression):s===V.j_expr?this.state.context.push(V.templateQuasi):t.prototype.updateContext.call(this,e),this.state.exprAllowed=!0;}else{if(!this.match(C.slash)||e!==C.jsxTagStart)return t.prototype.updateContext.call(this,e);this.state.context.length-=2,this.state.context.push(V.j_cTag),this.state.exprAllowed=!1;}},e}(t)};Z.estree=et,Z.flow=rt,Z.jsx=ht;var pt={};e.parse=m,e.parseExpression=y,e.tokTypes=C;}),parserBabylon=parse;module.exports=parserBabylon; +}); + +var parserBabylon = unwrapExports(parserBabylon_1); + +return parserBabylon; + +}()); diff --git a/docs/parser-flow.js b/docs/parser-flow.js new file mode 100644 index 00000000..9f28cc6b --- /dev/null +++ b/docs/parser-flow.js @@ -0,0 +1,6 @@ +var flow = (function () { +function createError$1(t,r,e){const n=new SyntaxError(t+" ("+r+":"+e+")");return n.loc={line:r,column:e},n}function createCommonjsModule(t,r){return r={exports:{}},t(r,r.exports),r.exports}function parse(t){const r=flow_parser.parse(t,{esproposal_class_instance_fields:!0,esproposal_class_static_fields:!0,esproposal_export_star_as:!0});if(r.errors.length>0)throw createError(r.errors[0].message,r.errors[0].loc.start.line,r.errors[0].loc.start.column);return r}var parserCreateError=createError$1; var flow_parser=createCommonjsModule(function(t,r){!function(t){"use strict";function e(t,r){throw[0,t,r]}function n(t,r){function n(r){e(Gd.Undefined_recursive_module,t);}function a(t,r,e){if("number"==typeof t)switch(t){case 0:r[e]={fun:n};break;case 1:r[e]=[ls,n];break;default:r[e]=[];}else switch(t[0]){case 0:r[e]=[0];for(var u=1;u=1;u--)e[n+u]=t[r+u];return 0}function c(t,r,e){var n=new Array(e+1);n[0]=0;for(var a=1,u=r+1;a<=e;a++,u++)n[a]=t[u];return n}function s(t,r,e){for(var n=new Array(e),a=0;a=e.l||2==e.t&&a>=e.c.length))e.c=4==t.t?o(t.c,r,a):0==r&&t.c.length==a?t.c:t.c.substr(r,a),e.t=e.c.length==e.l?0:2;else if(2==e.t&&n==e.c.length)e.c+=4==t.t?o(t.c,r,a):0==r&&t.c.length==a?t.c:t.c.substr(r,a),e.t=e.c.length==e.l?0:2;else{4!=e.t&&v(e);var u=t.c,i=e.c;if(4==t.t)if(n<=r)for(c=0;c=0;c--)i[n+c]=u[r+c];else{for(var f=Math.min(a,u.length-r),c=0;c>=1))return e;r+=r,9==++n&&r.slice(0,1);}}function k(t){2==t.t?t.c+=b(t.l-t.c.length,"\0"):t.c=o(t.c,0,t.c.length),t.t=0;}function p(t){if(t.length<24){for(var r=0;rKb)return!1;return!0}return!/[^\x00-\x7f]/.test(t)}function h(t){for(var r,e,n,a,u=mb,i=mb,f=0,c=t.length;fHn?(i.substr(0,1),u+=i,i=mb,u+=t.slice(f,s)):i+=t.slice(f,s),s==c)break;f=s;}a=1,++f=55295&&anl)&&(a=3))))),a<4?(f-=a,i+="�"):i+=a>ki?String.fromCharCode(55232+(a>>10),Ji+(a&va)):String.fromCharCode(a),i.length>Nu&&(i.substr(0,1),u+=i,i=mb);}return u+i}function d(t){switch(t.t){case 9:return t.c;default:k(t);case 0:if(p(t.c))return t.t=9,t.c;t.t=8;case 8:return h(t.c)}}function m(t,r,e){this.t=t,this.c=r,this.l=e;}function y(t){return new m(0,t,t.length)}function w(t,r){e(t,y(r));}function g(t){w(Gd.Invalid_argument,t);}function T(){g(pu);}function _(t,r,e){if(e&=lh,4!=t.t){if(r==t.c.length)return t.c+=String.fromCharCode(e),r+1==t.l&&(t.t=0),0;v(t);}return t.c[r]=e,0}function S(t,r,e){return r>>>0>=t.l&&T(),_(t,r,e)}function A(t,r){for(var e=t.length,n=new Array(e+1),a=0;a>>0>=t.length-1&&x(),t}function C(t){return isFinite(t)?Math.abs(t)>=2.2250738585072014e-308?0:0!=t?1:2:isNaN(t)?4:3}function N(t,r){var e=t[3]<<16,n=r[3]<<16;return e>n?1:er[2]?1:t[2]r[1]?1:t[1]r.c?1:0}function P(t,r,e){for(var n=[];;){if(!e||t!==r)if(t instanceof m){if(!(r instanceof m))return 1;if(t!==r&&0!=(i=L(t,r)))return i}else if(t instanceof Array&&t[0]===(0|t[0])){var a=t[0];if(a===Cn&&(a=0),a===Ql){t=t[1];continue}if(!(r instanceof Array&&r[0]===(0|r[0])))return 1;var u=r[0];if(u===Cn&&(u=0),u===Ql){r=r[1];continue}if(a!=u)return a1&&n.push(t,r,1);}}else{if(r instanceof m||r instanceof Array&&r[0]===(0|r[0]))return-1;if("number"!=typeof t&&t&&t.compare)return t.compare(r,e);if(typeof t==Pk)g("equal: functional value");else{if(tr)return 1;if(t!=r){if(!e)return NaN;if(t==t)return 1;if(r==r)return-1}}}if(0==n.length)return 0;var f=n.pop();r=n.pop(),f+1<(t=n.pop()).length&&n.push(t,r,f+1),t=t[f],r=r[f];}}function O(t,r){return P(t,r,!0)}function U(t){return t<0&&g("Bytes.create"),new m(t?2:9,mb,t)}function D(t,r){return+(0==P(t,r,!1))}function M(t,r,e,n){if(e>0)if(0==r&&(e>=t.l||2==t.t&&e>=t.c.length))0==n?(t.c=mb,t.t=2):(t.c=b(e,String.fromCharCode(n)),t.t=e==t.l?0:2);else for(4!=t.t&&v(t),e+=r;r0&&r===r)return r;if(t=t.replace(/_/g,mb),r=+t,t.length>0&&r===r||/^[+-]?nan$/i.test(t))return r;var e=/^ *([+-]?)0x([0-9a-f]+)\.?([0-9a-f]*)p([+-]?[0-9]+)/i.exec(t);if(e){var n=e[3].replace(/0+$/,mb),a=parseInt(e[1]+e[2]+n,16),u=(0|e[4])-4*n.length;return r=a*Math.pow(2,u)}return/^\+?inf(inity)?$/i.test(t)?1/0:/^-inf(inity)?$/i.test(t)?-1/0:void F("float_of_string")}function j(t){var r=(t=X(t)).length;r>31&&g("format_int: format too long");for(var e={justify:Mb,signstyle:xl,filler:hd,alternate:!1,base:0,signedconv:!1,width:0,uppercase:!1,sign:1,prec:-1,conv:"f"},n=0;n=0&&a<=9;)e.width=10*e.width+a,n++;n--;break;case".":for(e.prec=0,n++;(a=t.charCodeAt(n)-48)>=0&&a<=9;)e.prec=10*e.prec+a,n++;n--;case"d":case"i":e.signedconv=!0;case"u":e.base=10;break;case"x":e.base=16;break;case"X":e.base=16,e.uppercase=!0;break;case"o":e.base=8;break;case"e":case"f":case"g":e.signedconv=!0,e.conv=a;break;case"E":case"F":case"G":e.signedconv=!0,e.uppercase=!0,e.conv=a.toLowerCase();}}return e}function G(t,r){t.uppercase&&(r=r.toUpperCase());var e=r.length;t.signedconv&&(t.sign<0||t.signstyle!=xl)&&e++,t.alternate&&(8==t.base&&(e+=1),16==t.base&&(e+=2));var n=mb;if(t.justify==Mb&&t.filler==hd)for(a=e;a=1e21||r.toFixed(0).length>a){for(c=u-1;e.charAt(c)==Nv;)c--;e.charAt(c)==bi&&c--,c=(e=e.slice(0,c+1)+e.slice(u)).length,e.charAt(c-3)==za&&(e=e.slice(0,c-1)+Nv+e.slice(c-1));break}var f=a;if(i<0)f-=i+1,e=r.toFixed(f);else for(;(e=r.toFixed(f)).length>a+1;)f--;if(f){for(var c=e.length-1;e.charAt(c)==Nv;)c--;e.charAt(c)==bi&&c--,e=e.slice(0,c+1);}}else e="inf",n.filler=hd;return G(n,e)}function Y(t,r){if(X(t)==hc)return y(mb+r);var e=j(t);r<0&&(e.signedconv?(e.sign=-1,r=-r):r>>>=0);var n=r.toString(e.base);if(e.prec>=0){e.filler=hd;var a=e.prec-n.length;a>0&&(n=b(a,Nv)+n);}return G(e,n)}function J(){return Jd++}function H(t,r){return+(P(t,r,!1)>=0)}function W(t,r){return r=Hd(r,-862048943),r=r<<15|r>>>17,r=Hd(r,461845907),t^=r,((t=t<<13|t>>>19)+(t<<2)|0)-430675100|0}function z(t,r){var e=r[1]|r[2]<<24;return t=W(t,(r[2]>>>8|r[3]<<16)^e)}function V(t){if(Wd)return Math.floor(Math.log2(t));var r=0;if(0==t)return-1/0;if(t>=1)for(;t>=2;)t/=2,r++;else for(;t<1;)t*=2,r--;return r}function K(t){if(!isFinite(t))return isNaN(t)?[lh,1,0,jo]:t>0?[lh,0,0,jo]:[lh,0,0,65520];var r=0==t&&1/t==-1/0?oh:t>=0?0:oh;r&&(t=-t);var e=V(t)+va;e<=0?(e=0,t/=Math.pow(2,-1026)):((t/=Math.pow(2,e-1027))<16&&(t*=2,e-=1),0==e&&(t/=2));var n=Math.pow(2,24),a=0|t,u=0|(t=(t-a)*n);return a=15&a|r|e<<4,[lh,0|(t=(t-u)*n),u,a]}function $(t,r){var e=K(r),n=e[1]|e[2]<<24,a=e[2]>>>8|e[3]<<16;return t=W(t,n),t=W(t,a)}function Q(t,r){var e,n,a=r.length;for(e=0;e+4<=a;e+=4)t=W(t,n=r[e]|r[e+1]<<8|r[e+2]<<16|r[e+3]<<24);switch(n=0,3&a){case 3:n=r[e+2]<<16;case 2:n|=r[e+1]<<8;case 1:t=W(t,n|=r[e]);}return t^=a}function Z(t,r){var e,n,a=r.length;for(e=0;e+4<=a;e+=4)t=W(t,n=r.charCodeAt(e)|r.charCodeAt(e+1)<<8|r.charCodeAt(e+2)<<16|r.charCodeAt(e+3)<<24);switch(n=0,3&a){case 3:n=r.charCodeAt(e+2)<<16;case 2:n|=r.charCodeAt(e+1)<<8;case 1:t=W(t,n|=r.charCodeAt(e));}return t^=a}function tt(t,r){switch(6&r.t){default:k(r);case 0:t=Z(t,r.c);break;case 2:t=Q(t,r.c);}return t}function rt(t){return t^=t>>>16,t=Hd(t,-2048144789),t^=t>>>13,t=Hd(t,-1028477387),t^=t>>>16}function et(t,r,e,n){var a,u,i,f,c,s,o,v,l;for(((f=r)<0||f>zd)&&(f=zd),c=t,s=e,a=[n],u=0,i=1;u0;)if((o=a[u++])instanceof Array&&o[0]===(0|o[0]))switch(o[0]){case 248:s=W(s,o[2]),c--;break;case 250:a[--u]=o[1];break;case 255:s=z(s,o),c--;break;default:for(s=W(s,o.length-1<<10|o[0]),v=1,l=o.length;v=f);v++)a[i++]=o[v];}else o instanceof m?(s=tt(s,o),c--):o===(0|o)?(s=W(s,o+o+1),c--):o===+o&&(s=$(s,o),c--);return(s=rt(s))&wp}function nt(t){return[t[3]>>8,t[3]&lh,t[2]>>16,t[2]>>8&lh,t[2]&lh,t[1]>>16,t[1]>>8&lh,t[1]&lh]}function at(t,r,e){function n(e){if(r--,!(t<0||r<0))if(e instanceof Array&&e[0]===(0|e[0]))switch(e[0]){case 248:t--,a=a*bv+e[2]|0;break;case 250:r++,n(e);break;case 255:t--,a=a*bv+e[1]+(e[2]<<24)|0;break;default:t--,a=19*a+e[0]|0;for(f=e.length-1;f>0;f--)n(e[f]);}else if(e instanceof m)switch(t--,6&e.t){default:k(e);case 0:for(var u=e.c,i=e.l,f=0;f=0;f--)a=19*a+s[f]|0;}}var a=0;return n(e),a&wp}function ut(t){for(var r,e,n=mb,a=n,u=0,i=t.length;uHn?(a.substr(0,1),n+=a,a=mb,n+=t.slice(u,f)):a+=t.slice(u,f),f==i)break;u=f;}r>6),a+=String.fromCharCode(Zn|63&r)):r=yc?a+=String.fromCharCode(Jl|r>>12,Zn|r>>6&63,Zn|63&r):r>=56319||u+1==i||(e=t.charCodeAt(u+1))yc?a+="�":(u++,r=(r<<10)+e-56613888,a+=String.fromCharCode($p|r>>18,Zn|r>>12&63,Zn|r>>6&63,Zn|63&r)),a.length>Nu&&(a.substr(0,1),n+=a,a=mb);}return n+a}function it(t){var r=9;return p(t)||(r=8,t=ut(t)),new m(r,t,t.length)}function ft(t,r,e){if(!isFinite(t))return it(isNaN(t)?ak:t>0?Bu:"-infinity");var n=0==t&&1/t==-1/0?1:t>=0?0:1;n&&(t=-t);var a=0;if(0==t);else if(t<1)for(;t<1&&a>-1022;)t*=2,a--;else for(;t>=2;)t/=2,a++;var u=a<0?mb:Mb,i=mb;if(n)i=xl;else switch(e){case 43:i=Mb;break;case 32:i=hd;}if(r>=0&&r<13){var f=Math.pow(2,4*r);t=Math.round(t*f)/f;}var c=t.toString(16);if(r>=0){var s=c.indexOf(bi);if(s<0)c+=bi+b(r,Nv);else{var o=s+1+r;c.length>24&On,t>>31&ki]}function ot(t){for(var r=t.length,e=new Array(r),n=0;n>24),a=t[3]-r[3]+(n>>24);return[lh,e&On,n&On,a&ki]}function lt(t,r){return t[3]>r[3]?1:t[3]r[2]?1:t[2]r[1]?1:t[1]>23,t[2]=(t[2]<<1|t[1]>>23)&On,t[1]=t[1]<<1&On;}function kt(t){t[1]=(t[1]>>>1|t[2]<<23)&On,t[2]=(t[2]>>>1|t[3]<<23)&On,t[3]=t[3]>>>1;}function pt(t,r){for(var e=0,n=ot(t),a=ot(r),u=[lh,0,0,0];lt(n,a)>0;)e++,bt(a);for(;e>=0;)e--,bt(u),lt(n,a)>=0&&(u[1]++,n=vt(n,a)),kt(a);return[0,u,n]}function ht(t){return t[1]|t[2]<<24}function dt(t){return t[3]<<16<0}function mt(t){var r=-t[1],e=-t[2]+(r>>24),n=-t[3]+(e>>24);return[lh,r&On,e&On,n&ki]}function yt(t,r){var e=j(t);e.signedconv&&dt(r)&&(e.sign=-1,r=mt(r));var n=mb,a=st(e.base);do{var u=pt(r,a);r=u[1],n="0123456789abcdef".charAt(ht(u[2]))+n;}while(!ct(r));if(e.prec>=0){e.filler=hd;var i=e.prec-n.length;i>0&&(n=b(i,Nv)+n);}return G(e,n)}function wt(t){return t.l}function gt(t,r){switch(6&t.t){default:if(r>=t.c.length)return 0;case 0:return t.c.charCodeAt(r);case 4:return t.c[r]}}function Tt(t,r){var e=t[1]+r[1],n=t[2]+r[2]+(e>>24),a=t[3]+r[3]+(n>>24);return[lh,e&On,n&On,a&ki]}function _t(t,r){var e=t[1]*r[1],n=(e*Vd|0)+t[2]*r[1]+t[1]*r[2],a=(n*Vd|0)+t[3]*r[1]+t[2]*r[2]+t[1]*r[3];return[lh,e&On,n&On,a&ki]}function St(t,r){return lt(t,r)<0}function At(t){var r=0,e=wt(t),n=10,a=e>0&&45==gt(t,0)?(r++,-1):1;if(r+1=48&&t<=57?t-48:t>=65&&t<=90?t-55:t>=97&&t<=xs?t-87:-1}function xt(t){var r=At(t),e=r[0],n=r[1],a=r[2],u=st(a),i=pt([lh,On,268435455,ki],u)[1],f=gt(t,e),c=Et(f);(c<0||c>=a)&&F(Ap);for(var s=st(c);;)if(e++,95!=(f=gt(t,e))){if((c=Et(f))<0||c>=a)break;St(i,s)&&F(Ap),c=st(c),St(s=Tt(_t(u,s),c),c)&&F(Ap);}return e!=wt(t)&&F(Ap),10==r[2]&&St([lh,0,0,oh],s)&&F(Ap),n<0&&(s=mt(s)),s}function It(t){return(t[3]<<16)*Math.pow(2,32)+t[2]*Math.pow(2,24)+t[1]}function Ct(t){var r=At(t),e=r[0],n=r[1],a=r[2],u=wt(t),i=e=a)&&F(Ap);var c=f;for(e++;e=a)break;(c=a*c+f)>-1>>>0&&F(Ap);}return e!=u&&F(Ap),c*=n,10==a&&(0|c)!=c&&F(Ap),0|c}function Nt(t){return s(t,1,t.length-1)}function Rt(t){return t.toString()}function Lt(t){for(var r={},e=1;e=0;e--)r=[0,t[e],r];return r}function Dt(t,r){var t=t+1|0,e=new Array(t);e[0]=0;for(var n=1;n=a){var i=jt(u+n);l(t.file.data,0,i,0,a),l(e,0,i,u,n),t.file.data=i;}return t.offset+=n,t.file.modified(),0}function Kt(t){var r;switch(t){case 1:r=zt;break;case 2:r=Wt;break;default:r=Vt;}var e=Gd.fds[t];e.flags.rdonly&&Xt(ca+t+" is readonly");var n={file:e.file,offset:e.offset,fd:t,opened:!0,buffer:mb,output:r};return Qd[n.fd]=n,n}function $t(){for(var t=0,r=0;r>>0>=t.l&&T(),gt(t,r)}function sr(t,r){return 1-fr(t,r)}function or(t,r,e){if(e&=lh,4!=t.t){if(r==t.c.length)return t.c+=String.fromCharCode(e),r+1==t.l&&(t.t=0),0;v(t);}return t.c[r]=e,0}function vr(){Zt(Gd.Not_found);}function lr(r){var e=t,n=r.toString();if(e.process&&e.process.env&&void 0!=e.process.env[n])return it(e.process.env[n]);vr();}function br(){return[0,new Date^4294967295*Math.random()]}function kr(t){for(var r=1;t&&t.joo_tramp;)t=t.joo_tramp.apply(null,t.joo_args),r++;return t}function pr(t,r){return{joo_tramp:t,joo_args:r}}function hr(t){return t}function dr(t){return Zd[t]}function mr(r){return r instanceof Array?r:t.RangeError&&r instanceof t.RangeError&&r.message&&r.message.match(/maximum call stack/i)?hr(Gd.Stack_overflow):t.InternalError&&r instanceof t.InternalError&&r.message&&r.message.match(/too much recursion/i)?hr(Gd.Stack_overflow):r instanceof t.Error?[0,dr(Mk),r]:[0,Gd.Failure,it(String(r))]}function yr(t,r){return 1==t.length?t(r):E(t,[r])}function wr(t,r,e){return 2==t.length?t(r,e):E(t,[r,e])}function gr(t,r,e,n){return 3==t.length?t(r,e,n):E(t,[r,e,n])}function Tr(t,r,e,n,a){return 4==t.length?t(r,e,n,a):E(t,[r,e,n,a])}function _r(t,r,e,n,a,u){return 5==t.length?t(r,e,n,a,u):E(t,[r,e,n,a,u])}function Sr(t){if("number"==typeof t)return 0;switch(t[0]){case 0:return[0,Sr(t[1])];case 1:return[1,Sr(t[1])];case 2:return[2,Sr(t[1])];case 3:return[3,Sr(t[1])];case 4:return[4,Sr(t[1])];case 5:return[5,Sr(t[1])];case 6:return[6,Sr(t[1])];case 7:return[7,Sr(t[1])];case 8:return[8,t[1],Sr(t[2])];case 9:var r=t[1];return[9,r,r,Sr(t[3])];case 10:return[10,Sr(t[1])];case 11:return[11,Sr(t[1])];case 12:return[12,Sr(t[1])];case 13:return[13,Sr(t[1])];default:return[14,Sr(t[1])]}}function Ar(t,r){if("number"==typeof t)return r;switch(t[0]){case 0:return[0,Ar(t[1],r)];case 1:return[1,Ar(t[1],r)];case 2:return[2,Ar(t[1],r)];case 3:return[3,Ar(t[1],r)];case 4:return[4,Ar(t[1],r)];case 5:return[5,Ar(t[1],r)];case 6:return[6,Ar(t[1],r)];case 7:return[7,Ar(t[1],r)];case 8:return[8,t[1],Ar(t[2],r)];case 9:var e=t[2];return[9,t[1],e,Ar(t[3],r)];case 10:return[10,Ar(t[1],r)];case 11:return[11,Ar(t[1],r)];case 12:return[12,Ar(t[1],r)];case 13:return[13,Ar(t[1],r)];default:return[14,Ar(t[1],r)]}}function Er(t,r){if("number"==typeof t)return r;switch(t[0]){case 0:return[0,Er(t[1],r)];case 1:return[1,Er(t[1],r)];case 2:return[2,t[1],Er(t[2],r)];case 3:return[3,t[1],Er(t[2],r)];case 4:var e=t[3],n=t[2];return[4,t[1],n,e,Er(t[4],r)];case 5:var a=t[3],u=t[2];return[5,t[1],u,a,Er(t[4],r)];case 6:var i=t[3],f=t[2];return[6,t[1],f,i,Er(t[4],r)];case 7:var c=t[3],s=t[2];return[7,t[1],s,c,Er(t[4],r)];case 8:var o=t[3],v=t[2];return[8,t[1],v,o,Er(t[4],r)];case 9:return[9,Er(t[1],r)];case 10:return[10,Er(t[1],r)];case 11:return[11,t[1],Er(t[2],r)];case 12:return[12,t[1],Er(t[2],r)];case 13:var l=t[2];return[13,t[1],l,Er(t[3],r)];case 14:var b=t[2];return[14,t[1],b,Er(t[3],r)];case 15:return[15,Er(t[1],r)];case 16:return[16,Er(t[1],r)];case 17:return[17,t[1],Er(t[2],r)];case 18:return[18,t[1],Er(t[2],r)];case 19:return[19,Er(t[1],r)];case 20:var k=t[2];return[20,t[1],k,Er(t[3],r)];case 21:return[21,t[1],Er(t[2],r)];case 22:return[22,Er(t[1],r)];case 23:return[23,t[1],Er(t[2],r)];default:var p=t[2];return[24,t[1],p,Er(t[3],r)]}}function xr(t){throw[0,rm,t]}function Ir(t){throw[0,em,t]}function Cr(t,r){return H(t,r)?t:r}function Nr(t){return 0<=t?t:0|-t}function Rr(t,r){var e=wt(t),n=wt(r),a=U(e+n|0);return l(t,0,a,0,e),l(r,0,a,e,n),a}function Lr(t,r){return t?[0,t[1],Lr(t[2],r)]:r}function Pr(t){for(var r=0,e=t;;){if(!e)return r;var r=r+1|0,e=e[2];}}function Or(t){return t?t[1]:xr(_m)}function Ur(t,r){for(var e=t,n=r;;){if(!e)return n;var a=[0,e[1],n],e=e[2],n=a;}}function Dr(t){return Ur(t,0)}function Mr(t,r){if(r){var e=r[2];return[0,yr(t,r[1]),Mr(t,e)]}return 0}function Fr(t,r){for(n=r;;){if(!n)return 0;var e=n[2];yr(t,n[1]);var n=e;}}function Xr(t,r,e){for(var n=r,a=e;;){if(!a)return n;var u=a[2],n=wr(t,n,a[1]),a=u;}}function Br(t,r){for(var e=t,n=r;;){if(0===e)return n;if(!n)throw[0,im,Tm];var e=e-1|0,n=n[2];}}function jr(t){return 0<=t&&!(lh>1,w=Br(y,r),g=p(y,r),T=p(t-y|0,w),_=0;;){if(g){if(T){var S=T[2],A=T[1],E=g[2],x=g[1],I=wr(b,x,A);if(0===I){var g=E,T=S,_=[0,x,_];continue}if(0>1,w=Br(y,r),g=k(y,r),T=k(t-y|0,w),_=0;;){if(g){if(T){var S=T[2],A=T[1],E=g[2],x=g[1],I=wr(b,x,A);if(0===I){var g=E,T=S,_=[0,x,_];continue}if(0<=I){var T=S,_=[0,A,_];continue}var g=E,_=[0,x,_];continue}return Ur(g,_)}return Ur(T,_)}},h=Pr(r),d=2<=h?k(h,r):r,m=function(t,r){if(!(3>>0))switch(t){case 0:return[0,0,r];case 1:if(r)return[0,[0,0,r[1],0,1],r[2]];break;case 2:if(r){var n=r[2];if(n)return[0,[0,[0,0,r[1],0,1],n[1],0,2],n[2]]}break;default:if(r){var a=r[2];if(a){var u=a[2];if(u)return[0,[0,[0,0,r[1],0,1],a[1],[0,0,u[1],0,1],2],u[2]]}}}var i=t/2|0,f=m(i,r),c=f[2],s=f[1];if(c){var o=c[1],v=m((t-i|0)-1|0,c[2]),l=v[2];return[0,e(s,o,v[1]),l]}throw[0,im,Bm]};return m(Pr(d),d)[1]}return a(v[1],a(l,a(o,a(c,u(i)))))}return a(l,a(o,a(c,u(i))))}return a(o,a(c,u(i)))}return a(c,u(i))}return u(i)}return 0}]}function ne(t){throw YK}function ae(t){var r=t[1];t[1]=ne;try{var e=yr(r,0);return t[1]=e,nr(t,Ql),e}catch(r){throw r=mr(r),t[1]=function(t){throw r},r}}function ue(t){var r=1<=t?t:1,e=qK>>0?1:0:65<=a?0:1;else{if(32===a)f=1;else if(43<=a)switch(a+na|0){case 5:if(n<(e+2|0)&&1>>0)if(93<=e)n=0;else n=1;else if(56<(e-1|0)>>>0)n=0;else var n=1;if(n){var a=a+1|0;continue}}else;var u=1;}if(u){var i=[0,0],f=Ft(t)-1|0;if(!(f<0))for(p=0;;){var c=gt(t,p);if(32<=c){var s=c+kp|0;if(58>>0)if(93<=s)var o=0,v=0;else v=1;else if(56<(s-1|0)>>>0)var o=1,v=0;else v=1;if(v)var b=1,o=2;}else o=11<=c?13===c?1:0:8<=c?1:0;switch(o){case 0:b=4;break;case 1:b=2;}i[1]=i[1]+b|0;var k=p+1|0;if(f===p)break;var p=k;}if(i[1]===Ft(t)){var h=Ft(t),d=U(h);qd(t,0,d,0,h);S=d;}else{var m=U(i[1]);i[1]=0;var y=Ft(t)-1|0;if(!(y<0))for(_=0;;){var w=gt(t,_);if(35<=w)g=92===w?1:Kb<=w?0:2;else if(32<=w)g=34<=w?1:2;else if(14<=w)g=0;else switch(w){case 8:or(m,i[1],92),or(m,++i[1],98);g=3;break;case 9:or(m,i[1],92),or(m,++i[1],Ad);g=3;break;case 10:or(m,i[1],92),or(m,++i[1],ol);g=3;break;case 13:or(m,i[1],92),or(m,++i[1],rf);g=3;break;default:var g=0;}switch(g){case 0:or(m,i[1],92),or(m,++i[1],48+(w/Tb|0)|0),or(m,++i[1],48+((w/10|0)%10|0)|0),or(m,++i[1],48+(w%10|0)|0);break;case 1:or(m,i[1],92),or(m,++i[1],w);break;case 2:or(m,i[1],w);}i[1]++;var T=_+1|0;if(y===_)break;var _=T;}S=m;}}else var S=t;var A=wt(S),E=qr(A+2|0,34);return l(S,0,E,1,A),E}}function xe(t,r){switch(t){case 0:e=Ew;break;case 1:e=xw;break;case 2:e=Iw;break;case 3:e=Cw;break;case 4:e=Nw;break;case 5:e=Rw;break;case 6:e=Lw;break;case 7:e=Pw;break;case 8:e=Ow;break;case 9:e=Uw;break;case 10:e=Dw;break;case 11:e=Mw;break;default:var e=Fw;}return Y(e,r)}function Ie(t,r){switch(t){case 0:e=tw;break;case 1:e=rw;break;case 2:e=ew;break;case 3:e=nw;break;case 4:e=aw;break;case 5:e=uw;break;case 6:e=iw;break;case 7:e=fw;break;case 8:e=cw;break;case 9:e=sw;break;case 10:e=ow;break;case 11:e=vw;break;default:var e=lw;}return Y(e,r)}function Ce(t,r){switch(t){case 0:e=jy;break;case 1:e=Gy;break;case 2:e=qy;break;case 3:e=Yy;break;case 4:e=Jy;break;case 5:e=Hy;break;case 6:e=Wy;break;case 7:e=zy;break;case 8:e=Vy;break;case 9:e=Ky;break;case 10:e=$y;break;case 11:e=Qy;break;default:var e=Zy;}return Y(e,r)}function Ne(t,r){switch(t){case 0:e=bw;break;case 1:e=kw;break;case 2:e=pw;break;case 3:e=hw;break;case 4:e=dw;break;case 5:e=mw;break;case 6:e=yw;break;case 7:e=ww;break;case 8:e=gw;break;case 9:e=Tw;break;case 10:e=_w;break;case 11:e=Sw;break;default:var e=Aw;}return yt(e,r)}function Re(t,r,e){if(16<=t){if(17<=t)switch(t+xb|0){case 2:a=0;break;case 0:case 3:var n=43,a=1;break;default:var n=32,a=1;}else a=0;if(!a)n=45;var u=ft(e,r,n);if(19<=t){var i=Ft(u);if(0===i)return u;var f=U(i),c=i-1|0;if(!(c<0))for(b=0;;){var s=gt(u,b);if(97<=s)if(xs>>0?55===T?1:0:21<(T-1|0)>>>0?1:0)){var _=_+1|0;continue}var S=1;}return S?m:Rr(m,My)}}return m}function Le(t,r,e,n,a,u,i,f){if("number"==typeof a){if("number"==typeof u)return 0===u?function(a){return Fe(t,r,[4,e,wr(i,f,a)],n)}:function(a,u){return Fe(t,r,[4,e,Ae(a,wr(i,f,u))],n)};var c=u[1];return function(a){return Fe(t,r,[4,e,Ae(c,wr(i,f,a))],n)}}if(0===a[0]){var s=a[2],o=a[1];if("number"==typeof u)return 0===u?function(a){return Fe(t,r,[4,e,Se(o,s,wr(i,f,a))],n)}:function(a,u){return Fe(t,r,[4,e,Se(o,s,Ae(a,wr(i,f,u)))],n)};var v=u[1];return function(a){return Fe(t,r,[4,e,Se(o,s,Ae(v,wr(i,f,a)))],n)}}var l=a[1];if("number"==typeof u)return 0===u?function(a,u){return Fe(t,r,[4,e,Se(l,a,wr(i,f,u))],n)}:function(a,u,c){return Fe(t,r,[4,e,Se(l,a,Ae(u,wr(i,f,c)))],n)};var b=u[1];return function(a,u){return Fe(t,r,[4,e,Se(l,a,Ae(b,wr(i,f,u)))],n)}}function Pe(t,r,e,n,a,u){if("number"==typeof a)return function(a){return Fe(t,r,[4,e,yr(u,a)],n)};if(0===a[0]){var i=a[2],f=a[1];return function(a){return Fe(t,r,[4,e,Se(f,i,yr(u,a))],n)}}var c=a[1];return function(a,i){return Fe(t,r,[4,e,Se(c,a,yr(u,i))],n)}}function Oe(t,r,e,n,a){for(var u=r,i=n,f=a;;){if("number"==typeof f)return wr(u,e,i);switch(f[0]){case 0:var c=f[1];return function(t){return Fe(u,e,[5,i,t],c)};case 1:var s=f[1];return function(t){var r=Gr(t),n=wt(r),a=qr(n+2|0,39);return l(r,0,a,1,n),Fe(u,e,[4,i,a],s)};case 2:var o=f[2],v=f[1];return Pe(u,e,i,o,v,function(t){return t});case 3:return Pe(u,e,i,f[2],f[1],Ee);case 4:return Le(u,e,i,f[4],f[2],f[3],xe,f[1]);case 5:return Le(u,e,i,f[4],f[2],f[3],Ie,f[1]);case 6:return Le(u,e,i,f[4],f[2],f[3],Ce,f[1]);case 7:return Le(u,e,i,f[4],f[2],f[3],Ne,f[1]);case 8:var b=f[4],k=f[3],p=f[2],h=f[1];if("number"==typeof p){if("number"==typeof k)return 0===k?function(t){return Fe(u,e,[4,i,Re(h,JK,t)],b)}:function(t,r){return Fe(u,e,[4,i,Re(h,t,r)],b)};var d=k[1];return function(t){return Fe(u,e,[4,i,Re(h,d,t)],b)}}if(0===p[0]){var m=p[2],y=p[1];if("number"==typeof k)return 0===k?function(t){return Fe(u,e,[4,i,Se(y,m,Re(h,JK,t))],b)}:function(t,r){return Fe(u,e,[4,i,Se(y,m,Re(h,t,r))],b)};var w=k[1];return function(t){return Fe(u,e,[4,i,Se(y,m,Re(h,w,t))],b)}}var g=p[1];if("number"==typeof k)return 0===k?function(t,r){return Fe(u,e,[4,i,Se(g,t,Re(h,JK,r))],b)}:function(t,r,n){return Fe(u,e,[4,i,Se(g,t,Re(h,r,n))],b)};var T=k[1];return function(t,r){return Fe(u,e,[4,i,Se(g,t,Re(h,T,r))],b)};case 9:var _=f[1];return function(t){return Fe(u,e,[4,i,t?wm:gm],_)};case 10:var i=[7,i],f=f[1];continue;case 11:var i=[2,i,f[1]],f=f[2];continue;case 12:var i=[3,i,f[1]],f=f[2];continue;case 13:var S=f[3],A=f[2],E=oe(16);pe(E,A);var x=ke(E);return function(t){return Fe(u,e,[4,i,x],S)};case 14:var I=f[3],C=f[2];return function(t){var r=Te(t[1],Sr(he(C)));if("number"==typeof r[2])return Fe(u,e,i,Er(r[1],I));throw HK};case 15:var N=f[1];return function(t,r){return Fe(u,e,[6,i,function(e){return wr(t,e,r)}],N)};case 16:var R=f[1];return function(t){return Fe(u,e,[6,i,t],R)};case 17:var i=[0,i,f[1]],f=f[2];continue;case 18:var L=f[1];if(0===L[0]){var P=f[2],O=L[1][1],u=function(t,r,e){return function(n,a){return Fe(r,n,[1,t,[0,a]],e)}}(i,u,P),i=0,f=O;continue}var U=f[2],D=L[1][1],u=function(t,r,e){return function(n,a){return Fe(r,n,[1,t,[1,a]],e)}}(i,u,U),i=0,f=D;continue;case 19:throw[0,im,Iy];case 20:var M=f[3],F=[8,i,Cy];return function(t){return Fe(u,e,F,M)};case 21:var X=f[2];return function(t){return Fe(u,e,[4,i,Y(xy,t)],X)};case 22:var B=f[1];return function(t){return Fe(u,e,[5,i,t],B)};case 23:var j=f[2],G=f[1];if("number"==typeof G)switch(G){case 0:case 1:case 2:return t<50?De(t+1|0,u,e,i,j):pr(De,[0,u,e,i,j]);case 3:throw[0,im,Ny];default:return t<50?De(t+1|0,u,e,i,j):pr(De,[0,u,e,i,j])}else switch(G[0]){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:return t<50?De(t+1|0,u,e,i,j):pr(De,[0,u,e,i,j]);case 8:var q=G[2];return t<50?Ue(t+1|0,u,e,i,q,j):pr(Ue,[0,u,e,i,q,j]);case 9:default:return t<50?De(t+1|0,u,e,i,j):pr(De,[0,u,e,i,j])}default:var J=f[3],H=f[1],W=yr(f[2],0);return t<50?Me(t+1|0,u,e,i,J,H,W):pr(Me,[0,u,e,i,J,H,W])}}}function Ue(t,r,e,n,a,u){if("number"==typeof a)return t<50?De(t+1|0,r,e,n,u):pr(De,[0,r,e,n,u]);switch(a[0]){case 0:var i=a[1];return function(t){return Xe(r,e,n,i,u)};case 1:var f=a[1];return function(t){return Xe(r,e,n,f,u)};case 2:var c=a[1];return function(t){return Xe(r,e,n,c,u)};case 3:var s=a[1];return function(t){return Xe(r,e,n,s,u)};case 4:var o=a[1];return function(t){return Xe(r,e,n,o,u)};case 5:var v=a[1];return function(t){return Xe(r,e,n,v,u)};case 6:var l=a[1];return function(t){return Xe(r,e,n,l,u)};case 7:var b=a[1];return function(t){return Xe(r,e,n,b,u)};case 8:var k=a[2];return function(t){return Xe(r,e,n,k,u)};case 9:var p=a[3],h=a[2],d=me(he(a[1]),h);return function(t){return Xe(r,e,n,Ar(d,p),u)};case 10:var m=a[1];return function(t,a){return Xe(r,e,n,m,u)};case 11:var y=a[1];return function(t){return Xe(r,e,n,y,u)};case 12:var w=a[1];return function(t){return Xe(r,e,n,w,u)};case 13:throw[0,im,Ry];default:throw[0,im,Ly]}}function De(t,r,e,n,a){var u=[8,n,Py];return t<50?Oe(t+1|0,r,e,u,a):pr(Oe,[0,r,e,u,a])}function Me(t,r,e,n,a,u,i){if(u){var f=u[1];return function(t){return Be(r,e,n,a,f,yr(i,t))}}var c=[4,n,i];return t<50?Oe(t+1|0,r,e,c,a):pr(Oe,[0,r,e,c,a])}function Fe(t,r,e,n){return kr(Oe(0,t,r,e,n))}function Xe(t,r,e,n,a){return kr(Ue(0,t,r,e,n,a))}function Be(t,r,e,n,a,u){return kr(Me(0,t,r,e,n,a,u))}function je(t,r){for(o=r;;){if("number"==typeof o)return 0;switch(o[0]){case 0:var e=o[2],n=o[1];if("number"==typeof e)switch(e){case 0:a=Xw;break;case 1:a=Bw;break;case 2:a=jw;break;case 3:a=Gw;break;case 4:a=qw;break;case 5:a=Yw;break;default:a=Jw;}else switch(e[0]){case 0:case 1:a=e[1];break;default:var a=Rr(Hw,zr(1,e[1]));}return je(t,n),se(t,a);case 1:var u=o[2],i=o[1];if(0===u[0]){var f=u[1];je(t,i),se(t,Oy);o=f;continue}var c=u[1];je(t,i),se(t,Uy);o=c;continue;case 6:var s=o[2];return je(t,o[1]),se(t,yr(s,0));case 7:var o=o[1];continue;case 8:var v=o[2];return je(t,o[1]),Ir(v);case 2:case 4:var l=o[2];return je(t,o[1]),se(t,l);default:var b=o[2];return je(t,o[1]),ce(t,b)}}}function Ge(t){return Fe(function(t,r){var e=ue(64);return je(e,r),ie(e)},0,0,t[1])}function qe(t,r){var e=t[r+1];if(1-("number"==typeof e)){if(ar(e)===bd)return yr(Ge(ig),e);if(ar(e)===Sl)for(var n=q(mm,e),a=0,u=wt(n);;){if(u<=a)return Rr(n,ym);var i=cr(n,a);if(!(48<=i?58<=i?0:1:45===i?1:0))return n;a=a+1|0;}return fg}return yr(Ge(ug),e)}function Ye(t,r){if(t.length-1<=r)return zw;var e=Ye(t,r+1|0),n=qe(t,r);return wr(Ge(Vw),n,e)}function Je(t){var r=t.length-1;if(2>>0){var e=Ye(t,2),n=qe(t,1);return wr(Ge(rg),n,e)}switch(r){case 0:return eg;case 1:return ng;default:var a=qe(t,1);return yr(Ge(ag),a)}}function He(t){return WK[1]=[0,t,WK[1]],0}function We(t,r){for(var e=t?t[1]:KK,n=16;;){if(r<=n||GK<(2*n|0)){if(e){var a=ar($K),u=Ql===a?$K[1]:ls===a?ae($K):$K;u[2]=(u[2]+1|0)%55|0;var i=u[2],f=I(u[1],i)[i+1],c=(u[2]+24|0)%55|0,s=(I(u[1],c)[c+1]+(f^31&(f>>>25|0))|0)&wp,o=u[2];I(u[1],o)[o+1]=s;v=s;}else var v=0;return[0,0,Dt(n,0),v,n]}n=2*n|0;}}function ze(t,r){return 3<=t.length-1?et(10,Tb,t[3],r)&(t[2].length-1-1|0):rr(at(10,Tb,r),t[2].length-1)}function Ve(t,r,e){var n=ze(t,r),a=[0,r,e,I(t[2],n)[n+1]];I(t[2],n)[n+1]=a,t[1]=t[1]+1|0;var u=t[2].length-1<<1>16)*r<<16)+(t&ki)*r|0});var Hd=Math.imul,Wd=Math.log2&&1020==Math.log2(1.1235582092889474e307),zd=256,Vd=Math.pow(2,-24),Kd=function(){function t(t,r){return t+r|0}function r(r,e,n,a,u,i){return e=t(t(e,r),t(a,i)),t(e<>>32-u,n)}function e(t,e,n,a,u,i,f){return r(e&n|~e&a,t,e,u,i,f)}function n(t,e,n,a,u,i,f){return r(e&a|n&~a,t,e,u,i,f)}function a(t,e,n,a,u,i,f){return r(e^n^a,t,e,u,i,f)}function u(t,e,n,a,u,i,f){return r(n^(e|~a),t,e,u,i,f)}function i(r,i){for(r[(b=i)>>2]|=Zn<<8*(3&b),b=8+(-4&b);(63&b)<60;b+=4)r[(b>>2)-1]=0;r[(b>>2)-1]=i<<3,r[b>>2]=i>>29&536870911;var f=[1732584193,4023233417,2562383102,271733878];for(b=0;b>8*k&lh;return l}return function(t,r,e){var n=[];switch(6&t.t){default:k(t);case 0:for(var a=t.c,u=0;u>2]=a.charCodeAt(c)|a.charCodeAt(c+1)<<8|a.charCodeAt(c+2)<<16|a.charCodeAt(c+3)<<24;}for(;u>2]|=a.charCodeAt(u+r)<<8*(3&u);break;case 4:for(var f=t.c,u=0;u>2]=f[c]|f[c+1]<<8|f[c+2]<<16|f[c+3]<<24;}for(;u>2]|=f[u+r]<<8*(3&u);}return Mt(i(n,e))}}(),$d=0;Yt.prototype={truncate:function(){this.data=jt(0),this.modified();},modified:function(){var t=qt();this.atime=t,this.mtime=t;}};Jt.prototype={exists:function(t){return this.content[t]?1:0},mk:function(t,r){this.content[t]=r;},get:function(t){return this.content[t]},list:function(){var t=[];for(var r in this.content)t.push(r);return t},remove:function(t){delete this.content[t];}},(new Jt).mk(mb,new Jt),Ht(0,new Yt(jt(0))),Ht(1,new Yt(jt(0))),Ht(2,new Yt(jt(0)));var Qd=new Array,Zd={},tm=[Ov,y(fu),-1],rm=[Ov,y(Kk),-3],em=[Ov,y(av),-4],nm=[Ov,y(Gs),-7],am=[Ov,y(Rb),-8],um=[Ov,y(Rs),-9],im=[Ov,y(Qi),-11],fm=[Ov,y(yd),-12],cm=[0,[11,y('File "'),[2,0,[11,y('", line '),[4,0,0,0,[11,y(", characters "),[4,0,0,0,[12,45,[4,0,0,0,[11,y(": "),[2,0,0]]]]]]]]]],y('File "%s", line %d, characters %d-%d: %s')],sm=[0,0,[0,0,0,0],[0,0,0,0]],om=[0,0,0],vm=y(""),lm=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),bm=[0,0,0,0,0,1,0],km=[0,0,0],pm=[0,1],hm=[0,0];ur(11,fm,yd),ur(10,im,Qi),ur(9,[Ov,y(Fv),-10],Fv),ur(8,um,Rs),ur(7,am,Rb),ur(6,nm,Gs),ur(5,[Ov,y(ec),-6],ec),ur(4,[Ov,y(Hk),-5],Hk),ur(3,em,av),ur(2,rm,Kk),ur(1,[Ov,y(pp),-2],pp),ur(0,tm,fu);var dm=y("output_substring"),mm=y("%.12g"),ym=y(bi),wm=y($o),gm=y(ko),Tm=[0,y("list.ml"),227,11],_m=y("hd"),Sm=y("\\\\"),Am=y("\\'"),Em=y("\\b"),xm=y("\\t"),Im=y("\\n"),Cm=y("\\r"),Nm=y("Char.chr"),Rm=y("String.blit / Bytes.blit_string"),Lm=y("Bytes.blit"),Pm=y("String.sub / Bytes.sub"),Om=y("String.contains_from / Bytes.contains_from"),Um=(y(mb),y("String.concat"),y("Array.blit")),Dm=y("Array.init"),Mm=y("Set.remove_min_elt"),Fm=[0,0,0,0],Xm=[0,0,0],Bm=[0,y("set.ml"),405,18],jm=y(Od),Gm=y(Od),qm=y(Od),Ym=y(Od),Jm=y("CamlinternalLazy.Undefined"),Hm=y("Buffer.add_substring/add_subbytes"),Wm=y("Buffer.add: cannot grow buffer"),zm=y("%c"),Vm=y("%s"),Km=y("%i"),$m=y("%li"),Qm=y("%ni"),Zm=y("%Li"),ty=y("%f"),ry=y("%B"),ey=y("%{"),ny=y("%}"),ay=y("%("),uy=y("%)"),iy=y("%a"),fy=y("%t"),cy=y("%?"),sy=y("%r"),oy=y("%_r"),vy=[0,y(vp),845,23],ly=[0,y(vp),809,21],by=[0,y(vp),810,21],ky=[0,y(vp),813,21],py=[0,y(vp),814,21],hy=[0,y(vp),817,19],dy=[0,y(vp),818,19],my=[0,y(vp),821,22],yy=[0,y(vp),822,22],wy=[0,y(vp),826,30],gy=[0,y(vp),827,30],Ty=[0,y(vp),831,26],_y=[0,y(vp),832,26],Sy=[0,y(vp),841,28],Ay=[0,y(vp),842,28],Ey=[0,y(vp),846,23],xy=y("%u"),Iy=[0,y(vp),1520,4],Cy=y("Printf: bad conversion %["),Ny=[0,y(vp),1588,39],Ry=[0,y(vp),1611,31],Ly=[0,y(vp),1612,31],Py=y("Printf: bad conversion %_"),Oy=y("@{"),Uy=y("@["),Dy=y(ak),My=y(bi),Fy=y("neg_infinity"),Xy=y(Bu),By=y("%.12g"),jy=y("%nd"),Gy=y("%+nd"),qy=y("% nd"),Yy=y("%ni"),Jy=y("%+ni"),Hy=y("% ni"),Wy=y("%nx"),zy=y("%#nx"),Vy=y("%nX"),Ky=y("%#nX"),$y=y("%no"),Qy=y("%#no"),Zy=y("%nu"),tw=y("%ld"),rw=y("%+ld"),ew=y("% ld"),nw=y("%li"),aw=y("%+li"),uw=y("% li"),iw=y("%lx"),fw=y("%#lx"),cw=y("%lX"),sw=y("%#lX"),ow=y("%lo"),vw=y("%#lo"),lw=y("%lu"),bw=y("%Ld"),kw=y("%+Ld"),pw=y("% Ld"),hw=y("%Li"),dw=y("%+Li"),mw=y("% Li"),yw=y("%Lx"),ww=y("%#Lx"),gw=y("%LX"),Tw=y("%#LX"),_w=y("%Lo"),Sw=y("%#Lo"),Aw=y("%Lu"),Ew=y(hc),xw=y("%+d"),Iw=y("% d"),Cw=y("%i"),Nw=y("%+i"),Rw=y("% i"),Lw=y("%x"),Pw=y("%#x"),Ow=y("%X"),Uw=y("%#X"),Dw=y("%o"),Mw=y("%#o"),Fw=y("%u"),Xw=y("@]"),Bw=y("@}"),jw=y("@?"),Gw=y("@\n"),qw=y("@."),Yw=y("@@"),Jw=y("@%"),Hw=y("@"),Ww=y("CamlinternalFormat.Type_mismatch"),zw=y(mb),Vw=[0,[11,y(", "),[2,0,[2,0,0]]],y(", %s%s")],Kw=y("Out of memory"),$w=y("Stack overflow"),Qw=y("Pattern matching failed"),Zw=y("Assertion failed"),tg=y("Undefined recursive module"),rg=[0,[12,40,[2,0,[2,0,[12,41,0]]]],y("(%s%s)")],eg=y(mb),ng=y(mb),ag=[0,[12,40,[2,0,[12,41,0]]],y("(%s)")],ug=[0,[4,0,0,0,0],y(hc)],ig=[0,[3,0,0],y("%S")],fg=y("_"),cg=y("x"),sg=y("OCAMLRUNPARAM"),og=y("CAMLRUNPARAM"),vg=y(mb),lg=[3,0,3],bg=y(bi),kg=y(">"),pg=y(""),dg=y("<"),mg=y("\n"),yg=y("Format.Empty_queue"),wg=[0,y(mb)],gg=y("TMPDIR"),Tg=y("TEMP"),_g=y("Cygwin"),Sg=y("Win32"),Ag=[0,y("sedlexing.ml"),51,25],Eg=y("Sedlexing.MalFormed"),xg=y("Js.Error"),Ig=y(Mk),Cg=y(xf),Ng=[0,[0]],Rg=[0,y(Ib),18,6],Lg=[0,[0,[0,[0]]]],Pg=[0,y(Ib),39,6],Og=[0,[0]],Ug=[0,y(Ib),44,6],Dg=[0,[0,[0,[0,[0,[0]],[0,[0]]]],[0,[0,[0,[0]]]],[0,[0,[0,[0]],[0,[0]],[0,[0]],[0,[0]]]],[0,[0]],[0,[0]],[0,[0]],[0,[0,[0,[0]]]],[0,[0]],[0,[0]]]],Mg=[0,y(Ib),218,6],Fg=[0,[0,[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0,[0,[0]]]],[0,[0]],[0,[0]],[0,[0,[0,[0]]]],[0,[0,[0,[0]]]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0,[0,[0]]]],[0,[0]],[0,[0]],[0,[0]],[0,[0]]]],Xg=[0,y(Ib),516,6],Bg=[0,[0,[0,[0]],[0,[0]],[0,[0,[0,[0]]]],[0,[0]],[0,[0,[0,[0]],[0,[0]]]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0,[0,[0]]]],[0,[0]],[0,[0]],[0,[0]]]],jg=[0,y(Ib),782,6],Gg=[0,[0,[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]]]],qg=[0,y(Ib),885,6],Yg=[0,[0,[0,[0,[0,[0]],[0,[0]]]],[0,[0,[0,[0]]]],[0,[0]],[0,[0]]]],Jg=[0,y(Ib),950,6],Hg=[0,[0]],Wg=[0,y(Ib),957,6],zg=[0,[0,[0,[0]],[0,[0]],[0,[0]],[0,[0]]]],Vg=[0,y(Ib),1010,6],Kg=[0,[0,[0,[0]]]],$g=[0,y(Ib),1033,6],Qg=[0,[0]],Zg=[0,[0,[0,[0]]]],tT=[0,[0]],rT=[0,[0,[0,[0,[0,[0]],[0,[0]]]],[0,[0,[0,[0]]]],[0,[0,[0,[0]],[0,[0]],[0,[0]],[0,[0]]]],[0,[0]],[0,[0]],[0,[0]],[0,[0,[0,[0]]]],[0,[0]],[0,[0]]]],eT=[0,[0,[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0,[0,[0]]]],[0,[0]],[0,[0]],[0,[0,[0,[0]]]],[0,[0,[0,[0]]]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0,[0,[0]]]],[0,[0]],[0,[0]],[0,[0]],[0,[0]]]],nT=[0,[0,[0,[0]],[0,[0]],[0,[0,[0,[0]]]],[0,[0]],[0,[0,[0,[0]],[0,[0]]]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0,[0,[0]]]],[0,[0]],[0,[0]],[0,[0]]]],aT=[0,[0,[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]],[0,[0]]]],uT=[0,[0,[0,[0,[0,[0]],[0,[0]]]],[0,[0,[0,[0]]]],[0,[0]],[0,[0]]]],iT=[0,[0]],fT=[0,[0,[0,[0]],[0,[0]],[0,[0]],[0,[0]]]],cT=[0,[0,[0,[0]]]],sT=y("Unexpected number"),oT=y("Unexpected string"),vT=y("Unexpected identifier"),lT=y("Unexpected reserved word"),bT=y("Unexpected end of input"),kT=y("Unexpected variance sigil"),pT=y("Type aliases are not allowed in untyped mode"),hT=y("Type annotations are not allowed in untyped mode"),dT=y("Type declarations are not allowed in untyped mode"),mT=y("Type imports are not allowed in untyped mode"),yT=y("Type exports are not allowed in untyped mode"),wT=y("Interfaces are not allowed in untyped mode"),gT=y("Illegal newline after throw"),TT=y("Invalid regular expression"),_T=y("Invalid regular expression: missing /"),ST=y("Invalid left-hand side in assignment"),AT=y("Invalid left-hand side in exponentiation expression"),ET=y("Invalid left-hand side in for-in"),xT=y("Invalid left-hand side in for-of"),IT=y("found an expression instead"),CT=y("Expected an object pattern, array pattern, or an identifier but "),NT=y("More than one default clause in switch statement"),RT=y("Missing catch or finally after try"),LT=y("Illegal continue statement"),PT=y("Illegal break statement"),OT=y("Illegal return statement"),UT=y("Illegal yield expression"),DT=y("Strict mode code may not include a with statement"),MT=y("Catch variable may not be eval or arguments in strict mode"),FT=y("Variable name may not be eval or arguments in strict mode"),XT=y("Parameter name eval or arguments is not allowed in strict mode"),BT=y("Strict mode function may not have duplicate parameter names"),jT=y("Function name may not be eval or arguments in strict mode"),GT=y("Octal literals are not allowed in strict mode."),qT=y("Delete of an unqualified identifier in strict mode."),YT=y("Duplicate data property in object literal not allowed in strict mode"),JT=y("Object literal may not have data and accessor property with the same name"),HT=y("Object literal may not have multiple get/set accessors with the same name"),WT=y("Assignment to eval or arguments is not allowed in strict mode"),zT=y("Postfix increment/decrement may not have eval or arguments operand in strict mode"),VT=y("Prefix increment/decrement may not have eval or arguments operand in strict mode"),KT=y("Use of future reserved word in strict mode"),$T=y("JSX attributes must only be assigned a non-empty expression"),QT=y("JSX value should be either an expression or a quoted JSX text"),ZT=y("Const must be initialized"),t_=y("Destructuring assignment must be initialized"),r_=y("Illegal newline before arrow"),e_=y(" declared at top level or immediately within another function."),n_=y("In strict mode code, functions can only be"),a_=y("elements must be wrapped in an enclosing parent tag"),u_=y("Unexpected token <. Remember, adjacent JSX "),i_=y("Rest parameter must be final parameter of an argument list"),f_=y("async is an implementation detail and isn't necessary for your declare function statement. It is sufficient for your declare function to just have a Promise return type."),c_=y("`declare export let` is not supported. Use `declare export var` instead."),s_=y("`declare export const` is not supported. Use `declare export var` instead."),o_=y("`declare export type` is not supported. Use `export type` instead."),v_=y("`declare export interface` is not supported. Use `export interface` instead."),l_=y("`export * as` is an early-stage proposal and is not enabled by default. To enable support in the parser, use the `esproposal_export_star_as` option"),b_=y("When exporting a class as a named export, you must specify a class name. Did you mean `export default class ...`?"),k_=y("When exporting a function as a named export, you must specify a function name. Did you mean `export default function ...`?"),p_=y("Found a decorator in an unsupported position."),h_=y("Type parameter declaration needs a default, since a preceding type parameter declaration has a default."),d_=y("The Windows version of OCaml has a bug in how it parses hexidecimal numbers. It is fixed in OCaml 4.03.0. Until we can switch to 4.03.0, please avoid either hexidecimal notation or Windows."),m_=y("Duplicate `declare module.exports` statement!"),y_=y("Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module xor they are a CommonJS module."),w_=y("Getter should have zero parameters"),g_=y("Setter should have exactly one parameter"),T_=y("`import type` or `import typeof`!"),__=y("Imports within a `declare module` body must always be "),S_=y("The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements"),A_=y("Missing comma between import specifiers"),E_=y("Malformed unicode"),x_=y("Unexpected parser state: "),I_=y("Unexpected token "),C_=[0,[11,y("Unexpected token `"),[2,0,[11,y("`. Did you mean `"),[2,0,[11,y("`?"),0]]]]],y("Unexpected token `%s`. Did you mean `%s`?")],N_=y("'"),R_=y("Invalid flags supplied to RegExp constructor '"),L_=y("'"),P_=y("Undefined label '"),O_=y("' has already been declared"),U_=y(" '"),D_=y("Expected corresponding JSX closing tag for "),M_=[0,[11,y("Duplicate export for `"),[2,0,[12,96,0]]],y("Duplicate export for `%s`")],F_=y("Parse_error.Error"),X_=y("comments"),B_=y(Gc),j_=y("Program"),G_=y("DebuggerStatement"),q_=y("EmptyStatement"),Y_=y(yv),J_=y("BreakStatement"),H_=y(yv),W_=y("ContinueStatement"),z_=y(gh),V_=y("DeclareExportAllDeclaration"),K_=y(gh),$_=y(Pd),Q_=y(hs),Z_=y(hb),tS=y("DeclareExportDeclaration"),rS=y(hi),eS=y(Gc),nS=y(Vo),aS=y("DeclareModule"),uS=y(Id),iS=y("DeclareModuleExports"),fS=y(yo),cS=y(Gc),sS=y("DoWhileStatement"),oS=y(yb),vS=y(hs),lS=y("ExportDefaultDeclaration"),bS=y(yb),kS=y(gh),pS=y("ExportAllDeclaration"),hS=y(yb),dS=y(gh),mS=y(Pd),yS=y(hs),wS=y("ExportNamedDeclaration"),gS=y("directive"),TS=y(ji),_S=y("ExpressionStatement"),SS=y(Gc),AS=y("update"),ES=y(yo),xS=y(Ts),IS=y("ForStatement"),CS=y("each"),NS=y(Gc),RS=y(Xc),LS=y(Ll),PS=y("ForInStatement"),OS=y("ForAwaitStatement"),US=y("ForOfStatement"),DS=y(Gc),MS=y(Xc),FS=y(Ll),XS=y(ci),BS=y(Jn),jS=y(yo),GS=y("IfStatement"),qS=y(Su),YS=y(jl),JS=y(qi),HS=y(Bd),WS=y(gh),zS=y(Pd),VS=y("ImportDeclaration"),KS=y(Gc),$S=y(yv),QS=y("LabeledStatement"),ZS=y(_b),tA=y("ReturnStatement"),rA=y("cases"),eA=y("discriminant"),nA=y("SwitchStatement"),aA=y(_b),uA=y("ThrowStatement"),iA=y("finalizer"),fA=y("handler"),cA=y("block"),sA=y("TryStatement"),oA=y(Gc),vA=y(yo),lA=y("WhileStatement"),bA=y(Gc),kA=y(sl),pA=y("WithStatement"),hA=y("Super"),dA=y("ThisExpression"),mA=y(lp),yA=y("ArrayExpression"),wA=y(lo),gA=y(Al),TA=y(ji),_A=y(Jp),SA=y(Ch),AA=y(Cl),EA=y(Gc),xA=y(Qn),IA=y(Vo),CA=y("ArrowFunctionExpression"),NA=y("="),RA=y("+="),LA=y("-="),PA=y("*="),OA=y("**="),UA=y("/="),DA=y("%="),MA=y("<<="),FA=y(">>="),XA=y(">>>="),BA=y("|="),jA=y("^="),GA=y("&="),qA=y(Xc),YA=y(Ll),JA=y(Cp),HA=y("AssignmentExpression"),WA=y("=="),zA=y("!="),VA=y("==="),KA=y("!=="),$A=y("<"),QA=y("<="),ZA=y(">"),tE=y(">="),rE=y("<<"),eE=y(">>"),nE=y(">>>"),aE=y(Mb),uE=y(xl),iE=y("*"),fE=y("**"),cE=y("/"),sE=y("%"),oE=y("|"),vE=y("^"),lE=y("&"),bE=y("in"),kE=y(wb),pE=y(Xc),hE=y(Ll),dE=y(Cp),mE=y("BinaryExpression"),yE=y(fs),wE=y(Dp),gE=y(Vs),TE=y("filter"),_E=y("blocks"),SE=y("ComprehensionExpression"),AE=y(ci),EE=y(Jn),xE=y(yo),IE=y("ConditionalExpression"),CE=y("filter"),NE=y("blocks"),RE=y("GeneratorExpression"),LE=y(fs),PE=y("Import"),OE=y(Dp),UE=y(Vs),DE=y("&&"),ME=y("||"),FE=y(Xc),XE=y(Ll),BE=y(Cp),jE=y("LogicalExpression"),GE=y(qo),qE=y(mk),YE=y(sl),JE=y("MemberExpression"),HE=y(mk),WE=y("meta"),zE=y("MetaProperty"),VE=y(fs),KE=y(Dp),$E=y("NewExpression"),QE=y(es),ZE=y("ObjectExpression"),tx=y(of),rx=y("SequenceExpression"),ex=y(Id),nx=y(ji),ax=y("TypeCastExpression"),ux=y(_b),ix=y("AwaitExpression"),fx=y(xl),cx=y(Mb),sx=y("!"),ox=y("~"),vx=y(jl),lx=y(tk),bx=y("delete"),kx=y("matched above"),px=y(_b),hx=y("prefix"),dx=y(Cp),mx=y("UnaryExpression"),yx=y("--"),wx=y("++"),gx=y("prefix"),Tx=y(_b),_x=y(Cp),Sx=y("UpdateExpression"),Ax=y("delegate"),Ex=y(_b),xx=y("YieldExpression"),Ix=y(lo),Cx=y(Al),Nx=y(ji),Rx=y(Jp),Lx=y(Ch),Px=y(Cl),Ox=y(Gc),Ux=y(Qn),Dx=y(Vo),Mx=y("FunctionDeclaration"),Fx=y(lo),Xx=y(Al),Bx=y(ji),jx=y(Jp),Gx=y(Ch),qx=y(Cl),Yx=y(Gc),Jx=y(Qn),Hx=y(Vo),Wx=y("FunctionExpression"),zx=y(ah),Vx=y(Id),Kx=y(Np),$x=y(Pn),Qx=y(ah),Zx=y(Id),tI=y(Np),rI=y(Pn),eI=y(Jn),nI=y(yo),aI=y("SwitchCase"),uI=y(Gc),iI=y("param"),fI=y("CatchClause"),cI=y(Gc),sI=y("BlockStatement"),oI=y(Vo),vI=y("DeclareVariable"),lI=y(Jp),bI=y(Vo),kI=y("DeclareFunction"),pI=y(Xd),hI=y(Gc),dI=y(lo),mI=y(Vo),yI=y("DeclareClass"),wI=y(qi),gI=y(Su),TI=y(kf),_I=y("ExportNamespaceSpecifier"),SI=y(Xc),AI=y(lo),EI=y(Vo),xI=y("TypeAlias"),II=y(Ta),CI=y(ti),NI=y(Bv),RI=y(lo),LI=y(co),PI=y(Gc),OI=y(Vo),UI=y("ClassDeclaration"),DI=y(Ta),MI=y(ti),FI=y(Bv),XI=y(lo),BI=y(co),jI=y(Gc),GI=y(Vo),qI=y("ClassExpression"),YI=y(lo),JI=y(Vo),HI=y("ClassImplements"),WI=y(Gc),zI=y("ClassBody"),VI=y(ua),KI=y(Oa),$I=y(lf),QI=y(Uc),ZI=y(Ta),tC=y(qo),rC=y(ps),eC=y(hi),nC=y(qi),aC=y(pd),uC=y("MethodDefinition"),iC=y(Fn),fC=y(ps),cC=y(qo),sC=y(Id),oC=y(qi),vC=y(pd),lC=y("ClassProperty"),bC=y(Xd),kC=y(Gc),pC=y(lo),hC=y(Vo),dC=y("InterfaceDeclaration"),mC=y(lo),yC=y(Vo),wC=y("InterfaceExtends"),gC=y(Id),TC=y(es),_C=y("ObjectPattern"),SC=y(Id),AC=y(lp),EC=y("ArrayPattern"),xC=y(Xc),IC=y(Ll),CC=y("AssignmentPattern"),NC=y(_b),RC=y(md),LC=y(_b),PC=y(md),OC=y(Ts),UC=y(lf),DC=y(Uc),MC=y(qo),FC=y(Av),XC=y(Oa),BC=y(hi),jC=y(qi),GC=y(pd),qC=y($u),YC=y(_b),JC=y("SpreadProperty"),HC=y(qo),WC=y(Av),zC=y(Oa),VC=y(hi),KC=y(qi),$C=y(pd),QC=y($u),ZC=y(_b),tN=y("RestProperty"),rN=y(_b),eN=y("SpreadElement"),nN=y("each"),aN=y(Xc),uN=y(Ll),iN=y("ComprehensionBlock"),fN=y("regex"),cN=y(ui),sN=y(qi),oN=y(ui),vN=y(qi),lN=y("Literal"),bN=y(of),kN=y("quasis"),pN=y("TemplateLiteral"),hN=y("tail"),dN=y(qi),mN=y("TemplateElement"),yN=y("quasi"),wN=y("tag"),gN=y("TaggedTemplateExpression"),TN=y("var"),_N=y("let"),SN=y("const"),AN=y(hi),EN=y("declarations"),xN=y("VariableDeclaration"),IN=y(Ts),CN=y(Vo),NN=y("VariableDeclarator"),RN=y("AnyTypeAnnotation"),LN=y("MixedTypeAnnotation"),PN=y("EmptyTypeAnnotation"),ON=y("VoidTypeAnnotation"),UN=y("NullLiteralTypeAnnotation"),DN=y("NumberTypeAnnotation"),MN=y("StringTypeAnnotation"),FN=y("BooleanTypeAnnotation"),XN=y(Id),BN=y("NullableTypeAnnotation"),jN=y(lo),GN=y("rest"),qN=y(Al),YN=y(Qn),JN=y("FunctionTypeAnnotation"),HN=y(ah),WN=y(Id),zN=y(Np),VN=y("FunctionTypeParam"),KN=[0,0,0,0],$N=y("callProperties"),QN=y("indexers"),ZN=y(es),tR=y("exact"),rR=y("ObjectTypeAnnotation"),eR=y("There should not be computed object type property keys"),nR=y(Ts),aR=y(lf),uR=y(Uc),iR=y(hi),fR=y(Fn),cR=y(ps),sR=y(ah),oR=y(qi),vR=y(pd),lR=y("ObjectTypeProperty"),bR=y(_b),kR=y("ObjectTypeSpreadProperty"),pR=y(Fn),hR=y(ps),dR=y(qi),mR=y(pd),yR=y(Vo),wR=y("ObjectTypeIndexer"),gR=y(ps),TR=y(qi),_R=y("ObjectTypeCallProperty"),SR=y("elementType"),AR=y("ArrayTypeAnnotation"),ER=y(Vo),xR=y("qualification"),IR=y("QualifiedTypeIdentifier"),CR=y(lo),NR=y(Vo),RR=y("GenericTypeAnnotation"),LR=y(Wp),PR=y("UnionTypeAnnotation"),OR=y(Wp),UR=y("IntersectionTypeAnnotation"),DR=y(_b),MR=y("TypeofTypeAnnotation"),FR=y(Wp),XR=y("TupleTypeAnnotation"),BR=y(ui),jR=y(qi),GR=y("StringLiteralTypeAnnotation"),qR=y(ui),YR=y(qi),JR=y("NumberLiteralTypeAnnotation"),HR=y(ui),WR=y(qi),zR=y("BooleanLiteralTypeAnnotation"),VR=y("ExistsTypeAnnotation"),KR=y(Id),$R=y("TypeAnnotation"),QR=y(Qn),ZR=y("TypeParameterDeclaration"),tL=y(hb),rL=y(Fn),eL=y("bound"),nL=y(Np),aL=y("TypeParameter"),uL=y(Qn),iL=y("TypeParameterInstantiation"),fL=y("children"),cL=y("closingElement"),sL=y("openingElement"),oL=y("JSXElement"),vL=y("selfClosing"),lL=y("attributes"),bL=y(Np),kL=y("JSXOpeningElement"),pL=y(Np),hL=y("JSXClosingElement"),dL=y(qi),mL=y(Np),yL=y("JSXAttribute"),wL=y(_b),gL=y("JSXSpreadAttribute"),TL=y("JSXEmptyExpression"),_L=y(ji),SL=y("JSXExpressionContainer"),AL=y(ui),EL=y(qi),xL=y("JSXText"),IL=y(mk),CL=y(sl),NL=y("JSXMemberExpression"),RL=y(Np),LL=y("namespace"),PL=y("JSXNamespacedName"),OL=y(Np),UL=y("JSXIdentifier"),DL=y(kf),ML=y(Qk),FL=y("ExportSpecifier"),XL=y(Qk),BL=y("ImportDefaultSpecifier"),jL=y(Qk),GL=y("ImportNamespaceSpecifier"),qL=y(Bd),YL=y(Qk),JL=y("imported"),HL=y("ImportSpecifier"),WL=y("Block"),zL=y("Line"),VL=y(qi),KL=y(qi),$L=y("DeclaredPredicate"),QL=y("InferredPredicate"),ZL=y("range"),tP=y("loc"),rP=y(Su),eP=[0,1,0],nP=y("T_IDENTIFIER"),aP=y("T_LCURLY"),uP=y("T_RCURLY"),iP=y("T_LCURLYBAR"),fP=y("T_RCURLYBAR"),cP=y("T_LPAREN"),sP=y("T_RPAREN"),oP=y("T_LBRACKET"),vP=y("T_RBRACKET"),lP=y("T_SEMICOLON"),bP=y("T_COMMA"),kP=y("T_PERIOD"),pP=y("T_ARROW"),hP=y("T_ELLIPSIS"),dP=y("T_AT"),mP=y("T_FUNCTION"),yP=y("T_IF"),wP=y("T_IN"),gP=y("T_INSTANCEOF"),TP=y("T_RETURN"),_P=y("T_SWITCH"),SP=y("T_THIS"),AP=y("T_THROW"),EP=y("T_TRY"),xP=y("T_VAR"),IP=y("T_WHILE"),CP=y("T_WITH"),NP=y("T_CONST"),RP=y("T_LET"),LP=y("T_NULL"),PP=y("T_FALSE"),OP=y("T_TRUE"),UP=y("T_BREAK"),DP=y("T_CASE"),MP=y("T_CATCH"),FP=y("T_CONTINUE"),XP=y("T_DEFAULT"),BP=y("T_DO"),jP=y("T_FINALLY"),GP=y("T_FOR"),qP=y("T_CLASS"),YP=y("T_EXTENDS"),JP=y("T_STATIC"),HP=y("T_ELSE"),WP=y("T_NEW"),zP=y("T_DELETE"),VP=y("T_TYPEOF"),KP=y("T_VOID"),$P=y("T_ENUM"),QP=y("T_EXPORT"),ZP=y("T_IMPORT"),tO=y("T_SUPER"),rO=y("T_IMPLEMENTS"),eO=y("T_INTERFACE"),nO=y("T_PACKAGE"),aO=y("T_PRIVATE"),uO=y("T_PROTECTED"),iO=y("T_PUBLIC"),fO=y("T_YIELD"),cO=y("T_DEBUGGER"),sO=y("T_DECLARE"),oO=y("T_TYPE"),vO=y("T_OF"),lO=y("T_ASYNC"),bO=y("T_AWAIT"),kO=y("T_CHECKS"),pO=y("T_RSHIFT3_ASSIGN"),hO=y("T_RSHIFT_ASSIGN"),dO=y("T_LSHIFT_ASSIGN"),mO=y("T_BIT_XOR_ASSIGN"),yO=y("T_BIT_OR_ASSIGN"),wO=y("T_BIT_AND_ASSIGN"),gO=y("T_MOD_ASSIGN"),TO=y("T_DIV_ASSIGN"),_O=y("T_MULT_ASSIGN"),SO=y("T_EXP_ASSIGN"),AO=y("T_MINUS_ASSIGN"),EO=y("T_PLUS_ASSIGN"),xO=y("T_ASSIGN"),IO=y("T_PLING"),CO=y("T_COLON"),NO=y("T_OR"),RO=y("T_AND"),LO=y("T_BIT_OR"),PO=y("T_BIT_XOR"),OO=y("T_BIT_AND"),UO=y("T_EQUAL"),DO=y("T_NOT_EQUAL"),MO=y("T_STRICT_EQUAL"),FO=y("T_STRICT_NOT_EQUAL"),XO=y("T_LESS_THAN_EQUAL"),BO=y("T_GREATER_THAN_EQUAL"),jO=y("T_LESS_THAN"),GO=y("T_GREATER_THAN"),qO=y("T_LSHIFT"),YO=y("T_RSHIFT"),JO=y("T_RSHIFT3"),HO=y("T_PLUS"),WO=y("T_MINUS"),zO=y("T_DIV"),VO=y("T_MULT"),KO=y("T_EXP"),$O=y("T_MOD"),QO=y("T_NOT"),ZO=y("T_BIT_NOT"),tU=y("T_INCR"),rU=y("T_DECR"),eU=y("T_ERROR"),nU=y("T_EOF"),aU=y("T_JSX_IDENTIFIER"),uU=y("T_ANY_TYPE"),iU=y("T_MIXED_TYPE"),fU=y("T_EMPTY_TYPE"),cU=y("T_BOOLEAN_TYPE"),sU=y("T_NUMBER_TYPE"),oU=y("T_STRING_TYPE"),vU=y("T_VOID_TYPE"),lU=y("T_NUMBER"),bU=y("T_STRING"),kU=y("T_TEMPLATE_PART"),pU=y("T_REGEXP"),hU=y("T_JSX_TEXT"),dU=y("T_NUMBER_SINGLETON_TYPE"),mU=y(Yk),yU=[0,3],wU=y(Yk),gU=[0,3],TU=y(Yk),_U=[0,3],SU=y(Yk),AU=[0,1],EU=y(Yk),xU=[0,2],IU=y(Yk),CU=[0,0],NU=y(Yk),RU=y(":"),LU=y(":"),PU=y(Pi),OU=[0,0],UU=[0,2],DU=[0,1],MU=[0,3],FU=[0,3],XU=[0,3],BU=y(Yk),jU=y(Yk),GU=y(Yk),qU=y(Yk),YU=y(Yk),JU=y(Yk),HU=y(Yk),WU=y(":"),zU=y(":"),VU=y(Pi),KU=y(Yk),$U=y("\\"),QU=y(Yk),ZU=y("\\"),tD=y(Nv),rD=y(ha),eD=y(ha),nD=y(ha),aD=y(eh),uD=y(eh),iD=y("*-/"),fD=y("*/"),cD=y("*-/"),sD=y(Yk),oD=y(Yk),vD=y(Yk),lD=y(mb),bD=y(mb),kD=y(mb),pD=y(mb),hD=y(Yk),dD=y("\\\\"),mD=y(Yk),yD=y("'"),wD=y(Yk),gD=y(Yk),TD=y("'"),_D=y('"'),SD=y("<"),AD=y("{"),ED=y(eh),xD=y("iexcl"),ID=y("aelig"),CD=y("Nu"),ND=y("Eacute"),RD=y("Atilde"),LD=y("'int'"),PD=y("AElig"),OD=y("Aacute"),UD=y("Acirc"),DD=y("Agrave"),MD=y("Alpha"),FD=y("Aring"),XD=[0,197],BD=[0,913],jD=[0,Io],GD=[0,194],qD=[0,193],YD=[0,198],JD=[0,8747],HD=y("Auml"),WD=y("Beta"),zD=y("Ccedil"),VD=y("Chi"),KD=y("Dagger"),$D=y("Delta"),QD=y("ETH"),ZD=[0,208],tM=[0,916],rM=[0,8225],eM=[0,935],nM=[0,199],aM=[0,914],uM=[0,196],iM=[0,195],fM=y("Icirc"),cM=y("Ecirc"),sM=y("Egrave"),oM=y("Epsilon"),vM=y("Eta"),lM=y("Euml"),bM=y("Gamma"),kM=y("Iacute"),pM=[0,205],hM=[0,915],dM=[0,203],mM=[0,919],yM=[0,917],wM=[0,200],gM=[0,202],TM=y("Igrave"),_M=y("Iota"),SM=y("Iuml"),AM=y("Kappa"),EM=y("Lambda"),xM=y("Mu"),IM=y("Ntilde"),CM=[0,209],NM=[0,924],RM=[0,923],LM=[0,922],PM=[0,207],OM=[0,921],UM=[0,204],DM=[0,206],MM=[0,201],FM=y("Sigma"),XM=y("Otilde"),BM=y("OElig"),jM=y("Oacute"),GM=y("Ocirc"),qM=y("Ograve"),YM=y("Omega"),JM=y("Omicron"),HM=y("Oslash"),WM=[0,216],zM=[0,927],VM=[0,937],KM=[0,210],$M=[0,212],QM=[0,211],ZM=[0,338],tF=y("Ouml"),rF=y("Phi"),eF=y("Pi"),nF=y("Prime"),aF=y("Psi"),uF=y("Rho"),iF=y("Scaron"),fF=[0,352],cF=[0,929],sF=[0,936],oF=[0,8243],vF=[0,928],lF=[0,934],bF=[0,214],kF=[0,213],pF=y("Uuml"),hF=y("THORN"),dF=y("Tau"),mF=y("Theta"),yF=y("Uacute"),wF=y("Ucirc"),gF=y("Ugrave"),TF=y("Upsilon"),_F=[0,933],SF=[0,217],AF=[0,219],EF=[0,218],xF=[0,920],IF=[0,932],CF=[0,222],NF=y("Xi"),RF=y("Yacute"),LF=y("Yuml"),PF=y("Zeta"),OF=y("aacute"),UF=y("acirc"),DF=y("acute"),MF=[0,180],FF=[0,226],XF=[0,225],BF=[0,918],jF=[0,376],GF=[0,221],qF=[0,926],YF=[0,220],JF=[0,931],HF=[0,925],WF=y("delta"),zF=y("cap"),VF=y("aring"),KF=y("agrave"),$F=y("alefsym"),QF=y("alpha"),ZF=y("amp"),tX=y("and"),rX=y("ang"),eX=y("apos"),nX=[0,39],aX=[0,8736],uX=[0,8743],iX=[0,38],fX=[0,945],cX=[0,8501],sX=[0,Jl],oX=y("asymp"),vX=y("atilde"),lX=y("auml"),bX=y("bdquo"),kX=y("beta"),pX=y("brvbar"),hX=y("bull"),dX=[0,8226],mX=[0,166],yX=[0,946],wX=[0,8222],gX=[0,228],TX=[0,227],_X=[0,8776],SX=[0,229],AX=y("copy"),EX=y("ccedil"),xX=y("cedil"),IX=y("cent"),CX=y("chi"),NX=y("circ"),RX=y("clubs"),LX=y("cong"),PX=[0,8773],OX=[0,9827],UX=[0,710],DX=[0,967],MX=[0,162],FX=[0,184],XX=[0,231],BX=y("crarr"),jX=y("cup"),GX=y("curren"),qX=y("dArr"),YX=y("dagger"),JX=y("darr"),HX=y("deg"),WX=[0,176],zX=[0,8595],VX=[0,8224],KX=[0,8659],$X=[0,164],QX=[0,8746],ZX=[0,8629],tB=[0,169],rB=[0,8745],eB=y("fnof"),nB=y("ensp"),aB=y("diams"),uB=y("divide"),iB=y("eacute"),fB=y("ecirc"),cB=y("egrave"),sB=y("empty"),oB=y("emsp"),vB=[0,8195],lB=[0,8709],bB=[0,232],kB=[0,234],pB=[0,233],hB=[0,247],dB=[0,9830],mB=y("epsilon"),yB=y("equiv"),wB=y("eta"),gB=y("eth"),TB=y("euml"),_B=y("euro"),SB=y("exist"),AB=[0,8707],EB=[0,8364],xB=[0,235],IB=[0,$p],CB=[0,951],NB=[0,8801],RB=[0,949],LB=[0,8194],PB=y("gt"),OB=y("forall"),UB=y("frac12"),DB=y("frac14"),MB=y("frac34"),FB=y("frasl"),XB=y("gamma"),BB=y("ge"),jB=[0,8805],GB=[0,947],qB=[0,8260],YB=[0,190],JB=[0,188],HB=[0,189],WB=[0,8704],zB=y("hArr"),VB=y("harr"),KB=y("hearts"),$B=y("hellip"),QB=y("iacute"),ZB=y("icirc"),tj=[0,238],rj=[0,237],ej=[0,8230],nj=[0,9829],aj=[0,8596],uj=[0,8660],ij=[0,62],fj=[0,402],cj=[0,948],sj=[0,230],oj=y("prime"),vj=y("ndash"),lj=y("le"),bj=y("kappa"),kj=y("igrave"),pj=y("image"),hj=y("infin"),dj=y("iota"),mj=y("iquest"),yj=y("isin"),wj=y("iuml"),gj=[0,239],Tj=[0,8712],_j=[0,191],Sj=[0,953],Aj=[0,8734],Ej=[0,8465],xj=[0,236],Ij=y("lArr"),Cj=y("lambda"),Nj=y("lang"),Rj=y("laquo"),Lj=y("larr"),Pj=y("lceil"),Oj=y("ldquo"),Uj=[0,8220],Dj=[0,8968],Mj=[0,8592],Fj=[0,171],Xj=[0,10216],Bj=[0,955],jj=[0,8656],Gj=[0,954],qj=y("macr"),Yj=y("lfloor"),Jj=y("lowast"),Hj=y("loz"),Wj=y("lrm"),zj=y("lsaquo"),Vj=y("lsquo"),Kj=y("lt"),$j=[0,60],Qj=[0,8216],Zj=[0,8249],tG=[0,8206],rG=[0,9674],eG=[0,8727],nG=[0,8970],aG=y("mdash"),uG=y("micro"),iG=y("middot"),fG=y(Uo),cG=y("mu"),sG=y("nabla"),oG=y("nbsp"),vG=[0,160],lG=[0,8711],bG=[0,956],kG=[0,8722],pG=[0,183],hG=[0,181],dG=[0,8212],mG=[0,175],yG=[0,8804],wG=y("or"),gG=y("oacute"),TG=y("ne"),_G=y("ni"),SG=y("not"),AG=y("notin"),EG=y("nsub"),xG=y("ntilde"),IG=y("nu"),CG=[0,957],NG=[0,241],RG=[0,8836],LG=[0,8713],PG=[0,172],OG=[0,8715],UG=[0,8800],DG=y("ocirc"),MG=y("oelig"),FG=y("ograve"),XG=y("oline"),BG=y("omega"),jG=y("omicron"),GG=y("oplus"),qG=[0,8853],YG=[0,959],JG=[0,969],HG=[0,Wu],WG=[0,242],zG=[0,339],VG=[0,244],KG=[0,243],$G=y("part"),QG=y("ordf"),ZG=y("ordm"),tq=y("oslash"),rq=y("otilde"),eq=y("otimes"),nq=y("ouml"),aq=y("para"),uq=[0,182],iq=[0,ls],fq=[0,8855],cq=[0,Mo],sq=[0,Ov],oq=[0,186],vq=[0,170],lq=y("permil"),bq=y("perp"),kq=y("phi"),pq=y("pi"),hq=y("piv"),dq=y("plusmn"),mq=y("pound"),yq=[0,163],wq=[0,177],gq=[0,982],Tq=[0,960],_q=[0,966],Sq=[0,8869],Aq=[0,8240],Eq=[0,8706],xq=[0,8744],Iq=[0,8211],Cq=y("sup1"),Nq=y("rlm"),Rq=y("raquo"),Lq=y("prod"),Pq=y("prop"),Oq=y("psi"),Uq=y("quot"),Dq=y("rArr"),Mq=y("radic"),Fq=y("rang"),Xq=[0,10217],Bq=[0,8730],jq=[0,8658],Gq=[0,34],qq=[0,968],Yq=[0,8733],Jq=[0,8719],Hq=y("rarr"),Wq=y("rceil"),zq=y("rdquo"),Vq=y("real"),Kq=y("reg"),$q=y("rfloor"),Qq=y("rho"),Zq=[0,961],tY=[0,8971],rY=[0,174],eY=[0,8476],nY=[0,8221],aY=[0,8969],uY=[0,8594],iY=[0,187],fY=y("sigma"),cY=y("rsaquo"),sY=y("rsquo"),oY=y("sbquo"),vY=y("scaron"),lY=y("sdot"),bY=y("sect"),kY=y("shy"),pY=[0,173],hY=[0,167],dY=[0,8901],mY=[0,353],yY=[0,8218],wY=[0,8217],gY=[0,8250],TY=y("sigmaf"),_Y=y("sim"),SY=y("spades"),AY=y("sub"),EY=y("sube"),xY=y("sum"),IY=y("sup"),CY=[0,8835],NY=[0,8721],RY=[0,8838],LY=[0,8834],PY=[0,9824],OY=[0,8764],UY=[0,962],DY=[0,963],MY=[0,8207],FY=y("uarr"),XY=y("thetasym"),BY=y("sup2"),jY=y("sup3"),GY=y("supe"),qY=y("szlig"),YY=y("tau"),JY=y("there4"),HY=y("theta"),WY=[0,952],zY=[0,8756],VY=[0,964],KY=[0,223],$Y=[0,8839],QY=[0,179],ZY=[0,178],tJ=y("thinsp"),rJ=y("thorn"),eJ=y("tilde"),nJ=y("times"),aJ=y("trade"),uJ=y("uArr"),iJ=y("uacute"),fJ=[0,Ql],cJ=[0,8657],sJ=[0,8482],oJ=[0,215],vJ=[0,732],lJ=[0,Cn],bJ=[0,8201],kJ=[0,977],pJ=y("xi"),hJ=y("ucirc"),dJ=y("ugrave"),mJ=y("uml"),yJ=y("upsih"),wJ=y("upsilon"),gJ=y("uuml"),TJ=y("weierp"),_J=[0,8472],SJ=[0,bd],AJ=[0,965],EJ=[0,978],xJ=[0,168],IJ=[0,249],CJ=[0,251],NJ=y("yacute"),RJ=y("yen"),LJ=y("yuml"),PJ=y("zeta"),OJ=y("zwj"),UJ=y("zwnj"),DJ=[0,8204],MJ=[0,Il],FJ=[0,950],XJ=[0,lh],BJ=[0,165],jJ=[0,Sl],GJ=[0,958],qJ=[0,8593],YJ=[0,185],JJ=[0,8242],HJ=[0,161],WJ=y(";"),zJ=y("&"),VJ=y(Yk),KJ=y("}"),$J=[0,y(mb),y(mb),y(mb)],QJ=y(Yk),ZJ=y("${"),tH=y("\r\n"),rH=y("\r\n"),eH=y("\n"),nH=y(ha),aH=y(Xl),uH=y(Hc),iH=y(au),fH=(y("src/parser/lexer.ml"),y(mb),[1,y("ILLEGAL")]),cH=y("/"),sH=y("/"),oH=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),vH=y(""),lH=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),bH=y(""),kH=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),pH=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),hH=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),dH=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),mH=y("\b\t\n\v\f\r"),yH=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),wH=y(""),gH=y("\0"),TH=y("\0"),_H=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),SH=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),AH=y(""),EH=y(""),xH=y(""),IH=y(""),CH=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),NH=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),RH=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),LH=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),PH=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),OH=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),UH=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),DH=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),MH=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\b\0\0\0\0\0\b"),FH=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),XH=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),BH=y("\0\0\0"),jH=y('\b\t\n\v\f\r\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t!\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t"#$%\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'),GH=y("\b\t\n\v\f\r"),qH=y("\0\0\0\0"),YH=y(""),JH=y("\b\t\n\v\f\r"),HH=y(""),WH=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),zH=y("\0\0"),VH=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),KH=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),$H=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),QH=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),ZH=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),tW=y("\0"),rW=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),eW=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),nW=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),aW=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),uW=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),iW=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),fW=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),cW=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),sW=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),oW=y(""),vW=y(""),lW=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),bW=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),kW=y("\0"),pW=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),hW=y("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),dW=y("Lexer.FloatOfString.No_good"),mW=Ut([[0,y(Pk),15],[0,y("if"),16],[0,y("in"),17],[0,y(wb),18],[0,y("return"),19],[0,y("switch"),20],[0,y("this"),21],[0,y("throw"),22],[0,y("try"),23],[0,y("var"),24],[0,y("while"),25],[0,y("with"),26],[0,y("const"),27],[0,y("let"),28],[0,y(ff),29],[0,y(ko),30],[0,y($o),31],[0,y("break"),32],[0,y("case"),33],[0,y("catch"),34],[0,y("continue"),35],[0,y(hb),36],[0,y("do"),37],[0,y("finally"),38],[0,y("for"),39],[0,y("class"),40],[0,y(Xd),41],[0,y(ps),42],[0,y("else"),43],[0,y("new"),44],[0,y("delete"),45],[0,y(jl),46],[0,y(tk),47],[0,y("enum"),48],[0,y("export"),49],[0,y("import"),50],[0,y("super"),51],[0,y(ti),52],[0,y(ab),53],[0,y(hu),54],[0,y(Gu),55],[0,y(rl),56],[0,y("public"),57],[0,y("yield"),58],[0,y("debugger"),59],[0,y("declare"),60],[0,y(Su),61],[0,y("of"),62],[0,y(Cl),63],[0,y("await"),64]]),yW=Ut([[0,y(ps),42],[0,y(jl),46],[0,y("any"),ol],[0,y("mixed"),111],[0,y("empty"),112],[0,y("bool"),113],[0,y("boolean"),113],[0,y($o),31],[0,y(ko),30],[0,y("number"),rf],[0,y("string"),115],[0,y(tk),Ad],[0,y(ff),29]]),wW=y(Ga),gW=y(Ga),TW=y(fs),_W=y("eval"),SW=y(ti),AW=y(ab),EW=y(hu),xW=y(Gu),IW=y(rl),CW=y("public"),NW=y(ps),RW=y("yield"),LW=y("enum"),PW=[0,y("src/parser/parser_env.ml"),289,2],OW=y(mb),UW=[0,0,0],DW=y($c),MW=y($c),FW=y("Parser_env.Try.Rollback"),XW=[0,y("did not consume any tokens")],BW=[0,1],jW=[0,0,0],GW=[0,y(ni),494,6],qW=y(ps),YW=y(lf),JW=y(Uc),HW=y(lf),WW=[0,1],zW=[0,[0,0,0]],VW=[0,1],KW=[0,1],$W=[0,1],QW=[0,0],ZW=[0,1],tz=[0,2],rz=[0,7],ez=[0,5],nz=[0,6],az=[0,3],uz=[0,4],iz=[0,y(ni),106,17],fz=[0,y(ni),85,17],cz=[0,y(ni),63,11],sz=[0,y(ni),67,11],oz=[0,y(ni),45,14],vz=[0,31],lz=[0,31],bz=[0,1],kz=[0,29],pz=[0,y(Ef),826,13],hz=[0,y(Ef),728,17],dz=[0,[0,y(mb),y(mb)],1],mz=y(ff),yz=y(ha),wz=y(Xl),gz=y(Hc),Tz=y(au),_z=[0,31],Sz=y("new"),Az=y("target"),Ez=[0,1],xz=[0,0],Iz=[0,1],Cz=[0,0],Nz=[0,1],Rz=[0,0],Lz=[0,2],Pz=[0,3],Oz=[0,7],Uz=[0,6],Dz=[0,4],Mz=[0,5],Fz=[0,[0,17,[0,2]]],Xz=[0,[0,18,[0,3]]],Bz=[0,[0,19,[0,4]]],jz=[0,[0,0,[0,5]]],Gz=[0,[0,1,[0,5]]],qz=[0,[0,2,[0,5]]],Yz=[0,[0,3,[0,5]]],Jz=[0,[0,5,[0,6]]],Hz=[0,[0,7,[0,6]]],Wz=[0,[0,4,[0,6]]],zz=[0,[0,6,[0,6]]],Vz=[0,[0,8,[0,7]]],Kz=[0,[0,9,[0,7]]],$z=[0,[0,10,[0,7]]],Qz=[0,[0,11,[0,8]]],Zz=[0,[0,12,[0,8]]],tV=[0,[0,15,[0,9]]],rV=[0,[0,13,[0,9]]],eV=[0,[0,14,[1,10]]],nV=[0,[0,16,[0,9]]],aV=[0,[0,21,[0,6]]],uV=[0,[0,20,[0,6]]],iV=[0,9],fV=[0,8],cV=[0,7],sV=[0,11],oV=[0,10],vV=[0,12],lV=[0,6],bV=[0,5],kV=[0,3],pV=[0,4],hV=[0,2],dV=[0,1],mV=[0,0],yV=[0,6],wV=y(Cl),gV=y(":"),TV=y(bi),_V=y(mb),SV=[0,y(mb)],AV=y(ua),EV=y(ua),xV=[0,1],IV=[0,1],CV=[0,1],NV=[0,1],RV=y(lf),LV=y(Uc),PV=y(lf),OV=y(Uc),UV=y(Su),DV=[0,0],MV=y(jl),FV=[0,1],XV=y(Ko),BV=y(Ko),jV=y(Ko),GV=y(Nc),qV=y(Ko),YV=y(Nc),JV=y(Ko),HV=y(Ko),WV=y(Nc),zV=[0,y(Va),1141,15],VV=y("other than an interface declaration!"),KV=y("Internal Flow Error! Parsed `export interface` into something "),$V=[0,1],QV=[0,1],ZV=y("other than a type alias!"),tK=y("Internal Flow Error! Parsed `export type` into something "),rK=y(Ko),eK=y(Ko),nK=y(hb),aK=y(Nc),uK=y("Internal Flow Error! Unexpected export statement declaration!"),iK=y(Ko),fK=y(Ko),cK=y(Nc),sK=[0,1],oK=y("module"),vK=[0,1],lK=y("module"),bK=y("exports"),kK=[0,1],pK=[0,1],hK=y("mixins"),dK=y("mixins"),mK=[0,1],yK=[0,1],wK=y("Label"),gK=[0,27],TK=[0,0,0],_K=[0,y(Va),197,20],SK=[0,y(Va),214,20],AK=y("Parser error: No such thing as an expression pattern!"),EK=[0,1],xK=[0,1],IK=y("use strict"),CK=[0,0,0],NK=y("\n"),RK=y("Nooo: "),LK=[0,[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],PK=[0,y("src/parser/parser_flow.ml"),37,28],OK=[0,[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],UK=y("Internal error: ");J();var DK=Qc;!function(t){var r=Gd.fds[t];r.flags.wronly&&Xt(ca+t+" is writeonly"),r.file,r.offset;}(0);var MK=Kt(1),FK=Kt(2),XK=[0,function(t){return function(t){for(n=t;;){if(!n)return 0;var r=n[2],e=n[1];try{Bt(e);}catch(n){}var n=r;}}($t())}],BK=L,jK=function(){return[0,y("Unix"),32,0]}()[1],GK=function(){return Qc/4|0}(),qK=(4*GK|0)-1|0;J(),J(),J();var YK=[Ov,Jm,J()];J(),J();var JK=-6,HK=[Ov,Ww,J()],WK=[0,0];try{VK=lr(sg);}catch(y){if((y=mr(y))!==nm)throw y;try{zK=lr(og);}catch(y){if((y=mr(y))!==nm)throw y;var zK=vg;}var VK=zK;}var KK=function(t,r){return Qr(t,0,r)}(VK,82),$K=[ls,function(t){for(var r=br(),e=[0,Dt(55,0),0],n=0==r.length-1?[0,0]:r,a=n.length-1,u=0;;){I(e[1],u)[u+1]=u;var i=u+1|0;if(54===u){var f=[0,cg],c=54+Cr(55,a)|0;if(!(c<0))for(g=0;;){var s=g%55|0,o=rr(g,a),v=I(n,o)[o+1],l=Rr(f[1],y(mb+v));f[1]=Kd(l,0,wt(l));var b=f[1],k=cr(b,3)<<24,p=cr(b,2)<<16,h=cr(b,1)<<8,d=((cr(b,0)+h|0)+p|0)+k|0,m=(I(e[1],s)[s+1]^d)℘I(e[1],s)[s+1]=m;var w=g+1|0;if(c===g)break;var g=w;}return e[2]=0,e}u=i;}}],QK=[Ov,yg,J()],ZK=1000000010,t$=[0,[0,-1,[0,-1,wg,0]],0],r$=zr(80,32),e$=Hn,n$=function(t){return ue(e$)}(),a$=yn(MK);yn(FK),function(t){function r(t){return 0}mn(function(r,e,n){var a=e<0?1:0;if(a)i=a;else var u=n<0?1:0,i=u||((wt(r)-n|0)>>6|0)?1:0;if(l)k=l;else var b=2!=(o>>>6|0)?1:0,k=b||(2!=(v>>>6|0)?1:0);if(k)throw f$;var p=(7&c)<<18|(63&s)<<12|(63&o)<<6|63&v,h=1;}else if(Jl<=c){var d=cr(t,u+1|0),m=cr(t,u+2|0);if((2!=(d>>>6|0)?1:0)||(2!=(m>>>6|0)?1:0))throw f$;var y=(15&c)<<12|(63&d)<<6|63&m,w=Zu<=y?1:0;if(w?y<=57088?1:0:w)throw f$;var p=y,h=1;}else{var g=cr(t,u+1|0);if(2!=(g>>>6|0))throw f$;var p=(31&c)<<6|63&g,h=1;}else if(Zn<=c)h=0;else var p=c,h=1;if(h){I(a,i)[i+1]=p;var T=cr(t,u),u=u+I(o$,T)[T+1]|0,i=i+1|0,f=f-1|0;continue}throw f$}var _=a.length-1;return[0,wn,Zr(_,function(t){return I(a,t)[t+1]}),_,0,0,0,0,0,1]}throw f$}var S=cr(t,n),A=I(o$,S)[S+1];if(!(0>>18|0)),ce(u,jr(Zn|63&(c>>>12|0))),ce(u,jr(Zn|63&(c>>>6|0))),ce(u,jr(Zn|63&c));}else{var s=Zu<=c?1:0;if(s?c>>12|0)),ce(u,jr(Zn|63&(c>>>6|0))),ce(u,jr(Zn|63&c));}else ce(u,jr(Io|c>>>6|0)),ce(u,jr(Zn|63&c));else ce(u,jr(c));var i=i+1|0,f=f-1|0;}},m$=function(t){return d$(t,0,t[5]-t[6]|0)},y$=t,w$=null,g$=function(t){return void 0!==t?1:0},T$=y$.Array,_$=[Ov,xg,J()],S$=y$.Error;!function(t,r){ir(t,ar(r)===Ov?r:r[1]);}(Ig,[0,_$,{}]);var A$=function(t){throw t};He(function(t){return t[1]===_$?[0,it(t[2].toString())]:0}),He(function(t){return t instanceof T$?0:[0,it(t.toString())]});var E$=function(t,r){return[0,t[1],t[2],r[3]]},x$=function(t){return"number"==typeof t?Cg:t[1]},I$=function(t){if("number"==typeof t)return 1;switch(t[0]){case 0:return 2;case 1:case 2:return 3;default:return 4}},C$=function(t,r){var e=t[1]-r[1]|0;return 0===e?t[2]-r[2]|0:e},N$=wr(i$,Rg,Ng),R$=wr(i$,Pg,Lg),L$=wr(i$,Ug,Og),P$=wr(i$,Mg,Dg),O$=wr(i$,Xg,Fg),U$=wr(i$,jg,Bg),D$=wr(i$,qg,Gg),M$=wr(i$,Jg,Yg),F$=wr(i$,Wg,Hg),X$=wr(i$,Vg,zg),B$=wr(i$,$g,Kg);gr(u$,Qg,N$,N$),gr(u$,Zg,R$,R$),gr(u$,tT,L$,L$),gr(u$,rT,P$,P$),gr(u$,eT,O$,O$),gr(u$,nT,U$,U$),gr(u$,aT,D$,D$),gr(u$,uT,M$,M$),gr(u$,iT,F$,F$),gr(u$,fT,X$,X$),gr(u$,cT,B$,B$);var j$=[Ov,F_,J()],G$=function(t,r,e){return[0,t,r,eP,0,e,om]},q$=function(t,r){return[0,r[1],t,r[3],r[4],r[5],r[6]]},Y$=function(t){return t[3][1]},J$=function(t){return t[3][2]},H$=function(t,r){return t!==r[4]?[0,r[1],r[2],r[3],t,r[5],r[6]]:r},W$=function(t){return 35>>6|0)),r],n=[0,jr(Zn|63&(t>>>12|0)),e];return[0,jr($p|t>>>18|0),n]}if(Mc<=t){var a=[0,jr(Zn|63&t),0],u=[0,jr(Zn|63&(t>>>6|0)),a];return[0,jr(Jl|t>>>12|0),u]}if(Zn<=t){var i=[0,jr(Zn|63&t),0];return[0,jr(Io|t>>>6|0),i]}return[0,jr(t),0]},tZ=function(t,r){if(45===cr(r,0))var e=1,n=Vr(r,1,wt(r)-1|0);else var e=0,n=r;if(0===t)c=0;else{switch(t-1|0){case 0:var a=1;try{var u=It(xt(Rr(nH,n)));}catch(r){if(a=0,(r=mr(r))[1]!==rm)throw r;var i=xr(Rr(aH,n)),f=1;}if(a)var i=u,f=1;break;case 1:var c=0,f=0;break;default:var s=1;try{var o=$Q(n);}catch(r){if(s=0,(r=mr(r))[1]!==rm)throw r;var i=xr(Rr(uH,n)),f=1;}if(s)var i=o,f=1;}if(f)var v=i,c=1;}if(!c)try{v=It(xt(n));}catch(f){if((f=mr(f))[1]!==rm)throw f;v=xr(Rr(iH,n));}return[5,t,e?-v:v]},rZ=function(t,r,e){var n=VQ(t,JQ(t,r));return An(r),wr(e,n,r)},eZ=We(0,53),nZ=We(0,53);Fr(function(t){return Ve(eZ,t[1],t[2])},mW),Fr(function(t){return Ve(nZ,t[1],t[2])},yW);var aZ=function(t,r){for(p=t;;){var e=function(t){for(;;)if(_n(t,20),0!==hQ(gn(t)))return Sn(t)},n=function(t){if(0===uQ(gn(t)))for(;;){_n(t,19);var r=z$(gn(t));if(0===r)for(;;)if(_n(t,18),0!==hQ(gn(t)))return Sn(t);if(1!==r)return Sn(t)}return Sn(t)},a=function(t,r){return function(e){_n(e,20);var n=qQ(gn(e));if(2>>0)return Sn(e);switch(n){case 0:return t(e);case 1:return r(e);default:for(;;){_n(e,19);var a=z$(gn(e));if(0===a)for(;;)if(_n(e,18),0!==hQ(gn(e)))return Sn(e);if(1!==a)return Sn(e)}}}}(e,n),u=function(t,r){return function(e){for(;;){_n(e,21);var n=W$(gn(e));if(2>>0)return Sn(e);switch(n){case 0:return t(e);case 1:continue;default:return r(e)}}}}(e,a),i=function(t,r){return function(e){_n(e,21);var n=z$(gn(e));return 0===n?r(e):1===n?t(e):Sn(e)}}(u,e),f=function(t,r,e){return function(n){for(;;){_n(n,21);var a=Q$(gn(n));if(3>>0)return Sn(n);switch(a){case 0:return t(n);case 1:return e(n);case 2:continue;default:return r(n)}}}}(e,a,i),c=function(t){for(;;)if(_n(t,14),0!==hQ(gn(t)))return Sn(t)},s=function(t,r,e,n,a,u,i,f,c,s){return function(o){var v=gn(o),l=Fo>>0)return Sn(o);switch(l){case 0:return 76;case 1:return 77;case 2:if(_n(o,2),0===tQ(gn(o)))for(;;)if(_n(o,2),0!==tQ(gn(o)))return Sn(o);return Sn(o);case 3:return 0;case 4:return _n(o,0),0===kQ(gn(o))?0:Sn(o);case 5:return _n(o,69),0===SQ(gn(o))?(_n(o,42),0===SQ(gn(o))?38:Sn(o)):Sn(o);case 6:return 8;case 7:_n(o,77);var b=gn(o);return 0===(32>>0)return Sn(o);switch(h){case 0:return _n(o,64),0===SQ(gn(o))?54:Sn(o);case 1:return 5;default:return 53}case 14:_n(o,61);var d=gn(o),m=42>>0)return Sn(o);switch(T){case 0:_n(o,3);var _=gQ(gn(o));if(2<_>>>0)return Sn(o);switch(_){case 0:for(;;){var S=gQ(gn(o));if(2>>0)return Sn(o);switch(S){case 0:continue;case 1:return a(o);default:return u(o)}}case 1:return a(o);default:return u(o)}case 1:return 6;default:return 73}case 19:_n(o,21);var A=mQ(gn(o));if(7>>0)return Sn(o);switch(A){case 0:return e(o);case 1:return i(o);case 2:for(;;){_n(o,15);var E=XQ(gn(o));if(4>>0)return Sn(o);switch(E){case 0:return f(o);case 1:return i(o);case 2:continue;case 3:for(;;){_n(o,14);var x=Q$(gn(o));if(3>>0)return Sn(o);switch(x){case 0:return f(o);case 1:return i(o);case 2:continue;default:return c(o)}}default:return c(o)}}case 3:return s(o);case 4:_n(o,20);var I=MQ(gn(o));if(0===I)return e(o);if(1===I)for(;;){_n(o,11);var C=MQ(gn(o));if(0===C)for(;;)if(_n(o,10),0!==hQ(gn(o)))return Sn(o);if(1!==C)return Sn(o)}return Sn(o);case 5:return n(o);case 6:_n(o,20);var N=K$(gn(o));if(0===N)return e(o);if(1===N)for(;;){_n(o,13);var R=K$(gn(o));if(0===R)for(;;)if(_n(o,12),0!==hQ(gn(o)))return Sn(o);if(1!==R)return Sn(o)}return Sn(o);default:_n(o,20);var L=lQ(gn(o));if(0===L)return e(o);if(1===L)for(;;){_n(o,17);var P=lQ(gn(o));if(0===P)for(;;)if(_n(o,16),0!==hQ(gn(o)))return Sn(o);if(1!==P)return Sn(o)}return Sn(o)}case 20:_n(o,21);var O=Q$(gn(o));if(3>>0)return Sn(o);switch(O){case 0:return e(o);case 1:return i(o);case 2:return s(o);default:return n(o)}case 21:return 33;case 22:return 31;case 23:_n(o,59);var U=gn(o),D=59>>0)return Sn(e);switch(n){case 0:return r(e);case 1:return t(e);default:for(;;){_n(e,14);var a=z$(gn(e));if(0===a)for(;;)if(_n(e,14),0!==hQ(gn(e)))return Sn(e);if(1!==a)return Sn(e)}}}}(n,c),f);Tn(r);var o=s(r);if(77>>0)return xr(NU);var v=o;if(39<=v)switch(v){case 39:return[0,p,90];case 40:return[0,p,91];case 41:return[0,p,86];case 42:return[0,p,87];case 43:return[0,p,105];case 44:return[0,p,106];case 45:return[0,p,68];case 46:return[0,p,94];case 47:return[0,p,67];case 48:return[0,p,66];case 49:return[0,p,96];case 50:return[0,p,95];case 51:return[0,p,77];case 52:return[0,p,76];case 53:return[0,p,74];case 54:return[0,p,75];case 55:return[0,p,72];case 56:return[0,p,71];case 57:return[0,p,70];case 58:return[0,p,69];case 59:return[0,p,92];case 60:return[0,p,93];case 61:return[0,p,97];case 62:return[0,p,98];case 63:return[0,p,Tb];case 64:return[0,p,vu];case 65:return[0,p,cb];case 66:return[0,p,83];case 67:return[0,p,85];case 68:return[0,p,84];case 69:return[0,p,ai];case 70:return[0,p,tv];case 71:return[0,p,78];case 72:return[0,p,12];case 73:return[0,p,73];case 74:return[0,p,99];case 75:return[0,p,14];case 76:return[0,p[4]?WQ(p,JQ(p,r),4):p,rv];default:return[0,VQ(p,JQ(p,r)),zv]}switch(v){case 0:p=KQ(p,r);continue;case 1:p=VQ(p,JQ(p,r));continue;case 2:continue;case 3:var l=JQ(p,r),b=ue(Kb),k=cZ(p,b,r),p=QQ(k[1],l,k[2],b,1);continue;case 4:var h=m$(r);if(p[5]){var d=p[4]?zQ(p,JQ(p,r),h):p,m=H$(1,d),y=In(r);if(fr(d$(r,y-1|0,1),RU)&&sr(d$(r,y-2|0,1),LU))return[0,m,80];p=m;continue}var w=JQ(p,r),g=ue(Kb);se(g,Vr(h,2,wt(h)-2|0));var T=cZ(p,g,r),p=QQ(T[1],w,T[2],g,1);continue;case 5:if(p[4]){p=H$(0,p);continue}An(r);return Tn(r),0===function(t){return 0===FQ(gn(t))?0:Sn(t)}(r)?[0,p,Tb]:xr(PU);case 6:var _=JQ(p,r),S=ue(Kb),A=sZ(p,S,r),p=QQ(A[1],_,A[2],S,0);continue;case 7:if(0===En(r)){p=sZ(p,ue(Kb),r)[1];continue}return[0,p,zv];case 8:var E=m$(r),x=JQ(p,r),I=ue(Kb),C=ue(Kb);se(C,E);var N=iZ(p,E,I,C,0,r),R=N[3],L=N[1],P=E$(x,N[2]),O=ie(C);return[0,L,[1,[0,P,ie(I),O,R]]];case 9:var U=ue(Kb),D=ue(Kb),M=ue(Kb);se(M,m$(r));var F=vZ(p,JQ(p,r),U,D,M,r),X=F[3],B=F[2],j=F[1],G=ie(M),q=ie(D);return[0,j,[2,[0,B,[0,ie(U),q,G],X]]];case 10:return rZ(p,r,function(t,r){if(Tn(r),0===PQ(gn(r)))if(0===IQ(gn(r)))if(0===_Q(gn(r))){for(;;)if(_n(r,0),0!==_Q(gn(r))){e=Sn(r);break}}else e=Sn(r);else e=Sn(r);else var e=Sn(r);return 0===e?[0,t,CU]:xr(IU)});case 11:return[0,p,OU];case 12:return rZ(p,r,function(t,r){if(Tn(r),0===PQ(gn(r)))if(0===DQ(gn(r)))if(0===CQ(gn(r))){for(;;)if(_n(r,0),0!==CQ(gn(r))){e=Sn(r);break}}else e=Sn(r);else e=Sn(r);else var e=Sn(r);return 0===e?[0,t,xU]:xr(EU)});case 13:return[0,p,UU];case 14:return rZ(p,r,function(t,r){if(Tn(r),0===PQ(gn(r)))if(0===CQ(gn(r))){for(;;)if(_n(r,0),0!==CQ(gn(r))){e=Sn(r);break}}else e=Sn(r);else var e=Sn(r);return 0===e?[0,t,AU]:xr(SU)});case 15:return[0,p,DU];case 16:return rZ(p,r,function(t,r){if(Tn(r),0===PQ(gn(r)))if(0===bQ(gn(r)))if(0===oQ(gn(r))){for(;;)if(_n(r,0),0!==oQ(gn(r))){e=Sn(r);break}}else e=Sn(r);else e=Sn(r);else var e=Sn(r);return 0===e?[0,t,_U]:xr(TU)});case 17:return[0,p,MU];case 18:return rZ(p,r,function(t,r){function e(t){for(;;)if(_n(t,0),0!==uQ(gn(t)))return Sn(t)}function n(t){var r=iQ(gn(t));return 0===r?0===uQ(gn(t))?e(t):Sn(t):1===r?e(t):Sn(t)}function a(t){if(0===uQ(gn(t)))for(;;){var r=Z$(gn(t));if(0!==r)return 1===r?n(t):Sn(t)}return Sn(t)}Tn(r);var u=sQ(gn(r));if(0===u)f=a(r);else if(1===u)for(;;){var i=UQ(gn(r));if(2>>0)f=Sn(r);else switch(i){case 0:f=a(r);break;case 1:continue;default:f=n(r);}break}else var f=Sn(r);return 0===f?[0,t,gU]:xr(wU)});case 19:return[0,p,FU];case 20:return rZ(p,r,function(t,r){function e(t){for(;;)if(_n(t,0),0!==uQ(gn(t)))return Sn(t)}Tn(r);var n=sQ(gn(r));if(0===n)u=0===uQ(gn(r))?e(r):Sn(r);else if(1===n)for(;;){_n(r,0);var a=sQ(gn(r));if(0===a){_n(r,0);u=0===uQ(gn(r))?e(r):Sn(r);}else{if(1===a)continue;u=Sn(r);}break}else var u=Sn(r);return 0===u?[0,t,yU]:xr(mU)});case 21:return[0,p,XU];case 22:var Y=m$(r);if(64===cr(Y,0))if(64===cr(Y,1))var J=Vr(Y,2,wt(Y)-2|0),H=1;else H=0;else H=0;if(!H)J=Y;try{return[0,p,Ke(eZ,J)]}catch(r){if((r=mr(r))===nm)return[0,p,0];throw r}case 23:return[0,p,1];case 24:return[0,p,2];case 25:return[0,p,5];case 26:return[0,p,6];case 27:return[0,p,7];case 28:return[0,p,8];case 29:return[0,p,13];case 30:return[0,p,11];case 31:return[0,p,9];case 32:return[0,p,10];case 33:return[0,p,80];case 34:return[0,p,79];case 35:return[0,p,82];case 36:return[0,p,81];case 37:return[0,p,88];default:return[0,p,89]}}},uZ=function(t,r){for(g=t;;){var e=function(t){return 0===fQ(gn(t))&&0===RQ(gn(t))&&0===EQ(gn(t))&&0===nQ(gn(t))&&0===aQ(gn(t))&&0===NQ(gn(t))&&0===LQ(gn(t))&&0===fQ(gn(t))&&0===BQ(gn(t))&&0===cQ(gn(t))&&0===wQ(gn(t))?3:Sn(t)},n=function(t){return _n(t,3),0===GQ(gn(t))?3:Sn(t)},a=function(t){for(;;)if(_n(t,17),0!==hQ(gn(t)))return Sn(t)},u=function(t){return function(r){_n(r,17);var e=lQ(gn(r));if(0===e)return t(r);if(1===e)for(;;){_n(r,14);var n=lQ(gn(r));if(0===n)for(;;)if(_n(r,13),0!==hQ(gn(r)))return Sn(r);if(1!==n)return Sn(r)}return Sn(r)}}(a),i=function(t){return function(r){_n(r,17);var e=K$(gn(r));if(0===e)return t(r);if(1===e)for(;;){_n(r,10);var n=K$(gn(r));if(0===n)for(;;)if(_n(r,9),0!==hQ(gn(r)))return Sn(r);if(1!==n)return Sn(r)}return Sn(r)}}(a),f=function(t){return function(r){_n(r,17);var e=MQ(gn(r));if(0===e)return t(r);if(1===e)for(;;){_n(r,8);var n=MQ(gn(r));if(0===n)for(;;)if(_n(r,7),0!==hQ(gn(r)))return Sn(r);if(1!==n)return Sn(r)}return Sn(r)}}(a),c=function(t){if(0===uQ(gn(t)))for(;;){_n(t,16);var r=z$(gn(t));if(0===r)for(;;)if(_n(t,15),0!==hQ(gn(t)))return Sn(t);if(1!==r)return Sn(t)}return Sn(t)},s=function(t,r){return function(e){_n(e,17);var n=qQ(gn(e));if(2>>0)return Sn(e);switch(n){case 0:return t(e);case 1:return r(e);default:for(;;){_n(e,16);var a=z$(gn(e));if(0===a)for(;;)if(_n(e,15),0!==hQ(gn(e)))return Sn(e);if(1!==a)return Sn(e)}}}}(a,c),o=function(t,r){return function(e){for(;;){_n(e,18);var n=W$(gn(e));if(2>>0)return Sn(e);switch(n){case 0:return t(e);case 1:continue;default:return r(e)}}}}(a,s),v=function(t,r){return function(e){_n(e,18);var n=z$(gn(e));return 0===n?r(e):1===n?t(e):Sn(e)}}(o,a),l=function(t,r,e){return function(n){for(;;){_n(n,18);var a=Q$(gn(n));if(3>>0)return Sn(n);switch(a){case 0:return t(n);case 1:return e(n);case 2:continue;default:return r(n)}}}}(a,s,v),b=function(t){for(;;)if(_n(t,11),0!==hQ(gn(t)))return Sn(t)},k=function(t,r,e){return function(n){for(;;){_n(n,12);var a=XQ(gn(n));if(4>>0)return Sn(n);switch(a){case 0:return r(n);case 1:return t(n);case 2:continue;case 3:for(;;){_n(n,11);var u=Q$(gn(n));if(3>>0)return Sn(n);switch(u){case 0:return r(n);case 1:return t(n);case 2:continue;default:return e(n)}}default:return e(n)}}}}(v,b,function(t,r){return function(e){_n(e,11);var n=qQ(gn(e));if(2>>0)return Sn(e);switch(n){case 0:return r(e);case 1:return t(e);default:for(;;){_n(e,11);var a=z$(gn(e));if(0===a)for(;;)if(_n(e,11),0!==hQ(gn(e)))return Sn(e);if(1!==a)return Sn(e)}}}}(c,b)),p=function(t,r,e,n,a,u,i,f){return function(c){_n(c,18);var s=mQ(gn(c));if(7>>0)return Sn(c);switch(s){case 0:return t(c);case 1:return e(c);case 2:return n(c);case 3:return a(c);case 4:return u(c);case 5:return r(c);case 6:return i(c);default:return f(c)}}}(a,s,v,k,l,f,i,u),h=function(t,r,e,n,a,u,i,f,c,s,o,v,l,b){return function(k){var p=gn(k),h=Fo>>0)return Sn(k);switch(h){case 0:return 50;case 1:return 51;case 2:if(_n(k,1),0===tQ(gn(k)))for(;;)if(_n(k,1),0!==tQ(gn(k)))return Sn(k);return Sn(k);case 3:return 0;case 4:return _n(k,0),0===kQ(gn(k))?0:Sn(k);case 5:return 6;case 6:return _n(k,19),0===AQ(gn(k))?t(k):Sn(k);case 7:if(_n(k,51),0===LQ(gn(k))){var d=gn(k);if(0===(ai>>0)return Sn(k);switch(w){case 0:for(;;){var g=OQ(gn(k));if(3>>0)return Sn(k);switch(g){case 0:continue;case 1:return r(k);case 2:return u(k);default:return c(k)}}case 1:return r(k);case 2:return u(k);default:return c(k)}case 15:_n(k,30);var T=sQ(gn(k));return 0===T?0===$$(gn(k))?29:Sn(k):1===T?e(k):Sn(k);case 16:_n(k,51);var _=TQ(gn(k));if(0===_){_n(k,2);var S=gQ(gn(k));if(2>>0)return Sn(k);switch(S){case 0:for(;;){var A=gQ(gn(k));if(2>>0)return Sn(k);switch(A){case 0:continue;case 1:return l(k);default:return b(k)}}case 1:return l(k);default:return b(k)}}return 1===_?5:Sn(k);case 17:_n(k,18);var E=mQ(gn(k));if(7>>0)return Sn(k);switch(E){case 0:return n(k);case 1:return i(k);case 2:return f(k);case 3:return c(k);case 4:return s(k);case 5:return a(k);case 6:return o(k);default:return v(k)}case 18:_n(k,18);var x=Q$(gn(k));if(3>>0)return Sn(k);switch(x){case 0:return n(k);case 1:return i(k);case 2:return c(k);default:return a(k)}case 19:return 33;case 20:return 31;case 21:return 37;case 22:_n(k,39);var I=gn(k);return 0===(61>>0)return xr(HU);switch(d){case 0:g=KQ(g,r);continue;case 1:continue;case 2:var m=JQ(g,r),y=ue(Kb),w=cZ(g,y,r),g=QQ(w[1],m,w[2],y,1);continue;case 3:var T=m$(r);if(g[5]){var _=g[4]?zQ(g,JQ(g,r),T):g,S=H$(1,_),A=In(r);if(fr(d$(r,A-1|0,1),WU)&&sr(d$(r,A-2|0,1),zU))return[0,S,80];g=S;continue}var E=JQ(g,r),x=ue(Kb);se(x,T);var I=cZ(g,x,r),g=QQ(I[1],E,I[2],x,1);continue;case 4:if(g[4]){g=H$(0,g);continue}An(r);return Tn(r),0===function(t){return 0===FQ(gn(t))?0:Sn(t)}(r)?[0,g,Tb]:xr(VU);case 5:var C=JQ(g,r),N=ue(Kb),R=sZ(g,N,r),g=QQ(R[1],C,R[2],N,0);continue;case 6:var L=m$(r),P=JQ(g,r),O=ue(Kb),U=ue(Kb);se(U,L);var D=iZ(g,L,O,U,0,r),M=D[3],F=D[1],X=E$(P,D[2]),B=ie(U);return[0,F,[1,[0,X,ie(O),B,M]]];case 7:return rZ(g,r,function(t,r){function e(t){if(0===IQ(gn(t))){if(0===_Q(gn(t)))for(;;)if(_n(t,0),0!==_Q(gn(t)))return Sn(t);return Sn(t)}return Sn(t)}Tn(r);var n=eQ(gn(r));if(0===n)for(;;){var a=pQ(gn(r));if(0!==a){u=1===a?e(r):Sn(r);break}}else var u=1===n?e(r):Sn(r);return 0===u?[0,t,tZ(0,m$(r))]:xr(JU)});case 8:return[0,g,tZ(0,m$(r))];case 9:return rZ(g,r,function(t,r){function e(t){if(0===DQ(gn(t))){if(0===CQ(gn(t)))for(;;)if(_n(t,0),0!==CQ(gn(t)))return Sn(t);return Sn(t)}return Sn(t)}Tn(r);var n=eQ(gn(r));if(0===n)for(;;){var a=pQ(gn(r));if(0!==a){u=1===a?e(r):Sn(r);break}}else var u=1===n?e(r):Sn(r);return 0===u?[0,t,tZ(2,m$(r))]:xr(YU)});case 10:return[0,g,tZ(2,m$(r))];case 11:return rZ(g,r,function(t,r){function e(t){if(0===CQ(gn(t)))for(;;)if(_n(t,0),0!==CQ(gn(t)))return Sn(t);return Sn(t)}Tn(r);var n=eQ(gn(r));if(0===n)for(;;){var a=pQ(gn(r));if(0!==a){u=1===a?e(r):Sn(r);break}}else var u=1===n?e(r):Sn(r);return 0===u?[0,t,tZ(1,m$(r))]:xr(qU)});case 12:return[0,g,tZ(1,m$(r))];case 13:return rZ(g,r,function(t,r){function e(t){if(0===bQ(gn(t))){if(0===oQ(gn(t)))for(;;)if(_n(t,0),0!==oQ(gn(t)))return Sn(t);return Sn(t)}return Sn(t)}if(Tn(r),0===function(t){var r=eQ(gn(t));if(0===r)for(;;){var n=pQ(gn(t));if(0!==n)return 1===n?e(t):Sn(t)}return 1===r?e(t):Sn(t)}(r)){var n=m$(r);try{return[0,t,tZ(3,n)]}catch(e){throw e=mr(e)}}return xr(GU)});case 14:var j=m$(r);try{return[0,g,tZ(3,j)]}catch(t){throw t=mr(t)}case 15:return rZ(g,r,function(t,r){function e(t){for(;;)if(_n(t,0),0!==uQ(gn(t)))return Sn(t)}function n(t){var r=iQ(gn(t));return 0===r?0===uQ(gn(t))?e(t):Sn(t):1===r?e(t):Sn(t)}function a(t){if(0===uQ(gn(t)))for(;;){var r=Z$(gn(t));if(0!==r)return 1===r?n(t):Sn(t)}return Sn(t)}function u(t){for(;;){var r=UQ(gn(t));if(2>>0)return Sn(t);switch(r){case 0:return a(t);case 1:continue;default:return n(t)}}}Tn(r);var i=vQ(gn(r));if(2>>0)s=Sn(r);else switch(i){case 0:for(;;){var f=gn(r),c=8>>0)s=Sn(r);else switch(c){case 0:continue;case 1:s=a(r);break;default:s=u(r);}break}break;case 1:s=a(r);break;default:var s=u(r);}return 0===s?[0,t,tZ(3,m$(r))]:xr(jU)});case 16:return[0,g,tZ(3,m$(r))];case 17:return rZ(g,r,function(t,r){function e(t){for(;;)if(_n(t,0),0!==uQ(gn(t)))return Sn(t)}Tn(r);var n=vQ(gn(r));if(2>>0)c=Sn(r);else switch(n){case 0:for(;;){var a=gn(r),u=8>>0)o=Sn(u);else switch(s){case 0:o=2;break;case 1:o=3;break;case 2:o=2;break;case 3:o=0;break;default:var o=1;}if(3>>0)return xr(KU);switch(o){case 0:var v=m$(u);if(se(n,v),fr(r,v))return[0,i,JQ(i,u),f];se(e,v);continue;case 1:se(n,$U);var l=fZ(i,e,u),b=l[2],k=l[1],p=b||f;se(n,m$(u));var i=k,f=p;continue;case 2:var h=m$(u);se(n,h);var d=VQ(i,JQ(i,u));return se(e,h),[0,d,JQ(d,u),f];default:var m=m$(u);se(n,m),se(e,m);continue}}},fZ=function(t,r,e){function n(t){return _n(t,4),0===CQ(gn(t))?3:Sn(t)}Tn(e);var a=gn(e),u=Pf>>0)o=Sn(e);else switch(u){case 0:o=0;break;case 1:o=17;break;case 2:o=16;break;case 3:_n(e,16);o=0===kQ(gn(e))?16:Sn(e);break;case 4:_n(e,5);o=0===CQ(gn(e))?n(e):Sn(e);break;case 5:_n(e,12);o=0===CQ(gn(e))?n(e):Sn(e);break;case 6:o=1;break;case 7:o=6;break;case 8:o=7;break;case 9:o=8;break;case 10:o=9;break;case 11:o=10;break;case 12:_n(e,15);var i=gn(e),f=47>>0)return xr(QU);switch(o){case 0:return[0,t,0];case 1:return se(r,ZU),[0,t,0];case 2:return Fr(function(t){return ce(r,t)},ZQ(Ct(Rr(tD,m$(e))))),[0,t,0];case 3:var v=Ct(Rr(rD,m$(e)));if(256<=v){var l=7&v;Fr(function(t){return ce(r,t)},ZQ(v>>>3|0)),ce(r,jr(48+l|0));}else Fr(function(t){return ce(r,t)},ZQ(v));return[0,t,1];case 4:return Fr(function(t){return ce(r,t)},ZQ(Ct(Rr(eD,m$(e))))),[0,t,1];case 5:return ce(r,jr(0)),[0,t,0];case 6:return ce(r,jr(8)),[0,t,0];case 7:return ce(r,jr(12)),[0,t,0];case 8:return ce(r,jr(10)),[0,t,0];case 9:return ce(r,jr(13)),[0,t,0];case 10:return ce(r,jr(9)),[0,t,0];case 11:return ce(r,jr(11)),[0,t,0];case 12:return Fr(function(t){return ce(r,t)},ZQ(Ct(Rr(nD,m$(e))))),[0,t,1];case 13:var b=m$(e);return Fr(function(t){return ce(r,t)},ZQ(Ct(Rr(aD,Vr(b,1,wt(b)-1|0))))),[0,t,0];case 14:var k=m$(e),p=Ct(Rr(uD,Vr(k,2,wt(k)-3|0))),h=nl>>0)f=Sn(e);else switch(a){case 0:f=3;break;case 1:f=0;break;case 2:_n(e,0);f=0===kQ(gn(e))?0:Sn(e);break;default:_n(e,3);var u=gn(e),i=44>>0){var c=VQ(o,JQ(o,e));return[0,c,JQ(c,e)]}switch(f){case 0:var s=KQ(o,e);se(r,m$(e));var o=s;continue;case 1:var v=JQ(o,e);return[0,o[4]?WQ(o,v,[2,fD,iD]):o,v];case 2:if(o[4])return[0,o,JQ(o,e)];se(r,cD);continue;default:se(r,m$(e));continue}}},sZ=function(t,r,e){for(;;){Tn(e);var n=gn(e),a=13>>0)u=Sn(e);else switch(a){case 0:u=0;break;case 1:u=2;break;case 2:u=1;break;default:_n(e,1);var u=0===kQ(gn(e))?1:Sn(e);}if(2>>0)return xr(sD);switch(u){case 0:return[0,t,JQ(t,e)];case 1:var i=JQ(t,e),f=i[3],c=f[3],s=f[2],o=f[1],v=i[2],l=i[1],b=KQ(t,e),k=In(e);return[0,b,[0,l,v,[0,o,s-k|0,c-k|0]]];default:se(r,m$(e));continue}}},oZ=function(t,r,e,n,a){for(C=t;;){Tn(a);var u=gn(a),i=123>>0)_=Sn(a);else switch(i){case 0:_=1;break;case 1:_=6;break;case 2:_=2;break;case 3:_n(a,2);_=0===kQ(gn(a))?2:Sn(a);break;case 4:_=0;break;default:_n(a,6);var f=gn(a),c=34>>0)return xr(gD);switch(_){case 0:var S=m$(a);switch(r){case 0:A=sr(S,TD)?0:1;break;case 1:A=sr(S,_D)?0:1;break;default:if(sr(S,SD))if(sr(S,AD))var A=0,E=0;else E=1;else E=1;if(E)return An(a),[0,C,JQ(C,a)]}if(A)return[0,C,JQ(C,a)];se(n,S),se(e,S);continue;case 1:var x=VQ(C,JQ(C,a));return[0,x,JQ(x,a)];case 2:var I=m$(a);se(n,I),se(e,I);var C=KQ(C,a);continue;case 3:var N=m$(a),R=Vr(N,3,wt(N)-4|0);se(n,N),Fr(function(t){return ce(e,t)},ZQ(Ct(Rr(ED,R))));continue;case 4:var P=m$(a),O=Vr(P,2,wt(P)-3|0);se(n,P),Fr(function(t){return ce(e,t)},ZQ(Ct(O)));continue;case 5:var U=m$(a),D=Vr(U,1,wt(U)-2|0);se(n,U);var M=L(D,xD);if(0<=M)if(0>>0)s=Sn(u);else switch(f){case 0:s=0;break;case 1:s=6;break;case 2:s=5;break;case 3:_n(u,5);s=0===kQ(gn(u))?4:Sn(u);break;case 4:_n(u,6);var c=gn(u),s=0===(xs>>0)return xr(QJ);switch(s){case 0:var o=VQ(k,JQ(k,u));return[0,o,E$(r,JQ(o,u)),1];case 1:return ce(a,96),[0,k,E$(r,JQ(k,u)),1];case 2:return se(a,ZJ),[0,k,E$(r,JQ(k,u)),0];case 3:ce(n,92),ce(a,92);var v=fZ(k,e,u)[1],l=m$(u);se(n,l),se(a,l);k=v;continue;case 4:se(n,tH),se(a,rH),se(e,eH);k=KQ(k,u);continue;case 5:var b=m$(u);se(n,b),se(a,b),ce(e,10);var k=KQ(k,u);continue;default:var p=m$(u);se(n,p),se(a,p),se(e,p);continue}}},lZ=ee([0,BK]),bZ=function(t,r){return[0,[0],0,r,q$(t[2].slice(),t)]},kZ=function(t,r){var e=r+1|0;if(t[1].length-1>>0)o=Sn(u);else switch(c){case 0:o=0;break;case 1:o=14;break;case 2:if(_n(u,2),0===tQ(gn(u))){for(;;)if(_n(u,2),0!==tQ(gn(u))){o=Sn(u);break}}else o=Sn(u);break;case 3:o=1;break;case 4:_n(u,1);o=0===kQ(gn(u))?1:Sn(u);break;case 5:o=13;break;case 6:if(_n(u,12),0===yQ(gn(u))){for(;;)if(_n(u,12),0!==yQ(gn(u))){o=Sn(u);break}}else o=Sn(u);break;case 7:o=10;break;case 8:_n(u,6);var s=TQ(gn(u)),o=0===s?4:1===s?3:Sn(u);break;case 9:o=9;break;case 10:o=5;break;case 11:o=11;break;case 12:o=7;break;default:o=8;}if(14>>0)x=xr(mD);else switch(o){case 0:x=[0,i,rv];break;case 1:i=KQ(i,u);continue;case 2:continue;case 3:var v=JQ(i,u),l=ue(Kb),b=sZ(i,l,u),i=QQ(b[1],v,b[2],l,0);continue;case 4:var k=JQ(i,u),p=ue(Kb),h=cZ(i,p,u),i=QQ(h[1],k,h[2],p,1);continue;case 5:x=[0,i,92];break;case 6:x=[0,i,99];break;case 7:x=[0,i,93];break;case 8:x=[0,i,1];break;case 9:x=[0,i,80];break;case 10:x=[0,i,11];break;case 11:x=[0,i,78];break;case 12:x=[0,i,$a];break;case 13:var d=m$(u),m=JQ(i,u),y=ue(Kb),w=ue(Kb);se(w,d);var g=fr(d,yD)?0:1,T=oZ(i,g,y,w,u),_=T[2],S=T[1];se(w,d);var A=ie(y),E=ie(w),x=[0,S,[4,[0,E$(m,_),A,E]]];break;default:x=[0,i,zv];}Qt=HQ(x);break}break;case 3:var C=xn(a[2]),N=YQ(a,C,C),R=ue(Kb),L=ue(Kb),P=a[2];Tn(P);var O=gn(P),U=123>>0)D=Sn(P);else switch(U){case 0:D=1;break;case 1:D=4;break;case 2:D=0;break;case 3:_n(P,0);D=0===kQ(gn(P))?0:Sn(P);break;case 4:D=2;break;default:var D=3;}if(4>>0)q=xr(wD);else switch(D){case 0:var M=m$(P);se(L,M),se(R,M);var F=oZ(KQ(a,P),2,R,L,P),X=F[2],B=F[1],j=ie(R),G=ie(L),q=[0,B,[4,[0,E$(N,X),j,G]]];break;case 1:q=[0,a,rv];break;case 2:q=[0,a,92];break;case 3:q=[0,a,1];break;default:var Y=m$(P);se(L,Y),se(R,Y);var J=oZ(a,2,R,L,P),H=J[2],W=J[1],z=ie(R),V=ie(L),q=[0,W,[4,[0,E$(N,H),z,V]]];}Qt=HQ([0,q[1],q[2]]);break;case 4:for(var K=a[2],$=a;;){Tn(K);var Q=gn(K),Z=-1>>0)rt=Sn(K);else switch(Z){case 0:rt=5;break;case 1:if(_n(K,1),0===tQ(gn(K))){for(;;)if(_n(K,1),0!==tQ(gn(K))){rt=Sn(K);break}}else rt=Sn(K);break;case 2:rt=0;break;case 3:_n(K,0);rt=0===kQ(gn(K))?0:Sn(K);break;case 4:_n(K,5);var tt=TQ(gn(K)),rt=0===tt?3:1===tt?2:Sn(K);break;default:rt=4;}if(5>>0)mt=xr(VJ);else switch(rt){case 0:$=KQ($,K);continue;case 1:continue;case 2:var et=JQ($,K),nt=ue(Kb),at=sZ($,nt,K),$=QQ(at[1],et,at[2],nt,0);continue;case 3:var ut=JQ($,K),it=ue(Kb),ft=cZ($,it,K),$=QQ(ft[1],ut,ft[2],it,1);continue;case 4:var ct=JQ($,K),st=ue(Kb),ot=ue(Kb),vt=ue(Kb);se(vt,KJ);var lt=vZ($,ct,st,ot,vt,K),bt=lt[3],kt=lt[2],pt=lt[1],ht=ie(vt),dt=ie(ot),mt=[0,pt,[2,[0,kt,[0,ie(st),dt,ht],bt]]];break;default:var yt=VQ($,JQ($,K)),mt=[0,yt,[2,[0,JQ(yt,K),$J,1]]];}Qt=HQ(mt);break}break;default:for(var gt=a[2],Tt=a;;){Tn(gt);var _t=gn(gt),St=Fo<_t?up<_t?Oc<_t?1:2:wf<_t?Mn<_t?Bl<_t?1:2:Rh<_t?1:2:as<_t?Ka<_t?1:2:jn<_t?1:2:cr(HH,_t+1|0)-1|0;if(5>>0)Et=Sn(gt);else switch(St){case 0:Et=0;break;case 1:Et=6;break;case 2:if(_n(gt,2),0===tQ(gn(gt))){for(;;)if(_n(gt,2),0!==tQ(gn(gt))){Et=Sn(gt);break}}else Et=Sn(gt);break;case 3:Et=1;break;case 4:_n(gt,1);Et=0===kQ(gn(gt))?1:Sn(gt);break;default:_n(gt,5);var At=TQ(gn(gt)),Et=0===At?4:1===At?3:Sn(gt);}if(6>>0)$t=xr(oD);else switch(Et){case 0:$t=[0,Tt,rv];break;case 1:Tt=KQ(Tt,gt);continue;case 2:continue;case 3:var xt=JQ(Tt,gt),It=ue(Kb),Ct=sZ(Tt,It,gt),Tt=QQ(Ct[1],xt,Ct[2],It,0);continue;case 4:var Nt=JQ(Tt,gt),Rt=ue(Kb),Lt=cZ(Tt,Rt,gt),Tt=QQ(Lt[1],Nt,Lt[2],Rt,1);continue;case 5:var Pt=JQ(Tt,gt),Ot=ue(Kb),Ut=Tt;t:for(;;){Tn(gt);var Dt=gn(gt),Mt=92>>0)Bt=Sn(gt);else switch(Mt){case 0:Bt=0;break;case 1:Bt=7;break;case 2:Bt=6;break;case 3:_n(gt,6);Bt=0===kQ(gn(gt))?6:Sn(gt);break;case 4:if(_n(gt,4),0===dQ(gn(gt))){for(;;)if(_n(gt,3),0!==dQ(gn(gt))){Bt=Sn(gt);break}}else Bt=Sn(gt);break;case 5:Bt=5;break;default:_n(gt,7);var Ft=gn(gt),Xt=-1>>0)Bt=Sn(gt);else switch(Xt){case 0:Bt=2;break;case 1:Bt=1;break;default:_n(gt,1);var Bt=0===kQ(gn(gt))?1:Sn(gt);}}if(7>>0)Gt=xr(vD);else switch(Bt){case 0:Gt=[0,WQ(Ut,JQ(Ut,gt),14),lD];break;case 1:Gt=[0,WQ(Ut,JQ(Ut,gt),14),bD];break;case 2:se(Ot,m$(gt));continue;case 3:var jt=m$(gt),Gt=[0,Ut,Vr(jt,1,wt(jt)-1|0)];break;case 4:Gt=[0,Ut,kD];break;case 5:for(ce(Ot,91);;){Tn(gt);var qt=gn(gt),Yt=93>>0)Wt=Sn(gt);else switch(Yt){case 0:Wt=0;break;case 1:Wt=4;break;case 2:_n(gt,4);var Jt=gn(gt),Ht=91>>0)zt=xr(hD);else switch(Wt){case 0:zt=Ut;break;case 1:se(Ot,dD);continue;case 2:ce(Ot,92),ce(Ot,93);continue;case 3:ce(Ot,93);var zt=Ut;break;default:se(Ot,m$(gt));continue}Ut=zt;continue t}case 6:Gt=[0,WQ(Ut,JQ(Ut,gt),14),pD];break;default:se(Ot,m$(gt));continue}var Vt=Gt[1],Kt=Gt[2],$t=[0,Vt,[3,[0,E$(Pt,JQ(Vt,gt)),ie(Ot),Kt]]];break}break;default:$t=[0,VQ(Tt,JQ(Tt,gt)),zv];}var Qt=HQ($t);break}}var Zt=Qt[1],tr=Qt[2],rr=q$(Zt[2].slice(),Zt);t[4]=Zt;var er=t[2];I(t[1],er)[er+1]=[0,[0,rr,tr]],t[2]=t[2]+1|0;}},pZ=function(t,r,e,n){var a=t?t[1]:0,u=r?r[1]:0;try{var i=h$(n),f=0;}catch(s){if((s=mr(s))!==f$)throw s;var c=[0,[0,[0,e,sm[2],sm[3]],67],0],i=h$(OW),f=c;}var s=u?u[1]:bm,o=G$(e,i,s[5]),v=[0,bZ(o,0)];return[0,[0,f],[0,0],lZ[1],[0,lZ[1]],[0,0],s[6],0,0,0,0,0,0,0,0,0,1,0,0,0,[0,UW],[0,o],v,[0,a],s,e]},hZ=function(t){return Or(t[20][1])},dZ=function(t){return t[24][5]},mZ=function(t,r){var e=r[2];t[1][1]=[0,[0,r[1],e],t[1][1]];var n=t[19];return n?wr(n[1],t,e):0},yZ=function(t,r){var e=r[2],n=r[1];if(wr(lZ[3],e,t[4][1]))return mZ(t,[0,n,[7,e]]);var a=wr(lZ[4],e,t[4][1]);return t[4][1]=a,0},wZ=function(t,r){var e=t?t[1]:0;if(e<2){var n=r[22][1];kZ(n,e);var a=I(n[1],e)[e+1];return a?a[1][2]:xr(MW)}throw[0,im,PW]},gZ=function(t,r){return[0,r[1],r[2],r[3],r[4],r[5],t,r[7],r[8],r[9],r[10],r[11],r[12],r[13],r[14],r[15],r[16],r[17],r[18],r[19],r[20],r[21],r[22],r[23],r[24],r[25]]},TZ=function(t,r){return[0,r[1],r[2],r[3],r[4],r[5],r[6],r[7],r[8],r[9],r[10],r[11],r[12],r[13],r[14],r[15],r[16],r[17],t,r[19],r[20],r[21],r[22],r[23],r[24],r[25]]},_Z=function(t,r){return[0,r[1],r[2],r[3],r[4],r[5],r[6],r[7],r[8],r[9],r[10],r[11],r[12],t,r[14],r[15],r[16],r[17],r[18],r[19],r[20],r[21],r[22],r[23],r[24],r[25]]},SZ=function(t,r){return[0,r[1],r[2],r[3],r[4],r[5],r[6],r[7],t,r[9],r[10],r[11],r[12],r[13],r[14],r[15],r[16],r[17],r[18],r[19],r[20],r[21],r[22],r[23],r[24],r[25]]},AZ=function(t,r){return[0,r[1],r[2],r[3],r[4],r[5],r[6],r[7],r[8],r[9],r[10],t,r[12],r[13],r[14],r[15],r[16],r[17],r[18],r[19],r[20],r[21],r[22],r[23],r[24],r[25]]},EZ=function(t,r){return[0,r[1],r[2],r[3],r[4],r[5],r[6],r[7],r[8],r[9],r[10],r[11],r[12],r[13],t,r[15],r[16],r[17],r[18],r[19],r[20],r[21],r[22],r[23],r[24],r[25]]},xZ=function(t,r){return[0,r[1],r[2],r[3],r[4],r[5],r[6],t,r[8],r[9],r[10],r[11],r[12],r[13],r[14],r[15],r[16],r[17],r[18],r[19],r[20],r[21],r[22],r[23],r[24],r[25]]},IZ=function(t,r){return[0,r[1],r[2],r[3],r[4],r[5],r[6],r[7],r[8],r[9],r[10],r[11],t,r[13],r[14],r[15],r[16],r[17],r[18],r[19],r[20],r[21],r[22],r[23],r[24],r[25]]},CZ=function(t,r){return[0,r[1],r[2],r[3],r[4],r[5],r[6],r[7],r[8],r[9],r[10],r[11],r[12],r[13],r[14],r[15],r[16],r[17],r[18],[0,t],r[20],r[21],r[22],r[23],r[24],r[25]]},NZ=function(t){function r(r){return mZ(t,r)}return function(t){return Fr(r,t)}},RZ=function(t){var r=t[5][1];return r?[0,r[1][2]]:0},LZ=function(t){return[0,t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15],t[16],t[17],t[18],0,t[20],t[21],t[22],t[23],t[24],t[25]]},PZ=function(t,r,e){return[0,t[1],t[2],lZ[1],t[4],t[5],t[6],t[7],0,0,1,t[11],t[12],t[13],t[14],t[15],e,r,t[18],t[19],t[20],t[21],t[22],t[23],t[24],t[25]]},OZ=function(t){return sr(t,LW)?0:1},UZ=function(t){return sr(t,SW)&&sr(t,AW)&&sr(t,EW)&&sr(t,xW)&&sr(t,IW)&&sr(t,CW)&&sr(t,NW)&&sr(t,RW)?0:1},DZ=function(t){return sr(t,TW)&&sr(t,_W)?0:1},MZ=function(t,r){var e=t?t[1]:0;return wZ([0,e],r)[1]},FZ=function(t,r){var e=t?t[1]:0;return wZ([0,e],r)[3]},XZ=function(t,r){var e=t?t[1]:0;return wZ([0,e],r)[2]},BZ=function(t,r){var e=t?t[1]:0;return wZ([0,e],r)[4]},jZ=function(t){var r=RZ(t);return r&&r[1][2][1]>>0){if(!(106<(e+1|0)>>>0))return 1}else if(6===e)return 0}return jZ(t)},qZ=function(t,r){var e=t?t[1]:0;return 9===MZ([0,e],r)?[0,XZ([0,e],r)]:0},YZ=function(t,r){var e=t?t[1]:0,n=FZ([0,e],r),a=MZ([0,e],r);if(!UZ(n)&&!DZ(n)&&!OZ(n)){if("number"==typeof a){var u=a-1|0;if(58>>0?64<=u?0:1:27===u?1:0)return 1}return 0}return 1},JZ=function(t,r){var e=t?t[1]:0,n=15===MZ([0,e],r)?1:0;if(n)u=n;else var a=63===MZ([0,e],r)?1:0,u=a?15===MZ([0,e+1|0],r)?1:0:a;return u},HZ=function(t,r){var e=t?t[1]:0,n=MZ([0,e],r);return"number"==typeof n&&(14===n?1:40===n?1:0)?1:0},WZ=function(t,r){return mZ(t,[0,XZ(0,t),r])},zZ=function(t){var r=t[1];if("number"==typeof r)switch(r){case 0:return 2;case 108:return 4}else switch(r[0]){case 0:return 0;case 1:case 4:return 1}var e=t[2];return OZ(e)?3:UZ(e)?40:[1,e]},VZ=function(t){var r=BZ(0,t);yr(NZ(t),r);var e=FZ(0,t);return WZ(t,zZ([0,MZ(0,t),e]))},KZ=function(t){function r(r){return mZ(t,[0,r[1],57])}return function(t){return Fr(r,t)}},$Z=function(t,r){var e=t[6];return e?WZ(t,r):e},QZ=function(t,r){var e=t[6],n=r[2],a=r[1];return e?mZ(t,[0,a,n]):e},ZZ=function(t){var r=t[23][1];if(r){var e=r[1],n=XZ(0,t),a=MZ(0,t),u=FZ(0,t);yr(e,[0,n,a,hZ(t),u]);}var i=t[22][1];kZ(i,0);var f=I(i[1],0)[1],c=f?f[1][1]:xr(DW);t[21][1]=c;var s=BZ(0,t);yr(NZ(t),s),Fr(function(r){return t[2][1]=[0,r,t[2][1]],0},wZ([0,0],t)[5]);var o=[0,wZ(0,t)];t[5][1]=o;var v=t[22][1];kZ(v,0),1>>0?wr(M,r,yr(g,r)):wr(F,r,yr(t[14],r)[1])}function e(t,r,e){var n=yr(B,t);n0(t,80);var a=yr(g,t);return[0,E$(r,a[1]),[0,n,a,e]]}function n(t,r,n,a){var u=e(t,r,wr(W,0,t)),i=[0,u[1],[1,u[2]]];return[0,[0,i[1],[0,a,[0,i],0,n,1,0]]]}function u(t,r,e,n,a){1-dZ(t)&&WZ(t,7);var u=a0(t,79);n0(t,80);var i=yr(g,t);return[0,[0,E$(r,i[1]),[0,a,[0,i],u,e,0,n]]]}function i(t,r){var e=MZ(0,r);if("number"==typeof e&&!(11<=e))switch(e){case 2:if(!t)return 0;break;case 4:if(t)return 0;break;case 9:case 10:return ZZ(r)}return VZ(r)}function f(t,r){return r?mZ(t,[0,r[1][1],5]):0}function c(r){var e=EZ(0,r),n=MZ(0,e);if("number"==typeof n&&65===n){var a=XZ(0,e);if(n0(e,65),5===MZ(0,e)){n0(e,5),t0(e,0);var u=yr(t[8],e);r0(e);var i=XZ(0,e);n0(e,6);f=[0,E$(a,i),[0,u]];}else var f=[0,a,0];return[0,f]}return 0}function s(t){var r=MZ(0,t),e=MZ(BW,t);return"number"==typeof r&&80===r?"number"==typeof e&&65===e?(n0(t,80),[0,0,c(t)]):[0,yr(Q,t),c(t)]:jW}function o(t,r){var e=gZ(1,r);t0(e,1);var n=yr(t,e);return r0(e),n}function v(t){return o(g,t)}function l(t){return o(Z,t)}function b(t){return o(tt,t)}function k(t){return o(z,t)}function p(t,r){return o(gr(H,t,0,0),r)}function h(t){return o(B,t)}function d(t){return o(T,t)}function m(t){return o(Q,t)}function y(t){return o(c,t)}function w(t){return o(s,t)}var g=function t(r){return t.fun(r)},T=function t(r){return t.fun(r)},_=function t(r){return t.fun(r)},S=function t(r){return t.fun(r)},A=function t(r){return t.fun(r)},E=function t(r,e){return t.fun(r,e)},x=function t(r){return t.fun(r)},I=function t(r,e){return t.fun(r,e)},C=function t(r){return t.fun(r)},N=function t(r,e){return t.fun(r,e)},R=function t(r){return t.fun(r)},L=function t(r){return t.fun(r)},P=function t(r,e){return t.fun(r,e)},O=function t(r){return t.fun(r)},U=function t(r){return t.fun(r)},D=function t(r){return t.fun(r)},M=function t(r,e){return t.fun(r,e)},F=function t(r,e){return t.fun(r,e)},X=function t(r){return t.fun(r)},B=function t(r){return t.fun(r)},j=function t(r){return t.fun(r)},G=function t(r){return t.fun(r)},q=function t(r){return t.fun(r)},Y=function t(r){return t.fun(r)},J=function t(r,e,n,a){return t.fun(r,e,n,a)},H=function t(r,e,n,a){return t.fun(r,e,n,a)},W=function t(r,e){return t.fun(r,e)},z=function t(r){return t.fun(r)},V=function t(r){return t.fun(r)},K=function t(r,e){return t.fun(r,e)},$=function t(r,e){return t.fun(r,e)},Q=function t(r){return t.fun(r)};a(g,function(t){return yr(A,t)}),a(T,function(t){1-dZ(t)&&WZ(t,7);var r=XZ(0,t);n0(t,80);var e=yr(g,t),n=RZ(t);if(n)return[0,E$(r,n[1]),e];throw[0,im,oz]}),a(_,function(t){var r=XZ(0,t),e=MZ(0,t);if("number"==typeof e){if(97===e)return ZZ(t),[0,[0,r,0]];if(98===e)return ZZ(t),[0,[0,r,1]]}return 0}),a(S,function(t){if(t){var r=t[1][1],e=Dr(t);if(e)return[0,E$(e[1][1],r),e];throw[0,im,sz]}throw[0,im,cz]}),a(A,function(t){return a0(t,83),wr(E,t,yr(x,t))}),a(E,function(t,r){if(83===MZ(0,t))for(f=[0,r,0];;){var e=MZ(0,t);if("number"!=typeof e||83!==e){var n=yr(S,f),a=n[2],u=n[1];if(a){var i=a[2];if(i)return[0,u,[5,a[1],i[1],i[2]]]}throw[0,im,fz]}n0(t,83);var f=[0,yr(x,t),f];}return r}),a(x,function(t){return a0(t,85),wr(I,t,yr(C,t))}),a(I,function(t,r){if(85===MZ(0,t))for(f=[0,r,0];;){var e=MZ(0,t);if("number"!=typeof e||85!==e){var n=yr(S,f),a=n[2],u=n[1];if(a){var i=a[2];if(i)return[0,u,[6,a[1],i[1],i[2]]]}throw[0,im,iz]}n0(t,85);var f=[0,yr(C,t),f];}return r}),a(C,function(t){return wr(N,t,yr(R,t))}),a(N,function(t,r){var e=MZ(0,t);if("number"==typeof e&&12===e&&!t[14]){var n=wr(M,t,r);return Tr(J,t,n[1],0,[0,[0,n,0],0])}return r}),a(R,function(t){var r=MZ(0,t);if("number"==typeof r&&79===r){var e=XZ(0,t);n0(t,79);var n=yr(R,t);return[0,E$(e,n[1]),[0,n]]}return yr(L,t)}),a(L,function(t){return wr(P,t,yr(O,t))}),a(P,function(t,r){if(!jZ(t)&&a0(t,7)){var e=XZ(0,t);return n0(t,8),wr(P,t,[0,E$(r[1],e),[3,r]])}return r}),a(O,function(t){var r=XZ(0,t),e=MZ(0,t);if("number"==typeof e)switch(e){case 0:var n=yr(V,t);return[0,n[1],[4,n[2]]];case 5:return yr(q,t);case 7:return yr(D,t);case 46:var a=XZ(0,t);n0(t,46);var u=yr(O,t);return[0,E$(a,u[1]),[7,u]];case 92:return yr(Y,t);case 100:return n0(t,Tb),[0,r,8];case 1:case 3:var i=Tr(H,0,1,1,t);return[0,i[1],[2,i[2]]];case 30:case 31:var f=FZ(0,t);return n0(t,e),[0,r,[11,[0,31===e?1:0,f]]]}else switch(e[0]){case 1:var c=e[1],s=c[4],o=c[3],v=c[2],l=c[1];return s&&$Z(t,32),n0(t,[1,[0,l,v,o,s]]),[0,l,[9,[0,v,o]]];case 5:var b=e[2],k=e[1],p=FZ(0,t);return n0(t,[5,k,b]),1===k&&$Z(t,32),[0,r,[10,[0,b,p]]]}var h=yr(U,e);if(h){var d=h[1];return n0(t,e),[0,r,d]}return VZ(t),[0,r,0]}),a(U,function(t){if("number"==typeof t){if(29===t)return uz;if(ol<=t)switch(t-110|0){case 0:return QW;case 1:return ZW;case 2:return tz;case 3:return rz;case 4:return ez;case 5:return nz;default:return az}}return 0}),a(D,function(t){var r=XZ(0,t);n0(t,7);for(i=0;;){var e=MZ(0,t);if("number"==typeof e&&(8===e?1:rv===e?1:0)){var n=Dr(i),a=XZ(0,t);return n0(t,8),[0,E$(r,a),[8,n]]}var u=[0,yr(g,t),i];8!==MZ(0,t)&&n0(t,10);var i=u;}}),a(M,function(t,r){return[0,r[1],[0,0,r,0]]}),a(F,function(t,r){1-dZ(t)&&WZ(t,7);var e=a0(t,79);n0(t,80);var n=yr(g,t);return[0,E$(r[1],n[1]),[0,[0,r],n,e]]}),a(X,function(t){return function(e){for(s=e;;){var n=MZ(0,t);if("number"==typeof n){var a=n-6|0;if(7>>0?cb===a?1:0:5<(a-1|0)>>>0?1:0){if(13===n){var u=XZ(0,t);n0(t,13);var i=r(t),f=[0,[0,E$(u,i[1]),[0,i]]];}else f=0;return[0,Dr(s),f]}}var c=[0,r(t),s];6!==MZ(0,t)&&n0(t,10);var s=c;}}}),a(B,function(t){n0(t,5);var r=wr(X,t,0);return n0(t,6),r}),a(j,function(t){n0(t,5);var r=EZ(0,t),e=MZ(0,r);if("number"==typeof e)if(13<=e){if(rv===e)a=1;else if(14<=e)var n=0,a=0;else a=1;if(a)var u=[0,wr(X,r,0)],n=1;}else if(6===e)var u=zW,n=1;else if(0===e)var u=yr(G,r),n=1;else n=0;else n=0;if(!n){if(yr(U,e)){var i=MZ(VW,r);if("number"==typeof i)if(1<(i+Fh|0)>>>0)c=0;else var f=[0,wr(X,r,0)],c=1;else c=0;if(!c)f=[1,yr(g,r)];s=f;}else var s=[1,yr(g,r)];u=s;}if(0===u[0])p=u;else{var o=u[1];if(t[14])k=u;else{var v=MZ(0,t);if("number"==typeof v)if(6===v)if(12===MZ(KW,t))var l=[0,wr(X,t,[0,wr(M,t,o),0])],b=1;else var l=[1,o],b=1;else if(10===v){n0(t,10);var l=[0,wr(X,t,[0,wr(M,t,o),0])],b=1;}else b=0;else b=0;if(!b)l=u;var k=l;}var p=k;}return n0(t,6),p}),a(G,function(r){var e=wr(t[13],0,r),n=MZ(0,r);if("number"==typeof n&&!(1<(n+Fh|0)>>>0)){var a=wr(F,r,e);return a0(r,10),[0,wr(X,r,[0,a,0])]}return[1,wr(E,r,wr(I,r,wr(N,r,wr(P,r,wr($,r,e)))))]}),a(q,function(t){var r=XZ(0,t),e=yr(j,t);return 0===e[0]?Tr(J,t,r,0,e[1]):e[1]}),a(Y,function(t){var r=XZ(0,t),e=wr(W,0,t);return Tr(J,t,r,e,yr(B,t))}),a(J,function(t,r,e,n){n0(t,12);var a=yr(g,t);return[0,E$(r,a[1]),[1,[0,n,a,e]]]}),a(H,function(r,a,c,s){var o=a?3===MZ(0,s)?1:0:a,v=XZ(0,s);n0(s,o?3:1);for(vt=0;;){if(r&&c)throw[0,im,GW];var l=XZ(0,s),b=r?a0(s,42):r,k=yr(_,s),p=MZ(0,s);if("number"==typeof p){if(92===p)m=1;else{if(rv===p)var h=Dr(vt),d=1;else if(14<=p)var m=0,d=0;else switch(p){case 2:if(o)var m=0,d=0;else var h=Dr(vt),d=1;break;case 4:if(o)var h=Dr(vt),d=1;else var m=0,d=0;break;case 7:if(n0(s,7),80===MZ(WW,s)){var y=yr(t[14],s)[1];n0(s,80);w=[0,y];}else var w=0;var T=yr(g,s);n0(s,8),n0(s,80);var S=yr(g,s),A=[2,[0,E$(l,S[1]),[0,w,T,S,b,k]]];i(o,s);vt=[0,A,vt];continue;case 13:if(c){f(s,k),ZZ(s);var E=yr(g,s),x=[1,[0,E$(l,E[1]),[0,E]]];i(o,s);vt=[0,x,vt];continue}var m=0,d=0;break;case 5:var m=1,d=0;break;default:var m=0,d=0;}if(d){var I=XZ(0,s);return n0(s,o?4:2),[0,E$(v,I),[0,o,h]]}}if(m){f(s,k);var C=wr(W,0,s),N=e(s,XZ(0,s),C),R=[3,[0,E$(l,N[1]),[0,N,b]]];i(o,s);vt=[0,R,vt];continue}}if(0===b)F=0;else if(k)F=0;else if("number"==typeof p)if(80===p){QZ(s,[0,l,40]);var L=[1,[0,l,qW]],P=MZ(0,s);if("number"==typeof P){if(5===P)U=1;else if(92===P)U=1;else var O=0,U=0;if(U){f(s,k);var D=n(s,l,0,L),O=1;}}else O=0;if(!O)D=u(s,l,0,k,L);var M=D,F=1;}else F=0;else F=0;if(!F){var X=function(r){t0(r,0);var e=yr(t[21],r);return r0(r),e},B=X(s)[2];if(1===B[0]){var j=B[1][2];if(sr(j,YW))if(sr(j,JW))var G=0,q=0;else q=1;else q=1;if(q){var Y=MZ(0,s);if("number"==typeof Y){var J=Y-6|0;if(85>>0)if(87<(J+1|0)>>>0)var H=0,z=0;else{f(s,k);var V=n(s,l,b,B),z=1;}else if(1<(J-73|0)>>>0)var H=0,z=0;else var V=u(s,l,b,k,B),z=1;if(z)var K=V,H=1;}else H=0;if(!H){var $=X(s),Q=fr(j,HW);f(s,k);var Z=e(s,l,0),tt=$[1],rt=Z[2][1],et=$[2];if(0===Q){var nt=rt[1];if(rt[2]){mZ(s,[0,tt,63]);}else{if(nt)if(nt[2])at=1;else at=0;else var at=1;if(at){mZ(s,[0,tt,63]);}}}else(rt[1]?0:rt[2]?0:1)||mZ(s,[0,tt,62]);var ut=Q?[1,Z]:[2,Z],K=[0,[0,E$(l,Z[1]),[0,et,ut,0,b,0,0]]];}var it=K,G=1;}}else G=0;if(!G){var ft=MZ(0,s);if("number"==typeof ft){if(5===ft)st=1;else if(92===ft)st=1;else var ct=0,st=0;if(st){f(s,k);var ot=n(s,l,b,B),ct=1;}}else ct=0;if(!ct)ot=u(s,l,b,k,B);it=ot;}M=it;}i(o,s);var vt=[0,M,vt];}}),a(W,function(r,e){var n=XZ(0,e);if(92===MZ(0,e)){1-dZ(e)&&WZ(e,7),n0(e,92);for(var a=0,u=0;;){var i=yr(_,e),f=gr(t[15],e,0,29),c=f[2],s=f[1],o=c[2],v=c[1][2],l=MZ(0,e);if(0===r)var b=0,k=0;else{if("number"==typeof l)if(78===l){ZZ(e);var b=[0,yr(g,e)],k=1,p=1;}else p=0;else p=0;if(!p){a&&mZ(e,[0,s,58]);var b=0,k=a;}}var h=[0,[0,s,[0,v,o,i,b]],u],d=MZ(0,e);if("number"==typeof d){if(93===d)y=1;else if(rv===d)y=1;else var m=0,y=0;if(y)var w=Dr(h),m=1;}else m=0;if(!m){if(n0(e,10),93!==MZ(0,e)){var a=k,u=h;continue}w=Dr(h);}var T=E$(n,XZ(0,e));return n0(e,93),[0,[0,T,[0,w]]]}}return 0}),a(z,function(t){var r=XZ(0,t);if(92===MZ(0,t)){n0(t,92);for(i=0;;){var e=MZ(0,t);if("number"==typeof e&&(93===e?1:rv===e?1:0)){var n=Dr(i),a=E$(r,XZ(0,t));return n0(t,93),[0,[0,a,[0,n]]]}var u=[0,yr(g,t),i];93!==MZ(0,t)&&n0(t,10);var i=u;}}return 0}),a(V,function(r){return wr(K,r,wr(t[13],0,r))}),a(K,function(r,e){for(c=[0,e[1],[0,e]];;){var n=c[2],a=c[1];if(11!==MZ(0,r)){var u=yr(z,r);return[0,u?E$(a,u[1][1]):a,[0,n,u]]}n0(r,11);var i=wr(t[13],0,r),f=E$(a,i[1]),c=[0,f,[1,[0,f,[0,n,i]]]];}}),a($,function(t,r){var e=wr(K,t,r);return[0,e[1],[4,e[2]]]}),a(Q,function(t){var r=MZ(0,t);return"number"==typeof r&&80===r?[0,yr(T,t)]:0});var Z=yr(W,1),tt=yr(W,0);return[0,v,b,l,k,function(t){return o(V,t)},p,h,d,m,y,w]}(h0),m0=yr(function(t){return function(r){function e(t,r){for(c=r;;){var e=c[2],i=c[1],f=t[1];switch(e[0]){case 0:return Xr(n,t,e[1][1]);case 1:return Xr(a,t,e[1][1]);case 2:var c=e[1][1];continue;case 3:var s=e[1][1],o=s[2],v=t[2],l=t[1],b=s[1];wr(b0[3],o,v)&&mZ(l,[0,b,30]);var k=u([0,l,v],s);return[0,k[1],wr(b0[4],o,k[2])];default:return mZ(f,[0,i,19]),t}}}function n(t,r){if(0===r[0]){var n=r[1][2],a=n[1];return e(1===a[0]?u(t,a[1]):t,n[2])}return e(t,r[1][2][1])}function a(t,r){if(r){var n=r[1];return 0===n[0]?e(t,n[1]):e(t,n[1][2][1])}return t}function u(t,r){var e=r[2],n=r[1],a=t[1],u=t[2];return DZ(e)&&QZ(a,[0,n,29]),(OZ(e)||UZ(e))&&QZ(a,[0,n,40]),[0,a,u]}function i(t,r,n,a,u){var i=u[2],f=u[1],c=r||1-n;if(c){var s=r?gZ(1-t[6],t):t;if(a){var o=a[1],v=o[2],l=o[1];DZ(v)&&QZ(s,[0,l,31]),(OZ(v)||UZ(v))&&QZ(s,[0,l,40]);}var b=Xr(e,[0,s,b0[1]],f);if(i)return e(b,i[1][2][1]),0;k=0;}else var k=c;return k}function f(r){n0(r,5);for(v=0;;){var e=MZ(0,r);if("number"==typeof e){var n=e-6|0;if(7>>0?cb===n?1:0:5<(n-1|0)>>>0?1:0){if(13===e){var a=XZ(0,r);n0(r,13);var u=wr(t[19],r,29),i=[0,[0,E$(a,u[1]),[0,u]]];}else i=0;6!==MZ(0,r)&&WZ(r,48);var f=[0,Dr(v),i];return n0(r,6),f}}var c=wr(t[19],r,29);if(78===MZ(0,r)){n0(r,78);var s=yr(t[9],r),o=[0,E$(c[1],s[1]),[2,[0,c,s]]];}else o=c;6!==MZ(0,r)&&n0(r,10);var v=[0,o,v];}}function c(r,e,n){var a=PZ(r,e,n),u=yr(t[17],a),i=u[1];return[0,i,[0,[0,i,u[2]]],u[3]]}function s(r,e,n){var a=[0,r[1],r[2],r[3],r[4],r[5],r[6],r[7],r[8],r[9],1,r[11],r[12],r[13],r[14],r[15],r[16],r[17],r[18],r[19],r[20],r[21],r[22],r[23],r[24],r[25]],u=MZ(0,a);if("number"==typeof u&&1===u){var i=c(a,e,n);return[0,i[2],i[3]]}var f=PZ(a,e,n);return[0,[1,yr(t[9],f)],f[6]]}function o(t,r,e){var n=XZ(0,t),a=MZ(0,t);if("number"==typeof a)if(97===a){ZZ(t);var u=[0,[0,n,0]],i=1;}else if(98===a){ZZ(t);var u=[0,[0,n,1]],i=1;}else i=0;else i=0;if(!i)u=0;if(u){var f=u[1][1];if(!(r?0:e?0:1))return mZ(t,[0,f,5]),0}return u}function v(t){return a0(t,Tb)}function l(t){return a0(t,63)}function b(t){var r=0===t[2]?1:0,e=t[1];if(r)for(u=e;;){if(u){var n=u[2],a=3===u[1][2][0]?1:0;if(a){var u=n;continue}return a}return 1}return r}function k(e){var n=XZ(0,e),a=l(e);n0(e,15);var u=v(e),s=e[7],o=MZ(0,e);if(0===s)h=0;else if("number"==typeof o)if(5===o)var k=0,p=0,h=1;else if(92===o)var d=yr(r[2],e),m=5===MZ(0,e)?0:[0,wr(t[13],vz,e)],k=d,p=m,h=1;else h=0;else h=0;if(!h)var y=[0,wr(t[13],lz,e)],k=yr(r[2],e),p=y;var w=f(e),g=yr(r[11],e),T=g[2],_=g[1],S=c(e,a,u),A=S[2];i(e,S[3],b(w),p,w);var E=0===A[0]?[0,A[1][1],0]:[0,A[1][1],1],x=[17,[0,p,w,A,a,u,T,E[2],_,k]];return[0,E$(n,E[1]),x]}function p(r){for(var e=0,n=0;;){var a=wr(t[19],r,28);if(78===MZ(0,r)){n0(r,78);var u=[0,yr(t[9],r)],i=0;}else{var f=a[1];if(3===a[2][0])var u=km[1],i=km[2];else var u=0,i=[0,[0,f,44],0];}var c=u?u[1][1]:a[1],s=[0,[0,E$(a[1],c),[0,a,u]],e],o=Lr(i,n);if(10!==MZ(0,r)){var v=Or(s)[1],l=Dr(s),b=Or(s)[1],k=Dr(o);return[0,E$(b,v),l,k]}n0(r,10);var e=s,n=o;}}function h(t,r,e){var n=XZ(0,e);n0(e,t);var a=p(e),u=a[3],i=[0,a[2],r];return[0,[0,E$(n,a[1]),i],u]}function d(t){return h(g,w,t)}function m(t){var r=h(27,2,_Z(1,t)),e=r[1],n=e[2],a=r[2];return[0,[0,e[1],n],Dr(Xr(function(t,r){var e=r[1];return r[2][2]?t:[0,[0,e,43],t]},a,n[1]))]}function y(t){return h(28,1,_Z(1,t))}var w=0,g=24;return[0,l,v,o,f,c,b,i,s,function(t){var r=XZ(0,t),e=MZ(0,t);if("number"==typeof e){var n=e+-24|0;if(4>>0)i=0;else{switch(n){case 0:var a=d(t),u=1;break;case 3:var a=m(t),u=1;break;case 4:var a=y(t),u=1;break;default:var i=0,u=0;}if(u)var f=a,i=1;}}else i=0;if(!i){VZ(t);f=d(t);}var c=f[1],s=f[2],o=[27,c[2]];return[0,[0,E$(r,c[1]),o],s]},p,y,m,d,k]}}(h0),d0),y0=yr(yr(function(t){return function(r){return function(e){function n(r){var e=yr(h,r),n=yr(p,r);if(n){var a=n[1];1-yr(k,e)&&mZ(r,[0,e[1],15]);var u=e[2],i=e[1],f=("number"==typeof u||10===u[0]&&DZ(u[1][2])&&QZ(r,[0,i,37]),wr(t[20],r,e)),c=yr(v,r);return[0,E$(f[1],c[1]),[2,[0,a,f,c]]]}return e}function u(t,r){throw i0}function i(t){var r=CZ(u,t),e=n(r),a=MZ(0,r);if("number"==typeof a){if(12===a)throw i0;if(80===a){var i=r[5][1];if(D(i?[0,i[1][1]]:0,yV))throw i0}}if(YZ(0,r)){var f=e[2];if("number"!=typeof f&&10===f[0]&&!sr(f[1][2],wV)&&!jZ(r))throw i0;return e}return e}function f(t,r,e,n){return[0,n,[14,[0,e,t,r]]]}function c(t,r,e){for(var n=r,a=e;;){var u=MZ(0,t);if("number"!=typeof u||82!==u)return[0,a,n];n0(t,82);var i=l0(m,t),c=i[2],s=E$(a,i[1]),n=f(n,c,1,s),a=s;}}function s(t,r,e,n){return[0,n,[3,[0,e,t,r]]]}function o(t,r){if("number"==typeof r){var e=r-29|0;if(16>>0?19===e?1:0:14<(e-1|0)>>>0?1:0)return 0}throw i0}var v=function t(r){return t.fun(r)},l=function t(r){return t.fun(r)},b=function t(r){return t.fun(r)},k=function t(r){return t.fun(r)},p=function t(r){return t.fun(r)},h=function t(r){return t.fun(r)},d=function t(r){return t.fun(r)},m=function t(r){return t.fun(r)},y=function t(r){return t.fun(r)},w=function t(r){return t.fun(r)},g=function t(r){return t.fun(r)},T=function t(r){return t.fun(r)},_=function t(r,e){return t.fun(r,e)},S=function t(r,e,n){return t.fun(r,e,n)},A=function t(r){return t.fun(r)},E=function t(r){return t.fun(r)},x=function t(r,e,n){return t.fun(r,e,n)},I=function t(r){return t.fun(r)},C=function t(r,e){return t.fun(r,e)},N=function t(r){return t.fun(r)},R=function t(r){return t.fun(r)},L=function t(r,e){return t.fun(r,e)},P=function t(r,e,n,a){return t.fun(r,e,n,a)},O=function t(r){return t.fun(r)},U=function t(r){return t.fun(r)},M=function t(r){return t.fun(r)},F=function t(r){return t.fun(r)},X=function t(r,e){return t.fun(r,e)},B=function t(r){return t.fun(r)};return a(v,function(t){var r=MZ(0,t),e=YZ(0,t);if("number"==typeof r){var a=r-6|0;if(85>>0)u=87<(a+1|0)>>>0?0:1;else if(52===a){if(t[16])return yr(l,t);u=0;}else u=0;}else var u=0;if(!u&&0===e)return n(t);var f=v0(t,i);if(f)return f[1];var c=v0(t,F);return c?c[1]:n(t)}),a(l,function(t){return l0(function(t){n0(t,58),1-t[16]&&WZ(t,25);var r=a0(t,Tb),e=1-((9===MZ(0,t)?1:0)||GZ(t));if(r)a=0;else if(e)a=0;else var n=0,a=1;if(!a)n=[0,yr(v,t)];return[25,[0,n,r]]},t)}),a(b,function(t){var r=t[2];if("number"!=typeof r)switch(r[0]){case 10:case 15:case 16:return 1}return 0}),a(k,function(t){var r=t[2];if("number"!=typeof r)switch(r[0]){case 0:case 10:case 15:case 16:case 18:return 1}return 0}),a(p,function(t){var r=MZ(0,t);if("number"==typeof r){var e=r+-66|0;if(12>>0)u=0;else{switch(e){case 0:n=iV;break;case 1:n=fV;break;case 2:n=cV;break;case 3:n=sV;break;case 4:n=oV;break;case 5:n=vV;break;case 6:n=lV;break;case 7:n=bV;break;case 8:n=kV;break;case 9:n=pV;break;case 10:n=hV;break;case 11:n=dV;break;default:var n=mV;}var a=n,u=1;}}else u=0;if(!u)a=0;return 0!==a&&ZZ(t),a}),a(h,function(t){var r=XZ(0,t),e=yr(d,t);if(79===MZ(0,t)){n0(t,79);var n=yr(v,AZ(0,t));n0(t,80);var a=l0(v,t),u=a[2];return[0,E$(r,a[1]),[7,[0,e,n,u]]]}return e}),a(d,function(t){for(var r=l0(m,t),e=c(t,r[2],r[1]),n=e[2],a=e[1];;){var u=MZ(0,t);if("number"!=typeof u||81!==u)return n;n0(t,81);var i=l0(m,t),s=c(t,i[2],i[1]),o=s[2],v=E$(a,s[1]),n=f(n,o,0,v),a=v;}}),a(m,function(t){M=0;t:for(;;){var r=XZ(0,t),e=0!==yr(y,t)?1:0,n=yr(w,AZ(0,t)),a=RZ(t),u=a?a[1]:n[1],i=E$(r,u);if(92===MZ(0,t)){var f=n[2];"number"==typeof f||12===f[0]&&WZ(t,47);}var c=MZ(0,t);if("number"==typeof c){var o=c+xb|0;if(1>>0)if(66<=o){switch(o+-66|0){case 0:var v=Fz,l=1;break;case 1:var v=Xz,l=1;break;case 2:var v=Bz,l=1;break;case 3:var v=jz,l=1;break;case 4:var v=Gz,l=1;break;case 5:var v=qz,l=1;break;case 6:var v=Yz,l=1;break;case 7:var v=Jz,l=1;break;case 8:var v=Hz,l=1;break;case 9:var v=Wz,l=1;break;case 10:var v=zz,l=1;break;case 11:var v=Vz,l=1;break;case 12:var v=Kz,l=1;break;case 13:var v=$z,l=1;break;case 14:var v=Qz,l=1;break;case 15:var v=Zz,l=1;break;case 16:var v=tV,l=1;break;case 17:var v=rV,l=1;break;case 18:var v=eV,l=1;break;case 19:var v=nV,l=1;break;default:var b=0,k=0,l=0;}if(l)var p=v,k=1;}else var b=0,k=0;else if(0===o)if(t[11])var p=0,k=1;else var p=uV,k=1;else var p=aV,k=1;if(k)var h=p,b=1;}else b=0;if(!b)h=0;if(0!==h&&ZZ(t),h){var d=h[1],m=d[1],g=d[2];(e?14===m?1:0:e)&&mZ(t,[0,i,16]);for(var T=n,_=[0,m,g],S=i,A=M;;){var E=_[2],x=_[1];if(A){var I=A[1],C=I[2],N=C[2],R=A[2],L=I[3],P=C[1],O=I[1],U=0===N[0]?N[1]:N[1]-1|0;if((E[0],E[1])<=U){var D=E$(L,S),T=s(O,T,P,D),_=[0,x,E],S=D,A=R;continue}}var M=[0,[0,T,[0,x,E],S],A];continue t}}for(var F=n,X=i,B=M;;){if(!B)return F;var j=B[1],G=B[2],q=j[2][1],Y=j[1],J=E$(j[3],X),F=s(Y,F,q,J),X=J,B=G;}}}),a(y,function(t){var r=MZ(0,t);if("number"==typeof r)if(48<=r){if(97<=r){if(!(105<=r))switch(r+al|0){case 0:return Nz;case 1:return Rz;case 6:return Lz;case 7:return Pz}}else if(64===r&&t[17])return Oz}else if(45<=r)switch(r+-45|0){case 0:return Uz;case 1:return Dz;default:return Mz}return 0}),a(w,function(t){var r=XZ(0,t),e=yr(y,t);if(e){var n=e[1];ZZ(t);var a=l0(w,t),u=a[2],i=E$(r,a[1]);if(6===n){var f=u[2];if("number"==typeof f)c=1;else if(10===f[0]){QZ(t,[0,i,33]);c=0;}else var c=1;if(c);}else;return[0,i,[23,[0,n,1,u]]]}var s=MZ(0,t);if("number"==typeof s)if(105===s)var o=Cz,v=1;else if(106===s)var o=Iz,v=1;else v=0;else v=0;if(!v)o=0;if(o){var l=o[1];ZZ(t);var k=l0(w,t),p=k[2],h=k[1];1-yr(b,p)&&mZ(t,[0,p[1],15]);var d=p[2];"number"==typeof d||10===d[0]&&DZ(d[1][2])&&$Z(t,39);return[0,E$(r,h),[24,[0,l,p,1]]]}return yr(g,t)}),a(g,function(t){var r=yr(T,t);if(jZ(t))return r;var e=MZ(0,t);if("number"==typeof e)if(105===e)var n=xz,a=1;else if(106===e)var n=Ez,a=1;else a=0;else a=0;if(!a)n=0;if(n){var u=n[1];1-yr(b,r)&&mZ(t,[0,r[1],15]);var i=r[2],f=("number"==typeof i||10===i[0]&&DZ(i[1][2])&&$Z(t,38),XZ(0,t));return ZZ(t),[0,E$(r[1],f),[24,[0,u,r,0]]]}return r}),a(T,function(t){var r=XZ(0,t),e=[0,t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],0,t[16],t[17],t[18],t[19],t[20],t[21],t[22],t[23],t[24],t[25]],n=1-t[15],a=MZ(0,e);if("number"==typeof a)if(44===a)if(n)var u=yr(A,e),i=1;else i=0;else if(50===a)var u=wr(_,e,r),i=1;else i=0;else i=0;if(!i)u=JZ(0,e)?yr(I,e):yr(N,e);return gr(S,e,r,gr(x,e,r,u))}),a(_,function(t,r){n0(t,50),n0(t,5);var e=yr(v,AZ(0,t));return n0(t,6),[0,E$(r,e[1]),[11,e]]}),a(S,function(r,e,n){var a=MZ(0,r);if("number"==typeof a)switch(a){case 5:if(!r[12]){var u=yr(E,r),i=u[2];return gr(S,r,e,[0,E$(e,u[1]),[4,[0,n,i]]])}break;case 7:n0(r,7);var f=yr(t[7],r),c=E$(e,XZ(0,r));return n0(r,8),gr(S,r,e,[0,c,[15,[0,n,[1,f],1]]]);case 11:n0(r,11);var s=yr(B,r)[1];return gr(S,r,e,[0,E$(e,s[1]),[15,[0,n,[0,s],0]]])}else if(2===a[0])return gr(S,r,e,Tr(P,r,e,n,a[1]));return n}),a(A,function(r){var e=XZ(0,r);if(n0(r,44),r[10]&&11===MZ(0,r)){n0(r,11);var n=[0,e,Sz];if(fr(FZ(0,r),Az)){var a=wr(t[13],0,r);return[0,E$(e,a[1]),[16,[0,n,a]]]}return VZ(r),ZZ(r),[0,e,[10,n]]}var u=XZ(0,r),i=MZ(0,r);if("number"==typeof i)if(44===i)var f=yr(A,r),c=1;else c=0;else c=0;if(!c)f=JZ(0,r)?yr(I,r):yr(N,r);var s=gr(x,IZ(1,r),u,f),o=MZ(0,r);if("number"==typeof o)l=0;else if(2===o[0])var v=Tr(P,r,u,s,o[1]),l=1;else l=0;if(!l)v=s;var b=MZ(0,r);if("number"==typeof b)if(5===b)var k=yr(E,r),p=k[1],h=k[2],d=1;else d=0;else d=0;if(!d)var p=v[1],h=0;return[0,E$(e,p),[17,[0,v,h]]]}),a(E,function(t){var r=XZ(0,t);n0(t,5);for(l=0;;){var e=MZ(0,t);if("number"==typeof e&&(6===e?1:rv===e?1:0)){var n=Dr(l),a=XZ(0,t);return n0(t,6),[0,E$(r,a),n]}var u=MZ(0,t);if("number"==typeof u)if(13===u){var i=XZ(0,t);n0(t,13);var f=yr(v,t),c=[1,[0,E$(i,f[1]),[0,f]]],s=1;}else s=0;else s=0;if(!s)c=[0,yr(v,t)];var o=[0,c,l];6!==MZ(0,t)&&n0(t,10);var l=o;}}),a(x,function(r,e,n){var a=MZ(0,r);if("number"==typeof a)switch(a){case 7:n0(r,7);var u=IZ(0,r),i=yr(t[7],u),f=XZ(0,r);return n0(r,8),gr(S,r,e,[0,E$(e,f),[15,[0,n,[1,i],1]]]);case 11:n0(r,11);var c=yr(B,r)[1];return gr(S,r,e,[0,E$(e,c[1]),[15,[0,n,[0,c],0]]])}else if(2===a[0])return gr(S,r,e,Tr(P,r,e,n,a[1]));return n}),a(I,function(n){var a=XZ(0,n),u=yr(e[1],n);n0(n,15);var i=yr(e[2],n);if(5===MZ(0,n))var f=0,c=0;else{var s=MZ(0,n);if("number"==typeof s)if(92===s)var o=0,v=1;else v=0;else v=0;if(!v)o=[0,wr(t[13],_z,n)];var f=o,c=yr(r[2],n);}var l=yr(e[4],n),b=yr(r[11],n),k=b[2],p=b[1],h=gr(e[5],n,u,i),d=h[2],m=h[3],y=h[1],w=yr(e[6],l);_r(e[7],n,m,w,f,l);var g=0===d[0]?0:1;return[0,E$(a,y),[8,[0,f,l,d,u,i,k,g,p,c]]]}),a(C,function(t,r){var e=FZ(0,t);if(0===r)f=0;else{switch(r-1|0){case 0:$Z(t,32);var n=1;try{var a=It(xt(Rr(yz,e)));}catch(t){if(n=0,(t=mr(t))[1]!==rm)throw t;var u=xr(Rr(wz,e)),i=1;}if(n)var u=a,i=1;break;case 1:var f=0,i=0;break;default:var c=1;try{var s=$Q(e);}catch(t){c=0;if((t=mr(t))[1]!==rm)throw t;var u=xr(Rr(gz,e)),i=1;}if(c)var u=s,i=1;}if(i)var o=u,f=1;}if(!f)try{o=It(xt(e));}catch(i){if((i=mr(i))[1]!==rm)throw i;o=xr(Rr(Tz,e));}return n0(t,[0,r]),o}),a(N,function(r){var e=XZ(0,r),n=MZ(0,r);if("number"==typeof n)switch(n){case 1:return yr(R,r);case 5:return yr(O,r);case 7:var a=yr(U,r);return[0,a[1],[0,a[2]]];case 21:return n0(r,21),[0,e,1];case 29:var u=FZ(0,r);return n0(r,29),[0,e,[13,[0,0,u]]];case 40:return yr(t[23],r);case 51:var i=XZ(0,r);return n0(r,51),[0,i,0];case 92:var f=yr(t[18],r);return[0,f[1],[12,f[2]]];case 30:case 31:var c=FZ(0,r);return n0(r,n),[0,e,[13,[0,[1,31===n?1:0],c]]];case 73:case 99:return yr(M,r)}else switch(n[0]){case 0:var s=n[1],o=FZ(0,r);return[0,e,[13,[0,[2,wr(C,r,s)],o]]];case 1:var v=n[1],l=v[4],b=v[3],k=v[2],p=v[1];return l&&$Z(r,32),n0(r,[1,[0,p,k,b,l]]),[0,p,[13,[0,[0,k],b]]];case 2:var h=wr(L,r,n[1]);return[0,h[1],[21,h[2]]]}if(YZ(0,r)){var d=wr(t[13],0,r);return[0,d[1],[10,d]]}return VZ(r),zv===n&&ZZ(r),[0,e,[13,[0,0,mz]]]}),a(R,function(r){var e=yr(t[11],r);return[0,e[1],[18,e[2]]]}),a(L,function(r,e){var n=e[3],a=e[2],u=e[1],i=a[2],f=a[1];n0(r,[2,e]);var c=[0,u,[0,[0,i,f],n]];if(n)var s=u,o=[0,c,0],v=0;else for(var l=[0,c,0],b=0;;){var k=yr(t[7],r),p=[0,k,b],h=MZ(0,r);if("number"==typeof h)if(2===h){t0(r,4);var d=MZ(0,r);if("number"==typeof d)I=1;else if(2===d[0]){var m=d[1],y=m[3],w=m[2],g=m[1],T=w[2],_=w[1];ZZ(r),r0(r);var S=[0,[0,g,[0,[0,T,_],y]],l];if(!y){var l=S,b=p;continue}var A=Dr(p),E=[0,g,Dr(S),A],x=1,I=0;}else I=1;if(I)throw[0,im,hz]}else x=0;else x=0;if(!x){VZ(r);var C=[0,k[1],dz],N=Dr(p),R=Dr([0,C,l]),E=[0,k[1],R,N];}var s=E[1],o=E[2],v=E[3];break}return[0,E$(u,s),[0,o,v]]}),a(P,function(t,r,e,n){var a=wr(L,t,n);return[0,E$(r,a[1]),[20,[0,e,a]]]}),a(O,function(t){n0(t,5);var e=yr(v,t),n=MZ(0,t);if("number"==typeof n)if(10===n)var a=wr(X,t,[0,e,0]),u=1;else if(80===n)var i=yr(r[8],t),a=[0,E$(e[1],i[1]),[22,[0,e,i]]],u=1;else u=0;else u=0;if(!u)a=e;return n0(t,6),a}),a(U,function(t){var r=XZ(0,t);n0(t,7);for(o=0;;){var e=MZ(0,t);if("number"==typeof e){if(14<=e)i=rv===e?1:0;else if(8<=e)switch(e-8|0){case 0:i=1;break;case 2:n0(t,10);o=[0,0,o];continue;case 5:var n=XZ(0,t);n0(t,13);var a=yr(v,t),u=[1,[0,E$(n,a[1]),[0,a]]];8!==MZ(0,t)&&n0(t,10);o=[0,[0,u],o];continue;default:i=0;}else var i=0;if(i){var f=Dr(o),c=XZ(0,t);return n0(t,8),[0,E$(r,c),[0,f]]}}var s=[0,yr(v,t)];8!==MZ(0,t)&&n0(t,10);var o=[0,[0,s],o];}}),a(M,function(t){t0(t,5);var r=XZ(0,t),e=MZ(0,t);if("number"!=typeof e&&3===e[0]){var n=e[1],a=n[3],u=n[2],i=FZ(0,t);ZZ(t),r0(t);var f=ue(wt(a));Kr(function(t){var r=t-103|0;if(!(18>>0))switch(r){case 0:case 2:case 6:case 14:case 18:return ce(f,t)}return 0},a);var c=ie(f);return sr(c,a)&&WZ(t,[3,a]),[0,r,[13,[0,[3,[0,u,c]],i]]]}throw[0,im,pz]}),a(F,function(n){var a=CZ(o,n),u=XZ(0,a),i=12!==MZ(bz,a)?1:0,f=i?yr(e[1],a):i,c=yr(r[2],a);if(YZ(0,a))if(0===c)var s=wr(t[13],kz,a),v=s[1],l=[0,[0,[0,v,[3,[0,[0,v,s[2]],0,0]]],0],0],b=0,k=0,p=1;else p=0;else p=0;if(!p)var h=yr(e[4],a),d=EZ(1,a),m=yr(r[11],d),l=h,b=m[1],k=m[2];var y=l[1];if(l[2])g=0;else if(y)var w=a,g=1;else g=0;if(!g)w=LZ(a);var T=jZ(w);(T?12===MZ(0,w)?1:0:T)&&WZ(w,45),n0(w,12);var _=LZ(w),S=e[8],A=l0(function(t){return gr(S,t,f,0)},_),E=A[2],x=E[1],I=E[2],C=A[1],N=yr(e[6],l);_r(e[7],_,I,N,0,l);var R=0===x[0]?0:1;return[0,E$(u,C),[1,[0,0,l,x,f,0,k,R,b,c]]]}),a(X,function(t,r){var e=MZ(0,t);if("number"==typeof e&&10===e)return n0(t,10),wr(X,t,[0,yr(v,t),r]);var n=Or(r)[1],a=Dr(r);return[0,E$(Or(a)[1],n),[19,[0,a]]]}),a(B,function(r){var e=MZ(0,r),n=FZ(0,r),a=XZ(0,r);if("number"==typeof e&&(60<=e?64<=e?0:1:0===e?1:0))return[0,wr(t[13],0,r),0];if("number"==typeof e){if(65<=e)if(ol===e)i=1;else if(113<=e)i=1;else var u=0,i=0;else if(60<=e)if(64<=e)i=1;else var u=0,i=0;else if(15<=e)i=1;else var u=0,i=0;if(i)var f=[0,[0,a,zZ([0,e,n])]],u=1;}else u=0;if(!u){VZ(r);f=0;}return ZZ(r),[0,[0,a,n],f]}),[0,U,v,h,B,k,T,C,X]}}}(h0),d0),m0),w0=yr(yr(yr(function(t){return function(r){return function(e){return function(n){function u(t){if(t[24][3])for(e=0;;){var r=MZ(0,t);if("number"!=typeof r||14!==r)return Dr(e);ZZ(t);var e=[0,yr(n[6],t),e];}return 0}function i(r){var e=MZ(0,r);if("number"==typeof e){if(7===e){var a=XZ(0,r);n0(r,7);var u=AZ(0,r),i=yr(t[9],u),f=XZ(0,r);return n0(r,8),[0,E$(a,f),[2,i]]}}else switch(e[0]){case 0:var c=e[1],s=FZ(0,r),o=XZ(0,r);return[0,o,[0,[0,o,[0,[2,wr(n[7],r,c)],s]]]];case 1:var v=e[1],l=v[4],b=v[3],k=v[2],p=v[1];return l&&$Z(r,32),n0(r,[1,[0,p,k,b,l]]),[0,p,[0,[0,p,[0,[0,k],b]]]]}var h=yr(n[4],r)[1];return[0,h[1],[1,h]]}function f(t,n){var a=yr(e[2],t),u=i(t),f=u[1],c=u[2],s=XZ(0,t),o=yr(e[4],t);if(0===n){var v=o[1];if(o[2]){mZ(t,[0,f,63]);}else{if(v)if(v[2])l=1;else l=0;else var l=1;if(l){mZ(t,[0,f,63]);}}}else(o[1]?0:o[2]?0:1)||mZ(t,[0,f,62]);var b=yr(r[9],t),k=gr(e[5],t,0,a),p=k[2],h=k[3],d=yr(e[6],o);_r(e[7],t,h,d,0,o);var m=0===p[0]?[0,p[1][1],0]:[0,p[1][1],1],y=m[2];return[0,c,[0,E$(s,m[1]),[0,0,o,p,0,a,0,y,b,0]]]}function c(t){var r=XZ(0,t);n0(t,1);var e=wr(h,t,0),n=XZ(0,t);return n0(t,2),[0,E$(r,n),[0,e]]}function s(t,r){return r?mZ(t,[0,r[1][1],5]):0}function o(n,a,u,i,f,c,o,v){for(;;){var l=MZ(0,n);if("number"==typeof l){var b=l-78|0;if(2>>0)k=ul===b?0:1;else{if(1===b){VZ(n),ZZ(n);continue}var k=0;}if(!k&&!f&&!c){var p=l0(function(e){var n=yr(r[9],e),a=e[24];if(78===MZ(0,e)){if(o&&a[2]?1:0)u=0;else{if(o)i=1;else if(a[1])var u=0,i=0;else i=1;if(i)var f=0,u=1;}if(!u){n0(e,78);f=[0,yr(t[7],e)];}}else f=0;return a0(e,9)||((7===MZ(0,e)?1:0)||(5===MZ(0,e)?1:0))&&VZ(e),[0,n,f]},n),h=p[2],d=h[2],m=h[1];return[1,[0,E$(a,p[1]),[0,i,d,m,o,v]]]}}s(n,v);var y=XZ(0,n),w=yr(r[2],n),g=yr(e[4],n),T=yr(r[9],n),_=gr(e[5],n,f,c),S=_[2],A=_[3],E=yr(e[6],g);_r(e[7],n,A,E,0,g);var x=0===S[0]?[0,S[1][1],0]:[0,S[1][1],1],I=x[1],C=x[2],N=[0,E$(y,I),[0,0,g,S,f,c,0,C,T,w]];if(0===o){switch(i[0]){case 0:var R=i[1][2][1];if("number"==typeof R)O=1;else if(0===R[0])if(sr(R[1],AV))var L=0,P=0,O=0;else var P=1,O=0;else O=1;if(O)var L=0,P=0;break;case 1:if(sr(i[1][2],EV))var L=0,P=0;else P=1;break;default:var L=0,P=0;}if(P)var U=0,L=1;}else L=0;if(!L)U=1;return[0,[0,E$(a,I),[0,U,i,N,o,u]]]}}function v(e,n){var a=gZ(1,e),i=XZ(0,a),f=Lr(n,u(a));n0(a,40);var c=_Z(1,a),s=a[7],o=YZ(0,c);if(0===s)l=0;else if(0===o)var v=0,l=1;else l=0;if(!l)v=[0,wr(t[13],0,c)];var b=yr(r[3],a),k=yr(d,a),p=k[1],h=k[4],m=k[3],y=k[2];return[0,E$(i,p[1]),[2,[0,v,p,y,b,m,h,f]]]}var l=function t(r){return t.fun(r)},b=function t(r,e){return t.fun(r,e)},k=function t(r,e){return t.fun(r,e)},p=function t(r,e,n,a,u){return t.fun(r,e,n,a,u)},h=function t(r,e){return t.fun(r,e)};a(l,function(r){var n=XZ(0,r);if(13===MZ(0,r)){n0(r,13);var a=yr(t[9],r);return[1,[0,E$(n,a[1]),[0,a]]]}var u=pm?pm[1]:0,f=YZ([0,u],r);if(f)var c=f,s=0;else{var o=MZ([0,u],r);if("number"==typeof o)v=1;else if(1>>0)if(ul<=S)var A=0,E=0;else switch(S+80|0){case 2:case 5:case 10:E=1;break;default:var A=0,E=0;}else if(10<(S-1|0)>>>0)E=1;else var A=0,E=0;if(E)var x=_r(p,r,n,y,0,0),A=1;}else A=0;if(!A)x=wr(k,r,n);var I=x,T=1;}else{var C=MZ(0,r);if("number"==typeof C){var N=C+Ha|0;if(12>>0)if(ul<=N)var R=0,L=0;else switch(N+80|0){case 2:case 5:case 10:L=1;break;default:var R=0,L=0;}else if(10<(N-1|0)>>>0)L=1;else var R=0,L=0;if(L)var P=_r(p,r,n,y,0,0),R=1;}else R=0;if(!R)P=wr(b,r,n);var I=P,T=1;}if(T)var O=I,g=1;}else g=0;}else g=0;else g=0;if(!g)O=_r(p,r,n,m[2],h,d);return[0,O]}),a(b,function(t,r){var e=f(t,1),n=e[2],a=n[1],u=[0,e[1],[1,[0,a,n[2]]],0,0];return[0,E$(r,a),u]}),a(k,function(t,r){var e=f(t,0),n=e[2],a=n[1],u=[0,e[1],[2,[0,a,n[2]]],0,0];return[0,E$(r,a),u]}),a(p,function(n,a,u,i,f){var c=l0(function(n){var a=MZ(0,n);if("number"==typeof a){if(92===a)v=1;else if(11<=a)v=0;else switch(a){case 5:v=1;break;case 2:case 10:switch(u[0]){case 0:var c=u[1],s=[0,c[1],[13,c[2]]];break;case 1:var o=u[1],s=[0,o[1],[10,o]];break;default:s=u[1];}return[0,s,1,0];default:var v=0;}if(v){var l=XZ(0,n),b=yr(r[2],n),k=yr(e[4],n),p=yr(r[9],n),h=gr(e[5],n,i,f),d=h[2],m=h[3],y=yr(e[6],k);_r(e[7],n,m,y,0,k);var w=0===d[0]?[0,d[1][1],0]:[0,d[1][1],1],g=w[2];return[0,[0,E$(l,w[1]),[8,[0,0,k,d,i,f,0,g,p,b]]],0,1]}}return n0(n,80),[0,yr(t[9],n),0,0]},n),s=c[2],o=[0,u,[0,s[1]],s[3],s[2]];return[0,E$(a,c[1]),o]}),a(h,function(t,r){var e=MZ(0,t);if("number"==typeof e&&(2===e?1:rv===e?1:0))return Dr(r);var n=yr(l,t);return 2!==MZ(0,t)&&n0(t,10),wr(h,t,[0,n,r])});var d=function t(r){return t.fun(r)},m=function t(r,e){return t.fun(r,e)},y=function t(r){return t.fun(r)},w=function t(r){return t.fun(r)};return a(d,function(t){if(41===MZ(0,t)){n0(t,41);var e=[0,yr(n[6],[0,t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15],0,t[17],t[18],t[19],t[20],t[21],t[22],t[23],t[24],t[25]])],a=yr(r[4],t);}else var e=0,a=0;if(52===MZ(0,t)){1-dZ(t)&&WZ(t,11),n0(t,52);u=wr(m,t,0);}else var u=0;return[0,yr(y,t),e,a,u]}),a(m,function(e,n){var a=wr(t[13],0,e),u=yr(r[4],e),i=[0,[0,u?E$(a[1],u[1][1]):a[1],[0,a,u]],n],f=MZ(0,e);return"number"==typeof f&&10===f?(n0(e,10),wr(m,e,i)):Dr(i)}),a(y,function(t){var r=XZ(0,t);n0(t,1);for(i=0;;){var e=MZ(0,t);if("number"==typeof e){var n=e-3|0;if(tv>>0){if(!(106<(n+1|0)>>>0)){var a=Dr(i),u=XZ(0,t);return n0(t,2),[0,E$(r,u),[0,a]]}}else if(6===n){n0(t,9);continue}}var i=[0,yr(w,t),i];}}),a(w,function(t){var r=XZ(0,t),n=u(t),a=5!==MZ(xV,t)?1:0;if(a)var c=92!==MZ(IV,t)?1:0,v=c?a0(t,42):c;else v=a;var l=5!==MZ(CV,t)?1:0;if(l)var b=80!==MZ(NV,t)?1:0,k=b?yr(e[1],t):b;else k=l;var p=yr(e[2],t),h=gr(e[3],t,k,p);if(0===p)if(h)var d=yr(e[2],t),m=1;else m=0;else m=0;if(!m)d=p;var y=i(t);if(0===k&&0===d){var w=y[2];if(1===w[0]){var g=w[1][2];if(!sr(g,RV)){var T=MZ(0,t);if("number"==typeof T&&(78<=T?81<=T?92===T?1:0:79===T?0:1:5===T?1:9===T?1:0))return o(t,r,n,w,k,d,v,h);s(t,h);var _=f(t,1),S=_[2],A=[0,2,_[1],S,v,n];return[0,[0,E$(r,S[1]),A]]}if(!sr(g,LV)){var E=MZ(0,t);if("number"==typeof E&&(78<=E?81<=E?92===E?1:0:79===E?0:1:5===E?1:9===E?1:0))return o(t,r,n,w,k,d,v,h);s(t,h);var x=f(t,0),I=x[2],C=[0,3,x[1],I,v,n];return[0,[0,E$(r,I[1]),C]]}}}return o(t,r,n,y[2],k,d,v,h)}),[0,i,c,v,function(e){var n=XZ(0,e),a=u(e);n0(e,40);var i=MZ(0,e);if("number"==typeof i){var f=i-1|0;if(40>>0)if(91===f)s=1;else var c=0,s=0;else if(38<(f-1|0)>>>0)s=1;else var c=0,s=0;if(s)var o=0,v=0,c=1;}else c=0;if(!c)var l=[0,wr(t[13],0,e)],o=l,v=yr(r[3],e);var b=yr(d,e),k=b[1],p=b[4],h=b[3],m=b[2];return[0,E$(n,k[1]),[5,[0,o,k,m,v,h,p,a]]]},u]}}}}(h0),d0),m0),y0),g0=yr(yr(yr(function(t){return function(r){return function(e){return function(n){function u(t,r){for(n=r;;){var e=n[2];switch(e[0]){case 0:return Xr(function(t,r){return u(t,0===r[0]?r[1][2][2]:r[1][2][1])},t,e[1][1]);case 1:return Xr(function(t,r){if(r){var e=r[1];return u(t,0===e[0]?e[1]:e[1][2][1])}return t},t,e[1][1]);case 2:var n=e[1][1];continue;case 3:return[0,e[1][1],t];default:return xr(AK)}}}function i(r,e,n){if(n){var a=n[1];if(0===a[0]){var u=a[1],i=u[2][1],f=u[1];return!i||i[1][2][2]||i[2]?mZ(r,[0,f,e]):0}var c=a[1],s=c[1],o=1-yr(t[24],[0,s,c[2]]);return o?mZ(r,[0,s,e]):o}return WZ(r,e)}function f(t,e){for(u=e;;){var n=[0,yr(r[5],t),u],a=MZ(0,t);if("number"!=typeof a||10!==a)return Dr(n);n0(t,10);var u=n;}}function c(t){u0(t,YV);var r=MZ(0,t);if("number"!=typeof r&&1===r[0]){var e=r[1],n=e[4],a=e[3],u=e[2],i=e[1];return n&&$Z(t,32),n0(t,[1,[0,i,u,a,n]]),[0,i,[0,[0,u],a]]}var f=FZ(0,t),c=[0,XZ(0,t),[0,[0,f],f]];return VZ(t),c}function s(r,e){var n=XZ(0,r),a=MZ(0,r);if("number"==typeof a&&Tb===a){n0(r,Tb),u0(r,qV);var u=wr(t[13],0,r);return[0,[2,[0,E$(n,u[1]),u]],0]}n0(r,1);for(var i=0,f=0;;){var c=i?i[1]:1,s=MZ(0,r);if("number"==typeof s&&(2===s?1:rv===s?1:0)){var o=Dr(f);return n0(r,2),o}1-c&&mZ(r,[0,XZ(0,r),66]);var v=yr(t[14],r),l=v[2],b=v[1],k=b[2];if(fr(k,UV))var p=1,h=DV;else if(fr(k,MV))var p=1,h=FV;else var p=0,h=0;if(fr(FZ(0,r),XV)){var d=wr(t[13],0,r);if(p)if(YZ(0,r))y=0;else{e&&mZ(r,[0,b[1],65]);var m=[0,[0,h,0,d]],y=1;}else y=0;if(!y)m=[0,[0,0,[0,wr(t[13],0,r)],b]];_=m;}else{if(p)if(YZ(0,r)){e&&mZ(r,[0,b[1],65]);var w=yr(t[14],r),g=w[2],T=w[1];g&&mZ(r,g[1]);var _=[0,[0,h,fr(FZ(0,r),BV)?(u0(r,jV),[0,wr(t[13],0,r)]):0,T]],S=1;}else S=0;else S=0;if(!S){l&&mZ(r,l[1]);_=[0,[0,0,0,b]];}}var i=[0,a0(r,10)],f=[0,_,f];}}var o=function t(r){return t.fun(r)},v=function t(r){return t.fun(r)},l=function t(r){return t.fun(r)},b=function t(r){return t.fun(r)},k=function t(r){return t.fun(r)},p=function t(r){return t.fun(r)},h=function t(r){return t.fun(r)},d=function t(r){return t.fun(r)},m=function t(r){return t.fun(r)},y=function t(r){return t.fun(r)},w=function t(r){return t.fun(r)},g=function t(r){return t.fun(r)},T=function t(r){return t.fun(r)},_=function t(r){return t.fun(r)},S=function t(r){return t.fun(r)},A=function t(r){return t.fun(r)},E=function t(r){return t.fun(r)},x=function t(r){return t.fun(r)},I=function t(r){return t.fun(r)},C=function t(r){return t.fun(r)},N=function t(r){return t.fun(r)},R=function t(r){return t.fun(r)},L=function t(r,e){return t.fun(r,e)},P=function t(r,e){return t.fun(r,e)},O=function t(r,e){return t.fun(r,e)},U=function t(r,e){return t.fun(r,e)},D=function t(r,e){return t.fun(r,e)},M=function t(r,e){return t.fun(r,e)},F=function t(r,e){return t.fun(r,e)},X=function t(r,e){return t.fun(r,e)},B=function t(r,e){return t.fun(r,e)},j=function t(r){return t.fun(r)},G=function t(r){return t.fun(r)},q=function t(r,e,n){return t.fun(r,e,n)},Y=function t(r,e){return t.fun(r,e)},J=function t(r,e){return t.fun(r,e)},H=function t(r){return t.fun(r)};return a(o,function(t){var r=XZ(0,t);return n0(t,9),[0,r,1]}),a(v,function(r){var e=XZ(0,r);if(n0(r,32),9===MZ(0,r))i=0;else if(GZ(r))i=0;else{var n=wr(t[13],0,r),a=n[2];1-wr(k0[3],a,r[3])&&WZ(r,[4,a]);var u=[0,n],i=1;}if(!i)u=0;var f=qZ(0,r),c=f?f[1]:u?u[1][1]:e,s=E$(e,c),o=0===u?1:0;if(o)var v=r[8],l=v||r[9],b=1-l;else b=o;return b&&mZ(r,[0,s,23]),e0(r),[0,s,[1,[0,u]]]}),a(l,function(r){var e=XZ(0,r);if(n0(r,35),9===MZ(0,r))i=0;else if(GZ(r))i=0;else{var n=wr(t[13],0,r),a=n[2];1-wr(k0[3],a,r[3])&&WZ(r,[4,a]);var u=[0,n],i=1;}if(!i)u=0;var f=qZ(0,r),c=f?f[1]:u?u[1][1]:e,s=E$(e,c);return 1-r[8]&&mZ(r,[0,s,22]),e0(r),[0,s,[3,[0,u]]]}),a(b,function(t){var r=XZ(0,t);n0(t,59);var e=qZ(0,t),n=e?e[1]:r;return e0(t),[0,E$(r,n),0]}),a(k,function(r){var e=XZ(0,r);n0(r,37);var n=SZ(1,r),a=yr(t[2],n);n0(r,25),n0(r,5);var u=yr(t[7],r),i=XZ(0,r);n0(r,6);var f=qZ(0,r),c=f?f[1]:i;return 9===MZ(0,r)&&e0(r),[0,E$(e,c),[10,[0,a,u]]]}),a(p,function(r){var n=XZ(0,r);n0(r,39);var a=r[17],u=a?a0(r,64):a;n0(r,5);var f=MZ(0,r);if("number"==typeof f)if(24<=f)if(29<=f)h=0;else{switch(f+-24|0){case 0:var c=AZ(1,r),s=yr(e[13],c),o=[0,[0,[0,s[1]]],s[2]],v=1;break;case 3:var l=AZ(1,r),b=yr(e[12],l),o=[0,[0,[0,b[1]]],b[2]],v=1;break;case 4:var k=AZ(1,r),p=yr(e[11],k),o=[0,[0,[0,p[1]]],p[2]],v=1;break;default:var h=0,v=0;}if(v)var d=o[1],m=o[2],h=1;}else if(9===f)var d=0,m=0,h=1;else h=0;else h=0;if(!h)var y=_Z(1,AZ(1,r)),d=[0,[1,yr(t[7],y)]],m=0;var w=MZ(0,r);if(62!==w&&!u){if("number"==typeof w&&17===w){if(i(r,17,d),d){var g=d[1],T=0===g[0]?[0,g[1]]:[1,g[1]];n0(r,17);var _=yr(t[7],r);n0(r,6);var S=SZ(1,r),A=yr(t[2],S);return[0,E$(n,A[1]),[15,[0,T,_,A,0]]]}throw[0,im,SK]}Fr(function(t){return mZ(r,t)},m),n0(r,9);var E=MZ(0,r);if("number"==typeof E)if(9===E)var x=0,I=1;else I=0;else I=0;if(!I)x=[0,yr(t[7],r)];n0(r,9);var C=MZ(0,r);if("number"==typeof C)if(6===C)var N=0,R=1;else R=0;else R=0;if(!R)N=[0,yr(t[7],r)];n0(r,6);var L=SZ(1,r),P=yr(t[2],L);return[0,E$(n,P[1]),[14,[0,d,x,N,P]]]}if(i(r,18,d),d){var O=d[1],U=0===O[0]?[0,O[1]]:[1,O[1]];n0(r,62);var D=yr(t[9],r);n0(r,6);var M=SZ(1,r),F=yr(t[2],M);return[0,E$(n,F[1]),[16,[0,U,D,F,u]]]}throw[0,im,_K]}),a(h,function(r){var n=XZ(0,r);n0(r,16),n0(r,5);var a=yr(t[7],r);n0(r,6),MZ(0,r);var u=JZ(0,r)?($Z(r,46),yr(e[14],r)):yr(t[2],r),i=43===MZ(0,r)?(n0(r,43),[0,yr(t[2],r)]):0,f=i?i[1][1]:u[1];return[0,E$(n,f),[18,[0,a,u,i]]]}),a(d,function(r){1-r[10]&&WZ(r,24);var e=XZ(0,r);if(n0(r,19),9===MZ(0,r))a=0;else if(GZ(r))a=0;else var n=[0,yr(t[7],r)],a=1;if(!a)n=0;var u=qZ(0,r),i=u?u[1]:n?n[1][1]:e;return e0(r),[0,E$(e,i),[22,[0,n]]]}),a(m,function(r){var e=XZ(0,r);n0(r,20),n0(r,5);var n=yr(t[7],r);n0(r,6),n0(r,1);for(y=TK;;){var a=y[2],u=y[1],i=MZ(0,r);if("number"==typeof i&&(2===i?1:rv===i?1:0)){var f=Dr(a),c=XZ(0,r);return n0(r,2),[0,E$(e,c),[23,[0,n,f]]]}var s=XZ(0,r),o=MZ(0,r);if("number"==typeof o)if(36===o){u&&WZ(r,20),n0(r,36);var v=0,l=1;}else l=0;else l=0;if(!l){n0(r,33);v=[0,yr(t[7],r)];}var b=u||(0===v?1:0),k=XZ(0,r);n0(r,80);var p=function(t){if("number"==typeof t){var r=t-2|0;if(31>>0?34===r?1:0:29<(r-1|0)>>>0?1:0)return 1}return 0},h=wr(t[4],p,[0,r[1],r[2],r[3],r[4],r[5],r[6],r[7],r[8],1,r[10],r[11],r[12],r[13],r[14],r[15],r[16],r[17],r[18],r[19],r[20],r[21],r[22],r[23],r[24],r[25]]),d=Dr(h),m=d?d[1][1]:k,y=[0,b,[0,[0,E$(s,m),[0,v,h]],a]];}}),a(y,function(r){var e=XZ(0,r);n0(r,22),jZ(r)&&mZ(r,[0,e,12]);var n=yr(t[7],r),a=qZ(0,r),u=a?a[1]:n[1];return e0(r),[0,E$(e,u),[24,[0,n]]]}),a(w,function(r){var e=XZ(0,r);n0(r,23);var n=yr(t[16],r),a=MZ(0,r);if("number"==typeof a)if(34===a){var u=XZ(0,r);n0(r,34),n0(r,5);var i=wr(t[13],gK,r),f=[0,i[1],[3,[0,i,0,0]]];n0(r,6);var c=yr(t[16],r),s=[0,[0,E$(u,c[1]),[0,f,c]]],o=1;}else o=0;else o=0;if(!o)s=0;var v=MZ(0,r);if("number"==typeof v)if(38===v){n0(r,38);var l=[0,yr(t[16],r)],b=1;}else b=0;else b=0;if(!b)l=0;var k=l?l[1][1]:s?s[1][1]:(mZ(r,[0,n[1],21]),n[1]);return[0,E$(e,k),[25,[0,n,s,l]]]}),a(g,function(t){var r=yr(e[9],t),n=r[1],a=n[1],u=r[2],i=n[2],f=qZ(0,t),c=f?f[1]:a;return e0(t),Fr(function(r){return mZ(t,r)},u),[0,E$(a,c),i]}),a(T,function(t){var r=XZ(0,t);n0(t,28);var n=_Z(1,t),a=yr(e[10],n),u=a[3],i=a[1],f=[27,[0,a[2],1]],c=qZ(0,t),s=c?c[1]:i;return e0(t),Fr(function(r){return mZ(t,r)},u),[0,E$(r,s),f]}),a(_,function(r){var e=XZ(0,r);n0(r,25),n0(r,5);var n=yr(t[7],r);n0(r,6);var a=SZ(1,r),u=yr(t[2],a);return[0,E$(e,u[1]),[28,[0,n,u]]]}),a(S,function(r){var e=XZ(0,r);n0(r,26),n0(r,5);var n=yr(t[7],r);n0(r,6);var a=yr(t[2],r),u=E$(e,a[1]);return QZ(r,[0,u,26]),[0,u,[29,[0,n,a]]]}),a(A,function(r){var e=yr(t[16],r);return[0,e[1],[0,e[2]]]}),a(E,function(r){var e=yr(t[7],r),n=MZ(0,r),a=e[2],u=e[1];if("number"!=typeof a&&10===a[0]&&"number"==typeof n&&80===n){var i=a[1],f=i[2];n0(r,80),wr(k0[3],f,r[3])&&mZ(r,[0,u,[5,wK,f]]);var c=r[25],s=r[24],o=r[23],v=r[22],l=r[21],b=r[20],k=r[19],p=r[18],h=r[17],d=r[16],m=r[15],y=r[14],w=r[13],g=r[12],T=r[11],_=r[10],S=r[9],A=r[8],E=r[7],x=r[6],I=r[5],C=r[4],N=wr(lZ[4],f,r[3]),R=yr(t[2],[0,r[1],r[2],N,C,I,x,E,A,S,_,T,g,w,y,m,d,h,p,k,b,l,v,o,s,c]);return[0,E$(u,R[1]),[21,[0,i,R]]]}var L=qZ(0,r),P=L?L[1]:e[1];return e0(r),[0,E$(e[1],P),[13,[0,e,0]]]}),a(x,function(r){var e=l0(t[7],r),n=e[2],a=e[1],u=qZ(0,r),i=u?E$(a,u[1]):a;if(e0(r),r[18]){var f=n[2];if("number"==typeof f)l=0;else if(13===f[0]){var c=f[1],s=c[1];if("number"==typeof s)b=1;else if(0===s[0])var o=c[2],v=[0,Vr(o,1,wt(o)-2|0)],l=1,b=0;else b=1;if(b)l=0;}else l=0;if(!l)v=0;k=v;}else var k=0;return[0,i,[13,[0,n,k]]]}),a(I,function(e){var n=XZ(0,e);1-dZ(e)&&WZ(e,6),n0(e,61),t0(e,1);var a=wr(t[13],0,e),u=yr(r[3],e);n0(e,78);var i=yr(r[1],e),f=qZ(0,e),c=f?f[1]:i[1];return e0(e),r0(e),[0,E$(n,c),[0,a,u,i]]}),a(C,function(r){if(YZ(yK,r)){var e=yr(I,r);return[0,e[1],[26,e[2]]]}return yr(t[2],r)}),a(N,function(e){var n=XZ(0,e);1-dZ(e)&&WZ(e,11),n0(e,53);var a=wr(t[13],0,e),u=yr(r[3],e);if(41===MZ(0,e)){n0(e,41);for(c=0;;){var i=[0,yr(r[5],e),c],f=MZ(0,e);if("number"!=typeof f||10!==f){s=Dr(i);break}n0(e,10);var c=i;}}else var s=0;var o=wr(r[6],1,e);return[0,E$(n,o[1]),[0,a,u,o,s,0]]}),a(R,function(t){if(YZ(mK,t)){var r=yr(N,t);return[0,r[1],[20,r[2]]]}return yr(x,t)}),a(L,function(e,n){var a=gZ(1,e);n0(a,40);var u=wr(t[13],0,a),i=yr(r[3],a),c=41===MZ(0,a)?(n0(a,41),f(a,0)):0,s=fr(FZ(0,a),hK)?(u0(a,dK),f(a,0)):0,o=wr(r[6],1,a);return[0,E$(n,o[1]),[0,u,i,o,c,s]]}),a(P,function(t,r){var e=wr(L,t,r);return[0,e[1],[4,e[2]]]}),a(O,function(e,n){n0(e,15);var a=wr(t[13],0,e),u=XZ(0,e),i=yr(r[2],e),f=yr(r[7],e);n0(e,80);var c=yr(r[1],e),s=c[1],o=[0,E$(u,s),[1,[0,f,c,i]]],v=[0,o[1],o],l=a[2],b=[0,E$(a[1],s),l],k=yr(r[10],e),p=qZ(0,e),h=p?p[1]:k?k[1][1]:s;return e0(e),[0,E$(n,h),[0,b,v,k]]}),a(U,function(t,r){var e=wr(O,t,r);return[0,e[1],[6,e[2]]]}),a(D,function(r,e){n0(r,24);var n=gr(t[15],r,pK,28),a=n[2],u=a[2],i=a[1],f=n[1],c=qZ(0,r),s=c?c[1]:f,o=E$(e,s);return e0(r),[0,o,[0,i,u]]}),a(M,function(t,r){var e=wr(D,t,r);return[0,e[1],[9,e[2]]]}),a(F,function(r,e){var n=MZ(0,r);if("number"==typeof n)o=0;else if(1===n[0]){var a=n[1],u=a[4],i=a[3],f=a[2],c=a[1];u&&$Z(r,32),n0(r,[1,[0,c,f,i,u]]);var s=[1,[0,c,[0,[0,f],i]]],o=1;}else o=0;if(!o)s=[0,wr(t[13],0,r)];var v=l0(function(t){n0(t,1);for(var r=0,e=0;;){var n=MZ(0,t);if("number"==typeof n&&(2===n?1:rv===n?1:0)){var a=[0,r,Dr(e)];return n0(t,2),a}var u=wr(B,kK,t),i=u[2],f=u[1];if(r){if(0===r[1][0]){if("number"==typeof i)o=1;else switch(i[0]){case 5:var c=i[1][2];(c&&3>>0)X=0;else switch(x){case 22:n0(i,36),yZ(i,[0,E$(f,XZ(0,i)),nK]);var I=MZ(0,i);if("number"==typeof I)if(15===I)var N=yr(e[14],i),L=N[1],P=[0,N],O=1;else O=0;else O=0;if(!O)if(HZ(0,i))var U=wr(n[3],i,a),L=U[1],P=[0,U];else{var D=yr(t[9],i),M=qZ(0,i),F=M?M[1]:D[1];e0(i);var L=F,P=[1,D];}return[0,E$(f,L),[11,[0,P,1]]];case 0:case 1:case 10:case 13:case 14:case 26:X=1;break;default:var X=0;}}if(X){var B=wr(t[3],[0,a],i),Y=B[2],J=B[1];if("number"==typeof Y)z=0;else switch(Y[0]){case 2:var H=Y[1][1];if(H)var W=H[1],z=2;else{mZ(i,[0,J,55]);var V=0,z=1;}break;case 17:var K=Y[1][1];if(K)var W=K[1],z=2;else{mZ(i,[0,J,56]);var V=0,z=1;}break;case 27:var V=Xr(function(t,r){return Xr(u,t,[0,r[2][1],0])},0,Y[1][1]),z=1;break;default:z=0;}switch(z){case 0:var V=xr(uK),$=0;break;case 1:$=0;break;default:var Q=[0,[0,J,yr(G,W)],0],$=1;}if(!$)Q=V;return Fr(function(t){return yZ(i,t)},Q),[0,E$(f,B[1]),[12,[0,[0,B],0,0,1]]]}}var Z=MZ(0,i);if("number"==typeof Z)if(61===Z){ZZ(i);var tt=0,rt=1;}else rt=0;else rt=0;if(!rt)tt=1;n0(i,1);var et=gr(q,i,0,0),nt=et[2],at=[0,[0,et[1]]],ut=XZ(0,i);n0(i,2);var it=fr(FZ(0,i),aK)?[0,yr(j,i)]:(Fr(function(t){return mZ(i,t)},nt),0),ft=qZ(0,i),ct=ft?ft[1]:it?it[1][1]:ut;return e0(i),[0,E$(f,ct),[12,[0,0,at,it,tt]]]}),a(J,function(e,n){var a=e?e[1]:0;1-dZ(n)&&WZ(n,8);var u=XZ(0,n);n0(n,60);var i=xZ(1,gZ(1,n));n0(i,49);var f=MZ(0,i);if("number"==typeof f)if(54<=f){if(61===f){if(a){var c=yr(I,i),s=c[1],o=c[2];return[0,E$(u,s),[5,[0,0,[0,[4,[0,s,o]]],0,0]]]}}else if(Tb===f){var v=XZ(0,i);n0(i,Tb);var l=i[24][4],b=fr(FZ(0,i),JV)?(u0(i,HV),l?[0,wr(t[13],0,i)]:(WZ(i,8),0)):0,k=yr(j,i),p=qZ(0,i),h=[0,[1,v,b]],d=p?p[1]:k[1];return e0(i),[0,E$(u,d),[5,[0,0,0,h,[0,k]]]]}}else if(41<=f){if(53<=f&&a){var m=yr(N,i),y=m[1],w=m[2];return[0,E$(u,y),[5,[0,0,[0,[5,[0,y,w]]],0,0]]]}}else if(15<=f)switch(f-15|0){case 21:n0(i,36);var g=MZ(0,i);if("number"==typeof g)if(15===g)var T=wr(O,i,u),_=T[1],S=[0,[1,T]],A=1;else if(40===g)var E=wr(L,i,u),_=E[1],S=[0,[2,E]],A=1;else A=0;else A=0;if(!A){var x=yr(r[1],i),C=qZ(0,i),R=C?C[1]:x[1];e0(i);var _=R,S=[0,[3,x]];}return[0,E$(u,_),[5,[0,1,S,0,0]]];case 0:case 9:case 12:case 13:case 25:var P=MZ(0,i);if("number"==typeof P){if(25<=P)if(29<=P)if(40===P)var U=wr(L,i,u),M=U[1],F=[0,[2,U]],X=2;else X=0;else X=27<=P?1:0;else if(15===P)var B=wr(O,i,u),M=B[1],F=[0,[1,B]],X=2;else X=24<=P?1:0;switch(X){case 0:Y=0;break;case 1:"number"==typeof P&&(27===P?WZ(i,51):28===P&&WZ(i,50));var G=wr(D,i,u),M=G[1],F=[0,[0,G]],Y=1;break;default:Y=1;}if(Y)return[0,E$(u,M),[5,[0,0,F,0,0]]]}throw[0,im,zV]}var J=MZ(0,i);"number"==typeof J&&(53===J?WZ(i,53):61===J&&WZ(i,52));n0(i,1);var H=gr(q,i,0,0),W=H[2],z=[0,[0,H[1]]],V=XZ(0,i);n0(i,2);var K=fr(FZ(0,i),WV)?[0,yr(j,i)]:(Fr(function(t){return mZ(i,t)},W),0),$=qZ(0,i),Q=$?$[1]:K?K[1][1]:V;return e0(i),[0,E$(u,Q),[5,[0,0,0,z,K]]]}),a(H,function(r){var e=gZ(1,r),n=XZ(0,e);n0(e,50);var a=MZ(0,e);if("number"==typeof a)if(46===a){1-dZ(e)&&WZ(e,9),n0(e,46);var u=1,i=0,f=1;}else if(61===a){1-dZ(e)&&WZ(e,9);var u=0,i=[0,wr(t[13],0,e)],f=1;}else f=0;else f=0;if(!f)var u=2,i=0;var o=2!==u?1:0,v=MZ(0,e),l=YZ(0,e);if("number"==typeof v)g=10===v?1:0;else if(1===v[0]){var b=v[1],k=b[4],p=b[3],h=b[2],d=b[1];if(2===u){k&&$Z(e,32),n0(e,[1,[0,d,h,p,k]]);var m=qZ(0,e),y=[0,d,[0,[0,h],p]],w=m?m[1]:d;return e0(e),[0,E$(n,w),[19,[0,u,y,0]]]}g=0;}else var g=0;if(!g&&0===l){var T=s(e,o),_=c(e),S=qZ(0,e),A=S?S[1]:_[1];return e0(e),[0,E$(n,A),[19,[0,u,_,T]]]}var E=MZ(0,e),x=FZ(0,e);if(i)if("number"==typeof E){var I=i[1];if(10===E)N=1;else if(0===E)if(sr(x,GV))var C=0,N=0;else N=1;else var C=0,N=0;if(N)var R=2,L=[1,I],C=1;}else C=0;else C=0;if(!C)var R=u,L=[1,wr(t[13],0,e)];var P=MZ(0,e);if("number"==typeof P)if(10===P){n0(e,10);var O=s(e,o),U=1;}else U=0;else U=0;if(!U)O=0;var D=c(e),M=qZ(0,e),F=M?M[1]:D[1];return e0(e),[0,E$(n,F),[19,[0,R,D,[0,L,O]]]]}),[0,p,h,T,w,_,S,A,v,l,b,B,J,k,o,Y,x,H,R,E,d,m,y,C,g]}}}}(h0),d0),m0),w0),T0=yr(function(t){return function(r){function e(r,e){return[0,e[1],[0,[0,Mr(function(e){if(0===e[0]){var n=e[1],a=n[2],u=a[2],i=a[1],f=a[4],c=n[1];switch(i[0]){case 0:s=[0,i[1]];break;case 1:s=[1,i[1]];break;default:var s=[2,i[1]];}if(0===u[0])b=wr(t[20],r,u[1]);else{var o=u[1],v=o[1],l=o[2];mZ(r,[0,v,2]);var b=[0,v,[4,[0,v,[8,l]]]];}return[0,[0,c,[0,s,b,f]]]}var k=e[1];return[1,[0,k[1],[0,wr(t[20],r,k[2][1])]]]},e[2][1]),0]]]}function n(r,e){return[0,e[1],[1,[0,Mr(function(e){if(e){var n=e[1];if(0===n[0]){var a=n[1];return[0,[0,wr(t[20],r,[0,a[1],a[2]])]]}var u=n[1];return[0,[1,[0,u[1],[0,wr(t[20],r,u[2][1])]]]]}return 0},e[2][1]),0]]]}function a(t,r){var a=r[2],u=r[1];if("number"!=typeof a)switch(a[0]){case 0:return n(t,[0,u,a[1]]);case 2:var i=a[1];if(0===i[1])return[0,u,[2,[0,i[2],i[3]]]];break;case 10:return[0,u,[3,[0,a[1],0,0]]];case 18:return e(t,[0,u,a[1]])}return[0,u,[4,[0,u,a]]]}function u(e){return function(n){var a=XZ(0,n);n0(n,1);for(C=0;;){var u=MZ(0,n);if("number"==typeof u&&(2===u?1:rv===u?1:0)){var i=Dr(C),c=XZ(0,n);if(n0(n,2),80===MZ(0,n))var s=yr(r[8],n),o=s[1],v=[0,s];else var o=c,v=0;return[0,E$(a,o),[0,[0,i,v]]]}var l=XZ(0,n);if(a0(n,13))var b=f(n,e),k=[0,[1,[0,E$(l,b[1]),[0,b]]]];else{var p=yr(t[21],n)[2];switch(p[0]){case 0:h=[0,p[1]];break;case 1:h=[1,p[1]];break;default:var h=[2,p[1]];}var d=MZ(0,n);if("number"==typeof d)if(80===d){n0(n,80);var m=[0,[0,f(n,e),0]],y=1;}else y=0;else y=0;if(!y)if(1===h[0])var w=h[1],m=[0,[0,[0,w[1],[3,[0,w,0,0]]],1]];else{VZ(n);m=0;}if(m){var g=m[1],T=g[1],_=g[2],S=MZ(0,n);if("number"==typeof S)if(78===S){n0(n,78);var A=yr(t[9],n),E=[0,E$(T[1],A[1]),[2,[0,T,A]]],x=1;}else x=0;else x=0;if(!x)E=T;k=[0,[0,[0,E$(l,E[1]),[0,h,E,_]]]];}else k=0;}if(k){var I=k[1];2!==MZ(0,n)&&n0(n,10);var C=[0,I,C];}else;}}}function i(e){return function(n){var a=XZ(0,n);n0(n,7);for(s=0;;){var u=MZ(0,n);if("number"==typeof u){if(14<=u)o=rv===u?1:0;else if(8<=u)switch(u-8|0){case 0:o=1;break;case 2:n0(n,10);s=[0,0,s];continue;case 5:var i=XZ(0,n);n0(n,13);var c=f(n,e),s=[0,[0,[1,[0,E$(i,c[1]),[0,c]]]],s];continue;default:o=0;}else var o=0;if(o){var v=Dr(s),l=XZ(0,n);if(n0(n,8),80===MZ(0,n))var b=yr(r[8],n),k=b[1],p=[0,b];else var k=l,p=0;return[0,E$(a,k),[1,[0,v,p]]]}}var h=f(n,e),d=MZ(0,n);if("number"==typeof d)if(78===d){n0(n,78);var m=yr(t[9],n),y=[0,E$(h[1],m[1]),[2,[0,h,m]]],w=1;}else w=0;else w=0;if(!w)y=h;var g=[0,y];8!==MZ(0,n)&&n0(n,10);s=[0,[0,g],s];}}}function f(r,e){var n=MZ(0,r);if("number"==typeof n){if(1===n)return yr(u(e),r);if(7===n)return yr(i(e),r)}var a=gr(t[15],r,0,e);return[0,a[1],[3,a[2]]]}return[0,e,n,a,u,i,f]}}(h0),d0),_0=function t(r){return t.fun(r)},S0=function t(r,e,n){return t.fun(r,e,n)},A0=function t(r){return t.fun(r)},E0=function t(r,e){return t.fun(r,e)},x0=function t(r,e){return t.fun(r,e)},I0=function t(r,e){return t.fun(r,e)},C0=function t(r,e){return t.fun(r,e)},N0=function t(r,e){return t.fun(r,e)},R0=function t(r){return t.fun(r)},L0=function t(r){return t.fun(r)},P0=function t(r,e){return t.fun(r,e)},O0=function t(r,e,n){return t.fun(r,e,n)},U0=function t(r){return t.fun(r)},D0=function t(r){return t.fun(r)},M0=function(t){function r(r){t0(r,0);var e=XZ(0,r);n0(r,1),n0(r,13);var n=yr(t[9],r),a=XZ(0,r);return n0(r,2),r0(r),[0,E$(e,a),[0,n]]}function e(r){t0(r,0);var e=XZ(0,r);if(n0(r,1),2===MZ(0,r))var n=XZ(0,r)[2],a=[1,[0,e[1],e[3],n]];else a=[0,yr(t[7],r)];var u=XZ(0,r);return n0(r,2),r0(r),[0,E$(e,u),[0,a]]}function n(t){var r=XZ(0,t),e=FZ(0,t);return n0(t,$a),[0,r,[0,e]]}function u(t){var r=n(t),e=MZ(0,t);if("number"==typeof e){if(11===e){n0(t,11);for(var a=n(t),u=[0,E$(r[1],a[1]),[0,[0,r],a]];;){var i=MZ(0,t);if("number"!=typeof i||11!==i)return[2,u];n0(t,11);var f=n(t),u=[0,E$(u[1],f[1]),[0,[1,u],f]];}}if(80===e){n0(t,80);var c=n(t);return[1,[0,E$(r[1],c[1]),[0,r,c]]]}}return[0,r]}function i(t){var r=XZ(0,t),a=n(t);if(80===MZ(0,t)){n0(t,80);var u=n(t),i=E$(a[1],u[1]),f=i,c=[1,[0,i,[0,a,u]]];}else var f=a[1],c=[0,a];if(78===MZ(0,t)){n0(t,78);var s=MZ(0,t);if("number"==typeof s)if(1===s){var o=e(t),v=o[2],l=o[1];0!==v[1][0]&&mZ(t,[0,l,41]);var b=[0,l,[0,[1,l,v]]],k=0;}else k=1;else if(4===s[0]){var p=s[1],h=p[1],d=p[3],m=p[2];n0(t,s);var b=[0,h,[0,[0,h,[0,[0,m],d]]]],k=0;}else k=1;if(k){WZ(t,42);var y=XZ(0,t),w=y,g=[0,[0,y,[0,SV,_V]]];}else var w=b[1],g=b[2];}else var w=f,g=0;return[0,E$(r,w),[0,c,g]]}function f(t,e){for(var n=0,a=u(t);;){var f=MZ(0,t);if("number"==typeof f){if(94<=f)c=99===f?1:rv===f?1:0;else{if(1===f){n=[0,[1,r(t)],n];continue}var c=93<=f?1:0;}if(c){var s=Dr(n),o=99===MZ(0,t)?1:0;o&&n0(t,99);var v=XZ(0,t);return n0(t,93),r0(t),[0,E$(e,v),[0,a,o,s]]}}n=[0,[0,i(t)],n];}}function c(t,r){n0(t,99);var e=u(t),n=XZ(0,t);n0(t,93);var a=t[20][1];if(a){var i=a[2];if(i)var f=i[2],c=1;else c=0;}else c=0;if(!c)f=xr(wW);t[20][1]=f;var s=hZ(t),o=bZ(t[21][1],s);return t[22][1]=o,[0,E$(r,n),[0,e]]}function s(t){switch(t[0]){case 0:return t[1][2][1];case 1:var r=t[1][2],e=r[1],n=Rr(gV,r[2][2][1]);return Rr(e[2][1],n);default:var a=t[1][2],u=a[1],i=a[2];return Rr(0===u[0]?u[1][2][1]:s([2,u[1]]),Rr(TV,i[2][1]))}}var o=function t(r){return t.fun(r)},v=function t(r,e){return t.fun(r,e)},l=function t(r){return t.fun(r)};return a(o,function(t){var r=MZ(0,t);if("number"==typeof r){if(1===r){var n=e(t);return[0,n[1],[1,n[2]]]}}else if(4===r[0]){var a=r[1],u=a[3],i=a[2],f=a[1];return n0(t,r),[0,f,[2,[0,i,u]]]}var c=yr(l,t);return[0,c[1],[0,c[2]]]}),a(v,function(t,r){var e=f(t,r);if(e[2][2])var n=0,a=0;else{t0(t,3);for(d=0;;){var u=MZ(0,t);if("number"==typeof u){if(92===u){t0(t,2);var i=XZ(0,t);n0(t,92);var l=MZ(0,t);if("number"==typeof l){if(99===l)k=1;else if(rv===l)k=1;else var b=0,k=0;if(k)var p=[0,c(t,i)],b=1;}else b=0;if(!b)p=[1,wr(v,t,i)];if(0!==p[0]){var h=p[1],d=[0,[0,h[1],[0,h[2]]],d];continue}var m=[0,p[1]],y=[0,Dr(d),m],w=1;}else if(rv===u){VZ(t);var y=[0,Dr(d),0],w=1;}else var g=0,w=0;if(w)var n=y[1],a=y[2],g=1;}else g=0;if(g)break;d=[0,yr(o,t),d];}}if(a){var T=a[1],_=T[2][1],S=T[1],A=s(e[2][1]);sr(s(_),A)&&WZ(t,[6,A]);E=S;}else var E=e[1];return[0,E$(e[1],E),[0,e,a,n]]}),a(l,function(t){var r=XZ(0,t);return t0(t,2),n0(t,92),wr(v,t,r)}),[0,r,e,n,u,i,f,c,o,v,l]}(h0),F0=w0[3],X0=y0[3],B0=y0[2],j0=y0[6],G0=w0[2],q0=w0[1],Y0=w0[4],J0=y0[1],H0=y0[5],W0=y0[4],z0=M0[10],V0=T0[6],K0=T0[3];a(_0,function(t){var r=wr(E0,t,function(t){return 0}),e=XZ(0,t);if(n0(t,rv),r)var n=Or(Dr(r))[1],a=E$(Or(r)[1],n);else a=e;return[0,a,r,Dr(t[2][1])]}),a(S0,function(t,r,e){for(var n=TZ(1,t),a=CK;;){var u=a[2],i=a[1],f=MZ(0,n);if("number"==typeof f)if(rv===f)var c=[0,n,i,u],s=1;else s=0;else s=0;if(!s)if(yr(r,f))c=[0,n,i,u];else{if("number"==typeof f)d=0;else if(1===f[0]){var o=yr(e,n),v=[0,o,u],l=o[2];if("number"!=typeof l&&13===l[0]){var b=l[1][2];if(b){var k=n[6],p=b[1],h=k||fr(p,IK),n=gZ(h,n),a=[0,[0,f,i],v];continue}}var c=[0,n,i,v],d=1;}else d=0;if(!d)c=[0,n,i,u];}var m=c[3],y=TZ(0,n);return Fr(function(t){if("number"!=typeof t&&1===t[0]){var r=t[1],e=r[4],n=r[1];return e?QZ(y,[0,n,32]):e}if("number"==typeof t){var a=t;if(59<=a)switch(a){case 59:u=cO;break;case 60:u=sO;break;case 61:u=oO;break;case 62:u=vO;break;case 63:u=lO;break;case 64:u=bO;break;case 65:u=kO;break;case 66:u=pO;break;case 67:u=hO;break;case 68:u=dO;break;case 69:u=mO;break;case 70:u=yO;break;case 71:u=wO;break;case 72:u=gO;break;case 73:u=TO;break;case 74:u=_O;break;case 75:u=SO;break;case 76:u=AO;break;case 77:u=EO;break;case 78:u=xO;break;case 79:u=IO;break;case 80:u=CO;break;case 81:u=NO;break;case 82:u=RO;break;case 83:u=LO;break;case 84:u=PO;break;case 85:u=OO;break;case 86:u=UO;break;case 87:u=DO;break;case 88:u=MO;break;case 89:u=FO;break;case 90:u=XO;break;case 91:u=BO;break;case 92:u=jO;break;case 93:u=GO;break;case 94:u=qO;break;case 95:u=YO;break;case 96:u=JO;break;case 97:u=HO;break;case 98:u=WO;break;case 99:u=zO;break;case 100:u=VO;break;case 101:u=KO;break;case 102:u=$O;break;case 103:u=QO;break;case 104:u=ZO;break;case 105:u=tU;break;case 106:u=rU;break;case 107:u=eU;break;case 108:u=nU;break;case 109:u=aU;break;case 110:u=uU;break;case 111:u=iU;break;case 112:u=fU;break;case 113:u=cU;break;case 114:u=sU;break;case 115:u=oU;break;default:u=vU;}else switch(a){case 0:u=nP;break;case 1:u=aP;break;case 2:u=uP;break;case 3:u=iP;break;case 4:u=fP;break;case 5:u=cP;break;case 6:u=sP;break;case 7:u=oP;break;case 8:u=vP;break;case 9:u=lP;break;case 10:u=bP;break;case 11:u=kP;break;case 12:u=pP;break;case 13:u=hP;break;case 14:u=dP;break;case 15:u=mP;break;case 16:u=yP;break;case 17:u=wP;break;case 18:u=gP;break;case 19:u=TP;break;case 20:u=_P;break;case 21:u=SP;break;case 22:u=AP;break;case 23:u=EP;break;case 24:u=xP;break;case 25:u=IP;break;case 26:u=CP;break;case 27:u=NP;break;case 28:u=RP;break;case 29:u=LP;break;case 30:u=PP;break;case 31:u=OP;break;case 32:u=UP;break;case 33:u=DP;break;case 34:u=MP;break;case 35:u=FP;break;case 36:u=XP;break;case 37:u=BP;break;case 38:u=jP;break;case 39:u=GP;break;case 40:u=qP;break;case 41:u=YP;break;case 42:u=JP;break;case 43:u=HP;break;case 44:u=WP;break;case 45:u=zP;break;case 46:u=VP;break;case 47:u=KP;break;case 48:u=$P;break;case 49:u=QP;break;case 50:u=ZP;break;case 51:u=tO;break;case 52:u=rO;break;case 53:u=eO;break;case 54:u=nO;break;case 55:u=aO;break;case 56:u=uO;break;case 57:u=iO;break;default:u=fO;}}else switch(t[0]){case 0:u=lU;break;case 1:u=bU;break;case 2:u=kU;break;case 3:u=pU;break;case 4:u=hU;break;default:var u=dU;}return xr(Rr(RK,Rr(u,NK)))},Dr(i)),[0,y,m]}}),a(A0,function(t){var r=yr(w0[5],t),e=MZ(0,t);if("number"==typeof e){var n=e-49|0;if(!(11>>0))switch(n){case 0:return wr(g0[15],t,r);case 1:yr(KZ(t),r);var a=MZ(EK,t);if("number"==typeof a)if(5===a)var u=yr(g0[16],t),i=1;else i=0;else i=0;if(!i)u=yr(g0[17],t);return u;case 11:if(49===MZ(xK,t))return yr(KZ(t),r),wr(g0[12],0,t)}}return wr(N0,[0,r],t)}),a(E0,function(t,r){var e=gr(S0,t,r,A0),n=e[2];return Xr(function(t,r){return[0,r,t]},wr(x0,r,e[1]),n)}),a(x0,function(t,r){for(n=0;;){var e=MZ(0,r);if("number"==typeof e&&rv===e)return Dr(n);if(yr(t,e))return Dr(n);var n=[0,yr(A0,r),n];}}),a(I0,function(t,r){var e=gr(S0,r,t,function(t){return wr(N0,0,t)}),n=e[1],a=e[2];return[0,Xr(function(t,r){return[0,r,t]},wr(C0,t,n),a),n[6]]}),a(C0,function(t,r){for(n=0;;){var e=MZ(0,r);if("number"==typeof e&&rv===e)return Dr(n);if(yr(t,e))return Dr(n);var n=[0,wr(N0,0,r),n];}}),a(N0,function(t,r){var e=t?t[1]:0;1-HZ(0,r)&&yr(KZ(r),e);var n=MZ(0,r);if("number"==typeof n){if(27===n)return yr(g0[24],r);if(28===n)return yr(g0[3],r)}if(JZ(0,r))return yr(m0[14],r);if(HZ(0,r))return wr(F0,r,e);if("number"==typeof n){var a=n+-53|0;if(!(8>>0))switch(a){case 0:return yr(g0[18],r);case 7:return wr(g0[11],0,r);case 8:return yr(g0[23],r)}}return yr(R0,r)}),a(R0,function(t){var r=MZ(0,t);if("number"==typeof r){if(rv===r)return VZ(t),[0,XZ(0,t),1];if(!(60<=r))switch(r){case 1:return yr(g0[7],t);case 9:return yr(g0[14],t);case 16:return yr(g0[2],t);case 19:return yr(g0[20],t);case 20:return yr(g0[21],t);case 22:return yr(g0[22],t);case 23:return yr(g0[4],t);case 24:return yr(g0[24],t);case 25:return yr(g0[5],t);case 26:return yr(g0[6],t);case 32:return yr(g0[8],t);case 35:return yr(g0[9],t);case 37:return yr(g0[13],t);case 39:return yr(g0[1],t);case 59:return yr(g0[10],t)}}if(YZ(0,t))return yr(g0[19],t);if("number"==typeof r){if(80===r)e=1;else if(50<=r)e=0;else switch(r){case 43:return yr(g0[2],t);case 2:case 6:case 8:case 10:case 11:case 12:case 13:case 17:case 18:case 33:case 34:case 36:case 38:case 41:case 42:case 49:e=1;break;default:var e=0;}if(e)return VZ(t),ZZ(t),yr(R0,t)}return yr(g0[16],t)}),a(L0,function(t){var r=yr(y0[2],t),e=MZ(0,t);return"number"==typeof e&&10===e?wr(y0[8],t,[0,r,0]):r}),a(P0,function(t,r){var e=XZ(0,r),n=FZ(0,r),a=MZ(0,r);if("number"==typeof a)if(28===a){r[6]?$Z(r,40):r[13]&&WZ(r,[1,n]),ZZ(r);u=1;}else u=0;else var u=0;if(u||(UZ(n)?($Z(r,40),ZZ(r)):("number"==typeof a?4<(a+-60|0)>>>0?0:(n0(r,a),1):0)||n0(r,0)),t){var i=t[1];DZ(n)&&QZ(r,[0,e,i]);}else;return[0,e,n]}),a(O0,function(t,r,e){var n=r?r[1]:0;return l0(function(t){var r=1-n,a=wr(P0,[0,e],t),u=r?79===MZ(0,t)?1:0:r;return u&&(1-dZ(t)&&WZ(t,7),n0(t,79)),[0,a,80===MZ(0,t)?[0,yr(d0[8],t)]:0,u]},t)}),a(U0,function(t){var r=XZ(0,t);n0(t,1);var e=wr(C0,function(t){return 2===t?1:0},t),n=XZ(0,t);return n0(t,2),[0,E$(r,n),[0,e]]}),a(D0,function(t){var r=XZ(0,t);n0(t,1);var e=wr(I0,function(t){return 2===t?1:0},t),n=e[2],a=e[1],u=XZ(0,t);return n0(t,2),[0,E$(r,u),[0,a],n]}),gr(u$,OK,h0,[0,_0,R0,N0,C0,I0,x0,L0,X0,B0,j0,G0,J0,P0,W0,O0,U0,D0,z0,V0,K0,q0,F0,Y0,H0]);var $0=[0,0],Q0=Rt,Z0=function(t,r,e){try{n=new RegExp(r.toString(),e.toString());}catch(r){$0[1]=[0,[0,t,13],$0[1]];var n=new RegExp(mb,e.toString());}return n},t1=function(t,r){function e(t,r){return Nt(re(Mr(t,r)))}function n(t,r){return r?yr(t,r[1]):w$}function a(t){return{line:t[1],column:t[2]}}function u(t){var r=t[1];if(r)var e=r[1],n="number"==typeof e?xf:e[1].toString(),u=n;else u=w$;var i=a(t[3]);return{source:u,start:a(t[2]),end:i}}function f(t,r,e){var n=[0,ZL,Nt([0,r[2][3],r[3][3]])],a=[0,tP,u(r)],f=[0,[0,rP,t.toString()],a,n],s=f.length-1;if(0===s)var o=e.length-1,v=0===o?[0]:c(e,0,o);else v=0==e.length-1?c(f,0,s):i(f,e);return Lt(v)}function s(t){return e(d,t)}function o(t){var r=t[2],n=t[1];switch(r[2]){case 0:a=TN;break;case 1:a=_N;break;default:var a=SN;}var u=[0,AN,a.toString()];return f(xN,n,[0,[0,EN,e(G,r[1])],u])}function v(t){var r=t[2],a=t[1],u=[0,bC,e(L,r[4])],i=[0,kC,Y(r[3])],c=[0,pC,n($,r[2])];return f(dC,a,[0,[0,hC,g(r[1])],c,i,u])}function l(t){var r=t[2],e=t[1],a=[0,SI,H(r[3])],u=[0,AI,n($,r[2])];return f(xI,e,[0,[0,EI,g(r[1])],u,a])}function b(t){var r=t[2],a=t[1],u=[0,pI,e(L,r[4])],i=[0,hI,Y(r[3])],c=[0,dI,n($,r[2])];return f(yI,a,[0,[0,mI,g(r[1])],c,i,u])}function k(t){var r=t[2],e=t[1],a=E$(r[1][1],r[2][1]),u=[0,lI,n(lt,r[3])];return f(kI,e,[0,[0,bI,S(a,[0,r[1],[0,r[2]],0])],u])}function p(t){var r=t[2],e=r[2],n=t[1],a=e?e[1][1]:r[1][1],u=E$(r[1][1],a);return f(vI,n,[0,[0,oI,S(u,[0,r[1],r[2],0])]])}function h(t){var r=t[1];return f(sI,r,[0,[0,cI,s(t[2][1])]])}function d(t){var r=t[2],a=t[1];if("number"==typeof r)return 0===r?f(G_,a,[0]):f(q_,a,[0]);switch(r[0]){case 0:return h([0,a,r[1]]);case 1:return f(J_,a,[0,[0,Y_,n(g,r[1][1])]]);case 2:var u=r[1],i=[0,II,e(_,u[7])],c=[0,CI,e(C,u[6])],s=[0,NI,n(Z,u[5])],m=[0,RI,n($,u[4])],y=[0,LI,n(_,u[3])],T=[0,PI,N(u[2])];return f(UI,a,[0,[0,OI,n(g,u[1])],T,y,m,s,c,i]);case 3:return f(W_,a,[0,[0,H_,n(g,r[1][1])]]);case 4:return b([0,a,r[1]]);case 5:var S=r[1],R=S[3];if(R){var L=R[1];if(0!==L[0]&&!L[2])return f(V_,a,[0,[0,z_,n(w,S[4])]])}var P=S[2];if(P){var U=P[1];switch(U[0]){case 0:D=p(U[1]);break;case 1:D=k(U[1]);break;case 2:D=b(U[1]);break;case 3:D=H(U[1]);break;case 4:D=l(U[1]);break;default:var D=v(U[1]);}M=D;}else var M=w$;var F=[0,K_,n(w,S[4])],X=[0,$_,I(S[3])];return f(tS,a,[0,[0,Z_,!!S[1]],[0,Q_,M],X,F]);case 6:return k([0,a,r[1]]);case 7:var B=r[1],j=B[1],G=0===j[0]?g(j[1]):w(j[1]),q=0===B[3][0]?"CommonJS":"ES";return f(aS,a,[0,[0,nS,G],[0,eS,h(B[2])],[0,rS,q]]);case 8:return f(iS,a,[0,[0,uS,K(r[1])]]);case 9:return p([0,a,r[1]]);case 10:var Y=r[1],J=[0,fS,_(Y[2])];return f(sS,a,[0,[0,cS,d(Y[1])],J]);case 11:var W=r[1],z=W[1],V=0===z[0]?d(z[1]):_(z[1]);return f(lS,a,[0,[0,vS,V],[0,oS,x(W[2]).toString()]]);case 12:var Q=r[1],tt=Q[2];if(tt){var rt=tt[1];if(0!==rt[0]&&!rt[2]){var et=[0,bS,x(Q[4]).toString()];return f(pS,a,[0,[0,kS,n(w,Q[3])],et])}}var nt=[0,hS,x(Q[4]).toString()],at=[0,dS,n(w,Q[3])],ut=[0,mS,I(Q[2])];return f(wS,a,[0,[0,yS,n(d,Q[1])],ut,at,nt]);case 13:var it=r[1],ft=[0,gS,n(Q0,it[2])];return f(_S,a,[0,[0,TS,_(it[1])],ft]);case 14:var ct=r[1],st=function(t){return 0===t[0]?o(t[1]):_(t[1])},ot=[0,SS,d(ct[4])],vt=[0,AS,n(_,ct[3])],bt=[0,ES,n(_,ct[2])];return f(IS,a,[0,[0,xS,n(st,ct[1])],bt,vt,ot]);case 15:var kt=r[1],pt=kt[1],ht=0===pt[0]?o(pt[1]):_(pt[1]),dt=[0,CS,!!kt[4]],mt=[0,NS,d(kt[3])];return f(PS,a,[0,[0,LS,ht],[0,RS,_(kt[2])],mt,dt]);case 16:var yt=r[1],wt=yt[4]?OS:US,gt=yt[1],Tt=0===gt[0]?o(gt[1]):_(gt[1]),_t=[0,DS,d(yt[3])];return f(wt,a,[0,[0,FS,Tt],[0,MS,_(yt[2])],_t]);case 17:var St=r[1],At=St[3],Et=0===At[0]?h(At[1]):_(At[1]),xt=[0,Ix,n($,St[9])],It=[0,Cx,n(K,St[8])],Ct=[0,Nx,!!St[7]],Rt=[0,Rx,n(lt,St[6])],Lt=[0,Lx,!!St[5]],Pt=[0,Px,!!St[4]],Ot=[0,Ux,O(St[2])];return f(Mx,a,[0,[0,Dx,n(g,St[1])],Ot,[0,Ox,Et],Pt,Lt,Rt,Ct,It,xt]);case 18:var Ut=r[1],Dt=[0,XS,n(d,Ut[3])],Mt=[0,BS,d(Ut[2])];return f(GS,a,[0,[0,jS,_(Ut[1])],Mt,Dt]);case 19:var Ft=r[1],Xt=Mr(function(t){switch(t[0]){case 0:var r=t[1],e=r[3],n=r[2],a=r[1],u=n?E$(e[1],n[1][1]):e[1],i=n?n[1]:e;if(a){switch(a[1]){case 0:var c=Su,s=1;break;case 1:var c=jl,s=1;break;default:var o=0,s=0;}if(s)var v=c,o=1;}else o=0;if(!o)v=w$;var l=[0,YL,g(i)];return f(HL,u,[0,[0,JL,g(e)],l,[0,qL,v]]);case 1:var b=t[1],k=[0,[0,XL,g(b)]];return f(BL,b[1],k);default:var p=t[1],h=p[1];return f(GL,h,[0,[0,jL,g(p[2])]])}},Ft[3]);switch(Ft[1]){case 0:Bt=qS;break;case 1:Bt=YS;break;default:var Bt=JS;}var jt=[0,HS,Bt.toString()],Gt=[0,WS,w(Ft[2])];return f(VS,a,[0,[0,zS,Nt(re(Xt))],Gt,jt]);case 20:return v([0,a,r[1]]);case 21:var qt=r[1],Yt=[0,KS,d(qt[2])];return f(QS,a,[0,[0,$S,g(qt[1])],Yt]);case 22:return f(tA,a,[0,[0,ZS,n(_,r[1][1])]]);case 23:var Jt=r[1],Ht=[0,rA,e(A,Jt[2])];return f(nA,a,[0,[0,eA,_(Jt[1])],Ht]);case 24:return f(uA,a,[0,[0,aA,_(r[1][1])]]);case 25:var Wt=r[1],zt=[0,iA,n(h,Wt[3])],Vt=[0,fA,n(E,Wt[2])];return f(sA,a,[0,[0,cA,h(Wt[1])],Vt,zt]);case 26:return l([0,a,r[1]]);case 27:return o([0,a,r[1]]);case 28:var Kt=r[1],$t=[0,oA,d(Kt[2])];return f(lA,a,[0,[0,vA,_(Kt[1])],$t]);default:var Qt=r[1],Zt=[0,bA,d(Qt[2])];return f(pA,a,[0,[0,kA,_(Qt[1])],Zt])}}function m(t){var r=t[2],a=t[1],u=[0,fL,e(nt,r[3])],i=[0,cL,n(rt,r[2])],c=r[1],s=c[2],o=c[1],v=[0,vL,!!s[2]],l=[0,lL,e(tt,s[3])];return f(oL,a,[0,[0,sL,f(kL,o,[0,[0,bL,ct(s[1])],l,v])],i,u])}function y(t){var r=t[2],n=t[1],a=[0,bN,e(_,r[2])];return f(pN,n,[0,[0,kN,e(j,r[1])],a])}function w(t){var r=t[2],e=t[1],n=r[2],a=r[1];if("number"==typeof a)i=w$;else switch(a[0]){case 0:i=a[1].toString();break;case 1:i=!!a[1];break;case 2:i=a[1];break;default:var u=a[1],i=Z0(e,u[1],u[2]);}if("number"==typeof a)o=0;else if(3===a[0])var c=a[1],s=[0,[0,sN,i],[0,cN,n.toString()],[0,fN,{pattern:c[1].toString(),flags:c[2].toString()}]],o=1;else o=0;if(!o)s=[0,[0,vN,i],[0,oN,n.toString()]];return f(lN,e,s)}function g(t){return f($x,t[1],[0,[0,Kx,t[2].toString()],[0,Vx,w$],[0,zx,!1]])}function T(t){var r=t[2],e=r[3],a=t[1],u=0===e[0]?h(e[1]):_(e[1]),i=[0,Fx,n($,r[9])],c=[0,Xx,n(K,r[8])],s=[0,Bx,!!r[7]],o=[0,jx,n(lt,r[6])],v=[0,Gx,!!r[5]],l=[0,qx,!!r[4]],b=[0,Jx,O(r[2])];return f(Wx,a,[0,[0,Hx,n(g,r[1])],b,[0,Yx,u],l,v,o,s,c,i])}function _(t){var r=t[2],a=t[1];if("number"==typeof r)return 0===r?f(hA,a,[0]):f(dA,a,[0]);switch(r[0]){case 0:var u=r[1][1];return f(yA,a,[0,[0,mA,e(function(t){return n(X,t)},u)]]);case 1:var i=r[1],c=i[3],s=0===c[0]?h(c[1]):_(c[1]),o=[0,wA,n($,i[9])],v=[0,gA,n(K,i[8])],l=[0,TA,!!i[7]],b=[0,_A,n(lt,i[6])],k=[0,SA,!!i[5]],p=[0,AA,!!i[4]],d=[0,xA,O(i[2])];return f(CA,a,[0,[0,IA,n(g,i[1])],d,[0,EA,s],p,k,b,l,v,o]);case 2:var S=r[1];switch(S[1]){case 0:A=NA;break;case 1:A=RA;break;case 2:A=LA;break;case 3:A=PA;break;case 4:A=OA;break;case 5:A=UA;break;case 6:A=DA;break;case 7:A=MA;break;case 8:A=FA;break;case 9:A=XA;break;case 10:A=BA;break;case 11:A=jA;break;default:var A=GA;}var E=[0,qA,_(S[3])],x=[0,YA,P(S[2])];return f(HA,a,[0,[0,JA,A.toString()],x,E]);case 3:var I=r[1];switch(I[1]){case 0:R=WA;break;case 1:R=zA;break;case 2:R=VA;break;case 3:R=KA;break;case 4:R=$A;break;case 5:R=QA;break;case 6:R=ZA;break;case 7:R=tE;break;case 8:R=rE;break;case 9:R=eE;break;case 10:R=nE;break;case 11:R=aE;break;case 12:R=uE;break;case 13:R=iE;break;case 14:R=fE;break;case 15:R=cE;break;case 16:R=sE;break;case 17:R=oE;break;case 18:R=vE;break;case 19:R=lE;break;case 20:R=bE;break;default:var R=kE;}var L=[0,pE,_(I[3])],U=[0,hE,_(I[2])];return f(mE,a,[0,[0,dE,R.toString()],U,L]);case 4:var D=r[1],F=[0,yE,e(X,D[2])];return f(gE,a,[0,[0,wE,_(D[1])],F]);case 5:var j=r[1],G=[0,DI,e(_,j[7])],q=[0,MI,e(C,j[6])],Y=[0,FI,n(Z,j[5])],J=[0,XI,n($,j[4])],H=[0,BI,n(_,j[3])],W=[0,jI,N(j[2])];return f(qI,a,[0,[0,GI,n(g,j[1])],W,H,J,Y,q,G]);case 6:var z=r[1],V=[0,TE,n(_,z[2])];return f(SE,a,[0,[0,_E,e(B,z[1])],V]);case 7:var Q=r[1],tt=[0,AE,_(Q[3])],rt=[0,EE,_(Q[2])];return f(IE,a,[0,[0,xE,_(Q[1])],rt,tt]);case 8:return T([0,a,r[1]]);case 9:var et=r[1],nt=[0,CE,n(_,et[2])];return f(RE,a,[0,[0,NE,e(B,et[1])],nt]);case 10:return g(r[1]);case 11:var at=r[1],ut=[0,LE,e(_,[0,at,0])];return f(UE,a,[0,[0,OE,f(PE,E$(a,at[1]),[0])],ut]);case 12:return m([0,a,r[1]]);case 13:return w([0,a,r[1]]);case 14:var it=r[1],ft=0===it[1]?ME:DE,ct=[0,FE,_(it[3])],st=[0,XE,_(it[2])];return f(jE,a,[0,[0,BE,ft.toString()],st,ct]);case 15:var ot=r[1],vt=ot[2],bt=0===vt[0]?g(vt[1]):_(vt[1]),kt=[0,GE,!!ot[3]];return f(JE,a,[0,[0,YE,_(ot[1])],[0,qE,bt],kt]);case 16:var pt=r[1],ht=[0,HE,g(pt[2])];return f(zE,a,[0,[0,WE,g(pt[1])],ht]);case 17:var dt=r[1],mt=[0,VE,e(X,dt[2])];return f($E,a,[0,[0,KE,_(dt[1])],mt]);case 18:return f(ZE,a,[0,[0,QE,e(M,r[1][1])]]);case 19:return f(rx,a,[0,[0,tx,e(_,r[1][1])]]);case 20:var yt=r[1],wt=[0,yN,y(yt[2])];return f(gN,a,[0,[0,wN,_(yt[1])],wt]);case 21:return y([0,a,r[1]]);case 22:var gt=r[1],Tt=[0,ex,K(gt[2])];return f(ax,a,[0,[0,nx,_(gt[1])],Tt]);case 23:var _t=r[1];if(7<=_t[1])return f(ix,a,[0,[0,ux,_(_t[3])]]);switch(_t[1]){case 0:St=fx;break;case 1:St=cx;break;case 2:St=sx;break;case 3:St=ox;break;case 4:St=vx;break;case 5:St=lx;break;case 6:St=bx;break;default:var St=xr(kx);}var At=[0,px,_(_t[3])];return f(mx,a,[0,[0,dx,St.toString()],[0,hx,!!_t[2]],At]);case 24:var Et=r[1],xt=0===Et[1]?wx:yx,It=[0,gx,!!Et[3]],Ct=[0,Tx,_(Et[2])];return f(Sx,a,[0,[0,_x,xt.toString()],Ct,It]);default:var Nt=r[1],Rt=[0,Ax,!!Nt[2]];return f(xx,a,[0,[0,Ex,n(_,Nt[1])],Rt])}}function S(t,r){var e=r[1],a=[0,Qx,!!r[3]],u=[0,Zx,n(K,r[2])];return f(rI,t,[0,[0,tI,e[2].toString()],u,a])}function A(t){var r=t[2],a=t[1],u=[0,eI,e(d,r[2])];return f(aI,a,[0,[0,nI,n(_,r[1])],u])}function E(t){var r=t[2],e=t[1],n=[0,uI,h(r[2])];return f(fI,e,[0,[0,iI,P(r[1])],n])}function x(t){return 0===t?gI:wI}function I(t){if(t){var r=t[1];if(0===r[0])return e(ot,r[1]);var n=r[2],a=r[1];return Nt(n?[0,f(_I,a,[0,[0,TI,g(n[1])]])]:[0])}return Nt([0])}function C(t){var r=t[2],e=t[1],a=[0,YI,n(Z,r[2])];return f(HI,e,[0,[0,JI,g(r[1])],a])}function N(t){var r=t[1];return f(zI,r,[0,[0,WI,e(R,t[2][1])]])}function R(t){if(0===t[0]){var r=t[1],a=r[2],u=a[2],i=r[1],c=a[5],s=a[4],o=a[3],v=a[1];switch(u[0]){case 0:l=[0,w(u[1]),0];break;case 1:l=[0,g(u[1]),0];break;default:var l=[0,_(u[1]),1];}var b=l[2],k=l[1];switch(v){case 0:p=VI;break;case 1:p=KI;break;case 2:p=$I;break;default:var p=QI;}var h=[0,ZI,e(_,c)],d=[0,eC,p.toString()];return f(uC,i,[0,[0,aC,k],[0,nC,T(o)],d,[0,rC,!!s],[0,tC,!!b],h])}var m=t[1],y=m[2],S=y[1],A=m[1];switch(S[0]){case 0:E=[0,w(S[1]),0];break;case 1:E=[0,g(S[1]),0];break;default:var E=[0,_(S[1]),1];}var x=E[2],I=E[1],C=[0,iC,n(q,y[5])],N=[0,fC,!!y[4]],R=[0,sC,n(K,y[3])];return f(lC,A,[0,[0,vC,I],[0,oC,n(_,y[2])],R,[0,cC,!!x],N,C])}function L(t){var r=t[2],e=r[1],a=t[1],u=0===e[0]?g(e[1]):V(e[1]);return f(wC,a,[0,[0,yC,u],[0,mC,n(Z,r[2])]])}function P(t){var r=t[2],a=t[1];switch(r[0]){case 0:var u=r[1],i=[0,gC,n(K,u[2])];return f(_C,a,[0,[0,TC,e(F,u[1])],i]);case 1:var c=r[1],s=[0,SC,n(K,c[2])],o=c[1];return f(EC,a,[0,[0,AC,e(function(t){return n(U,t)},o)],s]);case 2:var v=r[1],l=v[1],b=[0,xC,_(v[2])];return f(CC,a,[0,[0,IC,P(l)],b]);case 3:return S(a,r[1]);default:return _(r[1])}}function O(t){var r=t[2],n=t[1];if(r){var a=r[1],u=a[1];return Nt(re(Dr([0,f(RC,u,[0,[0,NC,P(a[2][1])]]),Dr(Mr(P,n))])))}return e(P,n)}function U(t){if(0===t[0])return P(t[1]);var r=t[1],e=r[1];return f(PC,e,[0,[0,LC,P(r[2][1])]])}function M(t){if(0===t[0]){var r=t[1],e=r[2],n=e[1],a=r[1];switch(n[0]){case 0:u=[0,w(n[1]),0];break;case 1:u=[0,g(n[1]),0];break;default:var u=[0,_(n[1]),1];}var i=e[2],c=u[2],s=u[1];switch(i[0]){case 0:o=[0,_(i[1]),OC];break;case 1:o=[0,T(i[1]),UC];break;default:var o=[0,T(i[1]),DC];}return f(qC,a,[0,[0,GC,s],[0,jC,o[1]],[0,BC,o[2].toString()],[0,XC,!!e[3]],[0,FC,!!e[4]],[0,MC,!!c]])}var v=t[1],l=v[1];return f(JC,l,[0,[0,YC,_(v[2][1])]])}function F(t){if(0===t[0]){var r=t[1],e=r[2],n=e[1],a=r[1];switch(n[0]){case 0:u=[0,w(n[1]),0];break;case 1:u=[0,g(n[1]),0];break;default:var u=[0,_(n[1]),1];}var i=u[1],c=[0,HC,!!u[2]],s=[0,WC,!!e[3]];return f(QC,a,[0,[0,$C,i],[0,KC,P(e[2])],[0,VC,Ts],[0,zC,!1],s,c])}var o=t[1],v=o[1];return f(tN,v,[0,[0,ZC,P(o[2][1])]])}function X(t){if(0===t[0])return _(t[1]);var r=t[1],e=r[1];return f(eN,e,[0,[0,rN,_(r[2][1])]])}function B(t){var r=t[2],e=t[1],n=[0,nN,!!r[3]],a=[0,aN,_(r[2])];return f(iN,e,[0,[0,uN,P(r[1])],a,n])}function j(t){var r=t[2];return f(mN,t[1],[0,[0,dN,{raw:r[1][1].toString(),cooked:r[1][2].toString()}],[0,hN,!!r[2]]])}function G(t){var r=t[2],e=t[1],a=[0,IN,n(_,r[2])];return f(NN,e,[0,[0,CN,P(r[1])],a])}function q(t){return 0===t[2]?"plus":Uo}function Y(t){var r=t[2],e=t[1],a=r[2],u=Xr(function(t,r){var e=t[3],a=t[2],u=t[1];switch(r[0]){case 0:var i=r[1],c=i[2],s=c[1],o=i[1];switch(s[0]){case 0:v=w(s[1]);break;case 1:v=g(s[1]);break;default:var v=xr(eR);}var l=c[2];switch(l[0]){case 0:k=[0,H(l[1]),nR];break;case 1:var b=l[1],k=[0,J([0,b[1],b[2]]),aR];break;default:var p=l[1],k=[0,J([0,p[1],p[2]]),uR];}var h=k[1],d=[0,iR,k[2].toString()],m=[0,fR,n(q,c[6])];return[0,[0,f(lR,o,[0,[0,vR,v],[0,oR,h],[0,sR,!!c[3]],[0,cR,!!c[4]],m,d]),u],a,e];case 1:var y=r[1],T=y[1];return[0,[0,f(kR,T,[0,[0,bR,H(y[2][1])]]),u],a,e];case 2:var _=r[1],S=_[2],A=_[1],E=[0,pR,n(q,S[5])],x=[0,hR,!!S[4]],I=[0,dR,H(S[3])],C=[0,mR,H(S[2])];return[0,u,[0,f(wR,A,[0,[0,yR,n(g,S[1])],C,I,x,E]),a],e];default:var N=r[1],R=N[2],L=N[1],P=[0,gR,!!R[2]];return[0,u,a,[0,f(_R,L,[0,[0,TR,J(R[1])],P]),e]]}},KN,a),i=u[2],c=u[1],s=[0,$N,Nt(re(Dr(u[3])))],o=[0,QN,Nt(re(Dr(i)))],v=[0,ZN,Nt(re(Dr(c)))];return f(rR,e,[0,[0,tR,!!r[1]],v,o,s])}function J(t){var r=t[2],a=r[1],u=t[1],i=a[2],c=a[1],s=[0,jN,n($,r[3])],o=[0,GN,n(z,i)],v=[0,qN,H(r[2])];return f(JN,u,[0,[0,YN,e(W,c)],v,o,s])}function H(t){var r=t[2],a=t[1];if("number"==typeof r)switch(r){case 0:return f(RN,a,[0]);case 1:return f(LN,a,[0]);case 2:return f(PN,a,[0]);case 3:return f(ON,a,[0]);case 4:return f(UN,a,[0]);case 5:return f(DN,a,[0]);case 6:return f(MN,a,[0]);case 7:return f(FN,a,[0]);default:return f(VR,a,[0])}else switch(r[0]){case 0:return f(BN,a,[0,[0,XN,H(r[1])]]);case 1:return J([0,a,r[1]]);case 2:return Y([0,a,r[1]]);case 3:return f(AR,a,[0,[0,SR,H(r[1])]]);case 4:var u=r[1],i=u[1],c=0===i[0]?g(i[1]):V(i[1]);return f(RR,a,[0,[0,NR,c],[0,CR,n(Z,u[2])]]);case 5:return f(PR,a,[0,[0,LR,e(H,[0,r[1],[0,r[2],r[3]]])]]);case 6:return f(UR,a,[0,[0,OR,e(H,[0,r[1],[0,r[2],r[3]]])]]);case 7:return f(MR,a,[0,[0,DR,H(r[1])]]);case 8:return f(XR,a,[0,[0,FR,e(H,r[1])]]);case 9:var s=r[1];return f(GR,a,[0,[0,jR,s[1].toString()],[0,BR,s[2].toString()]]);case 10:var o=r[1];return f(JR,a,[0,[0,YR,o[1]],[0,qR,o[2].toString()]]);default:var v=r[1];return f(zR,a,[0,[0,WR,!!v[1]],[0,HR,v[2].toString()]])}}function W(t){var r=t[2],e=t[1],a=[0,HN,!!r[3]],u=[0,WN,H(r[2])];return f(VN,e,[0,[0,zN,n(g,r[1])],u,a])}function z(t){return W(t[2][1])}function V(t){var r=t[2],e=r[1],n=t[1],a=0===e[0]?g(e[1]):V(e[1]);return f(IR,n,[0,[0,xR,a],[0,ER,g(r[2])]])}function K(t){var r=t[1];return f($R,r,[0,[0,KR,H(t[2])]])}function $(t){var r=t[1];return f(ZR,r,[0,[0,QR,e(Q,t[2][1])]])}function Q(t){var r=t[2],e=t[1],a=[0,tL,n(H,r[4])],u=[0,rL,n(q,r[3])],i=[0,eL,n(K,r[2])];return f(aL,e,[0,[0,nL,r[1].toString()],i,u,a])}function Z(t){var r=t[1];return f(iL,r,[0,[0,uL,e(H,t[2][1])]])}function tt(t){if(0===t[0]){var r=t[1],e=r[2],a=e[1],u=r[1],i=0===a[0]?at(a[1]):ut(a[1]);return f(yL,u,[0,[0,mL,i],[0,dL,n(st,e[2])]])}var c=t[1],s=c[1];return f(gL,s,[0,[0,wL,_(c[2][1])]])}function rt(t){var r=t[1];return f(hL,r,[0,[0,pL,ct(t[2][1])]])}function et(t){var r=t[2][1],e=t[1],n=0===r[0]?_(r[1]):f(TL,r[1],[0]);return f(SL,e,[0,[0,_L,n]])}function nt(t){var r=t[2],e=t[1];switch(r[0]){case 0:return m([0,e,r[1]]);case 1:return et([0,e,r[1]]);default:var n=r[1];return f(xL,e,[0,[0,EL,n[1].toString()],[0,AL,n[2].toString()]])}}function at(t){return f(UL,t[1],[0,[0,OL,t[2][1].toString()]])}function ut(t){var r=t[2],e=t[1],n=[0,RL,at(r[2])];return f(PL,e,[0,[0,LL,at(r[1])],n])}function ft(t){var r=t[2],e=r[1],n=t[1],a=0===e[0]?at(e[1]):ft(e[1]);return f(NL,n,[0,[0,CL,a],[0,IL,at(r[2])]])}function ct(t){switch(t[0]){case 0:return at(t[1]);case 1:return ut(t[1]);default:return ft(t[1])}}function st(t){return 0===t[0]?w([0,t[1],t[2]]):et([0,t[1],t[2]])}function ot(t){var r=t[2],e=r[2],n=t[1],a=g(e?e[1]:r[1]);return f(FL,n,[0,[0,ML,g(r[1])],[0,DL,a]])}function vt(t){var r=t[2],e=t[1],n=0===r[0]?[0,WL,r[1]]:[0,zL,r[1]];return f(n[1],e,[0,[0,VL,n[2].toString()]])}function lt(t){var r=t[2],e=t[1];if(r)var n=$L,a=[0,[0,KL,_(r[1])]];else var n=QL,a=[0];return f(n,e,a)}var bt=D(r,void 0)?{}:r,kt=bt.esproposal_decorators,pt=it(t),ht=g$(kt)?[0,bm[1],bm[2],0|kt,bm[4],bm[5],bm[6]]:bm,dt=bt.esproposal_class_instance_fields,mt=g$(dt)?[0,0|dt,ht[2],ht[3],ht[4],ht[5],ht[6]]:ht,yt=bt.esproposal_class_static_fields,wt=g$(yt)?[0,mt[1],0|yt,mt[3],mt[4],mt[5],mt[6]]:mt,gt=bt.esproposal_export_star_as,Tt=g$(gt)?[0,wt[1],wt[2],wt[3],0|gt,wt[5],wt[6]]:wt,_t=bt.types,St=[0,g$(_t)?[0,Tt[1],Tt[2],Tt[3],Tt[4],0|_t,Tt[6]]:Tt],At=[0,St],Et=hm?hm[1]:1,xt=At?St:0,It=pZ([0,0],[0,[0,xt]?xt:0],0,pt),Ct=yr(h0[1],It),Rt=Dr(It[1][1]),Pt=Dr(Xr(function(t,r){var e=t[2],n=t[1];return wr(p0[3],r,n)?[0,n,e]:[0,wr(p0[4],r,n),[0,r,e]]},[0,p0[1],0],Rt)[2]);if(Et?0!==Pt?1:0:Et)throw[0,j$,Pt];$0[1]=0;var Ot=Ct[2],Ut=Ct[1],Dt=[0,X_,e(vt,Ct[3])],Mt=f(j_,Ut,[0,[0,B_,s(Ot)],Dt]),Ft=Lr(Pt,$0[1]);return Mt.errors=e(function(t){var r=t[2],e=t[1];if("number"==typeof r){var n=r;if(34<=n)switch(n){case 34:f=YT;break;case 35:f=JT;break;case 36:f=HT;break;case 37:f=WT;break;case 38:f=zT;break;case 39:f=VT;break;case 40:f=KT;break;case 41:f=$T;break;case 42:f=QT;break;case 43:f=ZT;break;case 44:f=t_;break;case 45:f=r_;break;case 46:f=Rr(n_,e_);break;case 47:f=Rr(u_,a_);break;case 48:f=i_;break;case 49:f=f_;break;case 50:f=c_;break;case 51:f=s_;break;case 52:f=o_;break;case 53:f=v_;break;case 54:f=l_;break;case 55:f=b_;break;case 56:f=k_;break;case 57:f=p_;break;case 58:f=h_;break;case 59:f=d_;break;case 60:f=m_;break;case 61:f=y_;break;case 62:f=w_;break;case 63:f=g_;break;case 64:f=Rr(__,T_);break;case 65:f=S_;break;case 66:f=A_;break;default:f=E_;}else switch(n){case 0:f=sT;break;case 1:f=oT;break;case 2:f=vT;break;case 3:f=lT;break;case 4:f=bT;break;case 5:f=kT;break;case 6:f=pT;break;case 7:f=hT;break;case 8:f=dT;break;case 9:f=mT;break;case 10:f=yT;break;case 11:f=wT;break;case 12:f=gT;break;case 13:f=TT;break;case 14:f=_T;break;case 15:f=ST;break;case 16:f=AT;break;case 17:f=ET;break;case 18:f=xT;break;case 19:f=Rr(CT,IT);break;case 20:f=NT;break;case 21:f=RT;break;case 22:f=LT;break;case 23:f=PT;break;case 24:f=OT;break;case 25:f=UT;break;case 26:f=DT;break;case 27:f=MT;break;case 28:f=FT;break;case 29:f=XT;break;case 30:f=BT;break;case 31:f=jT;break;case 32:f=GT;break;default:f=qT;}}else switch(r[0]){case 0:f=Rr(x_,r[1]);break;case 1:f=Rr(I_,r[1]);break;case 2:var a=r[2],i=r[1],f=wr(Ge(C_),i,a);break;case 3:f=Rr(R_,Rr(r[1],N_));break;case 4:f=Rr(P_,Rr(r[1],L_));break;case 5:f=Rr(r[1],Rr(U_,Rr(r[2],O_)));break;case 6:f=Rr(D_,r[1]);break;default:var c=r[1],f=yr(Ge(M_),c);}var s=f.toString();return{loc:u(e),message:s}},Ft),Mt},r1=function(t){return t[1]===_$?yr(A$,t[2]):yr(A$,new S$(Rr(UK,function(r){for(d=r;;){if(!d){if(t===tm)return Kw;if(t===um)return $w;if(t[1]===am){var e=t[2],n=e[3],a=e[2],u=e[1];return _r(Ge(cm),u,a,n,n+5|0,Qw)}if(t[1]===im){var i=t[2],f=i[3],c=i[2],s=i[1];return _r(Ge(cm),s,c,f,f+6|0,Zw)}if(t[1]===fm){var o=t[2],v=o[3],l=o[2],b=o[1];return _r(Ge(cm),b,l,v,v+6|0,tg)}return 0===ar(t)?Rr(t[1][1],Je(t)):t[1]}var k=d[2],p=d[1];try{h=yr(p,t);}catch(t){var h=0;}if(h)return h[1];var d=k;}}(WK[1])).toString()))};return r.parse=function(t,r){try{return t1(t,r)}catch(r){return r=mr(r),r1(r)}},void function(t){yr(XK[1],0);}()}var e1=p$;}else var n1=k$;}else var a1=b$;}else v$=l$;}}(function(){return this}());});const createError=parserCreateError;var parserFlow=parse;var parserFlow_1=parserFlow; + +return parserFlow_1; + +}()); diff --git a/docs/parser-postcss.js b/docs/parser-postcss.js new file mode 100644 index 00000000..e45d0102 --- /dev/null +++ b/docs/parser-postcss.js @@ -0,0 +1,25133 @@ +var postcss = (function () { +function unwrapExports (x) { + return x && x.__esModule ? x['default'] : x; +} + +function createCommonjsModule(fn, module) { + return module = { exports: {} }, fn(module, module.exports), module.exports; +} + +var parserPostcss = createCommonjsModule(function (module) { +module.exports = +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // identity function for calling harmony imports with the correct context +/******/ __webpack_require__.i = function(value) { return value; }; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 157); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; +var TAG = exports.TAG = 'tag'; +var STRING = exports.STRING = 'string'; +var SELECTOR = exports.SELECTOR = 'selector'; +var ROOT = exports.ROOT = 'root'; +var PSEUDO = exports.PSEUDO = 'pseudo'; +var NESTING = exports.NESTING = 'nesting'; +var ID = exports.ID = 'id'; +var COMMENT = exports.COMMENT = 'comment'; +var COMBINATOR = exports.COMBINATOR = 'combinator'; +var CLASS = exports.CLASS = 'class'; +var ATTRIBUTE = exports.ATTRIBUTE = 'attribute'; +var UNIVERSAL = exports.UNIVERSAL = 'universal'; + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const Node = __webpack_require__(4); + +class Container extends Node { + + constructor (opts) { + super(opts); + + if (!this.nodes) { + this.nodes = []; + } + } + + push (child) { + child.parent = this; + this.nodes.push(child); + return this; + } + + each (callback) { + if (!this.lastEach) this.lastEach = 0; + if (!this.indexes) this.indexes = { }; + + this.lastEach += 1; + + let id = this.lastEach, + index, + result; + + this.indexes[id] = 0; + + if (!this.nodes) return undefined; + + while (this.indexes[id] < this.nodes.length) { + index = this.indexes[id]; + result = callback(this.nodes[index], index); + if (result === false) break; + + this.indexes[id] += 1; + } + + delete this.indexes[id]; + + return result; + } + + walk (callback) { + return this.each((child, i) => { + let result = callback(child, i); + if (result !== false && child.walk) { + result = child.walk(callback); + } + return result; + }); + } + + walkType (type, callback) { + if (!type || !callback) { + throw new Error('Parameters {type} and {callback} are required.'); + } + + // allow users to pass a constructor, or node type string; eg. Word. + type = type.name && type.prototype ? type.name : type; + + return this.walk((node, index) => { + if (node.type === type) { + return callback.call(this, node, index); + } + }); + } + + append (node) { + node.parent = this; + this.nodes.push(node); + return this; + } + + prepend (node) { + node.parent = this; + this.nodes.unshift(node); + return this; + } + + cleanRaws (keepBetween) { + super.cleanRaws(keepBetween); + if (this.nodes) { + for (let node of this.nodes) node.cleanRaws(keepBetween); + } + } + + insertAfter (oldNode, newNode) { + let oldIndex = this.index(oldNode), + index; + + this.nodes.splice(oldIndex + 1, 0, newNode); + + for (let id in this.indexes) { + index = this.indexes[id]; + if (oldIndex <= index) { + this.indexes[id] = index + this.nodes.length; + } + } + + return this; + } + + insertBefore (oldNode, newNode) { + let oldIndex = this.index(oldNode), + index; + + this.nodes.splice(oldIndex, 0, newNode); + + for (let id in this.indexes) { + index = this.indexes[id]; + if (oldIndex <= index) { + this.indexes[id] = index + this.nodes.length; + } + } + + return this; + } + + removeChild (child) { + child = this.index(child); + this.nodes[child].parent = undefined; + this.nodes.splice(child, 1); + + let index; + for (let id in this.indexes) { + index = this.indexes[id]; + if (index >= child) { + this.indexes[id] = index - 1; + } + } + + return this; + } + + removeAll () { + for (let node of this.nodes) node.parent = undefined; + this.nodes = []; + return this; + } + + every (condition) { + return this.nodes.every(condition); + } + + some (condition) { + return this.nodes.some(condition); + } + + index (child) { + if (typeof child === 'number') { + return child; + } + else { + return this.nodes.indexOf(child); + } + } + + get first () { + if (!this.nodes) return undefined; + return this.nodes[0]; + } + + get last () { + if (!this.nodes) return undefined; + return this.nodes[this.nodes.length - 1]; + } + + toString () { + let result = this.nodes.map(String).join(''); + + if (this.value) { + result = this.value + result; + } + + if (this.raws.before) { + result = this.raws.before + result; + } + + if (this.raws.after) { + result += this.raws.after; + } + + return result; + } +} + +Container.registerWalker = (constructor) => { + let walkerName = 'walk' + constructor.name; + + // plural sugar + if (walkerName.lastIndexOf('s') !== walkerName.length - 1) { + walkerName += 's'; + } + + if (Container.prototype[walkerName]) { + return; + } + + // we need access to `this` so we can't use an arrow function + Container.prototype[walkerName] = function (callback) { + return this.walkType(constructor, callback); + }; +}; + +module.exports = Container; + + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var singleQuote = exports.singleQuote = '\''.charCodeAt(0); +var doubleQuote = exports.doubleQuote = '"'.charCodeAt(0); +var backslash = exports.backslash = '\\'.charCodeAt(0); +var backTick = exports.backTick = '`'.charCodeAt(0); +var slash = exports.slash = '/'.charCodeAt(0); +var newline = exports.newline = '\n'.charCodeAt(0); +var space = exports.space = ' '.charCodeAt(0); +var feed = exports.feed = '\f'.charCodeAt(0); +var tab = exports.tab = '\t'.charCodeAt(0); +var carriageReturn = exports.carriageReturn = '\r'.charCodeAt(0); +var openedParenthesis = exports.openedParenthesis = '('.charCodeAt(0); +var closedParenthesis = exports.closedParenthesis = ')'.charCodeAt(0); +var openedCurlyBracket = exports.openedCurlyBracket = '{'.charCodeAt(0); +var closedCurlyBracket = exports.closedCurlyBracket = '}'.charCodeAt(0); +var openSquareBracket = exports.openSquareBracket = '['.charCodeAt(0); +var closeSquareBracket = exports.closeSquareBracket = ']'.charCodeAt(0); +var semicolon = exports.semicolon = ';'.charCodeAt(0); +var asterisk = exports.asterisk = '*'.charCodeAt(0); +var colon = exports.colon = ':'.charCodeAt(0); +var comma = exports.comma = ','.charCodeAt(0); +var dot = exports.dot = '.'.charCodeAt(0); +var atRule = exports.atRule = '@'.charCodeAt(0); +var tilde = exports.tilde = '~'.charCodeAt(0); +var hash = exports.hash = '#'.charCodeAt(0); + +var atEndPattern = exports.atEndPattern = /[ \n\t\r\f\{\(\)'"\\;/\[\]#]/g; +var wordEndPattern = exports.wordEndPattern = /[ \n\t\r\f\(\)\{\}:,;@!'"\\\]\[#]|\/(?=\*)/g; +var badBracketPattern = exports.badBracketPattern = /.[\\\/\("'\n]/; + +var variablePattern = exports.variablePattern = /^@[^:\(\{]+:/; +var hashColorPattern = exports.hashColorPattern = /^#[0-9a-fA-F]{6}$|^#[0-9a-fA-F]{3}$/; + +/***/ }), +/* 3 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; +exports.default = warnOnce; +var printed = {}; + +function warnOnce(message) { + if (printed[message]) return; + printed[message] = true; + + if (typeof console !== 'undefined' && console.warn) console.warn(message); +} +module.exports = exports['default']; + + + +/***/ }), +/* 4 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +let cloneNode = function (obj, parent) { + let cloned = new obj.constructor(); + + for (let i in obj) { + if (!obj.hasOwnProperty(i)) continue; + + let value = obj[i], + type = typeof value; + + if (i === 'parent' && type === 'object') { + if (parent) cloned[i] = parent; + } + else if (i === 'source') { + cloned[i] = value; + } + else if (value instanceof Array) { + cloned[i] = value.map(j => cloneNode(j, cloned)); + } + else if (i !== 'before' && i !== 'after' && i !== 'between' && i !== 'semicolon') { + if (type === 'object' && value !== null) value = cloneNode(value); + cloned[i] = value; + } + } + + return cloned; +}; + +module.exports = class Node { + + constructor (defaults) { + defaults = defaults || {}; + this.raws = { before: '', after: '' }; + + for (let name in defaults) { + this[name] = defaults[name]; + } + } + + remove () { + if (this.parent) { + this.parent.removeChild(this); + } + + this.parent = undefined; + + return this; + } + + toString () { + return [ + this.raws.before, + String(this.value), + this.raws.after + ].join(''); + } + + clone (overrides) { + overrides = overrides || {}; + + let cloned = cloneNode(this); + + for (let name in overrides) { + cloned[name] = overrides[name]; + } + + return cloned; + } + + cloneBefore (overrides) { + overrides = overrides || {}; + + let cloned = this.clone(overrides); + + this.parent.insertBefore(this, cloned); + return cloned; + } + + cloneAfter (overrides) { + overrides = overrides || {}; + + let cloned = this.clone(overrides); + + this.parent.insertAfter(this, cloned); + return cloned; + } + + replaceWith () { + let nodes = Array.prototype.slice.call(arguments); + + if (this.parent) { + for (let node of nodes) { + this.parent.insertBefore(this, node); + } + + this.remove(); + } + + return this; + } + + moveTo (container) { + this.cleanRaws(this.root() === container.root()); + this.remove(); + + container.append(this); + + return this; + } + + moveBefore (node) { + this.cleanRaws(this.root() === node.root()); + this.remove(); + + node.parent.insertBefore(node, this); + + return this; + } + + moveAfter (node) { + this.cleanRaws(this.root() === node.root()); + this.remove(); + node.parent.insertAfter(node, this); + return this; + } + + next () { + let index = this.parent.index(this); + + return this.parent.nodes[index + 1]; + } + + prev () { + let index = this.parent.index(this); + + return this.parent.nodes[index - 1]; + } + + toJSON () { + let fixed = { }; + + for (let name in this) { + if (!this.hasOwnProperty(name)) continue; + if (name === 'parent') continue; + let value = this[name]; + + if (value instanceof Array) { + fixed[name] = value.map(i => { + if (typeof i === 'object' && i.toJSON) { + return i.toJSON(); + } + else { + return i; + } + }); + } + else if (typeof value === 'object' && value.toJSON) { + fixed[name] = value.toJSON(); + } + else { + fixed[name] = value; + } + } + + return fixed; + } + + root () { + let result = this; + + while (result.parent) result = result.parent; + + return result; + } + + cleanRaws (keepBetween) { + delete this.raws.before; + delete this.raws.after; + if (!keepBetween) delete this.raws.between; + } + + positionInside (index) { + let string = this.toString(), + column = this.source.start.column, + line = this.source.start.line; + + for (let i = 0; i < index; i++) { + if (string[i] === '\n') { + column = 1; + line += 1; + } + else { + column += 1; + } + } + + return { line, column }; + } + + positionBy (opts) { + let pos = this.source.start; + + if (opts.index) { + pos = this.positionInside(opts.index); + } + else if (opts.word) { + let index = this.toString().indexOf(opts.word); + if (index !== -1) pos = this.positionInside(index); + } + + return pos; + } +}; + + +/***/ }), +/* 5 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(process) {// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// resolves . and .. elements in a path array with directory names there +// must be no slashes, empty elements, or device names (c:\) in the array +// (so also no leading and trailing slashes - it does not distinguish +// relative and absolute paths) +function normalizeArray(parts, allowAboveRoot) { + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; + for (var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + if (last === '.') { + parts.splice(i, 1); + } else if (last === '..') { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } + + // if the path is allowed to go above the root, restore leading ..s + if (allowAboveRoot) { + for (; up--; up) { + parts.unshift('..'); + } + } + + return parts; +} + +// Split a filename into [root, dir, basename, ext], unix version +// 'root' is just a slash, or nothing. +var splitPathRe = + /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; +var splitPath = function(filename) { + return splitPathRe.exec(filename).slice(1); +}; + +// path.resolve([from ...], to) +// posix version +exports.resolve = function() { + var resolvedPath = '', + resolvedAbsolute = false; + + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = (i >= 0) ? arguments[i] : process.cwd(); + + // Skip empty and invalid entries + if (typeof path !== 'string') { + throw new TypeError('Arguments to path.resolve must be strings'); + } else if (!path) { + continue; + } + + resolvedPath = path + '/' + resolvedPath; + resolvedAbsolute = path.charAt(0) === '/'; + } + + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + + // Normalize the path + resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) { + return !!p; + }), !resolvedAbsolute).join('/'); + + return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; +}; + +// path.normalize(path) +// posix version +exports.normalize = function(path) { + var isAbsolute = exports.isAbsolute(path), + trailingSlash = substr(path, -1) === '/'; + + // Normalize the path + path = normalizeArray(filter(path.split('/'), function(p) { + return !!p; + }), !isAbsolute).join('/'); + + if (!path && !isAbsolute) { + path = '.'; + } + if (path && trailingSlash) { + path += '/'; + } + + return (isAbsolute ? '/' : '') + path; +}; + +// posix version +exports.isAbsolute = function(path) { + return path.charAt(0) === '/'; +}; + +// posix version +exports.join = function() { + var paths = Array.prototype.slice.call(arguments, 0); + return exports.normalize(filter(paths, function(p, index) { + if (typeof p !== 'string') { + throw new TypeError('Arguments to path.join must be strings'); + } + return p; + }).join('/')); +}; + + +// path.relative(from, to) +// posix version +exports.relative = function(from, to) { + from = exports.resolve(from).substr(1); + to = exports.resolve(to).substr(1); + + function trim(arr) { + var start = 0; + for (; start < arr.length; start++) { + if (arr[start] !== '') break; + } + + var end = arr.length - 1; + for (; end >= 0; end--) { + if (arr[end] !== '') break; + } + + if (start > end) return []; + return arr.slice(start, end - start + 1); + } + + var fromParts = trim(from.split('/')); + var toParts = trim(to.split('/')); + + var length = Math.min(fromParts.length, toParts.length); + var samePartsLength = length; + for (var i = 0; i < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; + } + } + + var outputParts = []; + for (var i = samePartsLength; i < fromParts.length; i++) { + outputParts.push('..'); + } + + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + + return outputParts.join('/'); +}; + +exports.sep = '/'; +exports.delimiter = ':'; + +exports.dirname = function(path) { + var result = splitPath(path), + root = result[0], + dir = result[1]; + + if (!root && !dir) { + // No dirname whatsoever + return '.'; + } + + if (dir) { + // It has a dirname, strip trailing slash + dir = dir.substr(0, dir.length - 1); + } + + return root + dir; +}; + + +exports.basename = function(path, ext) { + var f = splitPath(path)[2]; + // TODO: make this comparison case-insensitive on windows? + if (ext && f.substr(-1 * ext.length) === ext) { + f = f.substr(0, f.length - ext.length); + } + return f; +}; + + +exports.extname = function(path) { + return splitPath(path)[3]; +}; + +function filter (xs, f) { + if (xs.filter) return xs.filter(f); + var res = []; + for (var i = 0; i < xs.length; i++) { + if (f(xs[i], i, xs)) res.push(xs[i]); + } + return res; +} + +// String.prototype.substr - negative index don't work in IE8 +var substr = 'ab'.substr(-1) === 'b' + ? function (str, start, len) { return str.substr(start, len) } + : function (str, start, len) { + if (start < 0) start = str.length + start; + return str.substr(start, len); + }; + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(13))); + +/***/ }), +/* 6 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var cloneNode = function cloneNode(obj, parent) { + if ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) !== 'object') { + return obj; + } + + var cloned = new obj.constructor(); + + for (var i in obj) { + if (!obj.hasOwnProperty(i)) { + continue; + } + var value = obj[i]; + var type = typeof value === 'undefined' ? 'undefined' : _typeof(value); + + if (i === 'parent' && type === 'object') { + if (parent) { + cloned[i] = parent; + } + } else if (value instanceof Array) { + cloned[i] = value.map(function (j) { + return cloneNode(j, cloned); + }); + } else { + cloned[i] = cloneNode(value, cloned); + } + } + + return cloned; +}; + +var _class = function () { + function _class() { + var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + _classCallCheck(this, _class); + + for (var key in opts) { + this[key] = opts[key]; + } + var _opts$spaces = opts.spaces; + _opts$spaces = _opts$spaces === undefined ? {} : _opts$spaces; + var _opts$spaces$before = _opts$spaces.before, + before = _opts$spaces$before === undefined ? '' : _opts$spaces$before, + _opts$spaces$after = _opts$spaces.after, + after = _opts$spaces$after === undefined ? '' : _opts$spaces$after; + + this.spaces = { before: before, after: after }; + } + + _class.prototype.remove = function remove() { + if (this.parent) { + this.parent.removeChild(this); + } + this.parent = undefined; + return this; + }; + + _class.prototype.replaceWith = function replaceWith() { + if (this.parent) { + for (var index in arguments) { + this.parent.insertBefore(this, arguments[index]); + } + this.remove(); + } + return this; + }; + + _class.prototype.next = function next() { + return this.parent.at(this.parent.index(this) + 1); + }; + + _class.prototype.prev = function prev() { + return this.parent.at(this.parent.index(this) - 1); + }; + + _class.prototype.clone = function clone() { + var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + var cloned = cloneNode(this); + for (var name in overrides) { + cloned[name] = overrides[name]; + } + return cloned; + }; + + _class.prototype.toString = function toString() { + return [this.spaces.before, String(this.value), this.spaces.after].join(''); + }; + + return _class; +}(); + +exports.default = _class; +module.exports = exports['default']; + +/***/ }), +/* 7 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = unclosed; +function unclosed(state, what) { + throw state.input.error("Unclosed " + what, state.line, state.pos - state.offset); +} +module.exports = exports["default"]; + +/***/ }), +/* 8 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _container = __webpack_require__(19); + +var _container2 = _interopRequireDefault(_container); + +var _warnOnce = __webpack_require__(3); + +var _warnOnce2 = _interopRequireDefault(_warnOnce); + +var _list = __webpack_require__(115); + +var _list2 = _interopRequireDefault(_list); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/** + * Represents a CSS rule: a selector followed by a declaration block. + * + * @extends Container + * + * @example + * const root = postcss.parse('a{}'); + * const rule = root.first; + * rule.type //=> 'rule' + * rule.toString() //=> 'a{}' + */ +var Rule = function (_Container) { + _inherits(Rule, _Container); + + function Rule(defaults) { + _classCallCheck(this, Rule); + + var _this = _possibleConstructorReturn(this, _Container.call(this, defaults)); + + _this.type = 'rule'; + if (!_this.nodes) _this.nodes = []; + return _this; + } + + /** + * An array containing the rule’s individual selectors. + * Groups of selectors are split at commas. + * + * @type {string[]} + * + * @example + * const root = postcss.parse('a, b { }'); + * const rule = root.first; + * + * rule.selector //=> 'a, b' + * rule.selectors //=> ['a', 'b'] + * + * rule.selectors = ['a', 'strong']; + * rule.selector //=> 'a, strong' + */ + + + _createClass(Rule, [{ + key: 'selectors', + get: function get() { + return _list2.default.comma(this.selector); + }, + set: function set(values) { + var match = this.selector ? this.selector.match(/,\s*/) : null; + var sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen'); + this.selector = values.join(sep); + } + }, { + key: '_selector', + get: function get() { + (0, _warnOnce2.default)('Rule#_selector is deprecated. Use Rule#raws.selector'); + return this.raws.selector; + }, + set: function set(val) { + (0, _warnOnce2.default)('Rule#_selector is deprecated. Use Rule#raws.selector'); + this.raws.selector = val; + } + + /** + * @memberof Rule# + * @member {string} selector - the rule’s full selector represented + * as a string + * + * @example + * const root = postcss.parse('a, b { }'); + * const rule = root.first; + * rule.selector //=> 'a, b' + */ + + /** + * @memberof Rule# + * @member {object} raws - Information to generate byte-to-byte equal + * node string as it was in the origin input. + * + * Every parser saves its own properties, + * but the default CSS parser uses: + * + * * `before`: the space symbols before the node. It also stores `*` + * and `_` symbols before the declaration (IE hack). + * * `after`: the space symbols after the last child of the node + * to the end of the node. + * * `between`: the symbols between the property and value + * for declarations, selector and `{` for rules, or last parameter + * and `{` for at-rules. + * * `semicolon`: contains true if the last child has + * an (optional) semicolon. + * + * PostCSS cleans selectors from comments and extra spaces, + * but it stores origin content in raws properties. + * As such, if you don’t change a declaration’s value, + * PostCSS will use the raw value with comments. + * + * @example + * const root = postcss.parse('a {\n color:black\n}') + * root.first.first.raws //=> { before: '', between: ' ', after: '\n' } + */ + + }]); + + return Rule; +}(_container2.default); + +exports.default = Rule; +module.exports = exports['default']; + + + +/***/ }), +/* 9 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _node = __webpack_require__(6); + +var _node2 = _interopRequireDefault(_node); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Namespace = function (_Node) { + _inherits(Namespace, _Node); + + function Namespace() { + _classCallCheck(this, Namespace); + + return _possibleConstructorReturn(this, _Node.apply(this, arguments)); + } + + Namespace.prototype.toString = function toString() { + return [this.spaces.before, this.ns, String(this.value), this.spaces.after].join(''); + }; + + _createClass(Namespace, [{ + key: 'ns', + get: function get() { + var n = this.namespace; + return n ? (typeof n === 'string' ? n : '') + '|' : ''; + } + }]); + + return Namespace; +}(_node2.default); + +exports.default = Namespace; + +module.exports = exports['default']; + +/***/ }), +/* 10 */ +/***/ (function(module, exports) { + +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +/** + * This is a helper function for getting values from parameter/options + * objects. + * + * @param args The object we are extracting values from + * @param name The name of the property we are getting. + * @param defaultValue An optional value to return if the property is missing + * from the object. If this is not specified and the property is missing, an + * error will be thrown. + */ +function getArg(aArgs, aName, aDefaultValue) { + if (aName in aArgs) { + return aArgs[aName]; + } else if (arguments.length === 3) { + return aDefaultValue; + } else { + throw new Error('"' + aName + '" is a required argument.'); + } +} +exports.getArg = getArg; + +var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/; +var dataUrlRegexp = /^data:.+\,.+$/; + +function urlParse(aUrl) { + var match = aUrl.match(urlRegexp); + if (!match) { + return null; + } + return { + scheme: match[1], + auth: match[2], + host: match[3], + port: match[4], + path: match[5] + }; +} +exports.urlParse = urlParse; + +function urlGenerate(aParsedUrl) { + var url = ''; + if (aParsedUrl.scheme) { + url += aParsedUrl.scheme + ':'; + } + url += '//'; + if (aParsedUrl.auth) { + url += aParsedUrl.auth + '@'; + } + if (aParsedUrl.host) { + url += aParsedUrl.host; + } + if (aParsedUrl.port) { + url += ":" + aParsedUrl.port; + } + if (aParsedUrl.path) { + url += aParsedUrl.path; + } + return url; +} +exports.urlGenerate = urlGenerate; + +/** + * Normalizes a path, or the path portion of a URL: + * + * - Replaces consecutive slashes with one slash. + * - Removes unnecessary '.' parts. + * - Removes unnecessary '/..' parts. + * + * Based on code in the Node.js 'path' core module. + * + * @param aPath The path or url to normalize. + */ +function normalize(aPath) { + var path = aPath; + var url = urlParse(aPath); + if (url) { + if (!url.path) { + return aPath; + } + path = url.path; + } + var isAbsolute = exports.isAbsolute(path); + + var parts = path.split(/\/+/); + for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { + part = parts[i]; + if (part === '.') { + parts.splice(i, 1); + } else if (part === '..') { + up++; + } else if (up > 0) { + if (part === '') { + // The first part is blank if the path is absolute. Trying to go + // above the root is a no-op. Therefore we can remove all '..' parts + // directly after the root. + parts.splice(i + 1, up); + up = 0; + } else { + parts.splice(i, 2); + up--; + } + } + } + path = parts.join('/'); + + if (path === '') { + path = isAbsolute ? '/' : '.'; + } + + if (url) { + url.path = path; + return urlGenerate(url); + } + return path; +} +exports.normalize = normalize; + +/** + * Joins two paths/URLs. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be joined with the root. + * + * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a + * scheme-relative URL: Then the scheme of aRoot, if any, is prepended + * first. + * - Otherwise aPath is a path. If aRoot is a URL, then its path portion + * is updated with the result and aRoot is returned. Otherwise the result + * is returned. + * - If aPath is absolute, the result is aPath. + * - Otherwise the two paths are joined with a slash. + * - Joining for example 'http://' and 'www.example.com' is also supported. + */ +function join(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + if (aPath === "") { + aPath = "."; + } + var aPathUrl = urlParse(aPath); + var aRootUrl = urlParse(aRoot); + if (aRootUrl) { + aRoot = aRootUrl.path || '/'; + } + + // `join(foo, '//www.example.org')` + if (aPathUrl && !aPathUrl.scheme) { + if (aRootUrl) { + aPathUrl.scheme = aRootUrl.scheme; + } + return urlGenerate(aPathUrl); + } + + if (aPathUrl || aPath.match(dataUrlRegexp)) { + return aPath; + } + + // `join('http://', 'www.example.com')` + if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { + aRootUrl.host = aPath; + return urlGenerate(aRootUrl); + } + + var joined = aPath.charAt(0) === '/' + ? aPath + : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); + + if (aRootUrl) { + aRootUrl.path = joined; + return urlGenerate(aRootUrl); + } + return joined; +} +exports.join = join; + +exports.isAbsolute = function (aPath) { + return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp); +}; + +/** + * Make a path relative to a URL or another path. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be made relative to aRoot. + */ +function relative(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + + aRoot = aRoot.replace(/\/$/, ''); + + // It is possible for the path to be above the root. In this case, simply + // checking whether the root is a prefix of the path won't work. Instead, we + // need to remove components from the root one by one, until either we find + // a prefix that fits, or we run out of components to remove. + var level = 0; + while (aPath.indexOf(aRoot + '/') !== 0) { + var index = aRoot.lastIndexOf("/"); + if (index < 0) { + return aPath; + } + + // If the only part of the root that is left is the scheme (i.e. http://, + // file:///, etc.), one or more slashes (/), or simply nothing at all, we + // have exhausted all components, so the path is not relative to the root. + aRoot = aRoot.slice(0, index); + if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { + return aPath; + } + + ++level; + } + + // Make sure we add a "../" for each component we removed from the root. + return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); +} +exports.relative = relative; + +var supportsNullProto = (function () { + var obj = Object.create(null); + return !('__proto__' in obj); +}()); + +function identity (s) { + return s; +} + +/** + * Because behavior goes wacky when you set `__proto__` on objects, we + * have to prefix all the strings in our set with an arbitrary character. + * + * See https://github.com/mozilla/source-map/pull/31 and + * https://github.com/mozilla/source-map/issues/30 + * + * @param String aStr + */ +function toSetString(aStr) { + if (isProtoString(aStr)) { + return '$' + aStr; + } + + return aStr; +} +exports.toSetString = supportsNullProto ? identity : toSetString; + +function fromSetString(aStr) { + if (isProtoString(aStr)) { + return aStr.slice(1); + } + + return aStr; +} +exports.fromSetString = supportsNullProto ? identity : fromSetString; + +function isProtoString(s) { + if (!s) { + return false; + } + + var length = s.length; + + if (length < 9 /* "__proto__".length */) { + return false; + } + + if (s.charCodeAt(length - 1) !== 95 /* '_' */ || + s.charCodeAt(length - 2) !== 95 /* '_' */ || + s.charCodeAt(length - 3) !== 111 /* 'o' */ || + s.charCodeAt(length - 4) !== 116 /* 't' */ || + s.charCodeAt(length - 5) !== 111 /* 'o' */ || + s.charCodeAt(length - 6) !== 114 /* 'r' */ || + s.charCodeAt(length - 7) !== 112 /* 'p' */ || + s.charCodeAt(length - 8) !== 95 /* '_' */ || + s.charCodeAt(length - 9) !== 95 /* '_' */) { + return false; + } + + for (var i = length - 10; i >= 0; i--) { + if (s.charCodeAt(i) !== 36 /* '$' */) { + return false; + } + } + + return true; +} + +/** + * Comparator between two mappings where the original positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same original source/line/column, but different generated + * line and column the same. Useful when searching for a mapping with a + * stubbed out mapping. + */ +function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { + var cmp = mappingA.source - mappingB.source; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0 || onlyCompareOriginal) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + return mappingA.name - mappingB.name; +} +exports.compareByOriginalPositions = compareByOriginalPositions; + +/** + * Comparator between two mappings with deflated source and name indices where + * the generated positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same generated line and column, but different + * source/name/original line and column the same. Useful when searching for a + * mapping with a stubbed out mapping. + */ +function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0 || onlyCompareGenerated) { + return cmp; + } + + cmp = mappingA.source - mappingB.source; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return mappingA.name - mappingB.name; +} +exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; + +function strcmp(aStr1, aStr2) { + if (aStr1 === aStr2) { + return 0; + } + + if (aStr1 > aStr2) { + return 1; + } + + return -1; +} + +/** + * Comparator between two mappings with inflated source and name strings where + * the generated positions are compared. + */ +function compareByGeneratedPositionsInflated(mappingA, mappingB) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); +} +exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; + + +/***/ }), +/* 11 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(process) { +var escapeStringRegexp = __webpack_require__(90); +var ansiStyles = __webpack_require__(88); +var stripAnsi = __webpack_require__(152); +var hasAnsi = __webpack_require__(91); +var supportsColor = __webpack_require__(89); +var defineProps = Object.defineProperties; +var isSimpleWindowsTerm = process.platform === 'win32' && !/^xterm/i.test(process.env.TERM); + +function Chalk(options) { + // detect mode if not set manually + this.enabled = !options || options.enabled === undefined ? supportsColor : options.enabled; +} + +// use bright blue on Windows as the normal blue color is illegible +if (isSimpleWindowsTerm) { + ansiStyles.blue.open = '\u001b[94m'; +} + +var styles = (function () { + var ret = {}; + + Object.keys(ansiStyles).forEach(function (key) { + ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g'); + + ret[key] = { + get: function () { + return build.call(this, this._styles.concat(key)); + } + }; + }); + + return ret; +})(); + +var proto = defineProps(function chalk() {}, styles); + +function build(_styles) { + var builder = function () { + return applyStyle.apply(builder, arguments); + }; + + builder._styles = _styles; + builder.enabled = this.enabled; + // __proto__ is used because we must return a function, but there is + // no way to create a function with a different prototype. + /* eslint-disable no-proto */ + builder.__proto__ = proto; + + return builder; +} + +function applyStyle() { + // support varags, but simply cast to string in case there's only one arg + var args = arguments; + var argsLen = args.length; + var str = argsLen !== 0 && String(arguments[0]); + + if (argsLen > 1) { + // don't slice `arguments`, it prevents v8 optimizations + for (var a = 1; a < argsLen; a++) { + str += ' ' + args[a]; + } + } + + if (!this.enabled || !str) { + return str; + } + + var nestedStyles = this._styles; + var i = nestedStyles.length; + + // Turns out that on Windows dimmed gray text becomes invisible in cmd.exe, + // see https://github.com/chalk/chalk/issues/58 + // If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop. + var originalDim = ansiStyles.dim.open; + if (isSimpleWindowsTerm && (nestedStyles.indexOf('gray') !== -1 || nestedStyles.indexOf('grey') !== -1)) { + ansiStyles.dim.open = ''; + } + + while (i--) { + var code = ansiStyles[nestedStyles[i]]; + + // Replace any instances already present with a re-opening code + // otherwise only the part of the string until said closing code + // will be colored, and the rest will simply be 'plain'. + str = code.open + str.replace(code.closeRe, code.open) + code.close; + } + + // Reset the original 'dim' if we changed it to work around the Windows dimmed gray issue. + ansiStyles.dim.open = originalDim; + + return str; +} + +function init() { + var ret = {}; + + Object.keys(styles).forEach(function (name) { + ret[name] = { + get: function () { + return build.call(this, [name]); + } + }; + }); + + return ret; +} + +defineProps(Chalk.prototype, init()); + +module.exports = new Chalk(); +module.exports.styles = ansiStyles; +module.exports.hasColor = hasAnsi; +module.exports.stripColor = stripAnsi; +module.exports.supportsColor = supportsColor; + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(13))); + +/***/ }), +/* 12 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _declaration = __webpack_require__(68); + +var _declaration2 = _interopRequireDefault(_declaration); + +var _comment = __webpack_require__(25); + +var _comment2 = _interopRequireDefault(_comment); + +var _node = __webpack_require__(27); + +var _node2 = _interopRequireDefault(_node); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +function cleanSource(nodes) { + return nodes.map(function (i) { + if (i.nodes) i.nodes = cleanSource(i.nodes); + delete i.source; + return i; + }); +} + +/** + * The {@link Root}, {@link AtRule}, and {@link Rule} container nodes + * inherit some common methods to help work with their children. + * + * Note that all containers can store any content. If you write a rule inside + * a rule, PostCSS will parse it. + * + * @extends Node + * @abstract + */ + +var Container = function (_Node) { + _inherits(Container, _Node); + + function Container() { + _classCallCheck(this, Container); + + return _possibleConstructorReturn(this, _Node.apply(this, arguments)); + } + + Container.prototype.push = function push(child) { + child.parent = this; + this.nodes.push(child); + return this; + }; + + /** + * Iterates through the container’s immediate children, + * calling `callback` for each child. + * + * Returning `false` in the callback will break iteration. + * + * This method only iterates through the container’s immediate children. + * If you need to recursively iterate through all the container’s descendant + * nodes, use {@link Container#walk}. + * + * Unlike the for `{}`-cycle or `Array#forEach` this iterator is safe + * if you are mutating the array of child nodes during iteration. + * PostCSS will adjust the current index to match the mutations. + * + * @param {childIterator} callback - iterator receives each node and index + * + * @return {false|undefined} returns `false` if iteration was broke + * + * @example + * const root = postcss.parse('a { color: black; z-index: 1 }'); + * const rule = root.first; + * + * for ( let decl of rule.nodes ) { + * decl.cloneBefore({ prop: '-webkit-' + decl.prop }); + * // Cycle will be infinite, because cloneBefore moves the current node + * // to the next index + * } + * + * rule.each(decl => { + * decl.cloneBefore({ prop: '-webkit-' + decl.prop }); + * // Will be executed only for color and z-index + * }); + */ + + + Container.prototype.each = function each(callback) { + if (!this.lastEach) this.lastEach = 0; + if (!this.indexes) this.indexes = {}; + + this.lastEach += 1; + var id = this.lastEach; + this.indexes[id] = 0; + + if (!this.nodes) return undefined; + + var index = void 0, + result = void 0; + while (this.indexes[id] < this.nodes.length) { + index = this.indexes[id]; + result = callback(this.nodes[index], index); + if (result === false) break; + + this.indexes[id] += 1; + } + + delete this.indexes[id]; + + return result; + }; + + /** + * Traverses the container’s descendant nodes, calling callback + * for each node. + * + * Like container.each(), this method is safe to use + * if you are mutating arrays during iteration. + * + * If you only need to iterate through the container’s immediate children, + * use {@link Container#each}. + * + * @param {childIterator} callback - iterator receives each node and index + * + * @return {false|undefined} returns `false` if iteration was broke + * + * @example + * root.walk(node => { + * // Traverses all descendant nodes. + * }); + */ + + + Container.prototype.walk = function walk(callback) { + return this.each(function (child, i) { + var result = callback(child, i); + if (result !== false && child.walk) { + result = child.walk(callback); + } + return result; + }); + }; + + /** + * Traverses the container’s descendant nodes, calling callback + * for each declaration node. + * + * If you pass a filter, iteration will only happen over declarations + * with matching properties. + * + * Like {@link Container#each}, this method is safe + * to use if you are mutating arrays during iteration. + * + * @param {string|RegExp} [prop] - string or regular expression + * to filter declarations by property name + * @param {childIterator} callback - iterator receives each node and index + * + * @return {false|undefined} returns `false` if iteration was broke + * + * @example + * root.walkDecls(decl => { + * checkPropertySupport(decl.prop); + * }); + * + * root.walkDecls('border-radius', decl => { + * decl.remove(); + * }); + * + * root.walkDecls(/^background/, decl => { + * decl.value = takeFirstColorFromGradient(decl.value); + * }); + */ + + + Container.prototype.walkDecls = function walkDecls(prop, callback) { + if (!callback) { + callback = prop; + return this.walk(function (child, i) { + if (child.type === 'decl') { + return callback(child, i); + } + }); + } else if (prop instanceof RegExp) { + return this.walk(function (child, i) { + if (child.type === 'decl' && prop.test(child.prop)) { + return callback(child, i); + } + }); + } else { + return this.walk(function (child, i) { + if (child.type === 'decl' && child.prop === prop) { + return callback(child, i); + } + }); + } + }; + + /** + * Traverses the container’s descendant nodes, calling callback + * for each rule node. + * + * If you pass a filter, iteration will only happen over rules + * with matching selectors. + * + * Like {@link Container#each}, this method is safe + * to use if you are mutating arrays during iteration. + * + * @param {string|RegExp} [selector] - string or regular expression + * to filter rules by selector + * @param {childIterator} callback - iterator receives each node and index + * + * @return {false|undefined} returns `false` if iteration was broke + * + * @example + * const selectors = []; + * root.walkRules(rule => { + * selectors.push(rule.selector); + * }); + * console.log(`Your CSS uses ${selectors.length} selectors`); + */ + + + Container.prototype.walkRules = function walkRules(selector, callback) { + if (!callback) { + callback = selector; + + return this.walk(function (child, i) { + if (child.type === 'rule') { + return callback(child, i); + } + }); + } else if (selector instanceof RegExp) { + return this.walk(function (child, i) { + if (child.type === 'rule' && selector.test(child.selector)) { + return callback(child, i); + } + }); + } else { + return this.walk(function (child, i) { + if (child.type === 'rule' && child.selector === selector) { + return callback(child, i); + } + }); + } + }; + + /** + * Traverses the container’s descendant nodes, calling callback + * for each at-rule node. + * + * If you pass a filter, iteration will only happen over at-rules + * that have matching names. + * + * Like {@link Container#each}, this method is safe + * to use if you are mutating arrays during iteration. + * + * @param {string|RegExp} [name] - string or regular expression + * to filter at-rules by name + * @param {childIterator} callback - iterator receives each node and index + * + * @return {false|undefined} returns `false` if iteration was broke + * + * @example + * root.walkAtRules(rule => { + * if ( isOld(rule.name) ) rule.remove(); + * }); + * + * let first = false; + * root.walkAtRules('charset', rule => { + * if ( !first ) { + * first = true; + * } else { + * rule.remove(); + * } + * }); + */ + + + Container.prototype.walkAtRules = function walkAtRules(name, callback) { + if (!callback) { + callback = name; + return this.walk(function (child, i) { + if (child.type === 'atrule') { + return callback(child, i); + } + }); + } else if (name instanceof RegExp) { + return this.walk(function (child, i) { + if (child.type === 'atrule' && name.test(child.name)) { + return callback(child, i); + } + }); + } else { + return this.walk(function (child, i) { + if (child.type === 'atrule' && child.name === name) { + return callback(child, i); + } + }); + } + }; + + /** + * Traverses the container’s descendant nodes, calling callback + * for each comment node. + * + * Like {@link Container#each}, this method is safe + * to use if you are mutating arrays during iteration. + * + * @param {childIterator} callback - iterator receives each node and index + * + * @return {false|undefined} returns `false` if iteration was broke + * + * @example + * root.walkComments(comment => { + * comment.remove(); + * }); + */ + + + Container.prototype.walkComments = function walkComments(callback) { + return this.walk(function (child, i) { + if (child.type === 'comment') { + return callback(child, i); + } + }); + }; + + /** + * Inserts new nodes to the end of the container. + * + * @param {...(Node|object|string|Node[])} children - new nodes + * + * @return {Node} this node for methods chain + * + * @example + * const decl1 = postcss.decl({ prop: 'color', value: 'black' }); + * const decl2 = postcss.decl({ prop: 'background-color', value: 'white' }); + * rule.append(decl1, decl2); + * + * root.append({ name: 'charset', params: '"UTF-8"' }); // at-rule + * root.append({ selector: 'a' }); // rule + * rule.append({ prop: 'color', value: 'black' }); // declaration + * rule.append({ text: 'Comment' }) // comment + * + * root.append('a {}'); + * root.first.append('color: black; z-index: 1'); + */ + + + Container.prototype.append = function append() { + for (var _len = arguments.length, children = Array(_len), _key = 0; _key < _len; _key++) { + children[_key] = arguments[_key]; + } + + for (var _iterator = children, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + var child = _ref; + + var nodes = this.normalize(child, this.last); + for (var _iterator2 = nodes, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { + var _ref2; + + if (_isArray2) { + if (_i2 >= _iterator2.length) break; + _ref2 = _iterator2[_i2++]; + } else { + _i2 = _iterator2.next(); + if (_i2.done) break; + _ref2 = _i2.value; + } + + var node = _ref2; + this.nodes.push(node); + } + } + return this; + }; + + /** + * Inserts new nodes to the start of the container. + * + * @param {...(Node|object|string|Node[])} children - new nodes + * + * @return {Node} this node for methods chain + * + * @example + * const decl1 = postcss.decl({ prop: 'color', value: 'black' }); + * const decl2 = postcss.decl({ prop: 'background-color', value: 'white' }); + * rule.prepend(decl1, decl2); + * + * root.append({ name: 'charset', params: '"UTF-8"' }); // at-rule + * root.append({ selector: 'a' }); // rule + * rule.append({ prop: 'color', value: 'black' }); // declaration + * rule.append({ text: 'Comment' }) // comment + * + * root.append('a {}'); + * root.first.append('color: black; z-index: 1'); + */ + + + Container.prototype.prepend = function prepend() { + for (var _len2 = arguments.length, children = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + children[_key2] = arguments[_key2]; + } + + children = children.reverse(); + for (var _iterator3 = children, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { + var _ref3; + + if (_isArray3) { + if (_i3 >= _iterator3.length) break; + _ref3 = _iterator3[_i3++]; + } else { + _i3 = _iterator3.next(); + if (_i3.done) break; + _ref3 = _i3.value; + } + + var child = _ref3; + + var nodes = this.normalize(child, this.first, 'prepend').reverse(); + for (var _iterator4 = nodes, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { + var _ref4; + + if (_isArray4) { + if (_i4 >= _iterator4.length) break; + _ref4 = _iterator4[_i4++]; + } else { + _i4 = _iterator4.next(); + if (_i4.done) break; + _ref4 = _i4.value; + } + + var node = _ref4; + this.nodes.unshift(node); + }for (var id in this.indexes) { + this.indexes[id] = this.indexes[id] + nodes.length; + } + } + return this; + }; + + Container.prototype.cleanRaws = function cleanRaws(keepBetween) { + _Node.prototype.cleanRaws.call(this, keepBetween); + if (this.nodes) { + for (var _iterator5 = this.nodes, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) { + var _ref5; + + if (_isArray5) { + if (_i5 >= _iterator5.length) break; + _ref5 = _iterator5[_i5++]; + } else { + _i5 = _iterator5.next(); + if (_i5.done) break; + _ref5 = _i5.value; + } + + var node = _ref5; + node.cleanRaws(keepBetween); + } + } + }; + + /** + * Insert new node before old node within the container. + * + * @param {Node|number} exist - child or child’s index. + * @param {Node|object|string|Node[]} add - new node + * + * @return {Node} this node for methods chain + * + * @example + * rule.insertBefore(decl, decl.clone({ prop: '-webkit-' + decl.prop })); + */ + + + Container.prototype.insertBefore = function insertBefore(exist, add) { + exist = this.index(exist); + + var type = exist === 0 ? 'prepend' : false; + var nodes = this.normalize(add, this.nodes[exist], type).reverse(); + for (var _iterator6 = nodes, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) { + var _ref6; + + if (_isArray6) { + if (_i6 >= _iterator6.length) break; + _ref6 = _iterator6[_i6++]; + } else { + _i6 = _iterator6.next(); + if (_i6.done) break; + _ref6 = _i6.value; + } + + var node = _ref6; + this.nodes.splice(exist, 0, node); + }var index = void 0; + for (var id in this.indexes) { + index = this.indexes[id]; + if (exist <= index) { + this.indexes[id] = index + nodes.length; + } + } + + return this; + }; + + /** + * Insert new node after old node within the container. + * + * @param {Node|number} exist - child or child’s index + * @param {Node|object|string|Node[]} add - new node + * + * @return {Node} this node for methods chain + */ + + + Container.prototype.insertAfter = function insertAfter(exist, add) { + exist = this.index(exist); + + var nodes = this.normalize(add, this.nodes[exist]).reverse(); + for (var _iterator7 = nodes, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) { + var _ref7; + + if (_isArray7) { + if (_i7 >= _iterator7.length) break; + _ref7 = _iterator7[_i7++]; + } else { + _i7 = _iterator7.next(); + if (_i7.done) break; + _ref7 = _i7.value; + } + + var node = _ref7; + this.nodes.splice(exist + 1, 0, node); + }var index = void 0; + for (var id in this.indexes) { + index = this.indexes[id]; + if (exist < index) { + this.indexes[id] = index + nodes.length; + } + } + + return this; + }; + + /** + * Removes node from the container and cleans the parent properties + * from the node and its children. + * + * @param {Node|number} child - child or child’s index + * + * @return {Node} this node for methods chain + * + * @example + * rule.nodes.length //=> 5 + * rule.removeChild(decl); + * rule.nodes.length //=> 4 + * decl.parent //=> undefined + */ + + + Container.prototype.removeChild = function removeChild(child) { + child = this.index(child); + this.nodes[child].parent = undefined; + this.nodes.splice(child, 1); + + var index = void 0; + for (var id in this.indexes) { + index = this.indexes[id]; + if (index >= child) { + this.indexes[id] = index - 1; + } + } + + return this; + }; + + /** + * Removes all children from the container + * and cleans their parent properties. + * + * @return {Node} this node for methods chain + * + * @example + * rule.removeAll(); + * rule.nodes.length //=> 0 + */ + + + Container.prototype.removeAll = function removeAll() { + for (var _iterator8 = this.nodes, _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) { + var _ref8; + + if (_isArray8) { + if (_i8 >= _iterator8.length) break; + _ref8 = _iterator8[_i8++]; + } else { + _i8 = _iterator8.next(); + if (_i8.done) break; + _ref8 = _i8.value; + } + + var node = _ref8; + node.parent = undefined; + }this.nodes = []; + return this; + }; + + /** + * Passes all declaration values within the container that match pattern + * through callback, replacing those values with the returned result + * of callback. + * + * This method is useful if you are using a custom unit or function + * and need to iterate through all values. + * + * @param {string|RegExp} pattern - replace pattern + * @param {object} opts - options to speed up the search + * @param {string|string[]} opts.props - an array of property names + * @param {string} opts.fast - string that’s used + * to narrow down values and speed up + the regexp search + * @param {function|string} callback - string to replace pattern + * or callback that returns a new + * value. + * The callback will receive + * the same arguments as those + * passed to a function parameter + * of `String#replace`. + * + * @return {Node} this node for methods chain + * + * @example + * root.replaceValues(/\d+rem/, { fast: 'rem' }, string => { + * return 15 * parseInt(string) + 'px'; + * }); + */ + + + Container.prototype.replaceValues = function replaceValues(pattern, opts, callback) { + if (!callback) { + callback = opts; + opts = {}; + } + + this.walkDecls(function (decl) { + if (opts.props && opts.props.indexOf(decl.prop) === -1) return; + if (opts.fast && decl.value.indexOf(opts.fast) === -1) return; + + decl.value = decl.value.replace(pattern, callback); + }); + + return this; + }; + + /** + * Returns `true` if callback returns `true` + * for all of the container’s children. + * + * @param {childCondition} condition - iterator returns true or false. + * + * @return {boolean} is every child pass condition + * + * @example + * const noPrefixes = rule.every(i => i.prop[0] !== '-'); + */ + + + Container.prototype.every = function every(condition) { + return this.nodes.every(condition); + }; + + /** + * Returns `true` if callback returns `true` for (at least) one + * of the container’s children. + * + * @param {childCondition} condition - iterator returns true or false. + * + * @return {boolean} is some child pass condition + * + * @example + * const hasPrefix = rule.some(i => i.prop[0] === '-'); + */ + + + Container.prototype.some = function some(condition) { + return this.nodes.some(condition); + }; + + /** + * Returns a `child`’s index within the {@link Container#nodes} array. + * + * @param {Node} child - child of the current container. + * + * @return {number} child index + * + * @example + * rule.index( rule.nodes[2] ) //=> 2 + */ + + + Container.prototype.index = function index(child) { + if (typeof child === 'number') { + return child; + } else { + return this.nodes.indexOf(child); + } + }; + + /** + * The container’s first child. + * + * @type {Node} + * + * @example + * rule.first == rules.nodes[0]; + */ + + + Container.prototype.normalize = function normalize(nodes, sample) { + var _this2 = this; + + if (typeof nodes === 'string') { + var parse = __webpack_require__(70); + nodes = cleanSource(parse(nodes).nodes); + } else if (Array.isArray(nodes)) { + nodes = nodes.slice(0); + } else if (nodes.type === 'root') { + nodes = nodes.nodes.slice(0); + } else if (nodes.type) { + nodes = [nodes]; + } else if (nodes.prop) { + if (typeof nodes.value === 'undefined') { + throw new Error('Value field is missed in node creation'); + } else if (typeof nodes.value !== 'string') { + nodes.value = String(nodes.value); + } + nodes = [new _declaration2.default(nodes)]; + } else if (nodes.selector) { + var Rule = __webpack_require__(28); + nodes = [new Rule(nodes)]; + } else if (nodes.name) { + var AtRule = __webpack_require__(24); + nodes = [new AtRule(nodes)]; + } else if (nodes.text) { + nodes = [new _comment2.default(nodes)]; + } else { + throw new Error('Unknown node type in node creation'); + } + + var processed = nodes.map(function (i) { + if (typeof i.before !== 'function') i = _this2.rebuild(i); + + if (i.parent) i.parent.removeChild(i); + if (typeof i.raws.before === 'undefined') { + if (sample && typeof sample.raws.before !== 'undefined') { + i.raws.before = sample.raws.before.replace(/[^\s]/g, ''); + } + } + i.parent = _this2; + return i; + }); + + return processed; + }; + + Container.prototype.rebuild = function rebuild(node, parent) { + var _this3 = this; + + var fix = void 0; + if (node.type === 'root') { + var Root = __webpack_require__(72); + fix = new Root(); + } else if (node.type === 'atrule') { + var AtRule = __webpack_require__(24); + fix = new AtRule(); + } else if (node.type === 'rule') { + var Rule = __webpack_require__(28); + fix = new Rule(); + } else if (node.type === 'decl') { + fix = new _declaration2.default(); + } else if (node.type === 'comment') { + fix = new _comment2.default(); + } + + for (var i in node) { + if (i === 'nodes') { + fix.nodes = node.nodes.map(function (j) { + return _this3.rebuild(j, fix); + }); + } else if (i === 'parent' && parent) { + fix.parent = parent; + } else if (node.hasOwnProperty(i)) { + fix[i] = node[i]; + } + } + + return fix; + }; + + /** + * @memberof Container# + * @member {Node[]} nodes - an array containing the container’s children + * + * @example + * const root = postcss.parse('a { color: black }'); + * root.nodes.length //=> 1 + * root.nodes[0].selector //=> 'a' + * root.nodes[0].nodes[0].prop //=> 'color' + */ + + _createClass(Container, [{ + key: 'first', + get: function get() { + if (!this.nodes) return undefined; + return this.nodes[0]; + } + + /** + * The container’s last child. + * + * @type {Node} + * + * @example + * rule.last == rule.nodes[rule.nodes.length - 1]; + */ + + }, { + key: 'last', + get: function get() { + if (!this.nodes) return undefined; + return this.nodes[this.nodes.length - 1]; + } + }]); + + return Container; +}(_node2.default); + +exports.default = Container; + +/** + * @callback childCondition + * @param {Node} node - container child + * @param {number} index - child index + * @param {Node[]} nodes - all container children + * @return {boolean} + */ + +/** + * @callback childIterator + * @param {Node} node - container child + * @param {number} index - child index + * @return {false|undefined} returning `false` will break iteration + */ + +module.exports = exports['default']; + + + +/***/ }), +/* 13 */ +/***/ (function(module, exports) { + +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()); +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { return [] }; + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + + +/***/ }), +/* 14 */ +/***/ (function(module, exports, __webpack_require__) { + +/* + * Copyright 2009-2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE.txt or: + * http://opensource.org/licenses/BSD-3-Clause + */ +exports.SourceMapGenerator = __webpack_require__(77).SourceMapGenerator; +exports.SourceMapConsumer = __webpack_require__(150).SourceMapConsumer; +exports.SourceNode = __webpack_require__(151).SourceNode; + + +/***/ }), +/* 15 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global) {/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +/* eslint-disable no-proto */ + + + +var base64 = __webpack_require__(87); +var ieee754 = __webpack_require__(92); +var isArray = __webpack_require__(93); + +exports.Buffer = Buffer; +exports.SlowBuffer = SlowBuffer; +exports.INSPECT_MAX_BYTES = 50; + +/** + * If `Buffer.TYPED_ARRAY_SUPPORT`: + * === true Use Uint8Array implementation (fastest) + * === false Use Object implementation (most compatible, even IE6) + * + * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, + * Opera 11.6+, iOS 4.2+. + * + * Due to various browser bugs, sometimes the Object implementation will be used even + * when the browser supports typed arrays. + * + * Note: + * + * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, + * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. + * + * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. + * + * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of + * incorrect length in some situations. + + * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they + * get the Object implementation, which is slower but behaves correctly. + */ +Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined + ? global.TYPED_ARRAY_SUPPORT + : typedArraySupport(); + +/* + * Export kMaxLength after typed array support is determined. + */ +exports.kMaxLength = kMaxLength(); + +function typedArraySupport () { + try { + var arr = new Uint8Array(1); + arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}; + return arr.foo() === 42 && // typed array instances can be augmented + typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray` + arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray` + } catch (e) { + return false + } +} + +function kMaxLength () { + return Buffer.TYPED_ARRAY_SUPPORT + ? 0x7fffffff + : 0x3fffffff +} + +function createBuffer (that, length) { + if (kMaxLength() < length) { + throw new RangeError('Invalid typed array length') + } + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = new Uint8Array(length); + that.__proto__ = Buffer.prototype; + } else { + // Fallback: Return an object instance of the Buffer class + if (that === null) { + that = new Buffer(length); + } + that.length = length; + } + + return that +} + +/** + * The Buffer constructor returns instances of `Uint8Array` that have their + * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of + * `Uint8Array`, so the returned instances will have all the node `Buffer` methods + * and the `Uint8Array` methods. Square bracket notation works as expected -- it + * returns a single octet. + * + * The `Uint8Array` prototype remains unmodified. + */ + +function Buffer (arg, encodingOrOffset, length) { + if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) { + return new Buffer(arg, encodingOrOffset, length) + } + + // Common case. + if (typeof arg === 'number') { + if (typeof encodingOrOffset === 'string') { + throw new Error( + 'If encoding is specified then the first argument must be a string' + ) + } + return allocUnsafe(this, arg) + } + return from(this, arg, encodingOrOffset, length) +} + +Buffer.poolSize = 8192; // not used by this implementation + +// TODO: Legacy, not needed anymore. Remove in next major version. +Buffer._augment = function (arr) { + arr.__proto__ = Buffer.prototype; + return arr +}; + +function from (that, value, encodingOrOffset, length) { + if (typeof value === 'number') { + throw new TypeError('"value" argument must not be a number') + } + + if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { + return fromArrayBuffer(that, value, encodingOrOffset, length) + } + + if (typeof value === 'string') { + return fromString(that, value, encodingOrOffset) + } + + return fromObject(that, value) +} + +/** + * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError + * if value is a number. + * Buffer.from(str[, encoding]) + * Buffer.from(array) + * Buffer.from(buffer) + * Buffer.from(arrayBuffer[, byteOffset[, length]]) + **/ +Buffer.from = function (value, encodingOrOffset, length) { + return from(null, value, encodingOrOffset, length) +}; + +if (Buffer.TYPED_ARRAY_SUPPORT) { + Buffer.prototype.__proto__ = Uint8Array.prototype; + Buffer.__proto__ = Uint8Array; + if (typeof Symbol !== 'undefined' && Symbol.species && + Buffer[Symbol.species] === Buffer) { + // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 + Object.defineProperty(Buffer, Symbol.species, { + value: null, + configurable: true + }); + } +} + +function assertSize (size) { + if (typeof size !== 'number') { + throw new TypeError('"size" argument must be a number') + } else if (size < 0) { + throw new RangeError('"size" argument must not be negative') + } +} + +function alloc (that, size, fill, encoding) { + assertSize(size); + if (size <= 0) { + return createBuffer(that, size) + } + if (fill !== undefined) { + // Only pay attention to encoding if it's a string. This + // prevents accidentally sending in a number that would + // be interpretted as a start offset. + return typeof encoding === 'string' + ? createBuffer(that, size).fill(fill, encoding) + : createBuffer(that, size).fill(fill) + } + return createBuffer(that, size) +} + +/** + * Creates a new filled Buffer instance. + * alloc(size[, fill[, encoding]]) + **/ +Buffer.alloc = function (size, fill, encoding) { + return alloc(null, size, fill, encoding) +}; + +function allocUnsafe (that, size) { + assertSize(size); + that = createBuffer(that, size < 0 ? 0 : checked(size) | 0); + if (!Buffer.TYPED_ARRAY_SUPPORT) { + for (var i = 0; i < size; ++i) { + that[i] = 0; + } + } + return that +} + +/** + * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. + * */ +Buffer.allocUnsafe = function (size) { + return allocUnsafe(null, size) +}; +/** + * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. + */ +Buffer.allocUnsafeSlow = function (size) { + return allocUnsafe(null, size) +}; + +function fromString (that, string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8'; + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('"encoding" must be a valid string encoding') + } + + var length = byteLength(string, encoding) | 0; + that = createBuffer(that, length); + + var actual = that.write(string, encoding); + + if (actual !== length) { + // Writing a hex string, for example, that contains invalid characters will + // cause everything after the first invalid character to be ignored. (e.g. + // 'abxxcd' will be treated as 'ab') + that = that.slice(0, actual); + } + + return that +} + +function fromArrayLike (that, array) { + var length = array.length < 0 ? 0 : checked(array.length) | 0; + that = createBuffer(that, length); + for (var i = 0; i < length; i += 1) { + that[i] = array[i] & 255; + } + return that +} + +function fromArrayBuffer (that, array, byteOffset, length) { + array.byteLength; // this throws if `array` is not a valid ArrayBuffer + + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('\'offset\' is out of bounds') + } + + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('\'length\' is out of bounds') + } + + if (byteOffset === undefined && length === undefined) { + array = new Uint8Array(array); + } else if (length === undefined) { + array = new Uint8Array(array, byteOffset); + } else { + array = new Uint8Array(array, byteOffset, length); + } + + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = array; + that.__proto__ = Buffer.prototype; + } else { + // Fallback: Return an object instance of the Buffer class + that = fromArrayLike(that, array); + } + return that +} + +function fromObject (that, obj) { + if (Buffer.isBuffer(obj)) { + var len = checked(obj.length) | 0; + that = createBuffer(that, len); + + if (that.length === 0) { + return that + } + + obj.copy(that, 0, 0, len); + return that + } + + if (obj) { + if ((typeof ArrayBuffer !== 'undefined' && + obj.buffer instanceof ArrayBuffer) || 'length' in obj) { + if (typeof obj.length !== 'number' || isnan(obj.length)) { + return createBuffer(that, 0) + } + return fromArrayLike(that, obj) + } + + if (obj.type === 'Buffer' && isArray(obj.data)) { + return fromArrayLike(that, obj.data) + } + } + + throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.') +} + +function checked (length) { + // Note: cannot use `length < kMaxLength()` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= kMaxLength()) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + kMaxLength().toString(16) + ' bytes') + } + return length | 0 +} + +function SlowBuffer (length) { + if (+length != length) { // eslint-disable-line eqeqeq + length = 0; + } + return Buffer.alloc(+length) +} + +Buffer.isBuffer = function isBuffer (b) { + return !!(b != null && b._isBuffer) +}; + +Buffer.compare = function compare (a, b) { + if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { + throw new TypeError('Arguments must be Buffers') + } + + if (a === b) return 0 + + var x = a.length; + var y = b.length; + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i]; + y = b[i]; + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +}; + +Buffer.isEncoding = function isEncoding (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false + } +}; + +Buffer.concat = function concat (list, length) { + if (!isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + + if (list.length === 0) { + return Buffer.alloc(0) + } + + var i; + if (length === undefined) { + length = 0; + for (i = 0; i < list.length; ++i) { + length += list[i].length; + } + } + + var buffer = Buffer.allocUnsafe(length); + var pos = 0; + for (i = 0; i < list.length; ++i) { + var buf = list[i]; + if (!Buffer.isBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + buf.copy(buffer, pos); + pos += buf.length; + } + return buffer +}; + +function byteLength (string, encoding) { + if (Buffer.isBuffer(string)) { + return string.length + } + if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && + (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { + return string.byteLength + } + if (typeof string !== 'string') { + string = '' + string; + } + + var len = string.length; + if (len === 0) return 0 + + // Use a for loop to avoid recursion + var loweredCase = false; + for (;;) { + switch (encoding) { + case 'ascii': + case 'latin1': + case 'binary': + return len + case 'utf8': + case 'utf-8': + case undefined: + return utf8ToBytes(string).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2 + case 'hex': + return len >>> 1 + case 'base64': + return base64ToBytes(string).length + default: + if (loweredCase) return utf8ToBytes(string).length // assume utf8 + encoding = ('' + encoding).toLowerCase(); + loweredCase = true; + } + } +} +Buffer.byteLength = byteLength; + +function slowToString (encoding, start, end) { + var loweredCase = false; + + // No need to verify that "this.length <= MAX_UINT32" since it's a read-only + // property of a typed array. + + // This behaves neither like String nor Uint8Array in that we set start/end + // to their upper/lower bounds if the value passed is out of range. + // undefined is handled specially as per ECMA-262 6th Edition, + // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. + if (start === undefined || start < 0) { + start = 0; + } + // Return early if start > this.length. Done here to prevent potential uint32 + // coercion fail below. + if (start > this.length) { + return '' + } + + if (end === undefined || end > this.length) { + end = this.length; + } + + if (end <= 0) { + return '' + } + + // Force coersion to uint32. This will also coerce falsey/NaN values to 0. + end >>>= 0; + start >>>= 0; + + if (end <= start) { + return '' + } + + if (!encoding) encoding = 'utf8'; + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end) + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end) + + case 'ascii': + return asciiSlice(this, start, end) + + case 'latin1': + case 'binary': + return latin1Slice(this, start, end) + + case 'base64': + return base64Slice(this, start, end) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = (encoding + '').toLowerCase(); + loweredCase = true; + } + } +} + +// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect +// Buffer instances. +Buffer.prototype._isBuffer = true; + +function swap (b, n, m) { + var i = b[n]; + b[n] = b[m]; + b[m] = i; +} + +Buffer.prototype.swap16 = function swap16 () { + var len = this.length; + if (len % 2 !== 0) { + throw new RangeError('Buffer size must be a multiple of 16-bits') + } + for (var i = 0; i < len; i += 2) { + swap(this, i, i + 1); + } + return this +}; + +Buffer.prototype.swap32 = function swap32 () { + var len = this.length; + if (len % 4 !== 0) { + throw new RangeError('Buffer size must be a multiple of 32-bits') + } + for (var i = 0; i < len; i += 4) { + swap(this, i, i + 3); + swap(this, i + 1, i + 2); + } + return this +}; + +Buffer.prototype.swap64 = function swap64 () { + var len = this.length; + if (len % 8 !== 0) { + throw new RangeError('Buffer size must be a multiple of 64-bits') + } + for (var i = 0; i < len; i += 8) { + swap(this, i, i + 7); + swap(this, i + 1, i + 6); + swap(this, i + 2, i + 5); + swap(this, i + 3, i + 4); + } + return this +}; + +Buffer.prototype.toString = function toString () { + var length = this.length | 0; + if (length === 0) return '' + if (arguments.length === 0) return utf8Slice(this, 0, length) + return slowToString.apply(this, arguments) +}; + +Buffer.prototype.equals = function equals (b) { + if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return true + return Buffer.compare(this, b) === 0 +}; + +Buffer.prototype.inspect = function inspect () { + var str = ''; + var max = exports.INSPECT_MAX_BYTES; + if (this.length > 0) { + str = this.toString('hex', 0, max).match(/.{2}/g).join(' '); + if (this.length > max) str += ' ... '; + } + return '' +}; + +Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { + if (!Buffer.isBuffer(target)) { + throw new TypeError('Argument must be a Buffer') + } + + if (start === undefined) { + start = 0; + } + if (end === undefined) { + end = target ? target.length : 0; + } + if (thisStart === undefined) { + thisStart = 0; + } + if (thisEnd === undefined) { + thisEnd = this.length; + } + + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError('out of range index') + } + + if (thisStart >= thisEnd && start >= end) { + return 0 + } + if (thisStart >= thisEnd) { + return -1 + } + if (start >= end) { + return 1 + } + + start >>>= 0; + end >>>= 0; + thisStart >>>= 0; + thisEnd >>>= 0; + + if (this === target) return 0 + + var x = thisEnd - thisStart; + var y = end - start; + var len = Math.min(x, y); + + var thisCopy = this.slice(thisStart, thisEnd); + var targetCopy = target.slice(start, end); + + for (var i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i]; + y = targetCopy[i]; + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +}; + +// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, +// OR the last index of `val` in `buffer` at offset <= `byteOffset`. +// +// Arguments: +// - buffer - a Buffer to search +// - val - a string, Buffer, or number +// - byteOffset - an index into `buffer`; will be clamped to an int32 +// - encoding - an optional encoding, relevant is val is a string +// - dir - true for indexOf, false for lastIndexOf +function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { + // Empty buffer means no match + if (buffer.length === 0) return -1 + + // Normalize byteOffset + if (typeof byteOffset === 'string') { + encoding = byteOffset; + byteOffset = 0; + } else if (byteOffset > 0x7fffffff) { + byteOffset = 0x7fffffff; + } else if (byteOffset < -0x80000000) { + byteOffset = -0x80000000; + } + byteOffset = +byteOffset; // Coerce to Number. + if (isNaN(byteOffset)) { + // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer + byteOffset = dir ? 0 : (buffer.length - 1); + } + + // Normalize byteOffset: negative offsets start from the end of the buffer + if (byteOffset < 0) byteOffset = buffer.length + byteOffset; + if (byteOffset >= buffer.length) { + if (dir) return -1 + else byteOffset = buffer.length - 1; + } else if (byteOffset < 0) { + if (dir) byteOffset = 0; + else return -1 + } + + // Normalize val + if (typeof val === 'string') { + val = Buffer.from(val, encoding); + } + + // Finally, search either indexOf (if dir is true) or lastIndexOf + if (Buffer.isBuffer(val)) { + // Special case: looking for empty string/buffer always fails + if (val.length === 0) { + return -1 + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir) + } else if (typeof val === 'number') { + val = val & 0xFF; // Search for a byte value [0-255] + if (Buffer.TYPED_ARRAY_SUPPORT && + typeof Uint8Array.prototype.indexOf === 'function') { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) + } + } + return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) + } + + throw new TypeError('val must be string, number or Buffer') +} + +function arrayIndexOf (arr, val, byteOffset, encoding, dir) { + var indexSize = 1; + var arrLength = arr.length; + var valLength = val.length; + + if (encoding !== undefined) { + encoding = String(encoding).toLowerCase(); + if (encoding === 'ucs2' || encoding === 'ucs-2' || + encoding === 'utf16le' || encoding === 'utf-16le') { + if (arr.length < 2 || val.length < 2) { + return -1 + } + indexSize = 2; + arrLength /= 2; + valLength /= 2; + byteOffset /= 2; + } + } + + function read (buf, i) { + if (indexSize === 1) { + return buf[i] + } else { + return buf.readUInt16BE(i * indexSize) + } + } + + var i; + if (dir) { + var foundIndex = -1; + for (i = byteOffset; i < arrLength; i++) { + if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i; + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize + } else { + if (foundIndex !== -1) i -= i - foundIndex; + foundIndex = -1; + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength; + for (i = byteOffset; i >= 0; i--) { + var found = true; + for (var j = 0; j < valLength; j++) { + if (read(arr, i + j) !== read(val, j)) { + found = false; + break + } + } + if (found) return i + } + } + + return -1 +} + +Buffer.prototype.includes = function includes (val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1 +}; + +Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true) +}; + +Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false) +}; + +function hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0; + var remaining = buf.length - offset; + if (!length) { + length = remaining; + } else { + length = Number(length); + if (length > remaining) { + length = remaining; + } + } + + // must be an even number of digits + var strLen = string.length; + if (strLen % 2 !== 0) throw new TypeError('Invalid hex string') + + if (length > strLen / 2) { + length = strLen / 2; + } + for (var i = 0; i < length; ++i) { + var parsed = parseInt(string.substr(i * 2, 2), 16); + if (isNaN(parsed)) return i + buf[offset + i] = parsed; + } + return i +} + +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} + +function asciiWrite (buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length) +} + +function latin1Write (buf, string, offset, length) { + return asciiWrite(buf, string, offset, length) +} + +function base64Write (buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length) +} + +function ucs2Write (buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) +} + +Buffer.prototype.write = function write (string, offset, length, encoding) { + // Buffer#write(string) + if (offset === undefined) { + encoding = 'utf8'; + length = this.length; + offset = 0; + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + encoding = offset; + length = this.length; + offset = 0; + // Buffer#write(string, offset[, length][, encoding]) + } else if (isFinite(offset)) { + offset = offset | 0; + if (isFinite(length)) { + length = length | 0; + if (encoding === undefined) encoding = 'utf8'; + } else { + encoding = length; + length = undefined; + } + // legacy write(string, encoding, offset, length) - remove in v0.13 + } else { + throw new Error( + 'Buffer.write(string, encoding, offset[, length]) is no longer supported' + ) + } + + var remaining = this.length - offset; + if (length === undefined || length > remaining) length = remaining; + + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds') + } + + if (!encoding) encoding = 'utf8'; + + var loweredCase = false; + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length) + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length) + + case 'ascii': + return asciiWrite(this, string, offset, length) + + case 'latin1': + case 'binary': + return latin1Write(this, string, offset, length) + + case 'base64': + // Warning: maxLength not taken into account in base64Write + return base64Write(this, string, offset, length) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = ('' + encoding).toLowerCase(); + loweredCase = true; + } + } +}; + +Buffer.prototype.toJSON = function toJSON () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } +}; + +function base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf) + } else { + return base64.fromByteArray(buf.slice(start, end)) + } +} + +function utf8Slice (buf, start, end) { + end = Math.min(buf.length, end); + var res = []; + + var i = start; + while (i < end) { + var firstByte = buf[i]; + var codePoint = null; + var bytesPerSequence = (firstByte > 0xEF) ? 4 + : (firstByte > 0xDF) ? 3 + : (firstByte > 0xBF) ? 2 + : 1; + + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint; + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte; + } + break + case 2: + secondByte = buf[i + 1]; + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F); + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint; + } + } + break + case 3: + secondByte = buf[i + 1]; + thirdByte = buf[i + 2]; + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F); + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint; + } + } + break + case 4: + secondByte = buf[i + 1]; + thirdByte = buf[i + 2]; + fourthByte = buf[i + 3]; + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F); + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint; + } + } + } + } + + if (codePoint === null) { + // we did not generate a valid codePoint so insert a + // replacement char (U+FFFD) and advance only 1 byte + codePoint = 0xFFFD; + bytesPerSequence = 1; + } else if (codePoint > 0xFFFF) { + // encode to utf16 (surrogate pair dance) + codePoint -= 0x10000; + res.push(codePoint >>> 10 & 0x3FF | 0xD800); + codePoint = 0xDC00 | codePoint & 0x3FF; + } + + res.push(codePoint); + i += bytesPerSequence; + } + + return decodeCodePointsArray(res) +} + +// Based on http://stackoverflow.com/a/22747272/680742, the browser with +// the lowest limit is Chrome, with 0x10000 args. +// We go 1 magnitude less, for safety +var MAX_ARGUMENTS_LENGTH = 0x1000; + +function decodeCodePointsArray (codePoints) { + var len = codePoints.length; + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints) // avoid extra slice() + } + + // Decode in chunks to avoid "call stack size exceeded". + var res = ''; + var i = 0; + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ); + } + return res +} + +function asciiSlice (buf, start, end) { + var ret = ''; + end = Math.min(buf.length, end); + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 0x7F); + } + return ret +} + +function latin1Slice (buf, start, end) { + var ret = ''; + end = Math.min(buf.length, end); + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]); + } + return ret +} + +function hexSlice (buf, start, end) { + var len = buf.length; + + if (!start || start < 0) start = 0; + if (!end || end < 0 || end > len) end = len; + + var out = ''; + for (var i = start; i < end; ++i) { + out += toHex(buf[i]); + } + return out +} + +function utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end); + var res = ''; + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256); + } + return res +} + +Buffer.prototype.slice = function slice (start, end) { + var len = this.length; + start = ~~start; + end = end === undefined ? len : ~~end; + + if (start < 0) { + start += len; + if (start < 0) start = 0; + } else if (start > len) { + start = len; + } + + if (end < 0) { + end += len; + if (end < 0) end = 0; + } else if (end > len) { + end = len; + } + + if (end < start) end = start; + + var newBuf; + if (Buffer.TYPED_ARRAY_SUPPORT) { + newBuf = this.subarray(start, end); + newBuf.__proto__ = Buffer.prototype; + } else { + var sliceLen = end - start; + newBuf = new Buffer(sliceLen, undefined); + for (var i = 0; i < sliceLen; ++i) { + newBuf[i] = this[i + start]; + } + } + + return newBuf +}; + +/* + * Need to make sure that buffer isn't trying to write out of bounds. + */ +function checkOffset (offset, ext, length) { + if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') +} + +Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + var val = this[offset]; + var mul = 1; + var i = 0; + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul; + } + + return val +}; + +Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) { + checkOffset(offset, byteLength, this.length); + } + + var val = this[offset + --byteLength]; + var mul = 1; + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul; + } + + return val +}; + +Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length); + return this[offset] +}; + +Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length); + return this[offset] | (this[offset + 1] << 8) +}; + +Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length); + return (this[offset] << 8) | this[offset + 1] +}; + +Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + + return ((this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16)) + + (this[offset + 3] * 0x1000000) +}; + +Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + + return (this[offset] * 0x1000000) + + ((this[offset + 1] << 16) | + (this[offset + 2] << 8) | + this[offset + 3]) +}; + +Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + var val = this[offset]; + var mul = 1; + var i = 0; + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul; + } + mul *= 0x80; + + if (val >= mul) val -= Math.pow(2, 8 * byteLength); + + return val +}; + +Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + var i = byteLength; + var mul = 1; + var val = this[offset + --i]; + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul; + } + mul *= 0x80; + + if (val >= mul) val -= Math.pow(2, 8 * byteLength); + + return val +}; + +Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length); + if (!(this[offset] & 0x80)) return (this[offset]) + return ((0xff - this[offset] + 1) * -1) +}; + +Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length); + var val = this[offset] | (this[offset + 1] << 8); + return (val & 0x8000) ? val | 0xFFFF0000 : val +}; + +Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length); + var val = this[offset + 1] | (this[offset] << 8); + return (val & 0x8000) ? val | 0xFFFF0000 : val +}; + +Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + + return (this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16) | + (this[offset + 3] << 24) +}; + +Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + + return (this[offset] << 24) | + (this[offset + 1] << 16) | + (this[offset + 2] << 8) | + (this[offset + 3]) +}; + +Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + return ieee754.read(this, offset, true, 23, 4) +}; + +Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + return ieee754.read(this, offset, false, 23, 4) +}; + +Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length); + return ieee754.read(this, offset, true, 52, 8) +}; + +Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length); + return ieee754.read(this, offset, false, 52, 8) +}; + +function checkInt (buf, value, offset, ext, max, min) { + if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') + if (offset + ext > buf.length) throw new RangeError('Index out of range') +} + +Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1; + checkInt(this, value, offset, byteLength, maxBytes, 0); + } + + var mul = 1; + var i = 0; + this[offset] = value & 0xFF; + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF; + } + + return offset + byteLength +}; + +Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1; + checkInt(this, value, offset, byteLength, maxBytes, 0); + } + + var i = byteLength - 1; + var mul = 1; + this[offset + i] = value & 0xFF; + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF; + } + + return offset + byteLength +}; + +Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0); + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value); + this[offset] = (value & 0xff); + return offset + 1 +}; + +function objectWriteUInt16 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffff + value + 1; + for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { + buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> + (littleEndian ? i : 1 - i) * 8; + } +} + +Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff); + this[offset + 1] = (value >>> 8); + } else { + objectWriteUInt16(this, value, offset, true); + } + return offset + 2 +}; + +Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8); + this[offset + 1] = (value & 0xff); + } else { + objectWriteUInt16(this, value, offset, false); + } + return offset + 2 +}; + +function objectWriteUInt32 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffffffff + value + 1; + for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { + buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff; + } +} + +Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset + 3] = (value >>> 24); + this[offset + 2] = (value >>> 16); + this[offset + 1] = (value >>> 8); + this[offset] = (value & 0xff); + } else { + objectWriteUInt32(this, value, offset, true); + } + return offset + 4 +}; + +Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24); + this[offset + 1] = (value >>> 16); + this[offset + 2] = (value >>> 8); + this[offset + 3] = (value & 0xff); + } else { + objectWriteUInt32(this, value, offset, false); + } + return offset + 4 +}; + +Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1); + + checkInt(this, value, offset, byteLength, limit - 1, -limit); + } + + var i = 0; + var mul = 1; + var sub = 0; + this[offset] = value & 0xFF; + while (++i < byteLength && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1; + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; + } + + return offset + byteLength +}; + +Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1); + + checkInt(this, value, offset, byteLength, limit - 1, -limit); + } + + var i = byteLength - 1; + var mul = 1; + var sub = 0; + this[offset + i] = value & 0xFF; + while (--i >= 0 && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1; + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; + } + + return offset + byteLength +}; + +Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80); + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value); + if (value < 0) value = 0xff + value + 1; + this[offset] = (value & 0xff); + return offset + 1 +}; + +Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff); + this[offset + 1] = (value >>> 8); + } else { + objectWriteUInt16(this, value, offset, true); + } + return offset + 2 +}; + +Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8); + this[offset + 1] = (value & 0xff); + } else { + objectWriteUInt16(this, value, offset, false); + } + return offset + 2 +}; + +Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff); + this[offset + 1] = (value >>> 8); + this[offset + 2] = (value >>> 16); + this[offset + 3] = (value >>> 24); + } else { + objectWriteUInt32(this, value, offset, true); + } + return offset + 4 +}; + +Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); + if (value < 0) value = 0xffffffff + value + 1; + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24); + this[offset + 1] = (value >>> 16); + this[offset + 2] = (value >>> 8); + this[offset + 3] = (value & 0xff); + } else { + objectWriteUInt32(this, value, offset, false); + } + return offset + 4 +}; + +function checkIEEE754 (buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError('Index out of range') + if (offset < 0) throw new RangeError('Index out of range') +} + +function writeFloat (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38); + } + ieee754.write(buf, value, offset, littleEndian, 23, 4); + return offset + 4 +} + +Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert) +}; + +Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert) +}; + +function writeDouble (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308); + } + ieee754.write(buf, value, offset, littleEndian, 52, 8); + return offset + 8 +} + +Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert) +}; + +Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert) +}; + +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer.prototype.copy = function copy (target, targetStart, start, end) { + if (!start) start = 0; + if (!end && end !== 0) end = this.length; + if (targetStart >= target.length) targetStart = target.length; + if (!targetStart) targetStart = 0; + if (end > 0 && end < start) end = start; + + // Copy 0 bytes; we're done + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 + + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') + if (end < 0) throw new RangeError('sourceEnd out of bounds') + + // Are we oob? + if (end > this.length) end = this.length; + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start; + } + + var len = end - start; + var i; + + if (this === target && start < targetStart && targetStart < end) { + // descending copy from end + for (i = len - 1; i >= 0; --i) { + target[i + targetStart] = this[i + start]; + } + } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { + // ascending copy from start + for (i = 0; i < len; ++i) { + target[i + targetStart] = this[i + start]; + } + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, start + len), + targetStart + ); + } + + return len +}; + +// Usage: +// buffer.fill(number[, offset[, end]]) +// buffer.fill(buffer[, offset[, end]]) +// buffer.fill(string[, offset[, end]][, encoding]) +Buffer.prototype.fill = function fill (val, start, end, encoding) { + // Handle string cases: + if (typeof val === 'string') { + if (typeof start === 'string') { + encoding = start; + start = 0; + end = this.length; + } else if (typeof end === 'string') { + encoding = end; + end = this.length; + } + if (val.length === 1) { + var code = val.charCodeAt(0); + if (code < 256) { + val = code; + } + } + if (encoding !== undefined && typeof encoding !== 'string') { + throw new TypeError('encoding must be a string') + } + if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + } else if (typeof val === 'number') { + val = val & 255; + } + + // Invalid ranges are not set to a default, so can range check early. + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index') + } + + if (end <= start) { + return this + } + + start = start >>> 0; + end = end === undefined ? this.length : end >>> 0; + + if (!val) val = 0; + + var i; + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val; + } + } else { + var bytes = Buffer.isBuffer(val) + ? val + : utf8ToBytes(new Buffer(val, encoding).toString()); + var len = bytes.length; + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len]; + } + } + + return this +}; + +// HELPER FUNCTIONS +// ================ + +var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g; + +function base64clean (str) { + // Node strips out invalid characters like \n and \t from the string, base64-js does not + str = stringtrim(str).replace(INVALID_BASE64_RE, ''); + // Node converts strings with length < 2 to '' + if (str.length < 2) return '' + // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not + while (str.length % 4 !== 0) { + str = str + '='; + } + return str +} + +function stringtrim (str) { + if (str.trim) return str.trim() + return str.replace(/^\s+|\s+$/g, '') +} + +function toHex (n) { + if (n < 16) return '0' + n.toString(16) + return n.toString(16) +} + +function utf8ToBytes (string, units) { + units = units || Infinity; + var codePoint; + var length = string.length; + var leadSurrogate = null; + var bytes = []; + + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i); + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + continue + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + continue + } + + // valid lead + leadSurrogate = codePoint; + + continue + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + leadSurrogate = codePoint; + continue + } + + // valid surrogate pair + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000; + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + } + + leadSurrogate = null; + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint); + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ); + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ); + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ); + } else { + throw new Error('Invalid code point') + } + } + + return bytes +} + +function asciiToBytes (str) { + var byteArray = []; + for (var i = 0; i < str.length; ++i) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF); + } + return byteArray +} + +function utf16leToBytes (str, units) { + var c, hi, lo; + var byteArray = []; + for (var i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break + + c = str.charCodeAt(i); + hi = c >> 8; + lo = c % 256; + byteArray.push(lo); + byteArray.push(hi); + } + + return byteArray +} + +function base64ToBytes (str) { + return base64.toByteArray(base64clean(str)) +} + +function blitBuffer (src, dst, offset, length) { + for (var i = 0; i < length; ++i) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i]; + } + return i +} + +function isnan (val) { + return val !== val // eslint-disable-line no-self-compare +} + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(80))); + +/***/ }), +/* 16 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = lessStringify; + +var _lessStringifier = __webpack_require__(99); + +var _lessStringifier2 = _interopRequireDefault(_lessStringifier); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function lessStringify(node, builder) { + var str = new _lessStringifier2.default(builder); + + str.stringify(node); +} +module.exports = exports['default']; + +/***/ }), +/* 17 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _container = __webpack_require__(19); + +var _container2 = _interopRequireDefault(_container); + +var _warnOnce = __webpack_require__(3); + +var _warnOnce2 = _interopRequireDefault(_warnOnce); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/** + * Represents an at-rule. + * + * If it’s followed in the CSS by a {} block, this node will have + * a nodes property representing its children. + * + * @extends Container + * + * @example + * const root = postcss.parse('@charset "UTF-8"; @media print {}'); + * + * const charset = root.first; + * charset.type //=> 'atrule' + * charset.nodes //=> undefined + * + * const media = root.last; + * media.nodes //=> [] + */ +var AtRule = function (_Container) { + _inherits(AtRule, _Container); + + function AtRule(defaults) { + _classCallCheck(this, AtRule); + + var _this = _possibleConstructorReturn(this, _Container.call(this, defaults)); + + _this.type = 'atrule'; + return _this; + } + + AtRule.prototype.append = function append() { + var _Container$prototype$; + + if (!this.nodes) this.nodes = []; + + for (var _len = arguments.length, children = Array(_len), _key = 0; _key < _len; _key++) { + children[_key] = arguments[_key]; + } + + return (_Container$prototype$ = _Container.prototype.append).call.apply(_Container$prototype$, [this].concat(children)); + }; + + AtRule.prototype.prepend = function prepend() { + var _Container$prototype$2; + + if (!this.nodes) this.nodes = []; + + for (var _len2 = arguments.length, children = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + children[_key2] = arguments[_key2]; + } + + return (_Container$prototype$2 = _Container.prototype.prepend).call.apply(_Container$prototype$2, [this].concat(children)); + }; + + _createClass(AtRule, [{ + key: 'afterName', + get: function get() { + (0, _warnOnce2.default)('AtRule#afterName was deprecated. Use AtRule#raws.afterName'); + return this.raws.afterName; + }, + set: function set(val) { + (0, _warnOnce2.default)('AtRule#afterName was deprecated. Use AtRule#raws.afterName'); + this.raws.afterName = val; + } + }, { + key: '_params', + get: function get() { + (0, _warnOnce2.default)('AtRule#_params was deprecated. Use AtRule#raws.params'); + return this.raws.params; + }, + set: function set(val) { + (0, _warnOnce2.default)('AtRule#_params was deprecated. Use AtRule#raws.params'); + this.raws.params = val; + } + + /** + * @memberof AtRule# + * @member {string} name - the at-rule’s name immediately follows the `@` + * + * @example + * const root = postcss.parse('@media print {}'); + * media.name //=> 'media' + * const media = root.first; + */ + + /** + * @memberof AtRule# + * @member {string} params - the at-rule’s parameters, the values + * that follow the at-rule’s name but precede + * any {} block + * + * @example + * const root = postcss.parse('@media print, screen {}'); + * const media = root.first; + * media.params //=> 'print, screen' + */ + + /** + * @memberof AtRule# + * @member {object} raws - Information to generate byte-to-byte equal + * node string as it was in the origin input. + * + * Every parser saves its own properties, + * but the default CSS parser uses: + * + * * `before`: the space symbols before the node. It also stores `*` + * and `_` symbols before the declaration (IE hack). + * * `after`: the space symbols after the last child of the node + * to the end of the node. + * * `between`: the symbols between the property and value + * for declarations, selector and `{` for rules, or last parameter + * and `{` for at-rules. + * * `semicolon`: contains true if the last child has + * an (optional) semicolon. + * * `afterName`: the space between the at-rule name and its parameters. + * + * PostCSS cleans at-rule parameters from comments and extra spaces, + * but it stores origin content in raws properties. + * As such, if you don’t change a declaration’s value, + * PostCSS will use the raw value with comments. + * + * @example + * const root = postcss.parse(' @media\nprint {\n}') + * root.first.first.raws //=> { before: ' ', + * // between: ' ', + * // afterName: '\n', + * // after: '\n' } + */ + + }]); + + return AtRule; +}(_container2.default); + +exports.default = AtRule; +module.exports = exports['default']; + + + +/***/ }), +/* 18 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _warnOnce = __webpack_require__(3); + +var _warnOnce2 = _interopRequireDefault(_warnOnce); + +var _node = __webpack_require__(21); + +var _node2 = _interopRequireDefault(_node); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/** + * Represents a comment between declarations or statements (rule and at-rules). + * + * Comments inside selectors, at-rule parameters, or declaration values + * will be stored in the `raws` properties explained above. + * + * @extends Node + */ +var Comment = function (_Node) { + _inherits(Comment, _Node); + + function Comment(defaults) { + _classCallCheck(this, Comment); + + var _this = _possibleConstructorReturn(this, _Node.call(this, defaults)); + + _this.type = 'comment'; + return _this; + } + + _createClass(Comment, [{ + key: 'left', + get: function get() { + (0, _warnOnce2.default)('Comment#left was deprecated. Use Comment#raws.left'); + return this.raws.left; + }, + set: function set(val) { + (0, _warnOnce2.default)('Comment#left was deprecated. Use Comment#raws.left'); + this.raws.left = val; + } + }, { + key: 'right', + get: function get() { + (0, _warnOnce2.default)('Comment#right was deprecated. Use Comment#raws.right'); + return this.raws.right; + }, + set: function set(val) { + (0, _warnOnce2.default)('Comment#right was deprecated. Use Comment#raws.right'); + this.raws.right = val; + } + + /** + * @memberof Comment# + * @member {string} text - the comment’s text + */ + + /** + * @memberof Comment# + * @member {object} raws - Information to generate byte-to-byte equal + * node string as it was in the origin input. + * + * Every parser saves its own properties, + * but the default CSS parser uses: + * + * * `before`: the space symbols before the node. + * * `left`: the space symbols between `/*` and the comment’s text. + * * `right`: the space symbols between the comment’s text. + */ + + }]); + + return Comment; +}(_node2.default); + +exports.default = Comment; +module.exports = exports['default']; + + + +/***/ }), +/* 19 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _declaration = __webpack_require__(35); + +var _declaration2 = _interopRequireDefault(_declaration); + +var _warnOnce = __webpack_require__(3); + +var _warnOnce2 = _interopRequireDefault(_warnOnce); + +var _comment = __webpack_require__(18); + +var _comment2 = _interopRequireDefault(_comment); + +var _node = __webpack_require__(21); + +var _node2 = _interopRequireDefault(_node); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +function cleanSource(nodes) { + return nodes.map(function (i) { + if (i.nodes) i.nodes = cleanSource(i.nodes); + delete i.source; + return i; + }); +} + +/** + * The {@link Root}, {@link AtRule}, and {@link Rule} container nodes + * inherit some common methods to help work with their children. + * + * Note that all containers can store any content. If you write a rule inside + * a rule, PostCSS will parse it. + * + * @extends Node + * @abstract + */ + +var Container = function (_Node) { + _inherits(Container, _Node); + + function Container() { + _classCallCheck(this, Container); + + return _possibleConstructorReturn(this, _Node.apply(this, arguments)); + } + + Container.prototype.push = function push(child) { + child.parent = this; + this.nodes.push(child); + return this; + }; + + /** + * Iterates through the container’s immediate children, + * calling `callback` for each child. + * + * Returning `false` in the callback will break iteration. + * + * This method only iterates through the container’s immediate children. + * If you need to recursively iterate through all the container’s descendant + * nodes, use {@link Container#walk}. + * + * Unlike the for `{}`-cycle or `Array#forEach` this iterator is safe + * if you are mutating the array of child nodes during iteration. + * PostCSS will adjust the current index to match the mutations. + * + * @param {childIterator} callback - iterator receives each node and index + * + * @return {false|undefined} returns `false` if iteration was broke + * + * @example + * const root = postcss.parse('a { color: black; z-index: 1 }'); + * const rule = root.first; + * + * for ( let decl of rule.nodes ) { + * decl.cloneBefore({ prop: '-webkit-' + decl.prop }); + * // Cycle will be infinite, because cloneBefore moves the current node + * // to the next index + * } + * + * rule.each(decl => { + * decl.cloneBefore({ prop: '-webkit-' + decl.prop }); + * // Will be executed only for color and z-index + * }); + */ + + + Container.prototype.each = function each(callback) { + if (!this.lastEach) this.lastEach = 0; + if (!this.indexes) this.indexes = {}; + + this.lastEach += 1; + var id = this.lastEach; + this.indexes[id] = 0; + + if (!this.nodes) return undefined; + + var index = void 0, + result = void 0; + while (this.indexes[id] < this.nodes.length) { + index = this.indexes[id]; + result = callback(this.nodes[index], index); + if (result === false) break; + + this.indexes[id] += 1; + } + + delete this.indexes[id]; + + return result; + }; + + /** + * Traverses the container’s descendant nodes, calling callback + * for each node. + * + * Like container.each(), this method is safe to use + * if you are mutating arrays during iteration. + * + * If you only need to iterate through the container’s immediate children, + * use {@link Container#each}. + * + * @param {childIterator} callback - iterator receives each node and index + * + * @return {false|undefined} returns `false` if iteration was broke + * + * @example + * root.walk(node => { + * // Traverses all descendant nodes. + * }); + */ + + + Container.prototype.walk = function walk(callback) { + return this.each(function (child, i) { + var result = callback(child, i); + if (result !== false && child.walk) { + result = child.walk(callback); + } + return result; + }); + }; + + /** + * Traverses the container’s descendant nodes, calling callback + * for each declaration node. + * + * If you pass a filter, iteration will only happen over declarations + * with matching properties. + * + * Like {@link Container#each}, this method is safe + * to use if you are mutating arrays during iteration. + * + * @param {string|RegExp} [prop] - string or regular expression + * to filter declarations by property name + * @param {childIterator} callback - iterator receives each node and index + * + * @return {false|undefined} returns `false` if iteration was broke + * + * @example + * root.walkDecls(decl => { + * checkPropertySupport(decl.prop); + * }); + * + * root.walkDecls('border-radius', decl => { + * decl.remove(); + * }); + * + * root.walkDecls(/^background/, decl => { + * decl.value = takeFirstColorFromGradient(decl.value); + * }); + */ + + + Container.prototype.walkDecls = function walkDecls(prop, callback) { + if (!callback) { + callback = prop; + return this.walk(function (child, i) { + if (child.type === 'decl') { + return callback(child, i); + } + }); + } else if (prop instanceof RegExp) { + return this.walk(function (child, i) { + if (child.type === 'decl' && prop.test(child.prop)) { + return callback(child, i); + } + }); + } else { + return this.walk(function (child, i) { + if (child.type === 'decl' && child.prop === prop) { + return callback(child, i); + } + }); + } + }; + + /** + * Traverses the container’s descendant nodes, calling callback + * for each rule node. + * + * If you pass a filter, iteration will only happen over rules + * with matching selectors. + * + * Like {@link Container#each}, this method is safe + * to use if you are mutating arrays during iteration. + * + * @param {string|RegExp} [selector] - string or regular expression + * to filter rules by selector + * @param {childIterator} callback - iterator receives each node and index + * + * @return {false|undefined} returns `false` if iteration was broke + * + * @example + * const selectors = []; + * root.walkRules(rule => { + * selectors.push(rule.selector); + * }); + * console.log(`Your CSS uses ${selectors.length} selectors`); + */ + + + Container.prototype.walkRules = function walkRules(selector, callback) { + if (!callback) { + callback = selector; + + return this.walk(function (child, i) { + if (child.type === 'rule') { + return callback(child, i); + } + }); + } else if (selector instanceof RegExp) { + return this.walk(function (child, i) { + if (child.type === 'rule' && selector.test(child.selector)) { + return callback(child, i); + } + }); + } else { + return this.walk(function (child, i) { + if (child.type === 'rule' && child.selector === selector) { + return callback(child, i); + } + }); + } + }; + + /** + * Traverses the container’s descendant nodes, calling callback + * for each at-rule node. + * + * If you pass a filter, iteration will only happen over at-rules + * that have matching names. + * + * Like {@link Container#each}, this method is safe + * to use if you are mutating arrays during iteration. + * + * @param {string|RegExp} [name] - string or regular expression + * to filter at-rules by name + * @param {childIterator} callback - iterator receives each node and index + * + * @return {false|undefined} returns `false` if iteration was broke + * + * @example + * root.walkAtRules(rule => { + * if ( isOld(rule.name) ) rule.remove(); + * }); + * + * let first = false; + * root.walkAtRules('charset', rule => { + * if ( !first ) { + * first = true; + * } else { + * rule.remove(); + * } + * }); + */ + + + Container.prototype.walkAtRules = function walkAtRules(name, callback) { + if (!callback) { + callback = name; + return this.walk(function (child, i) { + if (child.type === 'atrule') { + return callback(child, i); + } + }); + } else if (name instanceof RegExp) { + return this.walk(function (child, i) { + if (child.type === 'atrule' && name.test(child.name)) { + return callback(child, i); + } + }); + } else { + return this.walk(function (child, i) { + if (child.type === 'atrule' && child.name === name) { + return callback(child, i); + } + }); + } + }; + + /** + * Traverses the container’s descendant nodes, calling callback + * for each comment node. + * + * Like {@link Container#each}, this method is safe + * to use if you are mutating arrays during iteration. + * + * @param {childIterator} callback - iterator receives each node and index + * + * @return {false|undefined} returns `false` if iteration was broke + * + * @example + * root.walkComments(comment => { + * comment.remove(); + * }); + */ + + + Container.prototype.walkComments = function walkComments(callback) { + return this.walk(function (child, i) { + if (child.type === 'comment') { + return callback(child, i); + } + }); + }; + + /** + * Inserts new nodes to the end of the container. + * + * @param {...(Node|object|string|Node[])} children - new nodes + * + * @return {Node} this node for methods chain + * + * @example + * const decl1 = postcss.decl({ prop: 'color', value: 'black' }); + * const decl2 = postcss.decl({ prop: 'background-color', value: 'white' }); + * rule.append(decl1, decl2); + * + * root.append({ name: 'charset', params: '"UTF-8"' }); // at-rule + * root.append({ selector: 'a' }); // rule + * rule.append({ prop: 'color', value: 'black' }); // declaration + * rule.append({ text: 'Comment' }) // comment + * + * root.append('a {}'); + * root.first.append('color: black; z-index: 1'); + */ + + + Container.prototype.append = function append() { + for (var _len = arguments.length, children = Array(_len), _key = 0; _key < _len; _key++) { + children[_key] = arguments[_key]; + } + + for (var _iterator = children, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + var child = _ref; + + var nodes = this.normalize(child, this.last); + for (var _iterator2 = nodes, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { + var _ref2; + + if (_isArray2) { + if (_i2 >= _iterator2.length) break; + _ref2 = _iterator2[_i2++]; + } else { + _i2 = _iterator2.next(); + if (_i2.done) break; + _ref2 = _i2.value; + } + + var node = _ref2; + this.nodes.push(node); + } + } + return this; + }; + + /** + * Inserts new nodes to the start of the container. + * + * @param {...(Node|object|string|Node[])} children - new nodes + * + * @return {Node} this node for methods chain + * + * @example + * const decl1 = postcss.decl({ prop: 'color', value: 'black' }); + * const decl2 = postcss.decl({ prop: 'background-color', value: 'white' }); + * rule.prepend(decl1, decl2); + * + * root.append({ name: 'charset', params: '"UTF-8"' }); // at-rule + * root.append({ selector: 'a' }); // rule + * rule.append({ prop: 'color', value: 'black' }); // declaration + * rule.append({ text: 'Comment' }) // comment + * + * root.append('a {}'); + * root.first.append('color: black; z-index: 1'); + */ + + + Container.prototype.prepend = function prepend() { + for (var _len2 = arguments.length, children = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + children[_key2] = arguments[_key2]; + } + + children = children.reverse(); + for (var _iterator3 = children, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { + var _ref3; + + if (_isArray3) { + if (_i3 >= _iterator3.length) break; + _ref3 = _iterator3[_i3++]; + } else { + _i3 = _iterator3.next(); + if (_i3.done) break; + _ref3 = _i3.value; + } + + var child = _ref3; + + var nodes = this.normalize(child, this.first, 'prepend').reverse(); + for (var _iterator4 = nodes, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { + var _ref4; + + if (_isArray4) { + if (_i4 >= _iterator4.length) break; + _ref4 = _iterator4[_i4++]; + } else { + _i4 = _iterator4.next(); + if (_i4.done) break; + _ref4 = _i4.value; + } + + var node = _ref4; + this.nodes.unshift(node); + }for (var id in this.indexes) { + this.indexes[id] = this.indexes[id] + nodes.length; + } + } + return this; + }; + + Container.prototype.cleanRaws = function cleanRaws(keepBetween) { + _Node.prototype.cleanRaws.call(this, keepBetween); + if (this.nodes) { + for (var _iterator5 = this.nodes, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) { + var _ref5; + + if (_isArray5) { + if (_i5 >= _iterator5.length) break; + _ref5 = _iterator5[_i5++]; + } else { + _i5 = _iterator5.next(); + if (_i5.done) break; + _ref5 = _i5.value; + } + + var node = _ref5; + node.cleanRaws(keepBetween); + } + } + }; + + /** + * Insert new node before old node within the container. + * + * @param {Node|number} exist - child or child’s index. + * @param {Node|object|string|Node[]} add - new node + * + * @return {Node} this node for methods chain + * + * @example + * rule.insertBefore(decl, decl.clone({ prop: '-webkit-' + decl.prop })); + */ + + + Container.prototype.insertBefore = function insertBefore(exist, add) { + exist = this.index(exist); + + var type = exist === 0 ? 'prepend' : false; + var nodes = this.normalize(add, this.nodes[exist], type).reverse(); + for (var _iterator6 = nodes, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) { + var _ref6; + + if (_isArray6) { + if (_i6 >= _iterator6.length) break; + _ref6 = _iterator6[_i6++]; + } else { + _i6 = _iterator6.next(); + if (_i6.done) break; + _ref6 = _i6.value; + } + + var node = _ref6; + this.nodes.splice(exist, 0, node); + }var index = void 0; + for (var id in this.indexes) { + index = this.indexes[id]; + if (exist <= index) { + this.indexes[id] = index + nodes.length; + } + } + + return this; + }; + + /** + * Insert new node after old node within the container. + * + * @param {Node|number} exist - child or child’s index + * @param {Node|object|string|Node[]} add - new node + * + * @return {Node} this node for methods chain + */ + + + Container.prototype.insertAfter = function insertAfter(exist, add) { + exist = this.index(exist); + + var nodes = this.normalize(add, this.nodes[exist]).reverse(); + for (var _iterator7 = nodes, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) { + var _ref7; + + if (_isArray7) { + if (_i7 >= _iterator7.length) break; + _ref7 = _iterator7[_i7++]; + } else { + _i7 = _iterator7.next(); + if (_i7.done) break; + _ref7 = _i7.value; + } + + var node = _ref7; + this.nodes.splice(exist + 1, 0, node); + }var index = void 0; + for (var id in this.indexes) { + index = this.indexes[id]; + if (exist < index) { + this.indexes[id] = index + nodes.length; + } + } + + return this; + }; + + Container.prototype.remove = function remove(child) { + if (typeof child !== 'undefined') { + (0, _warnOnce2.default)('Container#remove is deprecated. ' + 'Use Container#removeChild'); + this.removeChild(child); + } else { + _Node.prototype.remove.call(this); + } + return this; + }; + + /** + * Removes node from the container and cleans the parent properties + * from the node and its children. + * + * @param {Node|number} child - child or child’s index + * + * @return {Node} this node for methods chain + * + * @example + * rule.nodes.length //=> 5 + * rule.removeChild(decl); + * rule.nodes.length //=> 4 + * decl.parent //=> undefined + */ + + + Container.prototype.removeChild = function removeChild(child) { + child = this.index(child); + this.nodes[child].parent = undefined; + this.nodes.splice(child, 1); + + var index = void 0; + for (var id in this.indexes) { + index = this.indexes[id]; + if (index >= child) { + this.indexes[id] = index - 1; + } + } + + return this; + }; + + /** + * Removes all children from the container + * and cleans their parent properties. + * + * @return {Node} this node for methods chain + * + * @example + * rule.removeAll(); + * rule.nodes.length //=> 0 + */ + + + Container.prototype.removeAll = function removeAll() { + for (var _iterator8 = this.nodes, _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) { + var _ref8; + + if (_isArray8) { + if (_i8 >= _iterator8.length) break; + _ref8 = _iterator8[_i8++]; + } else { + _i8 = _iterator8.next(); + if (_i8.done) break; + _ref8 = _i8.value; + } + + var node = _ref8; + node.parent = undefined; + }this.nodes = []; + return this; + }; + + /** + * Passes all declaration values within the container that match pattern + * through callback, replacing those values with the returned result + * of callback. + * + * This method is useful if you are using a custom unit or function + * and need to iterate through all values. + * + * @param {string|RegExp} pattern - replace pattern + * @param {object} opts - options to speed up the search + * @param {string|string[]} opts.props - an array of property names + * @param {string} opts.fast - string that’s used + * to narrow down values and speed up + the regexp search + * @param {function|string} callback - string to replace pattern + * or callback that returns a new + * value. + * The callback will receive + * the same arguments as those + * passed to a function parameter + * of `String#replace`. + * + * @return {Node} this node for methods chain + * + * @example + * root.replaceValues(/\d+rem/, { fast: 'rem' }, string => { + * return 15 * parseInt(string) + 'px'; + * }); + */ + + + Container.prototype.replaceValues = function replaceValues(pattern, opts, callback) { + if (!callback) { + callback = opts; + opts = {}; + } + + this.walkDecls(function (decl) { + if (opts.props && opts.props.indexOf(decl.prop) === -1) return; + if (opts.fast && decl.value.indexOf(opts.fast) === -1) return; + + decl.value = decl.value.replace(pattern, callback); + }); + + return this; + }; + + /** + * Returns `true` if callback returns `true` + * for all of the container’s children. + * + * @param {childCondition} condition - iterator returns true or false. + * + * @return {boolean} is every child pass condition + * + * @example + * const noPrefixes = rule.every(i => i.prop[0] !== '-'); + */ + + + Container.prototype.every = function every(condition) { + return this.nodes.every(condition); + }; + + /** + * Returns `true` if callback returns `true` for (at least) one + * of the container’s children. + * + * @param {childCondition} condition - iterator returns true or false. + * + * @return {boolean} is some child pass condition + * + * @example + * const hasPrefix = rule.some(i => i.prop[0] === '-'); + */ + + + Container.prototype.some = function some(condition) { + return this.nodes.some(condition); + }; + + /** + * Returns a `child`’s index within the {@link Container#nodes} array. + * + * @param {Node} child - child of the current container. + * + * @return {number} child index + * + * @example + * rule.index( rule.nodes[2] ) //=> 2 + */ + + + Container.prototype.index = function index(child) { + if (typeof child === 'number') { + return child; + } else { + return this.nodes.indexOf(child); + } + }; + + /** + * The container’s first child. + * + * @type {Node} + * + * @example + * rule.first == rules.nodes[0]; + */ + + + Container.prototype.normalize = function normalize(nodes, sample) { + var _this2 = this; + + if (typeof nodes === 'string') { + var parse = __webpack_require__(37); + nodes = cleanSource(parse(nodes).nodes); + } else if (!Array.isArray(nodes)) { + if (nodes.type === 'root') { + nodes = nodes.nodes; + } else if (nodes.type) { + nodes = [nodes]; + } else if (nodes.prop) { + if (typeof nodes.value === 'undefined') { + throw new Error('Value field is missed in node creation'); + } else if (typeof nodes.value !== 'string') { + nodes.value = String(nodes.value); + } + nodes = [new _declaration2.default(nodes)]; + } else if (nodes.selector) { + var Rule = __webpack_require__(8); + nodes = [new Rule(nodes)]; + } else if (nodes.name) { + var AtRule = __webpack_require__(17); + nodes = [new AtRule(nodes)]; + } else if (nodes.text) { + nodes = [new _comment2.default(nodes)]; + } else { + throw new Error('Unknown node type in node creation'); + } + } + + var processed = nodes.map(function (i) { + if (typeof i.raws === 'undefined') i = _this2.rebuild(i); + + if (i.parent) i = i.clone(); + if (typeof i.raws.before === 'undefined') { + if (sample && typeof sample.raws.before !== 'undefined') { + i.raws.before = sample.raws.before.replace(/[^\s]/g, ''); + } + } + i.parent = _this2; + return i; + }); + + return processed; + }; + + Container.prototype.rebuild = function rebuild(node, parent) { + var _this3 = this; + + var fix = void 0; + if (node.type === 'root') { + var Root = __webpack_require__(39); + fix = new Root(); + } else if (node.type === 'atrule') { + var AtRule = __webpack_require__(17); + fix = new AtRule(); + } else if (node.type === 'rule') { + var Rule = __webpack_require__(8); + fix = new Rule(); + } else if (node.type === 'decl') { + fix = new _declaration2.default(); + } else if (node.type === 'comment') { + fix = new _comment2.default(); + } + + for (var i in node) { + if (i === 'nodes') { + fix.nodes = node.nodes.map(function (j) { + return _this3.rebuild(j, fix); + }); + } else if (i === 'parent' && parent) { + fix.parent = parent; + } else if (node.hasOwnProperty(i)) { + fix[i] = node[i]; + } + } + + return fix; + }; + + Container.prototype.eachInside = function eachInside(callback) { + (0, _warnOnce2.default)('Container#eachInside is deprecated. ' + 'Use Container#walk instead.'); + return this.walk(callback); + }; + + Container.prototype.eachDecl = function eachDecl(prop, callback) { + (0, _warnOnce2.default)('Container#eachDecl is deprecated. ' + 'Use Container#walkDecls instead.'); + return this.walkDecls(prop, callback); + }; + + Container.prototype.eachRule = function eachRule(selector, callback) { + (0, _warnOnce2.default)('Container#eachRule is deprecated. ' + 'Use Container#walkRules instead.'); + return this.walkRules(selector, callback); + }; + + Container.prototype.eachAtRule = function eachAtRule(name, callback) { + (0, _warnOnce2.default)('Container#eachAtRule is deprecated. ' + 'Use Container#walkAtRules instead.'); + return this.walkAtRules(name, callback); + }; + + Container.prototype.eachComment = function eachComment(callback) { + (0, _warnOnce2.default)('Container#eachComment is deprecated. ' + 'Use Container#walkComments instead.'); + return this.walkComments(callback); + }; + + _createClass(Container, [{ + key: 'first', + get: function get() { + if (!this.nodes) return undefined; + return this.nodes[0]; + } + + /** + * The container’s last child. + * + * @type {Node} + * + * @example + * rule.last == rule.nodes[rule.nodes.length - 1]; + */ + + }, { + key: 'last', + get: function get() { + if (!this.nodes) return undefined; + return this.nodes[this.nodes.length - 1]; + } + }, { + key: 'semicolon', + get: function get() { + (0, _warnOnce2.default)('Node#semicolon is deprecated. Use Node#raws.semicolon'); + return this.raws.semicolon; + }, + set: function set(val) { + (0, _warnOnce2.default)('Node#semicolon is deprecated. Use Node#raws.semicolon'); + this.raws.semicolon = val; + } + }, { + key: 'after', + get: function get() { + (0, _warnOnce2.default)('Node#after is deprecated. Use Node#raws.after'); + return this.raws.after; + }, + set: function set(val) { + (0, _warnOnce2.default)('Node#after is deprecated. Use Node#raws.after'); + this.raws.after = val; + } + + /** + * @memberof Container# + * @member {Node[]} nodes - an array containing the container’s children + * + * @example + * const root = postcss.parse('a { color: black }'); + * root.nodes.length //=> 1 + * root.nodes[0].selector //=> 'a' + * root.nodes[0].nodes[0].prop //=> 'color' + */ + + }]); + + return Container; +}(_node2.default); + +exports.default = Container; + +/** + * @callback childCondition + * @param {Node} node - container child + * @param {number} index - child index + * @param {Node[]} nodes - all container children + * @return {boolean} + */ + +/** + * @callback childIterator + * @param {Node} node - container child + * @param {number} index - child index + * @return {false|undefined} returning `false` will break iteration + */ + +module.exports = exports['default']; + + + +/***/ }), +/* 20 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _cssSyntaxError = __webpack_require__(34); + +var _cssSyntaxError2 = _interopRequireDefault(_cssSyntaxError); + +var _previousMap = __webpack_require__(117); + +var _previousMap2 = _interopRequireDefault(_previousMap); + +var _path = __webpack_require__(5); + +var _path2 = _interopRequireDefault(_path); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var sequence = 0; + +/** + * Represents the source CSS. + * + * @example + * const root = postcss.parse(css, { from: file }); + * const input = root.source.input; + */ + +var Input = function () { + + /** + * @param {string} css - input CSS source + * @param {object} [opts] - {@link Processor#process} options + */ + function Input(css) { + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + _classCallCheck(this, Input); + + /** + * @member {string} - input CSS source + * + * @example + * const input = postcss.parse('a{}', { from: file }).input; + * input.css //=> "a{}"; + */ + this.css = css.toString(); + + if (this.css[0] === '\uFEFF' || this.css[0] === '\uFFFE') { + this.css = this.css.slice(1); + } + + if (opts.from) { + if (/^\w+:\/\//.test(opts.from)) { + /** + * @member {string} - The absolute path to the CSS source file + * defined with the `from` option. + * + * @example + * const root = postcss.parse(css, { from: 'a.css' }); + * root.source.input.file //=> '/home/ai/a.css' + */ + this.file = opts.from; + } else { + this.file = _path2.default.resolve(opts.from); + } + } + + var map = new _previousMap2.default(this.css, opts); + if (map.text) { + /** + * @member {PreviousMap} - The input source map passed from + * a compilation step before PostCSS + * (for example, from Sass compiler). + * + * @example + * root.source.input.map.consumer().sources //=> ['a.sass'] + */ + this.map = map; + var file = map.consumer().file; + if (!this.file && file) this.file = this.mapResolve(file); + } + + if (!this.file) { + sequence += 1; + /** + * @member {string} - The unique ID of the CSS source. It will be + * created if `from` option is not provided + * (because PostCSS does not know the file path). + * + * @example + * const root = postcss.parse(css); + * root.source.input.file //=> undefined + * root.source.input.id //=> "" + */ + this.id = ''; + } + if (this.map) this.map.file = this.from; + } + + Input.prototype.error = function error(message, line, column) { + var opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; + + var result = void 0; + var origin = this.origin(line, column); + if (origin) { + result = new _cssSyntaxError2.default(message, origin.line, origin.column, origin.source, origin.file, opts.plugin); + } else { + result = new _cssSyntaxError2.default(message, line, column, this.css, this.file, opts.plugin); + } + + result.input = { line: line, column: column, source: this.css }; + if (this.file) result.input.file = this.file; + + return result; + }; + + /** + * Reads the input source map and returns a symbol position + * in the input source (e.g., in a Sass file that was compiled + * to CSS before being passed to PostCSS). + * + * @param {number} line - line in input CSS + * @param {number} column - column in input CSS + * + * @return {filePosition} position in input source + * + * @example + * root.source.input.origin(1, 1) //=> { file: 'a.css', line: 3, column: 1 } + */ + + + Input.prototype.origin = function origin(line, column) { + if (!this.map) return false; + var consumer = this.map.consumer(); + + var from = consumer.originalPositionFor({ line: line, column: column }); + if (!from.source) return false; + + var result = { + file: this.mapResolve(from.source), + line: from.line, + column: from.column + }; + + var source = consumer.sourceContentFor(from.source); + if (source) result.source = source; + + return result; + }; + + Input.prototype.mapResolve = function mapResolve(file) { + if (/^\w+:\/\//.test(file)) { + return file; + } else { + return _path2.default.resolve(this.map.consumer().sourceRoot || '.', file); + } + }; + + /** + * The CSS source identifier. Contains {@link Input#file} if the user + * set the `from` option, or {@link Input#id} if they did not. + * @type {string} + * + * @example + * const root = postcss.parse(css, { from: 'a.css' }); + * root.source.input.from //=> "/home/ai/a.css" + * + * const root = postcss.parse(css); + * root.source.input.from //=> "" + */ + + + _createClass(Input, [{ + key: 'from', + get: function get() { + return this.file || this.id; + } + }]); + + return Input; +}(); + +exports.default = Input; + +/** + * @typedef {object} filePosition + * @property {string} file - path to file + * @property {number} line - source line in file + * @property {number} column - source column in file + */ + +module.exports = exports['default']; + + + +/***/ }), +/* 21 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _cssSyntaxError = __webpack_require__(34); + +var _cssSyntaxError2 = _interopRequireDefault(_cssSyntaxError); + +var _stringifier = __webpack_require__(22); + +var _stringifier2 = _interopRequireDefault(_stringifier); + +var _stringify = __webpack_require__(40); + +var _stringify2 = _interopRequireDefault(_stringify); + +var _warnOnce = __webpack_require__(3); + +var _warnOnce2 = _interopRequireDefault(_warnOnce); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var cloneNode = function cloneNode(obj, parent) { + var cloned = new obj.constructor(); + + for (var i in obj) { + if (!obj.hasOwnProperty(i)) continue; + var value = obj[i]; + var type = typeof value === 'undefined' ? 'undefined' : _typeof(value); + + if (i === 'parent' && type === 'object') { + if (parent) cloned[i] = parent; + } else if (i === 'source') { + cloned[i] = value; + } else if (value instanceof Array) { + cloned[i] = value.map(function (j) { + return cloneNode(j, cloned); + }); + } else if (i !== 'before' && i !== 'after' && i !== 'between' && i !== 'semicolon') { + if (type === 'object' && value !== null) value = cloneNode(value); + cloned[i] = value; + } + } + + return cloned; +}; + +/** + * All node classes inherit the following common methods. + * + * @abstract + */ + +var Node = function () { + + /** + * @param {object} [defaults] - value for node properties + */ + function Node() { + var defaults = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + _classCallCheck(this, Node); + + this.raws = {}; + if ((typeof defaults === 'undefined' ? 'undefined' : _typeof(defaults)) !== 'object' && typeof defaults !== 'undefined') { + throw new Error('PostCSS nodes constructor accepts object, not ' + JSON.stringify(defaults)); + } + for (var name in defaults) { + this[name] = defaults[name]; + } + } + + /** + * Returns a CssSyntaxError instance containing the original position + * of the node in the source, showing line and column numbers and also + * a small excerpt to facilitate debugging. + * + * If present, an input source map will be used to get the original position + * of the source, even from a previous compilation step + * (e.g., from Sass compilation). + * + * This method produces very useful error messages. + * + * @param {string} message - error description + * @param {object} [opts] - options + * @param {string} opts.plugin - plugin name that created this error. + * PostCSS will set it automatically. + * @param {string} opts.word - a word inside a node’s string that should + * be highlighted as the source of the error + * @param {number} opts.index - an index inside a node’s string that should + * be highlighted as the source of the error + * + * @return {CssSyntaxError} error object to throw it + * + * @example + * if ( !variables[name] ) { + * throw decl.error('Unknown variable ' + name, { word: name }); + * // CssSyntaxError: postcss-vars:a.sass:4:3: Unknown variable $black + * // color: $black + * // a + * // ^ + * // background: white + * } + */ + + + Node.prototype.error = function error(message) { + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + if (this.source) { + var pos = this.positionBy(opts); + return this.source.input.error(message, pos.line, pos.column, opts); + } else { + return new _cssSyntaxError2.default(message); + } + }; + + /** + * This method is provided as a convenience wrapper for {@link Result#warn}. + * + * @param {Result} result - the {@link Result} instance + * that will receive the warning + * @param {string} text - warning message + * @param {object} [opts] - options + * @param {string} opts.plugin - plugin name that created this warning. + * PostCSS will set it automatically. + * @param {string} opts.word - a word inside a node’s string that should + * be highlighted as the source of the warning + * @param {number} opts.index - an index inside a node’s string that should + * be highlighted as the source of the warning + * + * @return {Warning} created warning object + * + * @example + * const plugin = postcss.plugin('postcss-deprecated', () => { + * return (root, result) => { + * root.walkDecls('bad', decl => { + * decl.warn(result, 'Deprecated property bad'); + * }); + * }; + * }); + */ + + + Node.prototype.warn = function warn(result, text, opts) { + var data = { node: this }; + for (var i in opts) { + data[i] = opts[i]; + }return result.warn(text, data); + }; + + /** + * Removes the node from its parent and cleans the parent properties + * from the node and its children. + * + * @example + * if ( decl.prop.match(/^-webkit-/) ) { + * decl.remove(); + * } + * + * @return {Node} node to make calls chain + */ + + + Node.prototype.remove = function remove() { + if (this.parent) { + this.parent.removeChild(this); + } + this.parent = undefined; + return this; + }; + + /** + * Returns a CSS string representing the node. + * + * @param {stringifier|syntax} [stringifier] - a syntax to use + * in string generation + * + * @return {string} CSS string of this node + * + * @example + * postcss.rule({ selector: 'a' }).toString() //=> "a {}" + */ + + + Node.prototype.toString = function toString() { + var stringifier = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _stringify2.default; + + if (stringifier.stringify) stringifier = stringifier.stringify; + var result = ''; + stringifier(this, function (i) { + result += i; + }); + return result; + }; + + /** + * Returns a clone of the node. + * + * The resulting cloned node and its (cloned) children will have + * a clean parent and code style properties. + * + * @param {object} [overrides] - new properties to override in the clone. + * + * @example + * const cloned = decl.clone({ prop: '-moz-' + decl.prop }); + * cloned.raws.before //=> undefined + * cloned.parent //=> undefined + * cloned.toString() //=> -moz-transform: scale(0) + * + * @return {Node} clone of the node + */ + + + Node.prototype.clone = function clone() { + var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + var cloned = cloneNode(this); + for (var name in overrides) { + cloned[name] = overrides[name]; + } + return cloned; + }; + + /** + * Shortcut to clone the node and insert the resulting cloned node + * before the current node. + * + * @param {object} [overrides] - new properties to override in the clone. + * + * @example + * decl.cloneBefore({ prop: '-moz-' + decl.prop }); + * + * @return {Node} - new node + */ + + + Node.prototype.cloneBefore = function cloneBefore() { + var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + var cloned = this.clone(overrides); + this.parent.insertBefore(this, cloned); + return cloned; + }; + + /** + * Shortcut to clone the node and insert the resulting cloned node + * after the current node. + * + * @param {object} [overrides] - new properties to override in the clone. + * + * @return {Node} - new node + */ + + + Node.prototype.cloneAfter = function cloneAfter() { + var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + var cloned = this.clone(overrides); + this.parent.insertAfter(this, cloned); + return cloned; + }; + + /** + * Inserts node(s) before the current node and removes the current node. + * + * @param {...Node} nodes - node(s) to replace current one + * + * @example + * if ( atrule.name == 'mixin' ) { + * atrule.replaceWith(mixinRules[atrule.params]); + * } + * + * @return {Node} current node to methods chain + */ + + + Node.prototype.replaceWith = function replaceWith() { + if (this.parent) { + for (var _len = arguments.length, nodes = Array(_len), _key = 0; _key < _len; _key++) { + nodes[_key] = arguments[_key]; + } + + for (var _iterator = nodes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + var node = _ref; + + this.parent.insertBefore(this, node); + } + + this.remove(); + } + + return this; + }; + + /** + * Removes the node from its current parent and inserts it + * at the end of `newParent`. + * + * This will clean the `before` and `after` code {@link Node#raws} data + * from the node and replace them with the indentation style of `newParent`. + * It will also clean the `between` property + * if `newParent` is in another {@link Root}. + * + * @param {Container} newParent - container node where the current node + * will be moved + * + * @example + * atrule.moveTo(atrule.root()); + * + * @return {Node} current node to methods chain + */ + + + Node.prototype.moveTo = function moveTo(newParent) { + this.cleanRaws(this.root() === newParent.root()); + this.remove(); + newParent.append(this); + return this; + }; + + /** + * Removes the node from its current parent and inserts it into + * a new parent before `otherNode`. + * + * This will also clean the node’s code style properties just as it would + * in {@link Node#moveTo}. + * + * @param {Node} otherNode - node that will be before current node + * + * @return {Node} current node to methods chain + */ + + + Node.prototype.moveBefore = function moveBefore(otherNode) { + this.cleanRaws(this.root() === otherNode.root()); + this.remove(); + otherNode.parent.insertBefore(otherNode, this); + return this; + }; + + /** + * Removes the node from its current parent and inserts it into + * a new parent after `otherNode`. + * + * This will also clean the node’s code style properties just as it would + * in {@link Node#moveTo}. + * + * @param {Node} otherNode - node that will be after current node + * + * @return {Node} current node to methods chain + */ + + + Node.prototype.moveAfter = function moveAfter(otherNode) { + this.cleanRaws(this.root() === otherNode.root()); + this.remove(); + otherNode.parent.insertAfter(otherNode, this); + return this; + }; + + /** + * Returns the next child of the node’s parent. + * Returns `undefined` if the current node is the last child. + * + * @return {Node|undefined} next node + * + * @example + * if ( comment.text === 'delete next' ) { + * const next = comment.next(); + * if ( next ) { + * next.remove(); + * } + * } + */ + + + Node.prototype.next = function next() { + var index = this.parent.index(this); + return this.parent.nodes[index + 1]; + }; + + /** + * Returns the previous child of the node’s parent. + * Returns `undefined` if the current node is the first child. + * + * @return {Node|undefined} previous node + * + * @example + * const annotation = decl.prev(); + * if ( annotation.type == 'comment' ) { + * readAnnotation(annotation.text); + * } + */ + + + Node.prototype.prev = function prev() { + var index = this.parent.index(this); + return this.parent.nodes[index - 1]; + }; + + Node.prototype.toJSON = function toJSON() { + var fixed = {}; + + for (var name in this) { + if (!this.hasOwnProperty(name)) continue; + if (name === 'parent') continue; + var value = this[name]; + + if (value instanceof Array) { + fixed[name] = value.map(function (i) { + if ((typeof i === 'undefined' ? 'undefined' : _typeof(i)) === 'object' && i.toJSON) { + return i.toJSON(); + } else { + return i; + } + }); + } else if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.toJSON) { + fixed[name] = value.toJSON(); + } else { + fixed[name] = value; + } + } + + return fixed; + }; + + /** + * Returns a {@link Node#raws} value. If the node is missing + * the code style property (because the node was manually built or cloned), + * PostCSS will try to autodetect the code style property by looking + * at other nodes in the tree. + * + * @param {string} prop - name of code style property + * @param {string} [defaultType] - name of default value, it can be missed + * if the value is the same as prop + * + * @example + * const root = postcss.parse('a { background: white }'); + * root.nodes[0].append({ prop: 'color', value: 'black' }); + * root.nodes[0].nodes[1].raws.before //=> undefined + * root.nodes[0].nodes[1].raw('before') //=> ' ' + * + * @return {string} code style value + */ + + + Node.prototype.raw = function raw(prop, defaultType) { + var str = new _stringifier2.default(); + return str.raw(this, prop, defaultType); + }; + + /** + * Finds the Root instance of the node’s tree. + * + * @example + * root.nodes[0].nodes[0].root() === root + * + * @return {Root} root parent + */ + + + Node.prototype.root = function root() { + var result = this; + while (result.parent) { + result = result.parent; + }return result; + }; + + Node.prototype.cleanRaws = function cleanRaws(keepBetween) { + delete this.raws.before; + delete this.raws.after; + if (!keepBetween) delete this.raws.between; + }; + + Node.prototype.positionInside = function positionInside(index) { + var string = this.toString(); + var column = this.source.start.column; + var line = this.source.start.line; + + for (var i = 0; i < index; i++) { + if (string[i] === '\n') { + column = 1; + line += 1; + } else { + column += 1; + } + } + + return { line: line, column: column }; + }; + + Node.prototype.positionBy = function positionBy(opts) { + var pos = this.source.start; + if (opts.index) { + pos = this.positionInside(opts.index); + } else if (opts.word) { + var index = this.toString().indexOf(opts.word); + if (index !== -1) pos = this.positionInside(index); + } + return pos; + }; + + Node.prototype.removeSelf = function removeSelf() { + (0, _warnOnce2.default)('Node#removeSelf is deprecated. Use Node#remove.'); + return this.remove(); + }; + + Node.prototype.replace = function replace(nodes) { + (0, _warnOnce2.default)('Node#replace is deprecated. Use Node#replaceWith'); + return this.replaceWith(nodes); + }; + + Node.prototype.style = function style(own, detect) { + (0, _warnOnce2.default)('Node#style() is deprecated. Use Node#raw()'); + return this.raw(own, detect); + }; + + Node.prototype.cleanStyles = function cleanStyles(keepBetween) { + (0, _warnOnce2.default)('Node#cleanStyles() is deprecated. Use Node#cleanRaws()'); + return this.cleanRaws(keepBetween); + }; + + _createClass(Node, [{ + key: 'before', + get: function get() { + (0, _warnOnce2.default)('Node#before is deprecated. Use Node#raws.before'); + return this.raws.before; + }, + set: function set(val) { + (0, _warnOnce2.default)('Node#before is deprecated. Use Node#raws.before'); + this.raws.before = val; + } + }, { + key: 'between', + get: function get() { + (0, _warnOnce2.default)('Node#between is deprecated. Use Node#raws.between'); + return this.raws.between; + }, + set: function set(val) { + (0, _warnOnce2.default)('Node#between is deprecated. Use Node#raws.between'); + this.raws.between = val; + } + + /** + * @memberof Node# + * @member {string} type - String representing the node’s type. + * Possible values are `root`, `atrule`, `rule`, + * `decl`, or `comment`. + * + * @example + * postcss.decl({ prop: 'color', value: 'black' }).type //=> 'decl' + */ + + /** + * @memberof Node# + * @member {Container} parent - the node’s parent node. + * + * @example + * root.nodes[0].parent == root; + */ + + /** + * @memberof Node# + * @member {source} source - the input source of the node + * + * The property is used in source map generation. + * + * If you create a node manually (e.g., with `postcss.decl()`), + * that node will not have a `source` property and will be absent + * from the source map. For this reason, the plugin developer should + * consider cloning nodes to create new ones (in which case the new node’s + * source will reference the original, cloned node) or setting + * the `source` property manually. + * + * ```js + * // Bad + * const prefixed = postcss.decl({ + * prop: '-moz-' + decl.prop, + * value: decl.value + * }); + * + * // Good + * const prefixed = decl.clone({ prop: '-moz-' + decl.prop }); + * ``` + * + * ```js + * if ( atrule.name == 'add-link' ) { + * const rule = postcss.rule({ selector: 'a', source: atrule.source }); + * atrule.parent.insertBefore(atrule, rule); + * } + * ``` + * + * @example + * decl.source.input.from //=> '/home/ai/a.sass' + * decl.source.start //=> { line: 10, column: 2 } + * decl.source.end //=> { line: 10, column: 12 } + */ + + /** + * @memberof Node# + * @member {object} raws - Information to generate byte-to-byte equal + * node string as it was in the origin input. + * + * Every parser saves its own properties, + * but the default CSS parser uses: + * + * * `before`: the space symbols before the node. It also stores `*` + * and `_` symbols before the declaration (IE hack). + * * `after`: the space symbols after the last child of the node + * to the end of the node. + * * `between`: the symbols between the property and value + * for declarations, selector and `{` for rules, or last parameter + * and `{` for at-rules. + * * `semicolon`: contains true if the last child has + * an (optional) semicolon. + * * `afterName`: the space between the at-rule name and its parameters. + * * `left`: the space symbols between `/*` and the comment’s text. + * * `right`: the space symbols between the comment’s text + * and */. + * * `important`: the content of the important statement, + * if it is not just `!important`. + * + * PostCSS cleans selectors, declaration values and at-rule parameters + * from comments and extra spaces, but it stores origin content in raws + * properties. As such, if you don’t change a declaration’s value, + * PostCSS will use the raw value with comments. + * + * @example + * const root = postcss.parse('a {\n color:black\n}') + * root.first.first.raws //=> { before: '\n ', between: ':' } + */ + + }]); + + return Node; +}(); + +exports.default = Node; + +/** + * @typedef {object} position + * @property {number} line - source line in file + * @property {number} column - source column in file + */ + +/** + * @typedef {object} source + * @property {Input} input - {@link Input} with input file + * @property {position} start - The starting position of the node’s source + * @property {position} end - The ending position of the node’s source + */ + +module.exports = exports['default']; + + + +/***/ }), +/* 22 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var defaultRaw = { + colon: ': ', + indent: ' ', + beforeDecl: '\n', + beforeRule: '\n', + beforeOpen: ' ', + beforeClose: '\n', + beforeComment: '\n', + after: '\n', + emptyBody: '', + commentLeft: ' ', + commentRight: ' ' +}; + +function capitalize(str) { + return str[0].toUpperCase() + str.slice(1); +} + +var Stringifier = function () { + function Stringifier(builder) { + _classCallCheck(this, Stringifier); + + this.builder = builder; + } + + Stringifier.prototype.stringify = function stringify(node, semicolon) { + this[node.type](node, semicolon); + }; + + Stringifier.prototype.root = function root(node) { + this.body(node); + if (node.raws.after) this.builder(node.raws.after); + }; + + Stringifier.prototype.comment = function comment(node) { + var left = this.raw(node, 'left', 'commentLeft'); + var right = this.raw(node, 'right', 'commentRight'); + this.builder('/*' + left + node.text + right + '*/', node); + }; + + Stringifier.prototype.decl = function decl(node, semicolon) { + var between = this.raw(node, 'between', 'colon'); + var string = node.prop + between + this.rawValue(node, 'value'); + + if (node.important) { + string += node.raws.important || ' !important'; + } + + if (semicolon) string += ';'; + this.builder(string, node); + }; + + Stringifier.prototype.rule = function rule(node) { + this.block(node, this.rawValue(node, 'selector')); + }; + + Stringifier.prototype.atrule = function atrule(node, semicolon) { + var name = '@' + node.name; + var params = node.params ? this.rawValue(node, 'params') : ''; + + if (typeof node.raws.afterName !== 'undefined') { + name += node.raws.afterName; + } else if (params) { + name += ' '; + } + + if (node.nodes) { + this.block(node, name + params); + } else { + var end = (node.raws.between || '') + (semicolon ? ';' : ''); + this.builder(name + params + end, node); + } + }; + + Stringifier.prototype.body = function body(node) { + var last = node.nodes.length - 1; + while (last > 0) { + if (node.nodes[last].type !== 'comment') break; + last -= 1; + } + + var semicolon = this.raw(node, 'semicolon'); + for (var i = 0; i < node.nodes.length; i++) { + var child = node.nodes[i]; + var before = this.raw(child, 'before'); + if (before) this.builder(before); + this.stringify(child, last !== i || semicolon); + } + }; + + Stringifier.prototype.block = function block(node, start) { + var between = this.raw(node, 'between', 'beforeOpen'); + this.builder(start + between + '{', node, 'start'); + + var after = void 0; + if (node.nodes && node.nodes.length) { + this.body(node); + after = this.raw(node, 'after'); + } else { + after = this.raw(node, 'after', 'emptyBody'); + } + + if (after) this.builder(after); + this.builder('}', node, 'end'); + }; + + Stringifier.prototype.raw = function raw(node, own, detect) { + var value = void 0; + if (!detect) detect = own; + + // Already had + if (own) { + value = node.raws[own]; + if (typeof value !== 'undefined') return value; + } + + var parent = node.parent; + + // Hack for first rule in CSS + if (detect === 'before') { + if (!parent || parent.type === 'root' && parent.first === node) { + return ''; + } + } + + // Floating child without parent + if (!parent) return defaultRaw[detect]; + + // Detect style by other nodes + var root = node.root(); + if (!root.rawCache) root.rawCache = {}; + if (typeof root.rawCache[detect] !== 'undefined') { + return root.rawCache[detect]; + } + + if (detect === 'before' || detect === 'after') { + return this.beforeAfter(node, detect); + } else { + var method = 'raw' + capitalize(detect); + if (this[method]) { + value = this[method](root, node); + } else { + root.walk(function (i) { + value = i.raws[own]; + if (typeof value !== 'undefined') return false; + }); + } + } + + if (typeof value === 'undefined') value = defaultRaw[detect]; + + root.rawCache[detect] = value; + return value; + }; + + Stringifier.prototype.rawSemicolon = function rawSemicolon(root) { + var value = void 0; + root.walk(function (i) { + if (i.nodes && i.nodes.length && i.last.type === 'decl') { + value = i.raws.semicolon; + if (typeof value !== 'undefined') return false; + } + }); + return value; + }; + + Stringifier.prototype.rawEmptyBody = function rawEmptyBody(root) { + var value = void 0; + root.walk(function (i) { + if (i.nodes && i.nodes.length === 0) { + value = i.raws.after; + if (typeof value !== 'undefined') return false; + } + }); + return value; + }; + + Stringifier.prototype.rawIndent = function rawIndent(root) { + if (root.raws.indent) return root.raws.indent; + var value = void 0; + root.walk(function (i) { + var p = i.parent; + if (p && p !== root && p.parent && p.parent === root) { + if (typeof i.raws.before !== 'undefined') { + var parts = i.raws.before.split('\n'); + value = parts[parts.length - 1]; + value = value.replace(/[^\s]/g, ''); + return false; + } + } + }); + return value; + }; + + Stringifier.prototype.rawBeforeComment = function rawBeforeComment(root, node) { + var value = void 0; + root.walkComments(function (i) { + if (typeof i.raws.before !== 'undefined') { + value = i.raws.before; + if (value.indexOf('\n') !== -1) { + value = value.replace(/[^\n]+$/, ''); + } + return false; + } + }); + if (typeof value === 'undefined') { + value = this.raw(node, null, 'beforeDecl'); + } + return value; + }; + + Stringifier.prototype.rawBeforeDecl = function rawBeforeDecl(root, node) { + var value = void 0; + root.walkDecls(function (i) { + if (typeof i.raws.before !== 'undefined') { + value = i.raws.before; + if (value.indexOf('\n') !== -1) { + value = value.replace(/[^\n]+$/, ''); + } + return false; + } + }); + if (typeof value === 'undefined') { + value = this.raw(node, null, 'beforeRule'); + } + return value; + }; + + Stringifier.prototype.rawBeforeRule = function rawBeforeRule(root) { + var value = void 0; + root.walk(function (i) { + if (i.nodes && (i.parent !== root || root.first !== i)) { + if (typeof i.raws.before !== 'undefined') { + value = i.raws.before; + if (value.indexOf('\n') !== -1) { + value = value.replace(/[^\n]+$/, ''); + } + return false; + } + } + }); + return value; + }; + + Stringifier.prototype.rawBeforeClose = function rawBeforeClose(root) { + var value = void 0; + root.walk(function (i) { + if (i.nodes && i.nodes.length > 0) { + if (typeof i.raws.after !== 'undefined') { + value = i.raws.after; + if (value.indexOf('\n') !== -1) { + value = value.replace(/[^\n]+$/, ''); + } + return false; + } + } + }); + return value; + }; + + Stringifier.prototype.rawBeforeOpen = function rawBeforeOpen(root) { + var value = void 0; + root.walk(function (i) { + if (i.type !== 'decl') { + value = i.raws.between; + if (typeof value !== 'undefined') return false; + } + }); + return value; + }; + + Stringifier.prototype.rawColon = function rawColon(root) { + var value = void 0; + root.walkDecls(function (i) { + if (typeof i.raws.between !== 'undefined') { + value = i.raws.between.replace(/[^\s:]/g, ''); + return false; + } + }); + return value; + }; + + Stringifier.prototype.beforeAfter = function beforeAfter(node, detect) { + var value = void 0; + if (node.type === 'decl') { + value = this.raw(node, null, 'beforeDecl'); + } else if (node.type === 'comment') { + value = this.raw(node, null, 'beforeComment'); + } else if (detect === 'before') { + value = this.raw(node, null, 'beforeRule'); + } else { + value = this.raw(node, null, 'beforeClose'); + } + + var buf = node.parent; + var depth = 0; + while (buf && buf.type !== 'root') { + depth += 1; + buf = buf.parent; + } + + if (value.indexOf('\n') !== -1) { + var indent = this.raw(node, null, 'indent'); + if (indent.length) { + for (var step = 0; step < depth; step++) { + value += indent; + } + } + } + + return value; + }; + + Stringifier.prototype.rawValue = function rawValue(node, prop) { + var value = node[prop]; + var raw = node.raws[prop]; + if (raw && raw.value === value) { + return raw.raw; + } else { + return value; + } + }; + + return Stringifier; +}(); + +exports.default = Stringifier; +module.exports = exports['default']; + + + +/***/ }), +/* 23 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _node = __webpack_require__(6); + +var _node2 = _interopRequireDefault(_node); + +var _types = __webpack_require__(0); + +var types = _interopRequireWildcard(_types); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Container = function (_Node) { + _inherits(Container, _Node); + + function Container(opts) { + _classCallCheck(this, Container); + + var _this = _possibleConstructorReturn(this, _Node.call(this, opts)); + + if (!_this.nodes) { + _this.nodes = []; + } + return _this; + } + + Container.prototype.append = function append(selector) { + selector.parent = this; + this.nodes.push(selector); + return this; + }; + + Container.prototype.prepend = function prepend(selector) { + selector.parent = this; + this.nodes.unshift(selector); + return this; + }; + + Container.prototype.at = function at(index) { + return this.nodes[index]; + }; + + Container.prototype.index = function index(child) { + if (typeof child === 'number') { + return child; + } + return this.nodes.indexOf(child); + }; + + Container.prototype.removeChild = function removeChild(child) { + child = this.index(child); + this.at(child).parent = undefined; + this.nodes.splice(child, 1); + + var index = void 0; + for (var id in this.indexes) { + index = this.indexes[id]; + if (index >= child) { + this.indexes[id] = index - 1; + } + } + + return this; + }; + + Container.prototype.removeAll = function removeAll() { + for (var _iterator = this.nodes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + var node = _ref; + + node.parent = undefined; + } + this.nodes = []; + return this; + }; + + Container.prototype.empty = function empty() { + return this.removeAll(); + }; + + Container.prototype.insertAfter = function insertAfter(oldNode, newNode) { + var oldIndex = this.index(oldNode); + this.nodes.splice(oldIndex + 1, 0, newNode); + + var index = void 0; + for (var id in this.indexes) { + index = this.indexes[id]; + if (oldIndex <= index) { + this.indexes[id] = index + this.nodes.length; + } + } + + return this; + }; + + Container.prototype.insertBefore = function insertBefore(oldNode, newNode) { + var oldIndex = this.index(oldNode); + this.nodes.splice(oldIndex, 0, newNode); + + var index = void 0; + for (var id in this.indexes) { + index = this.indexes[id]; + if (oldIndex <= index) { + this.indexes[id] = index + this.nodes.length; + } + } + + return this; + }; + + Container.prototype.each = function each(callback) { + if (!this.lastEach) { + this.lastEach = 0; + } + if (!this.indexes) { + this.indexes = {}; + } + + this.lastEach++; + var id = this.lastEach; + this.indexes[id] = 0; + + if (!this.length) { + return undefined; + } + + var index = void 0, + result = void 0; + while (this.indexes[id] < this.length) { + index = this.indexes[id]; + result = callback(this.at(index), index); + if (result === false) { + break; + } + + this.indexes[id] += 1; + } + + delete this.indexes[id]; + + if (result === false) { + return false; + } + }; + + Container.prototype.walk = function walk(callback) { + return this.each(function (node, i) { + var result = callback(node, i); + + if (result !== false && node.length) { + result = node.walk(callback); + } + + if (result === false) { + return false; + } + }); + }; + + Container.prototype.walkAttributes = function walkAttributes(callback) { + var _this2 = this; + + return this.walk(function (selector) { + if (selector.type === types.ATTRIBUTE) { + return callback.call(_this2, selector); + } + }); + }; + + Container.prototype.walkClasses = function walkClasses(callback) { + var _this3 = this; + + return this.walk(function (selector) { + if (selector.type === types.CLASS) { + return callback.call(_this3, selector); + } + }); + }; + + Container.prototype.walkCombinators = function walkCombinators(callback) { + var _this4 = this; + + return this.walk(function (selector) { + if (selector.type === types.COMBINATOR) { + return callback.call(_this4, selector); + } + }); + }; + + Container.prototype.walkComments = function walkComments(callback) { + var _this5 = this; + + return this.walk(function (selector) { + if (selector.type === types.COMMENT) { + return callback.call(_this5, selector); + } + }); + }; + + Container.prototype.walkIds = function walkIds(callback) { + var _this6 = this; + + return this.walk(function (selector) { + if (selector.type === types.ID) { + return callback.call(_this6, selector); + } + }); + }; + + Container.prototype.walkNesting = function walkNesting(callback) { + var _this7 = this; + + return this.walk(function (selector) { + if (selector.type === types.NESTING) { + return callback.call(_this7, selector); + } + }); + }; + + Container.prototype.walkPseudos = function walkPseudos(callback) { + var _this8 = this; + + return this.walk(function (selector) { + if (selector.type === types.PSEUDO) { + return callback.call(_this8, selector); + } + }); + }; + + Container.prototype.walkTags = function walkTags(callback) { + var _this9 = this; + + return this.walk(function (selector) { + if (selector.type === types.TAG) { + return callback.call(_this9, selector); + } + }); + }; + + Container.prototype.walkUniversals = function walkUniversals(callback) { + var _this10 = this; + + return this.walk(function (selector) { + if (selector.type === types.UNIVERSAL) { + return callback.call(_this10, selector); + } + }); + }; + + Container.prototype.split = function split(callback) { + var _this11 = this; + + var current = []; + return this.reduce(function (memo, node, index) { + var split = callback.call(_this11, node); + current.push(node); + if (split) { + memo.push(current); + current = []; + } else if (index === _this11.length - 1) { + memo.push(current); + } + return memo; + }, []); + }; + + Container.prototype.map = function map(callback) { + return this.nodes.map(callback); + }; + + Container.prototype.reduce = function reduce(callback, memo) { + return this.nodes.reduce(callback, memo); + }; + + Container.prototype.every = function every(callback) { + return this.nodes.every(callback); + }; + + Container.prototype.some = function some(callback) { + return this.nodes.some(callback); + }; + + Container.prototype.filter = function filter(callback) { + return this.nodes.filter(callback); + }; + + Container.prototype.sort = function sort(callback) { + return this.nodes.sort(callback); + }; + + Container.prototype.toString = function toString() { + return this.map(String).join(''); + }; + + _createClass(Container, [{ + key: 'first', + get: function get() { + return this.at(0); + } + }, { + key: 'last', + get: function get() { + return this.at(this.length - 1); + } + }, { + key: 'length', + get: function get() { + return this.nodes.length; + } + }]); + + return Container; +}(_node2.default); + +exports.default = Container; +module.exports = exports['default']; + +/***/ }), +/* 24 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _container = __webpack_require__(12); + +var _container2 = _interopRequireDefault(_container); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/** + * Represents an at-rule. + * + * If it’s followed in the CSS by a {} block, this node will have + * a nodes property representing its children. + * + * @extends Container + * + * @example + * const root = postcss.parse('@charset "UTF-8"; @media print {}'); + * + * const charset = root.first; + * charset.type //=> 'atrule' + * charset.nodes //=> undefined + * + * const media = root.last; + * media.nodes //=> [] + */ +var AtRule = function (_Container) { + _inherits(AtRule, _Container); + + function AtRule(defaults) { + _classCallCheck(this, AtRule); + + var _this = _possibleConstructorReturn(this, _Container.call(this, defaults)); + + _this.type = 'atrule'; + return _this; + } + + AtRule.prototype.append = function append() { + var _Container$prototype$; + + if (!this.nodes) this.nodes = []; + + for (var _len = arguments.length, children = Array(_len), _key = 0; _key < _len; _key++) { + children[_key] = arguments[_key]; + } + + return (_Container$prototype$ = _Container.prototype.append).call.apply(_Container$prototype$, [this].concat(children)); + }; + + AtRule.prototype.prepend = function prepend() { + var _Container$prototype$2; + + if (!this.nodes) this.nodes = []; + + for (var _len2 = arguments.length, children = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + children[_key2] = arguments[_key2]; + } + + return (_Container$prototype$2 = _Container.prototype.prepend).call.apply(_Container$prototype$2, [this].concat(children)); + }; + + /** + * @memberof AtRule# + * @member {string} name - the at-rule’s name immediately follows the `@` + * + * @example + * const root = postcss.parse('@media print {}'); + * media.name //=> 'media' + * const media = root.first; + */ + + /** + * @memberof AtRule# + * @member {string} params - the at-rule’s parameters, the values + * that follow the at-rule’s name but precede + * any {} block + * + * @example + * const root = postcss.parse('@media print, screen {}'); + * const media = root.first; + * media.params //=> 'print, screen' + */ + + /** + * @memberof AtRule# + * @member {object} raws - Information to generate byte-to-byte equal + * node string as it was in the origin input. + * + * Every parser saves its own properties, + * but the default CSS parser uses: + * + * * `before`: the space symbols before the node. It also stores `*` + * and `_` symbols before the declaration (IE hack). + * * `after`: the space symbols after the last child of the node + * to the end of the node. + * * `between`: the symbols between the property and value + * for declarations, selector and `{` for rules, or last parameter + * and `{` for at-rules. + * * `semicolon`: contains true if the last child has + * an (optional) semicolon. + * * `afterName`: the space between the at-rule name and its parameters. + * + * PostCSS cleans at-rule parameters from comments and extra spaces, + * but it stores origin content in raws properties. + * As such, if you don’t change a declaration’s value, + * PostCSS will use the raw value with comments. + * + * @example + * const root = postcss.parse(' @media\nprint {\n}') + * root.first.first.raws //=> { before: ' ', + * // between: ' ', + * // afterName: '\n', + * // after: '\n' } + */ + + + return AtRule; +}(_container2.default); + +exports.default = AtRule; +module.exports = exports['default']; + + + +/***/ }), +/* 25 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _node = __webpack_require__(27); + +var _node2 = _interopRequireDefault(_node); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/** + * Represents a comment between declarations or statements (rule and at-rules). + * + * Comments inside selectors, at-rule parameters, or declaration values + * will be stored in the `raws` properties explained above. + * + * @extends Node + */ +var Comment = function (_Node) { + _inherits(Comment, _Node); + + function Comment(defaults) { + _classCallCheck(this, Comment); + + var _this = _possibleConstructorReturn(this, _Node.call(this, defaults)); + + _this.type = 'comment'; + return _this; + } + + /** + * @memberof Comment# + * @member {string} text - the comment’s text + */ + + /** + * @memberof Comment# + * @member {object} raws - Information to generate byte-to-byte equal + * node string as it was in the origin input. + * + * Every parser saves its own properties, + * but the default CSS parser uses: + * + * * `before`: the space symbols before the node. + * * `left`: the space symbols between `/*` and the comment’s text. + * * `right`: the space symbols between the comment’s text. + */ + + + return Comment; +}(_node2.default); + +exports.default = Comment; +module.exports = exports['default']; + + + +/***/ }), +/* 26 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _cssSyntaxError = __webpack_require__(67); + +var _cssSyntaxError2 = _interopRequireDefault(_cssSyntaxError); + +var _previousMap = __webpack_require__(140); + +var _previousMap2 = _interopRequireDefault(_previousMap); + +var _path = __webpack_require__(5); + +var _path2 = _interopRequireDefault(_path); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var sequence = 0; + +/** + * Represents the source CSS. + * + * @example + * const root = postcss.parse(css, { from: file }); + * const input = root.source.input; + */ + +var Input = function () { + + /** + * @param {string} css - input CSS source + * @param {object} [opts] - {@link Processor#process} options + */ + function Input(css) { + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + _classCallCheck(this, Input); + + /** + * @member {string} - input CSS source + * + * @example + * const input = postcss.parse('a{}', { from: file }).input; + * input.css //=> "a{}"; + */ + this.css = css.toString(); + + if (this.css[0] === '\uFEFF' || this.css[0] === '\uFFFE') { + this.css = this.css.slice(1); + } + + if (opts.from) { + if (/^\w+:\/\//.test(opts.from)) { + /** + * @member {string} - The absolute path to the CSS source file + * defined with the `from` option. + * + * @example + * const root = postcss.parse(css, { from: 'a.css' }); + * root.source.input.file //=> '/home/ai/a.css' + */ + this.file = opts.from; + } else { + this.file = _path2.default.resolve(opts.from); + } + } + + var map = new _previousMap2.default(this.css, opts); + if (map.text) { + /** + * @member {PreviousMap} - The input source map passed from + * a compilation step before PostCSS + * (for example, from Sass compiler). + * + * @example + * root.source.input.map.consumer().sources //=> ['a.sass'] + */ + this.map = map; + var file = map.consumer().file; + if (!this.file && file) this.file = this.mapResolve(file); + } + + if (!this.file) { + sequence += 1; + /** + * @member {string} - The unique ID of the CSS source. It will be + * created if `from` option is not provided + * (because PostCSS does not know the file path). + * + * @example + * const root = postcss.parse(css); + * root.source.input.file //=> undefined + * root.source.input.id //=> "" + */ + this.id = ''; + } + if (this.map) this.map.file = this.from; + } + + Input.prototype.error = function error(message, line, column) { + var opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; + + var result = void 0; + var origin = this.origin(line, column); + if (origin) { + result = new _cssSyntaxError2.default(message, origin.line, origin.column, origin.source, origin.file, opts.plugin); + } else { + result = new _cssSyntaxError2.default(message, line, column, this.css, this.file, opts.plugin); + } + + result.input = { line: line, column: column, source: this.css }; + if (this.file) result.input.file = this.file; + + return result; + }; + + /** + * Reads the input source map and returns a symbol position + * in the input source (e.g., in a Sass file that was compiled + * to CSS before being passed to PostCSS). + * + * @param {number} line - line in input CSS + * @param {number} column - column in input CSS + * + * @return {filePosition} position in input source + * + * @example + * root.source.input.origin(1, 1) //=> { file: 'a.css', line: 3, column: 1 } + */ + + + Input.prototype.origin = function origin(line, column) { + if (!this.map) return false; + var consumer = this.map.consumer(); + + var from = consumer.originalPositionFor({ line: line, column: column }); + if (!from.source) return false; + + var result = { + file: this.mapResolve(from.source), + line: from.line, + column: from.column + }; + + var source = consumer.sourceContentFor(from.source); + if (source) result.source = source; + + return result; + }; + + Input.prototype.mapResolve = function mapResolve(file) { + if (/^\w+:\/\//.test(file)) { + return file; + } else { + return _path2.default.resolve(this.map.consumer().sourceRoot || '.', file); + } + }; + + /** + * The CSS source identifier. Contains {@link Input#file} if the user + * set the `from` option, or {@link Input#id} if they did not. + * @type {string} + * + * @example + * const root = postcss.parse(css, { from: 'a.css' }); + * root.source.input.from //=> "/home/ai/a.css" + * + * const root = postcss.parse(css); + * root.source.input.from //=> "" + */ + + + _createClass(Input, [{ + key: 'from', + get: function get() { + return this.file || this.id; + } + }]); + + return Input; +}(); + +exports.default = Input; + +/** + * @typedef {object} filePosition + * @property {string} file - path to file + * @property {number} line - source line in file + * @property {number} column - source column in file + */ + +module.exports = exports['default']; + + + +/***/ }), +/* 27 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _cssSyntaxError = __webpack_require__(67); + +var _cssSyntaxError2 = _interopRequireDefault(_cssSyntaxError); + +var _stringifier = __webpack_require__(29); + +var _stringifier2 = _interopRequireDefault(_stringifier); + +var _stringify = __webpack_require__(73); + +var _stringify2 = _interopRequireDefault(_stringify); + +var _warnOnce = __webpack_require__(144); + +var _warnOnce2 = _interopRequireDefault(_warnOnce); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var cloneNode = function cloneNode(obj, parent) { + var cloned = new obj.constructor(); + + for (var i in obj) { + if (!obj.hasOwnProperty(i)) continue; + var value = obj[i]; + var type = typeof value === 'undefined' ? 'undefined' : _typeof(value); + + if (i === 'parent' && type === 'object') { + if (parent) cloned[i] = parent; + } else if (i === 'source') { + cloned[i] = value; + } else if (value instanceof Array) { + cloned[i] = value.map(function (j) { + return cloneNode(j, cloned); + }); + } else { + if (type === 'object' && value !== null) value = cloneNode(value); + cloned[i] = value; + } + } + + return cloned; +}; + +/** + * All node classes inherit the following common methods. + * + * @abstract + */ + +var Node = function () { + + /** + * @param {object} [defaults] - value for node properties + */ + function Node() { + var defaults = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + _classCallCheck(this, Node); + + this.raws = {}; + if ((typeof defaults === 'undefined' ? 'undefined' : _typeof(defaults)) !== 'object' && typeof defaults !== 'undefined') { + throw new Error('PostCSS nodes constructor accepts object, not ' + JSON.stringify(defaults)); + } + for (var name in defaults) { + this[name] = defaults[name]; + } + } + + /** + * Returns a CssSyntaxError instance containing the original position + * of the node in the source, showing line and column numbers and also + * a small excerpt to facilitate debugging. + * + * If present, an input source map will be used to get the original position + * of the source, even from a previous compilation step + * (e.g., from Sass compilation). + * + * This method produces very useful error messages. + * + * @param {string} message - error description + * @param {object} [opts] - options + * @param {string} opts.plugin - plugin name that created this error. + * PostCSS will set it automatically. + * @param {string} opts.word - a word inside a node’s string that should + * be highlighted as the source of the error + * @param {number} opts.index - an index inside a node’s string that should + * be highlighted as the source of the error + * + * @return {CssSyntaxError} error object to throw it + * + * @example + * if ( !variables[name] ) { + * throw decl.error('Unknown variable ' + name, { word: name }); + * // CssSyntaxError: postcss-vars:a.sass:4:3: Unknown variable $black + * // color: $black + * // a + * // ^ + * // background: white + * } + */ + + + Node.prototype.error = function error(message) { + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + if (this.source) { + var pos = this.positionBy(opts); + return this.source.input.error(message, pos.line, pos.column, opts); + } else { + return new _cssSyntaxError2.default(message); + } + }; + + /** + * This method is provided as a convenience wrapper for {@link Result#warn}. + * + * @param {Result} result - the {@link Result} instance + * that will receive the warning + * @param {string} text - warning message + * @param {object} [opts] - options + * @param {string} opts.plugin - plugin name that created this warning. + * PostCSS will set it automatically. + * @param {string} opts.word - a word inside a node’s string that should + * be highlighted as the source of the warning + * @param {number} opts.index - an index inside a node’s string that should + * be highlighted as the source of the warning + * + * @return {Warning} created warning object + * + * @example + * const plugin = postcss.plugin('postcss-deprecated', () => { + * return (root, result) => { + * root.walkDecls('bad', decl => { + * decl.warn(result, 'Deprecated property bad'); + * }); + * }; + * }); + */ + + + Node.prototype.warn = function warn(result, text, opts) { + var data = { node: this }; + for (var i in opts) { + data[i] = opts[i]; + }return result.warn(text, data); + }; + + /** + * Removes the node from its parent and cleans the parent properties + * from the node and its children. + * + * @example + * if ( decl.prop.match(/^-webkit-/) ) { + * decl.remove(); + * } + * + * @return {Node} node to make calls chain + */ + + + Node.prototype.remove = function remove() { + if (this.parent) { + this.parent.removeChild(this); + } + this.parent = undefined; + return this; + }; + + /** + * Returns a CSS string representing the node. + * + * @param {stringifier|syntax} [stringifier] - a syntax to use + * in string generation + * + * @return {string} CSS string of this node + * + * @example + * postcss.rule({ selector: 'a' }).toString() //=> "a {}" + */ + + + Node.prototype.toString = function toString() { + var stringifier = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _stringify2.default; + + if (stringifier.stringify) stringifier = stringifier.stringify; + var result = ''; + stringifier(this, function (i) { + result += i; + }); + return result; + }; + + /** + * Returns a clone of the node. + * + * The resulting cloned node and its (cloned) children will have + * a clean parent and code style properties. + * + * @param {object} [overrides] - new properties to override in the clone. + * + * @example + * const cloned = decl.clone({ prop: '-moz-' + decl.prop }); + * cloned.raws.before //=> undefined + * cloned.parent //=> undefined + * cloned.toString() //=> -moz-transform: scale(0) + * + * @return {Node} clone of the node + */ + + + Node.prototype.clone = function clone() { + var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + var cloned = cloneNode(this); + for (var name in overrides) { + cloned[name] = overrides[name]; + } + return cloned; + }; + + /** + * Shortcut to clone the node and insert the resulting cloned node + * before the current node. + * + * @param {object} [overrides] - new properties to override in the clone. + * + * @example + * decl.cloneBefore({ prop: '-moz-' + decl.prop }); + * + * @return {Node} - new node + */ + + + Node.prototype.cloneBefore = function cloneBefore() { + var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + var cloned = this.clone(overrides); + this.parent.insertBefore(this, cloned); + return cloned; + }; + + /** + * Shortcut to clone the node and insert the resulting cloned node + * after the current node. + * + * @param {object} [overrides] - new properties to override in the clone. + * + * @return {Node} - new node + */ + + + Node.prototype.cloneAfter = function cloneAfter() { + var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + var cloned = this.clone(overrides); + this.parent.insertAfter(this, cloned); + return cloned; + }; + + /** + * Inserts node(s) before the current node and removes the current node. + * + * @param {...Node} nodes - node(s) to replace current one + * + * @example + * if ( atrule.name == 'mixin' ) { + * atrule.replaceWith(mixinRules[atrule.params]); + * } + * + * @return {Node} current node to methods chain + */ + + + Node.prototype.replaceWith = function replaceWith() { + if (this.parent) { + for (var _len = arguments.length, nodes = Array(_len), _key = 0; _key < _len; _key++) { + nodes[_key] = arguments[_key]; + } + + for (var _iterator = nodes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + var node = _ref; + + this.parent.insertBefore(this, node); + } + + this.remove(); + } + + return this; + }; + + Node.prototype.moveTo = function moveTo(newParent) { + (0, _warnOnce2.default)('Node#moveTo was deprecated. Use Container#append.'); + this.cleanRaws(this.root() === newParent.root()); + this.remove(); + newParent.append(this); + return this; + }; + + Node.prototype.moveBefore = function moveBefore(otherNode) { + (0, _warnOnce2.default)('Node#moveBefore was deprecated. Use Node#before.'); + this.cleanRaws(this.root() === otherNode.root()); + this.remove(); + otherNode.parent.insertBefore(otherNode, this); + return this; + }; + + Node.prototype.moveAfter = function moveAfter(otherNode) { + (0, _warnOnce2.default)('Node#moveAfter was deprecated. Use Node#after.'); + this.cleanRaws(this.root() === otherNode.root()); + this.remove(); + otherNode.parent.insertAfter(otherNode, this); + return this; + }; + + /** + * Returns the next child of the node’s parent. + * Returns `undefined` if the current node is the last child. + * + * @return {Node|undefined} next node + * + * @example + * if ( comment.text === 'delete next' ) { + * const next = comment.next(); + * if ( next ) { + * next.remove(); + * } + * } + */ + + + Node.prototype.next = function next() { + var index = this.parent.index(this); + return this.parent.nodes[index + 1]; + }; + + /** + * Returns the previous child of the node’s parent. + * Returns `undefined` if the current node is the first child. + * + * @return {Node|undefined} previous node + * + * @example + * const annotation = decl.prev(); + * if ( annotation.type == 'comment' ) { + * readAnnotation(annotation.text); + * } + */ + + + Node.prototype.prev = function prev() { + var index = this.parent.index(this); + return this.parent.nodes[index - 1]; + }; + + /** + * Insert new node before current node to current node’s parent. + * + * Just alias for `node.parent.insertBefore(node, add)`. + * + * @param {Node|object|string|Node[]} add - new node + * + * @return {Node} this node for methods chain. + * + * @example + * decl.before('content: ""'); + */ + + + Node.prototype.before = function before(add) { + this.parent.insertBefore(this, add); + return this; + }; + + /** + * Insert new node after current node to current node’s parent. + * + * Just alias for `node.parent.insertAfter(node, add)`. + * + * @param {Node|object|string|Node[]} add - new node + * + * @return {Node} this node for methods chain. + * + * @example + * decl.after('color: black'); + */ + + + Node.prototype.after = function after(add) { + this.parent.insertAfter(this, add); + return this; + }; + + Node.prototype.toJSON = function toJSON() { + var fixed = {}; + + for (var name in this) { + if (!this.hasOwnProperty(name)) continue; + if (name === 'parent') continue; + var value = this[name]; + + if (value instanceof Array) { + fixed[name] = value.map(function (i) { + if ((typeof i === 'undefined' ? 'undefined' : _typeof(i)) === 'object' && i.toJSON) { + return i.toJSON(); + } else { + return i; + } + }); + } else if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.toJSON) { + fixed[name] = value.toJSON(); + } else { + fixed[name] = value; + } + } + + return fixed; + }; + + /** + * Returns a {@link Node#raws} value. If the node is missing + * the code style property (because the node was manually built or cloned), + * PostCSS will try to autodetect the code style property by looking + * at other nodes in the tree. + * + * @param {string} prop - name of code style property + * @param {string} [defaultType] - name of default value, it can be missed + * if the value is the same as prop + * + * @example + * const root = postcss.parse('a { background: white }'); + * root.nodes[0].append({ prop: 'color', value: 'black' }); + * root.nodes[0].nodes[1].raws.before //=> undefined + * root.nodes[0].nodes[1].raw('before') //=> ' ' + * + * @return {string} code style value + */ + + + Node.prototype.raw = function raw(prop, defaultType) { + var str = new _stringifier2.default(); + return str.raw(this, prop, defaultType); + }; + + /** + * Finds the Root instance of the node’s tree. + * + * @example + * root.nodes[0].nodes[0].root() === root + * + * @return {Root} root parent + */ + + + Node.prototype.root = function root() { + var result = this; + while (result.parent) { + result = result.parent; + }return result; + }; + + Node.prototype.cleanRaws = function cleanRaws(keepBetween) { + delete this.raws.before; + delete this.raws.after; + if (!keepBetween) delete this.raws.between; + }; + + Node.prototype.positionInside = function positionInside(index) { + var string = this.toString(); + var column = this.source.start.column; + var line = this.source.start.line; + + for (var i = 0; i < index; i++) { + if (string[i] === '\n') { + column = 1; + line += 1; + } else { + column += 1; + } + } + + return { line: line, column: column }; + }; + + Node.prototype.positionBy = function positionBy(opts) { + var pos = this.source.start; + if (opts.index) { + pos = this.positionInside(opts.index); + } else if (opts.word) { + var index = this.toString().indexOf(opts.word); + if (index !== -1) pos = this.positionInside(index); + } + return pos; + }; + + /** + * @memberof Node# + * @member {string} type - String representing the node’s type. + * Possible values are `root`, `atrule`, `rule`, + * `decl`, or `comment`. + * + * @example + * postcss.decl({ prop: 'color', value: 'black' }).type //=> 'decl' + */ + + /** + * @memberof Node# + * @member {Container} parent - the node’s parent node. + * + * @example + * root.nodes[0].parent == root; + */ + + /** + * @memberof Node# + * @member {source} source - the input source of the node + * + * The property is used in source map generation. + * + * If you create a node manually (e.g., with `postcss.decl()`), + * that node will not have a `source` property and will be absent + * from the source map. For this reason, the plugin developer should + * consider cloning nodes to create new ones (in which case the new node’s + * source will reference the original, cloned node) or setting + * the `source` property manually. + * + * ```js + * // Bad + * const prefixed = postcss.decl({ + * prop: '-moz-' + decl.prop, + * value: decl.value + * }); + * + * // Good + * const prefixed = decl.clone({ prop: '-moz-' + decl.prop }); + * ``` + * + * ```js + * if ( atrule.name == 'add-link' ) { + * const rule = postcss.rule({ selector: 'a', source: atrule.source }); + * atrule.parent.insertBefore(atrule, rule); + * } + * ``` + * + * @example + * decl.source.input.from //=> '/home/ai/a.sass' + * decl.source.start //=> { line: 10, column: 2 } + * decl.source.end //=> { line: 10, column: 12 } + */ + + /** + * @memberof Node# + * @member {object} raws - Information to generate byte-to-byte equal + * node string as it was in the origin input. + * + * Every parser saves its own properties, + * but the default CSS parser uses: + * + * * `before`: the space symbols before the node. It also stores `*` + * and `_` symbols before the declaration (IE hack). + * * `after`: the space symbols after the last child of the node + * to the end of the node. + * * `between`: the symbols between the property and value + * for declarations, selector and `{` for rules, or last parameter + * and `{` for at-rules. + * * `semicolon`: contains true if the last child has + * an (optional) semicolon. + * * `afterName`: the space between the at-rule name and its parameters. + * * `left`: the space symbols between `/*` and the comment’s text. + * * `right`: the space symbols between the comment’s text + * and */. + * * `important`: the content of the important statement, + * if it is not just `!important`. + * + * PostCSS cleans selectors, declaration values and at-rule parameters + * from comments and extra spaces, but it stores origin content in raws + * properties. As such, if you don’t change a declaration’s value, + * PostCSS will use the raw value with comments. + * + * @example + * const root = postcss.parse('a {\n color:black\n}') + * root.first.first.raws //=> { before: '\n ', between: ':' } + */ + + return Node; +}(); + +exports.default = Node; + +/** + * @typedef {object} position + * @property {number} line - source line in file + * @property {number} column - source column in file + */ + +/** + * @typedef {object} source + * @property {Input} input - {@link Input} with input file + * @property {position} start - The starting position of the node’s source + * @property {position} end - The ending position of the node’s source + */ + +module.exports = exports['default']; + + + +/***/ }), +/* 28 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _container = __webpack_require__(12); + +var _container2 = _interopRequireDefault(_container); + +var _list = __webpack_require__(138); + +var _list2 = _interopRequireDefault(_list); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/** + * Represents a CSS rule: a selector followed by a declaration block. + * + * @extends Container + * + * @example + * const root = postcss.parse('a{}'); + * const rule = root.first; + * rule.type //=> 'rule' + * rule.toString() //=> 'a{}' + */ +var Rule = function (_Container) { + _inherits(Rule, _Container); + + function Rule(defaults) { + _classCallCheck(this, Rule); + + var _this = _possibleConstructorReturn(this, _Container.call(this, defaults)); + + _this.type = 'rule'; + if (!_this.nodes) _this.nodes = []; + return _this; + } + + /** + * An array containing the rule’s individual selectors. + * Groups of selectors are split at commas. + * + * @type {string[]} + * + * @example + * const root = postcss.parse('a, b { }'); + * const rule = root.first; + * + * rule.selector //=> 'a, b' + * rule.selectors //=> ['a', 'b'] + * + * rule.selectors = ['a', 'strong']; + * rule.selector //=> 'a, strong' + */ + + + _createClass(Rule, [{ + key: 'selectors', + get: function get() { + return _list2.default.comma(this.selector); + }, + set: function set(values) { + var match = this.selector ? this.selector.match(/,\s*/) : null; + var sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen'); + this.selector = values.join(sep); + } + + /** + * @memberof Rule# + * @member {string} selector - the rule’s full selector represented + * as a string + * + * @example + * const root = postcss.parse('a, b { }'); + * const rule = root.first; + * rule.selector //=> 'a, b' + */ + + /** + * @memberof Rule# + * @member {object} raws - Information to generate byte-to-byte equal + * node string as it was in the origin input. + * + * Every parser saves its own properties, + * but the default CSS parser uses: + * + * * `before`: the space symbols before the node. It also stores `*` + * and `_` symbols before the declaration (IE hack). + * * `after`: the space symbols after the last child of the node + * to the end of the node. + * * `between`: the symbols between the property and value + * for declarations, selector and `{` for rules, or last parameter + * and `{` for at-rules. + * * `semicolon`: contains true if the last child has + * an (optional) semicolon. + * + * PostCSS cleans selectors from comments and extra spaces, + * but it stores origin content in raws properties. + * As such, if you don’t change a declaration’s value, + * PostCSS will use the raw value with comments. + * + * @example + * const root = postcss.parse('a {\n color:black\n}') + * root.first.first.raws //=> { before: '', between: ' ', after: '\n' } + */ + + }]); + + return Rule; +}(_container2.default); + +exports.default = Rule; +module.exports = exports['default']; + + + +/***/ }), +/* 29 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var defaultRaw = { + colon: ': ', + indent: ' ', + beforeDecl: '\n', + beforeRule: '\n', + beforeOpen: ' ', + beforeClose: '\n', + beforeComment: '\n', + after: '\n', + emptyBody: '', + commentLeft: ' ', + commentRight: ' ' +}; + +function capitalize(str) { + return str[0].toUpperCase() + str.slice(1); +} + +var Stringifier = function () { + function Stringifier(builder) { + _classCallCheck(this, Stringifier); + + this.builder = builder; + } + + Stringifier.prototype.stringify = function stringify(node, semicolon) { + this[node.type](node, semicolon); + }; + + Stringifier.prototype.root = function root(node) { + this.body(node); + if (node.raws.after) this.builder(node.raws.after); + }; + + Stringifier.prototype.comment = function comment(node) { + var left = this.raw(node, 'left', 'commentLeft'); + var right = this.raw(node, 'right', 'commentRight'); + this.builder('/*' + left + node.text + right + '*/', node); + }; + + Stringifier.prototype.decl = function decl(node, semicolon) { + var between = this.raw(node, 'between', 'colon'); + var string = node.prop + between + this.rawValue(node, 'value'); + + if (node.important) { + string += node.raws.important || ' !important'; + } + + if (semicolon) string += ';'; + this.builder(string, node); + }; + + Stringifier.prototype.rule = function rule(node) { + this.block(node, this.rawValue(node, 'selector')); + if (node.raws.ownSemicolon) { + this.builder(node.raws.ownSemicolon, node, 'end'); + } + }; + + Stringifier.prototype.atrule = function atrule(node, semicolon) { + var name = '@' + node.name; + var params = node.params ? this.rawValue(node, 'params') : ''; + + if (typeof node.raws.afterName !== 'undefined') { + name += node.raws.afterName; + } else if (params) { + name += ' '; + } + + if (node.nodes) { + this.block(node, name + params); + } else { + var end = (node.raws.between || '') + (semicolon ? ';' : ''); + this.builder(name + params + end, node); + } + }; + + Stringifier.prototype.body = function body(node) { + var last = node.nodes.length - 1; + while (last > 0) { + if (node.nodes[last].type !== 'comment') break; + last -= 1; + } + + var semicolon = this.raw(node, 'semicolon'); + for (var i = 0; i < node.nodes.length; i++) { + var child = node.nodes[i]; + var before = this.raw(child, 'before'); + if (before) this.builder(before); + this.stringify(child, last !== i || semicolon); + } + }; + + Stringifier.prototype.block = function block(node, start) { + var between = this.raw(node, 'between', 'beforeOpen'); + this.builder(start + between + '{', node, 'start'); + + var after = void 0; + if (node.nodes && node.nodes.length) { + this.body(node); + after = this.raw(node, 'after'); + } else { + after = this.raw(node, 'after', 'emptyBody'); + } + + if (after) this.builder(after); + this.builder('}', node, 'end'); + }; + + Stringifier.prototype.raw = function raw(node, own, detect) { + var value = void 0; + if (!detect) detect = own; + + // Already had + if (own) { + value = node.raws[own]; + if (typeof value !== 'undefined') return value; + } + + var parent = node.parent; + + // Hack for first rule in CSS + if (detect === 'before') { + if (!parent || parent.type === 'root' && parent.first === node) { + return ''; + } + } + + // Floating child without parent + if (!parent) return defaultRaw[detect]; + + // Detect style by other nodes + var root = node.root(); + if (!root.rawCache) root.rawCache = {}; + if (typeof root.rawCache[detect] !== 'undefined') { + return root.rawCache[detect]; + } + + if (detect === 'before' || detect === 'after') { + return this.beforeAfter(node, detect); + } else { + var method = 'raw' + capitalize(detect); + if (this[method]) { + value = this[method](root, node); + } else { + root.walk(function (i) { + value = i.raws[own]; + if (typeof value !== 'undefined') return false; + }); + } + } + + if (typeof value === 'undefined') value = defaultRaw[detect]; + + root.rawCache[detect] = value; + return value; + }; + + Stringifier.prototype.rawSemicolon = function rawSemicolon(root) { + var value = void 0; + root.walk(function (i) { + if (i.nodes && i.nodes.length && i.last.type === 'decl') { + value = i.raws.semicolon; + if (typeof value !== 'undefined') return false; + } + }); + return value; + }; + + Stringifier.prototype.rawEmptyBody = function rawEmptyBody(root) { + var value = void 0; + root.walk(function (i) { + if (i.nodes && i.nodes.length === 0) { + value = i.raws.after; + if (typeof value !== 'undefined') return false; + } + }); + return value; + }; + + Stringifier.prototype.rawIndent = function rawIndent(root) { + if (root.raws.indent) return root.raws.indent; + var value = void 0; + root.walk(function (i) { + var p = i.parent; + if (p && p !== root && p.parent && p.parent === root) { + if (typeof i.raws.before !== 'undefined') { + var parts = i.raws.before.split('\n'); + value = parts[parts.length - 1]; + value = value.replace(/[^\s]/g, ''); + return false; + } + } + }); + return value; + }; + + Stringifier.prototype.rawBeforeComment = function rawBeforeComment(root, node) { + var value = void 0; + root.walkComments(function (i) { + if (typeof i.raws.before !== 'undefined') { + value = i.raws.before; + if (value.indexOf('\n') !== -1) { + value = value.replace(/[^\n]+$/, ''); + } + return false; + } + }); + if (typeof value === 'undefined') { + value = this.raw(node, null, 'beforeDecl'); + } + return value; + }; + + Stringifier.prototype.rawBeforeDecl = function rawBeforeDecl(root, node) { + var value = void 0; + root.walkDecls(function (i) { + if (typeof i.raws.before !== 'undefined') { + value = i.raws.before; + if (value.indexOf('\n') !== -1) { + value = value.replace(/[^\n]+$/, ''); + } + return false; + } + }); + if (typeof value === 'undefined') { + value = this.raw(node, null, 'beforeRule'); + } + return value; + }; + + Stringifier.prototype.rawBeforeRule = function rawBeforeRule(root) { + var value = void 0; + root.walk(function (i) { + if (i.nodes && (i.parent !== root || root.first !== i)) { + if (typeof i.raws.before !== 'undefined') { + value = i.raws.before; + if (value.indexOf('\n') !== -1) { + value = value.replace(/[^\n]+$/, ''); + } + return false; + } + } + }); + return value; + }; + + Stringifier.prototype.rawBeforeClose = function rawBeforeClose(root) { + var value = void 0; + root.walk(function (i) { + if (i.nodes && i.nodes.length > 0) { + if (typeof i.raws.after !== 'undefined') { + value = i.raws.after; + if (value.indexOf('\n') !== -1) { + value = value.replace(/[^\n]+$/, ''); + } + return false; + } + } + }); + return value; + }; + + Stringifier.prototype.rawBeforeOpen = function rawBeforeOpen(root) { + var value = void 0; + root.walk(function (i) { + if (i.type !== 'decl') { + value = i.raws.between; + if (typeof value !== 'undefined') return false; + } + }); + return value; + }; + + Stringifier.prototype.rawColon = function rawColon(root) { + var value = void 0; + root.walkDecls(function (i) { + if (typeof i.raws.between !== 'undefined') { + value = i.raws.between.replace(/[^\s:]/g, ''); + return false; + } + }); + return value; + }; + + Stringifier.prototype.beforeAfter = function beforeAfter(node, detect) { + var value = void 0; + if (node.type === 'decl') { + value = this.raw(node, null, 'beforeDecl'); + } else if (node.type === 'comment') { + value = this.raw(node, null, 'beforeComment'); + } else if (detect === 'before') { + value = this.raw(node, null, 'beforeRule'); + } else { + value = this.raw(node, null, 'beforeClose'); + } + + var buf = node.parent; + var depth = 0; + while (buf && buf.type !== 'root') { + depth += 1; + buf = buf.parent; + } + + if (value.indexOf('\n') !== -1) { + var indent = this.raw(node, null, 'indent'); + if (indent.length) { + for (var step = 0; step < depth; step++) { + value += indent; + } + } + } + + return value; + }; + + Stringifier.prototype.rawValue = function rawValue(node, prop) { + var value = node[prop]; + var raw = node.raws[prop]; + if (raw && raw.value === value) { + return raw.raw; + } else { + return value; + } + }; + + return Stringifier; +}(); + +exports.default = Stringifier; +module.exports = exports['default']; + + + +/***/ }), +/* 30 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = function () { + return /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-PRZcf-nqry=><]/g; +}; + + +/***/ }), +/* 31 */ +/***/ (function(module, exports) { + +module.exports = function flatten(list, depth) { + depth = (typeof depth == 'number') ? depth : Infinity; + + if (!depth) { + if (Array.isArray(list)) { + return list.map(function(i) { return i; }); + } + return list; + } + + return _flatten(list, 1); + + function _flatten(list, d) { + return list.reduce(function (acc, item) { + if (Array.isArray(item) && d < depth) { + return acc.concat(_flatten(item, d + 1)); + } + else { + return acc.concat(item); + } + }, []); + } +}; + + +/***/ }), +/* 32 */ +/***/ (function(module, exports) { + +module.exports = function (ary, item) { + var i = -1, indexes = []; + while((i = ary.indexOf(item, i + 1)) !== -1) + indexes.push(i); + return indexes +}; + + +/***/ }), +/* 33 */ +/***/ (function(module, exports, __webpack_require__) { + +/* + * $Id: base64.js,v 2.15 2014/04/05 12:58:57 dankogai Exp dankogai $ + * + * Licensed under the MIT license. + * http://opensource.org/licenses/mit-license + * + * References: + * http://en.wikipedia.org/wiki/Base64 + */ + +(function(global) { + 'use strict'; + // existing version for noConflict() + var _Base64 = global.Base64; + var version = "2.1.9"; + // if node.js, we use Buffer + var buffer; + if (typeof module !== 'undefined' && module.exports) { + try { + buffer = __webpack_require__(15).Buffer; + } catch (err) {} + } + // constants + var b64chars + = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + var b64tab = function(bin) { + var t = {}; + for (var i = 0, l = bin.length; i < l; i++) t[bin.charAt(i)] = i; + return t; + }(b64chars); + var fromCharCode = String.fromCharCode; + // encoder stuff + var cb_utob = function(c) { + if (c.length < 2) { + var cc = c.charCodeAt(0); + return cc < 0x80 ? c + : cc < 0x800 ? (fromCharCode(0xc0 | (cc >>> 6)) + + fromCharCode(0x80 | (cc & 0x3f))) + : (fromCharCode(0xe0 | ((cc >>> 12) & 0x0f)) + + fromCharCode(0x80 | ((cc >>> 6) & 0x3f)) + + fromCharCode(0x80 | ( cc & 0x3f))); + } else { + var cc = 0x10000 + + (c.charCodeAt(0) - 0xD800) * 0x400 + + (c.charCodeAt(1) - 0xDC00); + return (fromCharCode(0xf0 | ((cc >>> 18) & 0x07)) + + fromCharCode(0x80 | ((cc >>> 12) & 0x3f)) + + fromCharCode(0x80 | ((cc >>> 6) & 0x3f)) + + fromCharCode(0x80 | ( cc & 0x3f))); + } + }; + var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g; + var utob = function(u) { + return u.replace(re_utob, cb_utob); + }; + var cb_encode = function(ccc) { + var padlen = [0, 2, 1][ccc.length % 3], + ord = ccc.charCodeAt(0) << 16 + | ((ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8) + | ((ccc.length > 2 ? ccc.charCodeAt(2) : 0)), + chars = [ + b64chars.charAt( ord >>> 18), + b64chars.charAt((ord >>> 12) & 63), + padlen >= 2 ? '=' : b64chars.charAt((ord >>> 6) & 63), + padlen >= 1 ? '=' : b64chars.charAt(ord & 63) + ]; + return chars.join(''); + }; + var btoa = global.btoa ? function(b) { + return global.btoa(b); + } : function(b) { + return b.replace(/[\s\S]{1,3}/g, cb_encode); + }; + var _encode = buffer ? function (u) { + return (u.constructor === buffer.constructor ? u : new buffer(u)) + .toString('base64') + } + : function (u) { return btoa(utob(u)) }; + var encode = function(u, urisafe) { + return !urisafe + ? _encode(String(u)) + : _encode(String(u)).replace(/[+\/]/g, function(m0) { + return m0 == '+' ? '-' : '_'; + }).replace(/=/g, ''); + }; + var encodeURI = function(u) { return encode(u, true) }; + // decoder stuff + var re_btou = new RegExp([ + '[\xC0-\xDF][\x80-\xBF]', + '[\xE0-\xEF][\x80-\xBF]{2}', + '[\xF0-\xF7][\x80-\xBF]{3}' + ].join('|'), 'g'); + var cb_btou = function(cccc) { + switch(cccc.length) { + case 4: + var cp = ((0x07 & cccc.charCodeAt(0)) << 18) + | ((0x3f & cccc.charCodeAt(1)) << 12) + | ((0x3f & cccc.charCodeAt(2)) << 6) + | (0x3f & cccc.charCodeAt(3)), + offset = cp - 0x10000; + return (fromCharCode((offset >>> 10) + 0xD800) + + fromCharCode((offset & 0x3FF) + 0xDC00)); + case 3: + return fromCharCode( + ((0x0f & cccc.charCodeAt(0)) << 12) + | ((0x3f & cccc.charCodeAt(1)) << 6) + | (0x3f & cccc.charCodeAt(2)) + ); + default: + return fromCharCode( + ((0x1f & cccc.charCodeAt(0)) << 6) + | (0x3f & cccc.charCodeAt(1)) + ); + } + }; + var btou = function(b) { + return b.replace(re_btou, cb_btou); + }; + var cb_decode = function(cccc) { + var len = cccc.length, + padlen = len % 4, + n = (len > 0 ? b64tab[cccc.charAt(0)] << 18 : 0) + | (len > 1 ? b64tab[cccc.charAt(1)] << 12 : 0) + | (len > 2 ? b64tab[cccc.charAt(2)] << 6 : 0) + | (len > 3 ? b64tab[cccc.charAt(3)] : 0), + chars = [ + fromCharCode( n >>> 16), + fromCharCode((n >>> 8) & 0xff), + fromCharCode( n & 0xff) + ]; + chars.length -= [0, 0, 2, 1][padlen]; + return chars.join(''); + }; + var atob = global.atob ? function(a) { + return global.atob(a); + } : function(a){ + return a.replace(/[\s\S]{1,4}/g, cb_decode); + }; + var _decode = buffer ? function(a) { + return (a.constructor === buffer.constructor + ? a : new buffer(a, 'base64')).toString(); + } + : function(a) { return btou(atob(a)) }; + var decode = function(a){ + return _decode( + String(a).replace(/[-_]/g, function(m0) { return m0 == '-' ? '+' : '/' }) + .replace(/[^A-Za-z0-9\+\/]/g, '') + ); + }; + var noConflict = function() { + var Base64 = global.Base64; + global.Base64 = _Base64; + return Base64; + }; + // export Base64 + global.Base64 = { + VERSION: version, + atob: atob, + btoa: btoa, + fromBase64: decode, + toBase64: encode, + utob: utob, + encode: encode, + encodeURI: encodeURI, + btou: btou, + decode: decode, + noConflict: noConflict + }; + // if ES5 is available, make Base64.extendString() available + if (typeof Object.defineProperty === 'function') { + var noEnum = function(v){ + return {value:v,enumerable:false,writable:true,configurable:true}; + }; + global.Base64.extendString = function () { + Object.defineProperty( + String.prototype, 'fromBase64', noEnum(function () { + return decode(this) + })); + Object.defineProperty( + String.prototype, 'toBase64', noEnum(function (urisafe) { + return encode(this, urisafe) + })); + Object.defineProperty( + String.prototype, 'toBase64URI', noEnum(function () { + return encode(this, true) + })); + }; + } + // that's it! + if (global['Meteor']) { + Base64 = global.Base64; // for normal export in Meteor.js + } +})(this); + + +/***/ }), +/* 34 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _supportsColor = __webpack_require__(78); + +var _supportsColor2 = _interopRequireDefault(_supportsColor); + +var _chalk = __webpack_require__(11); + +var _chalk2 = _interopRequireDefault(_chalk); + +var _terminalHighlight = __webpack_require__(120); + +var _terminalHighlight2 = _interopRequireDefault(_terminalHighlight); + +var _warnOnce = __webpack_require__(3); + +var _warnOnce2 = _interopRequireDefault(_warnOnce); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +/** + * The CSS parser throws this error for broken CSS. + * + * Custom parsers can throw this error for broken custom syntax using + * the {@link Node#error} method. + * + * PostCSS will use the input source map to detect the original error location. + * If you wrote a Sass file, compiled it to CSS and then parsed it with PostCSS, + * PostCSS will show the original position in the Sass file. + * + * If you need the position in the PostCSS input + * (e.g., to debug the previous compiler), use `error.input.file`. + * + * @example + * // Catching and checking syntax error + * try { + * postcss.parse('a{') + * } catch (error) { + * if ( error.name === 'CssSyntaxError' ) { + * error //=> CssSyntaxError + * } + * } + * + * @example + * // Raising error from plugin + * throw node.error('Unknown variable', { plugin: 'postcss-vars' }); + */ +var CssSyntaxError = function () { + + /** + * @param {string} message - error message + * @param {number} [line] - source line of the error + * @param {number} [column] - source column of the error + * @param {string} [source] - source code of the broken file + * @param {string} [file] - absolute path to the broken file + * @param {string} [plugin] - PostCSS plugin name, if error came from plugin + */ + function CssSyntaxError(message, line, column, source, file, plugin) { + _classCallCheck(this, CssSyntaxError); + + /** + * @member {string} - Always equal to `'CssSyntaxError'`. You should + * always check error type + * by `error.name === 'CssSyntaxError'` instead of + * `error instanceof CssSyntaxError`, because + * npm could have several PostCSS versions. + * + * @example + * if ( error.name === 'CssSyntaxError' ) { + * error //=> CssSyntaxError + * } + */ + this.name = 'CssSyntaxError'; + /** + * @member {string} - Error message. + * + * @example + * error.message //=> 'Unclosed block' + */ + this.reason = message; + + if (file) { + /** + * @member {string} - Absolute path to the broken file. + * + * @example + * error.file //=> 'a.sass' + * error.input.file //=> 'a.css' + */ + this.file = file; + } + if (source) { + /** + * @member {string} - Source code of the broken file. + * + * @example + * error.source //=> 'a { b {} }' + * error.input.column //=> 'a b { }' + */ + this.source = source; + } + if (plugin) { + /** + * @member {string} - Plugin name, if error came from plugin. + * + * @example + * error.plugin //=> 'postcss-vars' + */ + this.plugin = plugin; + } + if (typeof line !== 'undefined' && typeof column !== 'undefined') { + /** + * @member {number} - Source line of the error. + * + * @example + * error.line //=> 2 + * error.input.line //=> 4 + */ + this.line = line; + /** + * @member {number} - Source column of the error. + * + * @example + * error.column //=> 1 + * error.input.column //=> 4 + */ + this.column = column; + } + + this.setMessage(); + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, CssSyntaxError); + } + } + + CssSyntaxError.prototype.setMessage = function setMessage() { + /** + * @member {string} - Full error text in the GNU error format + * with plugin, file, line and column. + * + * @example + * error.message //=> 'a.css:1:1: Unclosed block' + */ + this.message = this.plugin ? this.plugin + ': ' : ''; + this.message += this.file ? this.file : ''; + if (typeof this.line !== 'undefined') { + this.message += ':' + this.line + ':' + this.column; + } + this.message += ': ' + this.reason; + }; + + /** + * Returns a few lines of CSS source that caused the error. + * + * If the CSS has an input source map without `sourceContent`, + * this method will return an empty string. + * + * @param {boolean} [color] whether arrow will be colored red by terminal + * color codes. By default, PostCSS will detect + * color support by `process.stdout.isTTY` + * and `process.env.NODE_DISABLE_COLORS`. + * + * @example + * error.showSourceCode() //=> " 4 | } + * // 5 | a { + * // > 6 | bad + * // | ^ + * // 7 | } + * // 8 | b {" + * + * @return {string} few lines of CSS source that caused the error + */ + + + CssSyntaxError.prototype.showSourceCode = function showSourceCode(color) { + var _this = this; + + if (!this.source) return ''; + + var css = this.source; + if (typeof color === 'undefined') color = _supportsColor2.default; + if (color) css = (0, _terminalHighlight2.default)(css); + + var lines = css.split(/\r?\n/); + var start = Math.max(this.line - 3, 0); + var end = Math.min(this.line + 2, lines.length); + + var maxWidth = String(end).length; + var colors = new _chalk2.default.constructor({ enabled: true }); + + function mark(text) { + if (color) { + return colors.red.bold(text); + } else { + return text; + } + } + function aside(text) { + if (color) { + return colors.gray(text); + } else { + return text; + } + } + + return lines.slice(start, end).map(function (line, index) { + var number = start + 1 + index; + var gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | '; + if (number === _this.line) { + var spacing = aside(gutter.replace(/\d/g, ' ')) + line.slice(0, _this.column - 1).replace(/[^\t]/g, ' '); + return mark('>') + aside(gutter) + line + '\n ' + spacing + mark('^'); + } else { + return ' ' + aside(gutter) + line; + } + }).join('\n'); + }; + + /** + * Returns error position, message and source code of the broken part. + * + * @example + * error.toString() //=> "CssSyntaxError: app.css:1:1: Unclosed block + * // > 1 | a { + * // | ^" + * + * @return {string} error position, message and source code + */ + + + CssSyntaxError.prototype.toString = function toString() { + var code = this.showSourceCode(); + if (code) { + code = '\n\n' + code + '\n'; + } + return this.name + ': ' + this.message + code; + }; + + _createClass(CssSyntaxError, [{ + key: 'generated', + get: function get() { + (0, _warnOnce2.default)('CssSyntaxError#generated is deprecated. Use input instead.'); + return this.input; + } + + /** + * @memberof CssSyntaxError# + * @member {Input} input - Input object with PostCSS internal information + * about input file. If input has source map + * from previous tool, PostCSS will use origin + * (for example, Sass) source. You can use this + * object to get PostCSS input source. + * + * @example + * error.input.file //=> 'a.css' + * error.file //=> 'a.sass' + */ + + }]); + + return CssSyntaxError; +}(); + +exports.default = CssSyntaxError; +module.exports = exports['default']; + + + +/***/ }), +/* 35 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _warnOnce = __webpack_require__(3); + +var _warnOnce2 = _interopRequireDefault(_warnOnce); + +var _node = __webpack_require__(21); + +var _node2 = _interopRequireDefault(_node); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/** + * Represents a CSS declaration. + * + * @extends Node + * + * @example + * const root = postcss.parse('a { color: black }'); + * const decl = root.first.first; + * decl.type //=> 'decl' + * decl.toString() //=> ' color: black' + */ +var Declaration = function (_Node) { + _inherits(Declaration, _Node); + + function Declaration(defaults) { + _classCallCheck(this, Declaration); + + var _this = _possibleConstructorReturn(this, _Node.call(this, defaults)); + + _this.type = 'decl'; + return _this; + } + + _createClass(Declaration, [{ + key: '_value', + get: function get() { + (0, _warnOnce2.default)('Node#_value was deprecated. Use Node#raws.value'); + return this.raws.value; + }, + set: function set(val) { + (0, _warnOnce2.default)('Node#_value was deprecated. Use Node#raws.value'); + this.raws.value = val; + } + }, { + key: '_important', + get: function get() { + (0, _warnOnce2.default)('Node#_important was deprecated. Use Node#raws.important'); + return this.raws.important; + }, + set: function set(val) { + (0, _warnOnce2.default)('Node#_important was deprecated. Use Node#raws.important'); + this.raws.important = val; + } + + /** + * @memberof Declaration# + * @member {string} prop - the declaration’s property name + * + * @example + * const root = postcss.parse('a { color: black }'); + * const decl = root.first.first; + * decl.prop //=> 'color' + */ + + /** + * @memberof Declaration# + * @member {string} value - the declaration’s value + * + * @example + * const root = postcss.parse('a { color: black }'); + * const decl = root.first.first; + * decl.value //=> 'black' + */ + + /** + * @memberof Declaration# + * @member {boolean} important - `true` if the declaration + * has an !important annotation. + * + * @example + * const root = postcss.parse('a { color: black !important; color: red }'); + * root.first.first.important //=> true + * root.first.last.important //=> undefined + */ + + /** + * @memberof Declaration# + * @member {object} raws - Information to generate byte-to-byte equal + * node string as it was in the origin input. + * + * Every parser saves its own properties, + * but the default CSS parser uses: + * + * * `before`: the space symbols before the node. It also stores `*` + * and `_` symbols before the declaration (IE hack). + * * `between`: the symbols between the property and value + * for declarations. + * * `important`: the content of the important statement, + * if it is not just `!important`. + * + * PostCSS cleans declaration from comments and extra spaces, + * but it stores origin content in raws properties. + * As such, if you don’t change a declaration’s value, + * PostCSS will use the raw value with comments. + * + * @example + * const root = postcss.parse('a {\n color:black\n}') + * root.first.first.raws //=> { before: '\n ', between: ':' } + */ + + }]); + + return Declaration; +}(_node2.default); + +exports.default = Declaration; +module.exports = exports['default']; + + + +/***/ }), +/* 36 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _mapGenerator = __webpack_require__(116); + +var _mapGenerator2 = _interopRequireDefault(_mapGenerator); + +var _stringify2 = __webpack_require__(40); + +var _stringify3 = _interopRequireDefault(_stringify2); + +var _warnOnce = __webpack_require__(3); + +var _warnOnce2 = _interopRequireDefault(_warnOnce); + +var _result = __webpack_require__(119); + +var _result2 = _interopRequireDefault(_result); + +var _parse = __webpack_require__(37); + +var _parse2 = _interopRequireDefault(_parse); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function isPromise(obj) { + return (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && typeof obj.then === 'function'; +} + +/** + * A Promise proxy for the result of PostCSS transformations. + * + * A `LazyResult` instance is returned by {@link Processor#process}. + * + * @example + * const lazy = postcss([cssnext]).process(css); + */ + +var LazyResult = function () { + function LazyResult(processor, css, opts) { + _classCallCheck(this, LazyResult); + + this.stringified = false; + this.processed = false; + + var root = void 0; + if ((typeof css === 'undefined' ? 'undefined' : _typeof(css)) === 'object' && css.type === 'root') { + root = css; + } else if (css instanceof LazyResult || css instanceof _result2.default) { + root = css.root; + if (css.map) { + if (typeof opts.map === 'undefined') opts.map = {}; + if (!opts.map.inline) opts.map.inline = false; + opts.map.prev = css.map; + } + } else { + var parser = _parse2.default; + if (opts.syntax) parser = opts.syntax.parse; + if (opts.parser) parser = opts.parser; + if (parser.parse) parser = parser.parse; + + try { + root = parser(css, opts); + } catch (error) { + this.error = error; + } + } + + this.result = new _result2.default(processor, root, opts); + } + + /** + * Returns a {@link Processor} instance, which will be used + * for CSS transformations. + * @type {Processor} + */ + + + /** + * Processes input CSS through synchronous plugins + * and calls {@link Result#warnings()}. + * + * @return {Warning[]} warnings from plugins + */ + LazyResult.prototype.warnings = function warnings() { + return this.sync().warnings(); + }; + + /** + * Alias for the {@link LazyResult#css} property. + * + * @example + * lazy + '' === lazy.css; + * + * @return {string} output CSS + */ + + + LazyResult.prototype.toString = function toString() { + return this.css; + }; + + /** + * Processes input CSS through synchronous and asynchronous plugins + * and calls `onFulfilled` with a Result instance. If a plugin throws + * an error, the `onRejected` callback will be executed. + * + * It implements standard Promise API. + * + * @param {onFulfilled} onFulfilled - callback will be executed + * when all plugins will finish work + * @param {onRejected} onRejected - callback will be executed on any error + * + * @return {Promise} Promise API to make queue + * + * @example + * postcss([cssnext]).process(css).then(result => { + * console.log(result.css); + * }); + */ + + + LazyResult.prototype.then = function then(onFulfilled, onRejected) { + return this.async().then(onFulfilled, onRejected); + }; + + /** + * Processes input CSS through synchronous and asynchronous plugins + * and calls onRejected for each error thrown in any plugin. + * + * It implements standard Promise API. + * + * @param {onRejected} onRejected - callback will be executed on any error + * + * @return {Promise} Promise API to make queue + * + * @example + * postcss([cssnext]).process(css).then(result => { + * console.log(result.css); + * }).catch(error => { + * console.error(error); + * }); + */ + + + LazyResult.prototype.catch = function _catch(onRejected) { + return this.async().catch(onRejected); + }; + + LazyResult.prototype.handleError = function handleError(error, plugin) { + try { + this.error = error; + if (error.name === 'CssSyntaxError' && !error.plugin) { + error.plugin = plugin.postcssPlugin; + error.setMessage(); + } else if (plugin.postcssVersion) { + var pluginName = plugin.postcssPlugin; + var pluginVer = plugin.postcssVersion; + var runtimeVer = this.result.processor.version; + var a = pluginVer.split('.'); + var b = runtimeVer.split('.'); + + if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) { + (0, _warnOnce2.default)('Your current PostCSS version ' + 'is ' + runtimeVer + ', but ' + pluginName + ' ' + 'uses ' + pluginVer + '. Perhaps this is ' + 'the source of the error below.'); + } + } + } catch (err) { + if (console && console.error) console.error(err); + } + }; + + LazyResult.prototype.asyncTick = function asyncTick(resolve, reject) { + var _this = this; + + if (this.plugin >= this.processor.plugins.length) { + this.processed = true; + return resolve(); + } + + try { + var plugin = this.processor.plugins[this.plugin]; + var promise = this.run(plugin); + this.plugin += 1; + + if (isPromise(promise)) { + promise.then(function () { + _this.asyncTick(resolve, reject); + }).catch(function (error) { + _this.handleError(error, plugin); + _this.processed = true; + reject(error); + }); + } else { + this.asyncTick(resolve, reject); + } + } catch (error) { + this.processed = true; + reject(error); + } + }; + + LazyResult.prototype.async = function async() { + var _this2 = this; + + if (this.processed) { + return new Promise(function (resolve, reject) { + if (_this2.error) { + reject(_this2.error); + } else { + resolve(_this2.stringify()); + } + }); + } + if (this.processing) { + return this.processing; + } + + this.processing = new Promise(function (resolve, reject) { + if (_this2.error) return reject(_this2.error); + _this2.plugin = 0; + _this2.asyncTick(resolve, reject); + }).then(function () { + _this2.processed = true; + return _this2.stringify(); + }); + + return this.processing; + }; + + LazyResult.prototype.sync = function sync() { + if (this.processed) return this.result; + this.processed = true; + + if (this.processing) { + throw new Error('Use process(css).then(cb) to work with async plugins'); + } + + if (this.error) throw this.error; + + for (var _iterator = this.result.processor.plugins, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + var plugin = _ref; + + var promise = this.run(plugin); + if (isPromise(promise)) { + throw new Error('Use process(css).then(cb) to work with async plugins'); + } + } + + return this.result; + }; + + LazyResult.prototype.run = function run(plugin) { + this.result.lastPlugin = plugin; + + try { + return plugin(this.result.root, this.result); + } catch (error) { + this.handleError(error, plugin); + throw error; + } + }; + + LazyResult.prototype.stringify = function stringify() { + if (this.stringified) return this.result; + this.stringified = true; + + this.sync(); + + var opts = this.result.opts; + var str = _stringify3.default; + if (opts.syntax) str = opts.syntax.stringify; + if (opts.stringifier) str = opts.stringifier; + if (str.stringify) str = str.stringify; + + var map = new _mapGenerator2.default(str, this.result.root, this.result.opts); + var data = map.generate(); + this.result.css = data[0]; + this.result.map = data[1]; + + return this.result; + }; + + _createClass(LazyResult, [{ + key: 'processor', + get: function get() { + return this.result.processor; + } + + /** + * Options from the {@link Processor#process} call. + * @type {processOptions} + */ + + }, { + key: 'opts', + get: function get() { + return this.result.opts; + } + + /** + * Processes input CSS through synchronous plugins, converts `Root` + * to a CSS string and returns {@link Result#css}. + * + * This property will only work with synchronous plugins. + * If the processor contains any asynchronous plugins + * it will throw an error. This is why this method is only + * for debug purpose, you should always use {@link LazyResult#then}. + * + * @type {string} + * @see Result#css + */ + + }, { + key: 'css', + get: function get() { + return this.stringify().css; + } + + /** + * An alias for the `css` property. Use it with syntaxes + * that generate non-CSS output. + * + * This property will only work with synchronous plugins. + * If the processor contains any asynchronous plugins + * it will throw an error. This is why this method is only + * for debug purpose, you should always use {@link LazyResult#then}. + * + * @type {string} + * @see Result#content + */ + + }, { + key: 'content', + get: function get() { + return this.stringify().content; + } + + /** + * Processes input CSS through synchronous plugins + * and returns {@link Result#map}. + * + * This property will only work with synchronous plugins. + * If the processor contains any asynchronous plugins + * it will throw an error. This is why this method is only + * for debug purpose, you should always use {@link LazyResult#then}. + * + * @type {SourceMapGenerator} + * @see Result#map + */ + + }, { + key: 'map', + get: function get() { + return this.stringify().map; + } + + /** + * Processes input CSS through synchronous plugins + * and returns {@link Result#root}. + * + * This property will only work with synchronous plugins. If the processor + * contains any asynchronous plugins it will throw an error. + * + * This is why this method is only for debug purpose, + * you should always use {@link LazyResult#then}. + * + * @type {Root} + * @see Result#root + */ + + }, { + key: 'root', + get: function get() { + return this.sync().root; + } + + /** + * Processes input CSS through synchronous plugins + * and returns {@link Result#messages}. + * + * This property will only work with synchronous plugins. If the processor + * contains any asynchronous plugins it will throw an error. + * + * This is why this method is only for debug purpose, + * you should always use {@link LazyResult#then}. + * + * @type {Message[]} + * @see Result#messages + */ + + }, { + key: 'messages', + get: function get() { + return this.sync().messages; + } + }]); + + return LazyResult; +}(); + +exports.default = LazyResult; + +/** + * @callback onFulfilled + * @param {Result} result + */ + +/** + * @callback onRejected + * @param {Error} error + */ + +module.exports = exports['default']; + + + +/***/ }), +/* 37 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; +exports.default = parse; + +var _parser = __webpack_require__(38); + +var _parser2 = _interopRequireDefault(_parser); + +var _input = __webpack_require__(20); + +var _input2 = _interopRequireDefault(_input); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function parse(css, opts) { + if (opts && opts.safe) { + throw new Error('Option safe was removed. ' + 'Use parser: require("postcss-safe-parser")'); + } + + var input = new _input2.default(css, opts); + + var parser = new _parser2.default(input); + try { + parser.tokenize(); + parser.loop(); + } catch (e) { + if (e.name === 'CssSyntaxError' && opts && opts.from) { + if (/\.scss$/i.test(opts.from)) { + e.message += '\nYou tried to parse SCSS with ' + 'the standard CSS parser; ' + 'try again with the postcss-scss parser'; + } else if (/\.sass/i.test(opts.from)) { + e.message += '\nYou tried to parse Sass with ' + 'the standard CSS parser; ' + 'try again with the postcss-sass parser'; + } else if (/\.less$/i.test(opts.from)) { + e.message += '\nYou tried to parse Less with ' + 'the standard CSS parser; ' + 'try again with the postcss-less parser'; + } + } + throw e; + } + + return parser.root; +} +module.exports = exports['default']; + + + +/***/ }), +/* 38 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _declaration = __webpack_require__(35); + +var _declaration2 = _interopRequireDefault(_declaration); + +var _tokenize = __webpack_require__(41); + +var _tokenize2 = _interopRequireDefault(_tokenize); + +var _comment = __webpack_require__(18); + +var _comment2 = _interopRequireDefault(_comment); + +var _atRule = __webpack_require__(17); + +var _atRule2 = _interopRequireDefault(_atRule); + +var _root = __webpack_require__(39); + +var _root2 = _interopRequireDefault(_root); + +var _rule = __webpack_require__(8); + +var _rule2 = _interopRequireDefault(_rule); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var Parser = function () { + function Parser(input) { + _classCallCheck(this, Parser); + + this.input = input; + + this.pos = 0; + this.root = new _root2.default(); + this.current = this.root; + this.spaces = ''; + this.semicolon = false; + + this.root.source = { input: input, start: { line: 1, column: 1 } }; + } + + Parser.prototype.tokenize = function tokenize() { + this.tokens = (0, _tokenize2.default)(this.input); + }; + + Parser.prototype.loop = function loop() { + var token = void 0; + while (this.pos < this.tokens.length) { + token = this.tokens[this.pos]; + + switch (token[0]) { + + case 'space': + case ';': + this.spaces += token[1]; + break; + + case '}': + this.end(token); + break; + + case 'comment': + this.comment(token); + break; + + case 'at-word': + this.atrule(token); + break; + + case '{': + this.emptyRule(token); + break; + + default: + this.other(); + break; + } + + this.pos += 1; + } + this.endFile(); + }; + + Parser.prototype.comment = function comment(token) { + var node = new _comment2.default(); + this.init(node, token[2], token[3]); + node.source.end = { line: token[4], column: token[5] }; + + var text = token[1].slice(2, -2); + if (/^\s*$/.test(text)) { + node.text = ''; + node.raws.left = text; + node.raws.right = ''; + } else { + var match = text.match(/^(\s*)([^]*[^\s])(\s*)$/); + node.text = match[2]; + node.raws.left = match[1]; + node.raws.right = match[3]; + } + }; + + Parser.prototype.emptyRule = function emptyRule(token) { + var node = new _rule2.default(); + this.init(node, token[2], token[3]); + node.selector = ''; + node.raws.between = ''; + this.current = node; + }; + + Parser.prototype.other = function other() { + var token = void 0; + var end = false; + var type = null; + var colon = false; + var bracket = null; + var brackets = []; + + var start = this.pos; + while (this.pos < this.tokens.length) { + token = this.tokens[this.pos]; + type = token[0]; + + if (type === '(' || type === '[') { + if (!bracket) bracket = token; + brackets.push(type === '(' ? ')' : ']'); + } else if (brackets.length === 0) { + if (type === ';') { + if (colon) { + this.decl(this.tokens.slice(start, this.pos + 1)); + return; + } else { + break; + } + } else if (type === '{') { + this.rule(this.tokens.slice(start, this.pos + 1)); + return; + } else if (type === '}') { + this.pos -= 1; + end = true; + break; + } else if (type === ':') { + colon = true; + } + } else if (type === brackets[brackets.length - 1]) { + brackets.pop(); + if (brackets.length === 0) bracket = null; + } + + this.pos += 1; + } + if (this.pos === this.tokens.length) { + this.pos -= 1; + end = true; + } + + if (brackets.length > 0) this.unclosedBracket(bracket); + + if (end && colon) { + while (this.pos > start) { + token = this.tokens[this.pos][0]; + if (token !== 'space' && token !== 'comment') break; + this.pos -= 1; + } + this.decl(this.tokens.slice(start, this.pos + 1)); + return; + } + + this.unknownWord(start); + }; + + Parser.prototype.rule = function rule(tokens) { + tokens.pop(); + + var node = new _rule2.default(); + this.init(node, tokens[0][2], tokens[0][3]); + + node.raws.between = this.spacesAndCommentsFromEnd(tokens); + this.raw(node, 'selector', tokens); + this.current = node; + }; + + Parser.prototype.decl = function decl(tokens) { + var node = new _declaration2.default(); + this.init(node); + + var last = tokens[tokens.length - 1]; + if (last[0] === ';') { + this.semicolon = true; + tokens.pop(); + } + if (last[4]) { + node.source.end = { line: last[4], column: last[5] }; + } else { + node.source.end = { line: last[2], column: last[3] }; + } + + while (tokens[0][0] !== 'word') { + node.raws.before += tokens.shift()[1]; + } + node.source.start = { line: tokens[0][2], column: tokens[0][3] }; + + node.prop = ''; + while (tokens.length) { + var type = tokens[0][0]; + if (type === ':' || type === 'space' || type === 'comment') { + break; + } + node.prop += tokens.shift()[1]; + } + + node.raws.between = ''; + + var token = void 0; + while (tokens.length) { + token = tokens.shift(); + + if (token[0] === ':') { + node.raws.between += token[1]; + break; + } else { + node.raws.between += token[1]; + } + } + + if (node.prop[0] === '_' || node.prop[0] === '*') { + node.raws.before += node.prop[0]; + node.prop = node.prop.slice(1); + } + node.raws.between += this.spacesAndCommentsFromStart(tokens); + this.precheckMissedSemicolon(tokens); + + for (var i = tokens.length - 1; i > 0; i--) { + token = tokens[i]; + if (token[1] === '!important') { + node.important = true; + var string = this.stringFrom(tokens, i); + string = this.spacesFromEnd(tokens) + string; + if (string !== ' !important') node.raws.important = string; + break; + } else if (token[1] === 'important') { + var cache = tokens.slice(0); + var str = ''; + for (var j = i; j > 0; j--) { + var _type = cache[j][0]; + if (str.trim().indexOf('!') === 0 && _type !== 'space') { + break; + } + str = cache.pop()[1] + str; + } + if (str.trim().indexOf('!') === 0) { + node.important = true; + node.raws.important = str; + tokens = cache; + } + } + + if (token[0] !== 'space' && token[0] !== 'comment') { + break; + } + } + + this.raw(node, 'value', tokens); + + if (node.value.indexOf(':') !== -1) this.checkMissedSemicolon(tokens); + }; + + Parser.prototype.atrule = function atrule(token) { + var node = new _atRule2.default(); + node.name = token[1].slice(1); + if (node.name === '') { + this.unnamedAtrule(node, token); + } + this.init(node, token[2], token[3]); + + var last = false; + var open = false; + var params = []; + + this.pos += 1; + while (this.pos < this.tokens.length) { + token = this.tokens[this.pos]; + + if (token[0] === ';') { + node.source.end = { line: token[2], column: token[3] }; + this.semicolon = true; + break; + } else if (token[0] === '{') { + open = true; + break; + } else if (token[0] === '}') { + this.end(token); + break; + } else { + params.push(token); + } + + this.pos += 1; + } + if (this.pos === this.tokens.length) { + last = true; + } + + node.raws.between = this.spacesAndCommentsFromEnd(params); + if (params.length) { + node.raws.afterName = this.spacesAndCommentsFromStart(params); + this.raw(node, 'params', params); + if (last) { + token = params[params.length - 1]; + node.source.end = { line: token[4], column: token[5] }; + this.spaces = node.raws.between; + node.raws.between = ''; + } + } else { + node.raws.afterName = ''; + node.params = ''; + } + + if (open) { + node.nodes = []; + this.current = node; + } + }; + + Parser.prototype.end = function end(token) { + if (this.current.nodes && this.current.nodes.length) { + this.current.raws.semicolon = this.semicolon; + } + this.semicolon = false; + + this.current.raws.after = (this.current.raws.after || '') + this.spaces; + this.spaces = ''; + + if (this.current.parent) { + this.current.source.end = { line: token[2], column: token[3] }; + this.current = this.current.parent; + } else { + this.unexpectedClose(token); + } + }; + + Parser.prototype.endFile = function endFile() { + if (this.current.parent) this.unclosedBlock(); + if (this.current.nodes && this.current.nodes.length) { + this.current.raws.semicolon = this.semicolon; + } + this.current.raws.after = (this.current.raws.after || '') + this.spaces; + }; + + // Helpers + + Parser.prototype.init = function init(node, line, column) { + this.current.push(node); + + node.source = { start: { line: line, column: column }, input: this.input }; + node.raws.before = this.spaces; + this.spaces = ''; + if (node.type !== 'comment') this.semicolon = false; + }; + + Parser.prototype.raw = function raw(node, prop, tokens) { + var token = void 0, + type = void 0; + var length = tokens.length; + var value = ''; + var clean = true; + for (var i = 0; i < length; i += 1) { + token = tokens[i]; + type = token[0]; + if (type === 'comment' || type === 'space' && i === length - 1) { + clean = false; + } else { + value += token[1]; + } + } + if (!clean) { + var raw = tokens.reduce(function (all, i) { + return all + i[1]; + }, ''); + node.raws[prop] = { value: value, raw: raw }; + } + node[prop] = value; + }; + + Parser.prototype.spacesAndCommentsFromEnd = function spacesAndCommentsFromEnd(tokens) { + var lastTokenType = void 0; + var spaces = ''; + while (tokens.length) { + lastTokenType = tokens[tokens.length - 1][0]; + if (lastTokenType !== 'space' && lastTokenType !== 'comment') break; + spaces = tokens.pop()[1] + spaces; + } + return spaces; + }; + + Parser.prototype.spacesAndCommentsFromStart = function spacesAndCommentsFromStart(tokens) { + var next = void 0; + var spaces = ''; + while (tokens.length) { + next = tokens[0][0]; + if (next !== 'space' && next !== 'comment') break; + spaces += tokens.shift()[1]; + } + return spaces; + }; + + Parser.prototype.spacesFromEnd = function spacesFromEnd(tokens) { + var lastTokenType = void 0; + var spaces = ''; + while (tokens.length) { + lastTokenType = tokens[tokens.length - 1][0]; + if (lastTokenType !== 'space') break; + spaces = tokens.pop()[1] + spaces; + } + return spaces; + }; + + Parser.prototype.stringFrom = function stringFrom(tokens, from) { + var result = ''; + for (var i = from; i < tokens.length; i++) { + result += tokens[i][1]; + } + tokens.splice(from, tokens.length - from); + return result; + }; + + Parser.prototype.colon = function colon(tokens) { + var brackets = 0; + var token = void 0, + type = void 0, + prev = void 0; + for (var i = 0; i < tokens.length; i++) { + token = tokens[i]; + type = token[0]; + + if (type === '(') { + brackets += 1; + } else if (type === ')') { + brackets -= 1; + } else if (brackets === 0 && type === ':') { + if (!prev) { + this.doubleColon(token); + } else if (prev[0] === 'word' && prev[1] === 'progid') { + continue; + } else { + return i; + } + } + + prev = token; + } + return false; + }; + + // Errors + + Parser.prototype.unclosedBracket = function unclosedBracket(bracket) { + throw this.input.error('Unclosed bracket', bracket[2], bracket[3]); + }; + + Parser.prototype.unknownWord = function unknownWord(start) { + var token = this.tokens[start]; + throw this.input.error('Unknown word', token[2], token[3]); + }; + + Parser.prototype.unexpectedClose = function unexpectedClose(token) { + throw this.input.error('Unexpected }', token[2], token[3]); + }; + + Parser.prototype.unclosedBlock = function unclosedBlock() { + var pos = this.current.source.start; + throw this.input.error('Unclosed block', pos.line, pos.column); + }; + + Parser.prototype.doubleColon = function doubleColon(token) { + throw this.input.error('Double colon', token[2], token[3]); + }; + + Parser.prototype.unnamedAtrule = function unnamedAtrule(node, token) { + throw this.input.error('At-rule without name', token[2], token[3]); + }; + + Parser.prototype.precheckMissedSemicolon = function precheckMissedSemicolon(tokens) { + // Hook for Safe Parser + tokens; + }; + + Parser.prototype.checkMissedSemicolon = function checkMissedSemicolon(tokens) { + var colon = this.colon(tokens); + if (colon === false) return; + + var founded = 0; + var token = void 0; + for (var j = colon - 1; j >= 0; j--) { + token = tokens[j]; + if (token[0] !== 'space') { + founded += 1; + if (founded === 2) break; + } + } + throw this.input.error('Missed semicolon', token[2], token[3]); + }; + + return Parser; +}(); + +exports.default = Parser; +module.exports = exports['default']; + + + +/***/ }), +/* 39 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _container = __webpack_require__(19); + +var _container2 = _interopRequireDefault(_container); + +var _warnOnce = __webpack_require__(3); + +var _warnOnce2 = _interopRequireDefault(_warnOnce); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/** + * Represents a CSS file and contains all its parsed nodes. + * + * @extends Container + * + * @example + * const root = postcss.parse('a{color:black} b{z-index:2}'); + * root.type //=> 'root' + * root.nodes.length //=> 2 + */ +var Root = function (_Container) { + _inherits(Root, _Container); + + function Root(defaults) { + _classCallCheck(this, Root); + + var _this = _possibleConstructorReturn(this, _Container.call(this, defaults)); + + _this.type = 'root'; + if (!_this.nodes) _this.nodes = []; + return _this; + } + + Root.prototype.removeChild = function removeChild(child) { + child = this.index(child); + + if (child === 0 && this.nodes.length > 1) { + this.nodes[1].raws.before = this.nodes[child].raws.before; + } + + return _Container.prototype.removeChild.call(this, child); + }; + + Root.prototype.normalize = function normalize(child, sample, type) { + var nodes = _Container.prototype.normalize.call(this, child); + + if (sample) { + if (type === 'prepend') { + if (this.nodes.length > 1) { + sample.raws.before = this.nodes[1].raws.before; + } else { + delete sample.raws.before; + } + } else if (this.first !== sample) { + for (var _iterator = nodes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + var node = _ref; + + node.raws.before = sample.raws.before; + } + } + } + + return nodes; + }; + + /** + * Returns a {@link Result} instance representing the root’s CSS. + * + * @param {processOptions} [opts] - options with only `to` and `map` keys + * + * @return {Result} result with current root’s CSS + * + * @example + * const root1 = postcss.parse(css1, { from: 'a.css' }); + * const root2 = postcss.parse(css2, { from: 'b.css' }); + * root1.append(root2); + * const result = root1.toResult({ to: 'all.css', map: true }); + */ + + + Root.prototype.toResult = function toResult() { + var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + var LazyResult = __webpack_require__(36); + var Processor = __webpack_require__(118); + + var lazy = new LazyResult(new Processor(), this, opts); + return lazy.stringify(); + }; + + Root.prototype.remove = function remove(child) { + (0, _warnOnce2.default)('Root#remove is deprecated. Use Root#removeChild'); + this.removeChild(child); + }; + + Root.prototype.prevMap = function prevMap() { + (0, _warnOnce2.default)('Root#prevMap is deprecated. Use Root#source.input.map'); + return this.source.input.map; + }; + + /** + * @memberof Root# + * @member {object} raws - Information to generate byte-to-byte equal + * node string as it was in the origin input. + * + * Every parser saves its own properties, + * but the default CSS parser uses: + * + * * `after`: the space symbols after the last child to the end of file. + * * `semicolon`: is the last child has an (optional) semicolon. + * + * @example + * postcss.parse('a {}\n').raws //=> { after: '\n' } + * postcss.parse('a {}').raws //=> { after: '' } + */ + + return Root; +}(_container2.default); + +exports.default = Root; +module.exports = exports['default']; + + + +/***/ }), +/* 40 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; +exports.default = stringify; + +var _stringifier = __webpack_require__(22); + +var _stringifier2 = _interopRequireDefault(_stringifier); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function stringify(node, builder) { + var str = new _stringifier2.default(builder); + str.stringify(node); +} +module.exports = exports['default']; + + + +/***/ }), +/* 41 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; +exports.default = tokenize; +var SINGLE_QUOTE = 39; +var DOUBLE_QUOTE = 34; +var BACKSLASH = 92; +var SLASH = 47; +var NEWLINE = 10; +var SPACE = 32; +var FEED = 12; +var TAB = 9; +var CR = 13; +var OPEN_SQUARE = 91; +var CLOSE_SQUARE = 93; +var OPEN_PARENTHESES = 40; +var CLOSE_PARENTHESES = 41; +var OPEN_CURLY = 123; +var CLOSE_CURLY = 125; +var SEMICOLON = 59; +var ASTERISK = 42; +var COLON = 58; +var AT = 64; + +var RE_AT_END = /[ \n\t\r\f\{\(\)'"\\;/\[\]#]/g; +var RE_WORD_END = /[ \n\t\r\f\(\)\{\}:;@!'"\\\]\[#]|\/(?=\*)/g; +var RE_BAD_BRACKET = /.[\\\/\("'\n]/; + +function tokenize(input) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + var tokens = []; + var css = input.css.valueOf(); + + var ignore = options.ignoreErrors; + + var code = void 0, + next = void 0, + quote = void 0, + lines = void 0, + last = void 0, + content = void 0, + escape = void 0, + nextLine = void 0, + nextOffset = void 0, + escaped = void 0, + escapePos = void 0, + prev = void 0, + n = void 0; + + var length = css.length; + var offset = -1; + var line = 1; + var pos = 0; + + function unclosed(what) { + throw input.error('Unclosed ' + what, line, pos - offset); + } + + while (pos < length) { + code = css.charCodeAt(pos); + + if (code === NEWLINE || code === FEED || code === CR && css.charCodeAt(pos + 1) !== NEWLINE) { + offset = pos; + line += 1; + } + + switch (code) { + case NEWLINE: + case SPACE: + case TAB: + case CR: + case FEED: + next = pos; + do { + next += 1; + code = css.charCodeAt(next); + if (code === NEWLINE) { + offset = next; + line += 1; + } + } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED); + + tokens.push(['space', css.slice(pos, next)]); + pos = next - 1; + break; + + case OPEN_SQUARE: + tokens.push(['[', '[', line, pos - offset]); + break; + + case CLOSE_SQUARE: + tokens.push([']', ']', line, pos - offset]); + break; + + case OPEN_CURLY: + tokens.push(['{', '{', line, pos - offset]); + break; + + case CLOSE_CURLY: + tokens.push(['}', '}', line, pos - offset]); + break; + + case COLON: + tokens.push([':', ':', line, pos - offset]); + break; + + case SEMICOLON: + tokens.push([';', ';', line, pos - offset]); + break; + + case OPEN_PARENTHESES: + prev = tokens.length ? tokens[tokens.length - 1][1] : ''; + n = css.charCodeAt(pos + 1); + if (prev === 'url' && n !== SINGLE_QUOTE && n !== DOUBLE_QUOTE && n !== SPACE && n !== NEWLINE && n !== TAB && n !== FEED && n !== CR) { + next = pos; + do { + escaped = false; + next = css.indexOf(')', next + 1); + if (next === -1) { + if (ignore) { + next = pos; + break; + } else { + unclosed('bracket'); + } + } + escapePos = next; + while (css.charCodeAt(escapePos - 1) === BACKSLASH) { + escapePos -= 1; + escaped = !escaped; + } + } while (escaped); + + tokens.push(['brackets', css.slice(pos, next + 1), line, pos - offset, line, next - offset]); + pos = next; + } else { + next = css.indexOf(')', pos + 1); + content = css.slice(pos, next + 1); + + if (next === -1 || RE_BAD_BRACKET.test(content)) { + tokens.push(['(', '(', line, pos - offset]); + } else { + tokens.push(['brackets', content, line, pos - offset, line, next - offset]); + pos = next; + } + } + + break; + + case CLOSE_PARENTHESES: + tokens.push([')', ')', line, pos - offset]); + break; + + case SINGLE_QUOTE: + case DOUBLE_QUOTE: + quote = code === SINGLE_QUOTE ? '\'' : '"'; + next = pos; + do { + escaped = false; + next = css.indexOf(quote, next + 1); + if (next === -1) { + if (ignore) { + next = pos + 1; + break; + } else { + unclosed('string'); + } + } + escapePos = next; + while (css.charCodeAt(escapePos - 1) === BACKSLASH) { + escapePos -= 1; + escaped = !escaped; + } + } while (escaped); + + content = css.slice(pos, next + 1); + lines = content.split('\n'); + last = lines.length - 1; + + if (last > 0) { + nextLine = line + last; + nextOffset = next - lines[last].length; + } else { + nextLine = line; + nextOffset = offset; + } + + tokens.push(['string', css.slice(pos, next + 1), line, pos - offset, nextLine, next - nextOffset]); + + offset = nextOffset; + line = nextLine; + pos = next; + break; + + case AT: + RE_AT_END.lastIndex = pos + 1; + RE_AT_END.test(css); + if (RE_AT_END.lastIndex === 0) { + next = css.length - 1; + } else { + next = RE_AT_END.lastIndex - 2; + } + tokens.push(['at-word', css.slice(pos, next + 1), line, pos - offset, line, next - offset]); + pos = next; + break; + + case BACKSLASH: + next = pos; + escape = true; + while (css.charCodeAt(next + 1) === BACKSLASH) { + next += 1; + escape = !escape; + } + code = css.charCodeAt(next + 1); + if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) { + next += 1; + } + tokens.push(['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset]); + pos = next; + break; + + default: + if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) { + next = css.indexOf('*/', pos + 2) + 1; + if (next === 0) { + if (ignore) { + next = css.length; + } else { + unclosed('comment'); + } + } + + content = css.slice(pos, next + 1); + lines = content.split('\n'); + last = lines.length - 1; + + if (last > 0) { + nextLine = line + last; + nextOffset = next - lines[last].length; + } else { + nextLine = line; + nextOffset = offset; + } + + tokens.push(['comment', content, line, pos - offset, nextLine, next - nextOffset]); + + offset = nextOffset; + line = nextLine; + pos = next; + } else { + RE_WORD_END.lastIndex = pos + 1; + RE_WORD_END.test(css); + if (RE_WORD_END.lastIndex === 0) { + next = css.length - 1; + } else { + next = RE_WORD_END.lastIndex - 2; + } + + tokens.push(['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset]); + pos = next; + } + + break; + } + + pos++; + } + + return tokens; +} +module.exports = exports['default']; + + + +/***/ }), +/* 42 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _Node = __webpack_require__(43); + +var _Node2 = _interopRequireDefault(_Node); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function Container(opts) { + var _this = this; + + this.constructor(opts); + + this.nodes = opts.nodes; + + if (this.after === undefined) { + this.after = this.nodes.length > 0 ? this.nodes[this.nodes.length - 1].after : ''; + } + + if (this.before === undefined) { + this.before = this.nodes.length > 0 ? this.nodes[0].before : ''; + } + + if (this.sourceIndex === undefined) { + this.sourceIndex = this.before.length; + } + + this.nodes.forEach(function (node) { + node.parent = _this; // eslint-disable-line no-param-reassign + }); +} /** + * A node that contains other nodes and support traversing over them + */ + +Container.prototype = Object.create(_Node2.default.prototype); +Container.constructor = _Node2.default; + +/** + * Iterate over descendant nodes of the node + * + * @param {RegExp|string} filter - Optional. Only nodes with node.type that + * satisfies the filter will be traversed over + * @param {function} cb - callback to call on each node. Takes theese params: + * node - the node being processed, i - it's index, nodes - the array + * of all nodes + * If false is returned, the iteration breaks + * + * @return (boolean) false, if the iteration was broken + */ +Container.prototype.walk = function walk(filter, cb) { + var hasFilter = typeof filter === 'string' || filter instanceof RegExp; + var callback = hasFilter ? cb : filter; + var filterReg = typeof filter === 'string' ? new RegExp(filter) : filter; + + for (var i = 0; i < this.nodes.length; i++) { + var node = this.nodes[i]; + var filtered = hasFilter ? filterReg.test(node.type) : true; + if (filtered && callback && callback(node, i, this.nodes) === false) { + return false; + } + if (node.nodes && node.walk(filter, cb) === false) { + return false; + } + } + return true; +}; + +/** + * Iterate over immediate children of the node + * + * @param {function} cb - callback to call on each node. Takes theese params: + * node - the node being processed, i - it's index, nodes - the array + * of all nodes + * If false is returned, the iteration breaks + * + * @return (boolean) false, if the iteration was broken + */ +Container.prototype.each = function each() { + var cb = arguments.length <= 0 || arguments[0] === undefined ? function () {} : arguments[0]; + + for (var i = 0; i < this.nodes.length; i++) { + var node = this.nodes[i]; + if (cb(node, i, this.nodes) === false) { + return false; + } + } + return true; +}; + +exports.default = Container; + +/***/ }), +/* 43 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +/** + * A very generic node. Pretty much any element of a media query + */ + +function Node(opts) { + this.after = opts.after; + this.before = opts.before; + this.type = opts.type; + this.value = opts.value; + this.sourceIndex = opts.sourceIndex; +} + +exports.default = Node; + +/***/ }), +/* 44 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _namespace = __webpack_require__(9); + +var _namespace2 = _interopRequireDefault(_namespace); + +var _types = __webpack_require__(0); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Attribute = function (_Namespace) { + _inherits(Attribute, _Namespace); + + function Attribute(opts) { + _classCallCheck(this, Attribute); + + var _this = _possibleConstructorReturn(this, _Namespace.call(this, opts)); + + _this.type = _types.ATTRIBUTE; + _this.raws = {}; + return _this; + } + + Attribute.prototype.toString = function toString() { + var selector = [this.spaces.before, '[', this.ns, this.attribute]; + + if (this.operator) { + selector.push(this.operator); + } + if (this.value) { + selector.push(this.value); + } + if (this.raws.insensitive) { + selector.push(this.raws.insensitive); + } else if (this.insensitive) { + selector.push(' i'); + } + selector.push(']'); + return selector.concat(this.spaces.after).join(''); + }; + + return Attribute; +}(_namespace2.default); + +exports.default = Attribute; +module.exports = exports['default']; + +/***/ }), +/* 45 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _namespace = __webpack_require__(9); + +var _namespace2 = _interopRequireDefault(_namespace); + +var _types = __webpack_require__(0); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var ClassName = function (_Namespace) { + _inherits(ClassName, _Namespace); + + function ClassName(opts) { + _classCallCheck(this, ClassName); + + var _this = _possibleConstructorReturn(this, _Namespace.call(this, opts)); + + _this.type = _types.CLASS; + return _this; + } + + ClassName.prototype.toString = function toString() { + return [this.spaces.before, this.ns, String('.' + this.value), this.spaces.after].join(''); + }; + + return ClassName; +}(_namespace2.default); + +exports.default = ClassName; +module.exports = exports['default']; + +/***/ }), +/* 46 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _node = __webpack_require__(6); + +var _node2 = _interopRequireDefault(_node); + +var _types = __webpack_require__(0); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Combinator = function (_Node) { + _inherits(Combinator, _Node); + + function Combinator(opts) { + _classCallCheck(this, Combinator); + + var _this = _possibleConstructorReturn(this, _Node.call(this, opts)); + + _this.type = _types.COMBINATOR; + return _this; + } + + return Combinator; +}(_node2.default); + +exports.default = Combinator; +module.exports = exports['default']; + +/***/ }), +/* 47 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _node = __webpack_require__(6); + +var _node2 = _interopRequireDefault(_node); + +var _types = __webpack_require__(0); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Comment = function (_Node) { + _inherits(Comment, _Node); + + function Comment(opts) { + _classCallCheck(this, Comment); + + var _this = _possibleConstructorReturn(this, _Node.call(this, opts)); + + _this.type = _types.COMMENT; + return _this; + } + + return Comment; +}(_node2.default); + +exports.default = Comment; +module.exports = exports['default']; + +/***/ }), +/* 48 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _namespace = __webpack_require__(9); + +var _namespace2 = _interopRequireDefault(_namespace); + +var _types = __webpack_require__(0); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var ID = function (_Namespace) { + _inherits(ID, _Namespace); + + function ID(opts) { + _classCallCheck(this, ID); + + var _this = _possibleConstructorReturn(this, _Namespace.call(this, opts)); + + _this.type = _types.ID; + return _this; + } + + ID.prototype.toString = function toString() { + return [this.spaces.before, this.ns, String('#' + this.value), this.spaces.after].join(''); + }; + + return ID; +}(_namespace2.default); + +exports.default = ID; +module.exports = exports['default']; + +/***/ }), +/* 49 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _node = __webpack_require__(6); + +var _node2 = _interopRequireDefault(_node); + +var _types = __webpack_require__(0); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Nesting = function (_Node) { + _inherits(Nesting, _Node); + + function Nesting(opts) { + _classCallCheck(this, Nesting); + + var _this = _possibleConstructorReturn(this, _Node.call(this, opts)); + + _this.type = _types.NESTING; + _this.value = '&'; + return _this; + } + + return Nesting; +}(_node2.default); + +exports.default = Nesting; +module.exports = exports['default']; + +/***/ }), +/* 50 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _container = __webpack_require__(23); + +var _container2 = _interopRequireDefault(_container); + +var _types = __webpack_require__(0); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Pseudo = function (_Container) { + _inherits(Pseudo, _Container); + + function Pseudo(opts) { + _classCallCheck(this, Pseudo); + + var _this = _possibleConstructorReturn(this, _Container.call(this, opts)); + + _this.type = _types.PSEUDO; + return _this; + } + + Pseudo.prototype.toString = function toString() { + var params = this.length ? '(' + this.map(String).join(',') + ')' : ''; + return [this.spaces.before, String(this.value), params, this.spaces.after].join(''); + }; + + return Pseudo; +}(_container2.default); + +exports.default = Pseudo; +module.exports = exports['default']; + +/***/ }), +/* 51 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _container = __webpack_require__(23); + +var _container2 = _interopRequireDefault(_container); + +var _types = __webpack_require__(0); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Root = function (_Container) { + _inherits(Root, _Container); + + function Root(opts) { + _classCallCheck(this, Root); + + var _this = _possibleConstructorReturn(this, _Container.call(this, opts)); + + _this.type = _types.ROOT; + return _this; + } + + Root.prototype.toString = function toString() { + var str = this.reduce(function (memo, selector) { + var sel = String(selector); + return sel ? memo + sel + ',' : ''; + }, '').slice(0, -1); + return this.trailingComma ? str + ',' : str; + }; + + return Root; +}(_container2.default); + +exports.default = Root; +module.exports = exports['default']; + +/***/ }), +/* 52 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _container = __webpack_require__(23); + +var _container2 = _interopRequireDefault(_container); + +var _types = __webpack_require__(0); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Selector = function (_Container) { + _inherits(Selector, _Container); + + function Selector(opts) { + _classCallCheck(this, Selector); + + var _this = _possibleConstructorReturn(this, _Container.call(this, opts)); + + _this.type = _types.SELECTOR; + return _this; + } + + return Selector; +}(_container2.default); + +exports.default = Selector; +module.exports = exports['default']; + +/***/ }), +/* 53 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _node = __webpack_require__(6); + +var _node2 = _interopRequireDefault(_node); + +var _types = __webpack_require__(0); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var String = function (_Node) { + _inherits(String, _Node); + + function String(opts) { + _classCallCheck(this, String); + + var _this = _possibleConstructorReturn(this, _Node.call(this, opts)); + + _this.type = _types.STRING; + return _this; + } + + return String; +}(_node2.default); + +exports.default = String; +module.exports = exports['default']; + +/***/ }), +/* 54 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _namespace = __webpack_require__(9); + +var _namespace2 = _interopRequireDefault(_namespace); + +var _types = __webpack_require__(0); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Tag = function (_Namespace) { + _inherits(Tag, _Namespace); + + function Tag(opts) { + _classCallCheck(this, Tag); + + var _this = _possibleConstructorReturn(this, _Namespace.call(this, opts)); + + _this.type = _types.TAG; + return _this; + } + + return Tag; +}(_namespace2.default); + +exports.default = Tag; +module.exports = exports['default']; + +/***/ }), +/* 55 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _namespace = __webpack_require__(9); + +var _namespace2 = _interopRequireDefault(_namespace); + +var _types = __webpack_require__(0); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Universal = function (_Namespace) { + _inherits(Universal, _Namespace); + + function Universal(opts) { + _classCallCheck(this, Universal); + + var _this = _possibleConstructorReturn(this, _Namespace.call(this, opts)); + + _this.type = _types.UNIVERSAL; + _this.value = '*'; + return _this; + } + + return Universal; +}(_namespace2.default); + +exports.default = Universal; +module.exports = exports['default']; + +/***/ }), +/* 56 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const Container = __webpack_require__(1); + +class AtWord extends Container { + constructor (opts) { + super(opts); + this.type = 'atword'; + } + + toString () { + let quote = this.quoted ? this.raws.quote : ''; + return [ + this.raws.before, + '@', + // we can't use String() here because it'll try using itself + // as the constructor + String.prototype.toString.call(this.value), + this.raws.after + ].join(''); + } +} + +Container.registerWalker(AtWord); + +module.exports = AtWord; + + +/***/ }), +/* 57 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const Container = __webpack_require__(1); +const Node = __webpack_require__(4); + +class Colon extends Node { + constructor (opts) { + super(opts); + this.type = 'colon'; + } +} + +Container.registerWalker(Colon); + +module.exports = Colon; + + +/***/ }), +/* 58 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const Container = __webpack_require__(1); +const Node = __webpack_require__(4); + +class Comma extends Node { + constructor (opts) { + super(opts); + this.type = 'comma'; + } +} + +Container.registerWalker(Comma); + +module.exports = Comma; + + +/***/ }), +/* 59 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const Container = __webpack_require__(1); +const Node = __webpack_require__(4); + +class Comment extends Node { + constructor (opts) { + super(opts); + this.type = 'comment'; + } + + toString () { + return [ + this.raws.before, + '/*', + String(this.value), + '*/', + this.raws.after + ].join(''); + } +} + +Container.registerWalker(Comment); + +module.exports = Comment; + + +/***/ }), +/* 60 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const Container = __webpack_require__(1); + +class FunctionNode extends Container { + constructor (opts) { + super(opts); + this.type = 'func'; + // start off at -1 so we know there haven't been any parens added + this.unbalanced = -1; + } +} + +Container.registerWalker(FunctionNode); + +module.exports = FunctionNode; + + +/***/ }), +/* 61 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const Container = __webpack_require__(1); +const Node = __webpack_require__(4); + +class NumberNode extends Node { + constructor (opts) { + super(opts); + this.type = 'number'; + this.unit = opts.unit || ''; + } + + toString () { + return [ + this.raws.before, + String(this.value), + this.unit, + this.raws.after + ].join(''); + } +} + +Container.registerWalker(NumberNode); + +module.exports = NumberNode; + + +/***/ }), +/* 62 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const Container = __webpack_require__(1); +const Node = __webpack_require__(4); + +class Operator extends Node { + constructor (opts) { + super(opts); + this.type = 'operator'; + } +} + +Container.registerWalker(Operator); + +module.exports = Operator; + + +/***/ }), +/* 63 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const Container = __webpack_require__(1); +const Node = __webpack_require__(4); + +class Parenthesis extends Node { + constructor (opts) { + super(opts); + this.type = 'paren'; + this.parenType = ''; + } +} + +Container.registerWalker(Parenthesis); + +module.exports = Parenthesis; + + +/***/ }), +/* 64 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const Container = __webpack_require__(1); +const Node = __webpack_require__(4); + +class StringNode extends Node { + constructor (opts) { + super(opts); + this.type = 'string'; + } + + toString () { + let quote = this.quoted ? this.raws.quote : ''; + return [ + this.raws.before, + quote, + // we can't use String() here because it'll try using itself + // as the constructor + this.value + '', + quote, + this.raws.after + ].join(''); + } +} + +Container.registerWalker(StringNode); + +module.exports = StringNode; + + +/***/ }), +/* 65 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const Container = __webpack_require__(1); + +module.exports = class Value extends Container { + constructor (opts) { + super(opts); + this.type = 'value'; + this.unbalanced = 0; + } +}; + + +/***/ }), +/* 66 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const Container = __webpack_require__(1); +const Node = __webpack_require__(4); + +class Word extends Node { + constructor (opts) { + super(opts); + this.type = 'word'; + } +} + +Container.registerWalker(Word); + +module.exports = Word; + + +/***/ }), +/* 67 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _supportsColor = __webpack_require__(78); + +var _supportsColor2 = _interopRequireDefault(_supportsColor); + +var _chalk = __webpack_require__(11); + +var _chalk2 = _interopRequireDefault(_chalk); + +var _terminalHighlight = __webpack_require__(143); + +var _terminalHighlight2 = _interopRequireDefault(_terminalHighlight); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +/** + * The CSS parser throws this error for broken CSS. + * + * Custom parsers can throw this error for broken custom syntax using + * the {@link Node#error} method. + * + * PostCSS will use the input source map to detect the original error location. + * If you wrote a Sass file, compiled it to CSS and then parsed it with PostCSS, + * PostCSS will show the original position in the Sass file. + * + * If you need the position in the PostCSS input + * (e.g., to debug the previous compiler), use `error.input.file`. + * + * @example + * // Catching and checking syntax error + * try { + * postcss.parse('a{') + * } catch (error) { + * if ( error.name === 'CssSyntaxError' ) { + * error //=> CssSyntaxError + * } + * } + * + * @example + * // Raising error from plugin + * throw node.error('Unknown variable', { plugin: 'postcss-vars' }); + */ +var CssSyntaxError = function () { + + /** + * @param {string} message - error message + * @param {number} [line] - source line of the error + * @param {number} [column] - source column of the error + * @param {string} [source] - source code of the broken file + * @param {string} [file] - absolute path to the broken file + * @param {string} [plugin] - PostCSS plugin name, if error came from plugin + */ + function CssSyntaxError(message, line, column, source, file, plugin) { + _classCallCheck(this, CssSyntaxError); + + /** + * @member {string} - Always equal to `'CssSyntaxError'`. You should + * always check error type + * by `error.name === 'CssSyntaxError'` instead of + * `error instanceof CssSyntaxError`, because + * npm could have several PostCSS versions. + * + * @example + * if ( error.name === 'CssSyntaxError' ) { + * error //=> CssSyntaxError + * } + */ + this.name = 'CssSyntaxError'; + /** + * @member {string} - Error message. + * + * @example + * error.message //=> 'Unclosed block' + */ + this.reason = message; + + if (file) { + /** + * @member {string} - Absolute path to the broken file. + * + * @example + * error.file //=> 'a.sass' + * error.input.file //=> 'a.css' + */ + this.file = file; + } + if (source) { + /** + * @member {string} - Source code of the broken file. + * + * @example + * error.source //=> 'a { b {} }' + * error.input.column //=> 'a b { }' + */ + this.source = source; + } + if (plugin) { + /** + * @member {string} - Plugin name, if error came from plugin. + * + * @example + * error.plugin //=> 'postcss-vars' + */ + this.plugin = plugin; + } + if (typeof line !== 'undefined' && typeof column !== 'undefined') { + /** + * @member {number} - Source line of the error. + * + * @example + * error.line //=> 2 + * error.input.line //=> 4 + */ + this.line = line; + /** + * @member {number} - Source column of the error. + * + * @example + * error.column //=> 1 + * error.input.column //=> 4 + */ + this.column = column; + } + + this.setMessage(); + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, CssSyntaxError); + } + } + + CssSyntaxError.prototype.setMessage = function setMessage() { + /** + * @member {string} - Full error text in the GNU error format + * with plugin, file, line and column. + * + * @example + * error.message //=> 'a.css:1:1: Unclosed block' + */ + this.message = this.plugin ? this.plugin + ': ' : ''; + this.message += this.file ? this.file : ''; + if (typeof this.line !== 'undefined') { + this.message += ':' + this.line + ':' + this.column; + } + this.message += ': ' + this.reason; + }; + + /** + * Returns a few lines of CSS source that caused the error. + * + * If the CSS has an input source map without `sourceContent`, + * this method will return an empty string. + * + * @param {boolean} [color] whether arrow will be colored red by terminal + * color codes. By default, PostCSS will detect + * color support by `process.stdout.isTTY` + * and `process.env.NODE_DISABLE_COLORS`. + * + * @example + * error.showSourceCode() //=> " 4 | } + * // 5 | a { + * // > 6 | bad + * // | ^ + * // 7 | } + * // 8 | b {" + * + * @return {string} few lines of CSS source that caused the error + */ + + + CssSyntaxError.prototype.showSourceCode = function showSourceCode(color) { + var _this = this; + + if (!this.source) return ''; + + var css = this.source; + if (typeof color === 'undefined') color = _supportsColor2.default; + if (color) css = (0, _terminalHighlight2.default)(css); + + var lines = css.split(/\r?\n/); + var start = Math.max(this.line - 3, 0); + var end = Math.min(this.line + 2, lines.length); + + var maxWidth = String(end).length; + var colors = new _chalk2.default.constructor({ enabled: true }); + + function mark(text) { + if (color) { + return colors.red.bold(text); + } else { + return text; + } + } + function aside(text) { + if (color) { + return colors.gray(text); + } else { + return text; + } + } + + return lines.slice(start, end).map(function (line, index) { + var number = start + 1 + index; + var gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | '; + if (number === _this.line) { + var spacing = aside(gutter.replace(/\d/g, ' ')) + line.slice(0, _this.column - 1).replace(/[^\t]/g, ' '); + return mark('>') + aside(gutter) + line + '\n ' + spacing + mark('^'); + } else { + return ' ' + aside(gutter) + line; + } + }).join('\n'); + }; + + /** + * Returns error position, message and source code of the broken part. + * + * @example + * error.toString() //=> "CssSyntaxError: app.css:1:1: Unclosed block + * // > 1 | a { + * // | ^" + * + * @return {string} error position, message and source code + */ + + + CssSyntaxError.prototype.toString = function toString() { + var code = this.showSourceCode(); + if (code) { + code = '\n\n' + code + '\n'; + } + return this.name + ': ' + this.message + code; + }; + + /** + * @memberof CssSyntaxError# + * @member {Input} input - Input object with PostCSS internal information + * about input file. If input has source map + * from previous tool, PostCSS will use origin + * (for example, Sass) source. You can use this + * object to get PostCSS input source. + * + * @example + * error.input.file //=> 'a.css' + * error.file //=> 'a.sass' + */ + + return CssSyntaxError; +}(); + +exports.default = CssSyntaxError; +module.exports = exports['default']; + + + +/***/ }), +/* 68 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _node = __webpack_require__(27); + +var _node2 = _interopRequireDefault(_node); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/** + * Represents a CSS declaration. + * + * @extends Node + * + * @example + * const root = postcss.parse('a { color: black }'); + * const decl = root.first.first; + * decl.type //=> 'decl' + * decl.toString() //=> ' color: black' + */ +var Declaration = function (_Node) { + _inherits(Declaration, _Node); + + function Declaration(defaults) { + _classCallCheck(this, Declaration); + + var _this = _possibleConstructorReturn(this, _Node.call(this, defaults)); + + _this.type = 'decl'; + return _this; + } + + /** + * @memberof Declaration# + * @member {string} prop - the declaration’s property name + * + * @example + * const root = postcss.parse('a { color: black }'); + * const decl = root.first.first; + * decl.prop //=> 'color' + */ + + /** + * @memberof Declaration# + * @member {string} value - the declaration’s value + * + * @example + * const root = postcss.parse('a { color: black }'); + * const decl = root.first.first; + * decl.value //=> 'black' + */ + + /** + * @memberof Declaration# + * @member {boolean} important - `true` if the declaration + * has an !important annotation. + * + * @example + * const root = postcss.parse('a { color: black !important; color: red }'); + * root.first.first.important //=> true + * root.first.last.important //=> undefined + */ + + /** + * @memberof Declaration# + * @member {object} raws - Information to generate byte-to-byte equal + * node string as it was in the origin input. + * + * Every parser saves its own properties, + * but the default CSS parser uses: + * + * * `before`: the space symbols before the node. It also stores `*` + * and `_` symbols before the declaration (IE hack). + * * `between`: the symbols between the property and value + * for declarations. + * * `important`: the content of the important statement, + * if it is not just `!important`. + * + * PostCSS cleans declaration from comments and extra spaces, + * but it stores origin content in raws properties. + * As such, if you don’t change a declaration’s value, + * PostCSS will use the raw value with comments. + * + * @example + * const root = postcss.parse('a {\n color:black\n}') + * root.first.first.raws //=> { before: '\n ', between: ':' } + */ + + return Declaration; +}(_node2.default); + +exports.default = Declaration; +module.exports = exports['default']; + + + +/***/ }), +/* 69 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _mapGenerator = __webpack_require__(139); + +var _mapGenerator2 = _interopRequireDefault(_mapGenerator); + +var _stringify2 = __webpack_require__(73); + +var _stringify3 = _interopRequireDefault(_stringify2); + +var _result = __webpack_require__(142); + +var _result2 = _interopRequireDefault(_result); + +var _parse = __webpack_require__(70); + +var _parse2 = _interopRequireDefault(_parse); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function isPromise(obj) { + return (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && typeof obj.then === 'function'; +} + +/** + * A Promise proxy for the result of PostCSS transformations. + * + * A `LazyResult` instance is returned by {@link Processor#process}. + * + * @example + * const lazy = postcss([cssnext]).process(css); + */ + +var LazyResult = function () { + function LazyResult(processor, css, opts) { + _classCallCheck(this, LazyResult); + + this.stringified = false; + this.processed = false; + + var root = void 0; + if ((typeof css === 'undefined' ? 'undefined' : _typeof(css)) === 'object' && css.type === 'root') { + root = css; + } else if (css instanceof LazyResult || css instanceof _result2.default) { + root = css.root; + if (css.map) { + if (typeof opts.map === 'undefined') opts.map = {}; + if (!opts.map.inline) opts.map.inline = false; + opts.map.prev = css.map; + } + } else { + var parser = _parse2.default; + if (opts.syntax) parser = opts.syntax.parse; + if (opts.parser) parser = opts.parser; + if (parser.parse) parser = parser.parse; + + try { + root = parser(css, opts); + } catch (error) { + this.error = error; + } + } + + this.result = new _result2.default(processor, root, opts); + } + + /** + * Returns a {@link Processor} instance, which will be used + * for CSS transformations. + * @type {Processor} + */ + + + /** + * Processes input CSS through synchronous plugins + * and calls {@link Result#warnings()}. + * + * @return {Warning[]} warnings from plugins + */ + LazyResult.prototype.warnings = function warnings() { + return this.sync().warnings(); + }; + + /** + * Alias for the {@link LazyResult#css} property. + * + * @example + * lazy + '' === lazy.css; + * + * @return {string} output CSS + */ + + + LazyResult.prototype.toString = function toString() { + return this.css; + }; + + /** + * Processes input CSS through synchronous and asynchronous plugins + * and calls `onFulfilled` with a Result instance. If a plugin throws + * an error, the `onRejected` callback will be executed. + * + * It implements standard Promise API. + * + * @param {onFulfilled} onFulfilled - callback will be executed + * when all plugins will finish work + * @param {onRejected} onRejected - callback will be executed on any error + * + * @return {Promise} Promise API to make queue + * + * @example + * postcss([cssnext]).process(css).then(result => { + * console.log(result.css); + * }); + */ + + + LazyResult.prototype.then = function then(onFulfilled, onRejected) { + return this.async().then(onFulfilled, onRejected); + }; + + /** + * Processes input CSS through synchronous and asynchronous plugins + * and calls onRejected for each error thrown in any plugin. + * + * It implements standard Promise API. + * + * @param {onRejected} onRejected - callback will be executed on any error + * + * @return {Promise} Promise API to make queue + * + * @example + * postcss([cssnext]).process(css).then(result => { + * console.log(result.css); + * }).catch(error => { + * console.error(error); + * }); + */ + + + LazyResult.prototype.catch = function _catch(onRejected) { + return this.async().catch(onRejected); + }; + + LazyResult.prototype.handleError = function handleError(error, plugin) { + try { + this.error = error; + if (error.name === 'CssSyntaxError' && !error.plugin) { + error.plugin = plugin.postcssPlugin; + error.setMessage(); + } else if (plugin.postcssVersion) { + var pluginName = plugin.postcssPlugin; + var pluginVer = plugin.postcssVersion; + var runtimeVer = this.result.processor.version; + var a = pluginVer.split('.'); + var b = runtimeVer.split('.'); + + if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) { + console.error('Your current PostCSS version ' + 'is ' + runtimeVer + ', but ' + pluginName + ' ' + 'uses ' + pluginVer + '. Perhaps this is ' + 'the source of the error below.'); + } + } + } catch (err) { + if (console && console.error) console.error(err); + } + }; + + LazyResult.prototype.asyncTick = function asyncTick(resolve, reject) { + var _this = this; + + if (this.plugin >= this.processor.plugins.length) { + this.processed = true; + return resolve(); + } + + try { + var plugin = this.processor.plugins[this.plugin]; + var promise = this.run(plugin); + this.plugin += 1; + + if (isPromise(promise)) { + promise.then(function () { + _this.asyncTick(resolve, reject); + }).catch(function (error) { + _this.handleError(error, plugin); + _this.processed = true; + reject(error); + }); + } else { + this.asyncTick(resolve, reject); + } + } catch (error) { + this.processed = true; + reject(error); + } + }; + + LazyResult.prototype.async = function async() { + var _this2 = this; + + if (this.processed) { + return new Promise(function (resolve, reject) { + if (_this2.error) { + reject(_this2.error); + } else { + resolve(_this2.stringify()); + } + }); + } + if (this.processing) { + return this.processing; + } + + this.processing = new Promise(function (resolve, reject) { + if (_this2.error) return reject(_this2.error); + _this2.plugin = 0; + _this2.asyncTick(resolve, reject); + }).then(function () { + _this2.processed = true; + return _this2.stringify(); + }); + + return this.processing; + }; + + LazyResult.prototype.sync = function sync() { + if (this.processed) return this.result; + this.processed = true; + + if (this.processing) { + throw new Error('Use process(css).then(cb) to work with async plugins'); + } + + if (this.error) throw this.error; + + for (var _iterator = this.result.processor.plugins, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + var plugin = _ref; + + var promise = this.run(plugin); + if (isPromise(promise)) { + throw new Error('Use process(css).then(cb) to work with async plugins'); + } + } + + return this.result; + }; + + LazyResult.prototype.run = function run(plugin) { + this.result.lastPlugin = plugin; + + try { + return plugin(this.result.root, this.result); + } catch (error) { + this.handleError(error, plugin); + throw error; + } + }; + + LazyResult.prototype.stringify = function stringify() { + if (this.stringified) return this.result; + this.stringified = true; + + this.sync(); + + var opts = this.result.opts; + var str = _stringify3.default; + if (opts.syntax) str = opts.syntax.stringify; + if (opts.stringifier) str = opts.stringifier; + if (str.stringify) str = str.stringify; + + var map = new _mapGenerator2.default(str, this.result.root, this.result.opts); + var data = map.generate(); + this.result.css = data[0]; + this.result.map = data[1]; + + return this.result; + }; + + _createClass(LazyResult, [{ + key: 'processor', + get: function get() { + return this.result.processor; + } + + /** + * Options from the {@link Processor#process} call. + * @type {processOptions} + */ + + }, { + key: 'opts', + get: function get() { + return this.result.opts; + } + + /** + * Processes input CSS through synchronous plugins, converts `Root` + * to a CSS string and returns {@link Result#css}. + * + * This property will only work with synchronous plugins. + * If the processor contains any asynchronous plugins + * it will throw an error. This is why this method is only + * for debug purpose, you should always use {@link LazyResult#then}. + * + * @type {string} + * @see Result#css + */ + + }, { + key: 'css', + get: function get() { + return this.stringify().css; + } + + /** + * An alias for the `css` property. Use it with syntaxes + * that generate non-CSS output. + * + * This property will only work with synchronous plugins. + * If the processor contains any asynchronous plugins + * it will throw an error. This is why this method is only + * for debug purpose, you should always use {@link LazyResult#then}. + * + * @type {string} + * @see Result#content + */ + + }, { + key: 'content', + get: function get() { + return this.stringify().content; + } + + /** + * Processes input CSS through synchronous plugins + * and returns {@link Result#map}. + * + * This property will only work with synchronous plugins. + * If the processor contains any asynchronous plugins + * it will throw an error. This is why this method is only + * for debug purpose, you should always use {@link LazyResult#then}. + * + * @type {SourceMapGenerator} + * @see Result#map + */ + + }, { + key: 'map', + get: function get() { + return this.stringify().map; + } + + /** + * Processes input CSS through synchronous plugins + * and returns {@link Result#root}. + * + * This property will only work with synchronous plugins. If the processor + * contains any asynchronous plugins it will throw an error. + * + * This is why this method is only for debug purpose, + * you should always use {@link LazyResult#then}. + * + * @type {Root} + * @see Result#root + */ + + }, { + key: 'root', + get: function get() { + return this.sync().root; + } + + /** + * Processes input CSS through synchronous plugins + * and returns {@link Result#messages}. + * + * This property will only work with synchronous plugins. If the processor + * contains any asynchronous plugins it will throw an error. + * + * This is why this method is only for debug purpose, + * you should always use {@link LazyResult#then}. + * + * @type {Message[]} + * @see Result#messages + */ + + }, { + key: 'messages', + get: function get() { + return this.sync().messages; + } + }]); + + return LazyResult; +}(); + +exports.default = LazyResult; + +/** + * @callback onFulfilled + * @param {Result} result + */ + +/** + * @callback onRejected + * @param {Error} error + */ + +module.exports = exports['default']; + + + +/***/ }), +/* 70 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; +exports.default = parse; + +var _parser = __webpack_require__(71); + +var _parser2 = _interopRequireDefault(_parser); + +var _input = __webpack_require__(26); + +var _input2 = _interopRequireDefault(_input); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function parse(css, opts) { + if (opts && opts.safe) { + throw new Error('Option safe was removed. ' + 'Use parser: require("postcss-safe-parser")'); + } + + var input = new _input2.default(css, opts); + var parser = new _parser2.default(input); + try { + parser.parse(); + } catch (e) { + if (e.name === 'CssSyntaxError' && opts && opts.from) { + if (/\.scss$/i.test(opts.from)) { + e.message += '\nYou tried to parse SCSS with ' + 'the standard CSS parser; ' + 'try again with the postcss-scss parser'; + } else if (/\.sass/i.test(opts.from)) { + e.message += '\nYou tried to parse Sass with ' + 'the standard CSS parser; ' + 'try again with the postcss-sass parser'; + } else if (/\.less$/i.test(opts.from)) { + e.message += '\nYou tried to parse Less with ' + 'the standard CSS parser; ' + 'try again with the postcss-less parser'; + } + } + throw e; + } + + return parser.root; +} +module.exports = exports['default']; + + + +/***/ }), +/* 71 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _declaration = __webpack_require__(68); + +var _declaration2 = _interopRequireDefault(_declaration); + +var _tokenize = __webpack_require__(74); + +var _tokenize2 = _interopRequireDefault(_tokenize); + +var _comment = __webpack_require__(25); + +var _comment2 = _interopRequireDefault(_comment); + +var _atRule = __webpack_require__(24); + +var _atRule2 = _interopRequireDefault(_atRule); + +var _root = __webpack_require__(72); + +var _root2 = _interopRequireDefault(_root); + +var _rule = __webpack_require__(28); + +var _rule2 = _interopRequireDefault(_rule); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var Parser = function () { + function Parser(input) { + _classCallCheck(this, Parser); + + this.input = input; + + this.root = new _root2.default(); + this.current = this.root; + this.spaces = ''; + this.semicolon = false; + + this.createTokenizer(); + this.root.source = { input: input, start: { line: 1, column: 1 } }; + } + + Parser.prototype.createTokenizer = function createTokenizer() { + this.tokenizer = (0, _tokenize2.default)(this.input); + }; + + Parser.prototype.parse = function parse() { + var token = void 0; + while (!this.tokenizer.endOfFile()) { + token = this.tokenizer.nextToken(); + + switch (token[0]) { + + case 'space': + this.spaces += token[1]; + break; + + case ';': + this.freeSemicolon(token); + break; + + case '}': + this.end(token); + break; + + case 'comment': + this.comment(token); + break; + + case 'at-word': + this.atrule(token); + break; + + case '{': + this.emptyRule(token); + break; + + default: + this.other(token); + break; + } + } + this.endFile(); + }; + + Parser.prototype.comment = function comment(token) { + var node = new _comment2.default(); + this.init(node, token[2], token[3]); + node.source.end = { line: token[4], column: token[5] }; + + var text = token[1].slice(2, -2); + if (/^\s*$/.test(text)) { + node.text = ''; + node.raws.left = text; + node.raws.right = ''; + } else { + var match = text.match(/^(\s*)([^]*[^\s])(\s*)$/); + node.text = match[2]; + node.raws.left = match[1]; + node.raws.right = match[3]; + } + }; + + Parser.prototype.emptyRule = function emptyRule(token) { + var node = new _rule2.default(); + this.init(node, token[2], token[3]); + node.selector = ''; + node.raws.between = ''; + this.current = node; + }; + + Parser.prototype.other = function other(start) { + var end = false; + var type = null; + var colon = false; + var bracket = null; + var brackets = []; + + var tokens = []; + var token = start; + while (token) { + type = token[0]; + tokens.push(token); + + if (type === '(' || type === '[') { + if (!bracket) bracket = token; + brackets.push(type === '(' ? ')' : ']'); + } else if (brackets.length === 0) { + if (type === ';') { + if (colon) { + this.decl(tokens); + return; + } else { + break; + } + } else if (type === '{') { + this.rule(tokens); + return; + } else if (type === '}') { + this.tokenizer.back(tokens.pop()); + end = true; + break; + } else if (type === ':') { + colon = true; + } + } else if (type === brackets[brackets.length - 1]) { + brackets.pop(); + if (brackets.length === 0) bracket = null; + } + + token = this.tokenizer.nextToken(); + } + + if (this.tokenizer.endOfFile()) end = true; + if (brackets.length > 0) this.unclosedBracket(bracket); + + if (end && colon) { + while (tokens.length) { + token = tokens[tokens.length - 1][0]; + if (token !== 'space' && token !== 'comment') break; + this.tokenizer.back(tokens.pop()); + } + this.decl(tokens); + return; + } else { + this.unknownWord(tokens); + } + }; + + Parser.prototype.rule = function rule(tokens) { + tokens.pop(); + + var node = new _rule2.default(); + this.init(node, tokens[0][2], tokens[0][3]); + + node.raws.between = this.spacesAndCommentsFromEnd(tokens); + this.raw(node, 'selector', tokens); + this.current = node; + }; + + Parser.prototype.decl = function decl(tokens) { + var node = new _declaration2.default(); + this.init(node); + + var last = tokens[tokens.length - 1]; + if (last[0] === ';') { + this.semicolon = true; + tokens.pop(); + } + if (last[4]) { + node.source.end = { line: last[4], column: last[5] }; + } else { + node.source.end = { line: last[2], column: last[3] }; + } + + while (tokens[0][0] !== 'word') { + if (tokens.length === 1) this.unknownWord(tokens); + node.raws.before += tokens.shift()[1]; + } + node.source.start = { line: tokens[0][2], column: tokens[0][3] }; + + node.prop = ''; + while (tokens.length) { + var type = tokens[0][0]; + if (type === ':' || type === 'space' || type === 'comment') { + break; + } + node.prop += tokens.shift()[1]; + } + + node.raws.between = ''; + + var token = void 0; + while (tokens.length) { + token = tokens.shift(); + + if (token[0] === ':') { + node.raws.between += token[1]; + break; + } else { + node.raws.between += token[1]; + } + } + + if (node.prop[0] === '_' || node.prop[0] === '*') { + node.raws.before += node.prop[0]; + node.prop = node.prop.slice(1); + } + node.raws.between += this.spacesAndCommentsFromStart(tokens); + this.precheckMissedSemicolon(tokens); + + for (var i = tokens.length - 1; i > 0; i--) { + token = tokens[i]; + if (token[1] === '!important') { + node.important = true; + var string = this.stringFrom(tokens, i); + string = this.spacesFromEnd(tokens) + string; + if (string !== ' !important') node.raws.important = string; + break; + } else if (token[1] === 'important') { + var cache = tokens.slice(0); + var str = ''; + for (var j = i; j > 0; j--) { + var _type = cache[j][0]; + if (str.trim().indexOf('!') === 0 && _type !== 'space') { + break; + } + str = cache.pop()[1] + str; + } + if (str.trim().indexOf('!') === 0) { + node.important = true; + node.raws.important = str; + tokens = cache; + } + } + + if (token[0] !== 'space' && token[0] !== 'comment') { + break; + } + } + + this.raw(node, 'value', tokens); + + if (node.value.indexOf(':') !== -1) this.checkMissedSemicolon(tokens); + }; + + Parser.prototype.atrule = function atrule(token) { + var node = new _atRule2.default(); + node.name = token[1].slice(1); + if (node.name === '') { + this.unnamedAtrule(node, token); + } + this.init(node, token[2], token[3]); + + var last = false; + var open = false; + var params = []; + + while (!this.tokenizer.endOfFile()) { + token = this.tokenizer.nextToken(); + + if (token[0] === ';') { + node.source.end = { line: token[2], column: token[3] }; + this.semicolon = true; + break; + } else if (token[0] === '{') { + open = true; + break; + } else if (token[0] === '}') { + this.end(token); + break; + } else { + params.push(token); + } + + if (this.tokenizer.endOfFile()) { + last = true; + break; + } + } + + node.raws.between = this.spacesAndCommentsFromEnd(params); + if (params.length) { + node.raws.afterName = this.spacesAndCommentsFromStart(params); + this.raw(node, 'params', params); + if (last) { + token = params[params.length - 1]; + node.source.end = { line: token[4], column: token[5] }; + this.spaces = node.raws.between; + node.raws.between = ''; + } + } else { + node.raws.afterName = ''; + node.params = ''; + } + + if (open) { + node.nodes = []; + this.current = node; + } + }; + + Parser.prototype.end = function end(token) { + if (this.current.nodes && this.current.nodes.length) { + this.current.raws.semicolon = this.semicolon; + } + this.semicolon = false; + + this.current.raws.after = (this.current.raws.after || '') + this.spaces; + this.spaces = ''; + + if (this.current.parent) { + this.current.source.end = { line: token[2], column: token[3] }; + this.current = this.current.parent; + } else { + this.unexpectedClose(token); + } + }; + + Parser.prototype.endFile = function endFile() { + if (this.current.parent) this.unclosedBlock(); + if (this.current.nodes && this.current.nodes.length) { + this.current.raws.semicolon = this.semicolon; + } + this.current.raws.after = (this.current.raws.after || '') + this.spaces; + }; + + Parser.prototype.freeSemicolon = function freeSemicolon(token) { + this.spaces += token[1]; + if (this.current.nodes) { + var prev = this.current.nodes[this.current.nodes.length - 1]; + if (prev && prev.type === 'rule') { + prev.raws.ownSemicolon = this.spaces; + this.spaces = ''; + } + } + }; + + // Helpers + + Parser.prototype.init = function init(node, line, column) { + this.current.push(node); + + node.source = { start: { line: line, column: column }, input: this.input }; + node.raws.before = this.spaces; + this.spaces = ''; + if (node.type !== 'comment') this.semicolon = false; + }; + + Parser.prototype.raw = function raw(node, prop, tokens) { + var token = void 0, + type = void 0; + var length = tokens.length; + var value = ''; + var clean = true; + for (var i = 0; i < length; i += 1) { + token = tokens[i]; + type = token[0]; + if (type === 'comment' || type === 'space' && i === length - 1) { + clean = false; + } else { + value += token[1]; + } + } + if (!clean) { + var raw = tokens.reduce(function (all, i) { + return all + i[1]; + }, ''); + node.raws[prop] = { value: value, raw: raw }; + } + node[prop] = value; + }; + + Parser.prototype.spacesAndCommentsFromEnd = function spacesAndCommentsFromEnd(tokens) { + var lastTokenType = void 0; + var spaces = ''; + while (tokens.length) { + lastTokenType = tokens[tokens.length - 1][0]; + if (lastTokenType !== 'space' && lastTokenType !== 'comment') break; + spaces = tokens.pop()[1] + spaces; + } + return spaces; + }; + + Parser.prototype.spacesAndCommentsFromStart = function spacesAndCommentsFromStart(tokens) { + var next = void 0; + var spaces = ''; + while (tokens.length) { + next = tokens[0][0]; + if (next !== 'space' && next !== 'comment') break; + spaces += tokens.shift()[1]; + } + return spaces; + }; + + Parser.prototype.spacesFromEnd = function spacesFromEnd(tokens) { + var lastTokenType = void 0; + var spaces = ''; + while (tokens.length) { + lastTokenType = tokens[tokens.length - 1][0]; + if (lastTokenType !== 'space') break; + spaces = tokens.pop()[1] + spaces; + } + return spaces; + }; + + Parser.prototype.stringFrom = function stringFrom(tokens, from) { + var result = ''; + for (var i = from; i < tokens.length; i++) { + result += tokens[i][1]; + } + tokens.splice(from, tokens.length - from); + return result; + }; + + Parser.prototype.colon = function colon(tokens) { + var brackets = 0; + var token = void 0, + type = void 0, + prev = void 0; + for (var i = 0; i < tokens.length; i++) { + token = tokens[i]; + type = token[0]; + + if (type === '(') { + brackets += 1; + } else if (type === ')') { + brackets -= 1; + } else if (brackets === 0 && type === ':') { + if (!prev) { + this.doubleColon(token); + } else if (prev[0] === 'word' && prev[1] === 'progid') { + continue; + } else { + return i; + } + } + + prev = token; + } + return false; + }; + + // Errors + + Parser.prototype.unclosedBracket = function unclosedBracket(bracket) { + throw this.input.error('Unclosed bracket', bracket[2], bracket[3]); + }; + + Parser.prototype.unknownWord = function unknownWord(tokens) { + throw this.input.error('Unknown word', tokens[0][2], tokens[0][3]); + }; + + Parser.prototype.unexpectedClose = function unexpectedClose(token) { + throw this.input.error('Unexpected }', token[2], token[3]); + }; + + Parser.prototype.unclosedBlock = function unclosedBlock() { + var pos = this.current.source.start; + throw this.input.error('Unclosed block', pos.line, pos.column); + }; + + Parser.prototype.doubleColon = function doubleColon(token) { + throw this.input.error('Double colon', token[2], token[3]); + }; + + Parser.prototype.unnamedAtrule = function unnamedAtrule(node, token) { + throw this.input.error('At-rule without name', token[2], token[3]); + }; + + Parser.prototype.precheckMissedSemicolon = function precheckMissedSemicolon(tokens) { + // Hook for Safe Parser + tokens; + }; + + Parser.prototype.checkMissedSemicolon = function checkMissedSemicolon(tokens) { + var colon = this.colon(tokens); + if (colon === false) return; + + var founded = 0; + var token = void 0; + for (var j = colon - 1; j >= 0; j--) { + token = tokens[j]; + if (token[0] !== 'space') { + founded += 1; + if (founded === 2) break; + } + } + throw this.input.error('Missed semicolon', token[2], token[3]); + }; + + return Parser; +}(); + +exports.default = Parser; +module.exports = exports['default']; + + + +/***/ }), +/* 72 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _container = __webpack_require__(12); + +var _container2 = _interopRequireDefault(_container); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/** + * Represents a CSS file and contains all its parsed nodes. + * + * @extends Container + * + * @example + * const root = postcss.parse('a{color:black} b{z-index:2}'); + * root.type //=> 'root' + * root.nodes.length //=> 2 + */ +var Root = function (_Container) { + _inherits(Root, _Container); + + function Root(defaults) { + _classCallCheck(this, Root); + + var _this = _possibleConstructorReturn(this, _Container.call(this, defaults)); + + _this.type = 'root'; + if (!_this.nodes) _this.nodes = []; + return _this; + } + + Root.prototype.removeChild = function removeChild(child) { + child = this.index(child); + + if (child === 0 && this.nodes.length > 1) { + this.nodes[1].raws.before = this.nodes[child].raws.before; + } + + return _Container.prototype.removeChild.call(this, child); + }; + + Root.prototype.normalize = function normalize(child, sample, type) { + var nodes = _Container.prototype.normalize.call(this, child); + + if (sample) { + if (type === 'prepend') { + if (this.nodes.length > 1) { + sample.raws.before = this.nodes[1].raws.before; + } else { + delete sample.raws.before; + } + } else if (this.first !== sample) { + for (var _iterator = nodes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + var node = _ref; + + node.raws.before = sample.raws.before; + } + } + } + + return nodes; + }; + + /** + * Returns a {@link Result} instance representing the root’s CSS. + * + * @param {processOptions} [opts] - options with only `to` and `map` keys + * + * @return {Result} result with current root’s CSS + * + * @example + * const root1 = postcss.parse(css1, { from: 'a.css' }); + * const root2 = postcss.parse(css2, { from: 'b.css' }); + * root1.append(root2); + * const result = root1.toResult({ to: 'all.css', map: true }); + */ + + + Root.prototype.toResult = function toResult() { + var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + var LazyResult = __webpack_require__(69); + var Processor = __webpack_require__(141); + + var lazy = new LazyResult(new Processor(), this, opts); + return lazy.stringify(); + }; + + /** + * @memberof Root# + * @member {object} raws - Information to generate byte-to-byte equal + * node string as it was in the origin input. + * + * Every parser saves its own properties, + * but the default CSS parser uses: + * + * * `after`: the space symbols after the last child to the end of file. + * * `semicolon`: is the last child has an (optional) semicolon. + * + * @example + * postcss.parse('a {}\n').raws //=> { after: '\n' } + * postcss.parse('a {}').raws //=> { after: '' } + */ + + return Root; +}(_container2.default); + +exports.default = Root; +module.exports = exports['default']; + + + +/***/ }), +/* 73 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; +exports.default = stringify; + +var _stringifier = __webpack_require__(29); + +var _stringifier2 = _interopRequireDefault(_stringifier); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function stringify(node, builder) { + var str = new _stringifier2.default(builder); + str.stringify(node); +} +module.exports = exports['default']; + + + +/***/ }), +/* 74 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; +exports.default = tokenizer; +var SINGLE_QUOTE = 39; +var DOUBLE_QUOTE = 34; +var BACKSLASH = 92; +var SLASH = 47; +var NEWLINE = 10; +var SPACE = 32; +var FEED = 12; +var TAB = 9; +var CR = 13; +var OPEN_SQUARE = 91; +var CLOSE_SQUARE = 93; +var OPEN_PARENTHESES = 40; +var CLOSE_PARENTHESES = 41; +var OPEN_CURLY = 123; +var CLOSE_CURLY = 125; +var SEMICOLON = 59; +var ASTERISK = 42; +var COLON = 58; +var AT = 64; + +var RE_AT_END = /[ \n\t\r\f\{\(\)'"\\;/\[\]#]/g; +var RE_WORD_END = /[ \n\t\r\f\(\)\{\}:;@!'"\\\]\[#]|\/(?=\*)/g; +var RE_BAD_BRACKET = /.[\\\/\("'\n]/; + +function tokenizer(input) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + var css = input.css.valueOf(); + var ignore = options.ignoreErrors; + + var code = void 0, + next = void 0, + quote = void 0, + lines = void 0, + last = void 0, + content = void 0, + escape = void 0, + nextLine = void 0, + nextOffset = void 0, + escaped = void 0, + escapePos = void 0, + prev = void 0, + n = void 0, + currentToken = void 0; + + var length = css.length; + var offset = -1; + var line = 1; + var pos = 0; + var buffer = []; + var returned = []; + + function unclosed(what) { + throw input.error('Unclosed ' + what, line, pos - offset); + } + + function endOfFile() { + return returned.length === 0 && pos >= length; + } + + function nextToken() { + if (returned.length) return returned.pop(); + if (pos >= length) return; + + code = css.charCodeAt(pos); + if (code === NEWLINE || code === FEED || code === CR && css.charCodeAt(pos + 1) !== NEWLINE) { + offset = pos; + line += 1; + } + + switch (code) { + case NEWLINE: + case SPACE: + case TAB: + case CR: + case FEED: + next = pos; + do { + next += 1; + code = css.charCodeAt(next); + if (code === NEWLINE) { + offset = next; + line += 1; + } + } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED); + + currentToken = ['space', css.slice(pos, next)]; + pos = next - 1; + break; + + case OPEN_SQUARE: + currentToken = ['[', '[', line, pos - offset]; + break; + + case CLOSE_SQUARE: + currentToken = [']', ']', line, pos - offset]; + break; + + case OPEN_CURLY: + currentToken = ['{', '{', line, pos - offset]; + break; + + case CLOSE_CURLY: + currentToken = ['}', '}', line, pos - offset]; + break; + + case COLON: + currentToken = [':', ':', line, pos - offset]; + break; + + case SEMICOLON: + currentToken = [';', ';', line, pos - offset]; + break; + + case OPEN_PARENTHESES: + prev = buffer.length ? buffer.pop()[1] : ''; + n = css.charCodeAt(pos + 1); + if (prev === 'url' && n !== SINGLE_QUOTE && n !== DOUBLE_QUOTE && n !== SPACE && n !== NEWLINE && n !== TAB && n !== FEED && n !== CR) { + next = pos; + do { + escaped = false; + next = css.indexOf(')', next + 1); + if (next === -1) { + if (ignore) { + next = pos; + break; + } else { + unclosed('bracket'); + } + } + escapePos = next; + while (css.charCodeAt(escapePos - 1) === BACKSLASH) { + escapePos -= 1; + escaped = !escaped; + } + } while (escaped); + + currentToken = ['brackets', css.slice(pos, next + 1), line, pos - offset, line, next - offset]; + + pos = next; + } else { + next = css.indexOf(')', pos + 1); + content = css.slice(pos, next + 1); + + if (next === -1 || RE_BAD_BRACKET.test(content)) { + currentToken = ['(', '(', line, pos - offset]; + } else { + currentToken = ['brackets', content, line, pos - offset, line, next - offset]; + pos = next; + } + } + + break; + + case CLOSE_PARENTHESES: + currentToken = [')', ')', line, pos - offset]; + break; + + case SINGLE_QUOTE: + case DOUBLE_QUOTE: + quote = code === SINGLE_QUOTE ? '\'' : '"'; + next = pos; + do { + escaped = false; + next = css.indexOf(quote, next + 1); + if (next === -1) { + if (ignore) { + next = pos + 1; + break; + } else { + unclosed('string'); + } + } + escapePos = next; + while (css.charCodeAt(escapePos - 1) === BACKSLASH) { + escapePos -= 1; + escaped = !escaped; + } + } while (escaped); + + content = css.slice(pos, next + 1); + lines = content.split('\n'); + last = lines.length - 1; + + if (last > 0) { + nextLine = line + last; + nextOffset = next - lines[last].length; + } else { + nextLine = line; + nextOffset = offset; + } + + currentToken = ['string', css.slice(pos, next + 1), line, pos - offset, nextLine, next - nextOffset]; + + offset = nextOffset; + line = nextLine; + pos = next; + break; + + case AT: + RE_AT_END.lastIndex = pos + 1; + RE_AT_END.test(css); + if (RE_AT_END.lastIndex === 0) { + next = css.length - 1; + } else { + next = RE_AT_END.lastIndex - 2; + } + + currentToken = ['at-word', css.slice(pos, next + 1), line, pos - offset, line, next - offset]; + + pos = next; + break; + + case BACKSLASH: + next = pos; + escape = true; + while (css.charCodeAt(next + 1) === BACKSLASH) { + next += 1; + escape = !escape; + } + code = css.charCodeAt(next + 1); + if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) { + next += 1; + } + + currentToken = ['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset]; + + pos = next; + break; + + default: + if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) { + next = css.indexOf('*/', pos + 2) + 1; + if (next === 0) { + if (ignore) { + next = css.length; + } else { + unclosed('comment'); + } + } + + content = css.slice(pos, next + 1); + lines = content.split('\n'); + last = lines.length - 1; + + if (last > 0) { + nextLine = line + last; + nextOffset = next - lines[last].length; + } else { + nextLine = line; + nextOffset = offset; + } + + currentToken = ['comment', content, line, pos - offset, nextLine, next - nextOffset]; + + offset = nextOffset; + line = nextLine; + pos = next; + } else { + RE_WORD_END.lastIndex = pos + 1; + RE_WORD_END.test(css); + if (RE_WORD_END.lastIndex === 0) { + next = css.length - 1; + } else { + next = RE_WORD_END.lastIndex - 2; + } + + currentToken = ['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset]; + + buffer.push(currentToken); + + pos = next; + } + + break; + } + + pos++; + return currentToken; + } + + function back(token) { + returned.push(token); + } + + return { + back: back, + nextToken: nextToken, + endOfFile: endOfFile + }; +} +module.exports = exports['default']; + + + +/***/ }), +/* 75 */ +/***/ (function(module, exports, __webpack_require__) { + +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var util = __webpack_require__(10); +var has = Object.prototype.hasOwnProperty; + +/** + * A data structure which is a combination of an array and a set. Adding a new + * member is O(1), testing for membership is O(1), and finding the index of an + * element is O(1). Removing elements from the set is not supported. Only + * strings are supported for membership. + */ +function ArraySet() { + this._array = []; + this._set = Object.create(null); +} + +/** + * Static method for creating ArraySet instances from an existing array. + */ +ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { + var set = new ArraySet(); + for (var i = 0, len = aArray.length; i < len; i++) { + set.add(aArray[i], aAllowDuplicates); + } + return set; +}; + +/** + * Return how many unique items are in this ArraySet. If duplicates have been + * added, than those do not count towards the size. + * + * @returns Number + */ +ArraySet.prototype.size = function ArraySet_size() { + return Object.getOwnPropertyNames(this._set).length; +}; + +/** + * Add the given string to this set. + * + * @param String aStr + */ +ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { + var sStr = util.toSetString(aStr); + var isDuplicate = has.call(this._set, sStr); + var idx = this._array.length; + if (!isDuplicate || aAllowDuplicates) { + this._array.push(aStr); + } + if (!isDuplicate) { + this._set[sStr] = idx; + } +}; + +/** + * Is the given string a member of this set? + * + * @param String aStr + */ +ArraySet.prototype.has = function ArraySet_has(aStr) { + var sStr = util.toSetString(aStr); + return has.call(this._set, sStr); +}; + +/** + * What is the index of the given string in the array? + * + * @param String aStr + */ +ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { + var sStr = util.toSetString(aStr); + if (has.call(this._set, sStr)) { + return this._set[sStr]; + } + throw new Error('"' + aStr + '" is not in the set.'); +}; + +/** + * What is the element at the given index? + * + * @param Number aIdx + */ +ArraySet.prototype.at = function ArraySet_at(aIdx) { + if (aIdx >= 0 && aIdx < this._array.length) { + return this._array[aIdx]; + } + throw new Error('No element indexed by ' + aIdx); +}; + +/** + * Returns the array representation of this set (which has the proper indices + * indicated by indexOf). Note that this is a copy of the internal array used + * for storing the members so that no one can mess with internal state. + */ +ArraySet.prototype.toArray = function ArraySet_toArray() { + return this._array.slice(); +}; + +exports.ArraySet = ArraySet; + + +/***/ }), +/* 76 */ +/***/ (function(module, exports, __webpack_require__) { + +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + * + * Based on the Base 64 VLQ implementation in Closure Compiler: + * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java + * + * Copyright 2011 The Closure Compiler Authors. All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +var base64 = __webpack_require__(146); + +// A single base 64 digit can contain 6 bits of data. For the base 64 variable +// length quantities we use in the source map spec, the first bit is the sign, +// the next four bits are the actual value, and the 6th bit is the +// continuation bit. The continuation bit tells us whether there are more +// digits in this value following this digit. +// +// Continuation +// | Sign +// | | +// V V +// 101011 + +var VLQ_BASE_SHIFT = 5; + +// binary: 100000 +var VLQ_BASE = 1 << VLQ_BASE_SHIFT; + +// binary: 011111 +var VLQ_BASE_MASK = VLQ_BASE - 1; + +// binary: 100000 +var VLQ_CONTINUATION_BIT = VLQ_BASE; + +/** + * Converts from a two-complement value to a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) + * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) + */ +function toVLQSigned(aValue) { + return aValue < 0 + ? ((-aValue) << 1) + 1 + : (aValue << 1) + 0; +} + +/** + * Converts to a two-complement value from a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 + * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 + */ +function fromVLQSigned(aValue) { + var isNegative = (aValue & 1) === 1; + var shifted = aValue >> 1; + return isNegative + ? -shifted + : shifted; +} + +/** + * Returns the base 64 VLQ encoded value. + */ +exports.encode = function base64VLQ_encode(aValue) { + var encoded = ""; + var digit; + + var vlq = toVLQSigned(aValue); + + do { + digit = vlq & VLQ_BASE_MASK; + vlq >>>= VLQ_BASE_SHIFT; + if (vlq > 0) { + // There are still more digits in this value, so we must make sure the + // continuation bit is marked. + digit |= VLQ_CONTINUATION_BIT; + } + encoded += base64.encode(digit); + } while (vlq > 0); + + return encoded; +}; + +/** + * Decodes the next base 64 VLQ value from the given string and returns the + * value and the rest of the string via the out parameter. + */ +exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { + var strLen = aStr.length; + var result = 0; + var shift = 0; + var continuation, digit; + + do { + if (aIndex >= strLen) { + throw new Error("Expected more digits in base 64 VLQ value."); + } + + digit = base64.decode(aStr.charCodeAt(aIndex++)); + if (digit === -1) { + throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); + } + + continuation = !!(digit & VLQ_CONTINUATION_BIT); + digit &= VLQ_BASE_MASK; + result = result + (digit << shift); + shift += VLQ_BASE_SHIFT; + } while (continuation); + + aOutParam.value = fromVLQSigned(result); + aOutParam.rest = aIndex; +}; + + +/***/ }), +/* 77 */ +/***/ (function(module, exports, __webpack_require__) { + +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var base64VLQ = __webpack_require__(76); +var util = __webpack_require__(10); +var ArraySet = __webpack_require__(75).ArraySet; +var MappingList = __webpack_require__(148).MappingList; + +/** + * An instance of the SourceMapGenerator represents a source map which is + * being built incrementally. You may pass an object with the following + * properties: + * + * - file: The filename of the generated source. + * - sourceRoot: A root for all relative URLs in this source map. + */ +function SourceMapGenerator(aArgs) { + if (!aArgs) { + aArgs = {}; + } + this._file = util.getArg(aArgs, 'file', null); + this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); + this._skipValidation = util.getArg(aArgs, 'skipValidation', false); + this._sources = new ArraySet(); + this._names = new ArraySet(); + this._mappings = new MappingList(); + this._sourcesContents = null; +} + +SourceMapGenerator.prototype._version = 3; + +/** + * Creates a new SourceMapGenerator based on a SourceMapConsumer + * + * @param aSourceMapConsumer The SourceMap. + */ +SourceMapGenerator.fromSourceMap = + function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { + var sourceRoot = aSourceMapConsumer.sourceRoot; + var generator = new SourceMapGenerator({ + file: aSourceMapConsumer.file, + sourceRoot: sourceRoot + }); + aSourceMapConsumer.eachMapping(function (mapping) { + var newMapping = { + generated: { + line: mapping.generatedLine, + column: mapping.generatedColumn + } + }; + + if (mapping.source != null) { + newMapping.source = mapping.source; + if (sourceRoot != null) { + newMapping.source = util.relative(sourceRoot, newMapping.source); + } + + newMapping.original = { + line: mapping.originalLine, + column: mapping.originalColumn + }; + + if (mapping.name != null) { + newMapping.name = mapping.name; + } + } + + generator.addMapping(newMapping); + }); + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + generator.setSourceContent(sourceFile, content); + } + }); + return generator; + }; + +/** + * Add a single mapping from original source line and column to the generated + * source's line and column for this source map being created. The mapping + * object should have the following properties: + * + * - generated: An object with the generated line and column positions. + * - original: An object with the original line and column positions. + * - source: The original source file (relative to the sourceRoot). + * - name: An optional original token name for this mapping. + */ +SourceMapGenerator.prototype.addMapping = + function SourceMapGenerator_addMapping(aArgs) { + var generated = util.getArg(aArgs, 'generated'); + var original = util.getArg(aArgs, 'original', null); + var source = util.getArg(aArgs, 'source', null); + var name = util.getArg(aArgs, 'name', null); + + if (!this._skipValidation) { + this._validateMapping(generated, original, source, name); + } + + if (source != null) { + source = String(source); + if (!this._sources.has(source)) { + this._sources.add(source); + } + } + + if (name != null) { + name = String(name); + if (!this._names.has(name)) { + this._names.add(name); + } + } + + this._mappings.add({ + generatedLine: generated.line, + generatedColumn: generated.column, + originalLine: original != null && original.line, + originalColumn: original != null && original.column, + source: source, + name: name + }); + }; + +/** + * Set the source content for a source file. + */ +SourceMapGenerator.prototype.setSourceContent = + function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { + var source = aSourceFile; + if (this._sourceRoot != null) { + source = util.relative(this._sourceRoot, source); + } + + if (aSourceContent != null) { + // Add the source content to the _sourcesContents map. + // Create a new _sourcesContents map if the property is null. + if (!this._sourcesContents) { + this._sourcesContents = Object.create(null); + } + this._sourcesContents[util.toSetString(source)] = aSourceContent; + } else if (this._sourcesContents) { + // Remove the source file from the _sourcesContents map. + // If the _sourcesContents map is empty, set the property to null. + delete this._sourcesContents[util.toSetString(source)]; + if (Object.keys(this._sourcesContents).length === 0) { + this._sourcesContents = null; + } + } + }; + +/** + * Applies the mappings of a sub-source-map for a specific source file to the + * source map being generated. Each mapping to the supplied source file is + * rewritten using the supplied source map. Note: The resolution for the + * resulting mappings is the minimium of this map and the supplied map. + * + * @param aSourceMapConsumer The source map to be applied. + * @param aSourceFile Optional. The filename of the source file. + * If omitted, SourceMapConsumer's file property will be used. + * @param aSourceMapPath Optional. The dirname of the path to the source map + * to be applied. If relative, it is relative to the SourceMapConsumer. + * This parameter is needed when the two source maps aren't in the same + * directory, and the source map to be applied contains relative source + * paths. If so, those relative source paths need to be rewritten + * relative to the SourceMapGenerator. + */ +SourceMapGenerator.prototype.applySourceMap = + function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { + var sourceFile = aSourceFile; + // If aSourceFile is omitted, we will use the file property of the SourceMap + if (aSourceFile == null) { + if (aSourceMapConsumer.file == null) { + throw new Error( + 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + + 'or the source map\'s "file" property. Both were omitted.' + ); + } + sourceFile = aSourceMapConsumer.file; + } + var sourceRoot = this._sourceRoot; + // Make "sourceFile" relative if an absolute Url is passed. + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + // Applying the SourceMap can add and remove items from the sources and + // the names array. + var newSources = new ArraySet(); + var newNames = new ArraySet(); + + // Find mappings for the "sourceFile" + this._mappings.unsortedForEach(function (mapping) { + if (mapping.source === sourceFile && mapping.originalLine != null) { + // Check if it can be mapped by the source map, then update the mapping. + var original = aSourceMapConsumer.originalPositionFor({ + line: mapping.originalLine, + column: mapping.originalColumn + }); + if (original.source != null) { + // Copy mapping + mapping.source = original.source; + if (aSourceMapPath != null) { + mapping.source = util.join(aSourceMapPath, mapping.source); + } + if (sourceRoot != null) { + mapping.source = util.relative(sourceRoot, mapping.source); + } + mapping.originalLine = original.line; + mapping.originalColumn = original.column; + if (original.name != null) { + mapping.name = original.name; + } + } + } + + var source = mapping.source; + if (source != null && !newSources.has(source)) { + newSources.add(source); + } + + var name = mapping.name; + if (name != null && !newNames.has(name)) { + newNames.add(name); + } + + }, this); + this._sources = newSources; + this._names = newNames; + + // Copy sourcesContents of applied map. + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aSourceMapPath != null) { + sourceFile = util.join(aSourceMapPath, sourceFile); + } + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + this.setSourceContent(sourceFile, content); + } + }, this); + }; + +/** + * A mapping can have one of the three levels of data: + * + * 1. Just the generated position. + * 2. The Generated position, original position, and original source. + * 3. Generated and original position, original source, as well as a name + * token. + * + * To maintain consistency, we validate that any new mapping being added falls + * in to one of these categories. + */ +SourceMapGenerator.prototype._validateMapping = + function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, + aName) { + if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aGenerated.line > 0 && aGenerated.column >= 0 + && !aOriginal && !aSource && !aName) { + // Case 1. + return; + } + else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aOriginal && 'line' in aOriginal && 'column' in aOriginal + && aGenerated.line > 0 && aGenerated.column >= 0 + && aOriginal.line > 0 && aOriginal.column >= 0 + && aSource) { + // Cases 2 and 3. + return; + } + else { + throw new Error('Invalid mapping: ' + JSON.stringify({ + generated: aGenerated, + source: aSource, + original: aOriginal, + name: aName + })); + } + }; + +/** + * Serialize the accumulated mappings in to the stream of base 64 VLQs + * specified by the source map format. + */ +SourceMapGenerator.prototype._serializeMappings = + function SourceMapGenerator_serializeMappings() { + var previousGeneratedColumn = 0; + var previousGeneratedLine = 1; + var previousOriginalColumn = 0; + var previousOriginalLine = 0; + var previousName = 0; + var previousSource = 0; + var result = ''; + var next; + var mapping; + var nameIdx; + var sourceIdx; + + var mappings = this._mappings.toArray(); + for (var i = 0, len = mappings.length; i < len; i++) { + mapping = mappings[i]; + next = ''; + + if (mapping.generatedLine !== previousGeneratedLine) { + previousGeneratedColumn = 0; + while (mapping.generatedLine !== previousGeneratedLine) { + next += ';'; + previousGeneratedLine++; + } + } + else { + if (i > 0) { + if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { + continue; + } + next += ','; + } + } + + next += base64VLQ.encode(mapping.generatedColumn + - previousGeneratedColumn); + previousGeneratedColumn = mapping.generatedColumn; + + if (mapping.source != null) { + sourceIdx = this._sources.indexOf(mapping.source); + next += base64VLQ.encode(sourceIdx - previousSource); + previousSource = sourceIdx; + + // lines are stored 0-based in SourceMap spec version 3 + next += base64VLQ.encode(mapping.originalLine - 1 + - previousOriginalLine); + previousOriginalLine = mapping.originalLine - 1; + + next += base64VLQ.encode(mapping.originalColumn + - previousOriginalColumn); + previousOriginalColumn = mapping.originalColumn; + + if (mapping.name != null) { + nameIdx = this._names.indexOf(mapping.name); + next += base64VLQ.encode(nameIdx - previousName); + previousName = nameIdx; + } + } + + result += next; + } + + return result; + }; + +SourceMapGenerator.prototype._generateSourcesContent = + function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { + return aSources.map(function (source) { + if (!this._sourcesContents) { + return null; + } + if (aSourceRoot != null) { + source = util.relative(aSourceRoot, source); + } + var key = util.toSetString(source); + return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) + ? this._sourcesContents[key] + : null; + }, this); + }; + +/** + * Externalize the source map. + */ +SourceMapGenerator.prototype.toJSON = + function SourceMapGenerator_toJSON() { + var map = { + version: this._version, + sources: this._sources.toArray(), + names: this._names.toArray(), + mappings: this._serializeMappings() + }; + if (this._file != null) { + map.file = this._file; + } + if (this._sourceRoot != null) { + map.sourceRoot = this._sourceRoot; + } + if (this._sourcesContents) { + map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); + } + + return map; + }; + +/** + * Render the source map being generated to a string. + */ +SourceMapGenerator.prototype.toString = + function SourceMapGenerator_toString() { + return JSON.stringify(this.toJSON()); + }; + +exports.SourceMapGenerator = SourceMapGenerator; + + +/***/ }), +/* 78 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +module.exports = false; + + +/***/ }), +/* 79 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function unique_pred(list, compare) { + var ptr = 1 + , len = list.length + , a=list[0], b=list[0]; + for(var i=1; i 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } + + // the number of equal signs (place holders) + // if there are two placeholders, than the two characters before it + // represent one byte + // if there is only one, then the three characters before it represent 2 bytes + // this is just a cheap hack to not do indexOf twice + return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0 +} + +function byteLength (b64) { + // base64 is 4/3 + up to two characters of the original data + return b64.length * 3 / 4 - placeHoldersCount(b64) +} + +function toByteArray (b64) { + var i, j, l, tmp, placeHolders, arr; + var len = b64.length; + placeHolders = placeHoldersCount(b64); + + arr = new Arr(len * 3 / 4 - placeHolders); + + // if there are placeholders, only get up to the last complete 4 chars + l = placeHolders > 0 ? len - 4 : len; + + var L = 0; + + for (i = 0, j = 0; i < l; i += 4, j += 3) { + tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]; + arr[L++] = (tmp >> 16) & 0xFF; + arr[L++] = (tmp >> 8) & 0xFF; + arr[L++] = tmp & 0xFF; + } + + if (placeHolders === 2) { + tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4); + arr[L++] = tmp & 0xFF; + } else if (placeHolders === 1) { + tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2); + arr[L++] = (tmp >> 8) & 0xFF; + arr[L++] = tmp & 0xFF; + } + + return arr +} + +function tripletToBase64 (num) { + return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F] +} + +function encodeChunk (uint8, start, end) { + var tmp; + var output = []; + for (var i = start; i < end; i += 3) { + tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]); + output.push(tripletToBase64(tmp)); + } + return output.join('') +} + +function fromByteArray (uint8) { + var tmp; + var len = uint8.length; + var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes + var output = ''; + var parts = []; + var maxChunkLength = 16383; // must be multiple of 3 + + // go through the array every three bytes, we'll deal with trailing stuff later + for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { + parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))); + } + + // pad the end with zeros, but make sure to not forget the extra bytes + if (extraBytes === 1) { + tmp = uint8[len - 1]; + output += lookup[tmp >> 2]; + output += lookup[(tmp << 4) & 0x3F]; + output += '=='; + } else if (extraBytes === 2) { + tmp = (uint8[len - 2] << 8) + (uint8[len - 1]); + output += lookup[tmp >> 10]; + output += lookup[(tmp >> 4) & 0x3F]; + output += lookup[(tmp << 2) & 0x3F]; + output += '='; + } + + parts.push(output); + + return parts.join('') +} + + +/***/ }), +/* 88 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(module) { + +function assembleStyles () { + var styles = { + modifiers: { + reset: [0, 0], + bold: [1, 22], // 21 isn't widely supported and 22 does the same thing + dim: [2, 22], + italic: [3, 23], + underline: [4, 24], + inverse: [7, 27], + hidden: [8, 28], + strikethrough: [9, 29] + }, + colors: { + black: [30, 39], + red: [31, 39], + green: [32, 39], + yellow: [33, 39], + blue: [34, 39], + magenta: [35, 39], + cyan: [36, 39], + white: [37, 39], + gray: [90, 39] + }, + bgColors: { + bgBlack: [40, 49], + bgRed: [41, 49], + bgGreen: [42, 49], + bgYellow: [43, 49], + bgBlue: [44, 49], + bgMagenta: [45, 49], + bgCyan: [46, 49], + bgWhite: [47, 49] + } + }; + + // fix humans + styles.colors.grey = styles.colors.gray; + + Object.keys(styles).forEach(function (groupName) { + var group = styles[groupName]; + + Object.keys(group).forEach(function (styleName) { + var style = group[styleName]; + + styles[styleName] = group[styleName] = { + open: '\u001b[' + style[0] + 'm', + close: '\u001b[' + style[1] + 'm' + }; + }); + + Object.defineProperty(styles, groupName, { + value: group, + enumerable: false + }); + }); + + return styles; +} + +Object.defineProperty(module, 'exports', { + enumerable: true, + get: assembleStyles +}); + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(156)(module))); + +/***/ }), +/* 89 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(process) { +var argv = process.argv; + +var terminator = argv.indexOf('--'); +var hasFlag = function (flag) { + flag = '--' + flag; + var pos = argv.indexOf(flag); + return pos !== -1 && (terminator !== -1 ? pos < terminator : true); +}; + +module.exports = (function () { + if ('FORCE_COLOR' in process.env) { + return true; + } + + if (hasFlag('no-color') || + hasFlag('no-colors') || + hasFlag('color=false')) { + return false; + } + + if (hasFlag('color') || + hasFlag('colors') || + hasFlag('color=true') || + hasFlag('color=always')) { + return true; + } + + if (process.stdout && !process.stdout.isTTY) { + return false; + } + + if (process.platform === 'win32') { + return true; + } + + if ('COLORTERM' in process.env) { + return true; + } + + if (process.env.TERM === 'dumb') { + return false; + } + + if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(process.env.TERM)) { + return true; + } + + return false; +})(); + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(13))); + +/***/ }), +/* 90 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; + +module.exports = function (str) { + if (typeof str !== 'string') { + throw new TypeError('Expected a string'); + } + + return str.replace(matchOperatorsRe, '\\$&'); +}; + + +/***/ }), +/* 91 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var ansiRegex = __webpack_require__(30); +var re = new RegExp(ansiRegex().source); // remove the `g` flag +module.exports = re.test.bind(re); + + +/***/ }), +/* 92 */ +/***/ (function(module, exports) { + +exports.read = function (buffer, offset, isLE, mLen, nBytes) { + var e, m; + var eLen = nBytes * 8 - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var nBits = -7; + var i = isLE ? (nBytes - 1) : 0; + var d = isLE ? -1 : 1; + var s = buffer[offset + i]; + + i += d; + + e = s & ((1 << (-nBits)) - 1); + s >>= (-nBits); + nBits += eLen; + for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} + + m = e & ((1 << (-nBits)) - 1); + e >>= (-nBits); + nBits += mLen; + for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} + + if (e === 0) { + e = 1 - eBias; + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity) + } else { + m = m + Math.pow(2, mLen); + e = e - eBias; + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen) +}; + +exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c; + var eLen = nBytes * 8 - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0); + var i = isLE ? 0 : (nBytes - 1); + var d = isLE ? 1 : -1; + var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0; + + value = Math.abs(value); + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0; + e = eMax; + } else { + e = Math.floor(Math.log(value) / Math.LN2); + if (value * (c = Math.pow(2, -e)) < 1) { + e--; + c *= 2; + } + if (e + eBias >= 1) { + value += rt / c; + } else { + value += rt * Math.pow(2, 1 - eBias); + } + if (value * c >= 2) { + e++; + c /= 2; + } + + if (e + eBias >= eMax) { + m = 0; + e = eMax; + } else if (e + eBias >= 1) { + m = (value * c - 1) * Math.pow(2, mLen); + e = e + eBias; + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); + e = 0; + } + } + + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} + + e = (e << mLen) | m; + eLen += mLen; + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + + buffer[offset + i - d] |= s * 128; +}; + + +/***/ }), +/* 93 */ +/***/ (function(module, exports) { + +var toString = {}.toString; + +module.exports = Array.isArray || function (arr) { + return toString.call(arr) == '[object Array]'; +}; + + +/***/ }), +/* 94 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = findExtendRule; +var extendRuleKeyWords = ['&', ':', 'extend']; +var extendRuleKeyWordsCount = extendRuleKeyWords.length; + +function findExtendRule(tokens) { + var start = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + + var stack = []; + var len = tokens.length; + var end = start; + + while (end < len) { + var token = tokens[end]; + + if (extendRuleKeyWords.indexOf(token[1]) >= 0) { + stack.push(token[1]); + } else if (token[0] !== 'space') { + break; + } + + end++; + } + + for (var index = 0; index < extendRuleKeyWordsCount; index++) { + if (stack[index] !== extendRuleKeyWords[index]) { + return null; + } + } + + return tokens.slice(start, end); +} +module.exports = exports['default']; + +/***/ }), +/* 95 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; + +var _rule = __webpack_require__(8); + +var _rule2 = _interopRequireDefault(_rule); + +var _lessStringify = __webpack_require__(16); + +var _lessStringify2 = _interopRequireDefault(_lessStringify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Import = function (_PostCssRule) { + _inherits(Import, _PostCssRule); + + function Import(defaults) { + _classCallCheck(this, Import); + + var _this = _possibleConstructorReturn(this, (Import.__proto__ || Object.getPrototypeOf(Import)).call(this, defaults)); + + _this.type = 'import'; + return _this; + } + + _createClass(Import, [{ + key: 'toString', + value: function toString(stringifier) { + if (!stringifier) { + stringifier = { + stringify: _lessStringify2.default + }; + } + + return _get(Import.prototype.__proto__ || Object.getPrototypeOf(Import.prototype), 'toString', this).call(this, stringifier); + } + }]); + + return Import; +}(_rule2.default); + +exports.default = Import; +module.exports = exports['default']; + +/***/ }), +/* 96 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isMixinToken; + +var _globals = __webpack_require__(2); + +var unpaddedFractionalNumbersPattern = /\.[0-9]/; + +function isMixinToken(token) { + var symbol = token[1]; + var firstSymbolCode = symbol ? symbol[0].charCodeAt(0) : null; + + return (firstSymbolCode === _globals.dot || firstSymbolCode === _globals.hash) && + // ignore hashes used for colors + _globals.hashColorPattern.test(symbol) === false && + // ignore dots used for unpadded fractional numbers + unpaddedFractionalNumbersPattern.test(symbol) === false; +} +module.exports = exports['default']; + +/***/ }), +/* 97 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = lessParse; + +var _input = __webpack_require__(20); + +var _input2 = _interopRequireDefault(_input); + +var _lessParser = __webpack_require__(98); + +var _lessParser2 = _interopRequireDefault(_lessParser); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function lessParse(less, opts) { + var input = new _input2.default(less, opts); + var parser = new _lessParser2.default(input, opts); + // const parser = new Parser(input, opts); + + parser.tokenize(); + parser.loop(); + + return parser.root; +} +// import Parser from 'postcss/lib/parser'; + +module.exports = exports['default']; + +/***/ }), +/* 98 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; + +var _comment = __webpack_require__(18); + +var _comment2 = _interopRequireDefault(_comment); + +var _import2 = __webpack_require__(95); + +var _import3 = _interopRequireDefault(_import2); + +var _parser = __webpack_require__(38); + +var _parser2 = _interopRequireDefault(_parser); + +var _rule = __webpack_require__(101); + +var _rule2 = _interopRequireDefault(_rule); + +var _findExtendRule = __webpack_require__(94); + +var _findExtendRule2 = _interopRequireDefault(_findExtendRule); + +var _isMixinToken = __webpack_require__(96); + +var _isMixinToken2 = _interopRequireDefault(_isMixinToken); + +var _lessTokenize = __webpack_require__(100); + +var _lessTokenize2 = _interopRequireDefault(_lessTokenize); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var blockCommentEndPattern = /\*\/$/; + +var LessParser = function (_Parser) { + _inherits(LessParser, _Parser); + + function LessParser() { + _classCallCheck(this, LessParser); + + return _possibleConstructorReturn(this, (LessParser.__proto__ || Object.getPrototypeOf(LessParser)).apply(this, arguments)); + } + + _createClass(LessParser, [{ + key: 'atrule', + value: function atrule(token) { + if (token[1] === '@import') { + this.import(token); + } else { + _get(LessParser.prototype.__proto__ || Object.getPrototypeOf(LessParser.prototype), 'atrule', this).call(this, token); + } + } + }, { + key: 'comment', + value: function comment(token) { + var node = new _comment2.default(); + var content = token[1]; + var text = content.slice(2).replace(blockCommentEndPattern, ''); + + this.init(node, token[2], token[3]); + node.source.end = { + line: token[4], + column: token[5] + }; + + node.raws.content = content; + node.raws.begin = content[0] + content[1]; + node.inline = token[6] === 'inline'; + node.block = !node.inline; + + if (/^\s*$/.test(text)) { + node.text = ''; + node.raws.left = text; + node.raws.right = ''; + } else { + var match = text.match(/^(\s*)([^]*[^\s])(\s*)$/); + + node.text = match[2]; + + // Add extra spaces to generate a comment in a common style /*[space][text][space]*/ + node.raws.left = match[1] || ' '; + node.raws.right = match[3] || ' '; + } + } + + /** + * @description Create a Declaration + * @param options {{start: number}} + */ + + }, { + key: 'createDeclaration', + value: function createDeclaration(options) { + this.decl(this.tokens.slice(options.start, this.pos + 1)); + } + + /** + * @description Create a Rule node + * @param options {{start: number, params: Array}} + */ + + }, { + key: 'createRule', + value: function createRule(options) { + + var semi = this.tokens[this.pos][0] === ';'; + var end = this.pos + (options.empty && semi ? 2 : 1); + var tokens = this.tokens.slice(options.start, end); + var node = this.rule(tokens); + + /** + * By default in PostCSS `Rule.params` is `undefined`. + * To preserve compability with PostCSS: + * - Don't set empty params for a Rule. + * - Set params for a Rule only if it can be a mixin or &:extend rule. + */ + if (options.params[0] && (options.mixin || options.extend)) { + this.raw(node, 'params', options.params); + } + + if (options.empty) { + // if it's an empty mixin or extend, it must have a semicolon + // (that's the only way we get to this point) + if (semi) { + node.raws.semicolon = this.semicolon = true; + node.selector = node.selector.replace(/;$/, ''); + } + + if (options.extend) { + node.extend = true; + } + + if (options.mixin) { + node.mixin = true; + } + + /** + * @description Mark mixin without declarations. + * @type {boolean} + */ + node.empty = true; + + // eslint-disable-next-line + delete this.current.nodes; + + if (node.selector.indexOf('!important') >= 0) { + node.important = true; + node.selector = node.selector.replace(/\s!important/, ''); + } + + // rules don't have trailing semicolons in vanilla css, so they get + // added to this.spaces by the parser loop, so don't step back. + if (!semi) { + this.pos--; + } + + this.end(this.tokens[this.pos]); + } + } + }, { + key: 'end', + value: function end(token) { + var node = this.current; + + // if a Rule contains other Rules (mixins, extends) and those have + // semicolons, assert that the parent Rule has a semicolon + if (node.nodes && node.nodes.length && node.last.raws.semicolon && !node.last.nodes) { + this.semicolon = true; + } + + _get(LessParser.prototype.__proto__ || Object.getPrototypeOf(LessParser.prototype), 'end', this).call(this, token); + } + }, { + key: 'import', + value: function _import(token) { + /* eslint complexity: 0 */ + var last = false, + open = false, + end = { line: 0, column: 0 }; + + var directives = []; + var node = new _import3.default(); + + node.name = token[1].slice(1); + + this.init(node, token[2], token[3]); + + this.pos += 1; + + while (this.pos < this.tokens.length) { + var tokn = this.tokens[this.pos]; + + if (tokn[0] === ';') { + end = { line: tokn[2], column: tokn[3] }; + node.raws.semicolon = true; + break; + } else if (tokn[0] === '{') { + open = true; + break; + } else if (tokn[0] === '}') { + this.end(tokn); + break; + } else if (tokn[0] === 'brackets') { + directives.push(tokn); + } else if (tokn[0] === 'space') { + if (directives.length) { + node.raws.between = tokn[1]; + } else if (node.importPath) { + node.raws.after = tokn[1]; + } else { + node.raws.afterName = tokn[1]; + } + } else { + node.importPath = tokn[1]; + } + + if (this.pos === this.tokens.length) { + last = true; + break; + } + + this.pos += 1; + } + + if (node.raws.between && !node.raws.afterName) { + node.raws.afterName = node.raws.between; + node.raws.between = ''; + } + + node.source.end = end; + + if (directives.length) { + this.raw(node, 'directives', directives); + + if (last) { + token = directives[directives.length - 1]; + node.source.end = { line: token[4], column: token[5] }; + this.spaces = node.raws.between; + node.raws.between = ''; + } + } else { + node.directives = ''; + } + + if (open) { + node.nodes = []; + this.current = node; + } + } + + /* eslint-disable max-statements, complexity */ + + }, { + key: 'other', + value: function other() { + var brackets = []; + var params = []; + var start = this.pos; + + var end = false, + colon = false, + bracket = null; + + // we need pass "()" as spaces + // However we can override method Parser.loop, but it seems less maintainable + if (this.tokens[start][0] === 'brackets') { + this.spaces += this.tokens[start][1]; + return; + } + + var mixin = (0, _isMixinToken2.default)(this.tokens[start]); + var extend = Boolean((0, _findExtendRule2.default)(this.tokens, start)); + + while (this.pos < this.tokens.length) { + var token = this.tokens[this.pos]; + var type = token[0]; + + if (type === '(' || type === '[') { + if (!bracket) { + bracket = token; + } + + brackets.push(type === '(' ? ')' : ']'); + } else if (brackets.length === 0) { + if (type === ';') { + var foundEndOfRule = this.ruleEnd({ + start: start, + params: params, + colon: colon, + mixin: mixin, + extend: extend + }); + + if (foundEndOfRule) { + return; + } + + break; + } else if (type === '{') { + this.createRule({ start: start, params: params, mixin: mixin }); + return; + } else if (type === '}') { + this.pos -= 1; + end = true; + break; + } else if (type === ':') { + colon = true; + } + } else if (type === brackets[brackets.length - 1]) { + brackets.pop(); + if (brackets.length === 0) { + bracket = null; + } + } + + // we don't want to add params for pseudo-selectors that utilize parens (#56) + if ((extend || !colon) && (brackets.length > 0 || type === 'brackets' || params[0])) { + params.push(token); + } + + this.pos += 1; + } + + if (this.pos === this.tokens.length) { + this.pos -= 1; + end = true; + } + + if (brackets.length > 0) { + this.unclosedBracket(bracket); + } + + // dont process an end of rule if there's only one token and it's unknown (#64) + if (end && this.tokens.length > 1) { + var _foundEndOfRule = this.ruleEnd({ + start: start, + params: params, + colon: colon, + mixin: mixin, + extend: extend, + isEndOfBlock: true + }); + + if (_foundEndOfRule) { + return; + } + } + + this.unknownWord(start); + } + }, { + key: 'rule', + value: function rule(tokens) { + tokens.pop(); + + var node = new _rule2.default(); + + this.init(node, tokens[0][2], tokens[0][3]); + + //node.raws.between = this.spacesFromEnd(tokens); + node.raws.between = this.spacesAndCommentsFromEnd(tokens); + + this.raw(node, 'selector', tokens); + this.current = node; + + return node; + } + }, { + key: 'ruleEnd', + value: function ruleEnd(options) { + var start = options.start; + + + if (options.extend || options.mixin) { + this.createRule(Object.assign(options, { empty: true })); + return true; + } + + if (options.colon) { + if (options.isEndOfBlock) { + while (this.pos > start) { + var token = this.tokens[this.pos][0]; + + if (token !== 'space' && token !== 'comment') { + break; + } + + this.pos -= 1; + } + } + + this.createDeclaration({ start: start }); + return true; + } + + return false; + } + }, { + key: 'tokenize', + value: function tokenize() { + this.tokens = (0, _lessTokenize2.default)(this.input); + } + + /* eslint-enable max-statements, complexity */ + + }]); + + return LessParser; +}(_parser2.default); + +exports.default = LessParser; +module.exports = exports['default']; + +/***/ }), +/* 99 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; + +var _stringifier = __webpack_require__(22); + +var _stringifier2 = _interopRequireDefault(_stringifier); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var LessStringifier = function (_Stringifier) { + _inherits(LessStringifier, _Stringifier); + + function LessStringifier() { + _classCallCheck(this, LessStringifier); + + return _possibleConstructorReturn(this, (LessStringifier.__proto__ || Object.getPrototypeOf(LessStringifier)).apply(this, arguments)); + } + + _createClass(LessStringifier, [{ + key: 'comment', + value: function comment(node) { + this.builder(node.raws.content, node); + } + }, { + key: 'import', + value: function _import(node) { + this.builder('@' + node.name); + this.builder((node.raws.afterName || '') + (node.directives || '') + (node.raws.between || '') + (node.importPath || '') + (node.raws.after || '')); + + if (node.raws.semicolon) { + this.builder(';'); + } + } + }, { + key: 'rule', + value: function rule(node) { + _get(LessStringifier.prototype.__proto__ || Object.getPrototypeOf(LessStringifier.prototype), 'rule', this).call(this, node); + + if (node.empty && node.raws.semicolon) { + if (node.important) { + this.builder(' !important'); + } + + if (node.raws.semicolon) { + this.builder(';'); + } + } + } + }, { + key: 'block', + value: function block(node, start) { + var empty = node.empty; + + var between = this.raw(node, 'between', 'beforeOpen'); + var after = ''; + + if (empty) { + this.builder(start + between, node, 'start'); + } else { + this.builder(start + between + '{', node, 'start'); + } + + if (node.nodes && node.nodes.length) { + this.body(node); + after = this.raw(node, 'after'); + } else { + after = this.raw(node, 'after', 'emptyBody'); + } + + if (after) { + this.builder(after); + } + + if (!empty) { + this.builder('}', node, 'end'); + } + } + }]); + + return LessStringifier; +}(_stringifier2.default); + +exports.default = LessStringifier; +module.exports = exports['default']; + +/***/ }), +/* 100 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = lessTokenize; + +var _globals = __webpack_require__(2); + +var _tokenizeSymbol = __webpack_require__(113); + +var _tokenizeSymbol2 = _interopRequireDefault(_tokenizeSymbol); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function lessTokenize(input) { + var state = { + input: input, + tokens: [], + css: input.css.valueOf(), + offset: -1, + line: 1, + pos: 0 + }; + + state.length = state.css.length; + + while (state.pos < state.length) { + state.symbolCode = state.css.charCodeAt(state.pos); + state.symbol = state.css[state.pos]; + state.nextPos = null; + state.escaped = null; + state.lines = null; + state.lastLine = null; + state.cssPart = null; + state.escape = null; + state.nextLine = null; + state.nextOffset = null; + state.escapePos = null; + state.token = null; + + if (state.symbolCode === _globals.newline) { + state.offset = state.pos; + state.line += 1; + } + + (0, _tokenizeSymbol2.default)(state); + + state.pos++; + } + + return state.tokens; +} +module.exports = exports['default']; + +/***/ }), +/* 101 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; + +var _rule = __webpack_require__(8); + +var _rule2 = _interopRequireDefault(_rule); + +var _lessStringify = __webpack_require__(16); + +var _lessStringify2 = _interopRequireDefault(_lessStringify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Rule = function (_PostCssRule) { + _inherits(Rule, _PostCssRule); + + function Rule() { + _classCallCheck(this, Rule); + + return _possibleConstructorReturn(this, (Rule.__proto__ || Object.getPrototypeOf(Rule)).apply(this, arguments)); + } + + _createClass(Rule, [{ + key: 'toString', + value: function toString(stringifier) { + if (!stringifier) { + stringifier = { + stringify: _lessStringify2.default + }; + } + + return _get(Rule.prototype.__proto__ || Object.getPrototypeOf(Rule.prototype), 'toString', this).call(this, stringifier); + } + }]); + + return Rule; +}(_rule2.default); + +exports.default = Rule; +module.exports = exports['default']; + +/***/ }), +/* 102 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = findEndOfEscaping; + +var _globals = __webpack_require__(2); + +/** + * @param state + * @returns {number} + */ +function findEndOfEscaping(state) { + var openQuotesCount = 0, + quoteCode = -1; + + for (var i = state.pos + 1; i < state.length; i++) { + var symbolCode = state.css.charCodeAt(i); + var prevSymbolCode = state.css.charCodeAt(i - 1); + + if (prevSymbolCode !== _globals.backslash && (symbolCode === _globals.singleQuote || symbolCode === _globals.doubleQuote || symbolCode === _globals.backTick)) { + if (quoteCode === -1) { + quoteCode = symbolCode; + openQuotesCount++; + } else if (symbolCode === quoteCode) { + openQuotesCount--; + + if (!openQuotesCount) { + return i; + } + } + } + } + + return -1; +} +module.exports = exports['default']; + +/***/ }), +/* 103 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isEscaping; + +var _globals = __webpack_require__(2); + +var nextSymbolVariants = [_globals.backTick, _globals.doubleQuote, _globals.singleQuote]; + +function isEscaping(state) { + var nextSymbolCode = state.css.charCodeAt(state.pos + 1); + + return state.symbolCode === _globals.tilde && nextSymbolVariants.indexOf(nextSymbolCode) >= 0; +} +module.exports = exports['default']; + +/***/ }), +/* 104 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = tokenizeAtRule; + +var _globals = __webpack_require__(2); + +var _unclosed = __webpack_require__(7); + +var _unclosed2 = _interopRequireDefault(_unclosed); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function tokenizeAtRule(state) { + // it's an interpolation + if (state.css.charCodeAt(state.pos + 1) === _globals.openedCurlyBracket) { + state.nextPos = state.css.indexOf('}', state.pos + 2); + + if (state.nextPos === -1) { + (0, _unclosed2.default)(state, 'interpolation'); + } + + state.cssPart = state.css.slice(state.pos, state.nextPos + 1); + state.lines = state.cssPart.split('\n'); + state.lastLine = state.lines.length - 1; + + if (state.lastLine > 0) { + state.nextLine = state.line + state.lastLine; + state.nextOffset = state.nextPos - state.lines[state.lastLine].length; + } else { + state.nextLine = state.line; + state.nextOffset = state.offset; + } + + state.tokens.push(['word', state.cssPart, state.line, state.pos - state.offset, state.nextLine, state.nextPos - state.nextOffset]); + + state.offset = state.nextOffset; + state.line = state.nextLine; + } else { + _globals.atEndPattern.lastIndex = state.pos + 1; + _globals.atEndPattern.test(state.css); + + if (_globals.atEndPattern.lastIndex === 0) { + state.nextPos = state.css.length - 1; + } else { + state.nextPos = _globals.atEndPattern.lastIndex - 2; + } + + state.cssPart = state.css.slice(state.pos, state.nextPos + 1); + state.token = 'at-word'; + + // check if it's a variable + if (_globals.variablePattern.test(state.cssPart)) { + _globals.wordEndPattern.lastIndex = state.pos + 1; + _globals.wordEndPattern.test(state.css); + if (_globals.wordEndPattern.lastIndex === 0) { + state.nextPos = state.css.length - 1; + } else { + state.nextPos = _globals.wordEndPattern.lastIndex - 2; + } + + state.cssPart = state.css.slice(state.pos, state.nextPos + 1); + state.token = 'word'; + } + + state.tokens.push([state.token, state.cssPart, state.line, state.pos - state.offset, state.line, state.nextPos - state.offset]); + } + + state.pos = state.nextPos; +} +module.exports = exports['default']; + +/***/ }), +/* 105 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = tokenizeBackslash; + +var _globals = __webpack_require__(2); + +function tokenizeBackslash(state) { + state.nextPos = state.pos; + state.escape = true; + + while (state.css.charCodeAt(state.nextPos + 1) === _globals.backslash) { + state.nextPos += 1; + state.escape = !state.escape; + } + + state.symbolCode = state.css.charCodeAt(state.nextPos + 1); + + if (state.escape && state.symbolCode !== _globals.slash && state.symbolCode !== _globals.space && state.symbolCode !== _globals.newline && state.symbolCode !== _globals.tab && state.symbolCode !== _globals.carriageReturn && state.symbolCode !== _globals.feed) { + state.nextPos += 1; + } + + state.tokens.push(['word', state.css.slice(state.pos, state.nextPos + 1), state.line, state.pos - state.offset, state.line, state.nextPos - state.offset]); + + state.pos = state.nextPos; +} +module.exports = exports['default']; + +/***/ }), +/* 106 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = tokenizeBasicSymbol; +function tokenizeBasicSymbol(state) { + state.tokens.push([state.symbol, state.symbol, state.line, state.pos - state.offset]); +} +module.exports = exports["default"]; + +/***/ }), +/* 107 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = tokenizeComma; +function tokenizeComma(state) { + state.tokens.push(['word', state.symbol, state.line, state.pos - state.offset, state.line, state.pos - state.offset + 1]); +} +module.exports = exports['default']; + +/***/ }), +/* 108 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = tokenizeDefault; + +var _globals = __webpack_require__(2); + +var _findEndOfEscaping = __webpack_require__(102); + +var _findEndOfEscaping2 = _interopRequireDefault(_findEndOfEscaping); + +var _isEscaping = __webpack_require__(103); + +var _isEscaping2 = _interopRequireDefault(_isEscaping); + +var _tokenizeInlineComment = __webpack_require__(109); + +var _tokenizeInlineComment2 = _interopRequireDefault(_tokenizeInlineComment); + +var _tokenizeMultilineComment = __webpack_require__(110); + +var _tokenizeMultilineComment2 = _interopRequireDefault(_tokenizeMultilineComment); + +var _unclosed = __webpack_require__(7); + +var _unclosed2 = _interopRequireDefault(_unclosed); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function tokenizeDefault(state) { + var nextSymbolCode = state.css.charCodeAt(state.pos + 1); + + if (state.symbolCode === _globals.slash && nextSymbolCode === _globals.asterisk) { + (0, _tokenizeMultilineComment2.default)(state); + } else if (state.symbolCode === _globals.slash && nextSymbolCode === _globals.slash) { + (0, _tokenizeInlineComment2.default)(state); + } else { + if ((0, _isEscaping2.default)(state)) { + var pos = (0, _findEndOfEscaping2.default)(state); + + if (pos < 0) { + (0, _unclosed2.default)(state, 'escaping'); + } else { + state.nextPos = pos; + } + } else { + _globals.wordEndPattern.lastIndex = state.pos + 1; + _globals.wordEndPattern.test(state.css); + + if (_globals.wordEndPattern.lastIndex === 0) { + state.nextPos = state.css.length - 1; + } else { + state.nextPos = _globals.wordEndPattern.lastIndex - 2; + } + } + + state.cssPart = state.css.slice(state.pos, state.nextPos + 1); + + state.tokens.push(['word', state.cssPart, state.line, state.pos - state.offset, state.line, state.nextPos - state.offset]); + + state.pos = state.nextPos; + } +} +module.exports = exports['default']; + +/***/ }), +/* 109 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = tokenizeInlineComment; +function tokenizeInlineComment(state) { + state.nextPos = state.css.indexOf('\n', state.pos + 2) - 1; + + if (state.nextPos === -2) { + state.nextPos = state.css.length - 1; + } + + state.tokens.push(['comment', state.css.slice(state.pos, state.nextPos + 1), state.line, state.pos - state.offset, state.line, state.nextPos - state.offset, 'inline']); + + state.pos = state.nextPos; +} +module.exports = exports['default']; + +/***/ }), +/* 110 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = tokenizeMultilineComment; + +var _unclosed = __webpack_require__(7); + +var _unclosed2 = _interopRequireDefault(_unclosed); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function tokenizeMultilineComment(state) { + state.nextPos = state.css.indexOf('*/', state.pos + 2) + 1; + + if (state.nextPos === 0) { + (0, _unclosed2.default)(state, 'comment'); + } + + state.cssPart = state.css.slice(state.pos, state.nextPos + 1); + state.lines = state.cssPart.split('\n'); + state.lastLine = state.lines.length - 1; + + if (state.lastLine > 0) { + state.nextLine = state.line + state.lastLine; + state.nextOffset = state.nextPos - state.lines[state.lastLine].length; + } else { + state.nextLine = state.line; + state.nextOffset = state.offset; + } + + state.tokens.push(['comment', state.cssPart, state.line, state.pos - state.offset, state.nextLine, state.nextPos - state.nextOffset]); + + state.offset = state.nextOffset; + state.line = state.nextLine; + state.pos = state.nextPos; +} +module.exports = exports['default']; + +/***/ }), +/* 111 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = tokenizeOpenedParenthesis; + +var _globals = __webpack_require__(2); + +var _unclosed = __webpack_require__(7); + +var _unclosed2 = _interopRequireDefault(_unclosed); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function findClosedParenthesisPosition(css, length, start) { + var openedParenthesisCount = 0; + + for (var i = start; i < length; i++) { + var symbol = css[i]; + + if (symbol === '(') { + openedParenthesisCount++; + } else if (symbol === ')') { + openedParenthesisCount--; + + if (!openedParenthesisCount) { + return i; + } + } + } + + return -1; +} + +// it is not very reasonable to reduce complexity beyond this level +// eslint-disable-next-line complexity +function tokenizeOpenedParenthesis(state) { + var nextSymbolCode = state.css.charCodeAt(state.pos + 1); + var tokensCount = state.tokens.length; + var prevTokenCssPart = tokensCount ? state.tokens[tokensCount - 1][1] : ''; + + if (prevTokenCssPart === 'url' && nextSymbolCode !== _globals.singleQuote && nextSymbolCode !== _globals.doubleQuote && nextSymbolCode !== _globals.space && nextSymbolCode !== _globals.newline && nextSymbolCode !== _globals.tab && nextSymbolCode !== _globals.feed && nextSymbolCode !== _globals.carriageReturn) { + state.nextPos = state.pos; + + do { + state.escaped = false; + state.nextPos = state.css.indexOf(')', state.nextPos + 1); + + if (state.nextPos === -1) { + (0, _unclosed2.default)(state, 'bracket'); + } + + state.escapePos = state.nextPos; + + while (state.css.charCodeAt(state.escapePos - 1) === _globals.backslash) { + state.escapePos -= 1; + state.escaped = !state.escaped; + } + } while (state.escaped); + + state.tokens.push(['brackets', state.css.slice(state.pos, state.nextPos + 1), state.line, state.pos - state.offset, state.line, state.nextPos - state.offset]); + state.pos = state.nextPos; + } else { + state.nextPos = findClosedParenthesisPosition(state.css, state.length, state.pos); + state.cssPart = state.css.slice(state.pos, state.nextPos + 1); + + var foundParam = state.cssPart.indexOf('@') >= 0; + var foundString = /['"]/.test(state.cssPart); + + if (state.cssPart.length === 0 || state.cssPart === '...' || foundParam && !foundString) { + // we're dealing with a mixin param block + if (state.nextPos === -1) { + (0, _unclosed2.default)(state, 'bracket'); + } + + state.tokens.push([state.symbol, state.symbol, state.line, state.pos - state.offset]); + } else { + var badBracket = _globals.badBracketPattern.test(state.cssPart); + + if (state.nextPos === -1 || badBracket) { + state.tokens.push([state.symbol, state.symbol, state.line, state.pos - state.offset]); + } else { + state.tokens.push(['brackets', state.cssPart, state.line, state.pos - state.offset, state.line, state.nextPos - state.offset]); + state.pos = state.nextPos; + } + } + } +} +module.exports = exports['default']; + +/***/ }), +/* 112 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = tokenizeQuotes; + +var _globals = __webpack_require__(2); + +var _unclosed = __webpack_require__(7); + +var _unclosed2 = _interopRequireDefault(_unclosed); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function tokenizeQuotes(state) { + state.nextPos = state.pos; + + do { + state.escaped = false; + state.nextPos = state.css.indexOf(state.symbol, state.nextPos + 1); + + if (state.nextPos === -1) { + (0, _unclosed2.default)(state, 'quote'); + } + + state.escapePos = state.nextPos; + + while (state.css.charCodeAt(state.escapePos - 1) === _globals.backslash) { + state.escapePos -= 1; + state.escaped = !state.escaped; + } + } while (state.escaped); + + state.tokens.push(['string', state.css.slice(state.pos, state.nextPos + 1), state.line, state.pos - state.offset, state.line, state.nextPos - state.offset]); + + state.pos = state.nextPos; +} +module.exports = exports['default']; + +/***/ }), +/* 113 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = tokenizeSymbol; + +var _globals = __webpack_require__(2); + +var _tokenizeAtRule = __webpack_require__(104); + +var _tokenizeAtRule2 = _interopRequireDefault(_tokenizeAtRule); + +var _tokenizeBackslash = __webpack_require__(105); + +var _tokenizeBackslash2 = _interopRequireDefault(_tokenizeBackslash); + +var _tokenizeBasicSymbol = __webpack_require__(106); + +var _tokenizeBasicSymbol2 = _interopRequireDefault(_tokenizeBasicSymbol); + +var _tokenizeComma = __webpack_require__(107); + +var _tokenizeComma2 = _interopRequireDefault(_tokenizeComma); + +var _tokenizeDefault = __webpack_require__(108); + +var _tokenizeDefault2 = _interopRequireDefault(_tokenizeDefault); + +var _tokenizeOpenedParenthesis = __webpack_require__(111); + +var _tokenizeOpenedParenthesis2 = _interopRequireDefault(_tokenizeOpenedParenthesis); + +var _tokenizeQuotes = __webpack_require__(112); + +var _tokenizeQuotes2 = _interopRequireDefault(_tokenizeQuotes); + +var _tokenizeWhitespace = __webpack_require__(114); + +var _tokenizeWhitespace2 = _interopRequireDefault(_tokenizeWhitespace); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// we cannot reduce complexity beyond this level +// eslint-disable-next-line complexity +function tokenizeSymbol(state) { + switch (state.symbolCode) { + case _globals.newline: + case _globals.space: + case _globals.tab: + case _globals.carriageReturn: + case _globals.feed: + (0, _tokenizeWhitespace2.default)(state); + break; + + case _globals.comma: + (0, _tokenizeComma2.default)(state); + break; + + case _globals.colon: + case _globals.semicolon: + case _globals.openedCurlyBracket: + case _globals.closedCurlyBracket: + case _globals.closedParenthesis: + case _globals.openSquareBracket: + case _globals.closeSquareBracket: + (0, _tokenizeBasicSymbol2.default)(state); + break; + + case _globals.openedParenthesis: + (0, _tokenizeOpenedParenthesis2.default)(state); + break; + + case _globals.singleQuote: + case _globals.doubleQuote: + (0, _tokenizeQuotes2.default)(state); + break; + + case _globals.atRule: + (0, _tokenizeAtRule2.default)(state); + break; + + case _globals.backslash: + (0, _tokenizeBackslash2.default)(state); + break; + + default: + (0, _tokenizeDefault2.default)(state); + break; + } +} +module.exports = exports['default']; + +/***/ }), +/* 114 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = tokenizeWhitespace; + +var _globals = __webpack_require__(2); + +function tokenizeWhitespace(state) { + state.nextPos = state.pos; + + // collect all neighbour space symbols + do { + state.nextPos += 1; + state.symbolCode = state.css.charCodeAt(state.nextPos); + if (state.symbolCode === _globals.newline) { + state.offset = state.nextPos; + state.line += 1; + } + } while (state.symbolCode === _globals.space || state.symbolCode === _globals.newline || state.symbolCode === _globals.tab || state.symbolCode === _globals.carriageReturn || state.symbolCode === _globals.feed); + + state.tokens.push(['space', state.css.slice(state.pos, state.nextPos)]); + state.pos = state.nextPos - 1; +} +module.exports = exports['default']; + +/***/ }), +/* 115 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; +/** + * Contains helpers for safely splitting lists of CSS values, + * preserving parentheses and quotes. + * + * @example + * const list = postcss.list; + * + * @namespace list + */ +var list = { + split: function split(string, separators, last) { + var array = []; + var current = ''; + var split = false; + + var func = 0; + var quote = false; + var escape = false; + + for (var i = 0; i < string.length; i++) { + var letter = string[i]; + + if (quote) { + if (escape) { + escape = false; + } else if (letter === '\\') { + escape = true; + } else if (letter === quote) { + quote = false; + } + } else if (letter === '"' || letter === '\'') { + quote = letter; + } else if (letter === '(') { + func += 1; + } else if (letter === ')') { + if (func > 0) func -= 1; + } else if (func === 0) { + if (separators.indexOf(letter) !== -1) split = true; + } + + if (split) { + if (current !== '') array.push(current.trim()); + current = ''; + split = false; + } else { + current += letter; + } + } + + if (last || current !== '') array.push(current.trim()); + return array; + }, + + + /** + * Safely splits space-separated values (such as those for `background`, + * `border-radius`, and other shorthand properties). + * + * @param {string} string - space-separated values + * + * @return {string[]} split values + * + * @example + * postcss.list.space('1px calc(10% + 1px)') //=> ['1px', 'calc(10% + 1px)'] + */ + space: function space(string) { + var spaces = [' ', '\n', '\t']; + return list.split(string, spaces); + }, + + + /** + * Safely splits comma-separated values (such as those for `transition-*` + * and `background` properties). + * + * @param {string} string - comma-separated values + * + * @return {string[]} split values + * + * @example + * postcss.list.comma('black, linear-gradient(white, black)') + * //=> ['black', 'linear-gradient(white, black)'] + */ + comma: function comma(string) { + var comma = ','; + return list.split(string, [comma], true); + } +}; + +exports.default = list; +module.exports = exports['default']; + + + +/***/ }), +/* 116 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _jsBase = __webpack_require__(33); + +var _sourceMap = __webpack_require__(14); + +var _sourceMap2 = _interopRequireDefault(_sourceMap); + +var _path = __webpack_require__(5); + +var _path2 = _interopRequireDefault(_path); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var MapGenerator = function () { + function MapGenerator(stringify, root, opts) { + _classCallCheck(this, MapGenerator); + + this.stringify = stringify; + this.mapOpts = opts.map || {}; + this.root = root; + this.opts = opts; + } + + MapGenerator.prototype.isMap = function isMap() { + if (typeof this.opts.map !== 'undefined') { + return !!this.opts.map; + } else { + return this.previous().length > 0; + } + }; + + MapGenerator.prototype.previous = function previous() { + var _this = this; + + if (!this.previousMaps) { + this.previousMaps = []; + this.root.walk(function (node) { + if (node.source && node.source.input.map) { + var map = node.source.input.map; + if (_this.previousMaps.indexOf(map) === -1) { + _this.previousMaps.push(map); + } + } + }); + } + + return this.previousMaps; + }; + + MapGenerator.prototype.isInline = function isInline() { + if (typeof this.mapOpts.inline !== 'undefined') { + return this.mapOpts.inline; + } + + var annotation = this.mapOpts.annotation; + if (typeof annotation !== 'undefined' && annotation !== true) { + return false; + } + + if (this.previous().length) { + return this.previous().some(function (i) { + return i.inline; + }); + } else { + return true; + } + }; + + MapGenerator.prototype.isSourcesContent = function isSourcesContent() { + if (typeof this.mapOpts.sourcesContent !== 'undefined') { + return this.mapOpts.sourcesContent; + } + if (this.previous().length) { + return this.previous().some(function (i) { + return i.withContent(); + }); + } else { + return true; + } + }; + + MapGenerator.prototype.clearAnnotation = function clearAnnotation() { + if (this.mapOpts.annotation === false) return; + + var node = void 0; + for (var i = this.root.nodes.length - 1; i >= 0; i--) { + node = this.root.nodes[i]; + if (node.type !== 'comment') continue; + if (node.text.indexOf('# sourceMappingURL=') === 0) { + this.root.removeChild(i); + } + } + }; + + MapGenerator.prototype.setSourcesContent = function setSourcesContent() { + var _this2 = this; + + var already = {}; + this.root.walk(function (node) { + if (node.source) { + var from = node.source.input.from; + if (from && !already[from]) { + already[from] = true; + var relative = _this2.relative(from); + _this2.map.setSourceContent(relative, node.source.input.css); + } + } + }); + }; + + MapGenerator.prototype.applyPrevMaps = function applyPrevMaps() { + for (var _iterator = this.previous(), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + var prev = _ref; + + var from = this.relative(prev.file); + var root = prev.root || _path2.default.dirname(prev.file); + var map = void 0; + + if (this.mapOpts.sourcesContent === false) { + map = new _sourceMap2.default.SourceMapConsumer(prev.text); + if (map.sourcesContent) { + map.sourcesContent = map.sourcesContent.map(function () { + return null; + }); + } + } else { + map = prev.consumer(); + } + + this.map.applySourceMap(map, from, this.relative(root)); + } + }; + + MapGenerator.prototype.isAnnotation = function isAnnotation() { + if (this.isInline()) { + return true; + } else if (typeof this.mapOpts.annotation !== 'undefined') { + return this.mapOpts.annotation; + } else if (this.previous().length) { + return this.previous().some(function (i) { + return i.annotation; + }); + } else { + return true; + } + }; + + MapGenerator.prototype.addAnnotation = function addAnnotation() { + var content = void 0; + + if (this.isInline()) { + content = 'data:application/json;base64,' + _jsBase.Base64.encode(this.map.toString()); + } else if (typeof this.mapOpts.annotation === 'string') { + content = this.mapOpts.annotation; + } else { + content = this.outputFile() + '.map'; + } + + var eol = '\n'; + if (this.css.indexOf('\r\n') !== -1) eol = '\r\n'; + + this.css += eol + '/*# sourceMappingURL=' + content + ' */'; + }; + + MapGenerator.prototype.outputFile = function outputFile() { + if (this.opts.to) { + return this.relative(this.opts.to); + } else if (this.opts.from) { + return this.relative(this.opts.from); + } else { + return 'to.css'; + } + }; + + MapGenerator.prototype.generateMap = function generateMap() { + this.generateString(); + if (this.isSourcesContent()) this.setSourcesContent(); + if (this.previous().length > 0) this.applyPrevMaps(); + if (this.isAnnotation()) this.addAnnotation(); + + if (this.isInline()) { + return [this.css]; + } else { + return [this.css, this.map]; + } + }; + + MapGenerator.prototype.relative = function relative(file) { + if (file.indexOf('<') === 0) return file; + if (/^\w+:\/\//.test(file)) return file; + + var from = this.opts.to ? _path2.default.dirname(this.opts.to) : '.'; + + if (typeof this.mapOpts.annotation === 'string') { + from = _path2.default.dirname(_path2.default.resolve(from, this.mapOpts.annotation)); + } + + file = _path2.default.relative(from, file); + if (_path2.default.sep === '\\') { + return file.replace(/\\/g, '/'); + } else { + return file; + } + }; + + MapGenerator.prototype.sourcePath = function sourcePath(node) { + if (this.mapOpts.from) { + return this.mapOpts.from; + } else { + return this.relative(node.source.input.from); + } + }; + + MapGenerator.prototype.generateString = function generateString() { + var _this3 = this; + + this.css = ''; + this.map = new _sourceMap2.default.SourceMapGenerator({ file: this.outputFile() }); + + var line = 1; + var column = 1; + + var lines = void 0, + last = void 0; + this.stringify(this.root, function (str, node, type) { + _this3.css += str; + + if (node && type !== 'end') { + if (node.source && node.source.start) { + _this3.map.addMapping({ + source: _this3.sourcePath(node), + generated: { line: line, column: column - 1 }, + original: { + line: node.source.start.line, + column: node.source.start.column - 1 + } + }); + } else { + _this3.map.addMapping({ + source: '', + original: { line: 1, column: 0 }, + generated: { line: line, column: column - 1 } + }); + } + } + + lines = str.match(/\n/g); + if (lines) { + line += lines.length; + last = str.lastIndexOf('\n'); + column = str.length - last; + } else { + column += str.length; + } + + if (node && type !== 'start') { + if (node.source && node.source.end) { + _this3.map.addMapping({ + source: _this3.sourcePath(node), + generated: { line: line, column: column - 1 }, + original: { + line: node.source.end.line, + column: node.source.end.column + } + }); + } else { + _this3.map.addMapping({ + source: '', + original: { line: 1, column: 0 }, + generated: { line: line, column: column - 1 } + }); + } + } + }); + }; + + MapGenerator.prototype.generate = function generate() { + this.clearAnnotation(); + + if (this.isMap()) { + return this.generateMap(); + } else { + var result = ''; + this.stringify(this.root, function (i) { + result += i; + }); + return [result]; + } + }; + + return MapGenerator; +}(); + +exports.default = MapGenerator; +module.exports = exports['default']; + + + +/***/ }), +/* 117 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _jsBase = __webpack_require__(33); + +var _sourceMap = __webpack_require__(14); + +var _sourceMap2 = _interopRequireDefault(_sourceMap); + +var _path = __webpack_require__(5); + +var _path2 = _interopRequireDefault(_path); + +var _fs = __webpack_require__(158); + +var _fs2 = _interopRequireDefault(_fs); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +/** + * Source map information from input CSS. + * For example, source map after Sass compiler. + * + * This class will automatically find source map in input CSS or in file system + * near input file (according `from` option). + * + * @example + * const root = postcss.parse(css, { from: 'a.sass.css' }); + * root.input.map //=> PreviousMap + */ +var PreviousMap = function () { + + /** + * @param {string} css - input CSS source + * @param {processOptions} [opts] - {@link Processor#process} options + */ + function PreviousMap(css, opts) { + _classCallCheck(this, PreviousMap); + + this.loadAnnotation(css); + /** + * @member {boolean} - Was source map inlined by data-uri to input CSS. + */ + this.inline = this.startWith(this.annotation, 'data:'); + + var prev = opts.map ? opts.map.prev : undefined; + var text = this.loadMap(opts.from, prev); + if (text) this.text = text; + } + + /** + * Create a instance of `SourceMapGenerator` class + * from the `source-map` library to work with source map information. + * + * It is lazy method, so it will create object only on first call + * and then it will use cache. + * + * @return {SourceMapGenerator} object with source map information + */ + + + PreviousMap.prototype.consumer = function consumer() { + if (!this.consumerCache) { + this.consumerCache = new _sourceMap2.default.SourceMapConsumer(this.text); + } + return this.consumerCache; + }; + + /** + * Does source map contains `sourcesContent` with input source text. + * + * @return {boolean} Is `sourcesContent` present + */ + + + PreviousMap.prototype.withContent = function withContent() { + return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0); + }; + + PreviousMap.prototype.startWith = function startWith(string, start) { + if (!string) return false; + return string.substr(0, start.length) === start; + }; + + PreviousMap.prototype.loadAnnotation = function loadAnnotation(css) { + var match = css.match(/\/\*\s*# sourceMappingURL=(.*)\s*\*\//); + if (match) this.annotation = match[1].trim(); + }; + + PreviousMap.prototype.decodeInline = function decodeInline(text) { + var utfd64 = 'data:application/json;charset=utf-8;base64,'; + var utf64 = 'data:application/json;charset=utf8;base64,'; + var b64 = 'data:application/json;base64,'; + var uri = 'data:application/json,'; + + if (this.startWith(text, uri)) { + return decodeURIComponent(text.substr(uri.length)); + } else if (this.startWith(text, b64)) { + return _jsBase.Base64.decode(text.substr(b64.length)); + } else if (this.startWith(text, utf64)) { + return _jsBase.Base64.decode(text.substr(utf64.length)); + } else if (this.startWith(text, utfd64)) { + return _jsBase.Base64.decode(text.substr(utfd64.length)); + } else { + var encoding = text.match(/data:application\/json;([^,]+),/)[1]; + throw new Error('Unsupported source map encoding ' + encoding); + } + }; + + PreviousMap.prototype.loadMap = function loadMap(file, prev) { + if (prev === false) return false; + + if (prev) { + if (typeof prev === 'string') { + return prev; + } else if (typeof prev === 'function') { + var prevPath = prev(file); + if (prevPath && _fs2.default.existsSync && _fs2.default.existsSync(prevPath)) { + return _fs2.default.readFileSync(prevPath, 'utf-8').toString().trim(); + } else { + throw new Error('Unable to load previous source map: ' + prevPath.toString()); + } + } else if (prev instanceof _sourceMap2.default.SourceMapConsumer) { + return _sourceMap2.default.SourceMapGenerator.fromSourceMap(prev).toString(); + } else if (prev instanceof _sourceMap2.default.SourceMapGenerator) { + return prev.toString(); + } else if (this.isMap(prev)) { + return JSON.stringify(prev); + } else { + throw new Error('Unsupported previous source map format: ' + prev.toString()); + } + } else if (this.inline) { + return this.decodeInline(this.annotation); + } else if (this.annotation) { + var map = this.annotation; + if (file) map = _path2.default.join(_path2.default.dirname(file), map); + + this.root = _path2.default.dirname(map); + if (_fs2.default.existsSync && _fs2.default.existsSync(map)) { + return _fs2.default.readFileSync(map, 'utf-8').toString().trim(); + } else { + return false; + } + } + }; + + PreviousMap.prototype.isMap = function isMap(map) { + if ((typeof map === 'undefined' ? 'undefined' : _typeof(map)) !== 'object') return false; + return typeof map.mappings === 'string' || typeof map._mappings === 'string'; + }; + + return PreviousMap; +}(); + +exports.default = PreviousMap; +module.exports = exports['default']; + + + +/***/ }), +/* 118 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _lazyResult = __webpack_require__(36); + +var _lazyResult2 = _interopRequireDefault(_lazyResult); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +/** + * Contains plugins to process CSS. Create one `Processor` instance, + * initialize its plugins, and then use that instance on numerous CSS files. + * + * @example + * const processor = postcss([autoprefixer, precss]); + * processor.process(css1).then(result => console.log(result.css)); + * processor.process(css2).then(result => console.log(result.css)); + */ +var Processor = function () { + + /** + * @param {Array.|Processor} plugins - PostCSS + * plugins. See {@link Processor#use} for plugin format. + */ + function Processor() { + var plugins = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + + _classCallCheck(this, Processor); + + /** + * @member {string} - Current PostCSS version. + * + * @example + * if ( result.processor.version.split('.')[0] !== '5' ) { + * throw new Error('This plugin works only with PostCSS 5'); + * } + */ + this.version = '5.2.17'; + /** + * @member {pluginFunction[]} - Plugins added to this processor. + * + * @example + * const processor = postcss([autoprefixer, precss]); + * processor.plugins.length //=> 2 + */ + this.plugins = this.normalize(plugins); + } + + /** + * Adds a plugin to be used as a CSS processor. + * + * PostCSS plugin can be in 4 formats: + * * A plugin created by {@link postcss.plugin} method. + * * A function. PostCSS will pass the function a @{link Root} + * as the first argument and current {@link Result} instance + * as the second. + * * An object with a `postcss` method. PostCSS will use that method + * as described in #2. + * * Another {@link Processor} instance. PostCSS will copy plugins + * from that instance into this one. + * + * Plugins can also be added by passing them as arguments when creating + * a `postcss` instance (see [`postcss(plugins)`]). + * + * Asynchronous plugins should return a `Promise` instance. + * + * @param {Plugin|pluginFunction|Processor} plugin - PostCSS plugin + * or {@link Processor} + * with plugins + * + * @example + * const processor = postcss() + * .use(autoprefixer) + * .use(precss); + * + * @return {Processes} current processor to make methods chain + */ + + + Processor.prototype.use = function use(plugin) { + this.plugins = this.plugins.concat(this.normalize([plugin])); + return this; + }; + + /** + * Parses source CSS and returns a {@link LazyResult} Promise proxy. + * Because some plugins can be asynchronous it doesn’t make + * any transformations. Transformations will be applied + * in the {@link LazyResult} methods. + * + * @param {string|toString|Result} css - String with input CSS or + * any object with a `toString()` + * method, like a Buffer. + * Optionally, send a {@link Result} + * instance and the processor will + * take the {@link Root} from it. + * @param {processOptions} [opts] - options + * + * @return {LazyResult} Promise proxy + * + * @example + * processor.process(css, { from: 'a.css', to: 'a.out.css' }) + * .then(result => { + * console.log(result.css); + * }); + */ + + + Processor.prototype.process = function process(css) { + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + return new _lazyResult2.default(this, css, opts); + }; + + Processor.prototype.normalize = function normalize(plugins) { + var normalized = []; + for (var _iterator = plugins, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + var i = _ref; + + if (i.postcss) i = i.postcss; + + if ((typeof i === 'undefined' ? 'undefined' : _typeof(i)) === 'object' && Array.isArray(i.plugins)) { + normalized = normalized.concat(i.plugins); + } else if (typeof i === 'function') { + normalized.push(i); + } else if ((typeof i === 'undefined' ? 'undefined' : _typeof(i)) === 'object' && (i.parse || i.stringify)) { + throw new Error('PostCSS syntaxes cannot be used as plugins. ' + 'Instead, please use one of the ' + 'syntax/parser/stringifier options as ' + 'outlined in your PostCSS ' + 'runner documentation.'); + } else { + throw new Error(i + ' is not a PostCSS plugin'); + } + } + return normalized; + }; + + return Processor; +}(); + +exports.default = Processor; + +/** + * @callback builder + * @param {string} part - part of generated CSS connected to this node + * @param {Node} node - AST node + * @param {"start"|"end"} [type] - node’s part type + */ + +/** + * @callback parser + * + * @param {string|toString} css - string with input CSS or any object + * with toString() method, like a Buffer + * @param {processOptions} [opts] - options with only `from` and `map` keys + * + * @return {Root} PostCSS AST + */ + +/** + * @callback stringifier + * + * @param {Node} node - start node for stringifing. Usually {@link Root}. + * @param {builder} builder - function to concatenate CSS from node’s parts + * or generate string and source map + * + * @return {void} + */ + +/** + * @typedef {object} syntax + * @property {parser} parse - function to generate AST by string + * @property {stringifier} stringify - function to generate string by AST + */ + +/** + * @typedef {object} toString + * @property {function} toString + */ + +/** + * @callback pluginFunction + * @param {Root} root - parsed input CSS + * @param {Result} result - result to set warnings or check other plugins + */ + +/** + * @typedef {object} Plugin + * @property {function} postcss - PostCSS plugin function + */ + +/** + * @typedef {object} processOptions + * @property {string} from - the path of the CSS source file. + * You should always set `from`, + * because it is used in source map + * generation and syntax error messages. + * @property {string} to - the path where you’ll put the output + * CSS file. You should always set `to` + * to generate correct source maps. + * @property {parser} parser - function to generate AST by string + * @property {stringifier} stringifier - class to generate string by AST + * @property {syntax} syntax - object with `parse` and `stringify` + * @property {object} map - source map options + * @property {boolean} map.inline - does source map should + * be embedded in the output + * CSS as a base64-encoded + * comment + * @property {string|object|false|function} map.prev - source map content + * from a previous + * processing step + * (for example, Sass). + * PostCSS will try to find + * previous map + * automatically, so you + * could disable it by + * `false` value. + * @property {boolean} map.sourcesContent - does PostCSS should set + * the origin content to map + * @property {string|false} map.annotation - does PostCSS should set + * annotation comment to map + * @property {string} map.from - override `from` in map’s + * `sources` + */ + +module.exports = exports['default']; + + + +/***/ }), +/* 119 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _warning = __webpack_require__(121); + +var _warning2 = _interopRequireDefault(_warning); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +/** + * Provides the result of the PostCSS transformations. + * + * A Result instance is returned by {@link LazyResult#then} + * or {@link Root#toResult} methods. + * + * @example + * postcss([cssnext]).process(css).then(function (result) { + * console.log(result.css); + * }); + * + * @example + * var result2 = postcss.parse(css).toResult(); + */ +var Result = function () { + + /** + * @param {Processor} processor - processor used for this transformation. + * @param {Root} root - Root node after all transformations. + * @param {processOptions} opts - options from the {@link Processor#process} + * or {@link Root#toResult} + */ + function Result(processor, root, opts) { + _classCallCheck(this, Result); + + /** + * @member {Processor} - The Processor instance used + * for this transformation. + * + * @example + * for ( let plugin of result.processor.plugins) { + * if ( plugin.postcssPlugin === 'postcss-bad' ) { + * throw 'postcss-good is incompatible with postcss-bad'; + * } + * }); + */ + this.processor = processor; + /** + * @member {Message[]} - Contains messages from plugins + * (e.g., warnings or custom messages). + * Each message should have type + * and plugin properties. + * + * @example + * postcss.plugin('postcss-min-browser', () => { + * return (root, result) => { + * var browsers = detectMinBrowsersByCanIUse(root); + * result.messages.push({ + * type: 'min-browser', + * plugin: 'postcss-min-browser', + * browsers: browsers + * }); + * }; + * }); + */ + this.messages = []; + /** + * @member {Root} - Root node after all transformations. + * + * @example + * root.toResult().root == root; + */ + this.root = root; + /** + * @member {processOptions} - Options from the {@link Processor#process} + * or {@link Root#toResult} call + * that produced this Result instance. + * + * @example + * root.toResult(opts).opts == opts; + */ + this.opts = opts; + /** + * @member {string} - A CSS string representing of {@link Result#root}. + * + * @example + * postcss.parse('a{}').toResult().css //=> "a{}" + */ + this.css = undefined; + /** + * @member {SourceMapGenerator} - An instance of `SourceMapGenerator` + * class from the `source-map` library, + * representing changes + * to the {@link Result#root} instance. + * + * @example + * result.map.toJSON() //=> { version: 3, file: 'a.css', … } + * + * @example + * if ( result.map ) { + * fs.writeFileSync(result.opts.to + '.map', result.map.toString()); + * } + */ + this.map = undefined; + } + + /** + * Returns for @{link Result#css} content. + * + * @example + * result + '' === result.css + * + * @return {string} string representing of {@link Result#root} + */ + + + Result.prototype.toString = function toString() { + return this.css; + }; + + /** + * Creates an instance of {@link Warning} and adds it + * to {@link Result#messages}. + * + * @param {string} text - warning message + * @param {Object} [opts] - warning options + * @param {Node} opts.node - CSS node that caused the warning + * @param {string} opts.word - word in CSS source that caused the warning + * @param {number} opts.index - index in CSS node string that caused + * the warning + * @param {string} opts.plugin - name of the plugin that created + * this warning. {@link Result#warn} fills + * this property automatically. + * + * @return {Warning} created warning + */ + + + Result.prototype.warn = function warn(text) { + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + if (!opts.plugin) { + if (this.lastPlugin && this.lastPlugin.postcssPlugin) { + opts.plugin = this.lastPlugin.postcssPlugin; + } + } + + var warning = new _warning2.default(text, opts); + this.messages.push(warning); + + return warning; + }; + + /** + * Returns warnings from plugins. Filters {@link Warning} instances + * from {@link Result#messages}. + * + * @example + * result.warnings().forEach(warn => { + * console.warn(warn.toString()); + * }); + * + * @return {Warning[]} warnings from plugins + */ + + + Result.prototype.warnings = function warnings() { + return this.messages.filter(function (i) { + return i.type === 'warning'; + }); + }; + + /** + * An alias for the {@link Result#css} property. + * Use it with syntaxes that generate non-CSS output. + * @type {string} + * + * @example + * result.css === result.content; + */ + + + _createClass(Result, [{ + key: 'content', + get: function get() { + return this.css; + } + }]); + + return Result; +}(); + +exports.default = Result; + +/** + * @typedef {object} Message + * @property {string} type - message type + * @property {string} plugin - source PostCSS plugin name + */ + +module.exports = exports['default']; + + + +/***/ }), +/* 120 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _chalk = __webpack_require__(11); + +var _chalk2 = _interopRequireDefault(_chalk); + +var _tokenize = __webpack_require__(41); + +var _tokenize2 = _interopRequireDefault(_tokenize); + +var _input = __webpack_require__(20); + +var _input2 = _interopRequireDefault(_input); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var colors = new _chalk2.default.constructor({ enabled: true }); + +var HIGHLIGHT_THEME = { + 'brackets': colors.cyan, + 'at-word': colors.cyan, + 'call': colors.cyan, + 'comment': colors.gray, + 'string': colors.green, + 'class': colors.yellow, + 'hash': colors.magenta, + '(': colors.cyan, + ')': colors.cyan, + '{': colors.yellow, + '}': colors.yellow, + '[': colors.yellow, + ']': colors.yellow, + ':': colors.yellow, + ';': colors.yellow +}; + +function getTokenType(_ref, index, tokens) { + var type = _ref[0], + value = _ref[1]; + + if (type === 'word') { + if (value[0] === '.') { + return 'class'; + } + if (value[0] === '#') { + return 'hash'; + } + } + + var nextToken = tokens[index + 1]; + if (nextToken && (nextToken[0] === 'brackets' || nextToken[0] === '(')) { + return 'call'; + } + + return type; +} + +function terminalHighlight(css) { + var tokens = (0, _tokenize2.default)(new _input2.default(css), { ignoreErrors: true }); + return tokens.map(function (token, index) { + var color = HIGHLIGHT_THEME[getTokenType(token, index, tokens)]; + if (color) { + return token[1].split(/\r?\n/).map(function (i) { + return color(i); + }).join('\n'); + } else { + return token[1]; + } + }).join(''); +} + +exports.default = terminalHighlight; +module.exports = exports['default']; + + + +/***/ }), +/* 121 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +/** + * Represents a plugin’s warning. It can be created using {@link Node#warn}. + * + * @example + * if ( decl.important ) { + * decl.warn(result, 'Avoid !important', { word: '!important' }); + * } + */ +var Warning = function () { + + /** + * @param {string} text - warning message + * @param {Object} [opts] - warning options + * @param {Node} opts.node - CSS node that caused the warning + * @param {string} opts.word - word in CSS source that caused the warning + * @param {number} opts.index - index in CSS node string that caused + * the warning + * @param {string} opts.plugin - name of the plugin that created + * this warning. {@link Result#warn} fills + * this property automatically. + */ + function Warning(text) { + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + _classCallCheck(this, Warning); + + /** + * @member {string} - Type to filter warnings from + * {@link Result#messages}. Always equal + * to `"warning"`. + * + * @example + * const nonWarning = result.messages.filter(i => i.type !== 'warning') + */ + this.type = 'warning'; + /** + * @member {string} - The warning message. + * + * @example + * warning.text //=> 'Try to avoid !important' + */ + this.text = text; + + if (opts.node && opts.node.source) { + var pos = opts.node.positionBy(opts); + /** + * @member {number} - Line in the input file + * with this warning’s source + * + * @example + * warning.line //=> 5 + */ + this.line = pos.line; + /** + * @member {number} - Column in the input file + * with this warning’s source. + * + * @example + * warning.column //=> 6 + */ + this.column = pos.column; + } + + for (var opt in opts) { + this[opt] = opts[opt]; + } + } + + /** + * Returns a warning position and message. + * + * @example + * warning.toString() //=> 'postcss-lint:a.css:10:14: Avoid !important' + * + * @return {string} warning position and message + */ + + + Warning.prototype.toString = function toString() { + if (this.node) { + return this.node.error(this.text, { + plugin: this.plugin, + index: this.index, + word: this.word + }).message; + } else if (this.plugin) { + return this.plugin + ': ' + this.text; + } else { + return this.text; + } + }; + + /** + * @memberof Warning# + * @member {string} plugin - The name of the plugin that created + * it will fill this property automatically. + * this warning. When you call {@link Node#warn} + * + * @example + * warning.plugin //=> 'postcss-important' + */ + + /** + * @memberof Warning# + * @member {Node} node - Contains the CSS node that caused the warning. + * + * @example + * warning.node.toString() //=> 'color: white !important' + */ + + return Warning; +}(); + +exports.default = Warning; +module.exports = exports['default']; + + + +/***/ }), +/* 122 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.parseMediaFeature = parseMediaFeature; +exports.parseMediaQuery = parseMediaQuery; +exports.parseMediaList = parseMediaList; + +var _Node = __webpack_require__(43); + +var _Node2 = _interopRequireDefault(_Node); + +var _Container = __webpack_require__(42); + +var _Container2 = _interopRequireDefault(_Container); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Parses a media feature expression, e.g. `max-width: 10px`, `(color)` + * + * @param {string} string - the source expression string, can be inside parens + * @param {Number} index - the index of `string` in the overall input + * + * @return {Array} an array of Nodes, the first element being a media feature, + * the secont - its value (may be missing) + */ + +function parseMediaFeature(string) { + var index = arguments.length <= 1 || arguments[1] === undefined ? 0 : arguments[1]; + + var modesEntered = [{ + mode: 'normal', + character: null + }]; + var result = []; + var lastModeIndex = 0; + var mediaFeature = ''; + var colon = null; + var mediaFeatureValue = null; + var indexLocal = index; + + var stringNormalized = string; + // Strip trailing parens (if any), and correct the starting index + if (string[0] === '(' && string[string.length - 1] === ')') { + stringNormalized = string.substring(1, string.length - 1); + indexLocal++; + } + + for (var i = 0; i < stringNormalized.length; i++) { + var character = stringNormalized[i]; + + // If entering/exiting a string + if (character === '\'' || character === '"') { + if (modesEntered[lastModeIndex].isCalculationEnabled === true) { + modesEntered.push({ + mode: 'string', + isCalculationEnabled: false, + character: character + }); + lastModeIndex++; + } else if (modesEntered[lastModeIndex].mode === 'string' && modesEntered[lastModeIndex].character === character && stringNormalized[i - 1] !== '\\') { + modesEntered.pop(); + lastModeIndex--; + } + } + + // If entering/exiting interpolation + if (character === '{') { + modesEntered.push({ + mode: 'interpolation', + isCalculationEnabled: true + }); + lastModeIndex++; + } else if (character === '}') { + modesEntered.pop(); + lastModeIndex--; + } + + // If a : is met outside of a string, function call or interpolation, than + // this : separates a media feature and a value + if (modesEntered[lastModeIndex].mode === 'normal' && character === ':') { + var mediaFeatureValueStr = stringNormalized.substring(i + 1); + mediaFeatureValue = { + type: 'value', + before: /^(\s*)/.exec(mediaFeatureValueStr)[1], + after: /(\s*)$/.exec(mediaFeatureValueStr)[1], + value: mediaFeatureValueStr.trim() + }; + // +1 for the colon + mediaFeatureValue.sourceIndex = mediaFeatureValue.before.length + i + 1 + indexLocal; + colon = { + type: 'colon', + sourceIndex: i + indexLocal, + after: mediaFeatureValue.before, + value: ':' }; + break; + } + + mediaFeature += character; + } + + // Forming a media feature node + mediaFeature = { + type: 'media-feature', + before: /^(\s*)/.exec(mediaFeature)[1], + after: /(\s*)$/.exec(mediaFeature)[1], + value: mediaFeature.trim() + }; + mediaFeature.sourceIndex = mediaFeature.before.length + indexLocal; + result.push(mediaFeature); + + if (colon !== null) { + colon.before = mediaFeature.after; + result.push(colon); + } + + if (mediaFeatureValue !== null) { + result.push(mediaFeatureValue); + } + + return result; +} + +/** + * Parses a media query, e.g. `screen and (color)`, `only tv` + * + * @param {string} string - the source media query string + * @param {Number} index - the index of `string` in the overall input + * + * @return {Array} an array of Nodes and Containers + */ + +function parseMediaQuery(string) { + var index = arguments.length <= 1 || arguments[1] === undefined ? 0 : arguments[1]; + + var result = []; + + // How many timies the parser entered parens/curly braces + var localLevel = 0; + // Has any keyword, media type, media feature expression or interpolation + // ('element' hereafter) started + var insideSomeValue = false; + var node = void 0; + + function resetNode() { + return { + before: '', + after: '', + value: '' + }; + } + + node = resetNode(); + + for (var i = 0; i < string.length; i++) { + var character = string[i]; + // If not yet entered any element + if (!insideSomeValue) { + if (character.search(/\s/) !== -1) { + // A whitespace + // Don't form 'after' yet; will do it later + node.before += character; + } else { + // Not a whitespace - entering an element + // Expression start + if (character === '(') { + node.type = 'media-feature-expression'; + localLevel++; + } + node.value = character; + node.sourceIndex = index + i; + insideSomeValue = true; + } + } else { + // Already in the middle of some alement + node.value += character; + + // Here parens just increase localLevel and don't trigger a start of + // a media feature expression (since they can't be nested) + // Interpolation start + if (character === '{' || character === '(') { + localLevel++; + } + // Interpolation/function call/media feature expression end + if (character === ')' || character === '}') { + localLevel--; + } + } + + // If exited all parens/curlies and the next symbol + if (insideSomeValue && localLevel === 0 && (character === ')' || i === string.length - 1 || string[i + 1].search(/\s/) !== -1)) { + if (['not', 'only', 'and'].indexOf(node.value) !== -1) { + node.type = 'keyword'; + } + // if it's an expression, parse its contents + if (node.type === 'media-feature-expression') { + node.nodes = parseMediaFeature(node.value, node.sourceIndex); + } + result.push(Array.isArray(node.nodes) ? new _Container2.default(node) : new _Node2.default(node)); + node = resetNode(); + insideSomeValue = false; + } + } + + // Now process the result array - to specify undefined types of the nodes + // and specify the `after` prop + for (var _i = 0; _i < result.length; _i++) { + node = result[_i]; + if (_i > 0) { + result[_i - 1].after = node.before; + } + + // Node types. Might not be set because contains interpolation/function + // calls or fully consists of them + if (node.type === undefined) { + if (_i > 0) { + // only `and` can follow an expression + if (result[_i - 1].type === 'media-feature-expression') { + node.type = 'keyword'; + continue; + } + // Anything after 'only|not' is a media type + if (result[_i - 1].value === 'not' || result[_i - 1].value === 'only') { + node.type = 'media-type'; + continue; + } + // Anything after 'and' is an expression + if (result[_i - 1].value === 'and') { + node.type = 'media-feature-expression'; + continue; + } + + if (result[_i - 1].type === 'media-type') { + // if it is the last element - it might be an expression + // or 'and' depending on what is after it + if (!result[_i + 1]) { + node.type = 'media-feature-expression'; + } else { + node.type = result[_i + 1].type === 'media-feature-expression' ? 'keyword' : 'media-feature-expression'; + } + } + } + + if (_i === 0) { + // `screen`, `fn( ... )`, `#{ ... }`. Not an expression, since then + // its type would have been set by now + if (!result[_i + 1]) { + node.type = 'media-type'; + continue; + } + + // `screen and` or `#{...} (max-width: 10px)` + if (result[_i + 1] && (result[_i + 1].type === 'media-feature-expression' || result[_i + 1].type === 'keyword')) { + node.type = 'media-type'; + continue; + } + if (result[_i + 2]) { + // `screen and (color) ...` + if (result[_i + 2].type === 'media-feature-expression') { + node.type = 'media-type'; + result[_i + 1].type = 'keyword'; + continue; + } + // `only screen and ...` + if (result[_i + 2].type === 'keyword') { + node.type = 'keyword'; + result[_i + 1].type = 'media-type'; + continue; + } + } + if (result[_i + 3]) { + // `screen and (color) ...` + if (result[_i + 3].type === 'media-feature-expression') { + node.type = 'keyword'; + result[_i + 1].type = 'media-type'; + result[_i + 2].type = 'keyword'; + continue; + } + } + } + } + } + return result; +} + +/** + * Parses a media query list. Takes a possible `url()` at the start into + * account, and divides the list into media queries that are parsed separately + * + * @param {string} string - the source media query list string + * + * @return {Array} an array of Nodes/Containers + */ + +function parseMediaList(string) { + var result = []; + var interimIndex = 0; + var levelLocal = 0; + + // Check for a `url(...)` part (if it is contents of an @import rule) + var doesHaveUrl = /^(\s*)url\s*\(/.exec(string); + if (doesHaveUrl !== null) { + var i = doesHaveUrl[0].length; + var parenthesesLv = 1; + while (parenthesesLv > 0) { + var character = string[i]; + if (character === '(') { + parenthesesLv++; + } + if (character === ')') { + parenthesesLv--; + } + i++; + } + result.unshift(new _Node2.default({ + type: 'url', + value: string.substring(0, i).trim(), + sourceIndex: doesHaveUrl[1].length, + before: doesHaveUrl[1], + after: /^(\s*)/.exec(string.substring(i))[1] + })); + interimIndex = i; + } + + // Start processing the media query list + for (var _i2 = interimIndex; _i2 < string.length; _i2++) { + var _character = string[_i2]; + + // Dividing the media query list into comma-separated media queries + // Only count commas that are outside of any parens + // (i.e., not part of function call params list, etc.) + if (_character === '(') { + levelLocal++; + } + if (_character === ')') { + levelLocal--; + } + if (levelLocal === 0 && _character === ',') { + var _mediaQueryString = string.substring(interimIndex, _i2); + var _spaceBefore = /^(\s*)/.exec(_mediaQueryString)[1]; + result.push(new _Container2.default({ + type: 'media-query', + value: _mediaQueryString.trim(), + sourceIndex: interimIndex + _spaceBefore.length, + nodes: parseMediaQuery(_mediaQueryString, interimIndex), + before: _spaceBefore, + after: /(\s*)$/.exec(_mediaQueryString)[1] + })); + interimIndex = _i2 + 1; + } + } + + var mediaQueryString = string.substring(interimIndex); + var spaceBefore = /^(\s*)/.exec(mediaQueryString)[1]; + result.push(new _Container2.default({ + type: 'media-query', + value: mediaQueryString.trim(), + sourceIndex: interimIndex + spaceBefore.length, + nodes: parseMediaQuery(mediaQueryString, interimIndex), + before: spaceBefore, + after: /(\s*)$/.exec(mediaQueryString)[1] + })); + + return result; +} + +/***/ }), +/* 123 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _container = __webpack_require__(12); + +var _container2 = _interopRequireDefault(_container); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var NestedDeclaration = function (_Container) { + _inherits(NestedDeclaration, _Container); + + function NestedDeclaration(defaults) { + _classCallCheck(this, NestedDeclaration); + + var _this = _possibleConstructorReturn(this, _Container.call(this, defaults)); + + _this.type = 'decl'; + _this.isNested = true; + if (!_this.nodes) _this.nodes = []; + return _this; + } + + return NestedDeclaration; +}(_container2.default); + +exports.default = NestedDeclaration; +module.exports = exports['default']; + + + +/***/ }), +/* 124 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; +exports.default = scssParse; + +var _input = __webpack_require__(26); + +var _input2 = _interopRequireDefault(_input); + +var _scssParser = __webpack_require__(125); + +var _scssParser2 = _interopRequireDefault(_scssParser); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function scssParse(scss, opts) { + var input = new _input2.default(scss, opts); + + var parser = new _scssParser2.default(input); + parser.parse(); + + return parser.root; +} +module.exports = exports['default']; + + + +/***/ }), +/* 125 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _comment = __webpack_require__(25); + +var _comment2 = _interopRequireDefault(_comment); + +var _parser = __webpack_require__(71); + +var _parser2 = _interopRequireDefault(_parser); + +var _nestedDeclaration = __webpack_require__(123); + +var _nestedDeclaration2 = _interopRequireDefault(_nestedDeclaration); + +var _scssTokenize = __webpack_require__(128); + +var _scssTokenize2 = _interopRequireDefault(_scssTokenize); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var ScssParser = function (_Parser) { + _inherits(ScssParser, _Parser); + + function ScssParser() { + _classCallCheck(this, ScssParser); + + return _possibleConstructorReturn(this, _Parser.apply(this, arguments)); + } + + ScssParser.prototype.createTokenizer = function createTokenizer() { + this.tokenizer = (0, _scssTokenize2.default)(this.input); + }; + + ScssParser.prototype.rule = function rule(tokens) { + var withColon = false; + var brackets = 0; + var value = ''; + for (var _iterator = tokens, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + var i = _ref; + + if (withColon) { + if (i[0] !== 'comment' && i[0] !== '{') { + value += i[1]; + } + } else if (i[0] === 'space' && i[1].indexOf('\n') !== -1) { + break; + } else if (i[0] === '(') { + brackets += 1; + } else if (i[0] === ')') { + brackets -= 1; + } else if (brackets === 0 && i[0] === ':') { + withColon = true; + } + } + + if (!withColon || value.trim() === '' || /^[a-zA-Z-:#]/.test(value)) { + _Parser.prototype.rule.call(this, tokens); + } else { + + tokens.pop(); + var node = new _nestedDeclaration2.default(); + this.init(node); + + var last = tokens[tokens.length - 1]; + if (last[4]) { + node.source.end = { line: last[4], column: last[5] }; + } else { + node.source.end = { line: last[2], column: last[3] }; + } + + while (tokens[0][0] !== 'word') { + node.raws.before += tokens.shift()[1]; + } + node.source.start = { line: tokens[0][2], column: tokens[0][3] }; + + node.prop = ''; + while (tokens.length) { + var type = tokens[0][0]; + if (type === ':' || type === 'space' || type === 'comment') { + break; + } + node.prop += tokens.shift()[1]; + } + + node.raws.between = ''; + + var token = void 0; + while (tokens.length) { + token = tokens.shift(); + + if (token[0] === ':') { + node.raws.between += token[1]; + break; + } else { + node.raws.between += token[1]; + } + } + + if (node.prop[0] === '_' || node.prop[0] === '*') { + node.raws.before += node.prop[0]; + node.prop = node.prop.slice(1); + } + node.raws.between += this.spacesAndCommentsFromStart(tokens); + this.precheckMissedSemicolon(tokens); + + for (var _i2 = tokens.length - 1; _i2 > 0; _i2--) { + token = tokens[_i2]; + if (token[1] === '!important') { + node.important = true; + var string = this.stringFrom(tokens, _i2); + string = this.spacesFromEnd(tokens) + string; + if (string !== ' !important') { + node.raws.important = string; + } + break; + } else if (token[1] === 'important') { + var cache = tokens.slice(0); + var str = ''; + for (var j = _i2; j > 0; j--) { + var _type = cache[j][0]; + if (str.trim().indexOf('!') === 0 && _type !== 'space') { + break; + } + str = cache.pop()[1] + str; + } + if (str.trim().indexOf('!') === 0) { + node.important = true; + node.raws.important = str; + tokens = cache; + } + } + + if (token[0] !== 'space' && token[0] !== 'comment') { + break; + } + } + + this.raw(node, 'value', tokens); + + if (node.value.indexOf(':') !== -1) { + this.checkMissedSemicolon(tokens); + } + + this.current = node; + } + }; + + ScssParser.prototype.comment = function comment(token) { + if (token[6] === 'inline') { + var node = new _comment2.default(); + this.init(node, token[2], token[3]); + node.raws.inline = true; + node.source.end = { line: token[4], column: token[5] }; + + var text = token[1].slice(2); + if (/^\s*$/.test(text)) { + node.text = ''; + node.raws.left = text; + node.raws.right = ''; + } else { + var match = text.match(/^(\s*)([^]*[^\s])(\s*)$/); + var fixed = match[2].replace(/(\*\/|\/\*)/g, '*//*'); + node.text = fixed; + node.raws.left = match[1]; + node.raws.right = match[3]; + node.raws.text = match[2]; + } + } else { + _Parser.prototype.comment.call(this, token); + } + }; + + return ScssParser; +}(_parser2.default); + +exports.default = ScssParser; +module.exports = exports['default']; + + + +/***/ }), +/* 126 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _stringifier = __webpack_require__(29); + +var _stringifier2 = _interopRequireDefault(_stringifier); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var ScssStringifier = function (_Stringifier) { + _inherits(ScssStringifier, _Stringifier); + + function ScssStringifier() { + _classCallCheck(this, ScssStringifier); + + return _possibleConstructorReturn(this, _Stringifier.apply(this, arguments)); + } + + ScssStringifier.prototype.comment = function comment(node) { + var left = this.raw(node, 'left', 'commentLeft'); + var right = this.raw(node, 'right', 'commentRight'); + + if (node.raws.inline) { + var text = node.raws.text || node.text; + this.builder('//' + left + text + right, node); + } else { + this.builder('/*' + left + node.text + right + '*/', node); + } + }; + + ScssStringifier.prototype.decl = function decl(node, semicolon) { + if (!node.isNested) { + _Stringifier.prototype.decl.call(this, node, semicolon); + } else { + + var between = this.raw(node, 'between', 'colon'); + var string = node.prop + between + this.rawValue(node, 'value'); + if (node.important) { + string += node.raws.important || ' !important'; + } + + this.builder(string + '{', node, 'start'); + + var after = void 0; + if (node.nodes && node.nodes.length) { + this.body(node); + after = this.raw(node, 'after'); + } else { + after = this.raw(node, 'after', 'emptyBody'); + } + if (after) this.builder(after); + this.builder('}', node, 'end'); + } + }; + + return ScssStringifier; +}(_stringifier2.default); + +exports.default = ScssStringifier; +module.exports = exports['default']; + + + +/***/ }), +/* 127 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; +exports.default = scssStringify; + +var _scssStringifier = __webpack_require__(126); + +var _scssStringifier2 = _interopRequireDefault(_scssStringifier); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function scssStringify(node, builder) { + var str = new _scssStringifier2.default(builder); + str.stringify(node); +} +module.exports = exports['default']; + + + +/***/ }), +/* 128 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; +exports.default = scssTokenize; +var SINGLE_QUOTE = 39; +var DOUBLE_QUOTE = 34; +var BACKSLASH = 92; +var SLASH = 47; +var NEWLINE = 10; +var SPACE = 32; +var FEED = 12; +var TAB = 9; +var CR = 13; +var OPEN_SQUARE = 91; +var CLOSE_SQUARE = 93; +var OPEN_PARENTHESES = 40; +var CLOSE_PARENTHESES = 41; +var OPEN_CURLY = 123; +var CLOSE_CURLY = 125; +var SEMICOLON = 59; +var ASTERISK = 42; +var COLON = 58; +var AT = 64; + +// SCSS PATCH { +var COMMA = 44; +var HASH = 35; +// } SCSS PATCH + +var RE_AT_END = /[ \n\t\r\f\{\(\)'"\\;/\[\]#]/g; +var RE_WORD_END = /[ \n\t\r\f\(\)\{\}:;@!'"\\\]\[#]|\/(?=\*)/g; +var RE_BAD_BRACKET = /.[\\\/\("'\n]/; + +var RE_NEW_LINE = /[\r\f\n]/g; // SCSS PATCH + +// SCSS PATCH function name was changed +function scssTokenize(input) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + var css = input.css.valueOf(); + var ignore = options.ignoreErrors; + + var code = void 0, + next = void 0, + quote = void 0, + lines = void 0, + last = void 0, + content = void 0, + escape = void 0, + nextLine = void 0, + nextOffset = void 0, + escaped = void 0, + escapePos = void 0, + prev = void 0, + n = void 0, + currentToken = void 0; + + var brackets = void 0; // SCSS PATCH + + var length = css.length; + var offset = -1; + var line = 1; + var pos = 0; + var buffer = []; + var returned = []; + + function unclosed(what) { + throw input.error('Unclosed ' + what, line, pos - offset); + } + + function endOfFile() { + return returned.length === 0 && pos >= length; + } + + function nextToken() { + if (returned.length) return returned.pop(); + if (pos >= length) return; + + code = css.charCodeAt(pos); + if (code === NEWLINE || code === FEED || code === CR && css.charCodeAt(pos + 1) !== NEWLINE) { + offset = pos; + line += 1; + } + + switch (code) { + case NEWLINE: + case SPACE: + case TAB: + case CR: + case FEED: + next = pos; + do { + next += 1; + code = css.charCodeAt(next); + if (code === NEWLINE) { + offset = next; + line += 1; + } + } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED); + + currentToken = ['space', css.slice(pos, next)]; + pos = next - 1; + break; + + case OPEN_SQUARE: + currentToken = ['[', '[', line, pos - offset]; + break; + + case CLOSE_SQUARE: + currentToken = [']', ']', line, pos - offset]; + break; + + case OPEN_CURLY: + currentToken = ['{', '{', line, pos - offset]; + break; + + case CLOSE_CURLY: + currentToken = ['}', '}', line, pos - offset]; + break; + + // SCSS PATCH { + case COMMA: + currentToken = ['word', ',', line, pos - offset, line, pos - offset + 1]; + break; + // } SCSS PATCH + + case COLON: + currentToken = [':', ':', line, pos - offset]; + break; + + case SEMICOLON: + currentToken = [';', ';', line, pos - offset]; + break; + + case OPEN_PARENTHESES: + prev = buffer.length ? buffer.pop()[1] : ''; + n = css.charCodeAt(pos + 1); + if (prev === 'url' && n !== SINGLE_QUOTE && n !== DOUBLE_QUOTE && n !== SPACE && n !== NEWLINE && n !== TAB && n !== FEED && n !== CR) { + // SCSS PATCH { + brackets = 1; + escaped = false; + next = pos + 1; + while (next <= css.length - 1) { + n = css.charCodeAt(next); + if (n === BACKSLASH) { + escaped = !escaped; + } else if (n === OPEN_PARENTHESES) { + brackets += 1; + } else if (n === CLOSE_PARENTHESES) { + brackets -= 1; + if (brackets === 0) break; + } + next += 1; + } + // } SCSS PATCH + + currentToken = ['brackets', css.slice(pos, next + 1), line, pos - offset, line, next - offset]; + + pos = next; + } else { + next = css.indexOf(')', pos + 1); + content = css.slice(pos, next + 1); + + if (next === -1 || RE_BAD_BRACKET.test(content)) { + currentToken = ['(', '(', line, pos - offset]; + } else { + currentToken = ['brackets', content, line, pos - offset, line, next - offset]; + pos = next; + } + } + + break; + + case CLOSE_PARENTHESES: + currentToken = [')', ')', line, pos - offset]; + break; + + case SINGLE_QUOTE: + case DOUBLE_QUOTE: + quote = code === SINGLE_QUOTE ? '\'' : '"'; + next = pos; + do { + escaped = false; + next = css.indexOf(quote, next + 1); + if (next === -1) { + if (ignore) { + next = pos + 1; + break; + } else { + unclosed('string'); + } + } + escapePos = next; + while (css.charCodeAt(escapePos - 1) === BACKSLASH) { + escapePos -= 1; + escaped = !escaped; + } + } while (escaped); + + content = css.slice(pos, next + 1); + lines = content.split('\n'); + last = lines.length - 1; + + if (last > 0) { + nextLine = line + last; + nextOffset = next - lines[last].length; + } else { + nextLine = line; + nextOffset = offset; + } + + currentToken = ['string', css.slice(pos, next + 1), line, pos - offset, nextLine, next - nextOffset]; + + offset = nextOffset; + line = nextLine; + pos = next; + break; + + case AT: + RE_AT_END.lastIndex = pos + 1; + RE_AT_END.test(css); + if (RE_AT_END.lastIndex === 0) { + next = css.length - 1; + } else { + next = RE_AT_END.lastIndex - 2; + } + + currentToken = ['at-word', css.slice(pos, next + 1), line, pos - offset, line, next - offset]; + + pos = next; + break; + + case BACKSLASH: + next = pos; + escape = true; + while (css.charCodeAt(next + 1) === BACKSLASH) { + next += 1; + escape = !escape; + } + code = css.charCodeAt(next + 1); + if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) { + next += 1; + } + + currentToken = ['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset]; + + pos = next; + break; + + default: + // SCSS PATCH { + n = css.charCodeAt(pos + 1); + + if (code === HASH && n === OPEN_CURLY) { + var deep = 1; + next = pos; + while (deep > 0) { + next += 1; + if (css.length <= next) unclosed('interpolation'); + + code = css.charCodeAt(next); + n = css.charCodeAt(next + 1); + + if (code === CLOSE_CURLY) { + deep -= 1; + } else if (code === HASH && n === OPEN_CURLY) { + deep += 1; + } + } + + content = css.slice(pos, next + 1); + lines = content.split('\n'); + last = lines.length - 1; + + if (last > 0) { + nextLine = line + last; + nextOffset = next - lines[last].length; + } else { + nextLine = line; + nextOffset = offset; + } + + currentToken = ['word', content, line, pos - offset, nextLine, next - nextOffset]; + + offset = nextOffset; + line = nextLine; + pos = next; + } else if (code === SLASH && n === ASTERISK) { + // } SCSS PATCH + next = css.indexOf('*/', pos + 2) + 1; + if (next === 0) { + if (ignore) { + next = css.length; + } else { + unclosed('comment'); + } + } + + content = css.slice(pos, next + 1); + lines = content.split('\n'); + last = lines.length - 1; + + if (last > 0) { + nextLine = line + last; + nextOffset = next - lines[last].length; + } else { + nextLine = line; + nextOffset = offset; + } + + currentToken = ['comment', content, line, pos - offset, nextLine, next - nextOffset]; + + offset = nextOffset; + line = nextLine; + pos = next; + + // SCSS PATCH { + } else if (code === SLASH && n === SLASH) { + RE_NEW_LINE.lastIndex = pos + 1; + RE_NEW_LINE.test(css); + if (RE_NEW_LINE.lastIndex === 0) { + next = css.length - 1; + } else { + next = RE_NEW_LINE.lastIndex - 2; + } + + content = css.slice(pos, next + 1); + + currentToken = ['comment', content, line, pos - offset, line, next - offset, 'inline']; + + pos = next; + // } SCSS PATCH + } else { + RE_WORD_END.lastIndex = pos + 1; + RE_WORD_END.test(css); + if (RE_WORD_END.lastIndex === 0) { + next = css.length - 1; + } else { + next = RE_WORD_END.lastIndex - 2; + } + + currentToken = ['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset]; + + buffer.push(currentToken); + + pos = next; + } + + break; + } + + pos++; + return currentToken; + } + + function back(token) { + returned.push(token); + } + + return { + back: back, + nextToken: nextToken, + endOfFile: endOfFile + }; +} +module.exports = exports['default']; + + + +/***/ }), +/* 129 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _flatten = __webpack_require__(31); + +var _flatten2 = _interopRequireDefault(_flatten); + +var _indexesOf = __webpack_require__(32); + +var _indexesOf2 = _interopRequireDefault(_indexesOf); + +var _uniq = __webpack_require__(79); + +var _uniq2 = _interopRequireDefault(_uniq); + +var _root = __webpack_require__(51); + +var _root2 = _interopRequireDefault(_root); + +var _selector = __webpack_require__(52); + +var _selector2 = _interopRequireDefault(_selector); + +var _className = __webpack_require__(45); + +var _className2 = _interopRequireDefault(_className); + +var _comment = __webpack_require__(47); + +var _comment2 = _interopRequireDefault(_comment); + +var _id = __webpack_require__(48); + +var _id2 = _interopRequireDefault(_id); + +var _tag = __webpack_require__(54); + +var _tag2 = _interopRequireDefault(_tag); + +var _string = __webpack_require__(53); + +var _string2 = _interopRequireDefault(_string); + +var _pseudo = __webpack_require__(50); + +var _pseudo2 = _interopRequireDefault(_pseudo); + +var _attribute = __webpack_require__(44); + +var _attribute2 = _interopRequireDefault(_attribute); + +var _universal = __webpack_require__(55); + +var _universal2 = _interopRequireDefault(_universal); + +var _combinator = __webpack_require__(46); + +var _combinator2 = _interopRequireDefault(_combinator); + +var _nesting = __webpack_require__(49); + +var _nesting2 = _interopRequireDefault(_nesting); + +var _sortAscending = __webpack_require__(131); + +var _sortAscending2 = _interopRequireDefault(_sortAscending); + +var _tokenize = __webpack_require__(132); + +var _tokenize2 = _interopRequireDefault(_tokenize); + +var _types = __webpack_require__(0); + +var types = _interopRequireWildcard(_types); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var Parser = function () { + function Parser(input) { + _classCallCheck(this, Parser); + + this.input = input; + this.lossy = input.options.lossless === false; + this.position = 0; + this.root = new _root2.default(); + + var selectors = new _selector2.default(); + this.root.append(selectors); + + this.current = selectors; + if (this.lossy) { + this.tokens = (0, _tokenize2.default)({ safe: input.safe, css: input.css.trim() }); + } else { + this.tokens = (0, _tokenize2.default)(input); + } + + return this.loop(); + } + + Parser.prototype.attribute = function attribute() { + var str = ''; + var attr = void 0; + var startingToken = this.currToken; + this.position++; + while (this.position < this.tokens.length && this.currToken[0] !== ']') { + str += this.tokens[this.position][1]; + this.position++; + } + if (this.position === this.tokens.length && !~str.indexOf(']')) { + this.error('Expected a closing square bracket.'); + } + var parts = str.split(/((?:[*~^$|]?=))([^]*)/); + var namespace = parts[0].split(/(\|)/g); + var attributeProps = { + operator: parts[1], + value: parts[2], + source: { + start: { + line: startingToken[2], + column: startingToken[3] + }, + end: { + line: this.currToken[2], + column: this.currToken[3] + } + }, + sourceIndex: startingToken[4] + }; + if (namespace.length > 1) { + if (namespace[0] === '') { + namespace[0] = true; + } + attributeProps.attribute = this.parseValue(namespace[2]); + attributeProps.namespace = this.parseNamespace(namespace[0]); + } else { + attributeProps.attribute = this.parseValue(parts[0]); + } + attr = new _attribute2.default(attributeProps); + + if (parts[2]) { + var insensitive = parts[2].split(/(\s+i\s*?)$/); + var trimmedValue = insensitive[0].trim(); + attr.value = this.lossy ? trimmedValue : insensitive[0]; + if (insensitive[1]) { + attr.insensitive = true; + if (!this.lossy) { + attr.raws.insensitive = insensitive[1]; + } + } + attr.quoted = trimmedValue[0] === '\'' || trimmedValue[0] === '"'; + attr.raws.unquoted = attr.quoted ? trimmedValue.slice(1, -1) : trimmedValue; + } + this.newNode(attr); + this.position++; + }; + + Parser.prototype.combinator = function combinator() { + if (this.currToken[1] === '|') { + return this.namespace(); + } + var node = new _combinator2.default({ + value: '', + source: { + start: { + line: this.currToken[2], + column: this.currToken[3] + }, + end: { + line: this.currToken[2], + column: this.currToken[3] + } + }, + sourceIndex: this.currToken[4] + }); + while (this.position < this.tokens.length && this.currToken && (this.currToken[0] === 'space' || this.currToken[0] === 'combinator')) { + if (this.nextToken && this.nextToken[0] === 'combinator') { + node.spaces.before = this.parseSpace(this.currToken[1]); + node.source.start.line = this.nextToken[2]; + node.source.start.column = this.nextToken[3]; + node.source.end.column = this.nextToken[3]; + node.source.end.line = this.nextToken[2]; + node.sourceIndex = this.nextToken[4]; + } else if (this.prevToken && this.prevToken[0] === 'combinator') { + node.spaces.after = this.parseSpace(this.currToken[1]); + } else if (this.currToken[0] === 'combinator') { + node.value = this.currToken[1]; + } else if (this.currToken[0] === 'space') { + node.value = this.parseSpace(this.currToken[1], ' '); + } + this.position++; + } + return this.newNode(node); + }; + + Parser.prototype.comma = function comma() { + if (this.position === this.tokens.length - 1) { + this.root.trailingComma = true; + this.position++; + return; + } + var selectors = new _selector2.default(); + this.current.parent.append(selectors); + this.current = selectors; + this.position++; + }; + + Parser.prototype.comment = function comment() { + var node = new _comment2.default({ + value: this.currToken[1], + source: { + start: { + line: this.currToken[2], + column: this.currToken[3] + }, + end: { + line: this.currToken[4], + column: this.currToken[5] + } + }, + sourceIndex: this.currToken[6] + }); + this.newNode(node); + this.position++; + }; + + Parser.prototype.error = function error(message) { + throw new this.input.error(message); // eslint-disable-line new-cap + }; + + Parser.prototype.missingBackslash = function missingBackslash() { + return this.error('Expected a backslash preceding the semicolon.'); + }; + + Parser.prototype.missingParenthesis = function missingParenthesis() { + return this.error('Expected opening parenthesis.'); + }; + + Parser.prototype.missingSquareBracket = function missingSquareBracket() { + return this.error('Expected opening square bracket.'); + }; + + Parser.prototype.namespace = function namespace() { + var before = this.prevToken && this.prevToken[1] || true; + if (this.nextToken[0] === 'word') { + this.position++; + return this.word(before); + } else if (this.nextToken[0] === '*') { + this.position++; + return this.universal(before); + } + }; + + Parser.prototype.nesting = function nesting() { + this.newNode(new _nesting2.default({ + value: this.currToken[1], + source: { + start: { + line: this.currToken[2], + column: this.currToken[3] + }, + end: { + line: this.currToken[2], + column: this.currToken[3] + } + }, + sourceIndex: this.currToken[4] + })); + this.position++; + }; + + Parser.prototype.parentheses = function parentheses() { + var last = this.current.last; + if (last && last.type === types.PSEUDO) { + var selector = new _selector2.default(); + var cache = this.current; + last.append(selector); + this.current = selector; + var balanced = 1; + this.position++; + while (this.position < this.tokens.length && balanced) { + if (this.currToken[0] === '(') { + balanced++; + } + if (this.currToken[0] === ')') { + balanced--; + } + if (balanced) { + this.parse(); + } else { + selector.parent.source.end.line = this.currToken[2]; + selector.parent.source.end.column = this.currToken[3]; + this.position++; + } + } + if (balanced) { + this.error('Expected closing parenthesis.'); + } + this.current = cache; + } else { + var _balanced = 1; + this.position++; + last.value += '('; + while (this.position < this.tokens.length && _balanced) { + if (this.currToken[0] === '(') { + _balanced++; + } + if (this.currToken[0] === ')') { + _balanced--; + } + last.value += this.parseParenthesisToken(this.currToken); + this.position++; + } + if (_balanced) { + this.error('Expected closing parenthesis.'); + } + } + }; + + Parser.prototype.pseudo = function pseudo() { + var _this = this; + + var pseudoStr = ''; + var startingToken = this.currToken; + while (this.currToken && this.currToken[0] === ':') { + pseudoStr += this.currToken[1]; + this.position++; + } + if (!this.currToken) { + return this.error('Expected pseudo-class or pseudo-element'); + } + if (this.currToken[0] === 'word') { + var pseudo = void 0; + this.splitWord(false, function (first, length) { + pseudoStr += first; + pseudo = new _pseudo2.default({ + value: pseudoStr, + source: { + start: { + line: startingToken[2], + column: startingToken[3] + }, + end: { + line: _this.currToken[4], + column: _this.currToken[5] + } + }, + sourceIndex: startingToken[4] + }); + _this.newNode(pseudo); + if (length > 1 && _this.nextToken && _this.nextToken[0] === '(') { + _this.error('Misplaced parenthesis.'); + } + }); + } else { + this.error('Unexpected "' + this.currToken[0] + '" found.'); + } + }; + + Parser.prototype.space = function space() { + var token = this.currToken; + // Handle space before and after the selector + if (this.position === 0 || this.prevToken[0] === ',' || this.prevToken[0] === '(') { + this.spaces = this.parseSpace(token[1]); + this.position++; + } else if (this.position === this.tokens.length - 1 || this.nextToken[0] === ',' || this.nextToken[0] === ')') { + this.current.last.spaces.after = this.parseSpace(token[1]); + this.position++; + } else { + this.combinator(); + } + }; + + Parser.prototype.string = function string() { + var token = this.currToken; + this.newNode(new _string2.default({ + value: this.currToken[1], + source: { + start: { + line: token[2], + column: token[3] + }, + end: { + line: token[4], + column: token[5] + } + }, + sourceIndex: token[6] + })); + this.position++; + }; + + Parser.prototype.universal = function universal(namespace) { + var nextToken = this.nextToken; + if (nextToken && nextToken[1] === '|') { + this.position++; + return this.namespace(); + } + this.newNode(new _universal2.default({ + value: this.currToken[1], + source: { + start: { + line: this.currToken[2], + column: this.currToken[3] + }, + end: { + line: this.currToken[2], + column: this.currToken[3] + } + }, + sourceIndex: this.currToken[4] + }), namespace); + this.position++; + }; + + Parser.prototype.splitWord = function splitWord(namespace, firstCallback) { + var _this2 = this; + + var nextToken = this.nextToken; + var word = this.currToken[1]; + while (nextToken && nextToken[0] === 'word') { + this.position++; + var current = this.currToken[1]; + word += current; + if (current.lastIndexOf('\\') === current.length - 1) { + var next = this.nextToken; + if (next && next[0] === 'space') { + word += this.parseSpace(next[1], ' '); + this.position++; + } + } + nextToken = this.nextToken; + } + var hasClass = (0, _indexesOf2.default)(word, '.'); + var hasId = (0, _indexesOf2.default)(word, '#'); + // Eliminate Sass interpolations from the list of id indexes + var interpolations = (0, _indexesOf2.default)(word, '#{'); + if (interpolations.length) { + hasId = hasId.filter(function (hashIndex) { + return !~interpolations.indexOf(hashIndex); + }); + } + var indices = (0, _sortAscending2.default)((0, _uniq2.default)((0, _flatten2.default)([[0], hasClass, hasId]))); + indices.forEach(function (ind, i) { + var index = indices[i + 1] || word.length; + var value = word.slice(ind, index); + if (i === 0 && firstCallback) { + return firstCallback.call(_this2, value, indices.length); + } + var node = void 0; + if (~hasClass.indexOf(ind)) { + node = new _className2.default({ + value: value.slice(1), + source: { + start: { + line: _this2.currToken[2], + column: _this2.currToken[3] + ind + }, + end: { + line: _this2.currToken[4], + column: _this2.currToken[3] + (index - 1) + } + }, + sourceIndex: _this2.currToken[6] + indices[i] + }); + } else if (~hasId.indexOf(ind)) { + node = new _id2.default({ + value: value.slice(1), + source: { + start: { + line: _this2.currToken[2], + column: _this2.currToken[3] + ind + }, + end: { + line: _this2.currToken[4], + column: _this2.currToken[3] + (index - 1) + } + }, + sourceIndex: _this2.currToken[6] + indices[i] + }); + } else { + node = new _tag2.default({ + value: value, + source: { + start: { + line: _this2.currToken[2], + column: _this2.currToken[3] + ind + }, + end: { + line: _this2.currToken[4], + column: _this2.currToken[3] + (index - 1) + } + }, + sourceIndex: _this2.currToken[6] + indices[i] + }); + } + _this2.newNode(node, namespace); + }); + this.position++; + }; + + Parser.prototype.word = function word(namespace) { + var nextToken = this.nextToken; + if (nextToken && nextToken[1] === '|') { + this.position++; + return this.namespace(); + } + return this.splitWord(namespace); + }; + + Parser.prototype.loop = function loop() { + while (this.position < this.tokens.length) { + this.parse(true); + } + return this.root; + }; + + Parser.prototype.parse = function parse(throwOnParenthesis) { + switch (this.currToken[0]) { + case 'space': + this.space(); + break; + case 'comment': + this.comment(); + break; + case '(': + this.parentheses(); + break; + case ')': + if (throwOnParenthesis) { + this.missingParenthesis(); + } + break; + case '[': + this.attribute(); + break; + case ']': + this.missingSquareBracket(); + break; + case 'at-word': + case 'word': + this.word(); + break; + case ':': + this.pseudo(); + break; + case ';': + this.missingBackslash(); + break; + case ',': + this.comma(); + break; + case '*': + this.universal(); + break; + case '&': + this.nesting(); + break; + case 'combinator': + this.combinator(); + break; + case 'string': + this.string(); + break; + } + }; + + /** + * Helpers + */ + + Parser.prototype.parseNamespace = function parseNamespace(namespace) { + if (this.lossy && typeof namespace === 'string') { + var trimmed = namespace.trim(); + if (!trimmed.length) { + return true; + } + + return trimmed; + } + + return namespace; + }; + + Parser.prototype.parseSpace = function parseSpace(space, replacement) { + return this.lossy ? replacement || '' : space; + }; + + Parser.prototype.parseValue = function parseValue(value) { + return this.lossy && value && typeof value === 'string' ? value.trim() : value; + }; + + Parser.prototype.parseParenthesisToken = function parseParenthesisToken(token) { + if (!this.lossy) { + return token[1]; + } + + if (token[0] === 'space') { + return this.parseSpace(token[1], ' '); + } + + return this.parseValue(token[1]); + }; + + Parser.prototype.newNode = function newNode(node, namespace) { + if (namespace) { + node.namespace = this.parseNamespace(namespace); + } + if (this.spaces) { + node.spaces.before = this.spaces; + this.spaces = ''; + } + return this.current.append(node); + }; + + _createClass(Parser, [{ + key: 'currToken', + get: function get() { + return this.tokens[this.position]; + } + }, { + key: 'nextToken', + get: function get() { + return this.tokens[this.position + 1]; + } + }, { + key: 'prevToken', + get: function get() { + return this.tokens[this.position - 1]; + } + }]); + + return Parser; +}(); + +exports.default = Parser; +module.exports = exports['default']; + +/***/ }), +/* 130 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _parser = __webpack_require__(129); + +var _parser2 = _interopRequireDefault(_parser); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var Processor = function () { + function Processor(func) { + _classCallCheck(this, Processor); + + this.func = func || function noop() {}; + return this; + } + + Processor.prototype.process = function process(selectors) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + var input = new _parser2.default({ + css: selectors, + error: function error(e) { + throw new Error(e); + }, + options: options + }); + this.res = input; + this.func(input); + return this; + }; + + _createClass(Processor, [{ + key: 'result', + get: function get() { + return String(this.res); + } + }]); + + return Processor; +}(); + +exports.default = Processor; +module.exports = exports['default']; + +/***/ }), +/* 131 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; +exports.default = sortAscending; +function sortAscending(list) { + return list.sort(function (a, b) { + return a - b; + }); +} +module.exports = exports["default"]; + +/***/ }), +/* 132 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; +exports.default = tokenize; +var singleQuote = 39, + doubleQuote = 34, + backslash = 92, + slash = 47, + newline = 10, + space = 32, + feed = 12, + tab = 9, + cr = 13, + plus = 43, + gt = 62, + tilde = 126, + pipe = 124, + comma = 44, + openBracket = 40, + closeBracket = 41, + openSq = 91, + closeSq = 93, + semicolon = 59, + asterisk = 42, + colon = 58, + ampersand = 38, + at = 64, + atEnd = /[ \n\t\r\{\(\)'"\\;/]/g, + wordEnd = /[ \n\t\r\(\)\*:;@!&'"\+\|~>,\[\]\\]|\/(?=\*)/g; + +function tokenize(input) { + var tokens = []; + var css = input.css.valueOf(); + + var code = void 0, + next = void 0, + quote = void 0, + lines = void 0, + last = void 0, + content = void 0, + escape = void 0, + nextLine = void 0, + nextOffset = void 0, + escaped = void 0, + escapePos = void 0; + + var length = css.length; + var offset = -1; + var line = 1; + var pos = 0; + + var unclosed = function unclosed(what, end) { + if (input.safe) { + css += end; + next = css.length - 1; + } else { + throw input.error('Unclosed ' + what, line, pos - offset, pos); + } + }; + + while (pos < length) { + code = css.charCodeAt(pos); + + if (code === newline) { + offset = pos; + line += 1; + } + + switch (code) { + case newline: + case space: + case tab: + case cr: + case feed: + next = pos; + do { + next += 1; + code = css.charCodeAt(next); + if (code === newline) { + offset = next; + line += 1; + } + } while (code === space || code === newline || code === tab || code === cr || code === feed); + + tokens.push(['space', css.slice(pos, next), line, pos - offset, pos]); + pos = next - 1; + break; + + case plus: + case gt: + case tilde: + case pipe: + next = pos; + do { + next += 1; + code = css.charCodeAt(next); + } while (code === plus || code === gt || code === tilde || code === pipe); + tokens.push(['combinator', css.slice(pos, next), line, pos - offset, pos]); + pos = next - 1; + break; + + case asterisk: + tokens.push(['*', '*', line, pos - offset, pos]); + break; + + case ampersand: + tokens.push(['&', '&', line, pos - offset, pos]); + break; + + case comma: + tokens.push([',', ',', line, pos - offset, pos]); + break; + + case openSq: + tokens.push(['[', '[', line, pos - offset, pos]); + break; + + case closeSq: + tokens.push([']', ']', line, pos - offset, pos]); + break; + + case colon: + tokens.push([':', ':', line, pos - offset, pos]); + break; + + case semicolon: + tokens.push([';', ';', line, pos - offset, pos]); + break; + + case openBracket: + tokens.push(['(', '(', line, pos - offset, pos]); + break; + + case closeBracket: + tokens.push([')', ')', line, pos - offset, pos]); + break; + + case singleQuote: + case doubleQuote: + quote = code === singleQuote ? "'" : '"'; + next = pos; + do { + escaped = false; + next = css.indexOf(quote, next + 1); + if (next === -1) { + unclosed('quote', quote); + } + escapePos = next; + while (css.charCodeAt(escapePos - 1) === backslash) { + escapePos -= 1; + escaped = !escaped; + } + } while (escaped); + + tokens.push(['string', css.slice(pos, next + 1), line, pos - offset, line, next - offset, pos]); + pos = next; + break; + + case at: + atEnd.lastIndex = pos + 1; + atEnd.test(css); + if (atEnd.lastIndex === 0) { + next = css.length - 1; + } else { + next = atEnd.lastIndex - 2; + } + tokens.push(['at-word', css.slice(pos, next + 1), line, pos - offset, line, next - offset, pos]); + pos = next; + break; + + case backslash: + next = pos; + escape = true; + while (css.charCodeAt(next + 1) === backslash) { + next += 1; + escape = !escape; + } + code = css.charCodeAt(next + 1); + if (escape && code !== slash && code !== space && code !== newline && code !== tab && code !== cr && code !== feed) { + next += 1; + } + tokens.push(['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset, pos]); + pos = next; + break; + + default: + if (code === slash && css.charCodeAt(pos + 1) === asterisk) { + next = css.indexOf('*/', pos + 2) + 1; + if (next === 0) { + unclosed('comment', '*/'); + } + + content = css.slice(pos, next + 1); + lines = content.split('\n'); + last = lines.length - 1; + + if (last > 0) { + nextLine = line + last; + nextOffset = next - lines[last].length; + } else { + nextLine = line; + nextOffset = offset; + } + + tokens.push(['comment', content, line, pos - offset, nextLine, next - nextOffset, pos]); + + offset = nextOffset; + line = nextLine; + pos = next; + } else { + wordEnd.lastIndex = pos + 1; + wordEnd.test(css); + if (wordEnd.lastIndex === 0) { + next = css.length - 1; + } else { + next = wordEnd.lastIndex - 2; + } + + tokens.push(['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset, pos]); + pos = next; + } + + break; + } + + pos++; + } + + return tokens; +} +module.exports = exports['default']; + +/***/ }), +/* 133 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +class ParserError extends Error { + constructor(message) { + super(message); + + this.name = this.constructor.name; + this.message = message || 'An error ocurred while parsing.'; + + if (typeof Error.captureStackTrace === 'function') { + Error.captureStackTrace(this, this.constructor); + } + else { + this.stack = (new Error(message)).stack; + } + } +} + +module.exports = ParserError; + + +/***/ }), +/* 134 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +class TokenizeError extends Error { + constructor(message) { + super(message); + + this.name = this.constructor.name; + this.message = message || 'An error ocurred while tokzenizing.'; + + if (typeof Error.captureStackTrace === 'function') { + Error.captureStackTrace(this, this.constructor); + } + else { + this.stack = (new Error(message)).stack; + } + } +} + +module.exports = TokenizeError; + + +/***/ }), +/* 135 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const Root = __webpack_require__(136); +const Value = __webpack_require__(65); + +const AtWord = __webpack_require__(56); +const Colon = __webpack_require__(57); +const Comma = __webpack_require__(58); +const Comment = __webpack_require__(59); +const Func = __webpack_require__(60); +const Numbr = __webpack_require__(61); +const Operator = __webpack_require__(62); +const Paren = __webpack_require__(63); +const Str = __webpack_require__(64); +const Word = __webpack_require__(66); + +const tokenize = __webpack_require__(137); + +const flatten = __webpack_require__(31); +const indexesOf = __webpack_require__(32); +const uniq = __webpack_require__(79); +const ParserError = __webpack_require__(133); + +function sortAscending (list) { + return list.sort((a, b) => a - b); +} + +module.exports = class Parser { + constructor (input, options) { + const defaults = { loose: false }; + + // cache needs to be an array for values with more than 1 level of function nesting + this.cache = []; + this.input = input; + this.options = Object.assign({}, defaults, options); + this.position = 0; + // we'll use this to keep track of the paren balance + this.unbalanced = 0; + this.root = new Root(); + + let value = new Value(); + + this.root.append(value); + + this.current = value; + this.tokens = tokenize(input, this.options); + } + + parse () { + return this.loop(); + } + + colon () { + let token = this.currToken; + + this.newNode(new Colon({ + value: token[1], + source: { + start: { + line: token[2], + column: token[3] + }, + end: { + line: token[4], + column: token[5] + } + }, + sourceIndex: token[6] + })); + + this.position ++; + } + + comma () { + let token = this.currToken; + + this.newNode(new Comma({ + value: token[1], + source: { + start: { + line: token[2], + column: token[3] + }, + end: { + line: token[4], + column: token[5] + } + }, + sourceIndex: token[6] + })); + + this.position ++; + } + + comment () { + let node = new Comment({ + value: this.currToken[1].replace(/\/\*|\*\//g, ''), + source: { + start: { + line: this.currToken[2], + column: this.currToken[3] + }, + end: { + line: this.currToken[4], + column: this.currToken[5] + } + }, + sourceIndex: this.currToken[6] + }); + + this.newNode(node); + this.position++; + } + + error (message, token) { + throw new ParserError(message + ` at line: ${token[2]}, column ${token[3]}`); + } + + loop () { + while (this.position < this.tokens.length) { + this.parseTokens(); + } + + if (!this.current.last && this.spaces) { + this.current.raws.before += this.spaces; + } + else if (this.spaces) { + this.current.last.raws.after += this.spaces; + } + + this.spaces = ''; + + return this.root; + } + + operator () { + + // if a +|- operator is followed by a non-word character (. is allowed) and + // is preceded by a non-word character. (5+5) + let char = this.currToken[1], + node; + + if (char === '+' || char === '-') { + // only inspect if the operator is not the first token, and we're only + // within a calc() function: the only spec-valid place for math expressions + if (!this.options.loose) { + if (this.position > 0) { + if (this.current.type === 'func' && this.current.value === 'calc') { + // allow operators to be proceeded by spaces and opening parens + if (this.prevToken[0] !== 'space' && this.prevToken[0] !== '(') { + this.error('Syntax Error', this.currToken); + } + // valid: calc(1 - +2) + // invalid: calc(1 -+2) + else if (this.nextToken[0] !== 'space' && this.nextToken[0] !== 'word') { + this.error('Syntax Error', this.currToken); + } + // valid: calc(1 - +2) + // valid: calc(-0.5 + 2) + // invalid: calc(1 -2) + else if (this.nextToken[0] === 'word' && this.current.last.type !== 'operator' && + this.current.last.value !== '(') { + this.error('Syntax Error', this.currToken); + } + } + // if we're not in a function and someone has doubled up on operators, + // or they're trying to perform a calc outside of a calc + // eg. +-4px or 5+ 5, throw an error + else if (this.nextToken[0] === 'space' + || this.nextToken[0] === 'operator' + || this.prevToken[0] === 'operator') { + this.error('Syntax Error', this.currToken); + } + } + } + + if (!this.options.loose) { + if (this.nextToken[0] === 'word') { + return this.word(); + } + } + else { + if ((!this.current.nodes.length || (this.current.last && this.current.last.type === 'operator')) && this.nextToken[0] === 'word') { + return this.word(); + } + } + } + + node = new Operator({ + value: this.currToken[1], + source: { + start: { + line: this.currToken[2], + column: this.currToken[3] + }, + end: { + line: this.currToken[2], + column: this.currToken[3] + } + }, + sourceIndex: this.currToken[4] + }); + + this.position ++; + + return this.newNode(node); + } + + parseTokens () { + switch (this.currToken[0]) { + case 'space': + this.space(); + break; + case 'colon': + this.colon(); + break; + case 'comma': + this.comma(); + break; + case 'comment': + this.comment(); + break; + case '(': + this.parenOpen(); + break; + case ')': + this.parenClose(); + break; + case 'atword': + case 'word': + this.word(); + break; + case 'operator': + this.operator(); + break; + case 'string': + this.string(); + break; + default: + this.word(); + break; + } + } + + parenOpen () { + let unbalanced = 1, + pos = this.position + 1, + token = this.currToken, + last; + + // check for balanced parens + while (pos < this.tokens.length && unbalanced) { + let tkn = this.tokens[pos]; + + if (tkn[0] === '(') { + unbalanced++; + } + if (tkn[0] === ')') { + unbalanced--; + } + pos ++; + } + + if (unbalanced) { + this.error('Expected closing parenthesis', token); + } + + // ok, all parens are balanced. continue on + + last = this.current.last; + + if (last && last.type === 'func' && last.unbalanced < 0) { + last.unbalanced = 0; // ok we're ready to add parens now + this.current = last; + } + + this.current.unbalanced ++; + + this.newNode(new Paren({ + value: token[1], + source: { + start: { + line: token[2], + column: token[3] + }, + end: { + line: token[4], + column: token[5] + } + }, + sourceIndex: token[6] + })); + + this.position ++; + + // url functions get special treatment, and anything between the function + // parens get treated as one word, if the contents aren't not a string. + if (this.current.type === 'func' && this.current.unbalanced && + this.current.value === 'url' && this.currToken[0] !== 'string' && + this.currToken[0] !== ')' && !this.options.loose) { + + let nextToken = this.nextToken, + value = this.currToken[1], + start = { + line: this.currToken[2], + column: this.currToken[3] + }; + + while (nextToken && nextToken[0] !== ')' && this.current.unbalanced) { + this.position ++; + value += this.currToken[1]; + nextToken = this.nextToken; + } + + if (this.position !== this.tokens.length - 1) { + // skip the following word definition, or it'll be a duplicate + this.position ++; + + this.newNode(new Word({ + value, + source: { + start, + end: { + line: this.currToken[4], + column: this.currToken[5] + } + }, + sourceIndex: this.currToken[6] + })); + } + } + } + + parenClose () { + let token = this.currToken; + + this.newNode(new Paren({ + value: token[1], + source: { + start: { + line: token[2], + column: token[3] + }, + end: { + line: token[4], + column: token[5] + } + }, + sourceIndex: token[6] + })); + + this.position ++; + + if (this.position >= this.tokens.length - 1 && !this.current.unbalanced) { + return; + } + + this.current.unbalanced --; + + if (this.current.unbalanced < 0) { + this.error('Expected opening parenthesis', token); + } + + if (!this.current.unbalanced && this.cache.length) { + this.current = this.cache.pop(); + } + } + + space () { + let token = this.currToken; + // Handle space before and after the selector + if (this.position === (this.tokens.length - 1) || this.nextToken[0] === ',' || this.nextToken[0] === ')') { + this.current.last.raws.after += token[1]; + this.position ++; + } + else { + this.spaces = token[1]; + this.position ++; + } + } + + splitWord () { + let nextToken = this.nextToken, + word = this.currToken[1], + rNumber = /^[\+\-]?((\d+(\.\d*)?)|(\.\d+))/, + + // treat css-like groupings differently so they can be inspected, + // but don't address them as anything but a word, but allow hex values + // to pass through. + rNoFollow = /^(?!\#([a-z0-9]+))[\#\{\}]/gi, + + hasAt, indices; + + if (!rNoFollow.test(word)) { + while (nextToken && nextToken[0] === 'word') { + this.position ++; + + let current = this.currToken[1]; + word += current; + + nextToken = this.nextToken; + } + } + + hasAt = indexesOf(word, '@'); + indices = sortAscending(uniq(flatten([[0], hasAt]))); + + indices.forEach((ind, i) => { + let index = indices[i + 1] || word.length, + value = word.slice(ind, index), + node; + + if (~hasAt.indexOf(ind)) { + node = new AtWord({ + value: value.slice(1), + source: { + start: { + line: this.currToken[2], + column: this.currToken[3] + ind + }, + end: { + line: this.currToken[4], + column: this.currToken[3] + (index - 1) + } + }, + sourceIndex: this.currToken[6] + indices[i] + }); + } + else if (rNumber.test(this.currToken[1])) { + let unit = value.replace(rNumber, ''); + + node = new Numbr({ + value: value.replace(unit, ''), + source: { + start: { + line: this.currToken[2], + column: this.currToken[3] + ind + }, + end: { + line: this.currToken[4], + column: this.currToken[3] + (index - 1) + } + }, + sourceIndex: this.currToken[6] + indices[i], + unit + }); + } + else { + node = new (nextToken && nextToken[0] === '(' ? Func : Word)({ + value, + source: { + start: { + line: this.currToken[2], + column: this.currToken[3] + ind + }, + end: { + line: this.currToken[4], + column: this.currToken[3] + (index - 1) + } + }, + sourceIndex: this.currToken[6] + indices[i] + }); + + if (node.constructor.name === 'Word') { + node.isHex = /^#(.+)/.test(value); + node.isColor = /^#([0-9a-f]{3}|[0-9a-f]{6})$/i.test(value); + } + else { + this.cache.push(this.current); + } + } + + this.newNode(node); + + }); + + this.position ++; + } + + string () { + let token = this.currToken, + value = this.currToken[1], + rQuote = /^(\"|\')/, + quoted = rQuote.test(value), + quote = '', + node; + + if (quoted) { + quote = value.match(rQuote)[0]; + // set value to the string within the quotes + // quotes are stored in raws + value = value.slice(1, value.length - 1); + } + + node = new Str({ + value, + source: { + start: { + line: token[2], + column: token[3] + }, + end: { + line: token[4], + column: token[5] + } + }, + sourceIndex: token[6], + quoted + }); + + node.raws.quote = quote; + + this.newNode(node); + this.position++; + } + + word () { + return this.splitWord(); + } + + newNode (node) { + if (this.spaces) { + node.raws.before += this.spaces; + this.spaces = ''; + } + + return this.current.append(node); + } + + get currToken () { + return this.tokens[this.position]; + } + + get nextToken () { + return this.tokens[this.position + 1]; + } + + get prevToken () { + return this.tokens[this.position - 1]; + } +}; + + +/***/ }), +/* 136 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const Container = __webpack_require__(1); + +module.exports = class Root extends Container { + constructor (opts) { + super(opts); + this.type = 'root'; + } +}; + + +/***/ }), +/* 137 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const openBracket = '{'.charCodeAt(0); +const closeBracket = '}'.charCodeAt(0); +const openParen = '('.charCodeAt(0); +const closeParen = ')'.charCodeAt(0); +const singleQuote = '\''.charCodeAt(0); +const doubleQuote = '"'.charCodeAt(0); +const backslash = '\\'.charCodeAt(0); +const slash = '/'.charCodeAt(0); +const comma = ','.charCodeAt(0); +const colon = ':'.charCodeAt(0); +const asterisk = '*'.charCodeAt(0); +const minus = '-'.charCodeAt(0); +const plus = '+'.charCodeAt(0); +const pound = '#'.charCodeAt(0); +const newline = '\n'.charCodeAt(0); +const space = ' '.charCodeAt(0); +const feed = '\f'.charCodeAt(0); +const tab = '\t'.charCodeAt(0); +const cr = '\r'.charCodeAt(0); +const at = '@'.charCodeAt(0); +const atEnd = /[ \n\t\r\{\(\)'"\\;,/]/g; +const wordEnd = /[ \n\t\r\(\)\{\}\*:;@!&'"\+\|~>,\[\]\\]|\/(?=\*)/g; +const wordEndNum = /[ \n\t\r\(\)\{\}\*:;@!&'"\-\+\|~>,\[\]\\]|\//g; +const alphaNum = /^[a-z0-9]/i; + +const util = __webpack_require__(155); +const TokenizeError = __webpack_require__(134); + +module.exports = function tokenize (input, options) { + + options = options || {}; + + let tokens = [], + css = input.valueOf(), + length = css.length, + offset = -1, + line = 1, + pos = 0, + + code, next, quote, lines, last, content, escape, nextLine, nextOffset, + escaped, escapePos, nextChar; + + function unclosed (what) { + let message = util.format('Unclosed %s at line: %d, column: %d, token: %d', what, line, pos - offset, pos); + throw new TokenizeError(message); + } + + while (pos < length) { + code = css.charCodeAt(pos); + + if (code === newline) { + offset = pos; + line += 1; + } + + switch (code) { + case newline: + case space: + case tab: + case cr: + case feed: + next = pos; + do { + next += 1; + code = css.charCodeAt(next); + if (code === newline) { + offset = next; + line += 1; + } + } while (code === space || + code === newline || + code === tab || + code === cr || + code === feed); + + tokens.push(['space', css.slice(pos, next), + line, pos - offset, + line, next - offset, + pos + ]); + + pos = next - 1; + break; + + case colon: + next = pos + 1; + tokens.push(['colon', css.slice(pos, next), + line, pos - offset, + line, next - offset, + pos + ]); + + pos = next - 1; + break; + + case comma: + next = pos + 1; + tokens.push(['comma', css.slice(pos, next), + line, pos - offset, + line, next - offset, + pos + ]); + + pos = next - 1; + break; + + case openBracket: + tokens.push(['{', '{', + line, pos - offset, + line, next - offset, + pos + ]); + break; + + case closeBracket: + tokens.push(['}', '}', + line, pos - offset, + line, next - offset, + pos + ]); + break; + + case openParen: + tokens.push(['(', '(', + line, pos - offset, + line, next - offset, + pos + ]); + break; + + case closeParen: + tokens.push([')', ')', + line, pos - offset, + line, next - offset, + pos + ]); + break; + + case singleQuote: + case doubleQuote: + quote = code === singleQuote ? '\'' : '"'; + next = pos; + do { + escaped = false; + next = css.indexOf(quote, next + 1); + if (next === -1) { + unclosed('quote', quote); + } + escapePos = next; + while (css.charCodeAt(escapePos - 1) === backslash) { + escapePos -= 1; + escaped = !escaped; + } + } while (escaped); + + tokens.push(['string', css.slice(pos, next + 1), + line, pos - offset, + line, next - offset, + pos + ]); + pos = next; + break; + + case at: + atEnd.lastIndex = pos + 1; + atEnd.test(css); + + if (atEnd.lastIndex === 0) { + next = css.length - 1; + } + else { + next = atEnd.lastIndex - 2; + } + + tokens.push(['atword', css.slice(pos, next + 1), + line, pos - offset, + line, next - offset, + pos + ]); + pos = next; + break; + + case backslash: + next = pos; + code = css.charCodeAt(next + 1); + + if (escape && (code !== slash && code !== space && + code !== newline && code !== tab && + code !== cr && code !== feed)) { + next += 1; + } + + tokens.push(['word', css.slice(pos, next + 1), + line, pos - offset, + line, next - offset, + pos + ]); + + pos = next; + break; + + case plus: + case minus: + case asterisk: + next = pos + 1; + nextChar = css.slice(pos + 1, next + 1); + + let prevChar = css.slice(pos - 1, pos); + + // if the operator is immediately followed by a word character, then we + // have a prefix of some kind, and should fall-through. eg. -webkit + + // look for --* for custom variables + if (code === minus && nextChar.charCodeAt(0) === minus) { + next++; + + tokens.push(['word', css.slice(pos, next), + line, pos - offset, + line, next - offset, + pos + ]); + + pos = next - 1; + break; + } + + tokens.push(['operator', css.slice(pos, next), + line, pos - offset, + line, next - offset, + pos + ]); + + pos = next - 1; + break; + + default: + if (code === slash && css.charCodeAt(pos + 1) === asterisk) { + next = css.indexOf('*/', pos + 2) + 1; + if (next === 0) { + unclosed('comment', '*/'); + } + + content = css.slice(pos, next + 1); + lines = content.split('\n'); + last = lines.length - 1; + + if (last > 0) { + nextLine = line + last; + nextOffset = next - lines[last].length; + } + else { + nextLine = line; + nextOffset = offset; + } + + tokens.push(['comment', content, + line, pos - offset, + nextLine, next - nextOffset, + pos + ]); + + offset = nextOffset; + line = nextLine; + pos = next; + + } + else if (code === pound && !alphaNum.test(css.slice(pos + 1, pos + 2))) { + next = pos + 1; + + tokens.push(['#', css.slice(pos, next), + line, pos - offset, + line, next - offset, + pos + ]); + + pos = next - 1; + } + // catch a regular slash, that isn't a comment + else if (code === slash) { + next = pos + 1; + + tokens.push(['operator', css.slice(pos, next), + line, pos - offset, + line, next - offset, + pos + ]); + + pos = next - 1; + } + else { + let regex = wordEnd; + + // we're dealing with a word that starts with a number + // those get treated differently + if (code >= 48 && code <= 57) { + regex = wordEndNum; + } + + regex.lastIndex = pos + 1; + regex.test(css); + + if (regex.lastIndex === 0) { + next = css.length - 1; + } + else { + next = regex.lastIndex - 2; + } + + tokens.push(['word', css.slice(pos, next + 1), + line, pos - offset, + line, next - offset, + pos + ]); + pos = next; + } + break; + } + + pos ++; + } + + return tokens; +}; + + +/***/ }), +/* 138 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; +/** + * Contains helpers for safely splitting lists of CSS values, + * preserving parentheses and quotes. + * + * @example + * const list = postcss.list; + * + * @namespace list + */ +var list = { + split: function split(string, separators, last) { + var array = []; + var current = ''; + var split = false; + + var func = 0; + var quote = false; + var escape = false; + + for (var i = 0; i < string.length; i++) { + var letter = string[i]; + + if (quote) { + if (escape) { + escape = false; + } else if (letter === '\\') { + escape = true; + } else if (letter === quote) { + quote = false; + } + } else if (letter === '"' || letter === '\'') { + quote = letter; + } else if (letter === '(') { + func += 1; + } else if (letter === ')') { + if (func > 0) func -= 1; + } else if (func === 0) { + if (separators.indexOf(letter) !== -1) split = true; + } + + if (split) { + if (current !== '') array.push(current.trim()); + current = ''; + split = false; + } else { + current += letter; + } + } + + if (last || current !== '') array.push(current.trim()); + return array; + }, + + + /** + * Safely splits space-separated values (such as those for `background`, + * `border-radius`, and other shorthand properties). + * + * @param {string} string - space-separated values + * + * @return {string[]} split values + * + * @example + * postcss.list.space('1px calc(10% + 1px)') //=> ['1px', 'calc(10% + 1px)'] + */ + space: function space(string) { + var spaces = [' ', '\n', '\t']; + return list.split(string, spaces); + }, + + + /** + * Safely splits comma-separated values (such as those for `transition-*` + * and `background` properties). + * + * @param {string} string - comma-separated values + * + * @return {string[]} split values + * + * @example + * postcss.list.comma('black, linear-gradient(white, black)') + * //=> ['black', 'linear-gradient(white, black)'] + */ + comma: function comma(string) { + var comma = ','; + return list.split(string, [comma], true); + } +}; + +exports.default = list; +module.exports = exports['default']; + + + +/***/ }), +/* 139 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(Buffer) { + +exports.__esModule = true; + +var _sourceMap = __webpack_require__(14); + +var _sourceMap2 = _interopRequireDefault(_sourceMap); + +var _path = __webpack_require__(5); + +var _path2 = _interopRequireDefault(_path); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var MapGenerator = function () { + function MapGenerator(stringify, root, opts) { + _classCallCheck(this, MapGenerator); + + this.stringify = stringify; + this.mapOpts = opts.map || {}; + this.root = root; + this.opts = opts; + } + + MapGenerator.prototype.isMap = function isMap() { + if (typeof this.opts.map !== 'undefined') { + return !!this.opts.map; + } else { + return this.previous().length > 0; + } + }; + + MapGenerator.prototype.previous = function previous() { + var _this = this; + + if (!this.previousMaps) { + this.previousMaps = []; + this.root.walk(function (node) { + if (node.source && node.source.input.map) { + var map = node.source.input.map; + if (_this.previousMaps.indexOf(map) === -1) { + _this.previousMaps.push(map); + } + } + }); + } + + return this.previousMaps; + }; + + MapGenerator.prototype.isInline = function isInline() { + if (typeof this.mapOpts.inline !== 'undefined') { + return this.mapOpts.inline; + } + + var annotation = this.mapOpts.annotation; + if (typeof annotation !== 'undefined' && annotation !== true) { + return false; + } + + if (this.previous().length) { + return this.previous().some(function (i) { + return i.inline; + }); + } else { + return true; + } + }; + + MapGenerator.prototype.isSourcesContent = function isSourcesContent() { + if (typeof this.mapOpts.sourcesContent !== 'undefined') { + return this.mapOpts.sourcesContent; + } + if (this.previous().length) { + return this.previous().some(function (i) { + return i.withContent(); + }); + } else { + return true; + } + }; + + MapGenerator.prototype.clearAnnotation = function clearAnnotation() { + if (this.mapOpts.annotation === false) return; + + var node = void 0; + for (var i = this.root.nodes.length - 1; i >= 0; i--) { + node = this.root.nodes[i]; + if (node.type !== 'comment') continue; + if (node.text.indexOf('# sourceMappingURL=') === 0) { + this.root.removeChild(i); + } + } + }; + + MapGenerator.prototype.setSourcesContent = function setSourcesContent() { + var _this2 = this; + + var already = {}; + this.root.walk(function (node) { + if (node.source) { + var from = node.source.input.from; + if (from && !already[from]) { + already[from] = true; + var relative = _this2.relative(from); + _this2.map.setSourceContent(relative, node.source.input.css); + } + } + }); + }; + + MapGenerator.prototype.applyPrevMaps = function applyPrevMaps() { + for (var _iterator = this.previous(), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + var prev = _ref; + + var from = this.relative(prev.file); + var root = prev.root || _path2.default.dirname(prev.file); + var map = void 0; + + if (this.mapOpts.sourcesContent === false) { + map = new _sourceMap2.default.SourceMapConsumer(prev.text); + if (map.sourcesContent) { + map.sourcesContent = map.sourcesContent.map(function () { + return null; + }); + } + } else { + map = prev.consumer(); + } + + this.map.applySourceMap(map, from, this.relative(root)); + } + }; + + MapGenerator.prototype.isAnnotation = function isAnnotation() { + if (this.isInline()) { + return true; + } else if (typeof this.mapOpts.annotation !== 'undefined') { + return this.mapOpts.annotation; + } else if (this.previous().length) { + return this.previous().some(function (i) { + return i.annotation; + }); + } else { + return true; + } + }; + + MapGenerator.prototype.toBase64 = function toBase64(str) { + if (Buffer) { + return Buffer.from ? Buffer.from(str).toString('base64') : new Buffer(str).toString('base64'); + } else { + return window.btoa(unescape(encodeURIComponent(str))); + } + }; + + MapGenerator.prototype.addAnnotation = function addAnnotation() { + var content = void 0; + + if (this.isInline()) { + + content = 'data:application/json;base64,' + this.toBase64(this.map.toString()); + } else if (typeof this.mapOpts.annotation === 'string') { + content = this.mapOpts.annotation; + } else { + content = this.outputFile() + '.map'; + } + + var eol = '\n'; + if (this.css.indexOf('\r\n') !== -1) eol = '\r\n'; + + this.css += eol + '/*# sourceMappingURL=' + content + ' */'; + }; + + MapGenerator.prototype.outputFile = function outputFile() { + if (this.opts.to) { + return this.relative(this.opts.to); + } else if (this.opts.from) { + return this.relative(this.opts.from); + } else { + return 'to.css'; + } + }; + + MapGenerator.prototype.generateMap = function generateMap() { + this.generateString(); + if (this.isSourcesContent()) this.setSourcesContent(); + if (this.previous().length > 0) this.applyPrevMaps(); + if (this.isAnnotation()) this.addAnnotation(); + + if (this.isInline()) { + return [this.css]; + } else { + return [this.css, this.map]; + } + }; + + MapGenerator.prototype.relative = function relative(file) { + if (file.indexOf('<') === 0) return file; + if (/^\w+:\/\//.test(file)) return file; + + var from = this.opts.to ? _path2.default.dirname(this.opts.to) : '.'; + + if (typeof this.mapOpts.annotation === 'string') { + from = _path2.default.dirname(_path2.default.resolve(from, this.mapOpts.annotation)); + } + + file = _path2.default.relative(from, file); + if (_path2.default.sep === '\\') { + return file.replace(/\\/g, '/'); + } else { + return file; + } + }; + + MapGenerator.prototype.sourcePath = function sourcePath(node) { + if (this.mapOpts.from) { + return this.mapOpts.from; + } else { + return this.relative(node.source.input.from); + } + }; + + MapGenerator.prototype.generateString = function generateString() { + var _this3 = this; + + this.css = ''; + this.map = new _sourceMap2.default.SourceMapGenerator({ file: this.outputFile() }); + + var line = 1; + var column = 1; + + var lines = void 0, + last = void 0; + this.stringify(this.root, function (str, node, type) { + _this3.css += str; + + if (node && type !== 'end') { + if (node.source && node.source.start) { + _this3.map.addMapping({ + source: _this3.sourcePath(node), + generated: { line: line, column: column - 1 }, + original: { + line: node.source.start.line, + column: node.source.start.column - 1 + } + }); + } else { + _this3.map.addMapping({ + source: '', + original: { line: 1, column: 0 }, + generated: { line: line, column: column - 1 } + }); + } + } + + lines = str.match(/\n/g); + if (lines) { + line += lines.length; + last = str.lastIndexOf('\n'); + column = str.length - last; + } else { + column += str.length; + } + + if (node && type !== 'start') { + if (node.source && node.source.end) { + _this3.map.addMapping({ + source: _this3.sourcePath(node), + generated: { line: line, column: column - 1 }, + original: { + line: node.source.end.line, + column: node.source.end.column + } + }); + } else { + _this3.map.addMapping({ + source: '', + original: { line: 1, column: 0 }, + generated: { line: line, column: column - 1 } + }); + } + } + }); + }; + + MapGenerator.prototype.generate = function generate() { + this.clearAnnotation(); + + if (this.isMap()) { + return this.generateMap(); + } else { + var result = ''; + this.stringify(this.root, function (i) { + result += i; + }); + return [result]; + } + }; + + return MapGenerator; +}(); + +exports.default = MapGenerator; +module.exports = exports['default']; + + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(15).Buffer)); + +/***/ }), +/* 140 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(Buffer) { + +exports.__esModule = true; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _sourceMap = __webpack_require__(14); + +var _sourceMap2 = _interopRequireDefault(_sourceMap); + +var _path = __webpack_require__(5); + +var _path2 = _interopRequireDefault(_path); + +var _fs = __webpack_require__(159); + +var _fs2 = _interopRequireDefault(_fs); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +/** + * Source map information from input CSS. + * For example, source map after Sass compiler. + * + * This class will automatically find source map in input CSS or in file system + * near input file (according `from` option). + * + * @example + * const root = postcss.parse(css, { from: 'a.sass.css' }); + * root.input.map //=> PreviousMap + */ +var PreviousMap = function () { + + /** + * @param {string} css - input CSS source + * @param {processOptions} [opts] - {@link Processor#process} options + */ + function PreviousMap(css, opts) { + _classCallCheck(this, PreviousMap); + + this.loadAnnotation(css); + /** + * @member {boolean} - Was source map inlined by data-uri to input CSS. + */ + this.inline = this.startWith(this.annotation, 'data:'); + + var prev = opts.map ? opts.map.prev : undefined; + var text = this.loadMap(opts.from, prev); + if (text) this.text = text; + } + + /** + * Create a instance of `SourceMapGenerator` class + * from the `source-map` library to work with source map information. + * + * It is lazy method, so it will create object only on first call + * and then it will use cache. + * + * @return {SourceMapGenerator} object with source map information + */ + + + PreviousMap.prototype.consumer = function consumer() { + if (!this.consumerCache) { + this.consumerCache = new _sourceMap2.default.SourceMapConsumer(this.text); + } + return this.consumerCache; + }; + + /** + * Does source map contains `sourcesContent` with input source text. + * + * @return {boolean} Is `sourcesContent` present + */ + + + PreviousMap.prototype.withContent = function withContent() { + return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0); + }; + + PreviousMap.prototype.startWith = function startWith(string, start) { + if (!string) return false; + return string.substr(0, start.length) === start; + }; + + PreviousMap.prototype.loadAnnotation = function loadAnnotation(css) { + var match = css.match(/\/\*\s*# sourceMappingURL=(.*)\s*\*\//); + if (match) this.annotation = match[1].trim(); + }; + + PreviousMap.prototype.decodeInline = function decodeInline(text) { + // data:application/json;charset=utf-8;base64, + // data:application/json;charset=utf8;base64, + // data:application/json;base64, + var baseUri = /^data:application\/json;(?:charset=utf-?8;)?base64,/; + var uri = 'data:application/json,'; + + if (this.startWith(text, uri)) { + return decodeURIComponent(text.substr(uri.length)); + } else if (baseUri.test(text)) { + return new Buffer(text.substr(RegExp.lastMatch.length), 'base64').toString(); + } else { + var encoding = text.match(/data:application\/json;([^,]+),/)[1]; + throw new Error('Unsupported source map encoding ' + encoding); + } + }; + + PreviousMap.prototype.loadMap = function loadMap(file, prev) { + if (prev === false) return false; + + if (prev) { + if (typeof prev === 'string') { + return prev; + } else if (typeof prev === 'function') { + var prevPath = prev(file); + if (prevPath && _fs2.default.existsSync && _fs2.default.existsSync(prevPath)) { + return _fs2.default.readFileSync(prevPath, 'utf-8').toString().trim(); + } else { + throw new Error('Unable to load previous source map: ' + prevPath.toString()); + } + } else if (prev instanceof _sourceMap2.default.SourceMapConsumer) { + return _sourceMap2.default.SourceMapGenerator.fromSourceMap(prev).toString(); + } else if (prev instanceof _sourceMap2.default.SourceMapGenerator) { + return prev.toString(); + } else if (this.isMap(prev)) { + return JSON.stringify(prev); + } else { + throw new Error('Unsupported previous source map format: ' + prev.toString()); + } + } else if (this.inline) { + return this.decodeInline(this.annotation); + } else if (this.annotation) { + var map = this.annotation; + if (file) map = _path2.default.join(_path2.default.dirname(file), map); + + this.root = _path2.default.dirname(map); + if (_fs2.default.existsSync && _fs2.default.existsSync(map)) { + return _fs2.default.readFileSync(map, 'utf-8').toString().trim(); + } else { + return false; + } + } + }; + + PreviousMap.prototype.isMap = function isMap(map) { + if ((typeof map === 'undefined' ? 'undefined' : _typeof(map)) !== 'object') return false; + return typeof map.mappings === 'string' || typeof map._mappings === 'string'; + }; + + return PreviousMap; +}(); + +exports.default = PreviousMap; +module.exports = exports['default']; + + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(15).Buffer)); + +/***/ }), +/* 141 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _lazyResult = __webpack_require__(69); + +var _lazyResult2 = _interopRequireDefault(_lazyResult); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +/** + * Contains plugins to process CSS. Create one `Processor` instance, + * initialize its plugins, and then use that instance on numerous CSS files. + * + * @example + * const processor = postcss([autoprefixer, precss]); + * processor.process(css1).then(result => console.log(result.css)); + * processor.process(css2).then(result => console.log(result.css)); + */ +var Processor = function () { + + /** + * @param {Array.|Processor} plugins - PostCSS + * plugins. See {@link Processor#use} for plugin format. + */ + function Processor() { + var plugins = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + + _classCallCheck(this, Processor); + + /** + * @member {string} - Current PostCSS version. + * + * @example + * if ( result.processor.version.split('.')[0] !== '5' ) { + * throw new Error('This plugin works only with PostCSS 5'); + * } + */ + this.version = '6.0.1'; + /** + * @member {pluginFunction[]} - Plugins added to this processor. + * + * @example + * const processor = postcss([autoprefixer, precss]); + * processor.plugins.length //=> 2 + */ + this.plugins = this.normalize(plugins); + } + + /** + * Adds a plugin to be used as a CSS processor. + * + * PostCSS plugin can be in 4 formats: + * * A plugin created by {@link postcss.plugin} method. + * * A function. PostCSS will pass the function a @{link Root} + * as the first argument and current {@link Result} instance + * as the second. + * * An object with a `postcss` method. PostCSS will use that method + * as described in #2. + * * Another {@link Processor} instance. PostCSS will copy plugins + * from that instance into this one. + * + * Plugins can also be added by passing them as arguments when creating + * a `postcss` instance (see [`postcss(plugins)`]). + * + * Asynchronous plugins should return a `Promise` instance. + * + * @param {Plugin|pluginFunction|Processor} plugin - PostCSS plugin + * or {@link Processor} + * with plugins + * + * @example + * const processor = postcss() + * .use(autoprefixer) + * .use(precss); + * + * @return {Processes} current processor to make methods chain + */ + + + Processor.prototype.use = function use(plugin) { + this.plugins = this.plugins.concat(this.normalize([plugin])); + return this; + }; + + /** + * Parses source CSS and returns a {@link LazyResult} Promise proxy. + * Because some plugins can be asynchronous it doesn’t make + * any transformations. Transformations will be applied + * in the {@link LazyResult} methods. + * + * @param {string|toString|Result} css - String with input CSS or + * any object with a `toString()` + * method, like a Buffer. + * Optionally, send a {@link Result} + * instance and the processor will + * take the {@link Root} from it. + * @param {processOptions} [opts] - options + * + * @return {LazyResult} Promise proxy + * + * @example + * processor.process(css, { from: 'a.css', to: 'a.out.css' }) + * .then(result => { + * console.log(result.css); + * }); + */ + + + Processor.prototype.process = function process(css) { + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + return new _lazyResult2.default(this, css, opts); + }; + + Processor.prototype.normalize = function normalize(plugins) { + var normalized = []; + for (var _iterator = plugins, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { + var _ref; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref = _i.value; + } + + var i = _ref; + + if (i.postcss) i = i.postcss; + + if ((typeof i === 'undefined' ? 'undefined' : _typeof(i)) === 'object' && Array.isArray(i.plugins)) { + normalized = normalized.concat(i.plugins); + } else if (typeof i === 'function') { + normalized.push(i); + } else if ((typeof i === 'undefined' ? 'undefined' : _typeof(i)) === 'object' && (i.parse || i.stringify)) { + throw new Error('PostCSS syntaxes cannot be used as plugins. ' + 'Instead, please use one of the ' + 'syntax/parser/stringifier options as ' + 'outlined in your PostCSS ' + 'runner documentation.'); + } else { + throw new Error(i + ' is not a PostCSS plugin'); + } + } + return normalized; + }; + + return Processor; +}(); + +exports.default = Processor; + +/** + * @callback builder + * @param {string} part - part of generated CSS connected to this node + * @param {Node} node - AST node + * @param {"start"|"end"} [type] - node’s part type + */ + +/** + * @callback parser + * + * @param {string|toString} css - string with input CSS or any object + * with toString() method, like a Buffer + * @param {processOptions} [opts] - options with only `from` and `map` keys + * + * @return {Root} PostCSS AST + */ + +/** + * @callback stringifier + * + * @param {Node} node - start node for stringifing. Usually {@link Root}. + * @param {builder} builder - function to concatenate CSS from node’s parts + * or generate string and source map + * + * @return {void} + */ + +/** + * @typedef {object} syntax + * @property {parser} parse - function to generate AST by string + * @property {stringifier} stringify - function to generate string by AST + */ + +/** + * @typedef {object} toString + * @property {function} toString + */ + +/** + * @callback pluginFunction + * @param {Root} root - parsed input CSS + * @param {Result} result - result to set warnings or check other plugins + */ + +/** + * @typedef {object} Plugin + * @property {function} postcss - PostCSS plugin function + */ + +/** + * @typedef {object} processOptions + * @property {string} from - the path of the CSS source file. + * You should always set `from`, + * because it is used in source map + * generation and syntax error messages. + * @property {string} to - the path where you’ll put the output + * CSS file. You should always set `to` + * to generate correct source maps. + * @property {parser} parser - function to generate AST by string + * @property {stringifier} stringifier - class to generate string by AST + * @property {syntax} syntax - object with `parse` and `stringify` + * @property {object} map - source map options + * @property {boolean} map.inline - does source map should + * be embedded in the output + * CSS as a base64-encoded + * comment + * @property {string|object|false|function} map.prev - source map content + * from a previous + * processing step + * (for example, Sass). + * PostCSS will try to find + * previous map + * automatically, so you + * could disable it by + * `false` value. + * @property {boolean} map.sourcesContent - does PostCSS should set + * the origin content to map + * @property {string|false} map.annotation - does PostCSS should set + * annotation comment to map + * @property {string} map.from - override `from` in map’s + * `sources` + */ + +module.exports = exports['default']; + + + +/***/ }), +/* 142 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _warning = __webpack_require__(145); + +var _warning2 = _interopRequireDefault(_warning); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +/** + * Provides the result of the PostCSS transformations. + * + * A Result instance is returned by {@link LazyResult#then} + * or {@link Root#toResult} methods. + * + * @example + * postcss([cssnext]).process(css).then(function (result) { + * console.log(result.css); + * }); + * + * @example + * var result2 = postcss.parse(css).toResult(); + */ +var Result = function () { + + /** + * @param {Processor} processor - processor used for this transformation. + * @param {Root} root - Root node after all transformations. + * @param {processOptions} opts - options from the {@link Processor#process} + * or {@link Root#toResult} + */ + function Result(processor, root, opts) { + _classCallCheck(this, Result); + + /** + * @member {Processor} - The Processor instance used + * for this transformation. + * + * @example + * for ( let plugin of result.processor.plugins) { + * if ( plugin.postcssPlugin === 'postcss-bad' ) { + * throw 'postcss-good is incompatible with postcss-bad'; + * } + * }); + */ + this.processor = processor; + /** + * @member {Message[]} - Contains messages from plugins + * (e.g., warnings or custom messages). + * Each message should have type + * and plugin properties. + * + * @example + * postcss.plugin('postcss-min-browser', () => { + * return (root, result) => { + * var browsers = detectMinBrowsersByCanIUse(root); + * result.messages.push({ + * type: 'min-browser', + * plugin: 'postcss-min-browser', + * browsers: browsers + * }); + * }; + * }); + */ + this.messages = []; + /** + * @member {Root} - Root node after all transformations. + * + * @example + * root.toResult().root == root; + */ + this.root = root; + /** + * @member {processOptions} - Options from the {@link Processor#process} + * or {@link Root#toResult} call + * that produced this Result instance. + * + * @example + * root.toResult(opts).opts == opts; + */ + this.opts = opts; + /** + * @member {string} - A CSS string representing of {@link Result#root}. + * + * @example + * postcss.parse('a{}').toResult().css //=> "a{}" + */ + this.css = undefined; + /** + * @member {SourceMapGenerator} - An instance of `SourceMapGenerator` + * class from the `source-map` library, + * representing changes + * to the {@link Result#root} instance. + * + * @example + * result.map.toJSON() //=> { version: 3, file: 'a.css', … } + * + * @example + * if ( result.map ) { + * fs.writeFileSync(result.opts.to + '.map', result.map.toString()); + * } + */ + this.map = undefined; + } + + /** + * Returns for @{link Result#css} content. + * + * @example + * result + '' === result.css + * + * @return {string} string representing of {@link Result#root} + */ + + + Result.prototype.toString = function toString() { + return this.css; + }; + + /** + * Creates an instance of {@link Warning} and adds it + * to {@link Result#messages}. + * + * @param {string} text - warning message + * @param {Object} [opts] - warning options + * @param {Node} opts.node - CSS node that caused the warning + * @param {string} opts.word - word in CSS source that caused the warning + * @param {number} opts.index - index in CSS node string that caused + * the warning + * @param {string} opts.plugin - name of the plugin that created + * this warning. {@link Result#warn} fills + * this property automatically. + * + * @return {Warning} created warning + */ + + + Result.prototype.warn = function warn(text) { + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + if (!opts.plugin) { + if (this.lastPlugin && this.lastPlugin.postcssPlugin) { + opts.plugin = this.lastPlugin.postcssPlugin; + } + } + + var warning = new _warning2.default(text, opts); + this.messages.push(warning); + + return warning; + }; + + /** + * Returns warnings from plugins. Filters {@link Warning} instances + * from {@link Result#messages}. + * + * @example + * result.warnings().forEach(warn => { + * console.warn(warn.toString()); + * }); + * + * @return {Warning[]} warnings from plugins + */ + + + Result.prototype.warnings = function warnings() { + return this.messages.filter(function (i) { + return i.type === 'warning'; + }); + }; + + /** + * An alias for the {@link Result#css} property. + * Use it with syntaxes that generate non-CSS output. + * @type {string} + * + * @example + * result.css === result.content; + */ + + + _createClass(Result, [{ + key: 'content', + get: function get() { + return this.css; + } + }]); + + return Result; +}(); + +exports.default = Result; + +/** + * @typedef {object} Message + * @property {string} type - message type + * @property {string} plugin - source PostCSS plugin name + */ + +module.exports = exports['default']; + + + +/***/ }), +/* 143 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _chalk = __webpack_require__(11); + +var _chalk2 = _interopRequireDefault(_chalk); + +var _tokenize = __webpack_require__(74); + +var _tokenize2 = _interopRequireDefault(_tokenize); + +var _input = __webpack_require__(26); + +var _input2 = _interopRequireDefault(_input); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var colors = new _chalk2.default.constructor({ enabled: true }); + +var HIGHLIGHT_THEME = { + 'brackets': colors.cyan, + 'at-word': colors.cyan, + 'call': colors.cyan, + 'comment': colors.gray, + 'string': colors.green, + 'class': colors.yellow, + 'hash': colors.magenta, + '(': colors.cyan, + ')': colors.cyan, + '{': colors.yellow, + '}': colors.yellow, + '[': colors.yellow, + ']': colors.yellow, + ':': colors.yellow, + ';': colors.yellow +}; + +function getTokenType(_ref, processor) { + var type = _ref[0], + value = _ref[1]; + + if (type === 'word') { + if (value[0] === '.') { + return 'class'; + } + if (value[0] === '#') { + return 'hash'; + } + } + + if (!processor.endOfFile()) { + var next = processor.nextToken(); + processor.back(next); + if (next[0] === 'brackets' || next[0] === '(') return 'call'; + } + + return type; +} + +function terminalHighlight(css) { + var processor = (0, _tokenize2.default)(new _input2.default(css), { ignoreErrors: true }); + var result = ''; + + var _loop = function _loop() { + var token = processor.nextToken(); + var color = HIGHLIGHT_THEME[getTokenType(token, processor)]; + if (color) { + result += token[1].split(/\r?\n/).map(function (i) { + return color(i); + }).join('\n'); + } else { + result += token[1]; + } + }; + + while (!processor.endOfFile()) { + _loop(); + } + return result; +} + +exports.default = terminalHighlight; +module.exports = exports['default']; + + + +/***/ }), +/* 144 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; +exports.default = warnOnce; +var printed = {}; + +function warnOnce(message) { + if (printed[message]) return; + printed[message] = true; + + if (typeof console !== 'undefined' && console.warn) console.warn(message); +} +module.exports = exports['default']; + + + +/***/ }), +/* 145 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +/** + * Represents a plugin’s warning. It can be created using {@link Node#warn}. + * + * @example + * if ( decl.important ) { + * decl.warn(result, 'Avoid !important', { word: '!important' }); + * } + */ +var Warning = function () { + + /** + * @param {string} text - warning message + * @param {Object} [opts] - warning options + * @param {Node} opts.node - CSS node that caused the warning + * @param {string} opts.word - word in CSS source that caused the warning + * @param {number} opts.index - index in CSS node string that caused + * the warning + * @param {string} opts.plugin - name of the plugin that created + * this warning. {@link Result#warn} fills + * this property automatically. + */ + function Warning(text) { + var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + _classCallCheck(this, Warning); + + /** + * @member {string} - Type to filter warnings from + * {@link Result#messages}. Always equal + * to `"warning"`. + * + * @example + * const nonWarning = result.messages.filter(i => i.type !== 'warning') + */ + this.type = 'warning'; + /** + * @member {string} - The warning message. + * + * @example + * warning.text //=> 'Try to avoid !important' + */ + this.text = text; + + if (opts.node && opts.node.source) { + var pos = opts.node.positionBy(opts); + /** + * @member {number} - Line in the input file + * with this warning’s source + * + * @example + * warning.line //=> 5 + */ + this.line = pos.line; + /** + * @member {number} - Column in the input file + * with this warning’s source. + * + * @example + * warning.column //=> 6 + */ + this.column = pos.column; + } + + for (var opt in opts) { + this[opt] = opts[opt]; + } + } + + /** + * Returns a warning position and message. + * + * @example + * warning.toString() //=> 'postcss-lint:a.css:10:14: Avoid !important' + * + * @return {string} warning position and message + */ + + + Warning.prototype.toString = function toString() { + if (this.node) { + return this.node.error(this.text, { + plugin: this.plugin, + index: this.index, + word: this.word + }).message; + } else if (this.plugin) { + return this.plugin + ': ' + this.text; + } else { + return this.text; + } + }; + + /** + * @memberof Warning# + * @member {string} plugin - The name of the plugin that created + * it will fill this property automatically. + * this warning. When you call {@link Node#warn} + * + * @example + * warning.plugin //=> 'postcss-important' + */ + + /** + * @memberof Warning# + * @member {Node} node - Contains the CSS node that caused the warning. + * + * @example + * warning.node.toString() //=> 'color: white !important' + */ + + return Warning; +}(); + +exports.default = Warning; +module.exports = exports['default']; + + + +/***/ }), +/* 146 */ +/***/ (function(module, exports) { + +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); + +/** + * Encode an integer in the range of 0 to 63 to a single base 64 digit. + */ +exports.encode = function (number) { + if (0 <= number && number < intToCharMap.length) { + return intToCharMap[number]; + } + throw new TypeError("Must be between 0 and 63: " + number); +}; + +/** + * Decode a single base 64 character code digit to an integer. Returns -1 on + * failure. + */ +exports.decode = function (charCode) { + var bigA = 65; // 'A' + var bigZ = 90; // 'Z' + + var littleA = 97; // 'a' + var littleZ = 122; // 'z' + + var zero = 48; // '0' + var nine = 57; // '9' + + var plus = 43; // '+' + var slash = 47; // '/' + + var littleOffset = 26; + var numberOffset = 52; + + // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ + if (bigA <= charCode && charCode <= bigZ) { + return (charCode - bigA); + } + + // 26 - 51: abcdefghijklmnopqrstuvwxyz + if (littleA <= charCode && charCode <= littleZ) { + return (charCode - littleA + littleOffset); + } + + // 52 - 61: 0123456789 + if (zero <= charCode && charCode <= nine) { + return (charCode - zero + numberOffset); + } + + // 62: + + if (charCode == plus) { + return 62; + } + + // 63: / + if (charCode == slash) { + return 63; + } + + // Invalid base64 digit. + return -1; +}; + + +/***/ }), +/* 147 */ +/***/ (function(module, exports) { + +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +exports.GREATEST_LOWER_BOUND = 1; +exports.LEAST_UPPER_BOUND = 2; + +/** + * Recursive implementation of binary search. + * + * @param aLow Indices here and lower do not contain the needle. + * @param aHigh Indices here and higher do not contain the needle. + * @param aNeedle The element being searched for. + * @param aHaystack The non-empty array being searched. + * @param aCompare Function which takes two elements and returns -1, 0, or 1. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + */ +function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { + // This function terminates when one of the following is true: + // + // 1. We find the exact element we are looking for. + // + // 2. We did not find the exact element, but we can return the index of + // the next-closest element. + // + // 3. We did not find the exact element, and there is no next-closest + // element than the one we are searching for, so we return -1. + var mid = Math.floor((aHigh - aLow) / 2) + aLow; + var cmp = aCompare(aNeedle, aHaystack[mid], true); + if (cmp === 0) { + // Found the element we are looking for. + return mid; + } + else if (cmp > 0) { + // Our needle is greater than aHaystack[mid]. + if (aHigh - mid > 1) { + // The element is in the upper half. + return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); + } + + // The exact needle element was not found in this haystack. Determine if + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return aHigh < aHaystack.length ? aHigh : -1; + } else { + return mid; + } + } + else { + // Our needle is less than aHaystack[mid]. + if (mid - aLow > 1) { + // The element is in the lower half. + return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); + } + + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return mid; + } else { + return aLow < 0 ? -1 : aLow; + } + } +} + +/** + * This is an implementation of binary search which will always try and return + * the index of the closest element if there is no exact hit. This is because + * mappings between original and generated line/col pairs are single points, + * and there is an implicit region between each of them, so a miss just means + * that you aren't on the very start of a region. + * + * @param aNeedle The element you are looking for. + * @param aHaystack The array that is being searched. + * @param aCompare A function which takes the needle and an element in the + * array and returns -1, 0, or 1 depending on whether the needle is less + * than, equal to, or greater than the element, respectively. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. + */ +exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { + if (aHaystack.length === 0) { + return -1; + } + + var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, + aCompare, aBias || exports.GREATEST_LOWER_BOUND); + if (index < 0) { + return -1; + } + + // We have found either the exact element, or the next-closest element than + // the one we are searching for. However, there may be more than one such + // element. Make sure we always return the smallest of these. + while (index - 1 >= 0) { + if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { + break; + } + --index; + } + + return index; +}; + + +/***/ }), +/* 148 */ +/***/ (function(module, exports, __webpack_require__) { + +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2014 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var util = __webpack_require__(10); + +/** + * Determine whether mappingB is after mappingA with respect to generated + * position. + */ +function generatedPositionAfter(mappingA, mappingB) { + // Optimized for most common case + var lineA = mappingA.generatedLine; + var lineB = mappingB.generatedLine; + var columnA = mappingA.generatedColumn; + var columnB = mappingB.generatedColumn; + return lineB > lineA || lineB == lineA && columnB >= columnA || + util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; +} + +/** + * A data structure to provide a sorted view of accumulated mappings in a + * performance conscious manner. It trades a neglibable overhead in general + * case for a large speedup in case of mappings being added in order. + */ +function MappingList() { + this._array = []; + this._sorted = true; + // Serves as infimum + this._last = {generatedLine: -1, generatedColumn: 0}; +} + +/** + * Iterate through internal items. This method takes the same arguments that + * `Array.prototype.forEach` takes. + * + * NOTE: The order of the mappings is NOT guaranteed. + */ +MappingList.prototype.unsortedForEach = + function MappingList_forEach(aCallback, aThisArg) { + this._array.forEach(aCallback, aThisArg); + }; + +/** + * Add the given source mapping. + * + * @param Object aMapping + */ +MappingList.prototype.add = function MappingList_add(aMapping) { + if (generatedPositionAfter(this._last, aMapping)) { + this._last = aMapping; + this._array.push(aMapping); + } else { + this._sorted = false; + this._array.push(aMapping); + } +}; + +/** + * Returns the flat, sorted array of mappings. The mappings are sorted by + * generated position. + * + * WARNING: This method returns internal data without copying, for + * performance. The return value must NOT be mutated, and should be treated as + * an immutable borrow. If you want to take ownership, you must make your own + * copy. + */ +MappingList.prototype.toArray = function MappingList_toArray() { + if (!this._sorted) { + this._array.sort(util.compareByGeneratedPositionsInflated); + this._sorted = true; + } + return this._array; +}; + +exports.MappingList = MappingList; + + +/***/ }), +/* 149 */ +/***/ (function(module, exports) { + +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +// It turns out that some (most?) JavaScript engines don't self-host +// `Array.prototype.sort`. This makes sense because C++ will likely remain +// faster than JS when doing raw CPU-intensive sorting. However, when using a +// custom comparator function, calling back and forth between the VM's C++ and +// JIT'd JS is rather slow *and* loses JIT type information, resulting in +// worse generated code for the comparator function than would be optimal. In +// fact, when sorting with a comparator, these costs outweigh the benefits of +// sorting in C++. By using our own JS-implemented Quick Sort (below), we get +// a ~3500ms mean speed-up in `bench/bench.html`. + +/** + * Swap the elements indexed by `x` and `y` in the array `ary`. + * + * @param {Array} ary + * The array. + * @param {Number} x + * The index of the first item. + * @param {Number} y + * The index of the second item. + */ +function swap(ary, x, y) { + var temp = ary[x]; + ary[x] = ary[y]; + ary[y] = temp; +} + +/** + * Returns a random integer within the range `low .. high` inclusive. + * + * @param {Number} low + * The lower bound on the range. + * @param {Number} high + * The upper bound on the range. + */ +function randomIntInRange(low, high) { + return Math.round(low + (Math.random() * (high - low))); +} + +/** + * The Quick Sort algorithm. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + * @param {Number} p + * Start index of the array + * @param {Number} r + * End index of the array + */ +function doQuickSort(ary, comparator, p, r) { + // If our lower bound is less than our upper bound, we (1) partition the + // array into two pieces and (2) recurse on each half. If it is not, this is + // the empty array and our base case. + + if (p < r) { + // (1) Partitioning. + // + // The partitioning chooses a pivot between `p` and `r` and moves all + // elements that are less than or equal to the pivot to the before it, and + // all the elements that are greater than it after it. The effect is that + // once partition is done, the pivot is in the exact place it will be when + // the array is put in sorted order, and it will not need to be moved + // again. This runs in O(n) time. + + // Always choose a random pivot so that an input array which is reverse + // sorted does not cause O(n^2) running time. + var pivotIndex = randomIntInRange(p, r); + var i = p - 1; + + swap(ary, pivotIndex, r); + var pivot = ary[r]; + + // Immediately after `j` is incremented in this loop, the following hold + // true: + // + // * Every element in `ary[p .. i]` is less than or equal to the pivot. + // + // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. + for (var j = p; j < r; j++) { + if (comparator(ary[j], pivot) <= 0) { + i += 1; + swap(ary, i, j); + } + } + + swap(ary, i + 1, j); + var q = i + 1; + + // (2) Recurse on each half. + + doQuickSort(ary, comparator, p, q - 1); + doQuickSort(ary, comparator, q + 1, r); + } +} + +/** + * Sort the given array in-place with the given comparator function. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + */ +exports.quickSort = function (ary, comparator) { + doQuickSort(ary, comparator, 0, ary.length - 1); +}; + + +/***/ }), +/* 150 */ +/***/ (function(module, exports, __webpack_require__) { + +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var util = __webpack_require__(10); +var binarySearch = __webpack_require__(147); +var ArraySet = __webpack_require__(75).ArraySet; +var base64VLQ = __webpack_require__(76); +var quickSort = __webpack_require__(149).quickSort; + +function SourceMapConsumer(aSourceMap) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); + } + + return sourceMap.sections != null + ? new IndexedSourceMapConsumer(sourceMap) + : new BasicSourceMapConsumer(sourceMap); +} + +SourceMapConsumer.fromSourceMap = function(aSourceMap) { + return BasicSourceMapConsumer.fromSourceMap(aSourceMap); +}; + +/** + * The version of the source mapping spec that we are consuming. + */ +SourceMapConsumer.prototype._version = 3; + +// `__generatedMappings` and `__originalMappings` are arrays that hold the +// parsed mapping coordinates from the source map's "mappings" attribute. They +// are lazily instantiated, accessed via the `_generatedMappings` and +// `_originalMappings` getters respectively, and we only parse the mappings +// and create these arrays once queried for a source location. We jump through +// these hoops because there can be many thousands of mappings, and parsing +// them is expensive, so we only want to do it if we must. +// +// Each object in the arrays is of the form: +// +// { +// generatedLine: The line number in the generated code, +// generatedColumn: The column number in the generated code, +// source: The path to the original source file that generated this +// chunk of code, +// originalLine: The line number in the original source that +// corresponds to this chunk of generated code, +// originalColumn: The column number in the original source that +// corresponds to this chunk of generated code, +// name: The name of the original symbol which generated this chunk of +// code. +// } +// +// All properties except for `generatedLine` and `generatedColumn` can be +// `null`. +// +// `_generatedMappings` is ordered by the generated positions. +// +// `_originalMappings` is ordered by the original positions. + +SourceMapConsumer.prototype.__generatedMappings = null; +Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { + get: function () { + if (!this.__generatedMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + + return this.__generatedMappings; + } +}); + +SourceMapConsumer.prototype.__originalMappings = null; +Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { + get: function () { + if (!this.__originalMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + + return this.__originalMappings; + } +}); + +SourceMapConsumer.prototype._charIsMappingSeparator = + function SourceMapConsumer_charIsMappingSeparator(aStr, index) { + var c = aStr.charAt(index); + return c === ";" || c === ","; + }; + +/** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ +SourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + throw new Error("Subclasses must implement _parseMappings"); + }; + +SourceMapConsumer.GENERATED_ORDER = 1; +SourceMapConsumer.ORIGINAL_ORDER = 2; + +SourceMapConsumer.GREATEST_LOWER_BOUND = 1; +SourceMapConsumer.LEAST_UPPER_BOUND = 2; + +/** + * Iterate over each mapping between an original source/line/column and a + * generated line/column in this source map. + * + * @param Function aCallback + * The function that is called with each mapping. + * @param Object aContext + * Optional. If specified, this object will be the value of `this` every + * time that `aCallback` is called. + * @param aOrder + * Either `SourceMapConsumer.GENERATED_ORDER` or + * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to + * iterate over the mappings sorted by the generated file's line/column + * order or the original's source/line/column order, respectively. Defaults to + * `SourceMapConsumer.GENERATED_ORDER`. + */ +SourceMapConsumer.prototype.eachMapping = + function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { + var context = aContext || null; + var order = aOrder || SourceMapConsumer.GENERATED_ORDER; + + var mappings; + switch (order) { + case SourceMapConsumer.GENERATED_ORDER: + mappings = this._generatedMappings; + break; + case SourceMapConsumer.ORIGINAL_ORDER: + mappings = this._originalMappings; + break; + default: + throw new Error("Unknown order of iteration."); + } + + var sourceRoot = this.sourceRoot; + mappings.map(function (mapping) { + var source = mapping.source === null ? null : this._sources.at(mapping.source); + if (source != null && sourceRoot != null) { + source = util.join(sourceRoot, source); + } + return { + source: source, + generatedLine: mapping.generatedLine, + generatedColumn: mapping.generatedColumn, + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: mapping.name === null ? null : this._names.at(mapping.name) + }; + }, this).forEach(aCallback, context); + }; + +/** + * Returns all generated line and column information for the original source, + * line, and column provided. If no column is provided, returns all mappings + * corresponding to a either the line we are searching for or the next + * closest line that has any mappings. Otherwise, returns all mappings + * corresponding to the given line and either the column we are searching for + * or the next closest column that has any offsets. + * + * The only argument is an object with the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. + * - column: Optional. the column number in the original source. + * + * and an array of objects is returned, each with the following properties: + * + * - line: The line number in the generated source, or null. + * - column: The column number in the generated source, or null. + */ +SourceMapConsumer.prototype.allGeneratedPositionsFor = + function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { + var line = util.getArg(aArgs, 'line'); + + // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping + // returns the index of the closest mapping less than the needle. By + // setting needle.originalColumn to 0, we thus find the last mapping for + // the given line, provided such a mapping exists. + var needle = { + source: util.getArg(aArgs, 'source'), + originalLine: line, + originalColumn: util.getArg(aArgs, 'column', 0) + }; + + if (this.sourceRoot != null) { + needle.source = util.relative(this.sourceRoot, needle.source); + } + if (!this._sources.has(needle.source)) { + return []; + } + needle.source = this._sources.indexOf(needle.source); + + var mappings = []; + + var index = this._findMapping(needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + binarySearch.LEAST_UPPER_BOUND); + if (index >= 0) { + var mapping = this._originalMappings[index]; + + if (aArgs.column === undefined) { + var originalLine = mapping.originalLine; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we found. Since + // mappings are sorted, this is guaranteed to find all mappings for + // the line we found. + while (mapping && mapping.originalLine === originalLine) { + mappings.push({ + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }); + + mapping = this._originalMappings[++index]; + } + } else { + var originalColumn = mapping.originalColumn; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we were searching for. + // Since mappings are sorted, this is guaranteed to find all mappings for + // the line we are searching for. + while (mapping && + mapping.originalLine === line && + mapping.originalColumn == originalColumn) { + mappings.push({ + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }); + + mapping = this._originalMappings[++index]; + } + } + } + + return mappings; + }; + +exports.SourceMapConsumer = SourceMapConsumer; + +/** + * A BasicSourceMapConsumer instance represents a parsed source map which we can + * query for information about the original file positions by giving it a file + * position in the generated source. + * + * The only parameter is the raw source map (either as a JSON string, or + * already parsed to an object). According to the spec, source maps have the + * following attributes: + * + * - version: Which version of the source map spec this map is following. + * - sources: An array of URLs to the original source files. + * - names: An array of identifiers which can be referrenced by individual mappings. + * - sourceRoot: Optional. The URL root from which all sources are relative. + * - sourcesContent: Optional. An array of contents of the original source files. + * - mappings: A string of base64 VLQs which contain the actual mappings. + * - file: Optional. The generated file this source map is associated with. + * + * Here is an example source map, taken from the source map spec[0]: + * + * { + * version : 3, + * file: "out.js", + * sourceRoot : "", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AA,AB;;ABCDE;" + * } + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# + */ +function BasicSourceMapConsumer(aSourceMap) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); + } + + var version = util.getArg(sourceMap, 'version'); + var sources = util.getArg(sourceMap, 'sources'); + // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which + // requires the array) to play nice here. + var names = util.getArg(sourceMap, 'names', []); + var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); + var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); + var mappings = util.getArg(sourceMap, 'mappings'); + var file = util.getArg(sourceMap, 'file', null); + + // Once again, Sass deviates from the spec and supplies the version as a + // string rather than a number, so we use loose equality checking here. + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } + + sources = sources + .map(String) + // Some source maps produce relative source paths like "./foo.js" instead of + // "foo.js". Normalize these first so that future comparisons will succeed. + // See bugzil.la/1090768. + .map(util.normalize) + // Always ensure that absolute sources are internally stored relative to + // the source root, if the source root is absolute. Not doing this would + // be particularly problematic when the source root is a prefix of the + // source (valid, but why??). See github issue #199 and bugzil.la/1188982. + .map(function (source) { + return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) + ? util.relative(sourceRoot, source) + : source; + }); + + // Pass `true` below to allow duplicate names and sources. While source maps + // are intended to be compressed and deduplicated, the TypeScript compiler + // sometimes generates source maps with duplicates in them. See Github issue + // #72 and bugzil.la/889492. + this._names = ArraySet.fromArray(names.map(String), true); + this._sources = ArraySet.fromArray(sources, true); + + this.sourceRoot = sourceRoot; + this.sourcesContent = sourcesContent; + this._mappings = mappings; + this.file = file; +} + +BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); +BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; + +/** + * Create a BasicSourceMapConsumer from a SourceMapGenerator. + * + * @param SourceMapGenerator aSourceMap + * The source map that will be consumed. + * @returns BasicSourceMapConsumer + */ +BasicSourceMapConsumer.fromSourceMap = + function SourceMapConsumer_fromSourceMap(aSourceMap) { + var smc = Object.create(BasicSourceMapConsumer.prototype); + + var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); + var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); + smc.sourceRoot = aSourceMap._sourceRoot; + smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), + smc.sourceRoot); + smc.file = aSourceMap._file; + + // Because we are modifying the entries (by converting string sources and + // names to indices into the sources and names ArraySets), we have to make + // a copy of the entry or else bad things happen. Shared mutable state + // strikes again! See github issue #191. + + var generatedMappings = aSourceMap._mappings.toArray().slice(); + var destGeneratedMappings = smc.__generatedMappings = []; + var destOriginalMappings = smc.__originalMappings = []; + + for (var i = 0, length = generatedMappings.length; i < length; i++) { + var srcMapping = generatedMappings[i]; + var destMapping = new Mapping; + destMapping.generatedLine = srcMapping.generatedLine; + destMapping.generatedColumn = srcMapping.generatedColumn; + + if (srcMapping.source) { + destMapping.source = sources.indexOf(srcMapping.source); + destMapping.originalLine = srcMapping.originalLine; + destMapping.originalColumn = srcMapping.originalColumn; + + if (srcMapping.name) { + destMapping.name = names.indexOf(srcMapping.name); + } + + destOriginalMappings.push(destMapping); + } + + destGeneratedMappings.push(destMapping); + } + + quickSort(smc.__originalMappings, util.compareByOriginalPositions); + + return smc; + }; + +/** + * The version of the source mapping spec that we are consuming. + */ +BasicSourceMapConsumer.prototype._version = 3; + +/** + * The list of original sources. + */ +Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { + get: function () { + return this._sources.toArray().map(function (s) { + return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s; + }, this); + } +}); + +/** + * Provide the JIT with a nice shape / hidden class. + */ +function Mapping() { + this.generatedLine = 0; + this.generatedColumn = 0; + this.source = null; + this.originalLine = null; + this.originalColumn = null; + this.name = null; +} + +/** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ +BasicSourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + var generatedLine = 1; + var previousGeneratedColumn = 0; + var previousOriginalLine = 0; + var previousOriginalColumn = 0; + var previousSource = 0; + var previousName = 0; + var length = aStr.length; + var index = 0; + var cachedSegments = {}; + var temp = {}; + var originalMappings = []; + var generatedMappings = []; + var mapping, str, segment, end, value; + + while (index < length) { + if (aStr.charAt(index) === ';') { + generatedLine++; + index++; + previousGeneratedColumn = 0; + } + else if (aStr.charAt(index) === ',') { + index++; + } + else { + mapping = new Mapping(); + mapping.generatedLine = generatedLine; + + // Because each offset is encoded relative to the previous one, + // many segments often have the same encoding. We can exploit this + // fact by caching the parsed variable length fields of each segment, + // allowing us to avoid a second parse if we encounter the same + // segment again. + for (end = index; end < length; end++) { + if (this._charIsMappingSeparator(aStr, end)) { + break; + } + } + str = aStr.slice(index, end); + + segment = cachedSegments[str]; + if (segment) { + index += str.length; + } else { + segment = []; + while (index < end) { + base64VLQ.decode(aStr, index, temp); + value = temp.value; + index = temp.rest; + segment.push(value); + } + + if (segment.length === 2) { + throw new Error('Found a source, but no line and column'); + } + + if (segment.length === 3) { + throw new Error('Found a source and line, but no column'); + } + + cachedSegments[str] = segment; + } + + // Generated column. + mapping.generatedColumn = previousGeneratedColumn + segment[0]; + previousGeneratedColumn = mapping.generatedColumn; + + if (segment.length > 1) { + // Original source. + mapping.source = previousSource + segment[1]; + previousSource += segment[1]; + + // Original line. + mapping.originalLine = previousOriginalLine + segment[2]; + previousOriginalLine = mapping.originalLine; + // Lines are stored 0-based + mapping.originalLine += 1; + + // Original column. + mapping.originalColumn = previousOriginalColumn + segment[3]; + previousOriginalColumn = mapping.originalColumn; + + if (segment.length > 4) { + // Original name. + mapping.name = previousName + segment[4]; + previousName += segment[4]; + } + } + + generatedMappings.push(mapping); + if (typeof mapping.originalLine === 'number') { + originalMappings.push(mapping); + } + } + } + + quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated); + this.__generatedMappings = generatedMappings; + + quickSort(originalMappings, util.compareByOriginalPositions); + this.__originalMappings = originalMappings; + }; + +/** + * Find the mapping that best matches the hypothetical "needle" mapping that + * we are searching for in the given "haystack" of mappings. + */ +BasicSourceMapConsumer.prototype._findMapping = + function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, + aColumnName, aComparator, aBias) { + // To return the position we are searching for, we must first find the + // mapping for the given position and then return the opposite position it + // points to. Because the mappings are sorted, we can use binary search to + // find the best mapping. + + if (aNeedle[aLineName] <= 0) { + throw new TypeError('Line must be greater than or equal to 1, got ' + + aNeedle[aLineName]); + } + if (aNeedle[aColumnName] < 0) { + throw new TypeError('Column must be greater than or equal to 0, got ' + + aNeedle[aColumnName]); + } + + return binarySearch.search(aNeedle, aMappings, aComparator, aBias); + }; + +/** + * Compute the last column for each generated mapping. The last column is + * inclusive. + */ +BasicSourceMapConsumer.prototype.computeColumnSpans = + function SourceMapConsumer_computeColumnSpans() { + for (var index = 0; index < this._generatedMappings.length; ++index) { + var mapping = this._generatedMappings[index]; + + // Mappings do not contain a field for the last generated columnt. We + // can come up with an optimistic estimate, however, by assuming that + // mappings are contiguous (i.e. given two consecutive mappings, the + // first mapping ends where the second one starts). + if (index + 1 < this._generatedMappings.length) { + var nextMapping = this._generatedMappings[index + 1]; + + if (mapping.generatedLine === nextMapping.generatedLine) { + mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; + continue; + } + } + + // The last mapping for each line spans the entire line. + mapping.lastGeneratedColumn = Infinity; + } + }; + +/** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. + * - column: The column number in the generated source. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. + * - column: The column number in the original source, or null. + * - name: The original identifier, or null. + */ +BasicSourceMapConsumer.prototype.originalPositionFor = + function SourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, 'line'), + generatedColumn: util.getArg(aArgs, 'column') + }; + + var index = this._findMapping( + needle, + this._generatedMappings, + "generatedLine", + "generatedColumn", + util.compareByGeneratedPositionsDeflated, + util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + + if (index >= 0) { + var mapping = this._generatedMappings[index]; + + if (mapping.generatedLine === needle.generatedLine) { + var source = util.getArg(mapping, 'source', null); + if (source !== null) { + source = this._sources.at(source); + if (this.sourceRoot != null) { + source = util.join(this.sourceRoot, source); + } + } + var name = util.getArg(mapping, 'name', null); + if (name !== null) { + name = this._names.at(name); + } + return { + source: source, + line: util.getArg(mapping, 'originalLine', null), + column: util.getArg(mapping, 'originalColumn', null), + name: name + }; + } + } + + return { + source: null, + line: null, + column: null, + name: null + }; + }; + +/** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ +BasicSourceMapConsumer.prototype.hasContentsOfAllSources = + function BasicSourceMapConsumer_hasContentsOfAllSources() { + if (!this.sourcesContent) { + return false; + } + return this.sourcesContent.length >= this._sources.size() && + !this.sourcesContent.some(function (sc) { return sc == null; }); + }; + +/** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ +BasicSourceMapConsumer.prototype.sourceContentFor = + function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + if (!this.sourcesContent) { + return null; + } + + if (this.sourceRoot != null) { + aSource = util.relative(this.sourceRoot, aSource); + } + + if (this._sources.has(aSource)) { + return this.sourcesContent[this._sources.indexOf(aSource)]; + } + + var url; + if (this.sourceRoot != null + && (url = util.urlParse(this.sourceRoot))) { + // XXX: file:// URIs and absolute paths lead to unexpected behavior for + // many users. We can help them out when they expect file:// URIs to + // behave like it would if they were running a local HTTP server. See + // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. + var fileUriAbsPath = aSource.replace(/^file:\/\//, ""); + if (url.scheme == "file" + && this._sources.has(fileUriAbsPath)) { + return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] + } + + if ((!url.path || url.path == "/") + && this._sources.has("/" + aSource)) { + return this.sourcesContent[this._sources.indexOf("/" + aSource)]; + } + } + + // This function is used recursively from + // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we + // don't want to throw if we can't find the source - we just want to + // return null, so we provide a flag to exit gracefully. + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + aSource + '" is not in the SourceMap.'); + } + }; + +/** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. + * - column: The column number in the original source. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. + * - column: The column number in the generated source, or null. + */ +BasicSourceMapConsumer.prototype.generatedPositionFor = + function SourceMapConsumer_generatedPositionFor(aArgs) { + var source = util.getArg(aArgs, 'source'); + if (this.sourceRoot != null) { + source = util.relative(this.sourceRoot, source); + } + if (!this._sources.has(source)) { + return { + line: null, + column: null, + lastColumn: null + }; + } + source = this._sources.indexOf(source); + + var needle = { + source: source, + originalLine: util.getArg(aArgs, 'line'), + originalColumn: util.getArg(aArgs, 'column') + }; + + var index = this._findMapping( + needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + + if (index >= 0) { + var mapping = this._originalMappings[index]; + + if (mapping.source === needle.source) { + return { + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }; + } + } + + return { + line: null, + column: null, + lastColumn: null + }; + }; + +exports.BasicSourceMapConsumer = BasicSourceMapConsumer; + +/** + * An IndexedSourceMapConsumer instance represents a parsed source map which + * we can query for information. It differs from BasicSourceMapConsumer in + * that it takes "indexed" source maps (i.e. ones with a "sections" field) as + * input. + * + * The only parameter is a raw source map (either as a JSON string, or already + * parsed to an object). According to the spec for indexed source maps, they + * have the following attributes: + * + * - version: Which version of the source map spec this map is following. + * - file: Optional. The generated file this source map is associated with. + * - sections: A list of section definitions. + * + * Each value under the "sections" field has two fields: + * - offset: The offset into the original specified at which this section + * begins to apply, defined as an object with a "line" and "column" + * field. + * - map: A source map definition. This source map could also be indexed, + * but doesn't have to be. + * + * Instead of the "map" field, it's also possible to have a "url" field + * specifying a URL to retrieve a source map from, but that's currently + * unsupported. + * + * Here's an example source map, taken from the source map spec[0], but + * modified to omit a section which uses the "url" field. + * + * { + * version : 3, + * file: "app.js", + * sections: [{ + * offset: {line:100, column:10}, + * map: { + * version : 3, + * file: "section.js", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AAAA,E;;ABCDE;" + * } + * }], + * } + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt + */ +function IndexedSourceMapConsumer(aSourceMap) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); + } + + var version = util.getArg(sourceMap, 'version'); + var sections = util.getArg(sourceMap, 'sections'); + + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } + + this._sources = new ArraySet(); + this._names = new ArraySet(); + + var lastOffset = { + line: -1, + column: 0 + }; + this._sections = sections.map(function (s) { + if (s.url) { + // The url field will require support for asynchronicity. + // See https://github.com/mozilla/source-map/issues/16 + throw new Error('Support for url field in sections not implemented.'); + } + var offset = util.getArg(s, 'offset'); + var offsetLine = util.getArg(offset, 'line'); + var offsetColumn = util.getArg(offset, 'column'); + + if (offsetLine < lastOffset.line || + (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { + throw new Error('Section offsets must be ordered and non-overlapping.'); + } + lastOffset = offset; + + return { + generatedOffset: { + // The offset fields are 0-based, but we use 1-based indices when + // encoding/decoding from VLQ. + generatedLine: offsetLine + 1, + generatedColumn: offsetColumn + 1 + }, + consumer: new SourceMapConsumer(util.getArg(s, 'map')) + } + }); +} + +IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); +IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; + +/** + * The version of the source mapping spec that we are consuming. + */ +IndexedSourceMapConsumer.prototype._version = 3; + +/** + * The list of original sources. + */ +Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { + get: function () { + var sources = []; + for (var i = 0; i < this._sections.length; i++) { + for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { + sources.push(this._sections[i].consumer.sources[j]); + } + } + return sources; + } +}); + +/** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. + * - column: The column number in the generated source. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. + * - column: The column number in the original source, or null. + * - name: The original identifier, or null. + */ +IndexedSourceMapConsumer.prototype.originalPositionFor = + function IndexedSourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, 'line'), + generatedColumn: util.getArg(aArgs, 'column') + }; + + // Find the section containing the generated position we're trying to map + // to an original position. + var sectionIndex = binarySearch.search(needle, this._sections, + function(needle, section) { + var cmp = needle.generatedLine - section.generatedOffset.generatedLine; + if (cmp) { + return cmp; + } + + return (needle.generatedColumn - + section.generatedOffset.generatedColumn); + }); + var section = this._sections[sectionIndex]; + + if (!section) { + return { + source: null, + line: null, + column: null, + name: null + }; + } + + return section.consumer.originalPositionFor({ + line: needle.generatedLine - + (section.generatedOffset.generatedLine - 1), + column: needle.generatedColumn - + (section.generatedOffset.generatedLine === needle.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + bias: aArgs.bias + }); + }; + +/** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ +IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = + function IndexedSourceMapConsumer_hasContentsOfAllSources() { + return this._sections.every(function (s) { + return s.consumer.hasContentsOfAllSources(); + }); + }; + +/** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ +IndexedSourceMapConsumer.prototype.sourceContentFor = + function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + + var content = section.consumer.sourceContentFor(aSource, true); + if (content) { + return content; + } + } + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + aSource + '" is not in the SourceMap.'); + } + }; + +/** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. + * - column: The column number in the original source. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. + * - column: The column number in the generated source, or null. + */ +IndexedSourceMapConsumer.prototype.generatedPositionFor = + function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + + // Only consider this section if the requested source is in the list of + // sources of the consumer. + if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) { + continue; + } + var generatedPosition = section.consumer.generatedPositionFor(aArgs); + if (generatedPosition) { + var ret = { + line: generatedPosition.line + + (section.generatedOffset.generatedLine - 1), + column: generatedPosition.column + + (section.generatedOffset.generatedLine === generatedPosition.line + ? section.generatedOffset.generatedColumn - 1 + : 0) + }; + return ret; + } + } + + return { + line: null, + column: null + }; + }; + +/** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ +IndexedSourceMapConsumer.prototype._parseMappings = + function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { + this.__generatedMappings = []; + this.__originalMappings = []; + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + var sectionMappings = section.consumer._generatedMappings; + for (var j = 0; j < sectionMappings.length; j++) { + var mapping = sectionMappings[j]; + + var source = section.consumer._sources.at(mapping.source); + if (section.consumer.sourceRoot !== null) { + source = util.join(section.consumer.sourceRoot, source); + } + this._sources.add(source); + source = this._sources.indexOf(source); + + var name = section.consumer._names.at(mapping.name); + this._names.add(name); + name = this._names.indexOf(name); + + // The mappings coming from the consumer for the section have + // generated positions relative to the start of the section, so we + // need to offset them to be relative to the start of the concatenated + // generated file. + var adjustedMapping = { + source: source, + generatedLine: mapping.generatedLine + + (section.generatedOffset.generatedLine - 1), + generatedColumn: mapping.generatedColumn + + (section.generatedOffset.generatedLine === mapping.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: name + }; + + this.__generatedMappings.push(adjustedMapping); + if (typeof adjustedMapping.originalLine === 'number') { + this.__originalMappings.push(adjustedMapping); + } + } + } + + quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); + quickSort(this.__originalMappings, util.compareByOriginalPositions); + }; + +exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; + + +/***/ }), +/* 151 */ +/***/ (function(module, exports, __webpack_require__) { + +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var SourceMapGenerator = __webpack_require__(77).SourceMapGenerator; +var util = __webpack_require__(10); + +// Matches a Windows-style `\r\n` newline or a `\n` newline used by all other +// operating systems these days (capturing the result). +var REGEX_NEWLINE = /(\r?\n)/; + +// Newline character code for charCodeAt() comparisons +var NEWLINE_CODE = 10; + +// Private symbol for identifying `SourceNode`s when multiple versions of +// the source-map library are loaded. This MUST NOT CHANGE across +// versions! +var isSourceNode = "$$$isSourceNode$$$"; + +/** + * SourceNodes provide a way to abstract over interpolating/concatenating + * snippets of generated JavaScript source code while maintaining the line and + * column information associated with the original source code. + * + * @param aLine The original line number. + * @param aColumn The original column number. + * @param aSource The original source's filename. + * @param aChunks Optional. An array of strings which are snippets of + * generated JS, or other SourceNodes. + * @param aName The original identifier. + */ +function SourceNode(aLine, aColumn, aSource, aChunks, aName) { + this.children = []; + this.sourceContents = {}; + this.line = aLine == null ? null : aLine; + this.column = aColumn == null ? null : aColumn; + this.source = aSource == null ? null : aSource; + this.name = aName == null ? null : aName; + this[isSourceNode] = true; + if (aChunks != null) this.add(aChunks); +} + +/** + * Creates a SourceNode from generated code and a SourceMapConsumer. + * + * @param aGeneratedCode The generated code + * @param aSourceMapConsumer The SourceMap for the generated code + * @param aRelativePath Optional. The path that relative sources in the + * SourceMapConsumer should be relative to. + */ +SourceNode.fromStringWithSourceMap = + function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { + // The SourceNode we want to fill with the generated code + // and the SourceMap + var node = new SourceNode(); + + // All even indices of this array are one line of the generated code, + // while all odd indices are the newlines between two adjacent lines + // (since `REGEX_NEWLINE` captures its match). + // Processed fragments are removed from this array, by calling `shiftNextLine`. + var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); + var shiftNextLine = function() { + var lineContents = remainingLines.shift(); + // The last line of a file might not have a newline. + var newLine = remainingLines.shift() || ""; + return lineContents + newLine; + }; + + // We need to remember the position of "remainingLines" + var lastGeneratedLine = 1, lastGeneratedColumn = 0; + + // The generate SourceNodes we need a code range. + // To extract it current and last mapping is used. + // Here we store the last mapping. + var lastMapping = null; + + aSourceMapConsumer.eachMapping(function (mapping) { + if (lastMapping !== null) { + // We add the code from "lastMapping" to "mapping": + // First check if there is a new line in between. + if (lastGeneratedLine < mapping.generatedLine) { + // Associate first line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + lastGeneratedLine++; + lastGeneratedColumn = 0; + // The remaining code is added without mapping + } else { + // There is no new line in between. + // Associate the code between "lastGeneratedColumn" and + // "mapping.generatedColumn" with "lastMapping" + var nextLine = remainingLines[0]; + var code = nextLine.substr(0, mapping.generatedColumn - + lastGeneratedColumn); + remainingLines[0] = nextLine.substr(mapping.generatedColumn - + lastGeneratedColumn); + lastGeneratedColumn = mapping.generatedColumn; + addMappingWithCode(lastMapping, code); + // No more remaining code, continue + lastMapping = mapping; + return; + } + } + // We add the generated code until the first mapping + // to the SourceNode without any mapping. + // Each line is added as separate string. + while (lastGeneratedLine < mapping.generatedLine) { + node.add(shiftNextLine()); + lastGeneratedLine++; + } + if (lastGeneratedColumn < mapping.generatedColumn) { + var nextLine = remainingLines[0]; + node.add(nextLine.substr(0, mapping.generatedColumn)); + remainingLines[0] = nextLine.substr(mapping.generatedColumn); + lastGeneratedColumn = mapping.generatedColumn; + } + lastMapping = mapping; + }, this); + // We have processed all mappings. + if (remainingLines.length > 0) { + if (lastMapping) { + // Associate the remaining code in the current line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + } + // and add the remaining lines without any mapping + node.add(remainingLines.join("")); + } + + // Copy sourcesContent into SourceNode + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aRelativePath != null) { + sourceFile = util.join(aRelativePath, sourceFile); + } + node.setSourceContent(sourceFile, content); + } + }); + + return node; + + function addMappingWithCode(mapping, code) { + if (mapping === null || mapping.source === undefined) { + node.add(code); + } else { + var source = aRelativePath + ? util.join(aRelativePath, mapping.source) + : mapping.source; + node.add(new SourceNode(mapping.originalLine, + mapping.originalColumn, + source, + code, + mapping.name)); + } + } + }; + +/** + * Add a chunk of generated JS to this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ +SourceNode.prototype.add = function SourceNode_add(aChunk) { + if (Array.isArray(aChunk)) { + aChunk.forEach(function (chunk) { + this.add(chunk); + }, this); + } + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + if (aChunk) { + this.children.push(aChunk); + } + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; +}; + +/** + * Add a chunk of generated JS to the beginning of this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ +SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { + if (Array.isArray(aChunk)) { + for (var i = aChunk.length-1; i >= 0; i--) { + this.prepend(aChunk[i]); + } + } + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + this.children.unshift(aChunk); + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; +}; + +/** + * Walk over the tree of JS snippets in this node and its children. The + * walking function is called once for each snippet of JS and is passed that + * snippet and the its original associated source's line/column location. + * + * @param aFn The traversal function. + */ +SourceNode.prototype.walk = function SourceNode_walk(aFn) { + var chunk; + for (var i = 0, len = this.children.length; i < len; i++) { + chunk = this.children[i]; + if (chunk[isSourceNode]) { + chunk.walk(aFn); + } + else { + if (chunk !== '') { + aFn(chunk, { source: this.source, + line: this.line, + column: this.column, + name: this.name }); + } + } + } +}; + +/** + * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between + * each of `this.children`. + * + * @param aSep The separator. + */ +SourceNode.prototype.join = function SourceNode_join(aSep) { + var newChildren; + var i; + var len = this.children.length; + if (len > 0) { + newChildren = []; + for (i = 0; i < len-1; i++) { + newChildren.push(this.children[i]); + newChildren.push(aSep); + } + newChildren.push(this.children[i]); + this.children = newChildren; + } + return this; +}; + +/** + * Call String.prototype.replace on the very right-most source snippet. Useful + * for trimming whitespace from the end of a source node, etc. + * + * @param aPattern The pattern to replace. + * @param aReplacement The thing to replace the pattern with. + */ +SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { + var lastChild = this.children[this.children.length - 1]; + if (lastChild[isSourceNode]) { + lastChild.replaceRight(aPattern, aReplacement); + } + else if (typeof lastChild === 'string') { + this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); + } + else { + this.children.push(''.replace(aPattern, aReplacement)); + } + return this; +}; + +/** + * Set the source content for a source file. This will be added to the SourceMapGenerator + * in the sourcesContent field. + * + * @param aSourceFile The filename of the source file + * @param aSourceContent The content of the source file + */ +SourceNode.prototype.setSourceContent = + function SourceNode_setSourceContent(aSourceFile, aSourceContent) { + this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; + }; + +/** + * Walk over the tree of SourceNodes. The walking function is called for each + * source file content and is passed the filename and source content. + * + * @param aFn The traversal function. + */ +SourceNode.prototype.walkSourceContents = + function SourceNode_walkSourceContents(aFn) { + for (var i = 0, len = this.children.length; i < len; i++) { + if (this.children[i][isSourceNode]) { + this.children[i].walkSourceContents(aFn); + } + } + + var sources = Object.keys(this.sourceContents); + for (var i = 0, len = sources.length; i < len; i++) { + aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); + } + }; + +/** + * Return the string representation of this source node. Walks over the tree + * and concatenates all the various snippets together to one string. + */ +SourceNode.prototype.toString = function SourceNode_toString() { + var str = ""; + this.walk(function (chunk) { + str += chunk; + }); + return str; +}; + +/** + * Returns the string representation of this source node along with a source + * map. + */ +SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { + var generated = { + code: "", + line: 1, + column: 0 + }; + var map = new SourceMapGenerator(aArgs); + var sourceMappingActive = false; + var lastOriginalSource = null; + var lastOriginalLine = null; + var lastOriginalColumn = null; + var lastOriginalName = null; + this.walk(function (chunk, original) { + generated.code += chunk; + if (original.source !== null + && original.line !== null + && original.column !== null) { + if(lastOriginalSource !== original.source + || lastOriginalLine !== original.line + || lastOriginalColumn !== original.column + || lastOriginalName !== original.name) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + lastOriginalSource = original.source; + lastOriginalLine = original.line; + lastOriginalColumn = original.column; + lastOriginalName = original.name; + sourceMappingActive = true; + } else if (sourceMappingActive) { + map.addMapping({ + generated: { + line: generated.line, + column: generated.column + } + }); + lastOriginalSource = null; + sourceMappingActive = false; + } + for (var idx = 0, length = chunk.length; idx < length; idx++) { + if (chunk.charCodeAt(idx) === NEWLINE_CODE) { + generated.line++; + generated.column = 0; + // Mappings end at eol + if (idx + 1 === length) { + lastOriginalSource = null; + sourceMappingActive = false; + } else if (sourceMappingActive) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + } else { + generated.column++; + } + } + }); + this.walkSourceContents(function (sourceFile, sourceContent) { + map.setSourceContent(sourceFile, sourceContent); + }); + + return { code: generated.code, map: map }; +}; + +exports.SourceNode = SourceNode; + + +/***/ }), +/* 152 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var ansiRegex = __webpack_require__(30)(); + +module.exports = function (str) { + return typeof str === 'string' ? str.replace(ansiRegex, '') : str; +}; + + +/***/ }), +/* 153 */ +/***/ (function(module, exports) { + +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor; + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor; + var TempCtor = function () {}; + TempCtor.prototype = superCtor.prototype; + ctor.prototype = new TempCtor(); + ctor.prototype.constructor = ctor; + }; +} + + +/***/ }), +/* 154 */ +/***/ (function(module, exports) { + +module.exports = function isBuffer(arg) { + return arg && typeof arg === 'object' + && typeof arg.copy === 'function' + && typeof arg.fill === 'function' + && typeof arg.readUInt8 === 'function'; +}; + +/***/ }), +/* 155 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +var formatRegExp = /%[sdj%]/g; +exports.format = function(f) { + if (!isString(f)) { + var objects = []; + for (var i = 0; i < arguments.length; i++) { + objects.push(inspect(arguments[i])); + } + return objects.join(' '); + } + + var i = 1; + var args = arguments; + var len = args.length; + var str = String(f).replace(formatRegExp, function(x) { + if (x === '%%') return '%'; + if (i >= len) return x; + switch (x) { + case '%s': return String(args[i++]); + case '%d': return Number(args[i++]); + case '%j': + try { + return JSON.stringify(args[i++]); + } catch (_) { + return '[Circular]'; + } + default: + return x; + } + }); + for (var x = args[i]; i < len; x = args[++i]) { + if (isNull(x) || !isObject(x)) { + str += ' ' + x; + } else { + str += ' ' + inspect(x); + } + } + return str; +}; + + +// Mark that a method should not be used. +// Returns a modified function which warns once by default. +// If --no-deprecation is set, then it is a no-op. +exports.deprecate = function(fn, msg) { + // Allow for deprecating things in the process of starting up. + if (isUndefined(global.process)) { + return function() { + return exports.deprecate(fn, msg).apply(this, arguments); + }; + } + + if (process.noDeprecation === true) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (process.throwDeprecation) { + throw new Error(msg); + } else if (process.traceDeprecation) { + console.trace(msg); + } else { + console.error(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +}; + + +var debugs = {}; +var debugEnviron; +exports.debuglog = function(set) { + if (isUndefined(debugEnviron)) + debugEnviron = process.env.NODE_DEBUG || ''; + set = set.toUpperCase(); + if (!debugs[set]) { + if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { + var pid = process.pid; + debugs[set] = function() { + var msg = exports.format.apply(exports, arguments); + console.error('%s %d: %s', set, pid, msg); + }; + } else { + debugs[set] = function() {}; + } + } + return debugs[set]; +}; + + +/** + * Echos the value of a value. Trys to print the value out + * in the best way possible given the different types. + * + * @param {Object} obj The object to print out. + * @param {Object} opts Optional options object that alters the output. + */ +/* legacy: obj, showHidden, depth, colors*/ +function inspect(obj, opts) { + // default options + var ctx = { + seen: [], + stylize: stylizeNoColor + }; + // legacy... + if (arguments.length >= 3) ctx.depth = arguments[2]; + if (arguments.length >= 4) ctx.colors = arguments[3]; + if (isBoolean(opts)) { + // legacy... + ctx.showHidden = opts; + } else if (opts) { + // got an "options" object + exports._extend(ctx, opts); + } + // set default options + if (isUndefined(ctx.showHidden)) ctx.showHidden = false; + if (isUndefined(ctx.depth)) ctx.depth = 2; + if (isUndefined(ctx.colors)) ctx.colors = false; + if (isUndefined(ctx.customInspect)) ctx.customInspect = true; + if (ctx.colors) ctx.stylize = stylizeWithColor; + return formatValue(ctx, obj, ctx.depth); +} +exports.inspect = inspect; + + +// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics +inspect.colors = { + 'bold' : [1, 22], + 'italic' : [3, 23], + 'underline' : [4, 24], + 'inverse' : [7, 27], + 'white' : [37, 39], + 'grey' : [90, 39], + 'black' : [30, 39], + 'blue' : [34, 39], + 'cyan' : [36, 39], + 'green' : [32, 39], + 'magenta' : [35, 39], + 'red' : [31, 39], + 'yellow' : [33, 39] +}; + +// Don't use 'blue' not visible on cmd.exe +inspect.styles = { + 'special': 'cyan', + 'number': 'yellow', + 'boolean': 'yellow', + 'undefined': 'grey', + 'null': 'bold', + 'string': 'green', + 'date': 'magenta', + // "name": intentionally not styling + 'regexp': 'red' +}; + + +function stylizeWithColor(str, styleType) { + var style = inspect.styles[styleType]; + + if (style) { + return '\u001b[' + inspect.colors[style][0] + 'm' + str + + '\u001b[' + inspect.colors[style][1] + 'm'; + } else { + return str; + } +} + + +function stylizeNoColor(str, styleType) { + return str; +} + + +function arrayToHash(array) { + var hash = {}; + + array.forEach(function(val, idx) { + hash[val] = true; + }); + + return hash; +} + + +function formatValue(ctx, value, recurseTimes) { + // Provide a hook for user-specified inspect functions. + // Check that value is an object with an inspect function on it + if (ctx.customInspect && + value && + isFunction(value.inspect) && + // Filter out the util module, it's inspect function is special + value.inspect !== exports.inspect && + // Also filter out any prototype objects using the circular check. + !(value.constructor && value.constructor.prototype === value)) { + var ret = value.inspect(recurseTimes, ctx); + if (!isString(ret)) { + ret = formatValue(ctx, ret, recurseTimes); + } + return ret; + } + + // Primitive types cannot have properties + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; + } + + // Look up the keys of the object. + var keys = Object.keys(value); + var visibleKeys = arrayToHash(keys); + + if (ctx.showHidden) { + keys = Object.getOwnPropertyNames(value); + } + + // IE doesn't make error fields non-enumerable + // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx + if (isError(value) + && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { + return formatError(value); + } + + // Some type of object without properties can be shortcutted. + if (keys.length === 0) { + if (isFunction(value)) { + var name = value.name ? ': ' + value.name : ''; + return ctx.stylize('[Function' + name + ']', 'special'); + } + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toString.call(value), 'date'); + } + if (isError(value)) { + return formatError(value); + } + } + + var base = '', array = false, braces = ['{', '}']; + + // Make Array say that they are Array + if (isArray(value)) { + array = true; + braces = ['[', ']']; + } + + // Make functions say that they are functions + if (isFunction(value)) { + var n = value.name ? ': ' + value.name : ''; + base = ' [Function' + n + ']'; + } + + // Make RegExps say that they are RegExps + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); + } + + // Make dates with properties first say the date + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); + } + + // Make error with message first say the error + if (isError(value)) { + base = ' ' + formatError(value); + } + + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); + } + } + + ctx.seen.push(value); + + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } + + ctx.seen.pop(); + + return reduceToSingleString(output, base, braces); +} + + +function formatPrimitive(ctx, value) { + if (isUndefined(value)) + return ctx.stylize('undefined', 'undefined'); + if (isString(value)) { + var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return ctx.stylize(simple, 'string'); + } + if (isNumber(value)) + return ctx.stylize('' + value, 'number'); + if (isBoolean(value)) + return ctx.stylize('' + value, 'boolean'); + // For some reason typeof null is "object", so special case here. + if (isNull(value)) + return ctx.stylize('null', 'null'); +} + + +function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; +} + + +function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (hasOwnProperty(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + String(i), true)); + } else { + output.push(''); + } + } + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + key, true)); + } + }); + return output; +} + + +function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str, desc; + desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; + if (desc.get) { + if (desc.set) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } + } else { + if (desc.set) { + str = ctx.stylize('[Setter]', 'special'); + } + } + if (!hasOwnProperty(visibleKeys, key)) { + name = '[' + key + ']'; + } + if (!str) { + if (ctx.seen.indexOf(desc.value) < 0) { + if (isNull(recurseTimes)) { + str = formatValue(ctx, desc.value, null); + } else { + str = formatValue(ctx, desc.value, recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } + } + if (isUndefined(name)) { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } + } + + return name + ': ' + str; +} + + +function reduceToSingleString(output, base, braces) { + var numLinesEst = 0; + var length = output.reduce(function(prev, cur) { + numLinesEst++; + if (cur.indexOf('\n') >= 0) numLinesEst++; + return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; + }, 0); + + if (length > 60) { + return braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + } + + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; +} + + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. +function isArray(ar) { + return Array.isArray(ar); +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return isObject(re) && objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return isObject(d) && objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return isObject(e) && + (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = __webpack_require__(154); + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + + +function pad(n) { + return n < 10 ? '0' + n.toString(10) : n.toString(10); +} + + +var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', + 'Oct', 'Nov', 'Dec']; + +// 26 Feb 16:19:34 +function timestamp() { + var d = new Date(); + var time = [pad(d.getHours()), + pad(d.getMinutes()), + pad(d.getSeconds())].join(':'); + return [d.getDate(), months[d.getMonth()], time].join(' '); +} + + +// log is just a thin wrapper to console.log that prepends a timestamp +exports.log = function() { + console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); +}; + + +/** + * Inherit the prototype methods from one constructor into another. + * + * The Function.prototype.inherits from lang.js rewritten as a standalone + * function (not on Function.prototype). NOTE: If this file is to be loaded + * during bootstrapping this function needs to be rewritten using some native + * functions as prototype setup using normal JavaScript does not work as + * expected during bootstrapping (see mirror.js in r114903). + * + * @param {function} ctor Constructor function which needs to inherit the + * prototype. + * @param {function} superCtor Constructor function to inherit prototype from. + */ +exports.inherits = __webpack_require__(153); + +exports._extend = function(origin, add) { + // Don't do anything if add isn't an object + if (!add || !isObject(add)) return origin; + + var keys = Object.keys(add); + var i = keys.length; + while (i--) { + origin[keys[i]] = add[keys[i]]; + } + return origin; +}; + +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(80), __webpack_require__(13))); + +/***/ }), +/* 156 */ +/***/ (function(module, exports) { + +module.exports = function(module) { + if(!module.webpackPolyfill) { + module.deprecate = function() {}; + module.paths = []; + // module.parent = undefined by default + if(!module.children) module.children = []; + Object.defineProperty(module, "loaded", { + enumerable: true, + get: function() { + return module.l; + } + }); + Object.defineProperty(module, "id", { + enumerable: true, + get: function() { + return module.i; + } + }); + module.webpackPolyfill = 1; + } + return module; +}; + + +/***/ }), +/* 157 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const createError = __webpack_require__(86); + +function parseSelector(selector) { + const selectorParser = __webpack_require__(84); + let result; + selectorParser(result_ => { + result = result_; + }).process(selector); + return addTypePrefix(result, "selector-"); +} + +function parseValueNodes(nodes) { + let parenGroup = { + open: null, + close: null, + groups: [], + type: "paren_group" + }; + const parenGroupStack = [parenGroup]; + const rootParenGroup = parenGroup; + let commaGroup = { + groups: [], + type: "comma_group" + }; + const commaGroupStack = [commaGroup]; + + for (let i = 0; i < nodes.length; ++i) { + if (nodes[i].type === "paren" && nodes[i].value === "(") { + parenGroup = { + open: nodes[i], + close: null, + groups: [], + type: "paren_group" + }; + parenGroupStack.push(parenGroup); + + commaGroup = { + groups: [], + type: "comma_group" + }; + commaGroupStack.push(commaGroup); + } else if (nodes[i].type === "paren" && nodes[i].value === ")") { + if (commaGroup.groups.length) { + parenGroup.groups.push(commaGroup); + } + parenGroup.close = nodes[i]; + + if (commaGroupStack.length === 1) { + throw new Error("Unbalanced parenthesis"); + } + + commaGroupStack.pop(); + commaGroup = commaGroupStack[commaGroupStack.length - 1]; + commaGroup.groups.push(parenGroup); + + parenGroupStack.pop(); + parenGroup = parenGroupStack[parenGroupStack.length - 1]; + } else if (nodes[i].type === "comma") { + parenGroup.groups.push(commaGroup); + commaGroup = { + groups: [], + type: "comma_group" + }; + commaGroupStack[commaGroupStack.length - 1] = commaGroup; + } else { + commaGroup.groups.push(nodes[i]); + } + } + if (commaGroup.groups.length > 0) { + parenGroup.groups.push(commaGroup); + } + return rootParenGroup; +} + +function flattenGroups(node) { + if ( + node.type === "paren_group" && + !node.open && + !node.close && + node.groups.length === 1 + ) { + return flattenGroups(node.groups[0]); + } + + if (node.type === "comma_group" && node.groups.length === 1) { + return flattenGroups(node.groups[0]); + } + + if (node.type === "paren_group" || node.type === "comma_group") { + return Object.assign({}, node, { groups: node.groups.map(flattenGroups) }); + } + + return node; +} + +function addTypePrefix(node, prefix) { + if (node && typeof node === "object") { + delete node.parent; + for (const key in node) { + addTypePrefix(node[key], prefix); + if (key === "type" && typeof node[key] === "string") { + if (!node[key].startsWith(prefix)) { + node[key] = prefix + node[key]; + } + } + } + } + return node; +} + +function addMissingType(node) { + if (node && typeof node === "object") { + delete node.parent; + for (const key in node) { + addMissingType(node[key]); + } + if (!Array.isArray(node) && node.value && !node.type) { + node.type = "unknown"; + } + } + return node; +} + +function parseNestedValue(node) { + if (node && typeof node === "object") { + delete node.parent; + for (const key in node) { + parseNestedValue(node[key]); + if (key === "nodes") { + node.group = flattenGroups(parseValueNodes(node[key])); + delete node[key]; + } + } + } + return node; +} + +function parseValue(value) { + const valueParser = __webpack_require__(85); + const result = valueParser(value, { loose: true }).parse(); + const parsedResult = parseNestedValue(result); + return addTypePrefix(parsedResult, "value-"); +} + +function parseMediaQuery(value) { + const mediaParser = __webpack_require__(82).default; + const result = addMissingType(mediaParser(value)); + return addTypePrefix(result, "media-"); +} + +function parseNestedCSS(node) { + if (node && typeof node === "object") { + delete node.parent; + for (const key in node) { + parseNestedCSS(node[key]); + } + if (typeof node.selector === "string") { + const selector = node.raws.selector + ? node.raws.selector.raw + : node.selector; + + try { + node.selector = parseSelector(selector); + } catch (e) { + // Fail silently. It's better to print it as is than to try and parse it + node.selector = selector; + } + } + if (node.type && typeof node.value === "string") { + try { + node.value = parseValue(node.value); + } catch (e) { + const line = +(e.toString().match(/line: ([0-9]+)/) || [1, 1])[1]; + const column = +(e.toString().match(/column ([0-9]+)/) || [0, 0])[1]; + throw createError( + "(postcss-values-parser) " + e.toString(), + node.source.start.line + line - 1, + node.source.start.column + column + node.prop.length + ); + } + } + if (node.type === "css-atrule" && typeof node.params === "string") { + node.params = parseMediaQuery(node.params); + } + } + return node; +} + +function parseWithParser(parser, text) { + let result; + try { + result = parser.parse(text); + } catch (e) { + if (typeof e.line !== "number") { + throw e; + } + throw createError("(postcss) " + e.name + " " + e.reason, e.line, e.column); + } + const prefixedResult = addTypePrefix(result, "css-"); + const parsedResult = parseNestedCSS(prefixedResult); + return parsedResult; +} + +function requireParser(isSCSS) { + if (isSCSS) { + return __webpack_require__(83); + } else { + return __webpack_require__(81); + } +} + +function parse(text) { + const isLikelySCSS = !!text.match(/(\w\s*: [^}:]+|#){|\@import url/); + try { + return parseWithParser(requireParser(isLikelySCSS), text); + } catch (e) { + try { + return parseWithParser(requireParser(!isLikelySCSS), text); + } catch (e2) { + throw e; + } + } +} + +module.exports = parse; + + +/***/ }), +/* 158 */ +/***/ (function(module, exports) { + +/* (ignored) */ + +/***/ }), +/* 159 */ +/***/ (function(module, exports) { + +/* (ignored) */ + +/***/ }) +/******/ ]); +}); + +var parserPostcss$1 = unwrapExports(parserPostcss); + +return parserPostcss$1; + +}()); diff --git a/docs/parser-typescript.js b/docs/parser-typescript.js new file mode 100644 index 00000000..1dbbc38a --- /dev/null +++ b/docs/parser-typescript.js @@ -0,0 +1,2241 @@ +var typescript = (function (fs,path,os,crypto,module$1) { +fs = 'default' in fs ? fs['default'] : fs; +path = 'default' in path ? path['default'] : path; +os = 'default' in os ? os['default'] : os; +crypto = 'default' in crypto ? crypto['default'] : crypto; +module$1 = 'default' in module$1 ? module$1['default'] : module$1; + +var global$1 = typeof global !== "undefined" ? global : + typeof self !== "undefined" ? self : + typeof window !== "undefined" ? window : {}; + +// shim for using process in browser +// based off https://github.com/defunctzombie/node-process/blob/master/browser.js + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +var cachedSetTimeout = defaultSetTimout; +var cachedClearTimeout = defaultClearTimeout; +if (typeof global$1.setTimeout === 'function') { + cachedSetTimeout = setTimeout; +} +if (typeof global$1.clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; +} + +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} +function nextTick(fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +} +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +var title = 'browser'; +var platform = 'browser'; +var browser = true; +var env = {}; +var argv = []; +var version = ''; // empty string to avoid regexp issues +var versions = {}; +var release = {}; +var config = {}; + +function noop() {} + +var on = noop; +var addListener = noop; +var once = noop; +var off = noop; +var removeListener = noop; +var removeAllListeners = noop; +var emit = noop; + +function binding(name) { + throw new Error('process.binding is not supported'); +} + +function cwd () { return '/' } +function chdir (dir) { + throw new Error('process.chdir is not supported'); +} +function umask() { return 0; } + +// from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js +var performance$1 = global$1.performance || {}; +var performanceNow = + performance$1.now || + performance$1.mozNow || + performance$1.msNow || + performance$1.oNow || + performance$1.webkitNow || + function(){ return (new Date()).getTime() }; + +// generate timestamp or delta +// see http://nodejs.org/api/process.html#process_process_hrtime +function hrtime(previousTimestamp){ + var clocktime = performanceNow.call(performance$1)*1e-3; + var seconds = Math.floor(clocktime); + var nanoseconds = Math.floor((clocktime%1)*1e9); + if (previousTimestamp) { + seconds = seconds - previousTimestamp[0]; + nanoseconds = nanoseconds - previousTimestamp[1]; + if (nanoseconds<0) { + seconds--; + nanoseconds += 1e9; + } + } + return [seconds,nanoseconds] +} + +var startTime = new Date(); +function uptime() { + var currentTime = new Date(); + var dif = currentTime - startTime; + return dif / 1000; +} + +var process = { + nextTick: nextTick, + title: title, + browser: browser, + env: env, + argv: argv, + version: version, + versions: versions, + on: on, + addListener: addListener, + once: once, + off: off, + removeListener: removeListener, + removeAllListeners: removeAllListeners, + emit: emit, + binding: binding, + cwd: cwd, + chdir: chdir, + umask: umask, + hrtime: hrtime, + platform: platform, + release: release, + config: config, + uptime: uptime +}; + +var __dirname = '/Users/vjeux/random/prettier/dist/src'; + +var __filename = '/Users/vjeux/random/prettier/dist/src/parser-typescript.js'; + +var browser$1 = true; + +var lookup = []; +var revLookup = []; +var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array; +var inited = false; +function init () { + inited = true; + var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + for (var i = 0, len = code.length; i < len; ++i) { + lookup[i] = code[i]; + revLookup[code.charCodeAt(i)] = i; + } + + revLookup['-'.charCodeAt(0)] = 62; + revLookup['_'.charCodeAt(0)] = 63; +} + +function toByteArray (b64) { + if (!inited) { + init(); + } + var i, j, l, tmp, placeHolders, arr; + var len = b64.length; + + if (len % 4 > 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } + + // the number of equal signs (place holders) + // if there are two placeholders, than the two characters before it + // represent one byte + // if there is only one, then the three characters before it represent 2 bytes + // this is just a cheap hack to not do indexOf twice + placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0; + + // base64 is 4/3 + up to two characters of the original data + arr = new Arr(len * 3 / 4 - placeHolders); + + // if there are placeholders, only get up to the last complete 4 chars + l = placeHolders > 0 ? len - 4 : len; + + var L = 0; + + for (i = 0, j = 0; i < l; i += 4, j += 3) { + tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]; + arr[L++] = (tmp >> 16) & 0xFF; + arr[L++] = (tmp >> 8) & 0xFF; + arr[L++] = tmp & 0xFF; + } + + if (placeHolders === 2) { + tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4); + arr[L++] = tmp & 0xFF; + } else if (placeHolders === 1) { + tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2); + arr[L++] = (tmp >> 8) & 0xFF; + arr[L++] = tmp & 0xFF; + } + + return arr +} + +function tripletToBase64 (num) { + return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F] +} + +function encodeChunk (uint8, start, end) { + var tmp; + var output = []; + for (var i = start; i < end; i += 3) { + tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]); + output.push(tripletToBase64(tmp)); + } + return output.join('') +} + +function fromByteArray (uint8) { + if (!inited) { + init(); + } + var tmp; + var len = uint8.length; + var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes + var output = ''; + var parts = []; + var maxChunkLength = 16383; // must be multiple of 3 + + // go through the array every three bytes, we'll deal with trailing stuff later + for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { + parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))); + } + + // pad the end with zeros, but make sure to not forget the extra bytes + if (extraBytes === 1) { + tmp = uint8[len - 1]; + output += lookup[tmp >> 2]; + output += lookup[(tmp << 4) & 0x3F]; + output += '=='; + } else if (extraBytes === 2) { + tmp = (uint8[len - 2] << 8) + (uint8[len - 1]); + output += lookup[tmp >> 10]; + output += lookup[(tmp >> 4) & 0x3F]; + output += lookup[(tmp << 2) & 0x3F]; + output += '='; + } + + parts.push(output); + + return parts.join('') +} + +function read (buffer, offset, isLE, mLen, nBytes) { + var e, m; + var eLen = nBytes * 8 - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var nBits = -7; + var i = isLE ? (nBytes - 1) : 0; + var d = isLE ? -1 : 1; + var s = buffer[offset + i]; + + i += d; + + e = s & ((1 << (-nBits)) - 1); + s >>= (-nBits); + nBits += eLen; + for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} + + m = e & ((1 << (-nBits)) - 1); + e >>= (-nBits); + nBits += mLen; + for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} + + if (e === 0) { + e = 1 - eBias; + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity) + } else { + m = m + Math.pow(2, mLen); + e = e - eBias; + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen) +} + +function write (buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c; + var eLen = nBytes * 8 - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0); + var i = isLE ? 0 : (nBytes - 1); + var d = isLE ? 1 : -1; + var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0; + + value = Math.abs(value); + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0; + e = eMax; + } else { + e = Math.floor(Math.log(value) / Math.LN2); + if (value * (c = Math.pow(2, -e)) < 1) { + e--; + c *= 2; + } + if (e + eBias >= 1) { + value += rt / c; + } else { + value += rt * Math.pow(2, 1 - eBias); + } + if (value * c >= 2) { + e++; + c /= 2; + } + + if (e + eBias >= eMax) { + m = 0; + e = eMax; + } else if (e + eBias >= 1) { + m = (value * c - 1) * Math.pow(2, mLen); + e = e + eBias; + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); + e = 0; + } + } + + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} + + e = (e << mLen) | m; + eLen += mLen; + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + + buffer[offset + i - d] |= s * 128; +} + +var toString = {}.toString; + +var isArray = Array.isArray || function (arr) { + return toString.call(arr) == '[object Array]'; +}; + +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +/* eslint-disable no-proto */ + + +var INSPECT_MAX_BYTES = 50; + +/** + * If `Buffer.TYPED_ARRAY_SUPPORT`: + * === true Use Uint8Array implementation (fastest) + * === false Use Object implementation (most compatible, even IE6) + * + * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, + * Opera 11.6+, iOS 4.2+. + * + * Due to various browser bugs, sometimes the Object implementation will be used even + * when the browser supports typed arrays. + * + * Note: + * + * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, + * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. + * + * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. + * + * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of + * incorrect length in some situations. + + * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they + * get the Object implementation, which is slower but behaves correctly. + */ +Buffer.TYPED_ARRAY_SUPPORT = global$1.TYPED_ARRAY_SUPPORT !== undefined + ? global$1.TYPED_ARRAY_SUPPORT + : true; + +function kMaxLength () { + return Buffer.TYPED_ARRAY_SUPPORT + ? 0x7fffffff + : 0x3fffffff +} + +function createBuffer (that, length) { + if (kMaxLength() < length) { + throw new RangeError('Invalid typed array length') + } + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = new Uint8Array(length); + that.__proto__ = Buffer.prototype; + } else { + // Fallback: Return an object instance of the Buffer class + if (that === null) { + that = new Buffer(length); + } + that.length = length; + } + + return that +} + +/** + * The Buffer constructor returns instances of `Uint8Array` that have their + * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of + * `Uint8Array`, so the returned instances will have all the node `Buffer` methods + * and the `Uint8Array` methods. Square bracket notation works as expected -- it + * returns a single octet. + * + * The `Uint8Array` prototype remains unmodified. + */ + +function Buffer (arg, encodingOrOffset, length) { + if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) { + return new Buffer(arg, encodingOrOffset, length) + } + + // Common case. + if (typeof arg === 'number') { + if (typeof encodingOrOffset === 'string') { + throw new Error( + 'If encoding is specified then the first argument must be a string' + ) + } + return allocUnsafe(this, arg) + } + return from(this, arg, encodingOrOffset, length) +} + +Buffer.poolSize = 8192; // not used by this implementation + +// TODO: Legacy, not needed anymore. Remove in next major version. +Buffer._augment = function (arr) { + arr.__proto__ = Buffer.prototype; + return arr +}; + +function from (that, value, encodingOrOffset, length) { + if (typeof value === 'number') { + throw new TypeError('"value" argument must not be a number') + } + + if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { + return fromArrayBuffer(that, value, encodingOrOffset, length) + } + + if (typeof value === 'string') { + return fromString(that, value, encodingOrOffset) + } + + return fromObject(that, value) +} + +/** + * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError + * if value is a number. + * Buffer.from(str[, encoding]) + * Buffer.from(array) + * Buffer.from(buffer) + * Buffer.from(arrayBuffer[, byteOffset[, length]]) + **/ +Buffer.from = function (value, encodingOrOffset, length) { + return from(null, value, encodingOrOffset, length) +}; + +if (Buffer.TYPED_ARRAY_SUPPORT) { + Buffer.prototype.__proto__ = Uint8Array.prototype; + Buffer.__proto__ = Uint8Array; + if (typeof Symbol !== 'undefined' && Symbol.species && + Buffer[Symbol.species] === Buffer) { + // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 + // Object.defineProperty(Buffer, Symbol.species, { + // value: null, + // configurable: true + // }) + } +} + +function assertSize (size) { + if (typeof size !== 'number') { + throw new TypeError('"size" argument must be a number') + } else if (size < 0) { + throw new RangeError('"size" argument must not be negative') + } +} + +function alloc (that, size, fill, encoding) { + assertSize(size); + if (size <= 0) { + return createBuffer(that, size) + } + if (fill !== undefined) { + // Only pay attention to encoding if it's a string. This + // prevents accidentally sending in a number that would + // be interpretted as a start offset. + return typeof encoding === 'string' + ? createBuffer(that, size).fill(fill, encoding) + : createBuffer(that, size).fill(fill) + } + return createBuffer(that, size) +} + +/** + * Creates a new filled Buffer instance. + * alloc(size[, fill[, encoding]]) + **/ +Buffer.alloc = function (size, fill, encoding) { + return alloc(null, size, fill, encoding) +}; + +function allocUnsafe (that, size) { + assertSize(size); + that = createBuffer(that, size < 0 ? 0 : checked(size) | 0); + if (!Buffer.TYPED_ARRAY_SUPPORT) { + for (var i = 0; i < size; ++i) { + that[i] = 0; + } + } + return that +} + +/** + * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. + * */ +Buffer.allocUnsafe = function (size) { + return allocUnsafe(null, size) +}; +/** + * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. + */ +Buffer.allocUnsafeSlow = function (size) { + return allocUnsafe(null, size) +}; + +function fromString (that, string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8'; + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('"encoding" must be a valid string encoding') + } + + var length = byteLength(string, encoding) | 0; + that = createBuffer(that, length); + + var actual = that.write(string, encoding); + + if (actual !== length) { + // Writing a hex string, for example, that contains invalid characters will + // cause everything after the first invalid character to be ignored. (e.g. + // 'abxxcd' will be treated as 'ab') + that = that.slice(0, actual); + } + + return that +} + +function fromArrayLike (that, array) { + var length = array.length < 0 ? 0 : checked(array.length) | 0; + that = createBuffer(that, length); + for (var i = 0; i < length; i += 1) { + that[i] = array[i] & 255; + } + return that +} + +function fromArrayBuffer (that, array, byteOffset, length) { + array.byteLength; // this throws if `array` is not a valid ArrayBuffer + + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('\'offset\' is out of bounds') + } + + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('\'length\' is out of bounds') + } + + if (byteOffset === undefined && length === undefined) { + array = new Uint8Array(array); + } else if (length === undefined) { + array = new Uint8Array(array, byteOffset); + } else { + array = new Uint8Array(array, byteOffset, length); + } + + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = array; + that.__proto__ = Buffer.prototype; + } else { + // Fallback: Return an object instance of the Buffer class + that = fromArrayLike(that, array); + } + return that +} + +function fromObject (that, obj) { + if (internalIsBuffer(obj)) { + var len = checked(obj.length) | 0; + that = createBuffer(that, len); + + if (that.length === 0) { + return that + } + + obj.copy(that, 0, 0, len); + return that + } + + if (obj) { + if ((typeof ArrayBuffer !== 'undefined' && + obj.buffer instanceof ArrayBuffer) || 'length' in obj) { + if (typeof obj.length !== 'number' || isnan(obj.length)) { + return createBuffer(that, 0) + } + return fromArrayLike(that, obj) + } + + if (obj.type === 'Buffer' && isArray(obj.data)) { + return fromArrayLike(that, obj.data) + } + } + + throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.') +} + +function checked (length) { + // Note: cannot use `length < kMaxLength()` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= kMaxLength()) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + kMaxLength().toString(16) + ' bytes') + } + return length | 0 +} + + +Buffer.isBuffer = isBuffer; +function internalIsBuffer (b) { + return !!(b != null && b._isBuffer) +} + +Buffer.compare = function compare (a, b) { + if (!internalIsBuffer(a) || !internalIsBuffer(b)) { + throw new TypeError('Arguments must be Buffers') + } + + if (a === b) return 0 + + var x = a.length; + var y = b.length; + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i]; + y = b[i]; + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +}; + +Buffer.isEncoding = function isEncoding (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false + } +}; + +Buffer.concat = function concat (list, length) { + if (!isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + + if (list.length === 0) { + return Buffer.alloc(0) + } + + var i; + if (length === undefined) { + length = 0; + for (i = 0; i < list.length; ++i) { + length += list[i].length; + } + } + + var buffer = Buffer.allocUnsafe(length); + var pos = 0; + for (i = 0; i < list.length; ++i) { + var buf = list[i]; + if (!internalIsBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + buf.copy(buffer, pos); + pos += buf.length; + } + return buffer +}; + +function byteLength (string, encoding) { + if (internalIsBuffer(string)) { + return string.length + } + if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && + (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { + return string.byteLength + } + if (typeof string !== 'string') { + string = '' + string; + } + + var len = string.length; + if (len === 0) return 0 + + // Use a for loop to avoid recursion + var loweredCase = false; + for (;;) { + switch (encoding) { + case 'ascii': + case 'latin1': + case 'binary': + return len + case 'utf8': + case 'utf-8': + case undefined: + return utf8ToBytes(string).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2 + case 'hex': + return len >>> 1 + case 'base64': + return base64ToBytes(string).length + default: + if (loweredCase) return utf8ToBytes(string).length // assume utf8 + encoding = ('' + encoding).toLowerCase(); + loweredCase = true; + } + } +} +Buffer.byteLength = byteLength; + +function slowToString (encoding, start, end) { + var loweredCase = false; + + // No need to verify that "this.length <= MAX_UINT32" since it's a read-only + // property of a typed array. + + // This behaves neither like String nor Uint8Array in that we set start/end + // to their upper/lower bounds if the value passed is out of range. + // undefined is handled specially as per ECMA-262 6th Edition, + // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. + if (start === undefined || start < 0) { + start = 0; + } + // Return early if start > this.length. Done here to prevent potential uint32 + // coercion fail below. + if (start > this.length) { + return '' + } + + if (end === undefined || end > this.length) { + end = this.length; + } + + if (end <= 0) { + return '' + } + + // Force coersion to uint32. This will also coerce falsey/NaN values to 0. + end >>>= 0; + start >>>= 0; + + if (end <= start) { + return '' + } + + if (!encoding) encoding = 'utf8'; + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end) + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end) + + case 'ascii': + return asciiSlice(this, start, end) + + case 'latin1': + case 'binary': + return latin1Slice(this, start, end) + + case 'base64': + return base64Slice(this, start, end) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = (encoding + '').toLowerCase(); + loweredCase = true; + } + } +} + +// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect +// Buffer instances. +Buffer.prototype._isBuffer = true; + +function swap (b, n, m) { + var i = b[n]; + b[n] = b[m]; + b[m] = i; +} + +Buffer.prototype.swap16 = function swap16 () { + var len = this.length; + if (len % 2 !== 0) { + throw new RangeError('Buffer size must be a multiple of 16-bits') + } + for (var i = 0; i < len; i += 2) { + swap(this, i, i + 1); + } + return this +}; + +Buffer.prototype.swap32 = function swap32 () { + var len = this.length; + if (len % 4 !== 0) { + throw new RangeError('Buffer size must be a multiple of 32-bits') + } + for (var i = 0; i < len; i += 4) { + swap(this, i, i + 3); + swap(this, i + 1, i + 2); + } + return this +}; + +Buffer.prototype.swap64 = function swap64 () { + var len = this.length; + if (len % 8 !== 0) { + throw new RangeError('Buffer size must be a multiple of 64-bits') + } + for (var i = 0; i < len; i += 8) { + swap(this, i, i + 7); + swap(this, i + 1, i + 6); + swap(this, i + 2, i + 5); + swap(this, i + 3, i + 4); + } + return this +}; + +Buffer.prototype.toString = function toString () { + var length = this.length | 0; + if (length === 0) return '' + if (arguments.length === 0) return utf8Slice(this, 0, length) + return slowToString.apply(this, arguments) +}; + +Buffer.prototype.equals = function equals (b) { + if (!internalIsBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return true + return Buffer.compare(this, b) === 0 +}; + +Buffer.prototype.inspect = function inspect () { + var str = ''; + var max = INSPECT_MAX_BYTES; + if (this.length > 0) { + str = this.toString('hex', 0, max).match(/.{2}/g).join(' '); + if (this.length > max) str += ' ... '; + } + return '' +}; + +Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { + if (!internalIsBuffer(target)) { + throw new TypeError('Argument must be a Buffer') + } + + if (start === undefined) { + start = 0; + } + if (end === undefined) { + end = target ? target.length : 0; + } + if (thisStart === undefined) { + thisStart = 0; + } + if (thisEnd === undefined) { + thisEnd = this.length; + } + + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError('out of range index') + } + + if (thisStart >= thisEnd && start >= end) { + return 0 + } + if (thisStart >= thisEnd) { + return -1 + } + if (start >= end) { + return 1 + } + + start >>>= 0; + end >>>= 0; + thisStart >>>= 0; + thisEnd >>>= 0; + + if (this === target) return 0 + + var x = thisEnd - thisStart; + var y = end - start; + var len = Math.min(x, y); + + var thisCopy = this.slice(thisStart, thisEnd); + var targetCopy = target.slice(start, end); + + for (var i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i]; + y = targetCopy[i]; + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +}; + +// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, +// OR the last index of `val` in `buffer` at offset <= `byteOffset`. +// +// Arguments: +// - buffer - a Buffer to search +// - val - a string, Buffer, or number +// - byteOffset - an index into `buffer`; will be clamped to an int32 +// - encoding - an optional encoding, relevant is val is a string +// - dir - true for indexOf, false for lastIndexOf +function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { + // Empty buffer means no match + if (buffer.length === 0) return -1 + + // Normalize byteOffset + if (typeof byteOffset === 'string') { + encoding = byteOffset; + byteOffset = 0; + } else if (byteOffset > 0x7fffffff) { + byteOffset = 0x7fffffff; + } else if (byteOffset < -0x80000000) { + byteOffset = -0x80000000; + } + byteOffset = +byteOffset; // Coerce to Number. + if (isNaN(byteOffset)) { + // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer + byteOffset = dir ? 0 : (buffer.length - 1); + } + + // Normalize byteOffset: negative offsets start from the end of the buffer + if (byteOffset < 0) byteOffset = buffer.length + byteOffset; + if (byteOffset >= buffer.length) { + if (dir) return -1 + else byteOffset = buffer.length - 1; + } else if (byteOffset < 0) { + if (dir) byteOffset = 0; + else return -1 + } + + // Normalize val + if (typeof val === 'string') { + val = Buffer.from(val, encoding); + } + + // Finally, search either indexOf (if dir is true) or lastIndexOf + if (internalIsBuffer(val)) { + // Special case: looking for empty string/buffer always fails + if (val.length === 0) { + return -1 + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir) + } else if (typeof val === 'number') { + val = val & 0xFF; // Search for a byte value [0-255] + if (Buffer.TYPED_ARRAY_SUPPORT && + typeof Uint8Array.prototype.indexOf === 'function') { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) + } + } + return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) + } + + throw new TypeError('val must be string, number or Buffer') +} + +function arrayIndexOf (arr, val, byteOffset, encoding, dir) { + var indexSize = 1; + var arrLength = arr.length; + var valLength = val.length; + + if (encoding !== undefined) { + encoding = String(encoding).toLowerCase(); + if (encoding === 'ucs2' || encoding === 'ucs-2' || + encoding === 'utf16le' || encoding === 'utf-16le') { + if (arr.length < 2 || val.length < 2) { + return -1 + } + indexSize = 2; + arrLength /= 2; + valLength /= 2; + byteOffset /= 2; + } + } + + function read$$1 (buf, i) { + if (indexSize === 1) { + return buf[i] + } else { + return buf.readUInt16BE(i * indexSize) + } + } + + var i; + if (dir) { + var foundIndex = -1; + for (i = byteOffset; i < arrLength; i++) { + if (read$$1(arr, i) === read$$1(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i; + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize + } else { + if (foundIndex !== -1) i -= i - foundIndex; + foundIndex = -1; + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength; + for (i = byteOffset; i >= 0; i--) { + var found = true; + for (var j = 0; j < valLength; j++) { + if (read$$1(arr, i + j) !== read$$1(val, j)) { + found = false; + break + } + } + if (found) return i + } + } + + return -1 +} + +Buffer.prototype.includes = function includes (val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1 +}; + +Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true) +}; + +Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false) +}; + +function hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0; + var remaining = buf.length - offset; + if (!length) { + length = remaining; + } else { + length = Number(length); + if (length > remaining) { + length = remaining; + } + } + + // must be an even number of digits + var strLen = string.length; + if (strLen % 2 !== 0) throw new TypeError('Invalid hex string') + + if (length > strLen / 2) { + length = strLen / 2; + } + for (var i = 0; i < length; ++i) { + var parsed = parseInt(string.substr(i * 2, 2), 16); + if (isNaN(parsed)) return i + buf[offset + i] = parsed; + } + return i +} + +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} + +function asciiWrite (buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length) +} + +function latin1Write (buf, string, offset, length) { + return asciiWrite(buf, string, offset, length) +} + +function base64Write (buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length) +} + +function ucs2Write (buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) +} + +Buffer.prototype.write = function write$$1 (string, offset, length, encoding) { + // Buffer#write(string) + if (offset === undefined) { + encoding = 'utf8'; + length = this.length; + offset = 0; + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + encoding = offset; + length = this.length; + offset = 0; + // Buffer#write(string, offset[, length][, encoding]) + } else if (isFinite(offset)) { + offset = offset | 0; + if (isFinite(length)) { + length = length | 0; + if (encoding === undefined) encoding = 'utf8'; + } else { + encoding = length; + length = undefined; + } + // legacy write(string, encoding, offset, length) - remove in v0.13 + } else { + throw new Error( + 'Buffer.write(string, encoding, offset[, length]) is no longer supported' + ) + } + + var remaining = this.length - offset; + if (length === undefined || length > remaining) length = remaining; + + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds') + } + + if (!encoding) encoding = 'utf8'; + + var loweredCase = false; + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length) + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length) + + case 'ascii': + return asciiWrite(this, string, offset, length) + + case 'latin1': + case 'binary': + return latin1Write(this, string, offset, length) + + case 'base64': + // Warning: maxLength not taken into account in base64Write + return base64Write(this, string, offset, length) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = ('' + encoding).toLowerCase(); + loweredCase = true; + } + } +}; + +Buffer.prototype.toJSON = function toJSON () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } +}; + +function base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return fromByteArray(buf) + } else { + return fromByteArray(buf.slice(start, end)) + } +} + +function utf8Slice (buf, start, end) { + end = Math.min(buf.length, end); + var res = []; + + var i = start; + while (i < end) { + var firstByte = buf[i]; + var codePoint = null; + var bytesPerSequence = (firstByte > 0xEF) ? 4 + : (firstByte > 0xDF) ? 3 + : (firstByte > 0xBF) ? 2 + : 1; + + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint; + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte; + } + break + case 2: + secondByte = buf[i + 1]; + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F); + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint; + } + } + break + case 3: + secondByte = buf[i + 1]; + thirdByte = buf[i + 2]; + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F); + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint; + } + } + break + case 4: + secondByte = buf[i + 1]; + thirdByte = buf[i + 2]; + fourthByte = buf[i + 3]; + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F); + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint; + } + } + } + } + + if (codePoint === null) { + // we did not generate a valid codePoint so insert a + // replacement char (U+FFFD) and advance only 1 byte + codePoint = 0xFFFD; + bytesPerSequence = 1; + } else if (codePoint > 0xFFFF) { + // encode to utf16 (surrogate pair dance) + codePoint -= 0x10000; + res.push(codePoint >>> 10 & 0x3FF | 0xD800); + codePoint = 0xDC00 | codePoint & 0x3FF; + } + + res.push(codePoint); + i += bytesPerSequence; + } + + return decodeCodePointsArray(res) +} + +// Based on http://stackoverflow.com/a/22747272/680742, the browser with +// the lowest limit is Chrome, with 0x10000 args. +// We go 1 magnitude less, for safety +var MAX_ARGUMENTS_LENGTH = 0x1000; + +function decodeCodePointsArray (codePoints) { + var len = codePoints.length; + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints) // avoid extra slice() + } + + // Decode in chunks to avoid "call stack size exceeded". + var res = ''; + var i = 0; + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ); + } + return res +} + +function asciiSlice (buf, start, end) { + var ret = ''; + end = Math.min(buf.length, end); + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 0x7F); + } + return ret +} + +function latin1Slice (buf, start, end) { + var ret = ''; + end = Math.min(buf.length, end); + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]); + } + return ret +} + +function hexSlice (buf, start, end) { + var len = buf.length; + + if (!start || start < 0) start = 0; + if (!end || end < 0 || end > len) end = len; + + var out = ''; + for (var i = start; i < end; ++i) { + out += toHex(buf[i]); + } + return out +} + +function utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end); + var res = ''; + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256); + } + return res +} + +Buffer.prototype.slice = function slice (start, end) { + var len = this.length; + start = ~~start; + end = end === undefined ? len : ~~end; + + if (start < 0) { + start += len; + if (start < 0) start = 0; + } else if (start > len) { + start = len; + } + + if (end < 0) { + end += len; + if (end < 0) end = 0; + } else if (end > len) { + end = len; + } + + if (end < start) end = start; + + var newBuf; + if (Buffer.TYPED_ARRAY_SUPPORT) { + newBuf = this.subarray(start, end); + newBuf.__proto__ = Buffer.prototype; + } else { + var sliceLen = end - start; + newBuf = new Buffer(sliceLen, undefined); + for (var i = 0; i < sliceLen; ++i) { + newBuf[i] = this[i + start]; + } + } + + return newBuf +}; + +/* + * Need to make sure that buffer isn't trying to write out of bounds. + */ +function checkOffset (offset, ext, length) { + if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') +} + +Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + var val = this[offset]; + var mul = 1; + var i = 0; + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul; + } + + return val +}; + +Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) { + checkOffset(offset, byteLength, this.length); + } + + var val = this[offset + --byteLength]; + var mul = 1; + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul; + } + + return val +}; + +Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length); + return this[offset] +}; + +Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length); + return this[offset] | (this[offset + 1] << 8) +}; + +Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length); + return (this[offset] << 8) | this[offset + 1] +}; + +Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + + return ((this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16)) + + (this[offset + 3] * 0x1000000) +}; + +Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + + return (this[offset] * 0x1000000) + + ((this[offset + 1] << 16) | + (this[offset + 2] << 8) | + this[offset + 3]) +}; + +Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + var val = this[offset]; + var mul = 1; + var i = 0; + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul; + } + mul *= 0x80; + + if (val >= mul) val -= Math.pow(2, 8 * byteLength); + + return val +}; + +Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) checkOffset(offset, byteLength, this.length); + + var i = byteLength; + var mul = 1; + var val = this[offset + --i]; + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul; + } + mul *= 0x80; + + if (val >= mul) val -= Math.pow(2, 8 * byteLength); + + return val +}; + +Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length); + if (!(this[offset] & 0x80)) return (this[offset]) + return ((0xff - this[offset] + 1) * -1) +}; + +Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length); + var val = this[offset] | (this[offset + 1] << 8); + return (val & 0x8000) ? val | 0xFFFF0000 : val +}; + +Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length); + var val = this[offset + 1] | (this[offset] << 8); + return (val & 0x8000) ? val | 0xFFFF0000 : val +}; + +Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + + return (this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16) | + (this[offset + 3] << 24) +}; + +Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + + return (this[offset] << 24) | + (this[offset + 1] << 16) | + (this[offset + 2] << 8) | + (this[offset + 3]) +}; + +Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + return read(this, offset, true, 23, 4) +}; + +Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length); + return read(this, offset, false, 23, 4) +}; + +Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length); + return read(this, offset, true, 52, 8) +}; + +Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length); + return read(this, offset, false, 52, 8) +}; + +function checkInt (buf, value, offset, ext, max, min) { + if (!internalIsBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') + if (offset + ext > buf.length) throw new RangeError('Index out of range') +} + +Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1; + checkInt(this, value, offset, byteLength, maxBytes, 0); + } + + var mul = 1; + var i = 0; + this[offset] = value & 0xFF; + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF; + } + + return offset + byteLength +}; + +Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset | 0; + byteLength = byteLength | 0; + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1; + checkInt(this, value, offset, byteLength, maxBytes, 0); + } + + var i = byteLength - 1; + var mul = 1; + this[offset + i] = value & 0xFF; + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF; + } + + return offset + byteLength +}; + +Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0); + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value); + this[offset] = (value & 0xff); + return offset + 1 +}; + +function objectWriteUInt16 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffff + value + 1; + for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { + buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> + (littleEndian ? i : 1 - i) * 8; + } +} + +Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff); + this[offset + 1] = (value >>> 8); + } else { + objectWriteUInt16(this, value, offset, true); + } + return offset + 2 +}; + +Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8); + this[offset + 1] = (value & 0xff); + } else { + objectWriteUInt16(this, value, offset, false); + } + return offset + 2 +}; + +function objectWriteUInt32 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffffffff + value + 1; + for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { + buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff; + } +} + +Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset + 3] = (value >>> 24); + this[offset + 2] = (value >>> 16); + this[offset + 1] = (value >>> 8); + this[offset] = (value & 0xff); + } else { + objectWriteUInt32(this, value, offset, true); + } + return offset + 4 +}; + +Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24); + this[offset + 1] = (value >>> 16); + this[offset + 2] = (value >>> 8); + this[offset + 3] = (value & 0xff); + } else { + objectWriteUInt32(this, value, offset, false); + } + return offset + 4 +}; + +Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1); + + checkInt(this, value, offset, byteLength, limit - 1, -limit); + } + + var i = 0; + var mul = 1; + var sub = 0; + this[offset] = value & 0xFF; + while (++i < byteLength && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1; + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; + } + + return offset + byteLength +}; + +Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1); + + checkInt(this, value, offset, byteLength, limit - 1, -limit); + } + + var i = byteLength - 1; + var mul = 1; + var sub = 0; + this[offset + i] = value & 0xFF; + while (--i >= 0 && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1; + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; + } + + return offset + byteLength +}; + +Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80); + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value); + if (value < 0) value = 0xff + value + 1; + this[offset] = (value & 0xff); + return offset + 1 +}; + +Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff); + this[offset + 1] = (value >>> 8); + } else { + objectWriteUInt16(this, value, offset, true); + } + return offset + 2 +}; + +Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8); + this[offset + 1] = (value & 0xff); + } else { + objectWriteUInt16(this, value, offset, false); + } + return offset + 2 +}; + +Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff); + this[offset + 1] = (value >>> 8); + this[offset + 2] = (value >>> 16); + this[offset + 3] = (value >>> 24); + } else { + objectWriteUInt32(this, value, offset, true); + } + return offset + 4 +}; + +Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { + value = +value; + offset = offset | 0; + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); + if (value < 0) value = 0xffffffff + value + 1; + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24); + this[offset + 1] = (value >>> 16); + this[offset + 2] = (value >>> 8); + this[offset + 3] = (value & 0xff); + } else { + objectWriteUInt32(this, value, offset, false); + } + return offset + 4 +}; + +function checkIEEE754 (buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError('Index out of range') + if (offset < 0) throw new RangeError('Index out of range') +} + +function writeFloat (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38); + } + write(buf, value, offset, littleEndian, 23, 4); + return offset + 4 +} + +Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert) +}; + +Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert) +}; + +function writeDouble (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308); + } + write(buf, value, offset, littleEndian, 52, 8); + return offset + 8 +} + +Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert) +}; + +Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert) +}; + +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer.prototype.copy = function copy (target, targetStart, start, end) { + if (!start) start = 0; + if (!end && end !== 0) end = this.length; + if (targetStart >= target.length) targetStart = target.length; + if (!targetStart) targetStart = 0; + if (end > 0 && end < start) end = start; + + // Copy 0 bytes; we're done + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 + + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') + if (end < 0) throw new RangeError('sourceEnd out of bounds') + + // Are we oob? + if (end > this.length) end = this.length; + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start; + } + + var len = end - start; + var i; + + if (this === target && start < targetStart && targetStart < end) { + // descending copy from end + for (i = len - 1; i >= 0; --i) { + target[i + targetStart] = this[i + start]; + } + } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { + // ascending copy from start + for (i = 0; i < len; ++i) { + target[i + targetStart] = this[i + start]; + } + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, start + len), + targetStart + ); + } + + return len +}; + +// Usage: +// buffer.fill(number[, offset[, end]]) +// buffer.fill(buffer[, offset[, end]]) +// buffer.fill(string[, offset[, end]][, encoding]) +Buffer.prototype.fill = function fill (val, start, end, encoding) { + // Handle string cases: + if (typeof val === 'string') { + if (typeof start === 'string') { + encoding = start; + start = 0; + end = this.length; + } else if (typeof end === 'string') { + encoding = end; + end = this.length; + } + if (val.length === 1) { + var code = val.charCodeAt(0); + if (code < 256) { + val = code; + } + } + if (encoding !== undefined && typeof encoding !== 'string') { + throw new TypeError('encoding must be a string') + } + if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + } else if (typeof val === 'number') { + val = val & 255; + } + + // Invalid ranges are not set to a default, so can range check early. + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index') + } + + if (end <= start) { + return this + } + + start = start >>> 0; + end = end === undefined ? this.length : end >>> 0; + + if (!val) val = 0; + + var i; + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val; + } + } else { + var bytes = internalIsBuffer(val) + ? val + : utf8ToBytes(new Buffer(val, encoding).toString()); + var len = bytes.length; + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len]; + } + } + + return this +}; + +// HELPER FUNCTIONS +// ================ + +var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g; + +function base64clean (str) { + // Node strips out invalid characters like \n and \t from the string, base64-js does not + str = stringtrim(str).replace(INVALID_BASE64_RE, ''); + // Node converts strings with length < 2 to '' + if (str.length < 2) return '' + // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not + while (str.length % 4 !== 0) { + str = str + '='; + } + return str +} + +function stringtrim (str) { + if (str.trim) return str.trim() + return str.replace(/^\s+|\s+$/g, '') +} + +function toHex (n) { + if (n < 16) return '0' + n.toString(16) + return n.toString(16) +} + +function utf8ToBytes (string, units) { + units = units || Infinity; + var codePoint; + var length = string.length; + var leadSurrogate = null; + var bytes = []; + + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i); + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + continue + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + continue + } + + // valid lead + leadSurrogate = codePoint; + + continue + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + leadSurrogate = codePoint; + continue + } + + // valid surrogate pair + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000; + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); + } + + leadSurrogate = null; + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint); + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ); + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ); + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ); + } else { + throw new Error('Invalid code point') + } + } + + return bytes +} + +function asciiToBytes (str) { + var byteArray = []; + for (var i = 0; i < str.length; ++i) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF); + } + return byteArray +} + +function utf16leToBytes (str, units) { + var c, hi, lo; + var byteArray = []; + for (var i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break + + c = str.charCodeAt(i); + hi = c >> 8; + lo = c % 256; + byteArray.push(lo); + byteArray.push(hi); + } + + return byteArray +} + + +function base64ToBytes (str) { + return toByteArray(base64clean(str)) +} + +function blitBuffer (src, dst, offset, length) { + for (var i = 0; i < length; ++i) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i]; + } + return i +} + +function isnan (val) { + return val !== val // eslint-disable-line no-self-compare +} + + +// the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence +// The _isBuffer check is for Safari 5-7 support, because it's missing +// Object.prototype.constructor. Remove this eventually +function isBuffer(obj) { + return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj)) +} + +function isFastBuffer (obj) { + return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) +} + +// For Node v0.10 support. Remove this eventually. +function isSlowBuffer (obj) { + return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0)) +} + +var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + + + +function unwrapExports (x) { + return x && x.__esModule ? x['default'] : x; +} + +function createCommonjsModule(fn, module) { + return module = { exports: {} }, fn(module, module.exports), module.exports; +} + +var parserTypescript_1 = createCommonjsModule(function (module) { +"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}function createError$1(e,t,n){const r=new SyntaxError(e+" ("+t+":"+n+")");return r.loc={line:t,column:n},r}function commonjsRequire$$1(){throw new Error("Dynamic requires are not currently supported by rollup-plugin-commonjs")}function createCommonjsModule$$1(e,t){return t={exports:{}},e(t,t.exports),t.exports}function toVLQSigned(e){return e<0?1+(-e<<1):0+(e<<1)}function fromVLQSigned(e){var t=e>>1;return 1==(1&e)?-t:t}function ArraySet$1(){this._array=[],this._set=Object.create(null);}function generatedPositionAfter(e,t){var n=e.generatedLine,r=t.generatedLine,a=e.generatedColumn,i=t.generatedColumn;return r>n||r==n&&i>=a||util$4.compareByGeneratedPositionsInflated(e,t)<=0}function MappingList$1(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0};}function SourceMapGenerator$1(e){e||(e={}),this._file=util.getArg(e,"file",null),this._sourceRoot=util.getArg(e,"sourceRoot",null),this._skipValidation=util.getArg(e,"skipValidation",!1),this._sources=new ArraySet,this._names=new ArraySet,this._mappings=new MappingList,this._sourcesContents=null;}function swap(e,t,n){var r=e[t];e[t]=e[n],e[n]=r;}function randomIntInRange(e,t){return Math.round(e+Math.random()*(t-e))}function doQuickSort(e,t,n,r){if(n";var n=this.getLineNumber();if(null!=n){t+=":"+n;var r=this.getColumnNumber();r&&(t+=":"+r);}}var a="",i=this.getFunctionName(),o=!0,s=this.isConstructor();if(!(this.isToplevel()||s)){var c=this.getTypeName();"[object Object]"===c&&(c="null");var u=this.getMethodName();i?(c&&0!=i.indexOf(c)&&(a+=c+"."),a+=i,u&&i.indexOf("."+u)!=i.length-u.length-1&&(a+=" [as "+u+"]")):a+=c+"."+(u||"");}else s?a+="new "+(i||""):i?a+=i:(a+=t,o=!1);return o&&(a+=" ("+t+")"),a}function cloneCallSite(e){var t={};return Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(function(n){t[n]=/^(?:is|get)/.test(n)?function(){return e[n].call(e)}:e[n];}),t.toString=CallSiteToString,t}function wrapCallSite(e){if(e.isNative())return e;var t=e.getFileName()||e.getScriptNameOrSourceURL();if(t){var n=e.getLineNumber(),r=e.getColumnNumber()-1;1!==n||isInBrowser()||e.isEval()||(r-=62);var a=mapSourcePosition({source:t,line:n,column:r});return e=cloneCallSite(e),e.getFileName=function(){return a.source},e.getLineNumber=function(){return a.line},e.getColumnNumber=function(){return a.column+1},e.getScriptNameOrSourceURL=function(){return a.source},e}var i=e.isEval()&&e.getEvalOrigin();return i?(i=mapEvalOrigin(i),e=cloneCallSite(e),e.getEvalOrigin=function(){return i},e):e}function prepareStackTrace(e,t){return emptyCacheBetweenOperations&&(fileContentsCache={},sourceMapCache={}),e+t.map(function(e){return"\n at "+wrapCallSite(e)}).join("")}function getErrorSource(e){var t=/\n at [^(]+ \((.*):(\d+):(\d+)\)/.exec(e.stack);if(t){var n=t[1],r=+t[2],a=+t[3],i=fileContentsCache[n];if(!i&&fs$1&&fs$1.existsSync(n)&&(i=fs$1.readFileSync(n,"utf8")),i){var o=i.split(/(?:\r\n|\r|\n)/)[r-1];if(o)return n+":"+r+"\n"+o+"\n"+new Array(a).join(" ")+"^"}}return null}function printErrorAndExit(e){var t=getErrorSource(e);t&&(console.error(),console.error(t)),console.error(e.stack),process.exit(1);}function shimEmitUncaughtException(){var e=process.emit;process.emit=function(t){if("uncaughtException"===t){var n=arguments[1]&&arguments[1].stack,r=this.listeners(t).length>0;if(n&&!r)return printErrorAndExit(arguments[1])}return e.apply(this,arguments)};}function basePropertyOf(e){return function(t){return null==e?void 0:e[t]}}function baseToString(e){if("string"==typeof e)return e;if(isSymbol(e))return symbolToString?symbolToString.call(e):"";var t=e+"";return"0"==t&&1/e==-INFINITY?"-0":t}function isObjectLike(e){return!!e&&"object"==typeof e}function isSymbol(e){return"symbol"==typeof e||isObjectLike(e)&&objectToString.call(e)==symbolTag}function toString(e){return null==e?"":baseToString(e)}function unescape$1(e){return e=toString(e),e&&reHasEscapedHtml.test(e)?e.replace(reEscapedHtml,unescapeHtmlChar):e}function findFirstMatchingChild(e,t,n){const r=e.getChildren(t);for(let e=0;e-1}function isLogicalOperator(e){return LOGICAL_OPERATORS.indexOf(e.kind)>-1}function getTextForTokenKind(e){return TOKEN_TO_TEXT[e]}function isESTreeClassMember(e){return e.kind!==SyntaxKind$1.SemicolonClassElement}function hasModifier(e,t){return!!t.modifiers&&!!t.modifiers.length&&t.modifiers.some(t=>t.kind===e)}function isComma(e){return e.kind===SyntaxKind$1.CommaToken}function getBinaryExpressionType(e){return isAssignmentOperator(e)?"AssignmentExpression":isLogicalOperator(e)?"LogicalExpression":"BinaryExpression"}function getLocFor(e,t,n){const r=n.getLineAndCharacterOfPosition(e),a=n.getLineAndCharacterOfPosition(t);return{start:{line:r.line+1,column:r.character},end:{line:a.line+1,column:a.character}}}function getLoc(e,t){return getLocFor(e.getStart(),e.end,t)}function isToken(e){return e.kind>=SyntaxKind$1.FirstToken&&e.kind<=SyntaxKind$1.LastToken}function isJSXToken(e){return e.kind>=SyntaxKind$1.JsxElement&&e.kind<=SyntaxKind$1.JsxAttribute}function getDeclarationKind(e){let t;switch(e.kind){case SyntaxKind$1.TypeAliasDeclaration:t="type";break;case SyntaxKind$1.VariableDeclarationList:t=isLet(e)?"let":isConst(e)?"const":"var";break;default:throw"Unable to determine declaration kind."}return t}function getTSNodeAccessibility(e){const t=e.modifiers;if(!t)return null;for(let e=0;ee.kind===t)}function findAncestorOfKind(e,t){return findFirstMatchingAncestor(e,e=>e.kind===t)}function hasJSXAncestor(e){return!!findFirstMatchingAncestor(e,isJSXToken)}function unescapeIdentifier(e){return ts$1.unescapeIdentifier(e)}function unescapeStringLiteralText(e){return unescape(e)}function isComputedProperty(e){return e.kind===SyntaxKind$1.ComputedPropertyName}function isOptional(e){return!!e.questionToken&&e.questionToken.kind===SyntaxKind$1.QuestionToken}function fixExports(e,t,n){if(e.modifiers&&e.modifiers[0].kind===SyntaxKind$1.ExportKeyword){const r=e.modifiers[0],a=e.modifiers[1],i=e.modifiers[e.modifiers.length-1],o=a&&a.kind===SyntaxKind$1.DefaultKeyword,s=findNextToken(i,n);t.range[0]=s.getStart(),t.loc=getLocFor(t.range[0],t.range[1],n);let c=o?"ExportDefaultDeclaration":"ExportNamedDeclaration";e.parent&&e.parent.kind===SyntaxKind$1.ModuleBlock&&(c="TSNamespaceExportDeclaration");const u={type:c,declaration:t,range:[r.getStart(),t.range[1]],loc:getLocFor(r.getStart(),t.range[1],n)};return o||(u.specifiers=[],u.source=null),u}return t}function getTokenType(e){if(e.originalKeywordKind)switch(e.originalKeywordKind){case SyntaxKind$1.NullKeyword:return"Null";case SyntaxKind$1.GetKeyword:case SyntaxKind$1.SetKeyword:case SyntaxKind$1.TypeKeyword:case SyntaxKind$1.ModuleKeyword:return"Identifier";default:return"Keyword"}if(e.kind>=SyntaxKind$1.FirstKeyword&&e.kind<=SyntaxKind$1.LastFutureReservedWord)return e.kind===SyntaxKind$1.FalseKeyword||e.kind===SyntaxKind$1.TrueKeyword?"Boolean":"Keyword";if(e.kind>=SyntaxKind$1.FirstPunctuation&&e.kind<=SyntaxKind$1.LastBinaryOperator)return"Punctuator";if(e.kind>=SyntaxKind$1.NoSubstitutionTemplateLiteral&&e.kind<=SyntaxKind$1.TemplateTail)return"Template";switch(e.kind){case SyntaxKind$1.NumericLiteral:return"Numeric";case SyntaxKind$1.JsxText:return"JSXText";case SyntaxKind$1.StringLiteral:return!e.parent||e.parent.kind!==SyntaxKind$1.JsxAttribute&&e.parent.kind!==SyntaxKind$1.JsxElement?"String":"JSXText";case SyntaxKind$1.RegularExpressionLiteral:return"RegularExpression";case SyntaxKind$1.Identifier:case SyntaxKind$1.ConstructorKeyword:case SyntaxKind$1.GetKeyword:case SyntaxKind$1.SetKeyword:}if(e.parent){if(e.kind===SyntaxKind$1.Identifier&&e.parent.kind===SyntaxKind$1.PropertyAccessExpression&&hasJSXAncestor(e))return"JSXIdentifier";if(isJSXToken(e.parent)){if(e.kind===SyntaxKind$1.PropertyAccessExpression)return"JSXMemberExpression";if(e.kind===SyntaxKind$1.Identifier)return"JSXIdentifier"}}return"Identifier"}function convertToken(e,t){const n=e.kind===SyntaxKind$1.JsxText?e.getFullStart():e.getStart(),r=e.getEnd(),a=t.text.slice(n,r),i={type:getTokenType(e),value:a,start:n,end:r,range:[n,r],loc:getLocFor(n,r,t)};return"RegularExpression"===i.type&&(i.regex={pattern:a.slice(1,a.lastIndexOf("/")),flags:a.slice(a.lastIndexOf("/")+1)}),i}function convertTokens(e){function t(r){if(isToken(r)&&r.kind!==SyntaxKind$1.EndOfFileToken){const t=convertToken(r,e);t&&n.push(t);}else r.getChildren().forEach(t);}const n=[];return t(e),n}function getNodeContainer(e,t,n){function r(e){const i=e.pos,o=e.end;t>=i&&n<=o&&(isToken(e)?a=e:e.getChildren().forEach(r));}let a=null;return r(e),a}function convertTypeScriptCommentToEsprimaComment(e,t,n,r,a,i){const o={type:e?"Block":"Line",value:t};return"number"==typeof n&&(o.range=[n,r]),"object"==typeof a&&(o.loc={start:a,end:i}),o}function getCommentFromTriviaScanner(e,t,n){const r=e.getToken()===ts$2.SyntaxKind.MultiLineCommentTrivia,a={pos:e.getTokenPos(),end:e.getTextPos(),kind:e.getToken()},i=n.substring(a.pos,a.end),o=r?i.replace(/^\/\*/,"").replace(/\*\/$/,""):i.replace(/^\/\//,""),s=nodeUtils$4.getLocFor(a.pos,a.end,t);return convertTypeScriptCommentToEsprimaComment(r,o,a.pos,a.end,s.start,s.end)}function convertComments$1(e,t){const n=[],r=ts$2.createScanner(e.languageVersion,!1,0,t);let a=r.scan();for(;a!==ts$2.SyntaxKind.EndOfFileToken;){const i=r.getTokenPos(),o=r.getTextPos();let s=null;switch(a){case ts$2.SyntaxKind.SingleLineCommentTrivia:case ts$2.SyntaxKind.MultiLineCommentTrivia:{const a=getCommentFromTriviaScanner(r,e,t);n.push(a);break}case ts$2.SyntaxKind.CloseBraceToken:if((s=nodeUtils$4.getNodeContainer(e,i,o)).kind===ts$2.SyntaxKind.TemplateMiddle||s.kind===ts$2.SyntaxKind.TemplateTail){a=r.reScanTemplateToken();continue}break;case ts$2.SyntaxKind.SlashToken:case ts$2.SyntaxKind.SlashEqualsToken:if((s=nodeUtils$4.getNodeContainer(e,i,o)).kind===ts$2.SyntaxKind.RegularExpressionLiteral){a=r.reScanSlashToken();continue}}a=r.scan();}return n}function convertError(e){const t=e.file.getLineAndCharacterOfPosition(e.start);return{index:e.start,lineNumber:t.line+1,column:t.character,message:e.message||e.messageText}}function resetExtra(){extra={tokens:null,range:!1,loc:!1,comment:!1,comments:[],tolerant:!1,errors:[],strict:!1,ecmaFeatures:{},useJSXTextNode:!1};}function parse$1(e,t){const n=String;"string"==typeof e||e instanceof String||(e=n(e)),resetExtra(),void 0!==t&&(extra.range="boolean"==typeof t.range&&t.range,extra.loc="boolean"==typeof t.loc&&t.loc,extra.loc&&null!==t.source&&void 0!==t.source&&(extra.source=n(t.source)),"boolean"==typeof t.tokens&&t.tokens&&(extra.tokens=[]),"boolean"==typeof t.comment&&t.comment&&(extra.comment=!0,extra.comments=[]),"boolean"==typeof t.tolerant&&t.tolerant&&(extra.errors=[]),t.ecmaFeatures&&"object"==typeof t.ecmaFeatures&&(extra.ecmaFeatures.jsx=t.ecmaFeatures.jsx),t.errorOnUnknownASTType&&(extra.errorOnUnknownASTType=!0),"boolean"==typeof t.useJSXTextNode&&t.useJSXTextNode&&(extra.useJSXTextNode=!0));const r=extra.ecmaFeatures.jsx?"eslint.tsx":"eslint.ts",a={fileExists(){return!0},getCanonicalFileName(){return r},getCurrentDirectory(){return""},getDefaultLibFileName(){return"lib.d.ts"},getNewLine(){return"\n"},getSourceFile(t){return ts.createSourceFile(t,e,ts.ScriptTarget.Latest,!0)},readFile(){return null},useCaseSensitiveFileNames(){return!0},writeFile(){return null}},i=ts.createProgram([r],{noResolve:!0,target:ts.ScriptTarget.Latest,jsx:extra.ecmaFeatures.jsx?"preserve":void 0},a).getSourceFile(r);return extra.code=e,convert(i,extra)}function parse(e){const t=isProbablyJsx(e);let n;try{try{n=tryParseTypeScript(e,t);}catch(r){n=tryParseTypeScript(e,!t);}}catch(e){throw createError(e.message,e.lineNumber,e.column)}return delete n.tokens,n}function tryParseTypeScript(e,t){return parser.parse(e,{loc:!0,range:!0,tokens:!0,comment:!0,useJSXTextNode:!0,ecmaFeatures:{jsx:t}})}function isProbablyJsx(e){return new RegExp(["(^[^\"'`]*)"].join(""),"m").test(e)}var fs$$1=_interopDefault(fs),path$$1=_interopDefault(path),os$$1=_interopDefault(os),crypto$$1=_interopDefault(crypto),module$1$$1=_interopDefault(module$1),parserCreateError=createError$1,astNodeTypes$1={ArrayExpression:"ArrayExpression",ArrayPattern:"ArrayPattern",ArrowFunctionExpression:"ArrowFunctionExpression",AssignmentExpression:"AssignmentExpression",AssignmentPattern:"AssignmentPattern",AwaitExpression:"AwaitExpression",BinaryExpression:"BinaryExpression",BlockStatement:"BlockStatement",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ClassImplements:"ClassImplements",ClassProperty:"ClassProperty",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DebuggerStatement:"DebuggerStatement",DeclareFunction:"DeclareFunction",Decorator:"Decorator",DoWhileStatement:"DoWhileStatement",EmptyStatement:"EmptyStatement",ExperimentalRestProperty:"ExperimentalRestProperty",ExperimentalSpreadProperty:"ExperimentalSpreadProperty",ExportAllDeclaration:"ExportAllDeclaration",ExportDefaultDeclaration:"ExportDefaultDeclaration",ExportNamedDeclaration:"ExportNamedDeclaration",ExportSpecifier:"ExportSpecifier",ExpressionStatement:"ExpressionStatement",ForInStatement:"ForInStatement",ForOfStatement:"ForOfStatement",ForStatement:"ForStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",GenericTypeAnnotation:"GenericTypeAnnotation",Identifier:"Identifier",IfStatement:"IfStatement",ImportDeclaration:"ImportDeclaration",ImportDefaultSpecifier:"ImportDefaultSpecifier",ImportNamespaceSpecifier:"ImportNamespaceSpecifier",ImportSpecifier:"ImportSpecifier",JSXAttribute:"JSXAttribute",JSXClosingElement:"JSXClosingElement",JSXElement:"JSXElement",JSXEmptyExpression:"JSXEmptyExpression",JSXExpressionContainer:"JSXExpressionContainer",JSXIdentifier:"JSXIdentifier",JSXMemberExpression:"JSXMemberExpression",JSXNamespacedName:"JSXNamespacedName",JSXOpeningElement:"JSXOpeningElement",JSXSpreadAttribute:"JSXSpreadAttribute",JSXText:"JSXText",LabeledStatement:"LabeledStatement",Literal:"Literal",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MetaProperty:"MetaProperty",MethodDefinition:"MethodDefinition",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",ObjectPattern:"ObjectPattern",Program:"Program",Property:"Property",RestElement:"RestElement",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SpreadElement:"SpreadElement",Super:"Super",SwitchCase:"SwitchCase",SwitchStatement:"SwitchStatement",TaggedTemplateExpression:"TaggedTemplateExpression",TemplateElement:"TemplateElement",TemplateLiteral:"TemplateLiteral",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",TSAbstractClassProperty:"TSAbstractClassProperty",TSAbstractMethodDefinition:"TSAbstractMethodDefinition",TSAnyKeyword:"TSAnyKeyword",TSArrayType:"TSArrayType",TSBooleanKeyword:"TSBooleanKeyword",TSConstructorType:"TSConstructorType",TSConstructSignature:"TSConstructSignature",TSDeclareKeyword:"TSDeclareKeyword",TSEnumDeclaration:"TSEnumDeclaration",TSIndexSignature:"TSIndexSignature",TSInterfaceBody:"TSInterfaceBody",TSInterfaceDeclaration:"TSInterfaceDeclaration",TSInterfaceHeritage:"TSInterfaceHeritage",TSFunctionType:"TSFunctionType",TSMethodSignature:"TSMethodSignature",TSModuleBlock:"TSModuleBlock",TSModuleDeclaration:"TSModuleDeclaration",TSNamespaceFunctionDeclaration:"TSNamespaceFunctionDeclaration",TSNonNullExpression:"TSNonNullExpression",TSNumberKeyword:"TSNumberKeyword",TSParameterProperty:"TSParameterProperty",TSPropertySignature:"TSPropertySignature",TSQualifiedName:"TSQualifiedName",TSQuestionToken:"TSQuestionToken",TSStringKeyword:"TSStringKeyword",TSTypeLiteral:"TSTypeLiteral",TSTypePredicate:"TSTypePredicate",TSTypeReference:"TSTypeReference",TSUnionType:"TSUnionType",TSVoidKeyword:"TSVoidKeyword",TypeAnnotation:"TypeAnnotation",TypeParameter:"TypeParameter",TypeParameterDeclaration:"TypeParameterDeclaration",TypeParameterInstantiation:"TypeParameterInstantiation",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement",YieldExpression:"YieldExpression"},commonjsGlobal$$1="undefined"!=typeof window?window:"undefined"!=typeof commonjsGlobal?commonjsGlobal:"undefined"!=typeof self?self:{},intToCharMap="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),encode$1=function(e){if(0<=e&&e>>=VLQ_BASE_SHIFT)>0&&(t|=VLQ_CONTINUATION_BIT),n+=base64.encode(t);}while(r>0);return n},decode=function(e,t,n){var r,a,i=e.length,o=0,s=0;do{if(t>=i)throw new Error("Expected more digits in base 64 VLQ value.");if(-1===(a=base64.decode(e.charCodeAt(t++))))throw new Error("Invalid base64 digit: "+e.charAt(t-1));r=!!(a&VLQ_CONTINUATION_BIT),o+=(a&=VLQ_BASE_MASK)<=0;l--)"."===(o=c[l])?c.splice(l,1):".."===o?u++:u>0&&(""===o?(c.splice(l+1,u),u=0):(c.splice(l,2),u--));return""===(n=c.join("/"))&&(n=s?"/":"."),i?(i.path=n,a(i)):n}function o(e,t){""===e&&(e="."),""===t&&(t=".");var n=r(t),o=r(e);if(o&&(e=o.path||"/"),n&&!n.scheme)return o&&(n.scheme=o.scheme),a(n);if(n||t.match(y))return t;if(o&&!o.host&&!o.path)return o.host=t,a(o);var s="/"===t.charAt(0)?t:i(e.replace(/\/+$/,"")+"/"+t);return o?(o.path=s,a(o)):s}function s(e,t){""===e&&(e="."),e=e.replace(/\/$/,"");for(var n=0;0!==t.indexOf(e+"/");){var r=e.lastIndexOf("/");if(r<0)return t;if((e=e.slice(0,r)).match(/^([^\/]+:\/)?\/*$/))return t;++n;}return Array(n+1).join("../")+t.substr(e.length+1)}function c(e){return e}function u(e){return _(e)?"$"+e:e}function l(e){return _(e)?e.slice(1):e}function _(e){if(!e)return!1;var t=e.length;if(t<9)return!1;if(95!==e.charCodeAt(t-1)||95!==e.charCodeAt(t-2)||111!==e.charCodeAt(t-3)||116!==e.charCodeAt(t-4)||111!==e.charCodeAt(t-5)||114!==e.charCodeAt(t-6)||112!==e.charCodeAt(t-7)||95!==e.charCodeAt(t-8)||95!==e.charCodeAt(t-9))return!1;for(var n=t-10;n>=0;n--)if(36!==e.charCodeAt(n))return!1;return!0}function d(e,t,n){var r=e.source-t.source;return 0!==r?r:0!==(r=e.originalLine-t.originalLine)?r:0!==(r=e.originalColumn-t.originalColumn)||n?r:0!==(r=e.generatedColumn-t.generatedColumn)?r:(r=e.generatedLine-t.generatedLine,0!==r?r:e.name-t.name)}function p(e,t,n){var r=e.generatedLine-t.generatedLine;return 0!==r?r:0!==(r=e.generatedColumn-t.generatedColumn)||n?r:0!==(r=e.source-t.source)?r:0!==(r=e.originalLine-t.originalLine)?r:(r=e.originalColumn-t.originalColumn,0!==r?r:e.name-t.name)}function f(e,t){return e===t?0:e>t?1:-1}function m(e,t){var n=e.generatedLine-t.generatedLine;return 0!==n?n:0!==(n=e.generatedColumn-t.generatedColumn)?n:0!==(n=f(e.source,t.source))?n:0!==(n=e.originalLine-t.originalLine)?n:(n=e.originalColumn-t.originalColumn,0!==n?n:f(e.name,t.name))}t.getArg=n;var g=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/,y=/^data:.+\,.+$/;t.urlParse=r,t.urlGenerate=a,t.normalize=i,t.join=o,t.isAbsolute=function(e){return"/"===e.charAt(0)||!!e.match(g)},t.relative=s;var h=function(){return!("__proto__"in Object.create(null))}();t.toSetString=h?c:u,t.fromSetString=h?c:l,t.compareByOriginalPositions=d,t.compareByGeneratedPositionsDeflated=p,t.compareByGeneratedPositionsInflated=m;}),util$3=util$1,has=Object.prototype.hasOwnProperty;ArraySet$1.fromArray=function(e,t){for(var n=new ArraySet$1,r=0,a=e.length;r=0&&e0&&e.column>=0)||t||n||r)&&!(e&&"line"in e&&"column"in e&&t&&"line"in t&&"column"in t&&e.line>0&&e.column>=0&&t.line>0&&t.column>=0&&n))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:n,original:t,name:r}))},SourceMapGenerator$1.prototype._serializeMappings=function(){for(var e,t,n,r,a=0,i=1,o=0,s=0,c=0,u=0,l="",_=this._mappings.toArray(),d=0,p=_.length;d0){if(!util.compareByGeneratedPositionsInflated(t,_[d-1]))continue;e+=",";}e+=base64VLQ.encode(t.generatedColumn-a),a=t.generatedColumn,null!=t.source&&(r=this._sources.indexOf(t.source),e+=base64VLQ.encode(r-u),u=r,e+=base64VLQ.encode(t.originalLine-1-s),s=t.originalLine-1,e+=base64VLQ.encode(t.originalColumn-o),o=t.originalColumn,null!=t.name&&(n=this._names.indexOf(t.name),e+=base64VLQ.encode(n-c),c=n)),l+=e;}return l},SourceMapGenerator$1.prototype._generateSourcesContent=function(e,t){return e.map(function(e){if(!this._sourcesContents)return null;null!=t&&(e=util.relative(t,e));var n=util.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,n)?this._sourcesContents[n]:null},this)},SourceMapGenerator$1.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},SourceMapGenerator$1.prototype.toString=function(){return JSON.stringify(this.toJSON())};var SourceMapGenerator_1=SourceMapGenerator$1,sourceMapGenerator={SourceMapGenerator:SourceMapGenerator_1},binarySearch$1=createCommonjsModule$$1(function(e,t){function n(e,r,a,i,o,s){var c=Math.floor((r-e)/2)+e,u=o(a,i[c],!0);return 0===u?c:u>0?r-c>1?n(c,r,a,i,o,s):s==t.LEAST_UPPER_BOUND?r1?n(e,c,a,i,o,s):s==t.LEAST_UPPER_BOUND?c:e<0?-1:e}t.GREATEST_LOWER_BOUND=1,t.LEAST_UPPER_BOUND=2,t.search=function(e,r,a,i){if(0===r.length)return-1;var o=n(-1,r.length,e,r,a,i||t.GREATEST_LOWER_BOUND);if(o<0)return-1;for(;o-1>=0&&0===a(r[o],r[o-1],!0);)--o;return o};}),quickSort_1=function(e,t){doQuickSort(e,t,0,e.length-1);},quickSort$1={quickSort:quickSort_1},util$5=util$1,binarySearch=binarySearch$1,ArraySet$2=arraySet.ArraySet,base64VLQ$1=base64Vlq,quickSort=quickSort$1.quickSort;SourceMapConsumer$2.fromSourceMap=function(e){return BasicSourceMapConsumer.fromSourceMap(e)},SourceMapConsumer$2.prototype._version=3,SourceMapConsumer$2.prototype.__generatedMappings=null,Object.defineProperty(SourceMapConsumer$2.prototype,"_generatedMappings",{get:function(){return this.__generatedMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__generatedMappings}}),SourceMapConsumer$2.prototype.__originalMappings=null,Object.defineProperty(SourceMapConsumer$2.prototype,"_originalMappings",{get:function(){return this.__originalMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__originalMappings}}),SourceMapConsumer$2.prototype._charIsMappingSeparator=function(e,t){var n=e.charAt(t);return";"===n||","===n},SourceMapConsumer$2.prototype._parseMappings=function(e,t){throw new Error("Subclasses must implement _parseMappings")},SourceMapConsumer$2.GENERATED_ORDER=1,SourceMapConsumer$2.ORIGINAL_ORDER=2,SourceMapConsumer$2.GREATEST_LOWER_BOUND=1,SourceMapConsumer$2.LEAST_UPPER_BOUND=2,SourceMapConsumer$2.prototype.eachMapping=function(e,t,n){var r,a=t||null;switch(n||SourceMapConsumer$2.GENERATED_ORDER){case SourceMapConsumer$2.GENERATED_ORDER:r=this._generatedMappings;break;case SourceMapConsumer$2.ORIGINAL_ORDER:r=this._originalMappings;break;default:throw new Error("Unknown order of iteration.")}var i=this.sourceRoot;r.map(function(e){var t=null===e.source?null:this._sources.at(e.source);return null!=t&&null!=i&&(t=util$5.join(i,t)),{source:t,generatedLine:e.generatedLine,generatedColumn:e.generatedColumn,originalLine:e.originalLine,originalColumn:e.originalColumn,name:null===e.name?null:this._names.at(e.name)}},this).forEach(e,a);},SourceMapConsumer$2.prototype.allGeneratedPositionsFor=function(e){var t=util$5.getArg(e,"line"),n={source:util$5.getArg(e,"source"),originalLine:t,originalColumn:util$5.getArg(e,"column",0)};if(null!=this.sourceRoot&&(n.source=util$5.relative(this.sourceRoot,n.source)),!this._sources.has(n.source))return[];n.source=this._sources.indexOf(n.source);var r=[],a=this._findMapping(n,this._originalMappings,"originalLine","originalColumn",util$5.compareByOriginalPositions,binarySearch.LEAST_UPPER_BOUND);if(a>=0){var i=this._originalMappings[a];if(void 0===e.column)for(var o=i.originalLine;i&&i.originalLine===o;)r.push({line:util$5.getArg(i,"generatedLine",null),column:util$5.getArg(i,"generatedColumn",null),lastColumn:util$5.getArg(i,"lastGeneratedColumn",null)}),i=this._originalMappings[++a];else for(var s=i.originalColumn;i&&i.originalLine===t&&i.originalColumn==s;)r.push({line:util$5.getArg(i,"generatedLine",null),column:util$5.getArg(i,"generatedColumn",null),lastColumn:util$5.getArg(i,"lastGeneratedColumn",null)}),i=this._originalMappings[++a];}return r};var SourceMapConsumer_1=SourceMapConsumer$2;BasicSourceMapConsumer.prototype=Object.create(SourceMapConsumer$2.prototype),BasicSourceMapConsumer.prototype.consumer=SourceMapConsumer$2,BasicSourceMapConsumer.fromSourceMap=function(e){var t=Object.create(BasicSourceMapConsumer.prototype),n=t._names=ArraySet$2.fromArray(e._names.toArray(),!0),r=t._sources=ArraySet$2.fromArray(e._sources.toArray(),!0);t.sourceRoot=e._sourceRoot,t.sourcesContent=e._generateSourcesContent(t._sources.toArray(),t.sourceRoot),t.file=e._file;for(var a=e._mappings.toArray().slice(),i=t.__generatedMappings=[],o=t.__originalMappings=[],s=0,c=a.length;s1&&(n.source=_+a[1],_+=a[1],n.originalLine=u+a[2],u=n.originalLine,n.originalLine+=1,n.originalColumn=l+a[3],l=n.originalColumn,a.length>4&&(n.name=d+a[4],d+=a[4])),h.push(n),"number"==typeof n.originalLine&&y.push(n);}quickSort(h,util$5.compareByGeneratedPositionsDeflated),this.__generatedMappings=h,quickSort(y,util$5.compareByOriginalPositions),this.__originalMappings=y;},BasicSourceMapConsumer.prototype._findMapping=function(e,t,n,r,a,i){if(e[n]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[n]);if(e[r]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[r]);return binarySearch.search(e,t,a,i)},BasicSourceMapConsumer.prototype.computeColumnSpans=function(){for(var e=0;e=0){var r=this._generatedMappings[n];if(r.generatedLine===t.generatedLine){var a=util$5.getArg(r,"source",null);null!==a&&(a=this._sources.at(a),null!=this.sourceRoot&&(a=util$5.join(this.sourceRoot,a)));var i=util$5.getArg(r,"name",null);return null!==i&&(i=this._names.at(i)),{source:a,line:util$5.getArg(r,"originalLine",null),column:util$5.getArg(r,"originalColumn",null),name:i}}}return{source:null,line:null,column:null,name:null}},BasicSourceMapConsumer.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&(this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e}))},BasicSourceMapConsumer.prototype.sourceContentFor=function(e,t){if(!this.sourcesContent)return null;if(null!=this.sourceRoot&&(e=util$5.relative(this.sourceRoot,e)),this._sources.has(e))return this.sourcesContent[this._sources.indexOf(e)];var n;if(null!=this.sourceRoot&&(n=util$5.urlParse(this.sourceRoot))){var r=e.replace(/^file:\/\//,"");if("file"==n.scheme&&this._sources.has(r))return this.sourcesContent[this._sources.indexOf(r)];if((!n.path||"/"==n.path)&&this._sources.has("/"+e))return this.sourcesContent[this._sources.indexOf("/"+e)]}if(t)return null;throw new Error('"'+e+'" is not in the SourceMap.')},BasicSourceMapConsumer.prototype.generatedPositionFor=function(e){var t=util$5.getArg(e,"source");if(null!=this.sourceRoot&&(t=util$5.relative(this.sourceRoot,t)),!this._sources.has(t))return{line:null,column:null,lastColumn:null};var n={source:t=this._sources.indexOf(t),originalLine:util$5.getArg(e,"line"),originalColumn:util$5.getArg(e,"column")},r=this._findMapping(n,this._originalMappings,"originalLine","originalColumn",util$5.compareByOriginalPositions,util$5.getArg(e,"bias",SourceMapConsumer$2.GREATEST_LOWER_BOUND));if(r>=0){var a=this._originalMappings[r];if(a.source===n.source)return{line:util$5.getArg(a,"generatedLine",null),column:util$5.getArg(a,"generatedColumn",null),lastColumn:util$5.getArg(a,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}};var BasicSourceMapConsumer_1=BasicSourceMapConsumer;IndexedSourceMapConsumer.prototype=Object.create(SourceMapConsumer$2.prototype),IndexedSourceMapConsumer.prototype.constructor=SourceMapConsumer$2,IndexedSourceMapConsumer.prototype._version=3,Object.defineProperty(IndexedSourceMapConsumer.prototype,"sources",{get:function(){for(var e=[],t=0;t0&&(u&&r(u,o()),a.add(i.join(""))),t.sources.forEach(function(e){var r=t.sourceContentFor(e);null!=r&&(null!=n&&(e=util$6.join(n,e)),a.setSourceContent(e,r));}),a},SourceNode$1.prototype.add=function(e){if(Array.isArray(e))e.forEach(function(e){this.add(e);},this);else{if(!e[isSourceNode]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);e&&this.children.push(e);}return this},SourceNode$1.prototype.prepend=function(e){if(Array.isArray(e))for(var t=e.length-1;t>=0;t--)this.prepend(e[t]);else{if(!e[isSourceNode]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e);}return this},SourceNode$1.prototype.walk=function(e){for(var t,n=0,r=this.children.length;n0){for(t=[],n=0;n0;for(var n=0,r=e;n0?e[0]:void 0}function J(e){return e&&e.length>0?e[e.length-1]:void 0}function z(e){return e&&1===e.length?e[0]:void 0}function U(e){return e&&1===e.length?e[0]:e}function V(e,t,n){var r=e.slice(0);return r[t]=n,r}function q(e,t,n,r){if(!e||0===e.length)return-1;var a=r||0,i=e.length-1;for(n=void 0!==n?n:function(e,t){return et?1:0};a<=i;){var o=a+(i-a>>1),s=e[o];if(0===n(s,t))return o;n(s,t)>0?i=o-1:a=o+1;}return~a}function $(e,t,n,r,a){if(e&&e.length>0){var i=e.length;if(i>0){var o=void 0===r||r<0?0:r,s=void 0===a||o+a>i-1?i-1:o+a,c=void 0;for(arguments.length<=2?(c=e[o],o++):c=n;o<=s;)c=t(c,e[o],o),o++;return c}}return n}function G(e,t,n,r,a){if(e){var i=e.length;if(i>0){var o=void 0===r||r>i-1?i-1:r,s=void 0===a||o-a<0?0:o-a,c=void 0;for(arguments.length<=2?(c=e[o],o--):c=n;o>=s;)c=t(c,e[o],o),o--;return c}}return n}function W(e,t){return rn.call(e,t)}function H(e,t){return rn.call(e,t)?e[t]:void 0}function X(e){var t=[];for(var n in e)rn.call(e,n)&&t.push(n);return t}function Y(e,t){for(var n=[],r=e.next(),a=r.value,i=r.done;!i;o=e.next(),a=o.value,i=o.done,o)n.push(t?t(a):a);return n;var o;}function Q(e,t){for(var n=[],r=e.next(),a=r.value,i=r.done;!i;o=e.next(),a=o.value,i=o.done,o)n.push(t(a));return n;var o;}function Z(e,t){for(var n=e.entries(),r=n.next(),a=r.value,i=r.done;!i;c=n.next(),a=c.value,i=c.done,c){var o=a[0],s=t(a[1],o);if(s)return s}return;var c;}function ee(e,t){for(var n=e.keys(),r=n.next(),a=r.value,i=r.done;!i;s=n.next(),a=s.value,i=s.done,s){var o=t(a);if(o)return o}return;var s;}function te(e,t){e.forEach(function(e,n){t.set(n,e);});}function ne(e){for(var t=[],n=1;n=0,"start must be non-negative, is "+t),dn.assert(n>=0,"length must be non-negative, is "+n),e&&(dn.assert(t<=e.text.length,"start must be within the bounds of the file. "+t+" > "+e.text.length),dn.assert(a<=e.text.length,"end must be the bounds of the file. "+a+" > "+e.text.length));var i=he(r);return arguments.length>4&&(i=ye(i,arguments,4)),{file:e,start:t,length:n,messageText:i,category:r.category,code:r.code}}function be(e,t){var n=he(t);return arguments.length>2&&(n=ye(n,arguments,2)),n}function xe(e){var t=he(e);return arguments.length>1&&(t=ye(t,arguments,1)),{file:void 0,start:void 0,length:void 0,messageText:t,category:e.category,code:e.code}}function ke(e){return{file:void 0,start:void 0,length:void 0,code:e.code,category:e.category,messageText:e.next?e:e.messageText}}function Se(e,t){var n=he(t);return arguments.length>2&&(n=ye(n,arguments,2)),{messageText:n,category:t.category,code:t.code,next:e}}function Te(e,t){for(var n=e;n.next;)n=n.next;return n.next=t,e}function Ce(e,t){return e===t?0:void 0===e?-1:void 0===t?1:e0?1:0}if(t=t.toUpperCase(),n=n.toUpperCase(),t===n)return 0}return t0&&".."!==J(r)?r.pop():o&&r.push(o));}return r}function Me(t){var n=Ie(t=Fe(t)),r=t.substr(0,n),a=Re(t,n);if(a.length){var i=r+a.join(e.directorySeparator);return Le(t)?i+e.directorySeparator:i}return r}function Le(e){return e.charCodeAt(e.length-1)===an}function Be(t){return t.substr(0,Math.max(Ie(t),t.lastIndexOf(e.directorySeparator)))}function Ke(e){return e&&!qe(e)&&-1!==e.indexOf("://")}function je(e){return/^\.\.?($|[\\/])/.test(e)}function Je(e){return e.target||0}function ze(t){return"number"==typeof t.module?t.module:Je(t)>=2?e.ModuleKind.ES2015:e.ModuleKind.CommonJS}function Ue(t){var n=t.moduleResolution;return void 0===n&&(n=ze(t)===e.ModuleKind.CommonJS?e.ModuleResolutionKind.NodeJs:e.ModuleResolutionKind.Classic),n}function Ve(e){for(var t=!1,n=0;n1&&""===J(s)&&s.length--;var c;for(c=0;c=0&&e.indexOf(t,n)===n}function ct(e){return et(e).indexOf(".")>=0}function ut(e,t){return e.length>t.length&&st(e,t)}function lt(e,t){for(var n=0,r=t;n0;)s+=")?",d--;return s}}function mt(e){return yt(e,cn)}function gt(e){return yt(e,un)}function yt(e,t){return"*"===e?t:"?"===e?"[^/]":"\\"+e}function ht(e,t,n,r,a){e=Me(e);var i=tt(a=Me(a),e);return{includeFilePatterns:x(dt(n,i,"files"),function(e){return"^"+e+"$"}),includeFilePattern:_t(n,i,"files"),includeDirectoryPattern:_t(n,i,"directories"),excludePattern:_t(t,i,"exclude"),basePaths:bt(e,n,r)}}function vt(e,t,n,r,a,i,o){function s(e,n){var r=o(e),a=r.files,i=r.directories;a=a.slice().sort(m),i=i.slice().sort(m);for(var c=0,u=a;c=0;n--)if(ut(e,t[n]))return At(n,t);return 0}function At(e,t){return e<2?0:ea&&(a=c.prefix.length,r=s);}return r}function Ht(e,t){var n=e.prefix,r=e.suffix;return t.length>=n.length+r.length&&ot(t,n)&&st(t,r)}function Xt(e){dn.assert(Ve(e));var t=e.indexOf("*");return-1===t?void 0:{prefix:e.substr(0,t),suffix:e.substr(t+1)}}function Yt(e){return!(e>=0)}function Qt(t){return t<=e.Extension.LastTypeScriptExtension}function Zt(e){var t=en(e);if(void 0!==t)return t;dn.fail("File "+e+" has unknown extension.");}function en(t){return ut(t,".d.ts")?e.Extension.Dts:ut(t,".ts")?e.Extension.Ts:ut(t,".tsx")?e.Extension.Tsx:ut(t,".js")?e.Extension.Js:ut(t,".jsx")?e.Extension.Jsx:void 0}function tn(e,t){return e.checkJsDirective?e.checkJsDirective.enabled:t.checkJs}!function(e){e[e.False=0]="False",e[e.Maybe=1]="Maybe",e[e.True=-1]="True";}(e.Ternary||(e.Ternary={})),e.collator="object"==typeof Intl&&"function"==typeof Intl.Collator?new Intl.Collator(void 0,{usage:"sort",sensitivity:"accent"}):void 0,e.localeCompareIsCorrect=e.collator&&e.collator.compare("a","B")<0,e.createMap=n,e.createMapFromTemplate=r;var nn="undefined"!=typeof Map&&"entries"in Map.prototype?Map:function(){var e=function(){function e(e,t){this.index=0,this.data=e,this.selector=t,this.keys=Object.keys(e);}return e.prototype.next=function(){var e=this.index;return e=t}function n(e,t,n){if(!e){var r="";throw n&&(r="\r\nVerbose Debug Information: "+n()),new Error("Debug Failure. False expression: "+(t||"")+r)}}function r(t){e.assert(!1,t);}e.currentAssertionLevel=0,e.shouldAssert=t,e.assert=n,e.fail=r;}(dn=e.Debug||(e.Debug={})),e.orderedRemoveItem=Kt,e.orderedRemoveItemAt=jt,e.unorderedRemoveItemAt=Jt,e.unorderedRemoveItem=zt,e.createGetCanonicalFileName=Vt,e.matchPatternOrExact=qt,e.patternText=$t,e.matchedText=Gt,e.findBestPatternMatch=Wt,e.tryParsePattern=Xt,e.positionIsSynthesized=Yt,e.extensionIsTypeScript=Qt,e.extensionFromPath=Zt,e.tryGetExtensionFromPath=en,e.isCheckJsEnabledForFile=tn;}(r||(r={}));!function(e){function t(){if("undefined"!=typeof process){var e=process.version;if(e){var t=e.indexOf(".");if(-1!==t)return parseInt(e.substring(1,t))}}}e.getNodeMajorVersion=t,e.sys=function(){function n(t,r){var a=e.getDirectoryPath(t),i=t!==a&&!r.directoryExists(a);i&&n(a,r),!i&&r.directoryExists(t)||r.createDirectory(t);}var r;if("undefined"!=typeof ChakraHost?r=function(){var t=ChakraHost.realpath&&function(e){return ChakraHost.realpath(e)};return{newLine:ChakraHost.newLine||"\r\n",args:ChakraHost.args,useCaseSensitiveFileNames:!!ChakraHost.useCaseSensitiveFileNames,write:ChakraHost.echo,readFile:function(e,t){return ChakraHost.readFile(e)},writeFile:function(e,t,n){n&&(t="\ufeff"+t),ChakraHost.writeFile(e,t);},resolvePath:ChakraHost.resolvePath,fileExists:ChakraHost.fileExists,directoryExists:ChakraHost.directoryExists,createDirectory:ChakraHost.createDirectory,getExecutingFilePath:function(){return ChakraHost.executingFile},getCurrentDirectory:function(){return ChakraHost.currentDirectory},getDirectories:ChakraHost.getDirectories,getEnvironmentVariable:ChakraHost.getEnvironmentVariable||function(){return""},readDirectory:function(t,n,r,a){var i=e.getFileMatcherPatterns(t,r,a,!!ChakraHost.useCaseSensitiveFileNames,ChakraHost.currentDirectory);return ChakraHost.readDirectory(t,n,i.basePaths,i.excludePattern,i.includeFilePattern,i.includeDirectoryPattern)},exit:ChakraHost.quit,realpath:t}}():"undefined"!=typeof process&&nextTick&&!browser$1&&void 0!==commonjsRequire$$1&&(r=function(){function n(e,t){if(s(e)){var n=_.readFileSync(e),r=n.length;if(r>=2&&254===n[0]&&255===n[1]){r&=-2;for(var a=0;a=2&&255===n[0]&&254===n[1]?n.toString("utf16le",2):r>=3&&239===n[0]&&187===n[1]&&191===n[2]?n.toString("utf8",3):n.toString("utf8")}}function r(e,t,n){n&&(t="\ufeff"+t);var r;try{r=_.openSync(e,"w"),_.writeSync(r,t,void 0,"utf8");}finally{void 0!==r&&_.closeSync(r);}}function a(t){try{for(var n=[],r=[],a=0,i=_.readdirSync(t||".").sort();a=4,h=p.platform(),v=function(){return"win32"!==h&&"win64"!==h&&(!s(__filename.toUpperCase())||!s(__filename.toLowerCase()))}();!function(e){e[e.File=0]="File",e[e.Directory=1]="Directory";}(l||(l={}));var b={close:e.noop},x={args:process.argv.slice(2),newLine:p.EOL,useCaseSensitiveFileNames:v,write:function(e){process.stdout.write(e);},readFile:n,writeFile:r,watchFile:function(e,t,n){function r(n,r){+n.mtime<=+r.mtime||t(e);}if(m){var a=g.addFile(e,t);return{close:function(){return g.removeFile(a)}}}return _.watchFile(e,{persistent:!0,interval:n||250},r),{close:function(){return _.unwatchFile(e,r)}}},watchDirectory:function(t,n,r){var a;return c(t)?(a=!y||"win32"!==process.platform&&"darwin"!==process.platform?{persistent:!0}:{persistent:!0,recursive:!!r},_.watch(t,a,function(r,a){"rename"===r&&n(a?e.normalizePath(e.combinePaths(t,a)):a);})):b},resolvePath:function(e){return d.resolve(e)},fileExists:s,directoryExists:c,createDirectory:function(e){x.directoryExists(e)||_.mkdirSync(e);},getExecutingFilePath:function(){return __filename},getCurrentDirectory:function(){return process.cwd()},getDirectories:u,getEnvironmentVariable:function(e){return process.env[e]||""},readDirectory:i,getModifiedTime:function(e){try{return _.statSync(e).mtime}catch(e){return}},createHash:function(e){var t=f.createHash("md5");return t.update(e),t.digest("hex")},getMemoryUsage:function(){return commonjsGlobal$$1.gc&&commonjsGlobal$$1.gc(),process.memoryUsage().heapUsed},getFileSize:function(e){try{var t=_.statSync(e);if(t.isFile())return t.size}catch(e){}return 0},exit:function(e){process.exit(e);},realpath:function(e){return _.realpathSync(e)},tryEnableSourceMapsForHost:function(){try{sourceMapSupport.install();}catch(e){}},setTimeout:setTimeout,clearTimeout:clearTimeout};return x}()),r){var a=r.writeFile;r.writeFile=function(t,i,o){var s=e.getDirectoryPath(e.normalizeSlashes(t));s&&!r.directoryExists(s)&&n(s,r),a.call(r,t,i,o);};}return r}(),e.sys&&e.sys.getEnvironmentVariable&&(e.Debug.currentAssertionLevel=/^development$/i.test(e.sys.getEnvironmentVariable("NODE_ENV"))?1:0);}(r||(r={}));!function(e){e.Diagnostics={Unterminated_string_literal:{code:1002,category:e.DiagnosticCategory.Error,key:"Unterminated_string_literal_1002",message:"Unterminated string literal."},Identifier_expected:{code:1003,category:e.DiagnosticCategory.Error,key:"Identifier_expected_1003",message:"Identifier expected."},_0_expected:{code:1005,category:e.DiagnosticCategory.Error,key:"_0_expected_1005",message:"'{0}' expected."},A_file_cannot_have_a_reference_to_itself:{code:1006,category:e.DiagnosticCategory.Error,key:"A_file_cannot_have_a_reference_to_itself_1006",message:"A file cannot have a reference to itself."},Trailing_comma_not_allowed:{code:1009,category:e.DiagnosticCategory.Error,key:"Trailing_comma_not_allowed_1009",message:"Trailing comma not allowed."},Asterisk_Slash_expected:{code:1010,category:e.DiagnosticCategory.Error,key:"Asterisk_Slash_expected_1010",message:"'*/' expected."},Unexpected_token:{code:1012,category:e.DiagnosticCategory.Error,key:"Unexpected_token_1012",message:"Unexpected token."},A_rest_parameter_must_be_last_in_a_parameter_list:{code:1014,category:e.DiagnosticCategory.Error,key:"A_rest_parameter_must_be_last_in_a_parameter_list_1014",message:"A rest parameter must be last in a parameter list."},Parameter_cannot_have_question_mark_and_initializer:{code:1015,category:e.DiagnosticCategory.Error,key:"Parameter_cannot_have_question_mark_and_initializer_1015",message:"Parameter cannot have question mark and initializer."},A_required_parameter_cannot_follow_an_optional_parameter:{code:1016,category:e.DiagnosticCategory.Error,key:"A_required_parameter_cannot_follow_an_optional_parameter_1016",message:"A required parameter cannot follow an optional parameter."},An_index_signature_cannot_have_a_rest_parameter:{code:1017,category:e.DiagnosticCategory.Error,key:"An_index_signature_cannot_have_a_rest_parameter_1017",message:"An index signature cannot have a rest parameter."},An_index_signature_parameter_cannot_have_an_accessibility_modifier:{code:1018,category:e.DiagnosticCategory.Error,key:"An_index_signature_parameter_cannot_have_an_accessibility_modifier_1018",message:"An index signature parameter cannot have an accessibility modifier."},An_index_signature_parameter_cannot_have_a_question_mark:{code:1019,category:e.DiagnosticCategory.Error,key:"An_index_signature_parameter_cannot_have_a_question_mark_1019",message:"An index signature parameter cannot have a question mark."},An_index_signature_parameter_cannot_have_an_initializer:{code:1020,category:e.DiagnosticCategory.Error,key:"An_index_signature_parameter_cannot_have_an_initializer_1020",message:"An index signature parameter cannot have an initializer."},An_index_signature_must_have_a_type_annotation:{code:1021,category:e.DiagnosticCategory.Error,key:"An_index_signature_must_have_a_type_annotation_1021",message:"An index signature must have a type annotation."},An_index_signature_parameter_must_have_a_type_annotation:{code:1022,category:e.DiagnosticCategory.Error,key:"An_index_signature_parameter_must_have_a_type_annotation_1022",message:"An index signature parameter must have a type annotation."},An_index_signature_parameter_type_must_be_string_or_number:{code:1023,category:e.DiagnosticCategory.Error,key:"An_index_signature_parameter_type_must_be_string_or_number_1023",message:"An index signature parameter type must be 'string' or 'number'."},readonly_modifier_can_only_appear_on_a_property_declaration_or_index_signature:{code:1024,category:e.DiagnosticCategory.Error,key:"readonly_modifier_can_only_appear_on_a_property_declaration_or_index_signature_1024",message:"'readonly' modifier can only appear on a property declaration or index signature."},Accessibility_modifier_already_seen:{code:1028,category:e.DiagnosticCategory.Error,key:"Accessibility_modifier_already_seen_1028",message:"Accessibility modifier already seen."},_0_modifier_must_precede_1_modifier:{code:1029,category:e.DiagnosticCategory.Error,key:"_0_modifier_must_precede_1_modifier_1029",message:"'{0}' modifier must precede '{1}' modifier."},_0_modifier_already_seen:{code:1030,category:e.DiagnosticCategory.Error,key:"_0_modifier_already_seen_1030",message:"'{0}' modifier already seen."},_0_modifier_cannot_appear_on_a_class_element:{code:1031,category:e.DiagnosticCategory.Error,key:"_0_modifier_cannot_appear_on_a_class_element_1031",message:"'{0}' modifier cannot appear on a class element."},super_must_be_followed_by_an_argument_list_or_member_access:{code:1034,category:e.DiagnosticCategory.Error,key:"super_must_be_followed_by_an_argument_list_or_member_access_1034",message:"'super' must be followed by an argument list or member access."},Only_ambient_modules_can_use_quoted_names:{code:1035,category:e.DiagnosticCategory.Error,key:"Only_ambient_modules_can_use_quoted_names_1035",message:"Only ambient modules can use quoted names."},Statements_are_not_allowed_in_ambient_contexts:{code:1036,category:e.DiagnosticCategory.Error,key:"Statements_are_not_allowed_in_ambient_contexts_1036",message:"Statements are not allowed in ambient contexts."},A_declare_modifier_cannot_be_used_in_an_already_ambient_context:{code:1038,category:e.DiagnosticCategory.Error,key:"A_declare_modifier_cannot_be_used_in_an_already_ambient_context_1038",message:"A 'declare' modifier cannot be used in an already ambient context."},Initializers_are_not_allowed_in_ambient_contexts:{code:1039,category:e.DiagnosticCategory.Error,key:"Initializers_are_not_allowed_in_ambient_contexts_1039",message:"Initializers are not allowed in ambient contexts."},_0_modifier_cannot_be_used_in_an_ambient_context:{code:1040,category:e.DiagnosticCategory.Error,key:"_0_modifier_cannot_be_used_in_an_ambient_context_1040",message:"'{0}' modifier cannot be used in an ambient context."},_0_modifier_cannot_be_used_with_a_class_declaration:{code:1041,category:e.DiagnosticCategory.Error,key:"_0_modifier_cannot_be_used_with_a_class_declaration_1041",message:"'{0}' modifier cannot be used with a class declaration."},_0_modifier_cannot_be_used_here:{code:1042,category:e.DiagnosticCategory.Error,key:"_0_modifier_cannot_be_used_here_1042",message:"'{0}' modifier cannot be used here."},_0_modifier_cannot_appear_on_a_data_property:{code:1043,category:e.DiagnosticCategory.Error,key:"_0_modifier_cannot_appear_on_a_data_property_1043",message:"'{0}' modifier cannot appear on a data property."},_0_modifier_cannot_appear_on_a_module_or_namespace_element:{code:1044,category:e.DiagnosticCategory.Error,key:"_0_modifier_cannot_appear_on_a_module_or_namespace_element_1044",message:"'{0}' modifier cannot appear on a module or namespace element."},A_0_modifier_cannot_be_used_with_an_interface_declaration:{code:1045,category:e.DiagnosticCategory.Error,key:"A_0_modifier_cannot_be_used_with_an_interface_declaration_1045",message:"A '{0}' modifier cannot be used with an interface declaration."},A_declare_modifier_is_required_for_a_top_level_declaration_in_a_d_ts_file:{code:1046,category:e.DiagnosticCategory.Error,key:"A_declare_modifier_is_required_for_a_top_level_declaration_in_a_d_ts_file_1046",message:"A 'declare' modifier is required for a top level declaration in a .d.ts file."},A_rest_parameter_cannot_be_optional:{code:1047,category:e.DiagnosticCategory.Error,key:"A_rest_parameter_cannot_be_optional_1047",message:"A rest parameter cannot be optional."},A_rest_parameter_cannot_have_an_initializer:{code:1048,category:e.DiagnosticCategory.Error,key:"A_rest_parameter_cannot_have_an_initializer_1048",message:"A rest parameter cannot have an initializer."},A_set_accessor_must_have_exactly_one_parameter:{code:1049,category:e.DiagnosticCategory.Error,key:"A_set_accessor_must_have_exactly_one_parameter_1049",message:"A 'set' accessor must have exactly one parameter."},A_set_accessor_cannot_have_an_optional_parameter:{code:1051,category:e.DiagnosticCategory.Error,key:"A_set_accessor_cannot_have_an_optional_parameter_1051",message:"A 'set' accessor cannot have an optional parameter."},A_set_accessor_parameter_cannot_have_an_initializer:{code:1052,category:e.DiagnosticCategory.Error,key:"A_set_accessor_parameter_cannot_have_an_initializer_1052",message:"A 'set' accessor parameter cannot have an initializer."},A_set_accessor_cannot_have_rest_parameter:{code:1053,category:e.DiagnosticCategory.Error,key:"A_set_accessor_cannot_have_rest_parameter_1053",message:"A 'set' accessor cannot have rest parameter."},A_get_accessor_cannot_have_parameters:{code:1054,category:e.DiagnosticCategory.Error,key:"A_get_accessor_cannot_have_parameters_1054",message:"A 'get' accessor cannot have parameters."},Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value:{code:1055,category:e.DiagnosticCategory.Error,key:"Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Prom_1055",message:"Type '{0}' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value."},Accessors_are_only_available_when_targeting_ECMAScript_5_and_higher:{code:1056,category:e.DiagnosticCategory.Error,key:"Accessors_are_only_available_when_targeting_ECMAScript_5_and_higher_1056",message:"Accessors are only available when targeting ECMAScript 5 and higher."},An_async_function_or_method_must_have_a_valid_awaitable_return_type:{code:1057,category:e.DiagnosticCategory.Error,key:"An_async_function_or_method_must_have_a_valid_awaitable_return_type_1057",message:"An async function or method must have a valid awaitable return type."},The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member:{code:1058,category:e.DiagnosticCategory.Error,key:"The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_t_1058",message:"The return type of an async function must either be a valid promise or must not contain a callable 'then' member."},A_promise_must_have_a_then_method:{code:1059,category:e.DiagnosticCategory.Error,key:"A_promise_must_have_a_then_method_1059",message:"A promise must have a 'then' method."},The_first_parameter_of_the_then_method_of_a_promise_must_be_a_callback:{code:1060,category:e.DiagnosticCategory.Error,key:"The_first_parameter_of_the_then_method_of_a_promise_must_be_a_callback_1060",message:"The first parameter of the 'then' method of a promise must be a callback."},Enum_member_must_have_initializer:{code:1061,category:e.DiagnosticCategory.Error,key:"Enum_member_must_have_initializer_1061",message:"Enum member must have initializer."},Type_is_referenced_directly_or_indirectly_in_the_fulfillment_callback_of_its_own_then_method:{code:1062,category:e.DiagnosticCategory.Error,key:"Type_is_referenced_directly_or_indirectly_in_the_fulfillment_callback_of_its_own_then_method_1062",message:"Type is referenced directly or indirectly in the fulfillment callback of its own 'then' method."},An_export_assignment_cannot_be_used_in_a_namespace:{code:1063,category:e.DiagnosticCategory.Error,key:"An_export_assignment_cannot_be_used_in_a_namespace_1063",message:"An export assignment cannot be used in a namespace."},The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type:{code:1064,category:e.DiagnosticCategory.Error,key:"The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_1064",message:"The return type of an async function or method must be the global Promise type."},In_ambient_enum_declarations_member_initializer_must_be_constant_expression:{code:1066,category:e.DiagnosticCategory.Error,key:"In_ambient_enum_declarations_member_initializer_must_be_constant_expression_1066",message:"In ambient enum declarations member initializer must be constant expression."},Unexpected_token_A_constructor_method_accessor_or_property_was_expected:{code:1068,category:e.DiagnosticCategory.Error,key:"Unexpected_token_A_constructor_method_accessor_or_property_was_expected_1068",message:"Unexpected token. A constructor, method, accessor, or property was expected."},_0_modifier_cannot_appear_on_a_type_member:{code:1070,category:e.DiagnosticCategory.Error,key:"_0_modifier_cannot_appear_on_a_type_member_1070",message:"'{0}' modifier cannot appear on a type member."},_0_modifier_cannot_appear_on_an_index_signature:{code:1071,category:e.DiagnosticCategory.Error,key:"_0_modifier_cannot_appear_on_an_index_signature_1071",message:"'{0}' modifier cannot appear on an index signature."},A_0_modifier_cannot_be_used_with_an_import_declaration:{code:1079,category:e.DiagnosticCategory.Error,key:"A_0_modifier_cannot_be_used_with_an_import_declaration_1079",message:"A '{0}' modifier cannot be used with an import declaration."},Invalid_reference_directive_syntax:{code:1084,category:e.DiagnosticCategory.Error,key:"Invalid_reference_directive_syntax_1084",message:"Invalid 'reference' directive syntax."},Octal_literals_are_not_available_when_targeting_ECMAScript_5_and_higher_Use_the_syntax_0:{code:1085,category:e.DiagnosticCategory.Error,key:"Octal_literals_are_not_available_when_targeting_ECMAScript_5_and_higher_Use_the_syntax_0_1085",message:"Octal literals are not available when targeting ECMAScript 5 and higher. Use the syntax '{0}'."},An_accessor_cannot_be_declared_in_an_ambient_context:{code:1086,category:e.DiagnosticCategory.Error,key:"An_accessor_cannot_be_declared_in_an_ambient_context_1086",message:"An accessor cannot be declared in an ambient context."},_0_modifier_cannot_appear_on_a_constructor_declaration:{code:1089,category:e.DiagnosticCategory.Error,key:"_0_modifier_cannot_appear_on_a_constructor_declaration_1089",message:"'{0}' modifier cannot appear on a constructor declaration."},_0_modifier_cannot_appear_on_a_parameter:{code:1090,category:e.DiagnosticCategory.Error,key:"_0_modifier_cannot_appear_on_a_parameter_1090",message:"'{0}' modifier cannot appear on a parameter."},Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement:{code:1091,category:e.DiagnosticCategory.Error,key:"Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement_1091",message:"Only a single variable declaration is allowed in a 'for...in' statement."},Type_parameters_cannot_appear_on_a_constructor_declaration:{code:1092,category:e.DiagnosticCategory.Error,key:"Type_parameters_cannot_appear_on_a_constructor_declaration_1092",message:"Type parameters cannot appear on a constructor declaration."},Type_annotation_cannot_appear_on_a_constructor_declaration:{code:1093,category:e.DiagnosticCategory.Error,key:"Type_annotation_cannot_appear_on_a_constructor_declaration_1093",message:"Type annotation cannot appear on a constructor declaration."},An_accessor_cannot_have_type_parameters:{code:1094,category:e.DiagnosticCategory.Error,key:"An_accessor_cannot_have_type_parameters_1094",message:"An accessor cannot have type parameters."},A_set_accessor_cannot_have_a_return_type_annotation:{code:1095,category:e.DiagnosticCategory.Error,key:"A_set_accessor_cannot_have_a_return_type_annotation_1095",message:"A 'set' accessor cannot have a return type annotation."},An_index_signature_must_have_exactly_one_parameter:{code:1096,category:e.DiagnosticCategory.Error,key:"An_index_signature_must_have_exactly_one_parameter_1096",message:"An index signature must have exactly one parameter."},_0_list_cannot_be_empty:{code:1097,category:e.DiagnosticCategory.Error,key:"_0_list_cannot_be_empty_1097",message:"'{0}' list cannot be empty."},Type_parameter_list_cannot_be_empty:{code:1098,category:e.DiagnosticCategory.Error,key:"Type_parameter_list_cannot_be_empty_1098",message:"Type parameter list cannot be empty."},Type_argument_list_cannot_be_empty:{code:1099,category:e.DiagnosticCategory.Error,key:"Type_argument_list_cannot_be_empty_1099",message:"Type argument list cannot be empty."},Invalid_use_of_0_in_strict_mode:{code:1100,category:e.DiagnosticCategory.Error,key:"Invalid_use_of_0_in_strict_mode_1100",message:"Invalid use of '{0}' in strict mode."},with_statements_are_not_allowed_in_strict_mode:{code:1101,category:e.DiagnosticCategory.Error,key:"with_statements_are_not_allowed_in_strict_mode_1101",message:"'with' statements are not allowed in strict mode."},delete_cannot_be_called_on_an_identifier_in_strict_mode:{code:1102,category:e.DiagnosticCategory.Error,key:"delete_cannot_be_called_on_an_identifier_in_strict_mode_1102",message:"'delete' cannot be called on an identifier in strict mode."},A_for_await_of_statement_is_only_allowed_within_an_async_function_or_async_generator:{code:1103,category:e.DiagnosticCategory.Error,key:"A_for_await_of_statement_is_only_allowed_within_an_async_function_or_async_generator_1103",message:"A 'for-await-of' statement is only allowed within an async function or async generator."},A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement:{code:1104,category:e.DiagnosticCategory.Error,key:"A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement_1104",message:"A 'continue' statement can only be used within an enclosing iteration statement."},A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement:{code:1105,category:e.DiagnosticCategory.Error,key:"A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement_1105",message:"A 'break' statement can only be used within an enclosing iteration or switch statement."},Jump_target_cannot_cross_function_boundary:{code:1107,category:e.DiagnosticCategory.Error,key:"Jump_target_cannot_cross_function_boundary_1107",message:"Jump target cannot cross function boundary."},A_return_statement_can_only_be_used_within_a_function_body:{code:1108,category:e.DiagnosticCategory.Error,key:"A_return_statement_can_only_be_used_within_a_function_body_1108",message:"A 'return' statement can only be used within a function body."},Expression_expected:{code:1109,category:e.DiagnosticCategory.Error,key:"Expression_expected_1109",message:"Expression expected."},Type_expected:{code:1110,category:e.DiagnosticCategory.Error,key:"Type_expected_1110",message:"Type expected."},A_default_clause_cannot_appear_more_than_once_in_a_switch_statement:{code:1113,category:e.DiagnosticCategory.Error,key:"A_default_clause_cannot_appear_more_than_once_in_a_switch_statement_1113",message:"A 'default' clause cannot appear more than once in a 'switch' statement."},Duplicate_label_0:{code:1114,category:e.DiagnosticCategory.Error,key:"Duplicate_label_0_1114",message:"Duplicate label '{0}'."},A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement:{code:1115,category:e.DiagnosticCategory.Error,key:"A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement_1115",message:"A 'continue' statement can only jump to a label of an enclosing iteration statement."},A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement:{code:1116,category:e.DiagnosticCategory.Error,key:"A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement_1116",message:"A 'break' statement can only jump to a label of an enclosing statement."},An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode:{code:1117,category:e.DiagnosticCategory.Error,key:"An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode_1117",message:"An object literal cannot have multiple properties with the same name in strict mode."},An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name:{code:1118,category:e.DiagnosticCategory.Error,key:"An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name_1118",message:"An object literal cannot have multiple get/set accessors with the same name."},An_object_literal_cannot_have_property_and_accessor_with_the_same_name:{code:1119,category:e.DiagnosticCategory.Error,key:"An_object_literal_cannot_have_property_and_accessor_with_the_same_name_1119",message:"An object literal cannot have property and accessor with the same name."},An_export_assignment_cannot_have_modifiers:{code:1120,category:e.DiagnosticCategory.Error,key:"An_export_assignment_cannot_have_modifiers_1120",message:"An export assignment cannot have modifiers."},Octal_literals_are_not_allowed_in_strict_mode:{code:1121,category:e.DiagnosticCategory.Error,key:"Octal_literals_are_not_allowed_in_strict_mode_1121",message:"Octal literals are not allowed in strict mode."},A_tuple_type_element_list_cannot_be_empty:{code:1122,category:e.DiagnosticCategory.Error,key:"A_tuple_type_element_list_cannot_be_empty_1122",message:"A tuple type element list cannot be empty."},Variable_declaration_list_cannot_be_empty:{code:1123,category:e.DiagnosticCategory.Error,key:"Variable_declaration_list_cannot_be_empty_1123",message:"Variable declaration list cannot be empty."},Digit_expected:{code:1124,category:e.DiagnosticCategory.Error,key:"Digit_expected_1124",message:"Digit expected."},Hexadecimal_digit_expected:{code:1125,category:e.DiagnosticCategory.Error,key:"Hexadecimal_digit_expected_1125",message:"Hexadecimal digit expected."},Unexpected_end_of_text:{code:1126,category:e.DiagnosticCategory.Error,key:"Unexpected_end_of_text_1126",message:"Unexpected end of text."},Invalid_character:{code:1127,category:e.DiagnosticCategory.Error,key:"Invalid_character_1127",message:"Invalid character."},Declaration_or_statement_expected:{code:1128,category:e.DiagnosticCategory.Error,key:"Declaration_or_statement_expected_1128",message:"Declaration or statement expected."},Statement_expected:{code:1129,category:e.DiagnosticCategory.Error,key:"Statement_expected_1129",message:"Statement expected."},case_or_default_expected:{code:1130,category:e.DiagnosticCategory.Error,key:"case_or_default_expected_1130",message:"'case' or 'default' expected."},Property_or_signature_expected:{code:1131,category:e.DiagnosticCategory.Error,key:"Property_or_signature_expected_1131",message:"Property or signature expected."},Enum_member_expected:{code:1132,category:e.DiagnosticCategory.Error,key:"Enum_member_expected_1132",message:"Enum member expected."},Variable_declaration_expected:{code:1134,category:e.DiagnosticCategory.Error,key:"Variable_declaration_expected_1134",message:"Variable declaration expected."},Argument_expression_expected:{code:1135,category:e.DiagnosticCategory.Error,key:"Argument_expression_expected_1135",message:"Argument expression expected."},Property_assignment_expected:{code:1136,category:e.DiagnosticCategory.Error,key:"Property_assignment_expected_1136",message:"Property assignment expected."},Expression_or_comma_expected:{code:1137,category:e.DiagnosticCategory.Error,key:"Expression_or_comma_expected_1137",message:"Expression or comma expected."},Parameter_declaration_expected:{code:1138,category:e.DiagnosticCategory.Error,key:"Parameter_declaration_expected_1138",message:"Parameter declaration expected."},Type_parameter_declaration_expected:{code:1139,category:e.DiagnosticCategory.Error,key:"Type_parameter_declaration_expected_1139",message:"Type parameter declaration expected."},Type_argument_expected:{code:1140,category:e.DiagnosticCategory.Error,key:"Type_argument_expected_1140",message:"Type argument expected."},String_literal_expected:{code:1141,category:e.DiagnosticCategory.Error,key:"String_literal_expected_1141",message:"String literal expected."},Line_break_not_permitted_here:{code:1142,category:e.DiagnosticCategory.Error,key:"Line_break_not_permitted_here_1142",message:"Line break not permitted here."},or_expected:{code:1144,category:e.DiagnosticCategory.Error,key:"or_expected_1144",message:"'{' or ';' expected."},Declaration_expected:{code:1146,category:e.DiagnosticCategory.Error,key:"Declaration_expected_1146",message:"Declaration expected."},Import_declarations_in_a_namespace_cannot_reference_a_module:{code:1147,category:e.DiagnosticCategory.Error,key:"Import_declarations_in_a_namespace_cannot_reference_a_module_1147",message:"Import declarations in a namespace cannot reference a module."},Cannot_use_imports_exports_or_module_augmentations_when_module_is_none:{code:1148,category:e.DiagnosticCategory.Error,key:"Cannot_use_imports_exports_or_module_augmentations_when_module_is_none_1148",message:"Cannot use imports, exports, or module augmentations when '--module' is 'none'."},File_name_0_differs_from_already_included_file_name_1_only_in_casing:{code:1149,category:e.DiagnosticCategory.Error,key:"File_name_0_differs_from_already_included_file_name_1_only_in_casing_1149",message:"File name '{0}' differs from already included file name '{1}' only in casing."},new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead:{code:1150,category:e.DiagnosticCategory.Error,key:"new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead_1150",message:"'new T[]' cannot be used to create an array. Use 'new Array()' instead."},const_declarations_must_be_initialized:{code:1155,category:e.DiagnosticCategory.Error,key:"const_declarations_must_be_initialized_1155",message:"'const' declarations must be initialized."},const_declarations_can_only_be_declared_inside_a_block:{code:1156,category:e.DiagnosticCategory.Error,key:"const_declarations_can_only_be_declared_inside_a_block_1156",message:"'const' declarations can only be declared inside a block."},let_declarations_can_only_be_declared_inside_a_block:{code:1157,category:e.DiagnosticCategory.Error,key:"let_declarations_can_only_be_declared_inside_a_block_1157",message:"'let' declarations can only be declared inside a block."},Unterminated_template_literal:{code:1160,category:e.DiagnosticCategory.Error,key:"Unterminated_template_literal_1160",message:"Unterminated template literal."},Unterminated_regular_expression_literal:{code:1161,category:e.DiagnosticCategory.Error,key:"Unterminated_regular_expression_literal_1161",message:"Unterminated regular expression literal."},An_object_member_cannot_be_declared_optional:{code:1162,category:e.DiagnosticCategory.Error,key:"An_object_member_cannot_be_declared_optional_1162",message:"An object member cannot be declared optional."},A_yield_expression_is_only_allowed_in_a_generator_body:{code:1163,category:e.DiagnosticCategory.Error,key:"A_yield_expression_is_only_allowed_in_a_generator_body_1163",message:"A 'yield' expression is only allowed in a generator body."},Computed_property_names_are_not_allowed_in_enums:{code:1164,category:e.DiagnosticCategory.Error,key:"Computed_property_names_are_not_allowed_in_enums_1164",message:"Computed property names are not allowed in enums."},A_computed_property_name_in_an_ambient_context_must_directly_refer_to_a_built_in_symbol:{code:1165,category:e.DiagnosticCategory.Error,key:"A_computed_property_name_in_an_ambient_context_must_directly_refer_to_a_built_in_symbol_1165",message:"A computed property name in an ambient context must directly refer to a built-in symbol."},A_computed_property_name_in_a_class_property_declaration_must_directly_refer_to_a_built_in_symbol:{code:1166,category:e.DiagnosticCategory.Error,key:"A_computed_property_name_in_a_class_property_declaration_must_directly_refer_to_a_built_in_symbol_1166",message:"A computed property name in a class property declaration must directly refer to a built-in symbol."},A_computed_property_name_in_a_method_overload_must_directly_refer_to_a_built_in_symbol:{code:1168,category:e.DiagnosticCategory.Error,key:"A_computed_property_name_in_a_method_overload_must_directly_refer_to_a_built_in_symbol_1168",message:"A computed property name in a method overload must directly refer to a built-in symbol."},A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol:{code:1169,category:e.DiagnosticCategory.Error,key:"A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol_1169",message:"A computed property name in an interface must directly refer to a built-in symbol."},A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_symbol:{code:1170,category:e.DiagnosticCategory.Error,key:"A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_symbol_1170",message:"A computed property name in a type literal must directly refer to a built-in symbol."},A_comma_expression_is_not_allowed_in_a_computed_property_name:{code:1171,category:e.DiagnosticCategory.Error,key:"A_comma_expression_is_not_allowed_in_a_computed_property_name_1171",message:"A comma expression is not allowed in a computed property name."},extends_clause_already_seen:{code:1172,category:e.DiagnosticCategory.Error,key:"extends_clause_already_seen_1172",message:"'extends' clause already seen."},extends_clause_must_precede_implements_clause:{code:1173,category:e.DiagnosticCategory.Error,key:"extends_clause_must_precede_implements_clause_1173",message:"'extends' clause must precede 'implements' clause."},Classes_can_only_extend_a_single_class:{code:1174,category:e.DiagnosticCategory.Error,key:"Classes_can_only_extend_a_single_class_1174",message:"Classes can only extend a single class."},implements_clause_already_seen:{code:1175,category:e.DiagnosticCategory.Error,key:"implements_clause_already_seen_1175",message:"'implements' clause already seen."},Interface_declaration_cannot_have_implements_clause:{code:1176,category:e.DiagnosticCategory.Error,key:"Interface_declaration_cannot_have_implements_clause_1176",message:"Interface declaration cannot have 'implements' clause."},Binary_digit_expected:{code:1177,category:e.DiagnosticCategory.Error,key:"Binary_digit_expected_1177",message:"Binary digit expected."},Octal_digit_expected:{code:1178,category:e.DiagnosticCategory.Error,key:"Octal_digit_expected_1178",message:"Octal digit expected."},Unexpected_token_expected:{code:1179,category:e.DiagnosticCategory.Error,key:"Unexpected_token_expected_1179",message:"Unexpected token. '{' expected."},Property_destructuring_pattern_expected:{code:1180,category:e.DiagnosticCategory.Error,key:"Property_destructuring_pattern_expected_1180",message:"Property destructuring pattern expected."},Array_element_destructuring_pattern_expected:{code:1181,category:e.DiagnosticCategory.Error,key:"Array_element_destructuring_pattern_expected_1181",message:"Array element destructuring pattern expected."},A_destructuring_declaration_must_have_an_initializer:{code:1182,category:e.DiagnosticCategory.Error,key:"A_destructuring_declaration_must_have_an_initializer_1182",message:"A destructuring declaration must have an initializer."},An_implementation_cannot_be_declared_in_ambient_contexts:{code:1183,category:e.DiagnosticCategory.Error,key:"An_implementation_cannot_be_declared_in_ambient_contexts_1183",message:"An implementation cannot be declared in ambient contexts."},Modifiers_cannot_appear_here:{code:1184,category:e.DiagnosticCategory.Error,key:"Modifiers_cannot_appear_here_1184",message:"Modifiers cannot appear here."},Merge_conflict_marker_encountered:{code:1185,category:e.DiagnosticCategory.Error,key:"Merge_conflict_marker_encountered_1185",message:"Merge conflict marker encountered."},A_rest_element_cannot_have_an_initializer:{code:1186,category:e.DiagnosticCategory.Error,key:"A_rest_element_cannot_have_an_initializer_1186",message:"A rest element cannot have an initializer."},A_parameter_property_may_not_be_declared_using_a_binding_pattern:{code:1187,category:e.DiagnosticCategory.Error,key:"A_parameter_property_may_not_be_declared_using_a_binding_pattern_1187",message:"A parameter property may not be declared using a binding pattern."},Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement:{code:1188,category:e.DiagnosticCategory.Error,key:"Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement_1188",message:"Only a single variable declaration is allowed in a 'for...of' statement."},The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer:{code:1189,category:e.DiagnosticCategory.Error,key:"The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer_1189",message:"The variable declaration of a 'for...in' statement cannot have an initializer."},The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer:{code:1190,category:e.DiagnosticCategory.Error,key:"The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer_1190",message:"The variable declaration of a 'for...of' statement cannot have an initializer."},An_import_declaration_cannot_have_modifiers:{code:1191,category:e.DiagnosticCategory.Error,key:"An_import_declaration_cannot_have_modifiers_1191",message:"An import declaration cannot have modifiers."},Module_0_has_no_default_export:{code:1192,category:e.DiagnosticCategory.Error,key:"Module_0_has_no_default_export_1192",message:"Module '{0}' has no default export."},An_export_declaration_cannot_have_modifiers:{code:1193,category:e.DiagnosticCategory.Error,key:"An_export_declaration_cannot_have_modifiers_1193",message:"An export declaration cannot have modifiers."},Export_declarations_are_not_permitted_in_a_namespace:{code:1194,category:e.DiagnosticCategory.Error,key:"Export_declarations_are_not_permitted_in_a_namespace_1194",message:"Export declarations are not permitted in a namespace."},Catch_clause_variable_cannot_have_a_type_annotation:{code:1196,category:e.DiagnosticCategory.Error,key:"Catch_clause_variable_cannot_have_a_type_annotation_1196",message:"Catch clause variable cannot have a type annotation."},Catch_clause_variable_cannot_have_an_initializer:{code:1197,category:e.DiagnosticCategory.Error,key:"Catch_clause_variable_cannot_have_an_initializer_1197",message:"Catch clause variable cannot have an initializer."},An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive:{code:1198,category:e.DiagnosticCategory.Error,key:"An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive_1198",message:"An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive."},Unterminated_Unicode_escape_sequence:{code:1199,category:e.DiagnosticCategory.Error,key:"Unterminated_Unicode_escape_sequence_1199",message:"Unterminated Unicode escape sequence."},Line_terminator_not_permitted_before_arrow:{code:1200,category:e.DiagnosticCategory.Error,key:"Line_terminator_not_permitted_before_arrow_1200",message:"Line terminator not permitted before arrow."},Import_assignment_cannot_be_used_when_targeting_ECMAScript_2015_modules_Consider_using_import_Asterisk_as_ns_from_mod_import_a_from_mod_import_d_from_mod_or_another_module_format_instead:{code:1202,category:e.DiagnosticCategory.Error,key:"Import_assignment_cannot_be_used_when_targeting_ECMAScript_2015_modules_Consider_using_import_Asteri_1202",message:"Import assignment cannot be used when targeting ECMAScript 2015 modules. Consider using 'import * as ns from \"mod\"', 'import {a} from \"mod\"', 'import d from \"mod\"', or another module format instead."},Export_assignment_cannot_be_used_when_targeting_ECMAScript_2015_modules_Consider_using_export_default_or_another_module_format_instead:{code:1203,category:e.DiagnosticCategory.Error,key:"Export_assignment_cannot_be_used_when_targeting_ECMAScript_2015_modules_Consider_using_export_defaul_1203",message:"Export assignment cannot be used when targeting ECMAScript 2015 modules. Consider using 'export default' or another module format instead."},Decorators_are_not_valid_here:{code:1206,category:e.DiagnosticCategory.Error,key:"Decorators_are_not_valid_here_1206",message:"Decorators are not valid here."},Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name:{code:1207,category:e.DiagnosticCategory.Error,key:"Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name_1207",message:"Decorators cannot be applied to multiple get/set accessors of the same name."},Cannot_compile_namespaces_when_the_isolatedModules_flag_is_provided:{code:1208,category:e.DiagnosticCategory.Error,key:"Cannot_compile_namespaces_when_the_isolatedModules_flag_is_provided_1208",message:"Cannot compile namespaces when the '--isolatedModules' flag is provided."},Ambient_const_enums_are_not_allowed_when_the_isolatedModules_flag_is_provided:{code:1209,category:e.DiagnosticCategory.Error,key:"Ambient_const_enums_are_not_allowed_when_the_isolatedModules_flag_is_provided_1209",message:"Ambient const enums are not allowed when the '--isolatedModules' flag is provided."},Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode:{code:1210,category:e.DiagnosticCategory.Error,key:"Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode_1210",message:"Invalid use of '{0}'. Class definitions are automatically in strict mode."},A_class_declaration_without_the_default_modifier_must_have_a_name:{code:1211,category:e.DiagnosticCategory.Error,key:"A_class_declaration_without_the_default_modifier_must_have_a_name_1211",message:"A class declaration without the 'default' modifier must have a name."},Identifier_expected_0_is_a_reserved_word_in_strict_mode:{code:1212,category:e.DiagnosticCategory.Error,key:"Identifier_expected_0_is_a_reserved_word_in_strict_mode_1212",message:"Identifier expected. '{0}' is a reserved word in strict mode."},Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode:{code:1213,category:e.DiagnosticCategory.Error,key:"Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_stric_1213",message:"Identifier expected. '{0}' is a reserved word in strict mode. Class definitions are automatically in strict mode."},Identifier_expected_0_is_a_reserved_word_in_strict_mode_Modules_are_automatically_in_strict_mode:{code:1214,category:e.DiagnosticCategory.Error,key:"Identifier_expected_0_is_a_reserved_word_in_strict_mode_Modules_are_automatically_in_strict_mode_1214",message:"Identifier expected. '{0}' is a reserved word in strict mode. Modules are automatically in strict mode."},Invalid_use_of_0_Modules_are_automatically_in_strict_mode:{code:1215,category:e.DiagnosticCategory.Error,key:"Invalid_use_of_0_Modules_are_automatically_in_strict_mode_1215",message:"Invalid use of '{0}'. Modules are automatically in strict mode."},Identifier_expected_esModule_is_reserved_as_an_exported_marker_when_transforming_ECMAScript_modules:{code:1216,category:e.DiagnosticCategory.Error,key:"Identifier_expected_esModule_is_reserved_as_an_exported_marker_when_transforming_ECMAScript_modules_1216",message:"Identifier expected. '__esModule' is reserved as an exported marker when transforming ECMAScript modules."},Export_assignment_is_not_supported_when_module_flag_is_system:{code:1218,category:e.DiagnosticCategory.Error,key:"Export_assignment_is_not_supported_when_module_flag_is_system_1218",message:"Export assignment is not supported when '--module' flag is 'system'."},Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_the_experimentalDecorators_option_to_remove_this_warning:{code:1219,category:e.DiagnosticCategory.Error,key:"Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_t_1219",message:"Experimental support for decorators is a feature that is subject to change in a future release. Set the 'experimentalDecorators' option to remove this warning."},Generators_are_only_available_when_targeting_ECMAScript_2015_or_higher:{code:1220,category:e.DiagnosticCategory.Error,key:"Generators_are_only_available_when_targeting_ECMAScript_2015_or_higher_1220",message:"Generators are only available when targeting ECMAScript 2015 or higher."},Generators_are_not_allowed_in_an_ambient_context:{code:1221,category:e.DiagnosticCategory.Error,key:"Generators_are_not_allowed_in_an_ambient_context_1221",message:"Generators are not allowed in an ambient context."},An_overload_signature_cannot_be_declared_as_a_generator:{code:1222,category:e.DiagnosticCategory.Error,key:"An_overload_signature_cannot_be_declared_as_a_generator_1222",message:"An overload signature cannot be declared as a generator."},_0_tag_already_specified:{code:1223,category:e.DiagnosticCategory.Error,key:"_0_tag_already_specified_1223",message:"'{0}' tag already specified."},Signature_0_must_have_a_type_predicate:{code:1224,category:e.DiagnosticCategory.Error,key:"Signature_0_must_have_a_type_predicate_1224",message:"Signature '{0}' must have a type predicate."},Cannot_find_parameter_0:{code:1225,category:e.DiagnosticCategory.Error,key:"Cannot_find_parameter_0_1225",message:"Cannot find parameter '{0}'."},Type_predicate_0_is_not_assignable_to_1:{code:1226,category:e.DiagnosticCategory.Error,key:"Type_predicate_0_is_not_assignable_to_1_1226",message:"Type predicate '{0}' is not assignable to '{1}'."},Parameter_0_is_not_in_the_same_position_as_parameter_1:{code:1227,category:e.DiagnosticCategory.Error,key:"Parameter_0_is_not_in_the_same_position_as_parameter_1_1227",message:"Parameter '{0}' is not in the same position as parameter '{1}'."},A_type_predicate_is_only_allowed_in_return_type_position_for_functions_and_methods:{code:1228,category:e.DiagnosticCategory.Error,key:"A_type_predicate_is_only_allowed_in_return_type_position_for_functions_and_methods_1228",message:"A type predicate is only allowed in return type position for functions and methods."},A_type_predicate_cannot_reference_a_rest_parameter:{code:1229,category:e.DiagnosticCategory.Error,key:"A_type_predicate_cannot_reference_a_rest_parameter_1229",message:"A type predicate cannot reference a rest parameter."},A_type_predicate_cannot_reference_element_0_in_a_binding_pattern:{code:1230,category:e.DiagnosticCategory.Error,key:"A_type_predicate_cannot_reference_element_0_in_a_binding_pattern_1230",message:"A type predicate cannot reference element '{0}' in a binding pattern."},An_export_assignment_can_only_be_used_in_a_module:{code:1231,category:e.DiagnosticCategory.Error,key:"An_export_assignment_can_only_be_used_in_a_module_1231",message:"An export assignment can only be used in a module."},An_import_declaration_can_only_be_used_in_a_namespace_or_module:{code:1232,category:e.DiagnosticCategory.Error,key:"An_import_declaration_can_only_be_used_in_a_namespace_or_module_1232",message:"An import declaration can only be used in a namespace or module."},An_export_declaration_can_only_be_used_in_a_module:{code:1233,category:e.DiagnosticCategory.Error,key:"An_export_declaration_can_only_be_used_in_a_module_1233",message:"An export declaration can only be used in a module."},An_ambient_module_declaration_is_only_allowed_at_the_top_level_in_a_file:{code:1234,category:e.DiagnosticCategory.Error,key:"An_ambient_module_declaration_is_only_allowed_at_the_top_level_in_a_file_1234",message:"An ambient module declaration is only allowed at the top level in a file."},A_namespace_declaration_is_only_allowed_in_a_namespace_or_module:{code:1235,category:e.DiagnosticCategory.Error,key:"A_namespace_declaration_is_only_allowed_in_a_namespace_or_module_1235",message:"A namespace declaration is only allowed in a namespace or module."},The_return_type_of_a_property_decorator_function_must_be_either_void_or_any:{code:1236,category:e.DiagnosticCategory.Error,key:"The_return_type_of_a_property_decorator_function_must_be_either_void_or_any_1236",message:"The return type of a property decorator function must be either 'void' or 'any'."},The_return_type_of_a_parameter_decorator_function_must_be_either_void_or_any:{code:1237,category:e.DiagnosticCategory.Error,key:"The_return_type_of_a_parameter_decorator_function_must_be_either_void_or_any_1237",message:"The return type of a parameter decorator function must be either 'void' or 'any'."},Unable_to_resolve_signature_of_class_decorator_when_called_as_an_expression:{code:1238,category:e.DiagnosticCategory.Error,key:"Unable_to_resolve_signature_of_class_decorator_when_called_as_an_expression_1238",message:"Unable to resolve signature of class decorator when called as an expression."},Unable_to_resolve_signature_of_parameter_decorator_when_called_as_an_expression:{code:1239,category:e.DiagnosticCategory.Error,key:"Unable_to_resolve_signature_of_parameter_decorator_when_called_as_an_expression_1239",message:"Unable to resolve signature of parameter decorator when called as an expression."},Unable_to_resolve_signature_of_property_decorator_when_called_as_an_expression:{code:1240,category:e.DiagnosticCategory.Error,key:"Unable_to_resolve_signature_of_property_decorator_when_called_as_an_expression_1240",message:"Unable to resolve signature of property decorator when called as an expression."},Unable_to_resolve_signature_of_method_decorator_when_called_as_an_expression:{code:1241,category:e.DiagnosticCategory.Error,key:"Unable_to_resolve_signature_of_method_decorator_when_called_as_an_expression_1241",message:"Unable to resolve signature of method decorator when called as an expression."},abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration:{code:1242,category:e.DiagnosticCategory.Error,key:"abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration_1242",message:"'abstract' modifier can only appear on a class, method, or property declaration."},_0_modifier_cannot_be_used_with_1_modifier:{code:1243,category:e.DiagnosticCategory.Error,key:"_0_modifier_cannot_be_used_with_1_modifier_1243",message:"'{0}' modifier cannot be used with '{1}' modifier."},Abstract_methods_can_only_appear_within_an_abstract_class:{code:1244,category:e.DiagnosticCategory.Error,key:"Abstract_methods_can_only_appear_within_an_abstract_class_1244",message:"Abstract methods can only appear within an abstract class."},Method_0_cannot_have_an_implementation_because_it_is_marked_abstract:{code:1245,category:e.DiagnosticCategory.Error,key:"Method_0_cannot_have_an_implementation_because_it_is_marked_abstract_1245",message:"Method '{0}' cannot have an implementation because it is marked abstract."},An_interface_property_cannot_have_an_initializer:{code:1246,category:e.DiagnosticCategory.Error,key:"An_interface_property_cannot_have_an_initializer_1246",message:"An interface property cannot have an initializer."},A_type_literal_property_cannot_have_an_initializer:{code:1247,category:e.DiagnosticCategory.Error,key:"A_type_literal_property_cannot_have_an_initializer_1247",message:"A type literal property cannot have an initializer."},A_class_member_cannot_have_the_0_keyword:{code:1248,category:e.DiagnosticCategory.Error,key:"A_class_member_cannot_have_the_0_keyword_1248",message:"A class member cannot have the '{0}' keyword."},A_decorator_can_only_decorate_a_method_implementation_not_an_overload:{code:1249,category:e.DiagnosticCategory.Error,key:"A_decorator_can_only_decorate_a_method_implementation_not_an_overload_1249",message:"A decorator can only decorate a method implementation, not an overload."},Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5:{code:1250,category:e.DiagnosticCategory.Error,key:"Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5_1250",message:"Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'."},Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5_Class_definitions_are_automatically_in_strict_mode:{code:1251,category:e.DiagnosticCategory.Error,key:"Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5_Class_d_1251",message:"Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'. Class definitions are automatically in strict mode."},Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5_Modules_are_automatically_in_strict_mode:{code:1252,category:e.DiagnosticCategory.Error,key:"Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5_Modules_1252",message:"Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'. Modules are automatically in strict mode."},_0_tag_cannot_be_used_independently_as_a_top_level_JSDoc_tag:{code:1253,category:e.DiagnosticCategory.Error,key:"_0_tag_cannot_be_used_independently_as_a_top_level_JSDoc_tag_1253",message:"'{0}' tag cannot be used independently as a top level JSDoc tag."},A_const_initializer_in_an_ambient_context_must_be_a_string_or_numeric_literal:{code:1254,category:e.DiagnosticCategory.Error,key:"A_const_initializer_in_an_ambient_context_must_be_a_string_or_numeric_literal_1254",message:"A 'const' initializer in an ambient context must be a string or numeric literal."},with_statements_are_not_allowed_in_an_async_function_block:{code:1300,category:e.DiagnosticCategory.Error,key:"with_statements_are_not_allowed_in_an_async_function_block_1300",message:"'with' statements are not allowed in an async function block."},await_expression_is_only_allowed_within_an_async_function:{code:1308,category:e.DiagnosticCategory.Error,key:"await_expression_is_only_allowed_within_an_async_function_1308",message:"'await' expression is only allowed within an async function."},can_only_be_used_in_an_object_literal_property_inside_a_destructuring_assignment:{code:1312,category:e.DiagnosticCategory.Error,key:"can_only_be_used_in_an_object_literal_property_inside_a_destructuring_assignment_1312",message:"'=' can only be used in an object literal property inside a destructuring assignment."},The_body_of_an_if_statement_cannot_be_the_empty_statement:{code:1313,category:e.DiagnosticCategory.Error,key:"The_body_of_an_if_statement_cannot_be_the_empty_statement_1313",message:"The body of an 'if' statement cannot be the empty statement."},Global_module_exports_may_only_appear_in_module_files:{code:1314,category:e.DiagnosticCategory.Error,key:"Global_module_exports_may_only_appear_in_module_files_1314",message:"Global module exports may only appear in module files."},Global_module_exports_may_only_appear_in_declaration_files:{code:1315,category:e.DiagnosticCategory.Error,key:"Global_module_exports_may_only_appear_in_declaration_files_1315",message:"Global module exports may only appear in declaration files."},Global_module_exports_may_only_appear_at_top_level:{code:1316,category:e.DiagnosticCategory.Error,key:"Global_module_exports_may_only_appear_at_top_level_1316",message:"Global module exports may only appear at top level."},A_parameter_property_cannot_be_declared_using_a_rest_parameter:{code:1317,category:e.DiagnosticCategory.Error,key:"A_parameter_property_cannot_be_declared_using_a_rest_parameter_1317",message:"A parameter property cannot be declared using a rest parameter."},An_abstract_accessor_cannot_have_an_implementation:{code:1318,category:e.DiagnosticCategory.Error,key:"An_abstract_accessor_cannot_have_an_implementation_1318",message:"An abstract accessor cannot have an implementation."},A_default_export_can_only_be_used_in_an_ECMAScript_style_module:{code:1319,category:e.DiagnosticCategory.Error,key:"A_default_export_can_only_be_used_in_an_ECMAScript_style_module_1319",message:"A default export can only be used in an ECMAScript-style module."},Type_of_await_operand_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member:{code:1320,category:e.DiagnosticCategory.Error,key:"Type_of_await_operand_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member_1320",message:"Type of 'await' operand must either be a valid promise or must not contain a callable 'then' member."},Type_of_yield_operand_in_an_async_generator_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member:{code:1321,category:e.DiagnosticCategory.Error,key:"Type_of_yield_operand_in_an_async_generator_must_either_be_a_valid_promise_or_must_not_contain_a_cal_1321",message:"Type of 'yield' operand in an async generator must either be a valid promise or must not contain a callable 'then' member."},Type_of_iterated_elements_of_a_yield_Asterisk_operand_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member:{code:1322,category:e.DiagnosticCategory.Error,key:"Type_of_iterated_elements_of_a_yield_Asterisk_operand_must_either_be_a_valid_promise_or_must_not_con_1322",message:"Type of iterated elements of a 'yield*' operand must either be a valid promise or must not contain a callable 'then' member."},Duplicate_identifier_0:{code:2300,category:e.DiagnosticCategory.Error,key:"Duplicate_identifier_0_2300",message:"Duplicate identifier '{0}'."},Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor:{code:2301,category:e.DiagnosticCategory.Error,key:"Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor_2301",message:"Initializer of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor."},Static_members_cannot_reference_class_type_parameters:{code:2302,category:e.DiagnosticCategory.Error,key:"Static_members_cannot_reference_class_type_parameters_2302",message:"Static members cannot reference class type parameters."},Circular_definition_of_import_alias_0:{code:2303,category:e.DiagnosticCategory.Error,key:"Circular_definition_of_import_alias_0_2303",message:"Circular definition of import alias '{0}'."},Cannot_find_name_0:{code:2304,category:e.DiagnosticCategory.Error,key:"Cannot_find_name_0_2304",message:"Cannot find name '{0}'."},Module_0_has_no_exported_member_1:{code:2305,category:e.DiagnosticCategory.Error,key:"Module_0_has_no_exported_member_1_2305",message:"Module '{0}' has no exported member '{1}'."},File_0_is_not_a_module:{code:2306,category:e.DiagnosticCategory.Error,key:"File_0_is_not_a_module_2306",message:"File '{0}' is not a module."},Cannot_find_module_0:{code:2307,category:e.DiagnosticCategory.Error,key:"Cannot_find_module_0_2307",message:"Cannot find module '{0}'."},Module_0_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambiguity:{code:2308,category:e.DiagnosticCategory.Error,key:"Module_0_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambig_2308",message:"Module {0} has already exported a member named '{1}'. Consider explicitly re-exporting to resolve the ambiguity."},An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements:{code:2309,category:e.DiagnosticCategory.Error,key:"An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements_2309",message:"An export assignment cannot be used in a module with other exported elements."},Type_0_recursively_references_itself_as_a_base_type:{code:2310,category:e.DiagnosticCategory.Error,key:"Type_0_recursively_references_itself_as_a_base_type_2310",message:"Type '{0}' recursively references itself as a base type."},A_class_may_only_extend_another_class:{code:2311,category:e.DiagnosticCategory.Error,key:"A_class_may_only_extend_another_class_2311",message:"A class may only extend another class."},An_interface_may_only_extend_a_class_or_another_interface:{code:2312,category:e.DiagnosticCategory.Error,key:"An_interface_may_only_extend_a_class_or_another_interface_2312",message:"An interface may only extend a class or another interface."},Type_parameter_0_has_a_circular_constraint:{code:2313,category:e.DiagnosticCategory.Error,key:"Type_parameter_0_has_a_circular_constraint_2313",message:"Type parameter '{0}' has a circular constraint."},Generic_type_0_requires_1_type_argument_s:{code:2314,category:e.DiagnosticCategory.Error,key:"Generic_type_0_requires_1_type_argument_s_2314",message:"Generic type '{0}' requires {1} type argument(s)."},Type_0_is_not_generic:{code:2315,category:e.DiagnosticCategory.Error,key:"Type_0_is_not_generic_2315",message:"Type '{0}' is not generic."},Global_type_0_must_be_a_class_or_interface_type:{code:2316,category:e.DiagnosticCategory.Error,key:"Global_type_0_must_be_a_class_or_interface_type_2316",message:"Global type '{0}' must be a class or interface type."},Global_type_0_must_have_1_type_parameter_s:{code:2317,category:e.DiagnosticCategory.Error,key:"Global_type_0_must_have_1_type_parameter_s_2317",message:"Global type '{0}' must have {1} type parameter(s)."},Cannot_find_global_type_0:{code:2318,category:e.DiagnosticCategory.Error,key:"Cannot_find_global_type_0_2318",message:"Cannot find global type '{0}'."},Named_property_0_of_types_1_and_2_are_not_identical:{code:2319,category:e.DiagnosticCategory.Error,key:"Named_property_0_of_types_1_and_2_are_not_identical_2319",message:"Named property '{0}' of types '{1}' and '{2}' are not identical."},Interface_0_cannot_simultaneously_extend_types_1_and_2:{code:2320,category:e.DiagnosticCategory.Error,key:"Interface_0_cannot_simultaneously_extend_types_1_and_2_2320",message:"Interface '{0}' cannot simultaneously extend types '{1}' and '{2}'."},Excessive_stack_depth_comparing_types_0_and_1:{code:2321,category:e.DiagnosticCategory.Error,key:"Excessive_stack_depth_comparing_types_0_and_1_2321",message:"Excessive stack depth comparing types '{0}' and '{1}'."},Type_0_is_not_assignable_to_type_1:{code:2322,category:e.DiagnosticCategory.Error,key:"Type_0_is_not_assignable_to_type_1_2322",message:"Type '{0}' is not assignable to type '{1}'."},Cannot_redeclare_exported_variable_0:{code:2323,category:e.DiagnosticCategory.Error,key:"Cannot_redeclare_exported_variable_0_2323",message:"Cannot redeclare exported variable '{0}'."},Property_0_is_missing_in_type_1:{code:2324,category:e.DiagnosticCategory.Error,key:"Property_0_is_missing_in_type_1_2324",message:"Property '{0}' is missing in type '{1}'."},Property_0_is_private_in_type_1_but_not_in_type_2:{code:2325,category:e.DiagnosticCategory.Error,key:"Property_0_is_private_in_type_1_but_not_in_type_2_2325",message:"Property '{0}' is private in type '{1}' but not in type '{2}'."},Types_of_property_0_are_incompatible:{code:2326,category:e.DiagnosticCategory.Error,key:"Types_of_property_0_are_incompatible_2326",message:"Types of property '{0}' are incompatible."},Property_0_is_optional_in_type_1_but_required_in_type_2:{code:2327,category:e.DiagnosticCategory.Error,key:"Property_0_is_optional_in_type_1_but_required_in_type_2_2327",message:"Property '{0}' is optional in type '{1}' but required in type '{2}'."},Types_of_parameters_0_and_1_are_incompatible:{code:2328,category:e.DiagnosticCategory.Error,key:"Types_of_parameters_0_and_1_are_incompatible_2328",message:"Types of parameters '{0}' and '{1}' are incompatible."},Index_signature_is_missing_in_type_0:{code:2329,category:e.DiagnosticCategory.Error,key:"Index_signature_is_missing_in_type_0_2329",message:"Index signature is missing in type '{0}'."},Index_signatures_are_incompatible:{code:2330,category:e.DiagnosticCategory.Error,key:"Index_signatures_are_incompatible_2330",message:"Index signatures are incompatible."},this_cannot_be_referenced_in_a_module_or_namespace_body:{code:2331,category:e.DiagnosticCategory.Error,key:"this_cannot_be_referenced_in_a_module_or_namespace_body_2331",message:"'this' cannot be referenced in a module or namespace body."},this_cannot_be_referenced_in_current_location:{code:2332,category:e.DiagnosticCategory.Error,key:"this_cannot_be_referenced_in_current_location_2332",message:"'this' cannot be referenced in current location."},this_cannot_be_referenced_in_constructor_arguments:{code:2333,category:e.DiagnosticCategory.Error,key:"this_cannot_be_referenced_in_constructor_arguments_2333",message:"'this' cannot be referenced in constructor arguments."},this_cannot_be_referenced_in_a_static_property_initializer:{code:2334,category:e.DiagnosticCategory.Error,key:"this_cannot_be_referenced_in_a_static_property_initializer_2334",message:"'this' cannot be referenced in a static property initializer."},super_can_only_be_referenced_in_a_derived_class:{code:2335,category:e.DiagnosticCategory.Error,key:"super_can_only_be_referenced_in_a_derived_class_2335",message:"'super' can only be referenced in a derived class."},super_cannot_be_referenced_in_constructor_arguments:{code:2336,category:e.DiagnosticCategory.Error,key:"super_cannot_be_referenced_in_constructor_arguments_2336",message:"'super' cannot be referenced in constructor arguments."},Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors:{code:2337,category:e.DiagnosticCategory.Error,key:"Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors_2337",message:"Super calls are not permitted outside constructors or in nested functions inside constructors."},super_property_access_is_permitted_only_in_a_constructor_member_function_or_member_accessor_of_a_derived_class:{code:2338,category:e.DiagnosticCategory.Error,key:"super_property_access_is_permitted_only_in_a_constructor_member_function_or_member_accessor_of_a_der_2338",message:"'super' property access is permitted only in a constructor, member function, or member accessor of a derived class."},Property_0_does_not_exist_on_type_1:{code:2339,category:e.DiagnosticCategory.Error,key:"Property_0_does_not_exist_on_type_1_2339",message:"Property '{0}' does not exist on type '{1}'."},Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword:{code:2340,category:e.DiagnosticCategory.Error,key:"Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword_2340",message:"Only public and protected methods of the base class are accessible via the 'super' keyword."},Property_0_is_private_and_only_accessible_within_class_1:{code:2341,category:e.DiagnosticCategory.Error,key:"Property_0_is_private_and_only_accessible_within_class_1_2341",message:"Property '{0}' is private and only accessible within class '{1}'."},An_index_expression_argument_must_be_of_type_string_number_symbol_or_any:{code:2342,category:e.DiagnosticCategory.Error,key:"An_index_expression_argument_must_be_of_type_string_number_symbol_or_any_2342",message:"An index expression argument must be of type 'string', 'number', 'symbol', or 'any'."},This_syntax_requires_an_imported_helper_named_1_but_module_0_has_no_exported_member_1:{code:2343,category:e.DiagnosticCategory.Error,key:"This_syntax_requires_an_imported_helper_named_1_but_module_0_has_no_exported_member_1_2343",message:"This syntax requires an imported helper named '{1}', but module '{0}' has no exported member '{1}'."},Type_0_does_not_satisfy_the_constraint_1:{code:2344,category:e.DiagnosticCategory.Error,key:"Type_0_does_not_satisfy_the_constraint_1_2344",message:"Type '{0}' does not satisfy the constraint '{1}'."},Argument_of_type_0_is_not_assignable_to_parameter_of_type_1:{code:2345,category:e.DiagnosticCategory.Error,key:"Argument_of_type_0_is_not_assignable_to_parameter_of_type_1_2345",message:"Argument of type '{0}' is not assignable to parameter of type '{1}'."},Supplied_parameters_do_not_match_any_signature_of_call_target:{code:2346,category:e.DiagnosticCategory.Error,key:"Supplied_parameters_do_not_match_any_signature_of_call_target_2346",message:"Supplied parameters do not match any signature of call target."},Untyped_function_calls_may_not_accept_type_arguments:{code:2347,category:e.DiagnosticCategory.Error,key:"Untyped_function_calls_may_not_accept_type_arguments_2347",message:"Untyped function calls may not accept type arguments."},Value_of_type_0_is_not_callable_Did_you_mean_to_include_new:{code:2348,category:e.DiagnosticCategory.Error,key:"Value_of_type_0_is_not_callable_Did_you_mean_to_include_new_2348",message:"Value of type '{0}' is not callable. Did you mean to include 'new'?"},Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures:{code:2349,category:e.DiagnosticCategory.Error,key:"Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatur_2349",message:"Cannot invoke an expression whose type lacks a call signature. Type '{0}' has no compatible call signatures."},Only_a_void_function_can_be_called_with_the_new_keyword:{code:2350,category:e.DiagnosticCategory.Error,key:"Only_a_void_function_can_be_called_with_the_new_keyword_2350",message:"Only a void function can be called with the 'new' keyword."},Cannot_use_new_with_an_expression_whose_type_lacks_a_call_or_construct_signature:{code:2351,category:e.DiagnosticCategory.Error,key:"Cannot_use_new_with_an_expression_whose_type_lacks_a_call_or_construct_signature_2351",message:"Cannot use 'new' with an expression whose type lacks a call or construct signature."},Type_0_cannot_be_converted_to_type_1:{code:2352,category:e.DiagnosticCategory.Error,key:"Type_0_cannot_be_converted_to_type_1_2352",message:"Type '{0}' cannot be converted to type '{1}'."},Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1:{code:2353,category:e.DiagnosticCategory.Error,key:"Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1_2353",message:"Object literal may only specify known properties, and '{0}' does not exist in type '{1}'."},This_syntax_requires_an_imported_helper_but_module_0_cannot_be_found:{code:2354,category:e.DiagnosticCategory.Error,key:"This_syntax_requires_an_imported_helper_but_module_0_cannot_be_found_2354",message:"This syntax requires an imported helper but module '{0}' cannot be found."},A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value:{code:2355,category:e.DiagnosticCategory.Error,key:"A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value_2355",message:"A function whose declared type is neither 'void' nor 'any' must return a value."},An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type:{code:2356,category:e.DiagnosticCategory.Error,key:"An_arithmetic_operand_must_be_of_type_any_number_or_an_enum_type_2356",message:"An arithmetic operand must be of type 'any', 'number' or an enum type."},The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access:{code:2357,category:e.DiagnosticCategory.Error,key:"The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access_2357",message:"The operand of an increment or decrement operator must be a variable or a property access."},The_left_hand_side_of_an_instanceof_expression_must_be_of_type_any_an_object_type_or_a_type_parameter:{code:2358,category:e.DiagnosticCategory.Error,key:"The_left_hand_side_of_an_instanceof_expression_must_be_of_type_any_an_object_type_or_a_type_paramete_2358",message:"The left-hand side of an 'instanceof' expression must be of type 'any', an object type or a type parameter."},The_right_hand_side_of_an_instanceof_expression_must_be_of_type_any_or_of_a_type_assignable_to_the_Function_interface_type:{code:2359,category:e.DiagnosticCategory.Error,key:"The_right_hand_side_of_an_instanceof_expression_must_be_of_type_any_or_of_a_type_assignable_to_the_F_2359",message:"The right-hand side of an 'instanceof' expression must be of type 'any' or of a type assignable to the 'Function' interface type."},The_left_hand_side_of_an_in_expression_must_be_of_type_any_string_number_or_symbol:{code:2360,category:e.DiagnosticCategory.Error,key:"The_left_hand_side_of_an_in_expression_must_be_of_type_any_string_number_or_symbol_2360",message:"The left-hand side of an 'in' expression must be of type 'any', 'string', 'number', or 'symbol'."},The_right_hand_side_of_an_in_expression_must_be_of_type_any_an_object_type_or_a_type_parameter:{code:2361,category:e.DiagnosticCategory.Error,key:"The_right_hand_side_of_an_in_expression_must_be_of_type_any_an_object_type_or_a_type_parameter_2361",message:"The right-hand side of an 'in' expression must be of type 'any', an object type or a type parameter."},The_left_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type:{code:2362,category:e.DiagnosticCategory.Error,key:"The_left_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type_2362",message:"The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type."},The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type:{code:2363,category:e.DiagnosticCategory.Error,key:"The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type_2363",message:"The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type."},The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access:{code:2364,category:e.DiagnosticCategory.Error,key:"The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access_2364",message:"The left-hand side of an assignment expression must be a variable or a property access."},Operator_0_cannot_be_applied_to_types_1_and_2:{code:2365,category:e.DiagnosticCategory.Error,key:"Operator_0_cannot_be_applied_to_types_1_and_2_2365",message:"Operator '{0}' cannot be applied to types '{1}' and '{2}'."},Function_lacks_ending_return_statement_and_return_type_does_not_include_undefined:{code:2366,category:e.DiagnosticCategory.Error,key:"Function_lacks_ending_return_statement_and_return_type_does_not_include_undefined_2366",message:"Function lacks ending return statement and return type does not include 'undefined'."},Type_parameter_name_cannot_be_0:{code:2368,category:e.DiagnosticCategory.Error,key:"Type_parameter_name_cannot_be_0_2368",message:"Type parameter name cannot be '{0}'."},A_parameter_property_is_only_allowed_in_a_constructor_implementation:{code:2369,category:e.DiagnosticCategory.Error,key:"A_parameter_property_is_only_allowed_in_a_constructor_implementation_2369",message:"A parameter property is only allowed in a constructor implementation."},A_rest_parameter_must_be_of_an_array_type:{code:2370,category:e.DiagnosticCategory.Error,key:"A_rest_parameter_must_be_of_an_array_type_2370",message:"A rest parameter must be of an array type."},A_parameter_initializer_is_only_allowed_in_a_function_or_constructor_implementation:{code:2371,category:e.DiagnosticCategory.Error,key:"A_parameter_initializer_is_only_allowed_in_a_function_or_constructor_implementation_2371",message:"A parameter initializer is only allowed in a function or constructor implementation."},Parameter_0_cannot_be_referenced_in_its_initializer:{code:2372,category:e.DiagnosticCategory.Error,key:"Parameter_0_cannot_be_referenced_in_its_initializer_2372",message:"Parameter '{0}' cannot be referenced in its initializer."},Initializer_of_parameter_0_cannot_reference_identifier_1_declared_after_it:{code:2373,category:e.DiagnosticCategory.Error,key:"Initializer_of_parameter_0_cannot_reference_identifier_1_declared_after_it_2373",message:"Initializer of parameter '{0}' cannot reference identifier '{1}' declared after it."},Duplicate_string_index_signature:{code:2374,category:e.DiagnosticCategory.Error,key:"Duplicate_string_index_signature_2374",message:"Duplicate string index signature."},Duplicate_number_index_signature:{code:2375,category:e.DiagnosticCategory.Error,key:"Duplicate_number_index_signature_2375",message:"Duplicate number index signature."},A_super_call_must_be_the_first_statement_in_the_constructor_when_a_class_contains_initialized_properties_or_has_parameter_properties:{code:2376,category:e.DiagnosticCategory.Error,key:"A_super_call_must_be_the_first_statement_in_the_constructor_when_a_class_contains_initialized_proper_2376",message:"A 'super' call must be the first statement in the constructor when a class contains initialized properties or has parameter properties."},Constructors_for_derived_classes_must_contain_a_super_call:{code:2377,category:e.DiagnosticCategory.Error,key:"Constructors_for_derived_classes_must_contain_a_super_call_2377",message:"Constructors for derived classes must contain a 'super' call."},A_get_accessor_must_return_a_value:{code:2378,category:e.DiagnosticCategory.Error,key:"A_get_accessor_must_return_a_value_2378",message:"A 'get' accessor must return a value."},Getter_and_setter_accessors_do_not_agree_in_visibility:{code:2379,category:e.DiagnosticCategory.Error,key:"Getter_and_setter_accessors_do_not_agree_in_visibility_2379",message:"Getter and setter accessors do not agree in visibility."},get_and_set_accessor_must_have_the_same_type:{code:2380,category:e.DiagnosticCategory.Error,key:"get_and_set_accessor_must_have_the_same_type_2380",message:"'get' and 'set' accessor must have the same type."},A_signature_with_an_implementation_cannot_use_a_string_literal_type:{code:2381,category:e.DiagnosticCategory.Error,key:"A_signature_with_an_implementation_cannot_use_a_string_literal_type_2381",message:"A signature with an implementation cannot use a string literal type."},Specialized_overload_signature_is_not_assignable_to_any_non_specialized_signature:{code:2382,category:e.DiagnosticCategory.Error,key:"Specialized_overload_signature_is_not_assignable_to_any_non_specialized_signature_2382",message:"Specialized overload signature is not assignable to any non-specialized signature."},Overload_signatures_must_all_be_exported_or_non_exported:{code:2383,category:e.DiagnosticCategory.Error,key:"Overload_signatures_must_all_be_exported_or_non_exported_2383",message:"Overload signatures must all be exported or non-exported."},Overload_signatures_must_all_be_ambient_or_non_ambient:{code:2384,category:e.DiagnosticCategory.Error,key:"Overload_signatures_must_all_be_ambient_or_non_ambient_2384",message:"Overload signatures must all be ambient or non-ambient."},Overload_signatures_must_all_be_public_private_or_protected:{code:2385,category:e.DiagnosticCategory.Error,key:"Overload_signatures_must_all_be_public_private_or_protected_2385",message:"Overload signatures must all be public, private or protected."},Overload_signatures_must_all_be_optional_or_required:{code:2386,category:e.DiagnosticCategory.Error,key:"Overload_signatures_must_all_be_optional_or_required_2386",message:"Overload signatures must all be optional or required."},Function_overload_must_be_static:{code:2387,category:e.DiagnosticCategory.Error,key:"Function_overload_must_be_static_2387",message:"Function overload must be static."},Function_overload_must_not_be_static:{code:2388,category:e.DiagnosticCategory.Error,key:"Function_overload_must_not_be_static_2388",message:"Function overload must not be static."},Function_implementation_name_must_be_0:{code:2389,category:e.DiagnosticCategory.Error,key:"Function_implementation_name_must_be_0_2389",message:"Function implementation name must be '{0}'."},Constructor_implementation_is_missing:{code:2390,category:e.DiagnosticCategory.Error,key:"Constructor_implementation_is_missing_2390",message:"Constructor implementation is missing."},Function_implementation_is_missing_or_not_immediately_following_the_declaration:{code:2391,category:e.DiagnosticCategory.Error,key:"Function_implementation_is_missing_or_not_immediately_following_the_declaration_2391",message:"Function implementation is missing or not immediately following the declaration."},Multiple_constructor_implementations_are_not_allowed:{code:2392,category:e.DiagnosticCategory.Error,key:"Multiple_constructor_implementations_are_not_allowed_2392",message:"Multiple constructor implementations are not allowed."},Duplicate_function_implementation:{code:2393,category:e.DiagnosticCategory.Error,key:"Duplicate_function_implementation_2393",message:"Duplicate function implementation."},Overload_signature_is_not_compatible_with_function_implementation:{code:2394,category:e.DiagnosticCategory.Error,key:"Overload_signature_is_not_compatible_with_function_implementation_2394",message:"Overload signature is not compatible with function implementation."},Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local:{code:2395,category:e.DiagnosticCategory.Error,key:"Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local_2395",message:"Individual declarations in merged declaration '{0}' must be all exported or all local."},Duplicate_identifier_arguments_Compiler_uses_arguments_to_initialize_rest_parameters:{code:2396,category:e.DiagnosticCategory.Error,key:"Duplicate_identifier_arguments_Compiler_uses_arguments_to_initialize_rest_parameters_2396",message:"Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters."},Declaration_name_conflicts_with_built_in_global_identifier_0:{code:2397,category:e.DiagnosticCategory.Error,key:"Declaration_name_conflicts_with_built_in_global_identifier_0_2397",message:"Declaration name conflicts with built-in global identifier '{0}'."},Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference:{code:2399,category:e.DiagnosticCategory.Error,key:"Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference_2399",message:"Duplicate identifier '_this'. Compiler uses variable declaration '_this' to capture 'this' reference."},Expression_resolves_to_variable_declaration_this_that_compiler_uses_to_capture_this_reference:{code:2400,category:e.DiagnosticCategory.Error,key:"Expression_resolves_to_variable_declaration_this_that_compiler_uses_to_capture_this_reference_2400",message:"Expression resolves to variable declaration '_this' that compiler uses to capture 'this' reference."},Duplicate_identifier_super_Compiler_uses_super_to_capture_base_class_reference:{code:2401,category:e.DiagnosticCategory.Error,key:"Duplicate_identifier_super_Compiler_uses_super_to_capture_base_class_reference_2401",message:"Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference."},Expression_resolves_to_super_that_compiler_uses_to_capture_base_class_reference:{code:2402,category:e.DiagnosticCategory.Error,key:"Expression_resolves_to_super_that_compiler_uses_to_capture_base_class_reference_2402",message:"Expression resolves to '_super' that compiler uses to capture base class reference."},Subsequent_variable_declarations_must_have_the_same_type_Variable_0_must_be_of_type_1_but_here_has_type_2:{code:2403,category:e.DiagnosticCategory.Error,key:"Subsequent_variable_declarations_must_have_the_same_type_Variable_0_must_be_of_type_1_but_here_has_t_2403",message:"Subsequent variable declarations must have the same type. Variable '{0}' must be of type '{1}', but here has type '{2}'."},The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation:{code:2404,category:e.DiagnosticCategory.Error,key:"The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation_2404",message:"The left-hand side of a 'for...in' statement cannot use a type annotation."},The_left_hand_side_of_a_for_in_statement_must_be_of_type_string_or_any:{code:2405,category:e.DiagnosticCategory.Error,key:"The_left_hand_side_of_a_for_in_statement_must_be_of_type_string_or_any_2405",message:"The left-hand side of a 'for...in' statement must be of type 'string' or 'any'."},The_left_hand_side_of_a_for_in_statement_must_be_a_variable_or_a_property_access:{code:2406,category:e.DiagnosticCategory.Error,key:"The_left_hand_side_of_a_for_in_statement_must_be_a_variable_or_a_property_access_2406",message:"The left-hand side of a 'for...in' statement must be a variable or a property access."},The_right_hand_side_of_a_for_in_statement_must_be_of_type_any_an_object_type_or_a_type_parameter:{code:2407,category:e.DiagnosticCategory.Error,key:"The_right_hand_side_of_a_for_in_statement_must_be_of_type_any_an_object_type_or_a_type_parameter_2407",message:"The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter."},Setters_cannot_return_a_value:{code:2408,category:e.DiagnosticCategory.Error,key:"Setters_cannot_return_a_value_2408",message:"Setters cannot return a value."},Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class:{code:2409,category:e.DiagnosticCategory.Error,key:"Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class_2409",message:"Return type of constructor signature must be assignable to the instance type of the class."},The_with_statement_is_not_supported_All_symbols_in_a_with_block_will_have_type_any:{code:2410,category:e.DiagnosticCategory.Error,key:"The_with_statement_is_not_supported_All_symbols_in_a_with_block_will_have_type_any_2410",message:"The 'with' statement is not supported. All symbols in a 'with' block will have type 'any'."},Property_0_of_type_1_is_not_assignable_to_string_index_type_2:{code:2411,category:e.DiagnosticCategory.Error,key:"Property_0_of_type_1_is_not_assignable_to_string_index_type_2_2411",message:"Property '{0}' of type '{1}' is not assignable to string index type '{2}'."},Property_0_of_type_1_is_not_assignable_to_numeric_index_type_2:{code:2412,category:e.DiagnosticCategory.Error,key:"Property_0_of_type_1_is_not_assignable_to_numeric_index_type_2_2412",message:"Property '{0}' of type '{1}' is not assignable to numeric index type '{2}'."},Numeric_index_type_0_is_not_assignable_to_string_index_type_1:{code:2413,category:e.DiagnosticCategory.Error,key:"Numeric_index_type_0_is_not_assignable_to_string_index_type_1_2413",message:"Numeric index type '{0}' is not assignable to string index type '{1}'."},Class_name_cannot_be_0:{code:2414,category:e.DiagnosticCategory.Error,key:"Class_name_cannot_be_0_2414",message:"Class name cannot be '{0}'."},Class_0_incorrectly_extends_base_class_1:{code:2415,category:e.DiagnosticCategory.Error,key:"Class_0_incorrectly_extends_base_class_1_2415",message:"Class '{0}' incorrectly extends base class '{1}'."},Class_static_side_0_incorrectly_extends_base_class_static_side_1:{code:2417,category:e.DiagnosticCategory.Error,key:"Class_static_side_0_incorrectly_extends_base_class_static_side_1_2417",message:"Class static side '{0}' incorrectly extends base class static side '{1}'."},Class_0_incorrectly_implements_interface_1:{code:2420,category:e.DiagnosticCategory.Error,key:"Class_0_incorrectly_implements_interface_1_2420",message:"Class '{0}' incorrectly implements interface '{1}'."},A_class_may_only_implement_another_class_or_interface:{code:2422,category:e.DiagnosticCategory.Error,key:"A_class_may_only_implement_another_class_or_interface_2422",message:"A class may only implement another class or interface."},Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_accessor:{code:2423,category:e.DiagnosticCategory.Error,key:"Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_access_2423",message:"Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member accessor."},Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_property:{code:2424,category:e.DiagnosticCategory.Error,key:"Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_proper_2424",message:"Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member property."},Class_0_defines_instance_member_property_1_but_extended_class_2_defines_it_as_instance_member_function:{code:2425,category:e.DiagnosticCategory.Error,key:"Class_0_defines_instance_member_property_1_but_extended_class_2_defines_it_as_instance_member_functi_2425",message:"Class '{0}' defines instance member property '{1}', but extended class '{2}' defines it as instance member function."},Class_0_defines_instance_member_accessor_1_but_extended_class_2_defines_it_as_instance_member_function:{code:2426,category:e.DiagnosticCategory.Error,key:"Class_0_defines_instance_member_accessor_1_but_extended_class_2_defines_it_as_instance_member_functi_2426",message:"Class '{0}' defines instance member accessor '{1}', but extended class '{2}' defines it as instance member function."},Interface_name_cannot_be_0:{code:2427,category:e.DiagnosticCategory.Error,key:"Interface_name_cannot_be_0_2427",message:"Interface name cannot be '{0}'."},All_declarations_of_0_must_have_identical_type_parameters:{code:2428,category:e.DiagnosticCategory.Error,key:"All_declarations_of_0_must_have_identical_type_parameters_2428",message:"All declarations of '{0}' must have identical type parameters."},Interface_0_incorrectly_extends_interface_1:{code:2430,category:e.DiagnosticCategory.Error,key:"Interface_0_incorrectly_extends_interface_1_2430",message:"Interface '{0}' incorrectly extends interface '{1}'."},Enum_name_cannot_be_0:{code:2431,category:e.DiagnosticCategory.Error,key:"Enum_name_cannot_be_0_2431",message:"Enum name cannot be '{0}'."},In_an_enum_with_multiple_declarations_only_one_declaration_can_omit_an_initializer_for_its_first_enum_element:{code:2432,category:e.DiagnosticCategory.Error,key:"In_an_enum_with_multiple_declarations_only_one_declaration_can_omit_an_initializer_for_its_first_enu_2432",message:"In an enum with multiple declarations, only one declaration can omit an initializer for its first enum element."},A_namespace_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merged:{code:2433,category:e.DiagnosticCategory.Error,key:"A_namespace_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merg_2433",message:"A namespace declaration cannot be in a different file from a class or function with which it is merged."},A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged:{code:2434,category:e.DiagnosticCategory.Error,key:"A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged_2434",message:"A namespace declaration cannot be located prior to a class or function with which it is merged."},Ambient_modules_cannot_be_nested_in_other_modules_or_namespaces:{code:2435,category:e.DiagnosticCategory.Error,key:"Ambient_modules_cannot_be_nested_in_other_modules_or_namespaces_2435",message:"Ambient modules cannot be nested in other modules or namespaces."},Ambient_module_declaration_cannot_specify_relative_module_name:{code:2436,category:e.DiagnosticCategory.Error,key:"Ambient_module_declaration_cannot_specify_relative_module_name_2436",message:"Ambient module declaration cannot specify relative module name."},Module_0_is_hidden_by_a_local_declaration_with_the_same_name:{code:2437,category:e.DiagnosticCategory.Error,key:"Module_0_is_hidden_by_a_local_declaration_with_the_same_name_2437",message:"Module '{0}' is hidden by a local declaration with the same name."},Import_name_cannot_be_0:{code:2438,category:e.DiagnosticCategory.Error,key:"Import_name_cannot_be_0_2438",message:"Import name cannot be '{0}'."},Import_or_export_declaration_in_an_ambient_module_declaration_cannot_reference_module_through_relative_module_name:{code:2439,category:e.DiagnosticCategory.Error,key:"Import_or_export_declaration_in_an_ambient_module_declaration_cannot_reference_module_through_relati_2439",message:"Import or export declaration in an ambient module declaration cannot reference module through relative module name."},Import_declaration_conflicts_with_local_declaration_of_0:{code:2440,category:e.DiagnosticCategory.Error,key:"Import_declaration_conflicts_with_local_declaration_of_0_2440",message:"Import declaration conflicts with local declaration of '{0}'."},Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module:{code:2441,category:e.DiagnosticCategory.Error,key:"Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module_2441",message:"Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of a module."},Types_have_separate_declarations_of_a_private_property_0:{code:2442,category:e.DiagnosticCategory.Error,key:"Types_have_separate_declarations_of_a_private_property_0_2442",message:"Types have separate declarations of a private property '{0}'."},Property_0_is_protected_but_type_1_is_not_a_class_derived_from_2:{code:2443,category:e.DiagnosticCategory.Error,key:"Property_0_is_protected_but_type_1_is_not_a_class_derived_from_2_2443",message:"Property '{0}' is protected but type '{1}' is not a class derived from '{2}'."},Property_0_is_protected_in_type_1_but_public_in_type_2:{code:2444,category:e.DiagnosticCategory.Error,key:"Property_0_is_protected_in_type_1_but_public_in_type_2_2444",message:"Property '{0}' is protected in type '{1}' but public in type '{2}'."},Property_0_is_protected_and_only_accessible_within_class_1_and_its_subclasses:{code:2445,category:e.DiagnosticCategory.Error,key:"Property_0_is_protected_and_only_accessible_within_class_1_and_its_subclasses_2445",message:"Property '{0}' is protected and only accessible within class '{1}' and its subclasses."},Property_0_is_protected_and_only_accessible_through_an_instance_of_class_1:{code:2446,category:e.DiagnosticCategory.Error,key:"Property_0_is_protected_and_only_accessible_through_an_instance_of_class_1_2446",message:"Property '{0}' is protected and only accessible through an instance of class '{1}'."},The_0_operator_is_not_allowed_for_boolean_types_Consider_using_1_instead:{code:2447,category:e.DiagnosticCategory.Error,key:"The_0_operator_is_not_allowed_for_boolean_types_Consider_using_1_instead_2447",message:"The '{0}' operator is not allowed for boolean types. Consider using '{1}' instead."},Block_scoped_variable_0_used_before_its_declaration:{code:2448,category:e.DiagnosticCategory.Error,key:"Block_scoped_variable_0_used_before_its_declaration_2448",message:"Block-scoped variable '{0}' used before its declaration."},Class_0_used_before_its_declaration:{code:2449,category:e.DiagnosticCategory.Error,key:"Class_0_used_before_its_declaration_2449",message:"Class '{0}' used before its declaration."},Enum_0_used_before_its_declaration:{code:2450,category:e.DiagnosticCategory.Error,key:"Enum_0_used_before_its_declaration_2450",message:"Enum '{0}' used before its declaration."},Cannot_redeclare_block_scoped_variable_0:{code:2451,category:e.DiagnosticCategory.Error,key:"Cannot_redeclare_block_scoped_variable_0_2451",message:"Cannot redeclare block-scoped variable '{0}'."},An_enum_member_cannot_have_a_numeric_name:{code:2452,category:e.DiagnosticCategory.Error,key:"An_enum_member_cannot_have_a_numeric_name_2452",message:"An enum member cannot have a numeric name."},The_type_argument_for_type_parameter_0_cannot_be_inferred_from_the_usage_Consider_specifying_the_type_arguments_explicitly:{code:2453,category:e.DiagnosticCategory.Error,key:"The_type_argument_for_type_parameter_0_cannot_be_inferred_from_the_usage_Consider_specifying_the_typ_2453",message:"The type argument for type parameter '{0}' cannot be inferred from the usage. Consider specifying the type arguments explicitly."},Variable_0_is_used_before_being_assigned:{code:2454,category:e.DiagnosticCategory.Error,key:"Variable_0_is_used_before_being_assigned_2454",message:"Variable '{0}' is used before being assigned."},Type_argument_candidate_1_is_not_a_valid_type_argument_because_it_is_not_a_supertype_of_candidate_0:{code:2455,category:e.DiagnosticCategory.Error,key:"Type_argument_candidate_1_is_not_a_valid_type_argument_because_it_is_not_a_supertype_of_candidate_0_2455",message:"Type argument candidate '{1}' is not a valid type argument because it is not a supertype of candidate '{0}'."},Type_alias_0_circularly_references_itself:{code:2456,category:e.DiagnosticCategory.Error,key:"Type_alias_0_circularly_references_itself_2456",message:"Type alias '{0}' circularly references itself."},Type_alias_name_cannot_be_0:{code:2457,category:e.DiagnosticCategory.Error,key:"Type_alias_name_cannot_be_0_2457",message:"Type alias name cannot be '{0}'."},An_AMD_module_cannot_have_multiple_name_assignments:{code:2458,category:e.DiagnosticCategory.Error,key:"An_AMD_module_cannot_have_multiple_name_assignments_2458",message:"An AMD module cannot have multiple name assignments."},Type_0_has_no_property_1_and_no_string_index_signature:{code:2459,category:e.DiagnosticCategory.Error,key:"Type_0_has_no_property_1_and_no_string_index_signature_2459",message:"Type '{0}' has no property '{1}' and no string index signature."},Type_0_has_no_property_1:{code:2460,category:e.DiagnosticCategory.Error,key:"Type_0_has_no_property_1_2460",message:"Type '{0}' has no property '{1}'."},Type_0_is_not_an_array_type:{code:2461,category:e.DiagnosticCategory.Error,key:"Type_0_is_not_an_array_type_2461",message:"Type '{0}' is not an array type."},A_rest_element_must_be_last_in_a_destructuring_pattern:{code:2462,category:e.DiagnosticCategory.Error,key:"A_rest_element_must_be_last_in_a_destructuring_pattern_2462",message:"A rest element must be last in a destructuring pattern."},A_binding_pattern_parameter_cannot_be_optional_in_an_implementation_signature:{code:2463,category:e.DiagnosticCategory.Error,key:"A_binding_pattern_parameter_cannot_be_optional_in_an_implementation_signature_2463",message:"A binding pattern parameter cannot be optional in an implementation signature."},A_computed_property_name_must_be_of_type_string_number_symbol_or_any:{code:2464,category:e.DiagnosticCategory.Error,key:"A_computed_property_name_must_be_of_type_string_number_symbol_or_any_2464",message:"A computed property name must be of type 'string', 'number', 'symbol', or 'any'."},this_cannot_be_referenced_in_a_computed_property_name:{code:2465,category:e.DiagnosticCategory.Error,key:"this_cannot_be_referenced_in_a_computed_property_name_2465",message:"'this' cannot be referenced in a computed property name."},super_cannot_be_referenced_in_a_computed_property_name:{code:2466,category:e.DiagnosticCategory.Error,key:"super_cannot_be_referenced_in_a_computed_property_name_2466",message:"'super' cannot be referenced in a computed property name."},A_computed_property_name_cannot_reference_a_type_parameter_from_its_containing_type:{code:2467,category:e.DiagnosticCategory.Error,key:"A_computed_property_name_cannot_reference_a_type_parameter_from_its_containing_type_2467",message:"A computed property name cannot reference a type parameter from its containing type."},Cannot_find_global_value_0:{code:2468,category:e.DiagnosticCategory.Error,key:"Cannot_find_global_value_0_2468",message:"Cannot find global value '{0}'."},The_0_operator_cannot_be_applied_to_type_symbol:{code:2469,category:e.DiagnosticCategory.Error,key:"The_0_operator_cannot_be_applied_to_type_symbol_2469",message:"The '{0}' operator cannot be applied to type 'symbol'."},Symbol_reference_does_not_refer_to_the_global_Symbol_constructor_object:{code:2470,category:e.DiagnosticCategory.Error,key:"Symbol_reference_does_not_refer_to_the_global_Symbol_constructor_object_2470",message:"'Symbol' reference does not refer to the global Symbol constructor object."},A_computed_property_name_of_the_form_0_must_be_of_type_symbol:{code:2471,category:e.DiagnosticCategory.Error,key:"A_computed_property_name_of_the_form_0_must_be_of_type_symbol_2471",message:"A computed property name of the form '{0}' must be of type 'symbol'."},Spread_operator_in_new_expressions_is_only_available_when_targeting_ECMAScript_5_and_higher:{code:2472,category:e.DiagnosticCategory.Error,key:"Spread_operator_in_new_expressions_is_only_available_when_targeting_ECMAScript_5_and_higher_2472",message:"Spread operator in 'new' expressions is only available when targeting ECMAScript 5 and higher."},Enum_declarations_must_all_be_const_or_non_const:{code:2473,category:e.DiagnosticCategory.Error,key:"Enum_declarations_must_all_be_const_or_non_const_2473",message:"Enum declarations must all be const or non-const."},In_const_enum_declarations_member_initializer_must_be_constant_expression:{code:2474,category:e.DiagnosticCategory.Error,key:"In_const_enum_declarations_member_initializer_must_be_constant_expression_2474",message:"In 'const' enum declarations member initializer must be constant expression."},const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_import_declaration_or_export_assignment:{code:2475,category:e.DiagnosticCategory.Error,key:"const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_im_2475",message:"'const' enums can only be used in property or index access expressions or the right hand side of an import declaration or export assignment."},A_const_enum_member_can_only_be_accessed_using_a_string_literal:{code:2476,category:e.DiagnosticCategory.Error,key:"A_const_enum_member_can_only_be_accessed_using_a_string_literal_2476",message:"A const enum member can only be accessed using a string literal."},const_enum_member_initializer_was_evaluated_to_a_non_finite_value:{code:2477,category:e.DiagnosticCategory.Error,key:"const_enum_member_initializer_was_evaluated_to_a_non_finite_value_2477",message:"'const' enum member initializer was evaluated to a non-finite value."},const_enum_member_initializer_was_evaluated_to_disallowed_value_NaN:{code:2478,category:e.DiagnosticCategory.Error,key:"const_enum_member_initializer_was_evaluated_to_disallowed_value_NaN_2478",message:"'const' enum member initializer was evaluated to disallowed value 'NaN'."},Property_0_does_not_exist_on_const_enum_1:{code:2479,category:e.DiagnosticCategory.Error,key:"Property_0_does_not_exist_on_const_enum_1_2479",message:"Property '{0}' does not exist on 'const' enum '{1}'."},let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations:{code:2480,category:e.DiagnosticCategory.Error,key:"let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations_2480",message:"'let' is not allowed to be used as a name in 'let' or 'const' declarations."},Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1:{code:2481,category:e.DiagnosticCategory.Error,key:"Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1_2481",message:"Cannot initialize outer scoped variable '{0}' in the same scope as block scoped declaration '{1}'."},The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation:{code:2483,category:e.DiagnosticCategory.Error,key:"The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation_2483",message:"The left-hand side of a 'for...of' statement cannot use a type annotation."},Export_declaration_conflicts_with_exported_declaration_of_0:{code:2484,category:e.DiagnosticCategory.Error,key:"Export_declaration_conflicts_with_exported_declaration_of_0_2484",message:"Export declaration conflicts with exported declaration of '{0}'."},The_left_hand_side_of_a_for_of_statement_must_be_a_variable_or_a_property_access:{code:2487,category:e.DiagnosticCategory.Error,key:"The_left_hand_side_of_a_for_of_statement_must_be_a_variable_or_a_property_access_2487",message:"The left-hand side of a 'for...of' statement must be a variable or a property access."},Type_must_have_a_Symbol_iterator_method_that_returns_an_iterator:{code:2488,category:e.DiagnosticCategory.Error,key:"Type_must_have_a_Symbol_iterator_method_that_returns_an_iterator_2488",message:"Type must have a '[Symbol.iterator]()' method that returns an iterator."},An_iterator_must_have_a_next_method:{code:2489,category:e.DiagnosticCategory.Error,key:"An_iterator_must_have_a_next_method_2489",message:"An iterator must have a 'next()' method."},The_type_returned_by_the_next_method_of_an_iterator_must_have_a_value_property:{code:2490,category:e.DiagnosticCategory.Error,key:"The_type_returned_by_the_next_method_of_an_iterator_must_have_a_value_property_2490",message:"The type returned by the 'next()' method of an iterator must have a 'value' property."},The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern:{code:2491,category:e.DiagnosticCategory.Error,key:"The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern_2491",message:"The left-hand side of a 'for...in' statement cannot be a destructuring pattern."},Cannot_redeclare_identifier_0_in_catch_clause:{code:2492,category:e.DiagnosticCategory.Error,key:"Cannot_redeclare_identifier_0_in_catch_clause_2492",message:"Cannot redeclare identifier '{0}' in catch clause."},Tuple_type_0_with_length_1_cannot_be_assigned_to_tuple_with_length_2:{code:2493,category:e.DiagnosticCategory.Error,key:"Tuple_type_0_with_length_1_cannot_be_assigned_to_tuple_with_length_2_2493",message:"Tuple type '{0}' with length '{1}' cannot be assigned to tuple with length '{2}'."},Using_a_string_in_a_for_of_statement_is_only_supported_in_ECMAScript_5_and_higher:{code:2494,category:e.DiagnosticCategory.Error,key:"Using_a_string_in_a_for_of_statement_is_only_supported_in_ECMAScript_5_and_higher_2494",message:"Using a string in a 'for...of' statement is only supported in ECMAScript 5 and higher."},Type_0_is_not_an_array_type_or_a_string_type:{code:2495,category:e.DiagnosticCategory.Error,key:"Type_0_is_not_an_array_type_or_a_string_type_2495",message:"Type '{0}' is not an array type or a string type."},The_arguments_object_cannot_be_referenced_in_an_arrow_function_in_ES3_and_ES5_Consider_using_a_standard_function_expression:{code:2496,category:e.DiagnosticCategory.Error,key:"The_arguments_object_cannot_be_referenced_in_an_arrow_function_in_ES3_and_ES5_Consider_using_a_stand_2496",message:"The 'arguments' object cannot be referenced in an arrow function in ES3 and ES5. Consider using a standard function expression."},Module_0_resolves_to_a_non_module_entity_and_cannot_be_imported_using_this_construct:{code:2497,category:e.DiagnosticCategory.Error,key:"Module_0_resolves_to_a_non_module_entity_and_cannot_be_imported_using_this_construct_2497",message:"Module '{0}' resolves to a non-module entity and cannot be imported using this construct."},Module_0_uses_export_and_cannot_be_used_with_export_Asterisk:{code:2498,category:e.DiagnosticCategory.Error,key:"Module_0_uses_export_and_cannot_be_used_with_export_Asterisk_2498",message:"Module '{0}' uses 'export =' and cannot be used with 'export *'."},An_interface_can_only_extend_an_identifier_Slashqualified_name_with_optional_type_arguments:{code:2499,category:e.DiagnosticCategory.Error,key:"An_interface_can_only_extend_an_identifier_Slashqualified_name_with_optional_type_arguments_2499",message:"An interface can only extend an identifier/qualified-name with optional type arguments."},A_class_can_only_implement_an_identifier_Slashqualified_name_with_optional_type_arguments:{code:2500,category:e.DiagnosticCategory.Error,key:"A_class_can_only_implement_an_identifier_Slashqualified_name_with_optional_type_arguments_2500",message:"A class can only implement an identifier/qualified-name with optional type arguments."},A_rest_element_cannot_contain_a_binding_pattern:{code:2501,category:e.DiagnosticCategory.Error,key:"A_rest_element_cannot_contain_a_binding_pattern_2501",message:"A rest element cannot contain a binding pattern."},_0_is_referenced_directly_or_indirectly_in_its_own_type_annotation:{code:2502,category:e.DiagnosticCategory.Error,key:"_0_is_referenced_directly_or_indirectly_in_its_own_type_annotation_2502",message:"'{0}' is referenced directly or indirectly in its own type annotation."},Cannot_find_namespace_0:{code:2503,category:e.DiagnosticCategory.Error,key:"Cannot_find_namespace_0_2503",message:"Cannot find namespace '{0}'."},Type_must_have_a_Symbol_asyncIterator_method_that_returns_an_async_iterator:{code:2504,category:e.DiagnosticCategory.Error,key:"Type_must_have_a_Symbol_asyncIterator_method_that_returns_an_async_iterator_2504",message:"Type must have a '[Symbol.asyncIterator]()' method that returns an async iterator."},A_generator_cannot_have_a_void_type_annotation:{code:2505,category:e.DiagnosticCategory.Error,key:"A_generator_cannot_have_a_void_type_annotation_2505",message:"A generator cannot have a 'void' type annotation."},_0_is_referenced_directly_or_indirectly_in_its_own_base_expression:{code:2506,category:e.DiagnosticCategory.Error,key:"_0_is_referenced_directly_or_indirectly_in_its_own_base_expression_2506",message:"'{0}' is referenced directly or indirectly in its own base expression."},Type_0_is_not_a_constructor_function_type:{code:2507,category:e.DiagnosticCategory.Error,key:"Type_0_is_not_a_constructor_function_type_2507",message:"Type '{0}' is not a constructor function type."},No_base_constructor_has_the_specified_number_of_type_arguments:{code:2508,category:e.DiagnosticCategory.Error,key:"No_base_constructor_has_the_specified_number_of_type_arguments_2508",message:"No base constructor has the specified number of type arguments."},Base_constructor_return_type_0_is_not_a_class_or_interface_type:{code:2509,category:e.DiagnosticCategory.Error,key:"Base_constructor_return_type_0_is_not_a_class_or_interface_type_2509",message:"Base constructor return type '{0}' is not a class or interface type."},Base_constructors_must_all_have_the_same_return_type:{code:2510,category:e.DiagnosticCategory.Error,key:"Base_constructors_must_all_have_the_same_return_type_2510",message:"Base constructors must all have the same return type."},Cannot_create_an_instance_of_the_abstract_class_0:{code:2511,category:e.DiagnosticCategory.Error,key:"Cannot_create_an_instance_of_the_abstract_class_0_2511",message:"Cannot create an instance of the abstract class '{0}'."},Overload_signatures_must_all_be_abstract_or_non_abstract:{code:2512,category:e.DiagnosticCategory.Error,key:"Overload_signatures_must_all_be_abstract_or_non_abstract_2512",message:"Overload signatures must all be abstract or non-abstract."},Abstract_method_0_in_class_1_cannot_be_accessed_via_super_expression:{code:2513,category:e.DiagnosticCategory.Error,key:"Abstract_method_0_in_class_1_cannot_be_accessed_via_super_expression_2513",message:"Abstract method '{0}' in class '{1}' cannot be accessed via super expression."},Classes_containing_abstract_methods_must_be_marked_abstract:{code:2514,category:e.DiagnosticCategory.Error,key:"Classes_containing_abstract_methods_must_be_marked_abstract_2514",message:"Classes containing abstract methods must be marked abstract."},Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2:{code:2515,category:e.DiagnosticCategory.Error,key:"Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2_2515",message:"Non-abstract class '{0}' does not implement inherited abstract member '{1}' from class '{2}'."},All_declarations_of_an_abstract_method_must_be_consecutive:{code:2516,category:e.DiagnosticCategory.Error,key:"All_declarations_of_an_abstract_method_must_be_consecutive_2516",message:"All declarations of an abstract method must be consecutive."},Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type:{code:2517,category:e.DiagnosticCategory.Error,key:"Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type_2517",message:"Cannot assign an abstract constructor type to a non-abstract constructor type."},A_this_based_type_guard_is_not_compatible_with_a_parameter_based_type_guard:{code:2518,category:e.DiagnosticCategory.Error,key:"A_this_based_type_guard_is_not_compatible_with_a_parameter_based_type_guard_2518",message:"A 'this'-based type guard is not compatible with a parameter-based type guard."},An_async_iterator_must_have_a_next_method:{code:2519,category:e.DiagnosticCategory.Error,key:"An_async_iterator_must_have_a_next_method_2519",message:"An async iterator must have a 'next()' method."},Duplicate_identifier_0_Compiler_uses_declaration_1_to_support_async_functions:{code:2520,category:e.DiagnosticCategory.Error,key:"Duplicate_identifier_0_Compiler_uses_declaration_1_to_support_async_functions_2520",message:"Duplicate identifier '{0}'. Compiler uses declaration '{1}' to support async functions."},Expression_resolves_to_variable_declaration_0_that_compiler_uses_to_support_async_functions:{code:2521,category:e.DiagnosticCategory.Error,key:"Expression_resolves_to_variable_declaration_0_that_compiler_uses_to_support_async_functions_2521",message:"Expression resolves to variable declaration '{0}' that compiler uses to support async functions."},The_arguments_object_cannot_be_referenced_in_an_async_function_or_method_in_ES3_and_ES5_Consider_using_a_standard_function_or_method:{code:2522,category:e.DiagnosticCategory.Error,key:"The_arguments_object_cannot_be_referenced_in_an_async_function_or_method_in_ES3_and_ES5_Consider_usi_2522",message:"The 'arguments' object cannot be referenced in an async function or method in ES3 and ES5. Consider using a standard function or method."},yield_expressions_cannot_be_used_in_a_parameter_initializer:{code:2523,category:e.DiagnosticCategory.Error,key:"yield_expressions_cannot_be_used_in_a_parameter_initializer_2523",message:"'yield' expressions cannot be used in a parameter initializer."},await_expressions_cannot_be_used_in_a_parameter_initializer:{code:2524,category:e.DiagnosticCategory.Error,key:"await_expressions_cannot_be_used_in_a_parameter_initializer_2524",message:"'await' expressions cannot be used in a parameter initializer."},Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value:{code:2525,category:e.DiagnosticCategory.Error,key:"Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value_2525",message:"Initializer provides no value for this binding element and the binding element has no default value."},A_this_type_is_available_only_in_a_non_static_member_of_a_class_or_interface:{code:2526,category:e.DiagnosticCategory.Error,key:"A_this_type_is_available_only_in_a_non_static_member_of_a_class_or_interface_2526",message:"A 'this' type is available only in a non-static member of a class or interface."},The_inferred_type_of_0_references_an_inaccessible_this_type_A_type_annotation_is_necessary:{code:2527,category:e.DiagnosticCategory.Error,key:"The_inferred_type_of_0_references_an_inaccessible_this_type_A_type_annotation_is_necessary_2527",message:"The inferred type of '{0}' references an inaccessible 'this' type. A type annotation is necessary."},A_module_cannot_have_multiple_default_exports:{code:2528,category:e.DiagnosticCategory.Error,key:"A_module_cannot_have_multiple_default_exports_2528",message:"A module cannot have multiple default exports."},Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module_containing_async_functions:{code:2529,category:e.DiagnosticCategory.Error,key:"Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module_containing_async_func_2529",message:"Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of a module containing async functions."},Property_0_is_incompatible_with_index_signature:{code:2530,category:e.DiagnosticCategory.Error,key:"Property_0_is_incompatible_with_index_signature_2530",message:"Property '{0}' is incompatible with index signature."},Object_is_possibly_null:{code:2531,category:e.DiagnosticCategory.Error,key:"Object_is_possibly_null_2531",message:"Object is possibly 'null'."},Object_is_possibly_undefined:{code:2532,category:e.DiagnosticCategory.Error,key:"Object_is_possibly_undefined_2532",message:"Object is possibly 'undefined'."},Object_is_possibly_null_or_undefined:{code:2533,category:e.DiagnosticCategory.Error,key:"Object_is_possibly_null_or_undefined_2533",message:"Object is possibly 'null' or 'undefined'."},A_function_returning_never_cannot_have_a_reachable_end_point:{code:2534,category:e.DiagnosticCategory.Error,key:"A_function_returning_never_cannot_have_a_reachable_end_point_2534",message:"A function returning 'never' cannot have a reachable end point."},Enum_type_0_has_members_with_initializers_that_are_not_literals:{code:2535,category:e.DiagnosticCategory.Error,key:"Enum_type_0_has_members_with_initializers_that_are_not_literals_2535",message:"Enum type '{0}' has members with initializers that are not literals."},Type_0_cannot_be_used_to_index_type_1:{code:2536,category:e.DiagnosticCategory.Error,key:"Type_0_cannot_be_used_to_index_type_1_2536",message:"Type '{0}' cannot be used to index type '{1}'."},Type_0_has_no_matching_index_signature_for_type_1:{code:2537,category:e.DiagnosticCategory.Error,key:"Type_0_has_no_matching_index_signature_for_type_1_2537",message:"Type '{0}' has no matching index signature for type '{1}'."},Type_0_cannot_be_used_as_an_index_type:{code:2538,category:e.DiagnosticCategory.Error,key:"Type_0_cannot_be_used_as_an_index_type_2538",message:"Type '{0}' cannot be used as an index type."},Cannot_assign_to_0_because_it_is_not_a_variable:{code:2539,category:e.DiagnosticCategory.Error,key:"Cannot_assign_to_0_because_it_is_not_a_variable_2539",message:"Cannot assign to '{0}' because it is not a variable."},Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property:{code:2540,category:e.DiagnosticCategory.Error,key:"Cannot_assign_to_0_because_it_is_a_constant_or_a_read_only_property_2540",message:"Cannot assign to '{0}' because it is a constant or a read-only property."},The_target_of_an_assignment_must_be_a_variable_or_a_property_access:{code:2541,category:e.DiagnosticCategory.Error,key:"The_target_of_an_assignment_must_be_a_variable_or_a_property_access_2541",message:"The target of an assignment must be a variable or a property access."},Index_signature_in_type_0_only_permits_reading:{code:2542,category:e.DiagnosticCategory.Error,key:"Index_signature_in_type_0_only_permits_reading_2542",message:"Index signature in type '{0}' only permits reading."},Duplicate_identifier_newTarget_Compiler_uses_variable_declaration_newTarget_to_capture_new_target_meta_property_reference:{code:2543,category:e.DiagnosticCategory.Error,key:"Duplicate_identifier_newTarget_Compiler_uses_variable_declaration_newTarget_to_capture_new_target_me_2543",message:"Duplicate identifier '_newTarget'. Compiler uses variable declaration '_newTarget' to capture 'new.target' meta-property reference."},Expression_resolves_to_variable_declaration_newTarget_that_compiler_uses_to_capture_new_target_meta_property_reference:{code:2544,category:e.DiagnosticCategory.Error,key:"Expression_resolves_to_variable_declaration_newTarget_that_compiler_uses_to_capture_new_target_meta__2544",message:"Expression resolves to variable declaration '_newTarget' that compiler uses to capture 'new.target' meta-property reference."},A_mixin_class_must_have_a_constructor_with_a_single_rest_parameter_of_type_any:{code:2545,category:e.DiagnosticCategory.Error,key:"A_mixin_class_must_have_a_constructor_with_a_single_rest_parameter_of_type_any_2545",message:"A mixin class must have a constructor with a single rest parameter of type 'any[]'."},Property_0_has_conflicting_declarations_and_is_inaccessible_in_type_1:{code:2546,category:e.DiagnosticCategory.Error,key:"Property_0_has_conflicting_declarations_and_is_inaccessible_in_type_1_2546",message:"Property '{0}' has conflicting declarations and is inaccessible in type '{1}'."},The_type_returned_by_the_next_method_of_an_async_iterator_must_be_a_promise_for_a_type_with_a_value_property:{code:2547,category:e.DiagnosticCategory.Error,key:"The_type_returned_by_the_next_method_of_an_async_iterator_must_be_a_promise_for_a_type_with_a_value__2547",message:"The type returned by the 'next()' method of an async iterator must be a promise for a type with a 'value' property."},Type_0_is_not_an_array_type_or_does_not_have_a_Symbol_iterator_method_that_returns_an_iterator:{code:2548,category:e.DiagnosticCategory.Error,key:"Type_0_is_not_an_array_type_or_does_not_have_a_Symbol_iterator_method_that_returns_an_iterator_2548",message:"Type '{0}' is not an array type or does not have a '[Symbol.iterator]()' method that returns an iterator."},Type_0_is_not_an_array_type_or_a_string_type_or_does_not_have_a_Symbol_iterator_method_that_returns_an_iterator:{code:2549,category:e.DiagnosticCategory.Error,key:"Type_0_is_not_an_array_type_or_a_string_type_or_does_not_have_a_Symbol_iterator_method_that_returns__2549",message:"Type '{0}' is not an array type or a string type or does not have a '[Symbol.iterator]()' method that returns an iterator."},Generic_type_instantiation_is_excessively_deep_and_possibly_infinite:{code:2550,category:e.DiagnosticCategory.Error,key:"Generic_type_instantiation_is_excessively_deep_and_possibly_infinite_2550",message:"Generic type instantiation is excessively deep and possibly infinite."},JSX_element_attributes_type_0_may_not_be_a_union_type:{code:2600,category:e.DiagnosticCategory.Error,key:"JSX_element_attributes_type_0_may_not_be_a_union_type_2600",message:"JSX element attributes type '{0}' may not be a union type."},The_return_type_of_a_JSX_element_constructor_must_return_an_object_type:{code:2601,category:e.DiagnosticCategory.Error,key:"The_return_type_of_a_JSX_element_constructor_must_return_an_object_type_2601",message:"The return type of a JSX element constructor must return an object type."},JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist:{code:2602,category:e.DiagnosticCategory.Error,key:"JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist_2602",message:"JSX element implicitly has type 'any' because the global type 'JSX.Element' does not exist."},Property_0_in_type_1_is_not_assignable_to_type_2:{code:2603,category:e.DiagnosticCategory.Error,key:"Property_0_in_type_1_is_not_assignable_to_type_2_2603",message:"Property '{0}' in type '{1}' is not assignable to type '{2}'."},JSX_element_type_0_does_not_have_any_construct_or_call_signatures:{code:2604,category:e.DiagnosticCategory.Error,key:"JSX_element_type_0_does_not_have_any_construct_or_call_signatures_2604",message:"JSX element type '{0}' does not have any construct or call signatures."},JSX_element_type_0_is_not_a_constructor_function_for_JSX_elements:{code:2605,category:e.DiagnosticCategory.Error,key:"JSX_element_type_0_is_not_a_constructor_function_for_JSX_elements_2605",message:"JSX element type '{0}' is not a constructor function for JSX elements."},Property_0_of_JSX_spread_attribute_is_not_assignable_to_target_property:{code:2606,category:e.DiagnosticCategory.Error,key:"Property_0_of_JSX_spread_attribute_is_not_assignable_to_target_property_2606",message:"Property '{0}' of JSX spread attribute is not assignable to target property."},JSX_element_class_does_not_support_attributes_because_it_does_not_have_a_0_property:{code:2607,category:e.DiagnosticCategory.Error,key:"JSX_element_class_does_not_support_attributes_because_it_does_not_have_a_0_property_2607",message:"JSX element class does not support attributes because it does not have a '{0}' property."},The_global_type_JSX_0_may_not_have_more_than_one_property:{code:2608,category:e.DiagnosticCategory.Error,key:"The_global_type_JSX_0_may_not_have_more_than_one_property_2608",message:"The global type 'JSX.{0}' may not have more than one property."},JSX_spread_child_must_be_an_array_type:{code:2609,category:e.DiagnosticCategory.Error,key:"JSX_spread_child_must_be_an_array_type_2609",message:"JSX spread child must be an array type."},Cannot_augment_module_0_with_value_exports_because_it_resolves_to_a_non_module_entity:{code:2649,category:e.DiagnosticCategory.Error,key:"Cannot_augment_module_0_with_value_exports_because_it_resolves_to_a_non_module_entity_2649",message:"Cannot augment module '{0}' with value exports because it resolves to a non-module entity."},Cannot_emit_namespaced_JSX_elements_in_React:{code:2650,category:e.DiagnosticCategory.Error,key:"Cannot_emit_namespaced_JSX_elements_in_React_2650",message:"Cannot emit namespaced JSX elements in React."},A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums:{code:2651,category:e.DiagnosticCategory.Error,key:"A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_memb_2651",message:"A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums."},Merged_declaration_0_cannot_include_a_default_export_declaration_Consider_adding_a_separate_export_default_0_declaration_instead:{code:2652,category:e.DiagnosticCategory.Error,key:"Merged_declaration_0_cannot_include_a_default_export_declaration_Consider_adding_a_separate_export_d_2652",message:"Merged declaration '{0}' cannot include a default export declaration. Consider adding a separate 'export default {0}' declaration instead."},Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1:{code:2653,category:e.DiagnosticCategory.Error,key:"Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1_2653",message:"Non-abstract class expression does not implement inherited abstract member '{0}' from class '{1}'."},Exported_external_package_typings_file_cannot_contain_tripleslash_references_Please_contact_the_package_author_to_update_the_package_definition:{code:2654,category:e.DiagnosticCategory.Error,key:"Exported_external_package_typings_file_cannot_contain_tripleslash_references_Please_contact_the_pack_2654",message:"Exported external package typings file cannot contain tripleslash references. Please contact the package author to update the package definition."},Exported_external_package_typings_file_0_is_not_a_module_Please_contact_the_package_author_to_update_the_package_definition:{code:2656,category:e.DiagnosticCategory.Error,key:"Exported_external_package_typings_file_0_is_not_a_module_Please_contact_the_package_author_to_update_2656",message:"Exported external package typings file '{0}' is not a module. Please contact the package author to update the package definition."},JSX_expressions_must_have_one_parent_element:{code:2657,category:e.DiagnosticCategory.Error,key:"JSX_expressions_must_have_one_parent_element_2657",message:"JSX expressions must have one parent element."},Type_0_provides_no_match_for_the_signature_1:{code:2658,category:e.DiagnosticCategory.Error,key:"Type_0_provides_no_match_for_the_signature_1_2658",message:"Type '{0}' provides no match for the signature '{1}'."},super_is_only_allowed_in_members_of_object_literal_expressions_when_option_target_is_ES2015_or_higher:{code:2659,category:e.DiagnosticCategory.Error,key:"super_is_only_allowed_in_members_of_object_literal_expressions_when_option_target_is_ES2015_or_highe_2659",message:"'super' is only allowed in members of object literal expressions when option 'target' is 'ES2015' or higher."},super_can_only_be_referenced_in_members_of_derived_classes_or_object_literal_expressions:{code:2660,category:e.DiagnosticCategory.Error,key:"super_can_only_be_referenced_in_members_of_derived_classes_or_object_literal_expressions_2660",message:"'super' can only be referenced in members of derived classes or object literal expressions."},Cannot_export_0_Only_local_declarations_can_be_exported_from_a_module:{code:2661,category:e.DiagnosticCategory.Error,key:"Cannot_export_0_Only_local_declarations_can_be_exported_from_a_module_2661",message:"Cannot export '{0}'. Only local declarations can be exported from a module."},Cannot_find_name_0_Did_you_mean_the_static_member_1_0:{code:2662,category:e.DiagnosticCategory.Error,key:"Cannot_find_name_0_Did_you_mean_the_static_member_1_0_2662",message:"Cannot find name '{0}'. Did you mean the static member '{1}.{0}'?"},Cannot_find_name_0_Did_you_mean_the_instance_member_this_0:{code:2663,category:e.DiagnosticCategory.Error,key:"Cannot_find_name_0_Did_you_mean_the_instance_member_this_0_2663",message:"Cannot find name '{0}'. Did you mean the instance member 'this.{0}'?"},Invalid_module_name_in_augmentation_module_0_cannot_be_found:{code:2664,category:e.DiagnosticCategory.Error,key:"Invalid_module_name_in_augmentation_module_0_cannot_be_found_2664",message:"Invalid module name in augmentation, module '{0}' cannot be found."},Invalid_module_name_in_augmentation_Module_0_resolves_to_an_untyped_module_at_1_which_cannot_be_augmented:{code:2665,category:e.DiagnosticCategory.Error,key:"Invalid_module_name_in_augmentation_Module_0_resolves_to_an_untyped_module_at_1_which_cannot_be_augm_2665",message:"Invalid module name in augmentation. Module '{0}' resolves to an untyped module at '{1}', which cannot be augmented."},Exports_and_export_assignments_are_not_permitted_in_module_augmentations:{code:2666,category:e.DiagnosticCategory.Error,key:"Exports_and_export_assignments_are_not_permitted_in_module_augmentations_2666",message:"Exports and export assignments are not permitted in module augmentations."},Imports_are_not_permitted_in_module_augmentations_Consider_moving_them_to_the_enclosing_external_module:{code:2667,category:e.DiagnosticCategory.Error,key:"Imports_are_not_permitted_in_module_augmentations_Consider_moving_them_to_the_enclosing_external_mod_2667",message:"Imports are not permitted in module augmentations. Consider moving them to the enclosing external module."},export_modifier_cannot_be_applied_to_ambient_modules_and_module_augmentations_since_they_are_always_visible:{code:2668,category:e.DiagnosticCategory.Error,key:"export_modifier_cannot_be_applied_to_ambient_modules_and_module_augmentations_since_they_are_always__2668",message:"'export' modifier cannot be applied to ambient modules and module augmentations since they are always visible."},Augmentations_for_the_global_scope_can_only_be_directly_nested_in_external_modules_or_ambient_module_declarations:{code:2669,category:e.DiagnosticCategory.Error,key:"Augmentations_for_the_global_scope_can_only_be_directly_nested_in_external_modules_or_ambient_module_2669",message:"Augmentations for the global scope can only be directly nested in external modules or ambient module declarations."},Augmentations_for_the_global_scope_should_have_declare_modifier_unless_they_appear_in_already_ambient_context:{code:2670,category:e.DiagnosticCategory.Error,key:"Augmentations_for_the_global_scope_should_have_declare_modifier_unless_they_appear_in_already_ambien_2670",message:"Augmentations for the global scope should have 'declare' modifier unless they appear in already ambient context."},Cannot_augment_module_0_because_it_resolves_to_a_non_module_entity:{code:2671,category:e.DiagnosticCategory.Error,key:"Cannot_augment_module_0_because_it_resolves_to_a_non_module_entity_2671",message:"Cannot augment module '{0}' because it resolves to a non-module entity."},Cannot_assign_a_0_constructor_type_to_a_1_constructor_type:{code:2672,category:e.DiagnosticCategory.Error,key:"Cannot_assign_a_0_constructor_type_to_a_1_constructor_type_2672",message:"Cannot assign a '{0}' constructor type to a '{1}' constructor type."},Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration:{code:2673,category:e.DiagnosticCategory.Error,key:"Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration_2673",message:"Constructor of class '{0}' is private and only accessible within the class declaration."},Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration:{code:2674,category:e.DiagnosticCategory.Error,key:"Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration_2674",message:"Constructor of class '{0}' is protected and only accessible within the class declaration."},Cannot_extend_a_class_0_Class_constructor_is_marked_as_private:{code:2675,category:e.DiagnosticCategory.Error,key:"Cannot_extend_a_class_0_Class_constructor_is_marked_as_private_2675",message:"Cannot extend a class '{0}'. Class constructor is marked as private."},Accessors_must_both_be_abstract_or_non_abstract:{code:2676,category:e.DiagnosticCategory.Error,key:"Accessors_must_both_be_abstract_or_non_abstract_2676",message:"Accessors must both be abstract or non-abstract."},A_type_predicate_s_type_must_be_assignable_to_its_parameter_s_type:{code:2677,category:e.DiagnosticCategory.Error,key:"A_type_predicate_s_type_must_be_assignable_to_its_parameter_s_type_2677",message:"A type predicate's type must be assignable to its parameter's type."},Type_0_is_not_comparable_to_type_1:{code:2678,category:e.DiagnosticCategory.Error,key:"Type_0_is_not_comparable_to_type_1_2678",message:"Type '{0}' is not comparable to type '{1}'."},A_function_that_is_called_with_the_new_keyword_cannot_have_a_this_type_that_is_void:{code:2679,category:e.DiagnosticCategory.Error,key:"A_function_that_is_called_with_the_new_keyword_cannot_have_a_this_type_that_is_void_2679",message:"A function that is called with the 'new' keyword cannot have a 'this' type that is 'void'."},A_this_parameter_must_be_the_first_parameter:{code:2680,category:e.DiagnosticCategory.Error,key:"A_this_parameter_must_be_the_first_parameter_2680",message:"A 'this' parameter must be the first parameter."},A_constructor_cannot_have_a_this_parameter:{code:2681,category:e.DiagnosticCategory.Error,key:"A_constructor_cannot_have_a_this_parameter_2681",message:"A constructor cannot have a 'this' parameter."},get_and_set_accessor_must_have_the_same_this_type:{code:2682,category:e.DiagnosticCategory.Error,key:"get_and_set_accessor_must_have_the_same_this_type_2682",message:"'get' and 'set' accessor must have the same 'this' type."},this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation:{code:2683,category:e.DiagnosticCategory.Error,key:"this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation_2683",message:"'this' implicitly has type 'any' because it does not have a type annotation."},The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1:{code:2684,category:e.DiagnosticCategory.Error,key:"The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1_2684",message:"The 'this' context of type '{0}' is not assignable to method's 'this' of type '{1}'."},The_this_types_of_each_signature_are_incompatible:{code:2685,category:e.DiagnosticCategory.Error,key:"The_this_types_of_each_signature_are_incompatible_2685",message:"The 'this' types of each signature are incompatible."},_0_refers_to_a_UMD_global_but_the_current_file_is_a_module_Consider_adding_an_import_instead:{code:2686,category:e.DiagnosticCategory.Error,key:"_0_refers_to_a_UMD_global_but_the_current_file_is_a_module_Consider_adding_an_import_instead_2686",message:"'{0}' refers to a UMD global, but the current file is a module. Consider adding an import instead."},All_declarations_of_0_must_have_identical_modifiers:{code:2687,category:e.DiagnosticCategory.Error,key:"All_declarations_of_0_must_have_identical_modifiers_2687",message:"All declarations of '{0}' must have identical modifiers."},Cannot_find_type_definition_file_for_0:{code:2688,category:e.DiagnosticCategory.Error,key:"Cannot_find_type_definition_file_for_0_2688",message:"Cannot find type definition file for '{0}'."},Cannot_extend_an_interface_0_Did_you_mean_implements:{code:2689,category:e.DiagnosticCategory.Error,key:"Cannot_extend_an_interface_0_Did_you_mean_implements_2689",message:"Cannot extend an interface '{0}'. Did you mean 'implements'?"},An_import_path_cannot_end_with_a_0_extension_Consider_importing_1_instead:{code:2691,category:e.DiagnosticCategory.Error,key:"An_import_path_cannot_end_with_a_0_extension_Consider_importing_1_instead_2691",message:"An import path cannot end with a '{0}' extension. Consider importing '{1}' instead."},_0_is_a_primitive_but_1_is_a_wrapper_object_Prefer_using_0_when_possible:{code:2692,category:e.DiagnosticCategory.Error,key:"_0_is_a_primitive_but_1_is_a_wrapper_object_Prefer_using_0_when_possible_2692",message:"'{0}' is a primitive, but '{1}' is a wrapper object. Prefer using '{0}' when possible."},_0_only_refers_to_a_type_but_is_being_used_as_a_value_here:{code:2693,category:e.DiagnosticCategory.Error,key:"_0_only_refers_to_a_type_but_is_being_used_as_a_value_here_2693",message:"'{0}' only refers to a type, but is being used as a value here."},Namespace_0_has_no_exported_member_1:{code:2694,category:e.DiagnosticCategory.Error,key:"Namespace_0_has_no_exported_member_1_2694",message:"Namespace '{0}' has no exported member '{1}'."},Left_side_of_comma_operator_is_unused_and_has_no_side_effects:{code:2695,category:e.DiagnosticCategory.Error,key:"Left_side_of_comma_operator_is_unused_and_has_no_side_effects_2695",message:"Left side of comma operator is unused and has no side effects."},The_Object_type_is_assignable_to_very_few_other_types_Did_you_mean_to_use_the_any_type_instead:{code:2696,category:e.DiagnosticCategory.Error,key:"The_Object_type_is_assignable_to_very_few_other_types_Did_you_mean_to_use_the_any_type_instead_2696",message:"The 'Object' type is assignable to very few other types. Did you mean to use the 'any' type instead?"},An_async_function_or_method_must_return_a_Promise_Make_sure_you_have_a_declaration_for_Promise_or_include_ES2015_in_your_lib_option:{code:2697,category:e.DiagnosticCategory.Error,key:"An_async_function_or_method_must_return_a_Promise_Make_sure_you_have_a_declaration_for_Promise_or_in_2697",message:"An async function or method must return a 'Promise'. Make sure you have a declaration for 'Promise' or include 'ES2015' in your `--lib` option."},Spread_types_may_only_be_created_from_object_types:{code:2698,category:e.DiagnosticCategory.Error,key:"Spread_types_may_only_be_created_from_object_types_2698",message:"Spread types may only be created from object types."},Static_property_0_conflicts_with_built_in_property_Function_0_of_constructor_function_1:{code:2699,category:e.DiagnosticCategory.Error,key:"Static_property_0_conflicts_with_built_in_property_Function_0_of_constructor_function_1_2699",message:"Static property '{0}' conflicts with built-in property 'Function.{0}' of constructor function '{1}'."},Rest_types_may_only_be_created_from_object_types:{code:2700,category:e.DiagnosticCategory.Error,key:"Rest_types_may_only_be_created_from_object_types_2700",message:"Rest types may only be created from object types."},The_target_of_an_object_rest_assignment_must_be_a_variable_or_a_property_access:{code:2701,category:e.DiagnosticCategory.Error,key:"The_target_of_an_object_rest_assignment_must_be_a_variable_or_a_property_access_2701",message:"The target of an object rest assignment must be a variable or a property access."},_0_only_refers_to_a_type_but_is_being_used_as_a_namespace_here:{code:2702,category:e.DiagnosticCategory.Error,key:"_0_only_refers_to_a_type_but_is_being_used_as_a_namespace_here_2702",message:"'{0}' only refers to a type, but is being used as a namespace here."},The_operand_of_a_delete_operator_must_be_a_property_reference:{code:2703,category:e.DiagnosticCategory.Error,key:"The_operand_of_a_delete_operator_must_be_a_property_reference_2703",message:"The operand of a delete operator must be a property reference."},The_operand_of_a_delete_operator_cannot_be_a_read_only_property:{code:2704,category:e.DiagnosticCategory.Error,key:"The_operand_of_a_delete_operator_cannot_be_a_read_only_property_2704",message:"The operand of a delete operator cannot be a read-only property."},An_async_function_or_method_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_declaration_for_the_Promise_constructor_or_include_ES2015_in_your_lib_option:{code:2705,category:e.DiagnosticCategory.Error,key:"An_async_function_or_method_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_de_2705",message:"An async function or method in ES5/ES3 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your `--lib` option."},Required_type_parameters_may_not_follow_optional_type_parameters:{code:2706,category:e.DiagnosticCategory.Error,key:"Required_type_parameters_may_not_follow_optional_type_parameters_2706",message:"Required type parameters may not follow optional type parameters."},Generic_type_0_requires_between_1_and_2_type_arguments:{code:2707,category:e.DiagnosticCategory.Error,key:"Generic_type_0_requires_between_1_and_2_type_arguments_2707",message:"Generic type '{0}' requires between {1} and {2} type arguments."},Cannot_use_namespace_0_as_a_value:{code:2708,category:e.DiagnosticCategory.Error,key:"Cannot_use_namespace_0_as_a_value_2708",message:"Cannot use namespace '{0}' as a value."},Cannot_use_namespace_0_as_a_type:{code:2709,category:e.DiagnosticCategory.Error,key:"Cannot_use_namespace_0_as_a_type_2709",message:"Cannot use namespace '{0}' as a type."},_0_are_specified_twice_The_attribute_named_0_will_be_overwritten:{code:2710,category:e.DiagnosticCategory.Error,key:"_0_are_specified_twice_The_attribute_named_0_will_be_overwritten_2710",message:"'{0}' are specified twice. The attribute named '{0}' will be overwritten."},Import_declaration_0_is_using_private_name_1:{code:4e3,category:e.DiagnosticCategory.Error,key:"Import_declaration_0_is_using_private_name_1_4000",message:"Import declaration '{0}' is using private name '{1}'."},Type_parameter_0_of_exported_class_has_or_is_using_private_name_1:{code:4002,category:e.DiagnosticCategory.Error,key:"Type_parameter_0_of_exported_class_has_or_is_using_private_name_1_4002",message:"Type parameter '{0}' of exported class has or is using private name '{1}'."},Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1:{code:4004,category:e.DiagnosticCategory.Error,key:"Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1_4004",message:"Type parameter '{0}' of exported interface has or is using private name '{1}'."},Type_parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1:{code:4006,category:e.DiagnosticCategory.Error,key:"Type_parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1_4006",message:"Type parameter '{0}' of constructor signature from exported interface has or is using private name '{1}'."},Type_parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1:{code:4008,category:e.DiagnosticCategory.Error,key:"Type_parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1_4008",message:"Type parameter '{0}' of call signature from exported interface has or is using private name '{1}'."},Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1:{code:4010,category:e.DiagnosticCategory.Error,key:"Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1_4010",message:"Type parameter '{0}' of public static method from exported class has or is using private name '{1}'."},Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1:{code:4012,category:e.DiagnosticCategory.Error,key:"Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1_4012",message:"Type parameter '{0}' of public method from exported class has or is using private name '{1}'."},Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1:{code:4014,category:e.DiagnosticCategory.Error,key:"Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1_4014",message:"Type parameter '{0}' of method from exported interface has or is using private name '{1}'."},Type_parameter_0_of_exported_function_has_or_is_using_private_name_1:{code:4016,category:e.DiagnosticCategory.Error,key:"Type_parameter_0_of_exported_function_has_or_is_using_private_name_1_4016",message:"Type parameter '{0}' of exported function has or is using private name '{1}'."},Implements_clause_of_exported_class_0_has_or_is_using_private_name_1:{code:4019,category:e.DiagnosticCategory.Error,key:"Implements_clause_of_exported_class_0_has_or_is_using_private_name_1_4019",message:"Implements clause of exported class '{0}' has or is using private name '{1}'."},extends_clause_of_exported_class_0_has_or_is_using_private_name_1:{code:4020,category:e.DiagnosticCategory.Error,key:"extends_clause_of_exported_class_0_has_or_is_using_private_name_1_4020",message:"'extends' clause of exported class '{0}' has or is using private name '{1}'."},extends_clause_of_exported_interface_0_has_or_is_using_private_name_1:{code:4022,category:e.DiagnosticCategory.Error,key:"extends_clause_of_exported_interface_0_has_or_is_using_private_name_1_4022",message:"'extends' clause of exported interface '{0}' has or is using private name '{1}'."},Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:{code:4023,category:e.DiagnosticCategory.Error,key:"Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named_4023",message:"Exported variable '{0}' has or is using name '{1}' from external module {2} but cannot be named."},Exported_variable_0_has_or_is_using_name_1_from_private_module_2:{code:4024,category:e.DiagnosticCategory.Error,key:"Exported_variable_0_has_or_is_using_name_1_from_private_module_2_4024",message:"Exported variable '{0}' has or is using name '{1}' from private module '{2}'."},Exported_variable_0_has_or_is_using_private_name_1:{code:4025,category:e.DiagnosticCategory.Error,key:"Exported_variable_0_has_or_is_using_private_name_1_4025",message:"Exported variable '{0}' has or is using private name '{1}'."},Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:{code:4026,category:e.DiagnosticCategory.Error,key:"Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot__4026",message:"Public static property '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named."},Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2:{code:4027,category:e.DiagnosticCategory.Error,key:"Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2_4027",message:"Public static property '{0}' of exported class has or is using name '{1}' from private module '{2}'."},Public_static_property_0_of_exported_class_has_or_is_using_private_name_1:{code:4028,category:e.DiagnosticCategory.Error,key:"Public_static_property_0_of_exported_class_has_or_is_using_private_name_1_4028",message:"Public static property '{0}' of exported class has or is using private name '{1}'."},Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:{code:4029,category:e.DiagnosticCategory.Error,key:"Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_name_4029",message:"Public property '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named."},Public_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2:{code:4030,category:e.DiagnosticCategory.Error,key:"Public_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2_4030",message:"Public property '{0}' of exported class has or is using name '{1}' from private module '{2}'."},Public_property_0_of_exported_class_has_or_is_using_private_name_1:{code:4031,category:e.DiagnosticCategory.Error,key:"Public_property_0_of_exported_class_has_or_is_using_private_name_1_4031",message:"Public property '{0}' of exported class has or is using private name '{1}'."},Property_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2:{code:4032,category:e.DiagnosticCategory.Error,key:"Property_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2_4032",message:"Property '{0}' of exported interface has or is using name '{1}' from private module '{2}'."},Property_0_of_exported_interface_has_or_is_using_private_name_1:{code:4033,category:e.DiagnosticCategory.Error,key:"Property_0_of_exported_interface_has_or_is_using_private_name_1_4033",message:"Property '{0}' of exported interface has or is using private name '{1}'."},Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2:{code:4034,category:e.DiagnosticCategory.Error,key:"Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_name_1_from_private_4034",message:"Parameter '{0}' of public static property setter from exported class has or is using name '{1}' from private module '{2}'."},Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_private_name_1:{code:4035,category:e.DiagnosticCategory.Error,key:"Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_private_name_1_4035",message:"Parameter '{0}' of public static property setter from exported class has or is using private name '{1}'."},Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2:{code:4036,category:e.DiagnosticCategory.Error,key:"Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_4036",message:"Parameter '{0}' of public property setter from exported class has or is using name '{1}' from private module '{2}'."},Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_private_name_1:{code:4037,category:e.DiagnosticCategory.Error,key:"Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_private_name_1_4037",message:"Parameter '{0}' of public property setter from exported class has or is using private name '{1}'."},Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named:{code:4038,category:e.DiagnosticCategory.Error,key:"Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_externa_4038",message:"Return type of public static property getter from exported class has or is using name '{0}' from external module {1} but cannot be named."},Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1:{code:4039,category:e.DiagnosticCategory.Error,key:"Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_private_4039",message:"Return type of public static property getter from exported class has or is using name '{0}' from private module '{1}'."},Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_private_name_0:{code:4040,category:e.DiagnosticCategory.Error,key:"Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_private_name_0_4040",message:"Return type of public static property getter from exported class has or is using private name '{0}'."},Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named:{code:4041,category:e.DiagnosticCategory.Error,key:"Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_external_modul_4041",message:"Return type of public property getter from exported class has or is using name '{0}' from external module {1} but cannot be named."},Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1:{code:4042,category:e.DiagnosticCategory.Error,key:"Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_4042",message:"Return type of public property getter from exported class has or is using name '{0}' from private module '{1}'."},Return_type_of_public_property_getter_from_exported_class_has_or_is_using_private_name_0:{code:4043,category:e.DiagnosticCategory.Error,key:"Return_type_of_public_property_getter_from_exported_class_has_or_is_using_private_name_0_4043",message:"Return type of public property getter from exported class has or is using private name '{0}'."},Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1:{code:4044,category:e.DiagnosticCategory.Error,key:"Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_name_0_from_private_mod_4044",message:"Return type of constructor signature from exported interface has or is using name '{0}' from private module '{1}'."},Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_0:{code:4045,category:e.DiagnosticCategory.Error,key:"Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_0_4045",message:"Return type of constructor signature from exported interface has or is using private name '{0}'."},Return_type_of_call_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1:{code:4046,category:e.DiagnosticCategory.Error,key:"Return_type_of_call_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1_4046",message:"Return type of call signature from exported interface has or is using name '{0}' from private module '{1}'."},Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_name_0:{code:4047,category:e.DiagnosticCategory.Error,key:"Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_name_0_4047",message:"Return type of call signature from exported interface has or is using private name '{0}'."},Return_type_of_index_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1:{code:4048,category:e.DiagnosticCategory.Error,key:"Return_type_of_index_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1_4048",message:"Return type of index signature from exported interface has or is using name '{0}' from private module '{1}'."},Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_name_0:{code:4049,category:e.DiagnosticCategory.Error,key:"Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_name_0_4049",message:"Return type of index signature from exported interface has or is using private name '{0}'."},Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named:{code:4050,category:e.DiagnosticCategory.Error,key:"Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_external_module__4050",message:"Return type of public static method from exported class has or is using name '{0}' from external module {1} but cannot be named."},Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1:{code:4051,category:e.DiagnosticCategory.Error,key:"Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1_4051",message:"Return type of public static method from exported class has or is using name '{0}' from private module '{1}'."},Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0:{code:4052,category:e.DiagnosticCategory.Error,key:"Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0_4052",message:"Return type of public static method from exported class has or is using private name '{0}'."},Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named:{code:4053,category:e.DiagnosticCategory.Error,key:"Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_c_4053",message:"Return type of public method from exported class has or is using name '{0}' from external module {1} but cannot be named."},Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_private_module_1:{code:4054,category:e.DiagnosticCategory.Error,key:"Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_private_module_1_4054",message:"Return type of public method from exported class has or is using name '{0}' from private module '{1}'."},Return_type_of_public_method_from_exported_class_has_or_is_using_private_name_0:{code:4055,category:e.DiagnosticCategory.Error,key:"Return_type_of_public_method_from_exported_class_has_or_is_using_private_name_0_4055",message:"Return type of public method from exported class has or is using private name '{0}'."},Return_type_of_method_from_exported_interface_has_or_is_using_name_0_from_private_module_1:{code:4056,category:e.DiagnosticCategory.Error,key:"Return_type_of_method_from_exported_interface_has_or_is_using_name_0_from_private_module_1_4056",message:"Return type of method from exported interface has or is using name '{0}' from private module '{1}'."},Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0:{code:4057,category:e.DiagnosticCategory.Error,key:"Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0_4057",message:"Return type of method from exported interface has or is using private name '{0}'."},Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named:{code:4058,category:e.DiagnosticCategory.Error,key:"Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named_4058",message:"Return type of exported function has or is using name '{0}' from external module {1} but cannot be named."},Return_type_of_exported_function_has_or_is_using_name_0_from_private_module_1:{code:4059,category:e.DiagnosticCategory.Error,key:"Return_type_of_exported_function_has_or_is_using_name_0_from_private_module_1_4059",message:"Return type of exported function has or is using name '{0}' from private module '{1}'."},Return_type_of_exported_function_has_or_is_using_private_name_0:{code:4060,category:e.DiagnosticCategory.Error,key:"Return_type_of_exported_function_has_or_is_using_private_name_0_4060",message:"Return type of exported function has or is using private name '{0}'."},Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:{code:4061,category:e.DiagnosticCategory.Error,key:"Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_can_4061",message:"Parameter '{0}' of constructor from exported class has or is using name '{1}' from external module {2} but cannot be named."},Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2:{code:4062,category:e.DiagnosticCategory.Error,key:"Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2_4062",message:"Parameter '{0}' of constructor from exported class has or is using name '{1}' from private module '{2}'."},Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1:{code:4063,category:e.DiagnosticCategory.Error,key:"Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1_4063",message:"Parameter '{0}' of constructor from exported class has or is using private name '{1}'."},Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2:{code:4064,category:e.DiagnosticCategory.Error,key:"Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_mod_4064",message:"Parameter '{0}' of constructor signature from exported interface has or is using name '{1}' from private module '{2}'."},Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1:{code:4065,category:e.DiagnosticCategory.Error,key:"Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1_4065",message:"Parameter '{0}' of constructor signature from exported interface has or is using private name '{1}'."},Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2:{code:4066,category:e.DiagnosticCategory.Error,key:"Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2_4066",message:"Parameter '{0}' of call signature from exported interface has or is using name '{1}' from private module '{2}'."},Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1:{code:4067,category:e.DiagnosticCategory.Error,key:"Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1_4067",message:"Parameter '{0}' of call signature from exported interface has or is using private name '{1}'."},Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:{code:4068,category:e.DiagnosticCategory.Error,key:"Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_external_module__4068",message:"Parameter '{0}' of public static method from exported class has or is using name '{1}' from external module {2} but cannot be named."},Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2:{code:4069,category:e.DiagnosticCategory.Error,key:"Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2_4069",message:"Parameter '{0}' of public static method from exported class has or is using name '{1}' from private module '{2}'."},Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1:{code:4070,category:e.DiagnosticCategory.Error,key:"Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1_4070",message:"Parameter '{0}' of public static method from exported class has or is using private name '{1}'."},Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:{code:4071,category:e.DiagnosticCategory.Error,key:"Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_c_4071",message:"Parameter '{0}' of public method from exported class has or is using name '{1}' from external module {2} but cannot be named."},Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_private_module_2:{code:4072,category:e.DiagnosticCategory.Error,key:"Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_private_module_2_4072",message:"Parameter '{0}' of public method from exported class has or is using name '{1}' from private module '{2}'."},Parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1:{code:4073,category:e.DiagnosticCategory.Error,key:"Parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1_4073",message:"Parameter '{0}' of public method from exported class has or is using private name '{1}'."},Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2:{code:4074,category:e.DiagnosticCategory.Error,key:"Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2_4074",message:"Parameter '{0}' of method from exported interface has or is using name '{1}' from private module '{2}'."},Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1:{code:4075,category:e.DiagnosticCategory.Error,key:"Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1_4075",message:"Parameter '{0}' of method from exported interface has or is using private name '{1}'."},Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:{code:4076,category:e.DiagnosticCategory.Error,key:"Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named_4076",message:"Parameter '{0}' of exported function has or is using name '{1}' from external module {2} but cannot be named."},Parameter_0_of_exported_function_has_or_is_using_name_1_from_private_module_2:{code:4077,category:e.DiagnosticCategory.Error,key:"Parameter_0_of_exported_function_has_or_is_using_name_1_from_private_module_2_4077",message:"Parameter '{0}' of exported function has or is using name '{1}' from private module '{2}'."},Parameter_0_of_exported_function_has_or_is_using_private_name_1:{code:4078,category:e.DiagnosticCategory.Error,key:"Parameter_0_of_exported_function_has_or_is_using_private_name_1_4078",message:"Parameter '{0}' of exported function has or is using private name '{1}'."},Exported_type_alias_0_has_or_is_using_private_name_1:{code:4081,category:e.DiagnosticCategory.Error,key:"Exported_type_alias_0_has_or_is_using_private_name_1_4081",message:"Exported type alias '{0}' has or is using private name '{1}'."},Default_export_of_the_module_has_or_is_using_private_name_0:{code:4082,category:e.DiagnosticCategory.Error,key:"Default_export_of_the_module_has_or_is_using_private_name_0_4082",message:"Default export of the module has or is using private name '{0}'."},Type_parameter_0_of_exported_type_alias_has_or_is_using_private_name_1:{code:4083,category:e.DiagnosticCategory.Error,key:"Type_parameter_0_of_exported_type_alias_has_or_is_using_private_name_1_4083",message:"Type parameter '{0}' of exported type alias has or is using private name '{1}'."},Conflicting_definitions_for_0_found_at_1_and_2_Consider_installing_a_specific_version_of_this_library_to_resolve_the_conflict:{code:4090,category:e.DiagnosticCategory.Message,key:"Conflicting_definitions_for_0_found_at_1_and_2_Consider_installing_a_specific_version_of_this_librar_4090",message:"Conflicting definitions for '{0}' found at '{1}' and '{2}'. Consider installing a specific version of this library to resolve the conflict."},Parameter_0_of_index_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2:{code:4091,category:e.DiagnosticCategory.Error,key:"Parameter_0_of_index_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2_4091",message:"Parameter '{0}' of index signature from exported interface has or is using name '{1}' from private module '{2}'."},Parameter_0_of_index_signature_from_exported_interface_has_or_is_using_private_name_1:{code:4092,category:e.DiagnosticCategory.Error,key:"Parameter_0_of_index_signature_from_exported_interface_has_or_is_using_private_name_1_4092",message:"Parameter '{0}' of index signature from exported interface has or is using private name '{1}'."},extends_clause_of_exported_class_0_refers_to_a_type_whose_name_cannot_be_referenced:{code:4093,category:e.DiagnosticCategory.Error,key:"extends_clause_of_exported_class_0_refers_to_a_type_whose_name_cannot_be_referenced_4093",message:"'extends' clause of exported class '{0}' refers to a type whose name cannot be referenced."},The_current_host_does_not_support_the_0_option:{code:5001,category:e.DiagnosticCategory.Error,key:"The_current_host_does_not_support_the_0_option_5001",message:"The current host does not support the '{0}' option."},Cannot_find_the_common_subdirectory_path_for_the_input_files:{code:5009,category:e.DiagnosticCategory.Error,key:"Cannot_find_the_common_subdirectory_path_for_the_input_files_5009",message:"Cannot find the common subdirectory path for the input files."},File_specification_cannot_end_in_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0:{code:5010,category:e.DiagnosticCategory.Error,key:"File_specification_cannot_end_in_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0_5010",message:"File specification cannot end in a recursive directory wildcard ('**'): '{0}'."},File_specification_cannot_contain_multiple_recursive_directory_wildcards_Asterisk_Asterisk_Colon_0:{code:5011,category:e.DiagnosticCategory.Error,key:"File_specification_cannot_contain_multiple_recursive_directory_wildcards_Asterisk_Asterisk_Colon_0_5011",message:"File specification cannot contain multiple recursive directory wildcards ('**'): '{0}'."},Cannot_read_file_0_Colon_1:{code:5012,category:e.DiagnosticCategory.Error,key:"Cannot_read_file_0_Colon_1_5012",message:"Cannot read file '{0}': {1}."},Failed_to_parse_file_0_Colon_1:{code:5014,category:e.DiagnosticCategory.Error,key:"Failed_to_parse_file_0_Colon_1_5014",message:"Failed to parse file '{0}': {1}."},Unknown_compiler_option_0:{code:5023,category:e.DiagnosticCategory.Error,key:"Unknown_compiler_option_0_5023",message:"Unknown compiler option '{0}'."},Compiler_option_0_requires_a_value_of_type_1:{code:5024,category:e.DiagnosticCategory.Error,key:"Compiler_option_0_requires_a_value_of_type_1_5024",message:"Compiler option '{0}' requires a value of type {1}."},Could_not_write_file_0_Colon_1:{code:5033,category:e.DiagnosticCategory.Error,key:"Could_not_write_file_0_Colon_1_5033",message:"Could not write file '{0}': {1}."},Option_project_cannot_be_mixed_with_source_files_on_a_command_line:{code:5042,category:e.DiagnosticCategory.Error,key:"Option_project_cannot_be_mixed_with_source_files_on_a_command_line_5042",message:"Option 'project' cannot be mixed with source files on a command line."},Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES2015_or_higher:{code:5047,category:e.DiagnosticCategory.Error,key:"Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES_5047",message:"Option 'isolatedModules' can only be used when either option '--module' is provided or option 'target' is 'ES2015' or higher."},Option_0_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided:{code:5051,category:e.DiagnosticCategory.Error,key:"Option_0_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided_5051",message:"Option '{0} can only be used when either option '--inlineSourceMap' or option '--sourceMap' is provided."},Option_0_cannot_be_specified_without_specifying_option_1:{code:5052,category:e.DiagnosticCategory.Error,key:"Option_0_cannot_be_specified_without_specifying_option_1_5052",message:"Option '{0}' cannot be specified without specifying option '{1}'."},Option_0_cannot_be_specified_with_option_1:{code:5053,category:e.DiagnosticCategory.Error,key:"Option_0_cannot_be_specified_with_option_1_5053",message:"Option '{0}' cannot be specified with option '{1}'."},A_tsconfig_json_file_is_already_defined_at_Colon_0:{code:5054,category:e.DiagnosticCategory.Error,key:"A_tsconfig_json_file_is_already_defined_at_Colon_0_5054",message:"A 'tsconfig.json' file is already defined at: '{0}'."},Cannot_write_file_0_because_it_would_overwrite_input_file:{code:5055,category:e.DiagnosticCategory.Error,key:"Cannot_write_file_0_because_it_would_overwrite_input_file_5055",message:"Cannot write file '{0}' because it would overwrite input file."},Cannot_write_file_0_because_it_would_be_overwritten_by_multiple_input_files:{code:5056,category:e.DiagnosticCategory.Error,key:"Cannot_write_file_0_because_it_would_be_overwritten_by_multiple_input_files_5056",message:"Cannot write file '{0}' because it would be overwritten by multiple input files."},Cannot_find_a_tsconfig_json_file_at_the_specified_directory_Colon_0:{code:5057,category:e.DiagnosticCategory.Error,key:"Cannot_find_a_tsconfig_json_file_at_the_specified_directory_Colon_0_5057",message:"Cannot find a tsconfig.json file at the specified directory: '{0}'."},The_specified_path_does_not_exist_Colon_0:{code:5058,category:e.DiagnosticCategory.Error,key:"The_specified_path_does_not_exist_Colon_0_5058",message:"The specified path does not exist: '{0}'."},Invalid_value_for_reactNamespace_0_is_not_a_valid_identifier:{code:5059,category:e.DiagnosticCategory.Error,key:"Invalid_value_for_reactNamespace_0_is_not_a_valid_identifier_5059",message:"Invalid value for '--reactNamespace'. '{0}' is not a valid identifier."},Option_paths_cannot_be_used_without_specifying_baseUrl_option:{code:5060,category:e.DiagnosticCategory.Error,key:"Option_paths_cannot_be_used_without_specifying_baseUrl_option_5060",message:"Option 'paths' cannot be used without specifying '--baseUrl' option."},Pattern_0_can_have_at_most_one_Asterisk_character:{code:5061,category:e.DiagnosticCategory.Error,key:"Pattern_0_can_have_at_most_one_Asterisk_character_5061",message:"Pattern '{0}' can have at most one '*' character."},Substitution_0_in_pattern_1_in_can_have_at_most_one_Asterisk_character:{code:5062,category:e.DiagnosticCategory.Error,key:"Substitution_0_in_pattern_1_in_can_have_at_most_one_Asterisk_character_5062",message:"Substitution '{0}' in pattern '{1}' in can have at most one '*' character."},Substitutions_for_pattern_0_should_be_an_array:{code:5063,category:e.DiagnosticCategory.Error,key:"Substitutions_for_pattern_0_should_be_an_array_5063",message:"Substitutions for pattern '{0}' should be an array."},Substitution_0_for_pattern_1_has_incorrect_type_expected_string_got_2:{code:5064,category:e.DiagnosticCategory.Error,key:"Substitution_0_for_pattern_1_has_incorrect_type_expected_string_got_2_5064",message:"Substitution '{0}' for pattern '{1}' has incorrect type, expected 'string', got '{2}'."},File_specification_cannot_contain_a_parent_directory_that_appears_after_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0:{code:5065,category:e.DiagnosticCategory.Error,key:"File_specification_cannot_contain_a_parent_directory_that_appears_after_a_recursive_directory_wildca_5065",message:"File specification cannot contain a parent directory ('..') that appears after a recursive directory wildcard ('**'): '{0}'."},Substitutions_for_pattern_0_shouldn_t_be_an_empty_array:{code:5066,category:e.DiagnosticCategory.Error,key:"Substitutions_for_pattern_0_shouldn_t_be_an_empty_array_5066",message:"Substitutions for pattern '{0}' shouldn't be an empty array."},Invalid_value_for_jsxFactory_0_is_not_a_valid_identifier_or_qualified_name:{code:5067,category:e.DiagnosticCategory.Error,key:"Invalid_value_for_jsxFactory_0_is_not_a_valid_identifier_or_qualified_name_5067",message:"Invalid value for 'jsxFactory'. '{0}' is not a valid identifier or qualified-name."},Concatenate_and_emit_output_to_single_file:{code:6001,category:e.DiagnosticCategory.Message,key:"Concatenate_and_emit_output_to_single_file_6001",message:"Concatenate and emit output to single file."},Generates_corresponding_d_ts_file:{code:6002,category:e.DiagnosticCategory.Message,key:"Generates_corresponding_d_ts_file_6002",message:"Generates corresponding '.d.ts' file."},Specify_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations:{code:6003,category:e.DiagnosticCategory.Message,key:"Specify_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations_6003",message:"Specify the location where debugger should locate map files instead of generated locations."},Specify_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations:{code:6004,category:e.DiagnosticCategory.Message,key:"Specify_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations_6004",message:"Specify the location where debugger should locate TypeScript files instead of source locations."},Watch_input_files:{code:6005,category:e.DiagnosticCategory.Message,key:"Watch_input_files_6005",message:"Watch input files."},Redirect_output_structure_to_the_directory:{code:6006,category:e.DiagnosticCategory.Message,key:"Redirect_output_structure_to_the_directory_6006",message:"Redirect output structure to the directory."},Do_not_erase_const_enum_declarations_in_generated_code:{code:6007,category:e.DiagnosticCategory.Message,key:"Do_not_erase_const_enum_declarations_in_generated_code_6007",message:"Do not erase const enum declarations in generated code."},Do_not_emit_outputs_if_any_errors_were_reported:{code:6008,category:e.DiagnosticCategory.Message,key:"Do_not_emit_outputs_if_any_errors_were_reported_6008",message:"Do not emit outputs if any errors were reported."},Do_not_emit_comments_to_output:{code:6009,category:e.DiagnosticCategory.Message,key:"Do_not_emit_comments_to_output_6009",message:"Do not emit comments to output."},Do_not_emit_outputs:{code:6010,category:e.DiagnosticCategory.Message,key:"Do_not_emit_outputs_6010",message:"Do not emit outputs."},Allow_default_imports_from_modules_with_no_default_export_This_does_not_affect_code_emit_just_typechecking:{code:6011,category:e.DiagnosticCategory.Message,key:"Allow_default_imports_from_modules_with_no_default_export_This_does_not_affect_code_emit_just_typech_6011",message:"Allow default imports from modules with no default export. This does not affect code emit, just typechecking."},Skip_type_checking_of_declaration_files:{code:6012,category:e.DiagnosticCategory.Message,key:"Skip_type_checking_of_declaration_files_6012",message:"Skip type checking of declaration files."},Specify_ECMAScript_target_version_Colon_ES3_default_ES5_ES2015_ES2016_ES2017_or_ESNEXT:{code:6015,category:e.DiagnosticCategory.Message,key:"Specify_ECMAScript_target_version_Colon_ES3_default_ES5_ES2015_ES2016_ES2017_or_ESNEXT_6015",message:"Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', or 'ESNEXT'."},Specify_module_code_generation_Colon_commonjs_amd_system_umd_or_es2015:{code:6016,category:e.DiagnosticCategory.Message,key:"Specify_module_code_generation_Colon_commonjs_amd_system_umd_or_es2015_6016",message:"Specify module code generation: 'commonjs', 'amd', 'system', 'umd' or 'es2015'."},Print_this_message:{code:6017,category:e.DiagnosticCategory.Message,key:"Print_this_message_6017",message:"Print this message."},Print_the_compiler_s_version:{code:6019,category:e.DiagnosticCategory.Message,key:"Print_the_compiler_s_version_6019",message:"Print the compiler's version."},Compile_the_project_given_the_path_to_its_configuration_file_or_to_a_folder_with_a_tsconfig_json:{code:6020,category:e.DiagnosticCategory.Message,key:"Compile_the_project_given_the_path_to_its_configuration_file_or_to_a_folder_with_a_tsconfig_json_6020",message:"Compile the project given the path to its configuration file, or to a folder with a 'tsconfig.json'."},Syntax_Colon_0:{code:6023,category:e.DiagnosticCategory.Message,key:"Syntax_Colon_0_6023",message:"Syntax: {0}"},options:{code:6024,category:e.DiagnosticCategory.Message,key:"options_6024",message:"options"},file:{code:6025,category:e.DiagnosticCategory.Message,key:"file_6025",message:"file"},Examples_Colon_0:{code:6026,category:e.DiagnosticCategory.Message,key:"Examples_Colon_0_6026",message:"Examples: {0}"},Options_Colon:{code:6027,category:e.DiagnosticCategory.Message,key:"Options_Colon_6027",message:"Options:"},Version_0:{code:6029,category:e.DiagnosticCategory.Message,key:"Version_0_6029",message:"Version {0}"},Insert_command_line_options_and_files_from_a_file:{code:6030,category:e.DiagnosticCategory.Message,key:"Insert_command_line_options_and_files_from_a_file_6030",message:"Insert command line options and files from a file."},File_change_detected_Starting_incremental_compilation:{code:6032,category:e.DiagnosticCategory.Message,key:"File_change_detected_Starting_incremental_compilation_6032",message:"File change detected. Starting incremental compilation..."},KIND:{code:6034,category:e.DiagnosticCategory.Message,key:"KIND_6034",message:"KIND"},FILE:{code:6035,category:e.DiagnosticCategory.Message,key:"FILE_6035",message:"FILE"},VERSION:{code:6036,category:e.DiagnosticCategory.Message,key:"VERSION_6036",message:"VERSION"},LOCATION:{code:6037,category:e.DiagnosticCategory.Message,key:"LOCATION_6037",message:"LOCATION"},DIRECTORY:{code:6038,category:e.DiagnosticCategory.Message,key:"DIRECTORY_6038",message:"DIRECTORY"},STRATEGY:{code:6039,category:e.DiagnosticCategory.Message,key:"STRATEGY_6039",message:"STRATEGY"},FILE_OR_DIRECTORY:{code:6040,category:e.DiagnosticCategory.Message,key:"FILE_OR_DIRECTORY_6040",message:"FILE OR DIRECTORY"},Compilation_complete_Watching_for_file_changes:{code:6042,category:e.DiagnosticCategory.Message,key:"Compilation_complete_Watching_for_file_changes_6042",message:"Compilation complete. Watching for file changes."},Generates_corresponding_map_file:{code:6043,category:e.DiagnosticCategory.Message,key:"Generates_corresponding_map_file_6043",message:"Generates corresponding '.map' file."},Compiler_option_0_expects_an_argument:{code:6044,category:e.DiagnosticCategory.Error,key:"Compiler_option_0_expects_an_argument_6044",message:"Compiler option '{0}' expects an argument."},Unterminated_quoted_string_in_response_file_0:{code:6045,category:e.DiagnosticCategory.Error,key:"Unterminated_quoted_string_in_response_file_0_6045",message:"Unterminated quoted string in response file '{0}'."},Argument_for_0_option_must_be_Colon_1:{code:6046,category:e.DiagnosticCategory.Error,key:"Argument_for_0_option_must_be_Colon_1_6046",message:"Argument for '{0}' option must be: {1}."},Locale_must_be_of_the_form_language_or_language_territory_For_example_0_or_1:{code:6048,category:e.DiagnosticCategory.Error,key:"Locale_must_be_of_the_form_language_or_language_territory_For_example_0_or_1_6048",message:"Locale must be of the form or -. For example '{0}' or '{1}'."},Unsupported_locale_0:{code:6049,category:e.DiagnosticCategory.Error,key:"Unsupported_locale_0_6049",message:"Unsupported locale '{0}'."},Unable_to_open_file_0:{code:6050,category:e.DiagnosticCategory.Error,key:"Unable_to_open_file_0_6050",message:"Unable to open file '{0}'."},Corrupted_locale_file_0:{code:6051,category:e.DiagnosticCategory.Error,key:"Corrupted_locale_file_0_6051",message:"Corrupted locale file {0}."},Raise_error_on_expressions_and_declarations_with_an_implied_any_type:{code:6052,category:e.DiagnosticCategory.Message,key:"Raise_error_on_expressions_and_declarations_with_an_implied_any_type_6052",message:"Raise error on expressions and declarations with an implied 'any' type."},File_0_not_found:{code:6053,category:e.DiagnosticCategory.Error,key:"File_0_not_found_6053",message:"File '{0}' not found."},File_0_has_unsupported_extension_The_only_supported_extensions_are_1:{code:6054,category:e.DiagnosticCategory.Error,key:"File_0_has_unsupported_extension_The_only_supported_extensions_are_1_6054",message:"File '{0}' has unsupported extension. The only supported extensions are {1}."},Suppress_noImplicitAny_errors_for_indexing_objects_lacking_index_signatures:{code:6055,category:e.DiagnosticCategory.Message,key:"Suppress_noImplicitAny_errors_for_indexing_objects_lacking_index_signatures_6055",message:"Suppress noImplicitAny errors for indexing objects lacking index signatures."},Do_not_emit_declarations_for_code_that_has_an_internal_annotation:{code:6056,category:e.DiagnosticCategory.Message,key:"Do_not_emit_declarations_for_code_that_has_an_internal_annotation_6056",message:"Do not emit declarations for code that has an '@internal' annotation."},Specify_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir:{code:6058,category:e.DiagnosticCategory.Message,key:"Specify_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir_6058",message:"Specify the root directory of input files. Use to control the output directory structure with --outDir."},File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files:{code:6059,category:e.DiagnosticCategory.Error,key:"File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files_6059",message:"File '{0}' is not under 'rootDir' '{1}'. 'rootDir' is expected to contain all source files."},Specify_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix:{code:6060,category:e.DiagnosticCategory.Message,key:"Specify_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix_6060",message:"Specify the end of line sequence to be used when emitting files: 'CRLF' (dos) or 'LF' (unix)."},NEWLINE:{code:6061,category:e.DiagnosticCategory.Message,key:"NEWLINE_6061",message:"NEWLINE"},Option_0_can_only_be_specified_in_tsconfig_json_file:{code:6064,category:e.DiagnosticCategory.Error,key:"Option_0_can_only_be_specified_in_tsconfig_json_file_6064",message:"Option '{0}' can only be specified in 'tsconfig.json' file."},Enables_experimental_support_for_ES7_decorators:{code:6065,category:e.DiagnosticCategory.Message,key:"Enables_experimental_support_for_ES7_decorators_6065",message:"Enables experimental support for ES7 decorators."},Enables_experimental_support_for_emitting_type_metadata_for_decorators:{code:6066,category:e.DiagnosticCategory.Message,key:"Enables_experimental_support_for_emitting_type_metadata_for_decorators_6066",message:"Enables experimental support for emitting type metadata for decorators."},Enables_experimental_support_for_ES7_async_functions:{code:6068,category:e.DiagnosticCategory.Message,key:"Enables_experimental_support_for_ES7_async_functions_6068",message:"Enables experimental support for ES7 async functions."},Specify_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6:{code:6069,category:e.DiagnosticCategory.Message,key:"Specify_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6_6069",message:"Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6)."},Initializes_a_TypeScript_project_and_creates_a_tsconfig_json_file:{code:6070,category:e.DiagnosticCategory.Message,key:"Initializes_a_TypeScript_project_and_creates_a_tsconfig_json_file_6070",message:"Initializes a TypeScript project and creates a tsconfig.json file."},Successfully_created_a_tsconfig_json_file:{code:6071,category:e.DiagnosticCategory.Message,key:"Successfully_created_a_tsconfig_json_file_6071",message:"Successfully created a tsconfig.json file."},Suppress_excess_property_checks_for_object_literals:{code:6072,category:e.DiagnosticCategory.Message,key:"Suppress_excess_property_checks_for_object_literals_6072",message:"Suppress excess property checks for object literals."},Stylize_errors_and_messages_using_color_and_context_experimental:{code:6073,category:e.DiagnosticCategory.Message,key:"Stylize_errors_and_messages_using_color_and_context_experimental_6073",message:"Stylize errors and messages using color and context (experimental)."},Do_not_report_errors_on_unused_labels:{code:6074,category:e.DiagnosticCategory.Message,key:"Do_not_report_errors_on_unused_labels_6074",message:"Do not report errors on unused labels."},Report_error_when_not_all_code_paths_in_function_return_a_value:{code:6075,category:e.DiagnosticCategory.Message,key:"Report_error_when_not_all_code_paths_in_function_return_a_value_6075",message:"Report error when not all code paths in function return a value."},Report_errors_for_fallthrough_cases_in_switch_statement:{code:6076,category:e.DiagnosticCategory.Message,key:"Report_errors_for_fallthrough_cases_in_switch_statement_6076",message:"Report errors for fallthrough cases in switch statement."},Do_not_report_errors_on_unreachable_code:{code:6077,category:e.DiagnosticCategory.Message,key:"Do_not_report_errors_on_unreachable_code_6077",message:"Do not report errors on unreachable code."},Disallow_inconsistently_cased_references_to_the_same_file:{code:6078,category:e.DiagnosticCategory.Message,key:"Disallow_inconsistently_cased_references_to_the_same_file_6078",message:"Disallow inconsistently-cased references to the same file."},Specify_library_files_to_be_included_in_the_compilation_Colon:{code:6079,category:e.DiagnosticCategory.Message,key:"Specify_library_files_to_be_included_in_the_compilation_Colon_6079",message:"Specify library files to be included in the compilation: "},Specify_JSX_code_generation_Colon_preserve_react_native_or_react:{code:6080,category:e.DiagnosticCategory.Message,key:"Specify_JSX_code_generation_Colon_preserve_react_native_or_react_6080",message:"Specify JSX code generation: 'preserve', 'react-native', or 'react'."},File_0_has_an_unsupported_extension_so_skipping_it:{code:6081,category:e.DiagnosticCategory.Message,key:"File_0_has_an_unsupported_extension_so_skipping_it_6081",message:"File '{0}' has an unsupported extension, so skipping it."},Only_amd_and_system_modules_are_supported_alongside_0:{code:6082,category:e.DiagnosticCategory.Error,key:"Only_amd_and_system_modules_are_supported_alongside_0_6082",message:"Only 'amd' and 'system' modules are supported alongside --{0}."},Base_directory_to_resolve_non_absolute_module_names:{code:6083,category:e.DiagnosticCategory.Message,key:"Base_directory_to_resolve_non_absolute_module_names_6083",message:"Base directory to resolve non-absolute module names."},Deprecated_Use_jsxFactory_instead_Specify_the_object_invoked_for_createElement_when_targeting_react_JSX_emit:{code:6084,category:e.DiagnosticCategory.Message,key:"Deprecated_Use_jsxFactory_instead_Specify_the_object_invoked_for_createElement_when_targeting_react__6084",message:"[Deprecated] Use '--jsxFactory' instead. Specify the object invoked for createElement when targeting 'react' JSX emit"},Enable_tracing_of_the_name_resolution_process:{code:6085,category:e.DiagnosticCategory.Message,key:"Enable_tracing_of_the_name_resolution_process_6085",message:"Enable tracing of the name resolution process."},Resolving_module_0_from_1:{code:6086,category:e.DiagnosticCategory.Message,key:"Resolving_module_0_from_1_6086",message:"======== Resolving module '{0}' from '{1}'. ========"},Explicitly_specified_module_resolution_kind_Colon_0:{code:6087,category:e.DiagnosticCategory.Message,key:"Explicitly_specified_module_resolution_kind_Colon_0_6087",message:"Explicitly specified module resolution kind: '{0}'."},Module_resolution_kind_is_not_specified_using_0:{code:6088,category:e.DiagnosticCategory.Message,key:"Module_resolution_kind_is_not_specified_using_0_6088",message:"Module resolution kind is not specified, using '{0}'."},Module_name_0_was_successfully_resolved_to_1:{code:6089,category:e.DiagnosticCategory.Message,key:"Module_name_0_was_successfully_resolved_to_1_6089",message:"======== Module name '{0}' was successfully resolved to '{1}'. ========"},Module_name_0_was_not_resolved:{code:6090,category:e.DiagnosticCategory.Message,key:"Module_name_0_was_not_resolved_6090",message:"======== Module name '{0}' was not resolved. ========"},paths_option_is_specified_looking_for_a_pattern_to_match_module_name_0:{code:6091,category:e.DiagnosticCategory.Message,key:"paths_option_is_specified_looking_for_a_pattern_to_match_module_name_0_6091",message:"'paths' option is specified, looking for a pattern to match module name '{0}'."},Module_name_0_matched_pattern_1:{code:6092,category:e.DiagnosticCategory.Message,key:"Module_name_0_matched_pattern_1_6092",message:"Module name '{0}', matched pattern '{1}'."},Trying_substitution_0_candidate_module_location_Colon_1:{code:6093,category:e.DiagnosticCategory.Message,key:"Trying_substitution_0_candidate_module_location_Colon_1_6093",message:"Trying substitution '{0}', candidate module location: '{1}'."},Resolving_module_name_0_relative_to_base_url_1_2:{code:6094,category:e.DiagnosticCategory.Message,key:"Resolving_module_name_0_relative_to_base_url_1_2_6094",message:"Resolving module name '{0}' relative to base url '{1}' - '{2}'."},Loading_module_as_file_Slash_folder_candidate_module_location_0_target_file_type_1:{code:6095,category:e.DiagnosticCategory.Message,key:"Loading_module_as_file_Slash_folder_candidate_module_location_0_target_file_type_1_6095",message:"Loading module as file / folder, candidate module location '{0}', target file type '{1}'."},File_0_does_not_exist:{code:6096,category:e.DiagnosticCategory.Message,key:"File_0_does_not_exist_6096",message:"File '{0}' does not exist."},File_0_exist_use_it_as_a_name_resolution_result:{code:6097,category:e.DiagnosticCategory.Message,key:"File_0_exist_use_it_as_a_name_resolution_result_6097",message:"File '{0}' exist - use it as a name resolution result."},Loading_module_0_from_node_modules_folder_target_file_type_1:{code:6098,category:e.DiagnosticCategory.Message,key:"Loading_module_0_from_node_modules_folder_target_file_type_1_6098",message:"Loading module '{0}' from 'node_modules' folder, target file type '{1}'."},Found_package_json_at_0:{code:6099,category:e.DiagnosticCategory.Message,key:"Found_package_json_at_0_6099",message:"Found 'package.json' at '{0}'."},package_json_does_not_have_a_0_field:{code:6100,category:e.DiagnosticCategory.Message,key:"package_json_does_not_have_a_0_field_6100",message:"'package.json' does not have a '{0}' field."},package_json_has_0_field_1_that_references_2:{code:6101,category:e.DiagnosticCategory.Message,key:"package_json_has_0_field_1_that_references_2_6101",message:"'package.json' has '{0}' field '{1}' that references '{2}'."},Allow_javascript_files_to_be_compiled:{code:6102,category:e.DiagnosticCategory.Message,key:"Allow_javascript_files_to_be_compiled_6102",message:"Allow javascript files to be compiled."},Option_0_should_have_array_of_strings_as_a_value:{code:6103,category:e.DiagnosticCategory.Error,key:"Option_0_should_have_array_of_strings_as_a_value_6103",message:"Option '{0}' should have array of strings as a value."},Checking_if_0_is_the_longest_matching_prefix_for_1_2:{code:6104,category:e.DiagnosticCategory.Message,key:"Checking_if_0_is_the_longest_matching_prefix_for_1_2_6104",message:"Checking if '{0}' is the longest matching prefix for '{1}' - '{2}'."},Expected_type_of_0_field_in_package_json_to_be_string_got_1:{code:6105,category:e.DiagnosticCategory.Message,key:"Expected_type_of_0_field_in_package_json_to_be_string_got_1_6105",message:"Expected type of '{0}' field in 'package.json' to be 'string', got '{1}'."},baseUrl_option_is_set_to_0_using_this_value_to_resolve_non_relative_module_name_1:{code:6106,category:e.DiagnosticCategory.Message,key:"baseUrl_option_is_set_to_0_using_this_value_to_resolve_non_relative_module_name_1_6106",message:"'baseUrl' option is set to '{0}', using this value to resolve non-relative module name '{1}'."},rootDirs_option_is_set_using_it_to_resolve_relative_module_name_0:{code:6107,category:e.DiagnosticCategory.Message,key:"rootDirs_option_is_set_using_it_to_resolve_relative_module_name_0_6107",message:"'rootDirs' option is set, using it to resolve relative module name '{0}'."},Longest_matching_prefix_for_0_is_1:{code:6108,category:e.DiagnosticCategory.Message,key:"Longest_matching_prefix_for_0_is_1_6108",message:"Longest matching prefix for '{0}' is '{1}'."},Loading_0_from_the_root_dir_1_candidate_location_2:{code:6109,category:e.DiagnosticCategory.Message,key:"Loading_0_from_the_root_dir_1_candidate_location_2_6109",message:"Loading '{0}' from the root dir '{1}', candidate location '{2}'."},Trying_other_entries_in_rootDirs:{code:6110,category:e.DiagnosticCategory.Message,key:"Trying_other_entries_in_rootDirs_6110",message:"Trying other entries in 'rootDirs'."},Module_resolution_using_rootDirs_has_failed:{code:6111,category:e.DiagnosticCategory.Message,key:"Module_resolution_using_rootDirs_has_failed_6111",message:"Module resolution using 'rootDirs' has failed."},Do_not_emit_use_strict_directives_in_module_output:{code:6112,category:e.DiagnosticCategory.Message,key:"Do_not_emit_use_strict_directives_in_module_output_6112",message:"Do not emit 'use strict' directives in module output."},Enable_strict_null_checks:{code:6113,category:e.DiagnosticCategory.Message,key:"Enable_strict_null_checks_6113",message:"Enable strict null checks."},Unknown_option_excludes_Did_you_mean_exclude:{code:6114,category:e.DiagnosticCategory.Error,key:"Unknown_option_excludes_Did_you_mean_exclude_6114",message:"Unknown option 'excludes'. Did you mean 'exclude'?"},Raise_error_on_this_expressions_with_an_implied_any_type:{code:6115,category:e.DiagnosticCategory.Message,key:"Raise_error_on_this_expressions_with_an_implied_any_type_6115",message:"Raise error on 'this' expressions with an implied 'any' type."},Resolving_type_reference_directive_0_containing_file_1_root_directory_2:{code:6116,category:e.DiagnosticCategory.Message,key:"Resolving_type_reference_directive_0_containing_file_1_root_directory_2_6116",message:"======== Resolving type reference directive '{0}', containing file '{1}', root directory '{2}'. ========"},Resolving_using_primary_search_paths:{code:6117,category:e.DiagnosticCategory.Message,key:"Resolving_using_primary_search_paths_6117",message:"Resolving using primary search paths..."},Resolving_from_node_modules_folder:{code:6118,category:e.DiagnosticCategory.Message,key:"Resolving_from_node_modules_folder_6118",message:"Resolving from node_modules folder..."},Type_reference_directive_0_was_successfully_resolved_to_1_primary_Colon_2:{code:6119,category:e.DiagnosticCategory.Message,key:"Type_reference_directive_0_was_successfully_resolved_to_1_primary_Colon_2_6119",message:"======== Type reference directive '{0}' was successfully resolved to '{1}', primary: {2}. ========"},Type_reference_directive_0_was_not_resolved:{code:6120,category:e.DiagnosticCategory.Message,key:"Type_reference_directive_0_was_not_resolved_6120",message:"======== Type reference directive '{0}' was not resolved. ========"},Resolving_with_primary_search_path_0:{code:6121,category:e.DiagnosticCategory.Message,key:"Resolving_with_primary_search_path_0_6121",message:"Resolving with primary search path '{0}'."},Root_directory_cannot_be_determined_skipping_primary_search_paths:{code:6122,category:e.DiagnosticCategory.Message,key:"Root_directory_cannot_be_determined_skipping_primary_search_paths_6122",message:"Root directory cannot be determined, skipping primary search paths."},Resolving_type_reference_directive_0_containing_file_1_root_directory_not_set:{code:6123,category:e.DiagnosticCategory.Message,key:"Resolving_type_reference_directive_0_containing_file_1_root_directory_not_set_6123",message:"======== Resolving type reference directive '{0}', containing file '{1}', root directory not set. ========"},Type_declaration_files_to_be_included_in_compilation:{code:6124,category:e.DiagnosticCategory.Message,key:"Type_declaration_files_to_be_included_in_compilation_6124",message:"Type declaration files to be included in compilation."},Looking_up_in_node_modules_folder_initial_location_0:{code:6125,category:e.DiagnosticCategory.Message,key:"Looking_up_in_node_modules_folder_initial_location_0_6125",message:"Looking up in 'node_modules' folder, initial location '{0}'."},Containing_file_is_not_specified_and_root_directory_cannot_be_determined_skipping_lookup_in_node_modules_folder:{code:6126,category:e.DiagnosticCategory.Message,key:"Containing_file_is_not_specified_and_root_directory_cannot_be_determined_skipping_lookup_in_node_mod_6126",message:"Containing file is not specified and root directory cannot be determined, skipping lookup in 'node_modules' folder."},Resolving_type_reference_directive_0_containing_file_not_set_root_directory_1:{code:6127,category:e.DiagnosticCategory.Message,key:"Resolving_type_reference_directive_0_containing_file_not_set_root_directory_1_6127",message:"======== Resolving type reference directive '{0}', containing file not set, root directory '{1}'. ========"},Resolving_type_reference_directive_0_containing_file_not_set_root_directory_not_set:{code:6128,category:e.DiagnosticCategory.Message,key:"Resolving_type_reference_directive_0_containing_file_not_set_root_directory_not_set_6128",message:"======== Resolving type reference directive '{0}', containing file not set, root directory not set. ========"},The_config_file_0_found_doesn_t_contain_any_source_files:{code:6129,category:e.DiagnosticCategory.Error,key:"The_config_file_0_found_doesn_t_contain_any_source_files_6129",message:"The config file '{0}' found doesn't contain any source files."},Resolving_real_path_for_0_result_1:{code:6130,category:e.DiagnosticCategory.Message,key:"Resolving_real_path_for_0_result_1_6130",message:"Resolving real path for '{0}', result '{1}'."},Cannot_compile_modules_using_option_0_unless_the_module_flag_is_amd_or_system:{code:6131,category:e.DiagnosticCategory.Error,key:"Cannot_compile_modules_using_option_0_unless_the_module_flag_is_amd_or_system_6131",message:"Cannot compile modules using option '{0}' unless the '--module' flag is 'amd' or 'system'."},File_name_0_has_a_1_extension_stripping_it:{code:6132,category:e.DiagnosticCategory.Message,key:"File_name_0_has_a_1_extension_stripping_it_6132",message:"File name '{0}' has a '{1}' extension - stripping it."},_0_is_declared_but_never_used:{code:6133,category:e.DiagnosticCategory.Error,key:"_0_is_declared_but_never_used_6133",message:"'{0}' is declared but never used."},Report_errors_on_unused_locals:{code:6134,category:e.DiagnosticCategory.Message,key:"Report_errors_on_unused_locals_6134",message:"Report errors on unused locals."},Report_errors_on_unused_parameters:{code:6135,category:e.DiagnosticCategory.Message,key:"Report_errors_on_unused_parameters_6135",message:"Report errors on unused parameters."},The_maximum_dependency_depth_to_search_under_node_modules_and_load_JavaScript_files:{code:6136,category:e.DiagnosticCategory.Message,key:"The_maximum_dependency_depth_to_search_under_node_modules_and_load_JavaScript_files_6136",message:"The maximum dependency depth to search under node_modules and load JavaScript files."},Property_0_is_declared_but_never_used:{code:6138,category:e.DiagnosticCategory.Error,key:"Property_0_is_declared_but_never_used_6138",message:"Property '{0}' is declared but never used."},Import_emit_helpers_from_tslib:{code:6139,category:e.DiagnosticCategory.Message,key:"Import_emit_helpers_from_tslib_6139",message:"Import emit helpers from 'tslib'."},Auto_discovery_for_typings_is_enabled_in_project_0_Running_extra_resolution_pass_for_module_1_using_cache_location_2:{code:6140,category:e.DiagnosticCategory.Error,key:"Auto_discovery_for_typings_is_enabled_in_project_0_Running_extra_resolution_pass_for_module_1_using__6140",message:"Auto discovery for typings is enabled in project '{0}'. Running extra resolution pass for module '{1}' using cache location '{2}'."},Parse_in_strict_mode_and_emit_use_strict_for_each_source_file:{code:6141,category:e.DiagnosticCategory.Message,key:"Parse_in_strict_mode_and_emit_use_strict_for_each_source_file_6141",message:'Parse in strict mode and emit "use strict" for each source file.'},Module_0_was_resolved_to_1_but_jsx_is_not_set:{code:6142,category:e.DiagnosticCategory.Error,key:"Module_0_was_resolved_to_1_but_jsx_is_not_set_6142",message:"Module '{0}' was resolved to '{1}', but '--jsx' is not set."},Module_0_was_resolved_to_1_but_allowJs_is_not_set:{code:6143,category:e.DiagnosticCategory.Error,key:"Module_0_was_resolved_to_1_but_allowJs_is_not_set_6143",message:"Module '{0}' was resolved to '{1}', but '--allowJs' is not set."},Module_0_was_resolved_as_locally_declared_ambient_module_in_file_1:{code:6144,category:e.DiagnosticCategory.Message,key:"Module_0_was_resolved_as_locally_declared_ambient_module_in_file_1_6144",message:"Module '{0}' was resolved as locally declared ambient module in file '{1}'."},Module_0_was_resolved_as_ambient_module_declared_in_1_since_this_file_was_not_modified:{code:6145,category:e.DiagnosticCategory.Message,key:"Module_0_was_resolved_as_ambient_module_declared_in_1_since_this_file_was_not_modified_6145",message:"Module '{0}' was resolved as ambient module declared in '{1}' since this file was not modified."},Specify_the_JSX_factory_function_to_use_when_targeting_react_JSX_emit_e_g_React_createElement_or_h:{code:6146,category:e.DiagnosticCategory.Message,key:"Specify_the_JSX_factory_function_to_use_when_targeting_react_JSX_emit_e_g_React_createElement_or_h_6146",message:"Specify the JSX factory function to use when targeting 'react' JSX emit, e.g. 'React.createElement' or 'h'."},Resolution_for_module_0_was_found_in_cache:{code:6147,category:e.DiagnosticCategory.Message,key:"Resolution_for_module_0_was_found_in_cache_6147",message:"Resolution for module '{0}' was found in cache."},Directory_0_does_not_exist_skipping_all_lookups_in_it:{code:6148,category:e.DiagnosticCategory.Message,key:"Directory_0_does_not_exist_skipping_all_lookups_in_it_6148",message:"Directory '{0}' does not exist, skipping all lookups in it."},Show_diagnostic_information:{code:6149,category:e.DiagnosticCategory.Message,key:"Show_diagnostic_information_6149",message:"Show diagnostic information."},Show_verbose_diagnostic_information:{code:6150,category:e.DiagnosticCategory.Message,key:"Show_verbose_diagnostic_information_6150",message:"Show verbose diagnostic information."},Emit_a_single_file_with_source_maps_instead_of_having_a_separate_file:{code:6151,category:e.DiagnosticCategory.Message,key:"Emit_a_single_file_with_source_maps_instead_of_having_a_separate_file_6151",message:"Emit a single file with source maps instead of having a separate file."},Emit_the_source_alongside_the_sourcemaps_within_a_single_file_requires_inlineSourceMap_or_sourceMap_to_be_set:{code:6152,category:e.DiagnosticCategory.Message,key:"Emit_the_source_alongside_the_sourcemaps_within_a_single_file_requires_inlineSourceMap_or_sourceMap__6152",message:"Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set."},Transpile_each_file_as_a_separate_module_similar_to_ts_transpileModule:{code:6153,category:e.DiagnosticCategory.Message,key:"Transpile_each_file_as_a_separate_module_similar_to_ts_transpileModule_6153",message:"Transpile each file as a separate module (similar to 'ts.transpileModule')."},Print_names_of_generated_files_part_of_the_compilation:{code:6154,category:e.DiagnosticCategory.Message,key:"Print_names_of_generated_files_part_of_the_compilation_6154",message:"Print names of generated files part of the compilation."},Print_names_of_files_part_of_the_compilation:{code:6155,category:e.DiagnosticCategory.Message,key:"Print_names_of_files_part_of_the_compilation_6155",message:"Print names of files part of the compilation."},The_locale_used_when_displaying_messages_to_the_user_e_g_en_us:{code:6156,category:e.DiagnosticCategory.Message,key:"The_locale_used_when_displaying_messages_to_the_user_e_g_en_us_6156",message:"The locale used when displaying messages to the user (e.g. 'en-us')"},Do_not_generate_custom_helper_functions_like_extends_in_compiled_output:{code:6157,category:e.DiagnosticCategory.Message,key:"Do_not_generate_custom_helper_functions_like_extends_in_compiled_output_6157",message:"Do not generate custom helper functions like '__extends' in compiled output."},Do_not_include_the_default_library_file_lib_d_ts:{code:6158,category:e.DiagnosticCategory.Message,key:"Do_not_include_the_default_library_file_lib_d_ts_6158",message:"Do not include the default library file (lib.d.ts)."},Do_not_add_triple_slash_references_or_imported_modules_to_the_list_of_compiled_files:{code:6159,category:e.DiagnosticCategory.Message,key:"Do_not_add_triple_slash_references_or_imported_modules_to_the_list_of_compiled_files_6159",message:"Do not add triple-slash references or imported modules to the list of compiled files."},Deprecated_Use_skipLibCheck_instead_Skip_type_checking_of_default_library_declaration_files:{code:6160,category:e.DiagnosticCategory.Message,key:"Deprecated_Use_skipLibCheck_instead_Skip_type_checking_of_default_library_declaration_files_6160",message:"[Deprecated] Use '--skipLibCheck' instead. Skip type checking of default library declaration files."},List_of_folders_to_include_type_definitions_from:{code:6161,category:e.DiagnosticCategory.Message,key:"List_of_folders_to_include_type_definitions_from_6161",message:"List of folders to include type definitions from."},Disable_size_limitations_on_JavaScript_projects:{code:6162,category:e.DiagnosticCategory.Message,key:"Disable_size_limitations_on_JavaScript_projects_6162",message:"Disable size limitations on JavaScript projects."},The_character_set_of_the_input_files:{code:6163,category:e.DiagnosticCategory.Message,key:"The_character_set_of_the_input_files_6163",message:"The character set of the input files."},Emit_a_UTF_8_Byte_Order_Mark_BOM_in_the_beginning_of_output_files:{code:6164,category:e.DiagnosticCategory.Message,key:"Emit_a_UTF_8_Byte_Order_Mark_BOM_in_the_beginning_of_output_files_6164",message:"Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files."},Do_not_truncate_error_messages:{code:6165,category:e.DiagnosticCategory.Message,key:"Do_not_truncate_error_messages_6165",message:"Do not truncate error messages."},Output_directory_for_generated_declaration_files:{code:6166,category:e.DiagnosticCategory.Message,key:"Output_directory_for_generated_declaration_files_6166",message:"Output directory for generated declaration files."},A_series_of_entries_which_re_map_imports_to_lookup_locations_relative_to_the_baseUrl:{code:6167,category:e.DiagnosticCategory.Message,key:"A_series_of_entries_which_re_map_imports_to_lookup_locations_relative_to_the_baseUrl_6167",message:"A series of entries which re-map imports to lookup locations relative to the 'baseUrl'."},List_of_root_folders_whose_combined_content_represents_the_structure_of_the_project_at_runtime:{code:6168,category:e.DiagnosticCategory.Message,key:"List_of_root_folders_whose_combined_content_represents_the_structure_of_the_project_at_runtime_6168",message:"List of root folders whose combined content represents the structure of the project at runtime."},Show_all_compiler_options:{code:6169,category:e.DiagnosticCategory.Message,key:"Show_all_compiler_options_6169",message:"Show all compiler options."},Deprecated_Use_outFile_instead_Concatenate_and_emit_output_to_single_file:{code:6170,category:e.DiagnosticCategory.Message,key:"Deprecated_Use_outFile_instead_Concatenate_and_emit_output_to_single_file_6170",message:"[Deprecated] Use '--outFile' instead. Concatenate and emit output to single file"},Command_line_Options:{code:6171,category:e.DiagnosticCategory.Message,key:"Command_line_Options_6171",message:"Command-line Options"},Basic_Options:{code:6172,category:e.DiagnosticCategory.Message,key:"Basic_Options_6172",message:"Basic Options"},Strict_Type_Checking_Options:{code:6173,category:e.DiagnosticCategory.Message,key:"Strict_Type_Checking_Options_6173",message:"Strict Type-Checking Options"},Module_Resolution_Options:{code:6174,category:e.DiagnosticCategory.Message,key:"Module_Resolution_Options_6174",message:"Module Resolution Options"},Source_Map_Options:{code:6175,category:e.DiagnosticCategory.Message,key:"Source_Map_Options_6175",message:"Source Map Options"},Additional_Checks:{code:6176,category:e.DiagnosticCategory.Message,key:"Additional_Checks_6176",message:"Additional Checks"},Experimental_Options:{code:6177,category:e.DiagnosticCategory.Message,key:"Experimental_Options_6177",message:"Experimental Options"},Advanced_Options:{code:6178,category:e.DiagnosticCategory.Message,key:"Advanced_Options_6178",message:"Advanced Options"},Provide_full_support_for_iterables_in_for_of_spread_and_destructuring_when_targeting_ES5_or_ES3:{code:6179,category:e.DiagnosticCategory.Message,key:"Provide_full_support_for_iterables_in_for_of_spread_and_destructuring_when_targeting_ES5_or_ES3_6179",message:"Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'."},Enable_all_strict_type_checking_options:{code:6180,category:e.DiagnosticCategory.Message,key:"Enable_all_strict_type_checking_options_6180",message:"Enable all strict type-checking options."},List_of_language_service_plugins:{code:6181,category:e.DiagnosticCategory.Message,key:"List_of_language_service_plugins_6181",message:"List of language service plugins."},Scoped_package_detected_looking_in_0:{code:6182,category:e.DiagnosticCategory.Message,key:"Scoped_package_detected_looking_in_0_6182",message:"Scoped package detected, looking in '{0}'"},Variable_0_implicitly_has_an_1_type:{code:7005,category:e.DiagnosticCategory.Error,key:"Variable_0_implicitly_has_an_1_type_7005",message:"Variable '{0}' implicitly has an '{1}' type."},Parameter_0_implicitly_has_an_1_type:{code:7006,category:e.DiagnosticCategory.Error,key:"Parameter_0_implicitly_has_an_1_type_7006",message:"Parameter '{0}' implicitly has an '{1}' type."},Member_0_implicitly_has_an_1_type:{code:7008,category:e.DiagnosticCategory.Error,key:"Member_0_implicitly_has_an_1_type_7008",message:"Member '{0}' implicitly has an '{1}' type."},new_expression_whose_target_lacks_a_construct_signature_implicitly_has_an_any_type:{code:7009,category:e.DiagnosticCategory.Error,key:"new_expression_whose_target_lacks_a_construct_signature_implicitly_has_an_any_type_7009",message:"'new' expression, whose target lacks a construct signature, implicitly has an 'any' type."},_0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type:{code:7010,category:e.DiagnosticCategory.Error,key:"_0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type_7010",message:"'{0}', which lacks return-type annotation, implicitly has an '{1}' return type."},Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type:{code:7011,category:e.DiagnosticCategory.Error,key:"Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type_7011",message:"Function expression, which lacks return-type annotation, implicitly has an '{0}' return type."},Construct_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type:{code:7013,category:e.DiagnosticCategory.Error,key:"Construct_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type_7013",message:"Construct signature, which lacks return-type annotation, implicitly has an 'any' return type."},Element_implicitly_has_an_any_type_because_index_expression_is_not_of_type_number:{code:7015,category:e.DiagnosticCategory.Error,key:"Element_implicitly_has_an_any_type_because_index_expression_is_not_of_type_number_7015",message:"Element implicitly has an 'any' type because index expression is not of type 'number'."},Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type:{code:7016,category:e.DiagnosticCategory.Error,key:"Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type_7016",message:"Could not find a declaration file for module '{0}'. '{1}' implicitly has an 'any' type."},Element_implicitly_has_an_any_type_because_type_0_has_no_index_signature:{code:7017,category:e.DiagnosticCategory.Error,key:"Element_implicitly_has_an_any_type_because_type_0_has_no_index_signature_7017",message:"Element implicitly has an 'any' type because type '{0}' has no index signature."},Object_literal_s_property_0_implicitly_has_an_1_type:{code:7018,category:e.DiagnosticCategory.Error,key:"Object_literal_s_property_0_implicitly_has_an_1_type_7018",message:"Object literal's property '{0}' implicitly has an '{1}' type."},Rest_parameter_0_implicitly_has_an_any_type:{code:7019,category:e.DiagnosticCategory.Error,key:"Rest_parameter_0_implicitly_has_an_any_type_7019",message:"Rest parameter '{0}' implicitly has an 'any[]' type."},Call_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type:{code:7020,category:e.DiagnosticCategory.Error,key:"Call_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type_7020",message:"Call signature, which lacks return-type annotation, implicitly has an 'any' return type."},_0_implicitly_has_type_any_because_it_does_not_have_a_type_annotation_and_is_referenced_directly_or_indirectly_in_its_own_initializer:{code:7022,category:e.DiagnosticCategory.Error,key:"_0_implicitly_has_type_any_because_it_does_not_have_a_type_annotation_and_is_referenced_directly_or__7022",message:"'{0}' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer."},_0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions:{code:7023,category:e.DiagnosticCategory.Error,key:"_0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_reference_7023",message:"'{0}' implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions."},Function_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions:{code:7024,category:e.DiagnosticCategory.Error,key:"Function_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_ref_7024",message:"Function implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions."},Generator_implicitly_has_type_0_because_it_does_not_yield_any_values_Consider_supplying_a_return_type:{code:7025,category:e.DiagnosticCategory.Error,key:"Generator_implicitly_has_type_0_because_it_does_not_yield_any_values_Consider_supplying_a_return_typ_7025",message:"Generator implicitly has type '{0}' because it does not yield any values. Consider supplying a return type."},JSX_element_implicitly_has_type_any_because_no_interface_JSX_0_exists:{code:7026,category:e.DiagnosticCategory.Error,key:"JSX_element_implicitly_has_type_any_because_no_interface_JSX_0_exists_7026",message:"JSX element implicitly has type 'any' because no interface 'JSX.{0}' exists."},Unreachable_code_detected:{code:7027,category:e.DiagnosticCategory.Error,key:"Unreachable_code_detected_7027",message:"Unreachable code detected."},Unused_label:{code:7028,category:e.DiagnosticCategory.Error,key:"Unused_label_7028",message:"Unused label."},Fallthrough_case_in_switch:{code:7029,category:e.DiagnosticCategory.Error,key:"Fallthrough_case_in_switch_7029",message:"Fallthrough case in switch."},Not_all_code_paths_return_a_value:{code:7030,category:e.DiagnosticCategory.Error,key:"Not_all_code_paths_return_a_value_7030",message:"Not all code paths return a value."},Binding_element_0_implicitly_has_an_1_type:{code:7031,category:e.DiagnosticCategory.Error,key:"Binding_element_0_implicitly_has_an_1_type_7031",message:"Binding element '{0}' implicitly has an '{1}' type."},Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_parameter_type_annotation:{code:7032,category:e.DiagnosticCategory.Error,key:"Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_parameter_type_annotation_7032",message:"Property '{0}' implicitly has type 'any', because its set accessor lacks a parameter type annotation."},Property_0_implicitly_has_type_any_because_its_get_accessor_lacks_a_return_type_annotation:{code:7033,category:e.DiagnosticCategory.Error,key:"Property_0_implicitly_has_type_any_because_its_get_accessor_lacks_a_return_type_annotation_7033",message:"Property '{0}' implicitly has type 'any', because its get accessor lacks a return type annotation."},Variable_0_implicitly_has_type_1_in_some_locations_where_its_type_cannot_be_determined:{code:7034,category:e.DiagnosticCategory.Error,key:"Variable_0_implicitly_has_type_1_in_some_locations_where_its_type_cannot_be_determined_7034",message:"Variable '{0}' implicitly has type '{1}' in some locations where its type cannot be determined."},You_cannot_rename_this_element:{code:8e3,category:e.DiagnosticCategory.Error,key:"You_cannot_rename_this_element_8000",message:"You cannot rename this element."},You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library:{code:8001,category:e.DiagnosticCategory.Error,key:"You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library_8001",message:"You cannot rename elements that are defined in the standard TypeScript library."},import_can_only_be_used_in_a_ts_file:{code:8002,category:e.DiagnosticCategory.Error,key:"import_can_only_be_used_in_a_ts_file_8002",message:"'import ... =' can only be used in a .ts file."},export_can_only_be_used_in_a_ts_file:{code:8003,category:e.DiagnosticCategory.Error,key:"export_can_only_be_used_in_a_ts_file_8003",message:"'export=' can only be used in a .ts file."},type_parameter_declarations_can_only_be_used_in_a_ts_file:{code:8004,category:e.DiagnosticCategory.Error,key:"type_parameter_declarations_can_only_be_used_in_a_ts_file_8004",message:"'type parameter declarations' can only be used in a .ts file."},implements_clauses_can_only_be_used_in_a_ts_file:{code:8005,category:e.DiagnosticCategory.Error,key:"implements_clauses_can_only_be_used_in_a_ts_file_8005",message:"'implements clauses' can only be used in a .ts file."},interface_declarations_can_only_be_used_in_a_ts_file:{code:8006,category:e.DiagnosticCategory.Error,key:"interface_declarations_can_only_be_used_in_a_ts_file_8006",message:"'interface declarations' can only be used in a .ts file."},module_declarations_can_only_be_used_in_a_ts_file:{code:8007,category:e.DiagnosticCategory.Error,key:"module_declarations_can_only_be_used_in_a_ts_file_8007",message:"'module declarations' can only be used in a .ts file."},type_aliases_can_only_be_used_in_a_ts_file:{code:8008,category:e.DiagnosticCategory.Error,key:"type_aliases_can_only_be_used_in_a_ts_file_8008",message:"'type aliases' can only be used in a .ts file."},_0_can_only_be_used_in_a_ts_file:{code:8009,category:e.DiagnosticCategory.Error,key:"_0_can_only_be_used_in_a_ts_file_8009",message:"'{0}' can only be used in a .ts file."},types_can_only_be_used_in_a_ts_file:{code:8010,category:e.DiagnosticCategory.Error,key:"types_can_only_be_used_in_a_ts_file_8010",message:"'types' can only be used in a .ts file."},type_arguments_can_only_be_used_in_a_ts_file:{code:8011,category:e.DiagnosticCategory.Error,key:"type_arguments_can_only_be_used_in_a_ts_file_8011",message:"'type arguments' can only be used in a .ts file."},parameter_modifiers_can_only_be_used_in_a_ts_file:{code:8012,category:e.DiagnosticCategory.Error,key:"parameter_modifiers_can_only_be_used_in_a_ts_file_8012",message:"'parameter modifiers' can only be used in a .ts file."},enum_declarations_can_only_be_used_in_a_ts_file:{code:8015,category:e.DiagnosticCategory.Error,key:"enum_declarations_can_only_be_used_in_a_ts_file_8015",message:"'enum declarations' can only be used in a .ts file."},type_assertion_expressions_can_only_be_used_in_a_ts_file:{code:8016,category:e.DiagnosticCategory.Error,key:"type_assertion_expressions_can_only_be_used_in_a_ts_file_8016",message:"'type assertion expressions' can only be used in a .ts file."},Only_identifiers_Slashqualified_names_with_optional_type_arguments_are_currently_supported_in_a_class_extends_clause:{code:9002,category:e.DiagnosticCategory.Error,key:"Only_identifiers_Slashqualified_names_with_optional_type_arguments_are_currently_supported_in_a_clas_9002",message:"Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clause."},class_expressions_are_not_currently_supported:{code:9003,category:e.DiagnosticCategory.Error,key:"class_expressions_are_not_currently_supported_9003",message:"'class' expressions are not currently supported."},Language_service_is_disabled:{code:9004,category:e.DiagnosticCategory.Error,key:"Language_service_is_disabled_9004",message:"Language service is disabled."},JSX_attributes_must_only_be_assigned_a_non_empty_expression:{code:17e3,category:e.DiagnosticCategory.Error,key:"JSX_attributes_must_only_be_assigned_a_non_empty_expression_17000",message:"JSX attributes must only be assigned a non-empty 'expression'."},JSX_elements_cannot_have_multiple_attributes_with_the_same_name:{code:17001,category:e.DiagnosticCategory.Error,key:"JSX_elements_cannot_have_multiple_attributes_with_the_same_name_17001",message:"JSX elements cannot have multiple attributes with the same name."},Expected_corresponding_JSX_closing_tag_for_0:{code:17002,category:e.DiagnosticCategory.Error,key:"Expected_corresponding_JSX_closing_tag_for_0_17002",message:"Expected corresponding JSX closing tag for '{0}'."},JSX_attribute_expected:{code:17003,category:e.DiagnosticCategory.Error,key:"JSX_attribute_expected_17003",message:"JSX attribute expected."},Cannot_use_JSX_unless_the_jsx_flag_is_provided:{code:17004,category:e.DiagnosticCategory.Error,key:"Cannot_use_JSX_unless_the_jsx_flag_is_provided_17004",message:"Cannot use JSX unless the '--jsx' flag is provided."},A_constructor_cannot_contain_a_super_call_when_its_class_extends_null:{code:17005,category:e.DiagnosticCategory.Error,key:"A_constructor_cannot_contain_a_super_call_when_its_class_extends_null_17005",message:"A constructor cannot contain a 'super' call when its class extends 'null'."},An_unary_expression_with_the_0_operator_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses:{code:17006,category:e.DiagnosticCategory.Error,key:"An_unary_expression_with_the_0_operator_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_ex_17006",message:"An unary expression with the '{0}' operator is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses."},A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses:{code:17007,category:e.DiagnosticCategory.Error,key:"A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Con_17007",message:"A type assertion expression is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses."},JSX_element_0_has_no_corresponding_closing_tag:{code:17008,category:e.DiagnosticCategory.Error,key:"JSX_element_0_has_no_corresponding_closing_tag_17008",message:"JSX element '{0}' has no corresponding closing tag."},super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class:{code:17009,category:e.DiagnosticCategory.Error,key:"super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class_17009",message:"'super' must be called before accessing 'this' in the constructor of a derived class."},Unknown_type_acquisition_option_0:{code:17010,category:e.DiagnosticCategory.Error,key:"Unknown_type_acquisition_option_0_17010",message:"Unknown type acquisition option '{0}'."},super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class:{code:17011,category:e.DiagnosticCategory.Error,key:"super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class_17011",message:"'super' must be called before accessing a property of 'super' in the constructor of a derived class."},_0_is_not_a_valid_meta_property_for_keyword_1_Did_you_mean_2:{code:17012,category:e.DiagnosticCategory.Error,key:"_0_is_not_a_valid_meta_property_for_keyword_1_Did_you_mean_2_17012",message:"'{0}' is not a valid meta-property for keyword '{1}'. Did you mean '{2}'?"},Meta_property_0_is_only_allowed_in_the_body_of_a_function_declaration_function_expression_or_constructor:{code:17013,category:e.DiagnosticCategory.Error,key:"Meta_property_0_is_only_allowed_in_the_body_of_a_function_declaration_function_expression_or_constru_17013",message:"Meta-property '{0}' is only allowed in the body of a function declaration, function expression, or constructor."},Circularity_detected_while_resolving_configuration_Colon_0:{code:18e3,category:e.DiagnosticCategory.Error,key:"Circularity_detected_while_resolving_configuration_Colon_0_18000",message:"Circularity detected while resolving configuration: {0}"},A_path_in_an_extends_option_must_be_relative_or_rooted_but_0_is_not:{code:18001,category:e.DiagnosticCategory.Error,key:"A_path_in_an_extends_option_must_be_relative_or_rooted_but_0_is_not_18001",message:"A path in an 'extends' option must be relative or rooted, but '{0}' is not."},The_files_list_in_config_file_0_is_empty:{code:18002,category:e.DiagnosticCategory.Error,key:"The_files_list_in_config_file_0_is_empty_18002",message:"The 'files' list in config file '{0}' is empty."},No_inputs_were_found_in_config_file_0_Specified_include_paths_were_1_and_exclude_paths_were_2:{code:18003,category:e.DiagnosticCategory.Error,key:"No_inputs_were_found_in_config_file_0_Specified_include_paths_were_1_and_exclude_paths_were_2_18003",message:"No inputs were found in config file '{0}'. Specified 'include' paths were '{1}' and 'exclude' paths were '{2}'."},Add_missing_super_call:{code:90001,category:e.DiagnosticCategory.Message,key:"Add_missing_super_call_90001",message:"Add missing 'super()' call."},Make_super_call_the_first_statement_in_the_constructor:{code:90002,category:e.DiagnosticCategory.Message,key:"Make_super_call_the_first_statement_in_the_constructor_90002",message:"Make 'super()' call the first statement in the constructor."},Change_extends_to_implements:{code:90003,category:e.DiagnosticCategory.Message,key:"Change_extends_to_implements_90003",message:"Change 'extends' to 'implements'."},Remove_declaration_for_Colon_0:{code:90004,category:e.DiagnosticCategory.Message,key:"Remove_declaration_for_Colon_0_90004",message:"Remove declaration for: '{0}'."},Implement_interface_0:{code:90006,category:e.DiagnosticCategory.Message,key:"Implement_interface_0_90006",message:"Implement interface '{0}'."},Implement_inherited_abstract_class:{code:90007,category:e.DiagnosticCategory.Message,key:"Implement_inherited_abstract_class_90007",message:"Implement inherited abstract class."},Add_this_to_unresolved_variable:{code:90008,category:e.DiagnosticCategory.Message,key:"Add_this_to_unresolved_variable_90008",message:"Add 'this.' to unresolved variable."},Adding_a_tsconfig_json_file_will_help_organize_projects_that_contain_both_TypeScript_and_JavaScript_files_Learn_more_at_https_Colon_Slash_Slashaka_ms_Slashtsconfig:{code:90009,category:e.DiagnosticCategory.Error,key:"Adding_a_tsconfig_json_file_will_help_organize_projects_that_contain_both_TypeScript_and_JavaScript__90009",message:"Adding a tsconfig.json file will help organize projects that contain both TypeScript and JavaScript files. Learn more at https://aka.ms/tsconfig."},Type_0_is_not_assignable_to_type_1_Two_different_types_with_this_name_exist_but_they_are_unrelated:{code:90010,category:e.DiagnosticCategory.Error,key:"Type_0_is_not_assignable_to_type_1_Two_different_types_with_this_name_exist_but_they_are_unrelated_90010",message:"Type '{0}' is not assignable to type '{1}'. Two different types with this name exist, but they are unrelated."},Import_0_from_1:{code:90013,category:e.DiagnosticCategory.Message,key:"Import_0_from_1_90013",message:"Import {0} from {1}."},Change_0_to_1:{code:90014,category:e.DiagnosticCategory.Message,key:"Change_0_to_1_90014",message:"Change {0} to {1}."},Add_0_to_existing_import_declaration_from_1:{code:90015,category:e.DiagnosticCategory.Message,key:"Add_0_to_existing_import_declaration_from_1_90015",message:"Add {0} to existing import declaration from {1}."},Add_declaration_for_missing_property_0:{code:90016,category:e.DiagnosticCategory.Message,key:"Add_declaration_for_missing_property_0_90016",message:"Add declaration for missing property '{0}'."},Add_index_signature_for_missing_property_0:{code:90017,category:e.DiagnosticCategory.Message,key:"Add_index_signature_for_missing_property_0_90017",message:"Add index signature for missing property '{0}'."},Disable_checking_for_this_file:{code:90018,category:e.DiagnosticCategory.Message,key:"Disable_checking_for_this_file_90018",message:"Disable checking for this file."},Ignore_this_error_message:{code:90019,category:e.DiagnosticCategory.Message,key:"Ignore_this_error_message_90019",message:"Ignore this error message."},Initialize_property_0_in_the_constructor:{code:90020,category:e.DiagnosticCategory.Message,key:"Initialize_property_0_in_the_constructor_90020",message:"Initialize property '{0}' in the constructor."},Initialize_static_property_0:{code:90021,category:e.DiagnosticCategory.Message,key:"Initialize_static_property_0_90021",message:"Initialize static property '{0}'."},Octal_literal_types_must_use_ES2015_syntax_Use_the_syntax_0:{code:8017,category:e.DiagnosticCategory.Error,key:"Octal_literal_types_must_use_ES2015_syntax_Use_the_syntax_0_8017",message:"Octal literal types must use ES2015 syntax. Use the syntax '{0}'."},Octal_literals_are_not_allowed_in_enums_members_initializer_Use_the_syntax_0:{code:8018,category:e.DiagnosticCategory.Error,key:"Octal_literals_are_not_allowed_in_enums_members_initializer_Use_the_syntax_0_8018",message:"Octal literals are not allowed in enums members initializer. Use the syntax '{0}'."},Report_errors_in_js_files:{code:8019,category:e.DiagnosticCategory.Message,key:"Report_errors_in_js_files_8019",message:"Report errors in .js files."}};}(r||(r={}));!function(e){function t(e){return e>=71}function n(e,t){if(e=1?n(e,j):n(e,B)}function a(e,t){return t>=1?n(e,J):n(e,K)}function i(e){return z[e]}function o(e){return L.get(e)}function s(e){for(var t=new Array,n=0,r=0;n127&&m(a)&&(t.push(r),r=n);}}return t.push(r),t}function c(e,t,n){return u(l(e),t,n)}function u(t,n,r){return e.Debug.assert(n>=0&&n=8192&&e<=8203||8239===e||8287===e||12288===e||65279===e}function m(e){return 10===e||13===e||8232===e||8233===e}function g(e){return e>=48&&e<=57}function y(e){return e>=48&&e<=55}function h(e,t){var n=e.charCodeAt(t);switch(n){case 13:case 10:case 9:case 11:case 12:case 32:case 47:case 60:case 61:case 62:return!0;case 35:return 0===t;default:return n>127}}function v(t,n,r,a){if(void 0===a&&(a=!1),e.positionIsSynthesized(n))return n;for(;;){var i=t.charCodeAt(n);switch(i){case 13:10===t.charCodeAt(n+1)&&n++;case 10:if(n++,r)return n;continue;case 9:case 11:case 12:case 32:n++;continue;case 47:if(a)break;if(47===t.charCodeAt(n+1)){for(n+=2;n127&&p(i)){n++;continue}}return n}}function b(t,n){if(e.Debug.assert(n>=0),0===n||m(t.charCodeAt(n-1))){var r=t.charCodeAt(n);if(n+U=0&&n127&&p(g)){_&&m(g)&&(l=!0),n++;continue}break e}}return _&&(f=a(s,c,u,l,i,f)),f}function C(e,t,n,r){return T(!1,e,t,!1,n,r)}function E(e,t,n,r){return T(!1,e,t,!0,n,r)}function D(e,t,n,r,a){return T(!0,e,t,!1,n,r,a)}function N(e,t,n,r,a){return T(!0,e,t,!0,n,r,a)}function A(e,t,n,r,a,i){return i||(i=[]),i.push({kind:n,pos:e,end:t,hasTrailingNewLine:r}),i}function w(e,t){return D(e,t,A,void 0,void 0)}function P(e,t){return N(e,t,A,void 0,void 0)}function O(e){return V.test(e)?V.exec(e)[0]:void 0}function F(e,t){return e>=65&&e<=90||e>=97&&e<=122||36===e||95===e||e>127&&r(e,t)}function I(e,t){return e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||36===e||95===e||e>127&&a(e,t)}function R(e,t){if(!F(e.charCodeAt(0),t))return!1;for(var n=1;n=48&&a<=57)r=16*r+a-48;else if(a>=65&&a<=70)r=16*r+a-65+10;else{if(!(a>=97&&a<=102))break;r=16*r+a-97+10;}ne++,n++;}return n=re){r+=i.substring(a,ne),le=!0,u(e.Diagnostics.Unterminated_string_literal);break}var o=i.charCodeAt(ne);if(o===n){r+=i.substring(a,ne),ne++;break}if(92===o&&t)r+=i.substring(a,ne),r+=E(),a=ne;else{if(m(o)){r+=i.substring(a,ne),le=!0,u(e.Diagnostics.Unterminated_string_literal);break}ne++;}}return r}function C(){for(var t,n=96===i.charCodeAt(ne),r=++ne,a="";;){if(ne>=re){a+=i.substring(r,ne),le=!0,u(e.Diagnostics.Unterminated_template_literal),t=n?13:16;break}var o=i.charCodeAt(ne);if(96===o){a+=i.substring(r,ne),ne++,t=n?13:16;break}if(36===o&&ne+1=re)return u(e.Diagnostics.Unexpected_end_of_text),"";var t=i.charCodeAt(ne);switch(ne++,t){case 48:return"\0";case 98:return"\b";case 116:return"\t";case 110:return"\n";case 118:return"\v";case 102:return"\f";case 114:return"\r";case 39:return"'";case 34:return'"';case 117:return ne=0?String.fromCharCode(n):(u(e.Diagnostics.Hexadecimal_digit_expected),"")}function N(){var t=h(1),n=!1;return t<0?(u(e.Diagnostics.Hexadecimal_digit_expected),n=!0):t>1114111&&(u(e.Diagnostics.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive),n=!0),ne>=re?(u(e.Diagnostics.Unexpected_end_of_text),n=!0):125===i.charCodeAt(ne)?ne++:(u(e.Diagnostics.Unterminated_Unicode_escape_sequence),n=!0),n?"":A(t)}function A(t){if(e.Debug.assert(0<=t&&t<=1114111),t<=65535)return String.fromCharCode(t);var n=Math.floor((t-65536)/1024)+55296,r=(t-65536)%1024+56320;return String.fromCharCode(n,r)}function w(){if(ne+5=0&&I(r,n)))break;e+=i.substring(t,ne),e+=String.fromCharCode(r),t=ne+=6;}}return e+=i.substring(t,ne)}function O(){var e=se.length;if(e>=2&&e<=11){var t=se.charCodeAt(0);if(t>=97&&t<=122&&void 0!==(oe=L.get(se)))return oe}return oe=71}function R(t){e.Debug.assert(2===t||8===t,"Expected either base 2 or base 8");for(var n=0,r=0;;){var a=i.charCodeAt(ne),o=a-48;if(!g(a)||o>=t)break;n=n*t+o,ne++,r++;}return 0===r?-1:n}function M(){for(ae=ne,ue=!1,ce=!1,le=!1,_e=0;;){if(ie=ne,ne>=re)return oe=1;var t=i.charCodeAt(ne);if(35===t&&0===ne&&k(i,ne)){if(ne=S(i,ne),r)continue;return oe=6}switch(t){case 10:case 13:if(ce=!0,r){ne++;continue}return 13===t&&ne+1=0&&F(d,n)?(ne+=6,se=String.fromCharCode(d)+P(),oe=O()):(u(e.Diagnostics.Invalid_character),ne++,oe=0);default:if(F(t,n)){for(ne++;ne=re){le=!0,u(e.Diagnostics.Unterminated_regular_expression_literal);break}var o=i.charCodeAt(t);if(m(o)){le=!0,u(e.Diagnostics.Unterminated_regular_expression_literal);break}if(r)r=!1;else{if(47===o&&!a){t++;break}91===o?a=!0:92===o?r=!0:93===o&&(a=!1);}t++;}for(;t=re)return oe=1;var e=i.charCodeAt(ne);if(60===e)return 47===i.charCodeAt(ne+1)?(ne+=2,oe=28):(ne++,oe=27);if(123===e)return ne++,oe=17;for(var t=0;ne=re)return oe=1;ae=ne,ie=ne;var e=i.charCodeAt(ne);switch(e){case 9:case 11:case 12:case 32:for(;ne=0),ne=t,ae=t,ie=t,oe=0,ce=!1,se=void 0,ue=!1,le=!1;}void 0===a&&(a=0);var ne,re,ae,ie,oe,se,ce,ue,le,_e;return Y(i,s,c),{getStartPos:function(){return ae},getTextPos:function(){return ne},getToken:function(){return oe},getTokenPos:function(){return ie},getTokenText:function(){return i.substring(ie,ne)},getTokenValue:function(){return se},hasExtendedUnicodeEscape:function(){return ue},hasPrecedingLineBreak:function(){return ce},isIdentifier:function(){return 71===oe||oe>107},isReservedWord:function(){return oe>=72&&oe<=107},isUnterminated:function(){return le},getNumericLiteralFlags:function(){return _e},reScanGreaterToken:B,reScanSlashToken:K,reScanTemplateToken:j,scanJsxIdentifier:U,scanJsxAttributeValue:V,reScanJsxToken:J,scanJsxToken:z,scanJSDocToken:q,scan:M,getText:X,setText:Y,setScriptTarget:Z,setLanguageVariant:ee,setOnError:Q,setTextPos:te,tryScan:H,lookAhead:W,scanRange:G}}e.tokenIsIdentifierOrKeyword=t;var L=e.createMapFromTemplate({abstract:117,any:119,as:118,boolean:122,break:72,case:73,catch:74,class:75,continue:77,const:76,constructor:123,debugger:78,declare:124,default:79,delete:80,do:81,else:82,enum:83,export:84,extends:85,false:86,finally:87,for:88,from:140,function:89,get:125,if:90,implements:108,import:91,in:92,instanceof:93,interface:109,is:126,keyof:127,let:110,module:128,namespace:129,never:130,new:94,null:95,number:133,object:134,package:111,private:112,protected:113,public:114,readonly:131,require:132,global:141,return:96,set:135,static:115,string:136,super:97,switch:98,symbol:137,this:99,throw:100,true:101,try:102,type:138,typeof:103,undefined:139,var:104,void:105,while:106,with:107,yield:116,async:120,await:121,of:142,"{":17,"}":18,"(":19,")":20,"[":21,"]":22,".":23,"...":24,";":25,",":26,"<":27,">":29,"<=":30,">=":31,"==":32,"!=":33,"===":34,"!==":35,"=>":36,"+":37,"-":38,"**":40,"*":39,"/":41,"%":42,"++":43,"--":44,"<<":45,">":46,">>>":47,"&":48,"|":49,"^":50,"!":51,"~":52,"&&":53,"||":54,"?":55,":":56,"=":58,"+=":59,"-=":60,"*=":61,"**=":62,"/=":63,"%=":64,"<<=":65,">>=":66,">>>=":67,"&=":68,"|=":69,"^=":70,"@":57}),B=[170,170,181,181,186,186,192,214,216,246,248,543,546,563,592,685,688,696,699,705,720,721,736,740,750,750,890,890,902,902,904,906,908,908,910,929,931,974,976,983,986,1011,1024,1153,1164,1220,1223,1224,1227,1228,1232,1269,1272,1273,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1569,1594,1600,1610,1649,1747,1749,1749,1765,1766,1786,1788,1808,1808,1810,1836,1920,1957,2309,2361,2365,2365,2384,2384,2392,2401,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2699,2701,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2784,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2870,2873,2877,2877,2908,2909,2911,2913,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,2997,2999,3001,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3294,3294,3296,3297,3333,3340,3342,3344,3346,3368,3370,3385,3424,3425,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3805,3840,3840,3904,3911,3913,3946,3976,3979,4096,4129,4131,4135,4137,4138,4176,4181,4256,4293,4304,4342,4352,4441,4447,4514,4520,4601,4608,4614,4616,4678,4680,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4742,4744,4744,4746,4749,4752,4782,4784,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4814,4816,4822,4824,4846,4848,4878,4880,4880,4882,4885,4888,4894,4896,4934,4936,4954,5024,5108,5121,5740,5743,5750,5761,5786,5792,5866,6016,6067,6176,6263,6272,6312,7680,7835,7840,7929,7936,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8319,8319,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8497,8499,8505,8544,8579,12293,12295,12321,12329,12337,12341,12344,12346,12353,12436,12445,12446,12449,12538,12540,12542,12549,12588,12593,12686,12704,12727,13312,19893,19968,40869,40960,42124,44032,55203,63744,64045,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65138,65140,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],K=[170,170,181,181,186,186,192,214,216,246,248,543,546,563,592,685,688,696,699,705,720,721,736,740,750,750,768,846,864,866,890,890,902,902,904,906,908,908,910,929,931,974,976,983,986,1011,1024,1153,1155,1158,1164,1220,1223,1224,1227,1228,1232,1269,1272,1273,1329,1366,1369,1369,1377,1415,1425,1441,1443,1465,1467,1469,1471,1471,1473,1474,1476,1476,1488,1514,1520,1522,1569,1594,1600,1621,1632,1641,1648,1747,1749,1756,1759,1768,1770,1773,1776,1788,1808,1836,1840,1866,1920,1968,2305,2307,2309,2361,2364,2381,2384,2388,2392,2403,2406,2415,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2492,2494,2500,2503,2504,2507,2509,2519,2519,2524,2525,2527,2531,2534,2545,2562,2562,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2649,2652,2654,2654,2662,2676,2689,2691,2693,2699,2701,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2784,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2870,2873,2876,2883,2887,2888,2891,2893,2902,2903,2908,2909,2911,2913,2918,2927,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,2997,2999,3001,3006,3010,3014,3016,3018,3021,3031,3031,3047,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3134,3140,3142,3144,3146,3149,3157,3158,3168,3169,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3262,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3297,3302,3311,3330,3331,3333,3340,3342,3344,3346,3368,3370,3385,3390,3395,3398,3400,3402,3405,3415,3415,3424,3425,3430,3439,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3805,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3946,3953,3972,3974,3979,3984,3991,3993,4028,4038,4038,4096,4129,4131,4135,4137,4138,4140,4146,4150,4153,4160,4169,4176,4185,4256,4293,4304,4342,4352,4441,4447,4514,4520,4601,4608,4614,4616,4678,4680,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4742,4744,4744,4746,4749,4752,4782,4784,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4814,4816,4822,4824,4846,4848,4878,4880,4880,4882,4885,4888,4894,4896,4934,4936,4954,4969,4977,5024,5108,5121,5740,5743,5750,5761,5786,5792,5866,6016,6099,6112,6121,6160,6169,6176,6263,6272,6313,7680,7835,7840,7929,7936,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8255,8256,8319,8319,8400,8412,8417,8417,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8497,8499,8505,8544,8579,12293,12295,12321,12335,12337,12341,12344,12346,12353,12436,12441,12442,12445,12446,12449,12542,12549,12588,12593,12686,12704,12727,13312,19893,19968,40869,40960,42124,44032,55203,63744,64045,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65056,65059,65075,65076,65101,65103,65136,65138,65140,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65381,65470,65474,65479,65482,65487,65490,65495,65498,65500],j=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],J=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500];e.isUnicodeIdentifierStart=r;var z=function(e){var t=[];return e.forEach(function(e,n){t[e]=n;}),t}(L);e.tokenToString=i,e.stringToToken=o,e.computeLineStarts=s,e.getPositionOfLineAndCharacter=c,e.computePositionOfLineAndCharacter=u,e.getLineStarts=l,e.computeLineAndCharacterOfPosition=_,e.getLineAndCharacterOfPosition=d,e.isWhiteSpaceLike=p,e.isWhiteSpaceSingleLine=f,e.isLineBreak=m,e.isOctalDigit=y,e.couldStartTrivia=h,e.skipTrivia=v;var U="<<<<<<<".length,V=/^#!.*/;e.forEachLeadingCommentRange=C,e.forEachTrailingCommentRange=E,e.reduceEachLeadingCommentRange=D,e.reduceEachTrailingCommentRange=N,e.getLeadingCommentRanges=w,e.getTrailingCommentRanges=P,e.getShebang=O,e.isIdentifierStart=F,e.isIdentifierPart=I,e.isIdentifierText=R,e.createScanner=M;}(r||(r={}));!function(e){function t(e,t){var n=e.declarations;if(n)for(var r=0,a=n;r=0),e.getLineStarts(n)[t]}function h(t){var n=m(t),r=e.getLineAndCharacterOfPosition(n,t.pos);return n.fileName+"("+(r.line+1)+","+(r.character+1)+")"}function v(e){return e.pos}function b(e){return void 0!==e}function x(t,n){e.Debug.assert(t>=0);var r=e.getLineStarts(n),a=t,i=n.text;if(a+1===r.length)return i.length-1;var o=r[a],s=r[a+1]-1;for(e.Debug.assert(e.isLineBreak(i.charCodeAt(s)));o<=s&&e.isLineBreak(i.charCodeAt(s));)s--;return s}function k(e){return void 0===e||e.pos===e.end&&e.pos>=0&&1!==e.kind}function S(e){return!k(e)}function T(e){return e.kind>=0&&e.kind<=142}function C(t,n,r){return k(t)?t.pos:E(t)?e.skipTrivia((n||m(t)).text,t.pos,!1,!0):r&&t.jsDoc&&t.jsDoc.length>0?C(t.jsDoc[0]):294===t.kind&&t._children.length>0?C(t._children[0],n,r):e.skipTrivia((n||m(t)).text,t.pos)}function E(e){return e.kind>=267&&e.kind<=293}function D(e){return e.kind>=283&&e.kind<=293}function N(t,n){return k(t)||!t.decorators?C(t,n):e.skipTrivia((n||m(t)).text,t.decorators.end)}function A(t,n,r){if(void 0===r&&(r=!1),k(n))return"";var a=t.text;return a.substring(r?n.pos:e.skipTrivia(a,n.pos),n.end)}function w(t,n){return k(n)?"":t.substring(e.skipTrivia(t,n.pos),n.end)}function P(e,t){return void 0===t&&(t=!1),A(m(e),e,t)}function O(t,n){if(!sn(t)&&t.parent)return A(n,t);switch(t.kind){case 9:return F('"',t.text,'"');case 13:return F("`",t.text,"`");case 14:return F("`",t.text,"${");case 15:return F("}",t.text,"${");case 16:return F("}",t.text,"`");case 8:return t.text}e.Debug.fail("Literal kind '"+t.kind+"' not accounted for.");}function F(e,t,n){return e+kn(hn(t))+n}function I(e){return e.length>=2&&95===e.charCodeAt(0)&&95===e.charCodeAt(1)?"_"+e:e}function R(t){return e.getBaseFileName(t).replace(/^(\d)/,"_$1").replace(/\W/g,"_")}function M(t){return 0!=(3&e.getCombinedNodeFlags(t))||L(t)}function L(e){var t=an(e);return 226===t.kind&&260===t.parent.kind}function B(e){return e&&233===e.kind&&(9===e.name.kind||z(e))}function K(e){return j(e.valueDeclaration)}function j(e){return e&&233===e.kind&&!e.body}function J(e){return 265===e.kind||233===e.kind||ke(e)}function z(e){return!!(512&e.flags)}function U(t){if(!t||!B(t))return!1;switch(t.parent.kind){case 265:return e.isExternalModule(t.parent);case 234:return B(t.parent.parent)&&!e.isExternalModule(t.parent.parent.parent)}return!1}function V(t,n){return e.isExternalModule(t)||n.isolatedModules}function q(e,t){switch(e.kind){case 265:case 235:case 260:case 233:case 214:case 215:case 216:case 152:case 151:case 153:case 154:case 228:case 186:case 187:return!0;case 207:return t&&!ke(t)}return!1}function $(e){for(var t=e.parent;t;){if(q(t,t.parent))return t;t=t.parent;}}function G(e){return 0===i(e)?"(Missing)":P(e)}function W(e){return e.declaration?G(e.declaration.parameters[0].name):void 0}function H(e){switch(e.kind){case 71:return e.text;case 9:case 8:return e.text;case 144:if(Wt(e.expression))return e.expression.text}}function X(t){switch(t.kind){case 71:return 0===i(t)?e.unescapeIdentifier(t.text):P(t);case 143:return X(t.left)+"."+X(t.right);case 179:return X(t.expression)+"."+X(t.name)}}function Y(e,t,n,r,a){return Q(m(e),e,t,n,r,a)}function Q(t,n,r,a,i,o){var s=ne(t,n);return e.createFileDiagnostic(t,s.start,s.length,r,a,i,o)}function Z(e,t){var n=m(e),r=ne(n,e);return{file:n,start:r.start,length:r.length,code:t.code,category:t.category,messageText:t.next?t:t.messageText}}function ee(t,n){var r=e.createScanner(t.languageVersion,!0,t.languageVariant,t.text,void 0,n);r.scan();var a=r.getTokenPos();return e.createTextSpanFromBounds(a,r.getTextPos())}function te(t,n){var r=e.skipTrivia(t.text,n.pos);if(n.body&&207===n.body.kind){var a=e.getLineAndCharacterOfPosition(t,n.body.pos).line;if(a=0;case 183:return!1}}return!1}function fe(e,t){for(;e;){if(e.kind===t)return!0;e=e.parent;}return!1}function me(e){return 192===e.kind}function ge(t,n){function r(t){switch(t.kind){case 219:return n(t);case 235:case 207:case 211:case 212:case 213:case 214:case 215:case 216:case 220:case 221:case 257:case 258:case 222:case 224:case 260:return e.forEachChild(t,r)}}return r(t)}function ye(t,n){function r(t){switch(t.kind){case 197:n(t);var a=t.expression;return void(a&&r(a));case 232:case 230:case 233:case 231:case 229:case 199:return;default:if(ke(t)){var i=t.name;if(i&&144===i.kind)return void r(i.expression)}else pe(t)||e.forEachChild(t,r);}}return r(t)}function he(t){return t&&164===t.kind?t.elementType:t&&159===t.kind?e.singleOrUndefined(t.typeArguments):void 0}function ve(e){if(e)switch(e.kind){case 176:case 264:case 146:case 261:case 149:case 148:case 262:case 226:return!0}return!1}function be(e){return e&&(153===e.kind||154===e.kind)}function xe(e){return e&&(229===e.kind||199===e.kind)}function ke(e){return e&&Se(e.kind)}function Se(e){switch(e){case 152:case 186:case 228:case 187:case 151:case 150:case 153:case 154:case 155:case 156:case 157:case 160:case 161:return!0}return!1}function Te(e){switch(e.kind){case 151:case 150:case 152:case 153:case 154:case 228:case 186:return!0}return!1}function Ce(e,t){switch(e.kind){case 214:case 215:case 216:case 212:case 213:return!0;case 222:return t&&Ce(e.statement,t)}return!1}function Ee(e,t){for(;;){if(t&&t(e),222!==e.statement.kind)return e.statement;e=e.statement;}}function De(e){return e&&207===e.kind&&ke(e.parent)}function Ne(e){return e&&151===e.kind&&178===e.parent.kind}function Ae(e){return 151===e.kind&&(178===e.parent.kind||199===e.parent.kind)}function we(e){return e&&1===e.kind}function Pe(e){return e&&0===e.kind}function Oe(e){for(;;)if(!(e=e.parent)||ke(e))return e}function Fe(e){for(;;)if(!(e=e.parent)||xe(e))return e}function Ie(e,t){for(;;){if(!(e=e.parent))return;switch(e.kind){case 144:if(xe(e.parent.parent))return e;e=e.parent;break;case 147:146===e.parent.kind&&va(e.parent.parent)?e=e.parent.parent:va(e.parent)&&(e=e.parent);break;case 187:if(!t)continue;case 228:case 186:case 233:case 149:case 148:case 151:case 150:case 152:case 153:case 154:case 155:case 156:case 157:case 232:case 265:return e}}}function Re(e){var t=Ie(e,!1);if(t)switch(t.kind){case 152:case 228:case 186:return t}}function Me(e,t){for(;;){if(!(e=e.parent))return e;switch(e.kind){case 144:e=e.parent;break;case 228:case 186:case 187:if(!t)continue;case 149:case 148:case 151:case 150:case 152:case 153:case 154:return e;case 147:146===e.parent.kind&&va(e.parent.parent)?e=e.parent.parent:va(e.parent)&&(e=e.parent);}}}function Le(e){if(186===e.kind||187===e.kind){for(var t=e,n=e.parent;185===n.kind;)t=n,n=n.parent;if(181===n.kind&&n.expression===t)return n}}function Be(e){var t=e.kind;return(179===t||180===t)&&97===e.expression.kind}function Ke(e){switch(e.kind){case 159:case 277:return e.typeName;case 201:return fr(e.expression)?e.expression:void 0;case 71:case 143:return e}}function je(e){switch(e.kind){case 251:case 250:case 181:case 182:case 183:case 147:return!0;default:return!1}}function Je(e){return 183===e.kind?e.tag:Mi(e)?e.tagName:e.expression}function ze(e){switch(e.kind){case 229:return!0;case 149:return 229===e.parent.kind;case 153:case 154:case 151:return void 0!==e.body&&229===e.parent.kind;case 146:return void 0!==e.parent.body&&(152===e.parent.kind||151===e.parent.kind||154===e.parent.kind)&&229===e.parent.parent.kind}return!1}function Ue(e){return void 0!==e.decorators&&ze(e)}function Ve(e){return Ue(e)||qe(e)}function qe(t){switch(t.kind){case 229:return e.forEach(t.members,Ve);case 151:case 154:return e.forEach(t.parameters,Ue)}}function $e(e){var t=e.parent;return(251===t.kind||250===t.kind||252===t.kind)&&t.tagName===e}function Ge(e){switch(e.kind){case 99:case 97:case 95:case 101:case 86:case 12:case 177:case 178:case 179:case 180:case 181:case 182:case 183:case 202:case 184:case 203:case 185:case 186:case 199:case 187:case 190:case 188:case 189:case 192:case 193:case 194:case 195:case 198:case 196:case 13:case 200:case 249:case 250:case 197:case 191:case 204:return!0;case 143:for(;143===e.parent.kind;)e=e.parent;return 162===e.parent.kind||$e(e);case 71:if(162===e.parent.kind||$e(e))return!0;case 8:case 9:case 99:var t=e.parent;switch(t.kind){case 226:case 146:case 149:case 148:case 264:case 261:case 176:return t.initializer===e;case 210:case 211:case 212:case 213:case 219:case 220:case 221:case 257:case 223:case 221:return t.expression===e;case 214:var n=t;return n.initializer===e&&227!==n.initializer.kind||n.condition===e||n.incrementor===e;case 215:case 216:var r=t;return r.initializer===e&&227!==r.initializer.kind||r.expression===e;case 184:case 202:case 205:case 144:return e===t.expression;case 147:case 256:case 255:case 263:return!0;case 201:return t.expression===e&&dr(t);default:if(Ge(t))return!0}}return!1}function We(t,n){var r=e.getModuleInstanceState(t);return 1===r||n&&2===r}function He(e){return 237===e.kind&&248===e.moduleReference.kind}function Xe(t){return e.Debug.assert(He(t)),t.moduleReference.expression}function Ye(e){return 237===e.kind&&248!==e.moduleReference.kind}function Qe(e){return Ze(e)}function Ze(e){return e&&!!(65536&e.flags)}function et(e,t){if(181!==e.kind)return!1;var n=e,r=n.expression,a=n.arguments;if(71!==r.kind||"require"!==r.text)return!1;if(1!==a.length)return!1;var i=a[0];return!t||9===i.kind||13===i.kind}function tt(e){return 39===e||34===e}function nt(e){if(e.valueDeclaration&&226===e.valueDeclaration.kind){var t=e.valueDeclaration;return t.initializer&&(186===t.initializer.kind||199===t.initializer.kind)}return!1}function rt(e){for(;cr(e,!0);)e=e.right;return e}function at(e){return ia(e)&&"exports"===e.text}function it(e){return Ra(e)&&ia(e.expression)&&"module"===e.expression.text&&"exports"===e.name.text}function ot(e){if(!Ze(e))return 0;var t=e;if(58!==t.operatorToken.kind||179!==t.left.kind)return 0;var n=t.left;if(71===n.expression.kind){var r=n.expression;return"exports"===r.text?1:"module"===r.text&&"exports"===n.name.text?2:5}if(99===n.expression.kind)return 4;if(179===n.expression.kind){var a=n.expression;if(71===a.expression.kind){if("module"===a.expression.text&&"exports"===a.name.text)return 1;if("prototype"===a.name.text)return 3}}return 0}function st(e){if(238===e.kind)return e.moduleSpecifier;if(237===e.kind){var t=e.moduleReference;if(248===t.kind)return t.expression}return 244===e.kind?e.moduleSpecifier:233===e.kind&&9===e.name.kind?e.name:void 0}function ct(e){if(237===e.kind)return e;var t=e.importClause;return t&&t.namedBindings&&240===t.namedBindings.kind?t.namedBindings:void 0}function ut(e){return 238===e.kind&&e.importClause&&!!e.importClause.name}function lt(e){if(e)switch(e.kind){case 146:case 151:case 150:case 262:case 261:case 149:case 148:return void 0!==e.questionToken}return!1}function _t(e){return 279===e.kind&&e.parameters.length>0&&281===e.parameters[0].type.kind}function dt(t){return e.map(gt(t),function(e){return e.comment})}function pt(e){var t=ft(e,286);return t&&t.length>0}function ft(t,n){var r=gt(t);if(r){for(var a=[],i=0,o=r;i0?t.types[0]:void 0}function Lt(e){var t=Kt(e.heritageClauses,108);return t?t.types:void 0}function Bt(e){var t=Kt(e.heritageClauses,85);return t?t.types:void 0}function Kt(e,t){if(e)for(var n=0,r=e;n/gim;if(/^\/\/\/\s*1&&(_=_+r.length-1,d=c.length-t.length+e.lastOrUndefined(r));}}function o(){l||(_++,d=(c+=t).length,l=!0);}function s(e,t){n(w(e,t));}var c,u,l,_,d;return r(),{write:n,rawWrite:a,writeTextOfNode:s,writeLiteral:i,writeLine:o,increaseIndent:function(){u++;},decreaseIndent:function(){u--;},getIndent:function(){return u},getTextPos:function(){return c.length},getLine:function(){return _+1},getColumn:function(){return l?u*Tn()+1:c.length-d+1},getText:function(){return c},isAtStartOfLine:function(){return l},reset:r}}function En(e,t){return t.moduleName||Nn(e,t.fileName)}function Dn(e,t,n){var r=t.getExternalModuleFileFromDeclaration(n);if(r&&!ae(r))return En(e,r)}function Nn(t,n){var r=function(e){return t.getCanonicalFileName(e)},a=e.toPath(t.getCommonSourceDirectory(),t.getCurrentDirectory(),r),i=e.getNormalizedAbsolutePath(n,t.getCurrentDirectory()),o=e.getRelativePathToDirectoryOrUrl(a,i,a,r,!1);return e.removeFileExtension(o)}function An(t,n,r){var a=n.getCompilerOptions();return(a.outDir?e.removeFileExtension(Mn(t,n,a.outDir)):e.removeFileExtension(t.fileName))+r}function wn(t,n){var r=n.getCompilerOptions(),a=r.declarationDir||r.outDir,i=a?Mn(t,n,a):t.fileName;return e.removeFileExtension(i)+".d.ts"}function Pn(t,n){var r=t.getCompilerOptions(),a=function(e){return t.isSourceFileFromExternalLibrary(e)};if(r.outFile||r.out){var i=e.getEmitModuleKind(r),o=i===e.ModuleKind.AMD||i===e.ModuleKind.System;return e.filter(t.getSourceFiles(),function(t){return(o||!e.isExternalModule(t))&&On(t,r,a)})}var s=void 0===n?t.getSourceFiles():[n];return e.filter(s,function(e){return On(e,r,a)})}function On(e,t,n){return!(t.noEmitForJsFiles&&Qe(e)||ae(e)||n(e))}function Fn(t,n,r,a){var i=e.isArray(r)?r:Pn(t,r),o=t.getCompilerOptions();if(o.outFile||o.out)i.length&&n({jsFilePath:l=o.outFile||o.out,sourceMapFilePath:_=In(l,o),declarationFilePath:d=o.declaration?e.removeFileExtension(l)+".d.ts":""},e.createBundle(i),a);else for(var s=0,c=i;s0){var t=2===e.parameters.length&&Un(e.parameters[0]);return e.parameters[t?1:0].type}}function zn(e){if(e.parameters.length){var t=e.parameters[0];if(Un(t))return t}}function Un(e){return Vn(e.name)}function Vn(e){return e&&71===e.kind&&qn(e)}function qn(e){return 99===e.originalKeywordKind}function $n(t,n){var r,a,i,o;return Ht(n)?(r=n,153===n.kind?i=n:154===n.kind?o=n:e.Debug.fail("Accessor has wrong kind")):e.forEach(t,function(e){153!==e.kind&&154!==e.kind||nr(e,32)!==nr(n,32)||Qt(e.name)===Qt(n.name)&&(r?a||(a=e):r=e,153!==e.kind||i||(i=e),154!==e.kind||o||(o=e));}),{firstAccessor:r,secondAccessor:a,getAccessor:i,setAccessor:o}}function Gn(e,t,n,r){Wn(e,t,n.pos,r);}function Wn(e,t,n,r){r&&r.length&&n!==r[0].pos&&Kn(e,n)!==Kn(e,r[0].pos)&&t.writeLine();}function Hn(e,t,n,r){n!==r&&Kn(e,n)!==Kn(e,r)&&t.writeLine();}function Xn(e,t,n,r,a,i,o,s){if(r&&r.length>0){a&&n.write(" ");for(var c=!1,u=0,l=r;u=g+2)break}_.push(m),d=m;}if(_.length){var g=Kn(n,e.lastOrUndefined(_).end);Kn(n,e.skipTrivia(t,i.pos))>=g+2&&(Gn(n,r,i,u),Xn(t,n,r,_,!1,!0,o,a),l={nodePos:i.pos,detachedCommentEndPos:e.lastOrUndefined(_).end});}}return l}function Qn(t,n,r,a,i,o){if(42===t.charCodeAt(a+1))for(var s=e.computeLineAndCharacterOfPosition(n,a),c=n.length,u=void 0,l=a,_=s.line;l0){var f=p%Tn(),m=Sn((p-f)/Tn());for(r.rawWrite(m);f;)r.rawWrite(" "),f--;}else r.rawWrite("");}Zn(t,i,r,o,l,d),l=d;}else r.write(t.substring(a,i));}function Zn(e,t,n,r,a,i){var o=Math.min(t,i-1),s=e.substring(a,o).replace(/^\s+|\s+$/g,"");s?(n.write(s),o!==t&&n.writeLine()):n.writeLiteral(r);}function er(t,n,r){for(var a=0;n=58&&e<=70}function sr(e){if(201===e.kind&&85===e.parent.token&&xe(e.parent.parent))return e.parent.parent}function cr(e,t){return Ba(e)&&(t?58===e.operatorToken.kind:or(e.operatorToken.kind))&&qa(e.left)}function ur(e){if(cr(e,!0)){var t=e.left.kind;return 178===t||177===t}return!1}function lr(e){return _r(e.expression)}function _r(e){return 71===e.kind||!!Ra(e)&&_r(e.expression)}function dr(e){return void 0!==sr(e)}function pr(e){return 201===e.kind&&fr(e.expression)&&e.parent&&108===e.parent.token&&e.parent.parent&&xe(e.parent.parent)}function fr(e){return 71===e.kind||179===e.kind&&fr(e.expression)}function mr(e){return 143===e.parent.kind&&e.parent.right===e||179===e.parent.kind&&e.parent.name===e}function gr(e){return 178===e.kind&&0===e.properties.length}function yr(e){return 177===e.kind&&0===e.elements.length}function hr(e){return vr(e)?e.valueDeclaration.localSymbol:void 0}function vr(e){return e&&e.valueDeclaration&&nr(e.valueDeclaration,512)}function br(t){return e.find(e.supportedTypescriptExtensionsForExtractExtension,function(n){return e.fileExtensionIs(t,n)})}function xr(t){for(var n=[],r=t.length,a=0;a>6|192),n.push(63&i|128)):i<65536?(n.push(i>>12|224),n.push(i>>6&63|128),n.push(63&i|128)):i<131072?(n.push(i>>18|240),n.push(i>>12&63|128),n.push(i>>6&63|128),n.push(63&i|128)):e.Debug.assert(!1,"Unexpected code point");}return n}function kr(e){for(var t,n,r,a,i="",o=xr(e),s=0,c=o.length;s>2,n=(3&o[s])<<4|o[s+1]>>4,r=(15&o[s+1])<<2|o[s+2]>>6,a=63&o[s+2],s+1>=c?r=a=64:s+2>=c&&(a=64),i+=Xi.charAt(t)+Xi.charAt(n)+Xi.charAt(r)+Xi.charAt(a),s+=3;return i}function Sr(t){return 0===t.newLine?Yi:1===t.newLine?Qi:e.sys?e.sys.newLine:Yi}function Tr(e){return Cr(e,0)}function Cr(e,t){if(t<=5){var n=e.kind;if(9===n||8===n||12===n||13===n||71===n||99===n||97===n||101===n||86===n||95===n)return!0;if(179===n)return Cr(e.expression,t+1);if(180===n)return Cr(e.expression,t+1)&&Cr(e.argumentExpression,t+1);if(192===n||193===n)return Cr(e.operand,t+1);if(194===n)return 40!==e.operatorToken.kind&&Cr(e.left,t+1)&&Cr(e.right,t+1);if(195===n)return Cr(e.condition,t+1)&&Cr(e.whenTrue,t+1)&&Cr(e.whenFalse,t+1);if(190===n||189===n||188===n)return Cr(e.expression,t+1);if(177===n)return 0===e.elements.length;if(178===n)return 0===e.properties.length;if(181===n){if(!Cr(e.expression,t+1))return!1;for(var r=0,a=e.arguments;r0?Or(e,e.decorators.end):e}function Ir(e){return e.modifiers&&e.modifiers.length>0?Or(e,e.modifiers.end):Fr(e)}function Rr(e){return e.pos===e.end}function Mr(e){return Rr(e)?e:Pr(e,e.pos)}function Lr(e){return Rr(e)?e:Or(e,e.end)}function Br(t,n){return wr(t,t+e.tokenToString(n).length)}function Kr(e,t){return zr(e,e,t)}function jr(e,t,n){return Vr(qr(e,n),qr(t,n),n)}function Jr(e,t,n){return Vr(e.end,t.end,n)}function zr(e,t,n){return Vr(qr(e,n),t.end,n)}function Ur(e,t,n){return Vr(e.end,qr(t,n),n)}function Vr(e,t,n){return e===t||Bn(n,e)===Bn(n,t)}function qr(t,n){return e.positionIsSynthesized(t.pos)?-1:e.skipTrivia(n.text,t.pos)}function $r(t){var n=e.getParseTreeNode(t);if(n)switch(n.parent.kind){case 232:case 233:return n===n.parent.name}return!1}function Gr(t){return e.filter(t.declarations,Wr)}function Wr(e){return void 0!==e.initializer}function Hr(e){if(e.symbol)for(var t=0,n=e.symbol.declarations;t0}function ca(e){return nn(e.kind)}function ua(e){return 143===e.kind}function la(e){return 144===e.kind}function _a(e){var t=e.kind;return 143===t||71===t}function da(e){var t=e.kind;return 71===t||9===t||8===t||144===t}function pa(e){var t=e.kind;return 71===t||9===t}function fa(e){var t=e.kind;return 71===t||174===t||175===t}function ma(e){return 145===e.kind}function ga(e){return 146===e.kind}function ya(e){return 147===e.kind}function ha(e){return 151===e.kind}function va(e){var t=e.kind;return 152===t||149===t||151===t||153===t||154===t||157===t||206===t}function ba(e){var t=e.kind;return 261===t||262===t||263===t||151===t||153===t||154===t||247===t}function xa(e){return e>=158&&e<=173||119===e||133===e||134===e||122===e||136===e||137===e||99===e||105===e||139===e||95===e||130===e||201===e}function ka(e){return xa(e.kind)}function Sa(e){return 175===e.kind}function Ta(e){return 174===e.kind}function Ca(e){if(e){var t=e.kind;return 175===t||174===t}return!1}function Ea(e){var t=e.kind;return 177===t||178===t}function Da(e){return 176===e.kind}function Na(e){var t=e.kind;return 176===t||200===t}function Aa(e){switch(e.kind){case 226:case 146:case 176:return!0}return!1}function wa(e){return Pa(e)||Oa(e)}function Pa(e){switch(e.kind){case 174:case 178:return!0}return!1}function Oa(e){switch(e.kind){case 175:case 177:return!0}return!1}function Fa(e){return 177===e.kind}function Ia(e){return 178===e.kind}function Ra(e){return 179===e.kind}function Ma(e){var t=e.kind;return 179===t||143===t}function La(e){return 180===e.kind}function Ba(e){return 194===e.kind}function Ka(e){return 195===e.kind}function ja(e){return 181===e.kind}function Ja(e){var t=e.kind;return 196===t||13===t}function za(e){return 198===e.kind}function Ua(e){return 201===e.kind}function Va(e){return 179===e||180===e||182===e||181===e||249===e||250===e||183===e||177===e||185===e||178===e||199===e||186===e||71===e||12===e||8===e||9===e||13===e||196===e||86===e||95===e||99===e||101===e||97===e||203===e||204===e}function qa(t){return Va(e.skipPartiallyEmittedExpressions(t).kind)}function $a(e){return 192===e||193===e||188===e||189===e||190===e||191===e||184===e||Va(e)}function Ga(t){return $a(e.skipPartiallyEmittedExpressions(t).kind)}function Wa(e){return 195===e||197===e||187===e||194===e||198===e||202===e||200===e||$a(e)}function Ha(t){return Wa(e.skipPartiallyEmittedExpressions(t).kind)}function Xa(e){var t=e.kind;return 184===t||202===t}function Ya(e){return 296===e.kind}function Qa(e){return 295===e.kind}function Za(e){return Qa(e)||Ya(e)}function ei(e){return 200===e.kind}function ti(e){return 205===e.kind}function ni(e){return 207===e.kind}function ri(e){return ni(e)||Ha(e)}function ai(e){return ni(e)}function ii(e){return si(e)||Ha(e)}function oi(e){return 226===e.kind}function si(e){return 227===e.kind}function ci(e){return 235===e.kind}function ui(e){var t=e.kind;return 234===t||233===t||71===t}function li(e){var t=e.kind;return 234===t||233===t}function _i(e){var t=e.kind;return 71===t||233===t}function di(e){return 237===e.kind}function pi(e){return 239===e.kind}function fi(e){var t=e.kind;return 241===t||240===t}function mi(e){return 242===e.kind}function gi(e){return 245===e.kind}function yi(e){return 246===e.kind}function hi(e){return 233===e.kind||232===e.kind}function vi(e){return 187===e||176===e||229===e||199===e||152===e||232===e||264===e||246===e||228===e||186===e||153===e||239===e||237===e||242===e||230===e||253===e||151===e||150===e||233===e||236===e||240===e||146===e||261===e||149===e||148===e||154===e||262===e||231===e||145===e||226===e||290===e}function bi(e){return 228===e||247===e||229===e||230===e||231===e||232===e||233===e||238===e||237===e||244===e||243===e||236===e}function xi(e){return 218===e||217===e||225===e||212===e||210===e||209===e||215===e||216===e||214===e||211===e||222===e||219===e||221===e||223===e||224===e||208===e||213===e||220===e||295===e||298===e||297===e}function ki(e){return vi(e.kind)}function Si(e){return bi(e.kind)}function Ti(e){return xi(e.kind)}function Ci(e){var t=e.kind;return xi(t)||bi(t)||207===t}function Ei(e){var t=e.kind;return 248===t||143===t||71===t}function Di(e){return 251===e.kind}function Ni(e){return 252===e.kind}function Ai(e){var t=e.kind;return 99===t||71===t||179===t}function wi(e){var t=e.kind;return 249===t||256===t||250===t||10===t}function Pi(e){return 254===e.kind}function Oi(e){var t=e.kind;return 253===t||255===t}function Fi(e){return 255===e.kind}function Ii(e){return 253===e.kind}function Ri(e){var t=e.kind;return 9===t||256===t}function Mi(e){var t=e.kind;return 251===t||250===t}function Li(e){var t=e.kind;return 257===t||258===t}function Bi(e){return 259===e.kind}function Ki(e){return 260===e.kind}function ji(e){return 261===e.kind}function Ji(e){return 262===e.kind}function zi(e){return 264===e.kind}function Ui(e){return 265===e.kind}function Vi(e){return e.watch&&e.hasOwnProperty("watch")}e.externalHelpersModuleNameText="tslib",e.getDeclarationOfKind=t,e.findDeclaration=n;var qi=[];e.getSingleLineStringWriter=r,e.releaseStringWriter=a,e.getFullWidth=i,e.hasResolvedModule=o,e.getResolvedModule=s,e.setResolvedModule=c,e.setResolvedTypeReferenceDirective=u,e.moduleResolutionIsEqualTo=l,e.typeDirectiveIsEqualTo=_,e.hasChangesInResolutions=d,e.containsParseError=p,e.getSourceFileOfNode=m,e.isStatementWithLocals=g,e.getStartPositionOfLine=y,e.nodePosToString=h,e.getStartPosOfNode=v,e.isDefined=b,e.getEndLinePosition=x,e.nodeIsMissing=k,e.nodeIsPresent=S,e.isToken=T,e.getTokenPosOfNode=C,e.isJSDocNode=E,e.isJSDocTag=D,e.getNonDecoratorTokenPosOfNode=N,e.getSourceTextOfNodeFromSourceFile=A,e.getTextOfNodeFromSourceText=w,e.getTextOfNode=P,e.getLiteralText=O,e.escapeIdentifier=I,e.makeIdentifierFromModuleName=R,e.isBlockOrCatchScoped=M,e.isCatchClauseVariableDeclarationOrBindingElement=L,e.isAmbientModule=B,e.isShorthandAmbientModuleSymbol=K,e.isBlockScopedContainerTopLevel=J,e.isGlobalScopeAugmentation=z,e.isExternalModuleAugmentation=U,e.isEffectiveExternalModule=V,e.isBlockScope=q,e.getEnclosingBlockScopeContainer=$,e.declarationNameToString=G,e.getNameFromIndexInfo=W,e.getTextOfPropertyName=H,e.entityNameToString=X,e.createDiagnosticForNode=Y,e.createDiagnosticForNodeInSourceFile=Q,e.createDiagnosticForNodeFromMessageChain=Z,e.getSpanOfTokenAtPosition=ee,e.getErrorSpanForNode=ne,e.isExternalOrCommonJsModule=re,e.isDeclarationFile=ae,e.isConstEnumDeclaration=ie,e.isConst=oe,e.isLet=se,e.isSuperCall=ce,e.isPrologueDirective=ue,e.getLeadingCommentRangesOfNode=le,e.getLeadingCommentRangesOfNodeFromText=_e,e.getJSDocCommentRanges=de,e.fullTripleSlashReferencePathRegEx=/^(\/\/\/\s*/,e.fullTripleSlashReferenceTypeReferenceDirectiveRegEx=/^(\/\/\/\s*/,e.fullTripleSlashAMDReferencePathRegEx=/^(\/\/\/\s*/,e.isPartOfTypeNode=pe,e.isChildOfNodeWithKind=fe,e.isPrefixUnaryExpression=me,e.forEachReturnStatement=ge,e.forEachYieldExpression=ye,e.getRestParameterElementType=he,e.isVariableLike=ve,e.isAccessor=be,e.isClassLike=xe,e.isFunctionLike=ke,e.isFunctionLikeKind=Se,e.introducesArgumentsExoticObject=Te,e.isIterationStatement=Ce,e.unwrapInnermostStatementOfLabel=Ee,e.isFunctionBlock=De,e.isObjectLiteralMethod=Ne,e.isObjectLiteralOrClassExpressionMethod=Ae,e.isIdentifierTypePredicate=we,e.isThisTypePredicate=Pe,e.getContainingFunction=Oe,e.getContainingClass=Fe,e.getThisContainer=Ie,e.getNewTargetContainer=Re,e.getSuperContainer=Me,e.getImmediatelyInvokedFunctionExpression=Le,e.isSuperProperty=Be,e.getEntityNameFromTypeNode=Ke,e.isCallLikeExpression=je,e.getInvokedExpression=Je,e.nodeCanBeDecorated=ze,e.nodeIsDecorated=Ue,e.nodeOrChildIsDecorated=Ve,e.childIsDecorated=qe,e.isJSXTagName=$e,e.isPartOfExpression=Ge,e.isInstantiatedModule=We,e.isExternalModuleImportEqualsDeclaration=He,e.getExternalModuleImportEqualsDeclarationExpression=Xe,e.isInternalModuleImportEqualsDeclaration=Ye,e.isSourceFileJavaScript=Qe,e.isInJavaScriptFile=Ze,e.isRequireCall=et,e.isSingleOrDoubleQuote=tt,e.isDeclarationOfFunctionOrClassExpression=nt,e.getRightMostAssignedExpression=rt,e.isExportsIdentifier=at,e.isModuleExportsPropertyAccessExpression=it,e.getSpecialPropertyAssignmentKind=ot,e.getExternalModuleName=st,e.getNamespaceDeclarationNode=ct,e.isDefaultImport=ut,e.hasQuestionToken=lt,e.isJSDocConstructSignature=_t,e.getCommentsFromJSDoc=dt,e.hasJSDocParameterTags=pt,e.getJSDocs=gt,e.getJSDocParameterTags=yt,e.getJSDocType=ht,e.getJSDocAugmentsTag=vt,e.getJSDocReturnTag=bt,e.getJSDocTemplateTag=xt,e.hasRestParameter=kt,e.hasDeclaredRestParameter=St,e.isRestParameter=Tt,e.isDeclaredRestParam=Ct;!function(e){e[e.None=0]="None",e[e.Definite=1]="Definite",e[e.Compound=2]="Compound";}(e.AssignmentKind||(e.AssignmentKind={})),e.getAssignmentTargetKind=Et,e.isAssignmentTarget=Dt,e.isDeleteTarget=Nt,e.isNodeDescendantOf=At,e.isInAmbientContext=wt,e.isDeclarationName=Pt,e.isLiteralComputedPropertyDeclarationName=Ot,e.isIdentifierName=Ft,e.isAliasSymbolDeclaration=It,e.exportAssignmentIsAlias=Rt,e.getClassExtendsHeritageClauseElement=Mt,e.getClassImplementsHeritageClauseElements=Lt,e.getInterfaceBaseTypeNodes=Bt,e.getHeritageClause=Kt,e.tryResolveScriptReference=jt,e.getAncestor=Jt,e.getFileReferenceFromReferencePath=zt,e.isKeyword=Ut,e.isTrivia=Vt;!function(e){e[e.Normal=0]="Normal",e[e.Generator=1]="Generator",e[e.Async=2]="Async",e[e.AsyncOrAsyncGenerator=3]="AsyncOrAsyncGenerator",e[e.Invalid=4]="Invalid",e[e.InvalidAsyncOrAsyncGenerator=7]="InvalidAsyncOrAsyncGenerator",e[e.InvalidGenerator=5]="InvalidGenerator";}(e.FunctionFlags||(e.FunctionFlags={})),e.getFunctionFlags=qt,e.isAsyncFunction=$t,e.isNumericLiteral=Gt,e.isStringOrNumericLiteral=Wt,e.hasDynamicName=Ht,e.isDynamicName=Xt,e.isWellKnownSymbolSyntactically=Yt,e.getPropertyNameForPropertyNameNode=Qt,e.getPropertyNameForKnownSymbolName=Zt,e.isESSymbolIdentifier=en,e.isPushOrUnshiftIdentifier=tn,e.isModifierKind=nn,e.isParameterDeclaration=rn,e.getRootDeclaration=an,e.nodeStartsNewLexicalEnvironment=on$$1,e.nodeIsSynthesized=sn,e.getOriginalSourceFileOrBundle=cn,e.getOriginalSourceFiles=ln,e.getOriginalNodeId=_n;!function(e){e[e.Left=0]="Left",e[e.Right=1]="Right";}(e.Associativity||(e.Associativity={})),e.getExpressionAssociativity=dn,e.getOperatorAssociativity=pn,e.getExpressionPrecedence=fn,e.getOperator=mn,e.getOperatorPrecedence=gn,e.createDiagnosticCollection=yn;var $i=/[\\\"\u0000-\u001f\t\v\f\b\r\n\u2028\u2029\u0085]/g,Gi=e.createMapFromTemplate({"\0":"\\0","\t":"\\t","\v":"\\v","\f":"\\f","\b":"\\b","\r":"\\r","\n":"\\n","\\":"\\\\",'"':'\\"',"\u2028":"\\u2028","\u2029":"\\u2029","…":"\\u0085"});e.escapeString=hn,e.isIntrinsicJsxName=bn;var Wi=/[^\u0000-\u007F]/g;e.escapeNonAsciiCharacters=kn;var Hi=[""," "];e.getIndentString=Sn,e.getIndentSize=Tn,e.createTextWriter=Cn,e.getResolvedExternalModuleName=En,e.getExternalModuleNameFromDeclaration=Dn,e.getExternalModuleNameFromPath=Nn,e.getOwnEmitOutputFilePath=An,e.getDeclarationEmitOutputFilePath=wn,e.getSourceFilesToEmit=Pn,e.sourceFileMayBeEmitted=On,e.forEachEmittedFile=Fn,e.getSourceFilePathInNewDir=Mn,e.writeFile=Ln,e.getLineOfLocalPosition=Bn,e.getLineOfLocalPositionFromLineMap=Kn,e.getFirstConstructorWithBody=jn,e.getSetAccessorTypeAnnotationNode=Jn,e.getThisParameter=zn,e.parameterIsThisKeyword=Un,e.isThisIdentifier=Vn,e.identifierIsThisKeyword=qn,e.getAllAccessorDeclarations=$n,e.emitNewLineBeforeLeadingComments=Gn,e.emitNewLineBeforeLeadingCommentsOfPosition=Wn,e.emitNewLineBeforeLeadingCommentOfPosition=Hn,e.emitComments=Xn,e.emitDetachedComments=Yn,e.writeCommentRange=Qn,e.hasModifiers=tr,e.hasModifier=nr,e.getModifierFlags=rr,e.modifierToFlag=ar,e.isLogicalOperator=ir,e.isAssignmentOperator=or,e.tryGetClassExtendingExpressionWithTypeArguments=sr,e.isAssignmentExpression=cr,e.isDestructuringAssignment=ur,e.isSupportedExpressionWithTypeArguments=lr,e.isExpressionWithTypeArgumentsInClassExtendsClause=dr,e.isExpressionWithTypeArgumentsInClassImplementsClause=pr,e.isEntityNameExpression=fr,e.isRightSideOfQualifiedNameOrPropertyAccess=mr,e.isEmptyObjectLiteral=gr,e.isEmptyArrayLiteral=yr,e.getLocalSymbolForExportDefault=hr,e.tryExtractTypeScriptExtension=br;var Xi="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";e.convertToBase64=kr;var Yi="\r\n",Qi="\n";e.getNewLineCharacter=Sr,e.isSimpleExpression=Tr;var Zi=[];e.formatSyntaxKind=Er,e.getRangePos=Dr,e.getRangeEnd=Nr,e.movePos=Ar,e.createRange=wr,e.moveRangeEnd=Pr,e.moveRangePos=Or,e.moveRangePastDecorators=Fr,e.moveRangePastModifiers=Ir,e.isCollapsedRange=Rr,e.collapseRangeToStart=Mr,e.collapseRangeToEnd=Lr,e.createTokenRange=Br,e.rangeIsOnSingleLine=Kr,e.rangeStartPositionsAreOnSameLine=jr,e.rangeEndPositionsAreOnSameLine=Jr,e.rangeStartIsOnSameLineAsRangeEnd=zr,e.rangeEndIsOnSameLineAsRangeStart=Ur,e.positionsAreOnSameLine=Vr,e.getStartPositionOfRange=qr,e.isDeclarationNameOfEnumOrNamespace=$r,e.getInitializedVariables=Gr,e.isMergedWithClass=Hr,e.isFirstDeclarationOfKind=Xr,e.isNodeArray=Yr,e.isNoSubstitutionTemplateLiteral=Qr,e.isLiteralKind=Zr,e.isTextualLiteralKind=ea,e.isLiteralExpression=ta,e.isTemplateLiteralKind=na,e.isTemplateHead=ra,e.isTemplateMiddleOrTemplateTail=aa,e.isIdentifier=ia,e.isVoidExpression=oa,e.isGeneratedIdentifier=sa,e.isModifier=ca,e.isQualifiedName=ua,e.isComputedPropertyName=la,e.isEntityName=_a,e.isPropertyName=da,e.isModuleName=pa,e.isBindingName=fa,e.isTypeParameter=ma,e.isParameter=ga,e.isDecorator=ya,e.isMethodDeclaration=ha,e.isClassElement=va,e.isObjectLiteralElementLike=ba,e.isTypeNode=ka,e.isArrayBindingPattern=Sa,e.isObjectBindingPattern=Ta,e.isBindingPattern=Ca,e.isAssignmentPattern=Ea,e.isBindingElement=Da,e.isArrayBindingElement=Na,e.isDeclarationBindingElement=Aa,e.isBindingOrAssignmentPattern=wa,e.isObjectBindingOrAssignmentPattern=Pa,e.isArrayBindingOrAssignmentPattern=Oa,e.isArrayLiteralExpression=Fa,e.isObjectLiteralExpression=Ia,e.isPropertyAccessExpression=Ra,e.isPropertyAccessOrQualifiedName=Ma,e.isElementAccessExpression=La,e.isBinaryExpression=Ba,e.isConditionalExpression=Ka,e.isCallExpression=ja,e.isTemplateLiteral=Ja,e.isSpreadExpression=za,e.isExpressionWithTypeArguments=Ua,e.isLeftHandSideExpression=qa,e.isUnaryExpression=Ga,e.isExpression=Ha,e.isAssertionExpression=Xa,e.isPartiallyEmittedExpression=Ya,e.isNotEmittedStatement=Qa,e.isNotEmittedOrPartiallyEmittedNode=Za,e.isOmittedExpression=ei,e.isTemplateSpan=ti,e.isBlock=ni,e.isConciseBody=ri,e.isFunctionBody=ai,e.isForInitializer=ii,e.isVariableDeclaration=oi,e.isVariableDeclarationList=si,e.isCaseBlock=ci,e.isModuleBody=ui,e.isNamespaceBody=li,e.isJSDocNamespaceBody=_i,e.isImportEqualsDeclaration=di,e.isImportClause=pi,e.isNamedImportBindings=fi,e.isImportSpecifier=mi,e.isNamedExports=gi,e.isExportSpecifier=yi,e.isModuleOrEnumDeclaration=hi,e.isDeclaration=ki,e.isDeclarationStatement=Si,e.isStatementButNotDeclaration=Ti,e.isStatement=Ci,e.isModuleReference=Ei,e.isJsxOpeningElement=Di,e.isJsxClosingElement=Ni,e.isJsxTagNameExpression=Ai,e.isJsxChild=wi,e.isJsxAttributes=Pi,e.isJsxAttributeLike=Oi,e.isJsxSpreadAttribute=Fi,e.isJsxAttribute=Ii,e.isStringLiteralOrJsxExpression=Ri,e.isJsxOpeningLikeElement=Mi,e.isCaseOrDefaultClause=Li,e.isHeritageClause=Bi,e.isCatchClause=Ki,e.isPropertyAssignment=ji,e.isShorthandPropertyAssignment=Ji,e.isEnumMember=zi,e.isSourceFile=Ui,e.isWatchSet=Vi;}(r||(r={})),function(e){function t(e){switch(e.target){case 5:return"lib.esnext.full.d.ts";case 4:return"lib.es2017.full.d.ts";case 3:return"lib.es2016.full.d.ts";case 2:return"lib.es6.d.ts";default:return"lib.d.ts"}}function n(e){return e.start+e.length}function r(e){return 0===e.length}function a(e,t){return t>=e.start&&t=e.start&&n(t)<=n(e)}function o(e,t){return Math.max(e.start,t.start)=e.start}function u(e,t,r){var a=t+r;return t<=n(e)&&a>=e.start}function l(e,t,n,r){var a=n+r;return n<=e+t&&a>=e}function _(e,t){return t<=n(e)&&t>=e.start}function d(e,t){var r=Math.max(e.start,t.start),a=Math.min(n(e),n(t));if(r<=a)return f(r,a)}function p(e,t){if(e<0)throw new Error("start < 0");if(t<0)throw new Error("length < 0");return{start:e,length:t}}function f(e,t){return p(e,t-e)}function m(e){return p(e.span.start,e.newLength)}function g(e){return r(e.span)&&0===e.newLength}function y(e,t){if(t<0)throw new Error("newLength < 0");return{span:e,newLength:t}}function h(t){if(0===t.length)return e.unchangedTextChangeRange;if(1===t.length)return t[0];for(var r=t[0],a=r.span.start,i=n(r.span),o=a+r.newLength,s=1;s=3&&95===e.charCodeAt(0)&&95===e.charCodeAt(1)&&95===e.charCodeAt(2)?e.substr(1):e}e.getDefaultLibFileName=t,e.textSpanEnd=n,e.textSpanIsEmpty=r,e.textSpanContainsPosition=a,e.textSpanContainsTextSpan=i,e.textSpanOverlapsWith=o,e.textSpanOverlap=s,e.textSpanIntersectsWithTextSpan=c,e.textSpanIntersectsWith=u,e.decodedTextSpanIntersectsWith=l,e.textSpanIntersectsWithPosition=_,e.textSpanIntersection=d,e.createTextSpan=p,e.createTextSpanFromBounds=f,e.textChangeRangeNewSpan=m,e.textChangeRangeIsUnchanged=g,e.createTextChangeRange=y,e.unchangedTextChangeRange=y(p(0,0),0),e.collapseTextChangeRangesAcrossMultipleVersions=h,e.getTypeParameterOwner=v,e.isParameterPropertyDeclaration=b,e.getCombinedModifierFlags=k,e.getCombinedNodeFlags=S,e.validateLocaleAndSetLanguage=T,e.getOriginalNode=C,e.isParseTreeNode=E,e.getParseTreeNode=D,e.unescapeIdentifier=N;}(r||(r={}));!function(e){function t(t){var n=e.createNode(t,-1,-1);return n.flags|=8,n}function n(t,n){return t!==n&&(Aa(t,n),oa(t,n),n.startsOnNewLine&&(t.startsOnNewLine=!0),e.aggregateTransformFlags(t)),t}function r(t,n){if(t){if(e.isNodeArray(t))return t}else t=[];var r=t;return r.pos=-1,r.end=-1,r.hasTrailingComma=n,r}function a(e){var n=t(e.kind);n.flags|=e.flags,Aa(n,e);for(var r in e)!n.hasOwnProperty(r)&&e.hasOwnProperty(r)&&(n[r]=e[r]);return n}function i(e){return"number"==typeof e?o(e+""):"boolean"==typeof e?e?h():v():"string"==typeof e?s(e):c(e)}function o(e){var n=t(8);return n.text=e,n.numericLiteralFlags=0,n}function s(e){var n=t(9);return n.text=e,n}function c(e){var t=s(e.text);return t.textSourceNode=e,t}function u(n){var r=t(71);return r.text=e.escapeIdentifier(n),r.originalKeywordKind=n?e.stringToToken(n):0,r.autoGenerateKind=0,r.autoGenerateId=0,r}function l(e){var t=u("");return t.autoGenerateKind=1,t.autoGenerateId=Oa,Oa++,e&&e(t),t}function _(){var e=u("");return e.autoGenerateKind=2,e.autoGenerateId=Oa,Oa++,e}function d(e){var t=u(e);return t.autoGenerateKind=3,t.autoGenerateId=Oa,Oa++,t}function p(e){var t=u("");return t.autoGenerateKind=4,t.autoGenerateId=Oa,t.original=e,Oa++,t}function f(e){return t(e)}function m(){return t(97)}function g(){return t(99)}function y(){return t(95)}function h(){return t(101)}function v(){return t(86)}function b(e,n){var r=t(143);return r.left=e,r.right=ea(n),r}function x(e,t,r){return e.left!==t||e.right!==r?n(b(t,r),e):e}function k(e){var n=t(144);return n.expression=e,n}function S(e,t){return e.expression!==t?n(k(t),e):e}function T(e,n,r,a){var i=t(e);return i.typeParameters=na(n),i.parameters=na(r),i.type=a,i}function C(e,t,r,a){return e.typeParameters!==t||e.parameters!==r||e.type!==a?n(T(e.kind,t,r,a),e):e}function E(e,t,n){return T(160,e,t,n)}function D(e,t,n,r){return C(e,t,n,r)}function N(e,t,n){return T(161,e,t,n)}function A(e,t,n,r){return C(e,t,n,r)}function w(e,t,n){return T(155,e,t,n)}function P(e,t,n,r){return C(e,t,n,r)}function O(e,t,n){return T(156,e,t,n)}function F(e,t,n,r){return C(e,t,n,r)}function I(e,t,n,r,a){var i=T(150,e,t,n);return i.name=ea(r),i.questionToken=a,i}function R(e,t,r,a,i,o){return e.typeParameters!==t||e.parameters!==r||e.type!==a||e.name!==i||e.questionToken!==o?n(I(t,r,a,i,o),e):e}function M(e){return t(e)}function L(){return t(169)}function B(e){var n=t(173);return n.literal=e,n}function K(e,t){return e.literal!==t?n(B(t),e):e}function j(e,n){var r=t(159);return r.typeName=ea(e),r.typeArguments=na(n),r}function J(e,t,r){return e.typeName!==t||e.typeArguments!==r?n(j(t,r),e):e}function z(e,n){var r=t(158);return r.parameterName=ea(e),r.type=n,r}function U(e,t,r){return e.parameterName!==t||e.type!==r?n(z(t,r),e):e}function V(e){var n=t(162);return n.exprName=e,n}function q(e,t){return e.exprName!==t?n(V(t),e):e}function $(e){var n=t(164);return n.elementType=e,n}function G(e,t){return e.elementType!==t?n($(t),e):e}function W(e,n){var a=t(e);return a.types=r(n),a}function H(e,t){return e.types!==t?n(W(e.kind,t),e):e}function X(e){var n=t(163);return n.members=r(e),n}function Y(e,t){return e.members!==t?n(X(t),e):e}function Q(e){var n=t(165);return n.elementTypes=r(e),n}function Z(e,t){return e.elementTypes!==t?n(Q(t),e):e}function ee(e,n,r,a){var i=t(172);return i.readonlyToken=e,i.typeParameter=n,i.questionToken=r,i.type=a,i}function te(e,t,r,a,i){return e.readonlyToken!==t||e.typeParameter!==r||e.questionToken!==a||e.type!==i?n(ee(t,r,a,i),e):e}function ne(e){var n=t(170);return n.operator=127,n.type=e,n}function re(e,t){return e.type!==t?n(ne(t),e):e}function ae(e,n){var r=t(171);return r.objectType=e,r.indexType=n,r}function ie(e,t,r){return e.objectType!==t||e.indexType!==r?n(ae(t,r),e):e}function oe(e,n,r){var a=t(145);return a.name=ea(e),a.constraint=n,a.default=r,a}function se(e,t,r,a){return e.name!==t||e.constraint!==r||e.default!==a?n(oe(t,r,a),e):e}function ce(e,n,r,a){var i=t(148);return i.name=ea(e),i.questionToken=n,i.type=r,i.initializer=a,i}function ue(e,t,r,a,i){return e.name!==t||e.questionToken!==r||e.type!==a||e.initializer!==i?n(ce(t,r,a,i),e):e}function le(e,n,a,i){var o=t(157);return o.decorators=na(e),o.modifiers=na(n),o.parameters=r(a),o.type=i,o}function _e(e,t,r,a,i){return e.parameters!==a||e.type!==i||e.decorators!==t||e.modifiers!==r?n(le(t,r,a,i),e):e}function de(n,r,a,i,o,s,c){var u=t(146);return u.decorators=na(n),u.modifiers=na(r),u.dotDotDotToken=a,u.name=ea(i),u.questionToken=o,u.type=s,u.initializer=c?e.parenthesizeExpressionForList(c):void 0,u}function pe(e,t,r,a,i,o,s,c){return e.decorators!==t||e.modifiers!==r||e.dotDotDotToken!==a||e.name!==i||e.questionToken!==o||e.type!==s||e.initializer!==c?n(de(t,r,a,i,e.questionToken,s,c),e):e}function fe(n){var r=t(147);return r.expression=e.parenthesizeForAccess(n),r}function me(e,t){return e.expression!==t?n(fe(t),e):e}function ge(e,n,r,a,i,o){var s=t(149);return s.decorators=na(e),s.modifiers=na(n),s.name=ea(r),s.questionToken=a,s.type=i,s.initializer=o,s}function ye(e,t,r,a,i,o){return e.decorators!==t||e.modifiers!==r||e.name!==a||e.type!==i||e.initializer!==o?n(ge(t,r,a,e.questionToken,i,o),e):e}function he(e,n,a,i,o,s,c,u,l){var _=t(151);return _.decorators=na(e),_.modifiers=na(n),_.asteriskToken=a,_.name=ea(i),_.questionToken=o,_.typeParameters=na(s),_.parameters=r(c),_.type=u,_.body=l,_}function ve(e,t,r,a,i,o,s,c,u,l){return e.decorators!==t||e.modifiers!==r||e.asteriskToken!==a||e.name!==i||e.typeParameters!==s||e.parameters!==c||e.type!==u||e.body!==l?n(he(t,r,a,i,o,s,c,u,l),e):e}function be(e,n,a,i){var o=t(152);return o.decorators=na(e),o.modifiers=na(n),o.typeParameters=void 0,o.parameters=r(a),o.type=void 0,o.body=i,o}function xe(e,t,r,a,i){return e.decorators!==t||e.modifiers!==r||e.parameters!==a||e.body!==i?n(be(t,r,a,i),e):e}function ke(e,n,a,i,o,s){var c=t(153);return c.decorators=na(e),c.modifiers=na(n),c.name=ea(a),c.typeParameters=void 0,c.parameters=r(i),c.type=o,c.body=s,c}function Se(e,t,r,a,i,o,s){return e.decorators!==t||e.modifiers!==r||e.name!==a||e.parameters!==i||e.type!==o||e.body!==s?n(ke(t,r,a,i,o,s),e):e}function Te(e,n,a,i,o){var s=t(154);return s.decorators=na(e),s.modifiers=na(n),s.name=ea(a),s.typeParameters=void 0,s.parameters=r(i),s.body=o,s}function Ce(e,t,r,a,i,o){return e.decorators!==t||e.modifiers!==r||e.name!==a||e.parameters!==i||e.body!==o?n(Te(t,r,a,i,o),e):e}function Ee(e){var n=t(174);return n.elements=r(e),n}function De(e,t){return e.elements!==t?n(Ee(t),e):e}function Ne(e){var n=t(175);return n.elements=r(e),n}function Ae(e,t){return e.elements!==t?n(Ne(t),e):e}function we(e,n,r,a){var i=t(176);return i.dotDotDotToken=e,i.propertyName=ea(n),i.name=ea(r),i.initializer=a,i}function Pe(e,t,r,a,i){return e.propertyName!==r||e.dotDotDotToken!==t||e.name!==a||e.initializer!==i?n(we(t,r,a,i),e):e}function Oe(n,a){var i=t(177);return i.elements=e.parenthesizeListElements(r(n)),a&&(i.multiLine=!0),i}function Fe(e,t){return e.elements!==t?n(Oe(t,e.multiLine),e):e}function Ie(e,n){var a=t(178);return a.properties=r(e),n&&(a.multiLine=!0),a}function Re(e,t){return e.properties!==t?n(Ie(t,e.multiLine),e):e}function Me(n,r){var a=t(179);return a.expression=e.parenthesizeForAccess(n),a.name=ea(r),ca(a,65536),a}function Le(e,t,r){return e.expression!==t||e.name!==r?n(ca(Me(t,r),sa(e)),e):e}function Be(n,r){var a=t(180);return a.expression=e.parenthesizeForAccess(n),a.argumentExpression=ta(r),a}function Ke(e,t,r){return e.expression!==t||e.argumentExpression!==r?n(Be(t,r),e):e}function je(n,a,i){var o=t(181);return o.expression=e.parenthesizeForAccess(n),o.typeArguments=na(a),o.arguments=e.parenthesizeListElements(r(i)),o}function Je(e,t,r,a){return t!==e.expression||r!==e.typeArguments||a!==e.arguments?n(je(t,r,a),e):e}function ze(n,a,i){var o=t(182);return o.expression=e.parenthesizeForNew(n),o.typeArguments=na(a),o.arguments=i?e.parenthesizeListElements(r(i)):void 0,o}function Ue(e,t,r,a){return e.expression!==t||e.typeArguments!==r||e.arguments!==a?n(ze(t,r,a),e):e}function Ve(n,r){var a=t(183);return a.tag=e.parenthesizeForAccess(n),a.template=r,a}function qe(e,t,r){return e.tag!==t||e.template!==r?n(Ve(t,r),e):e}function $e(n,r){var a=t(184);return a.type=n,a.expression=e.parenthesizePrefixOperand(r),a}function Ge(e,t,r){return e.type!==t||e.expression!==r?n($e(t,r),e):e}function We(e){var n=t(185);return n.expression=e,n}function He(e,t){return e.expression!==t?n(We(t),e):e}function Xe(e,n,a,i,o,s,c){var u=t(186);return u.modifiers=na(e),u.asteriskToken=n,u.name=ea(a),u.typeParameters=na(i),u.parameters=r(o),u.type=s,u.body=c,u}function Ye(e,t,r,a,i,o,s,c){return e.name!==a||e.modifiers!==t||e.asteriskToken!==r||e.typeParameters!==i||e.parameters!==o||e.type!==s||e.body!==c?n(Xe(t,r,a,i,o,s,c),e):e}function Qe(n,a,i,o,s,c){var u=t(187);return u.modifiers=na(n),u.typeParameters=na(a),u.parameters=r(i),u.type=o,u.equalsGreaterThanToken=s||f(36),u.body=e.parenthesizeConciseBody(c),u}function Ze(e,t,r,a,i,o){return e.modifiers!==t||e.typeParameters!==r||e.parameters!==a||e.type!==i||e.body!==o?n(Qe(t,r,a,i,e.equalsGreaterThanToken,o),e):e}function et(n){var r=t(188);return r.expression=e.parenthesizePrefixOperand(n),r}function tt(e,t){return e.expression!==t?n(et(t),e):e}function nt(n){var r=t(189);return r.expression=e.parenthesizePrefixOperand(n),r}function rt(e,t){return e.expression!==t?n(nt(t),e):e}function at(n){var r=t(190);return r.expression=e.parenthesizePrefixOperand(n),r}function it(e,t){return e.expression!==t?n(at(t),e):e}function ot(n){var r=t(191);return r.expression=e.parenthesizePrefixOperand(n),r}function st(e,t){return e.expression!==t?n(ot(t),e):e}function ct(n,r){var a=t(192);return a.operator=n,a.operand=e.parenthesizePrefixOperand(r),a}function ut(e,t){return e.operand!==t?n(ct(e.operator,t),e):e}function lt(n,r){var a=t(193);return a.operand=e.parenthesizePostfixOperand(n),a.operator=r,a}function _t(e,t){return e.operand!==t?n(lt(t,e.operator),e):e}function dt(n,r,a){var i=t(194),o=ra(r),s=o.kind;return i.left=e.parenthesizeBinaryOperand(s,n,!0,void 0),i.operatorToken=o,i.right=e.parenthesizeBinaryOperand(s,a,!1,i.left),i}function pt(e,t,r){return e.left!==t||e.right!==r?n(dt(t,e.operatorToken,r),e):e}function ft(n,r,a,i,o){var s=t(195);return s.condition=e.parenthesizeForConditionalHead(n),s.questionToken=o?r:f(55),s.whenTrue=e.parenthesizeSubexpressionOfConditionalExpression(o?a:r),s.colonToken=o?i:f(56),s.whenFalse=e.parenthesizeSubexpressionOfConditionalExpression(o||a),s}function mt(e,t,r,a){return e.condition!==t||e.whenTrue!==r||e.whenFalse!==a?n(ft(t,e.questionToken,r,e.colonToken,a),e):e}function gt(e,n){var a=t(196);return a.head=e,a.templateSpans=r(n),a}function yt(e,t,r){return e.head!==t||e.templateSpans!==r?n(gt(t,r),e):e}function ht(e,n){var r=t(197);return r.asteriskToken=e&&39===e.kind?e:void 0,r.expression=e&&39!==e.kind?e:n,r}function vt(e,t,r){return e.expression!==r||e.asteriskToken!==t?n(ht(t,r),e):e}function bt(n){var r=t(198);return r.expression=e.parenthesizeExpressionForList(n),r}function xt(e,t){return e.expression!==t?n(bt(t),e):e}function kt(e,n,a,i,o){var s=t(199);return s.decorators=void 0,s.modifiers=na(e),s.name=ea(n),s.typeParameters=na(a),s.heritageClauses=na(i),s.members=r(o),s}function St(e,t,r,a,i,o){return e.modifiers!==t||e.name!==r||e.typeParameters!==a||e.heritageClauses!==i||e.members!==o?n(kt(t,r,a,i,o),e):e}function Tt(){return t(200)}function Ct(n,r){var a=t(201);return a.expression=e.parenthesizeForAccess(r),a.typeArguments=na(n),a}function Et(e,t,r){return e.typeArguments!==t||e.expression!==r?n(Ct(t,r),e):e}function Dt(e,n){var r=t(202);return r.expression=e,r.type=n,r}function Nt(e,t,r){return e.expression!==t||e.type!==r?n(Dt(t,r),e):e}function At(n){var r=t(203);return r.expression=e.parenthesizeForAccess(n),r}function wt(e,t){return e.expression!==t?n(At(t),e):e}function Pt(e,n){var r=t(205);return r.expression=e,r.literal=n,r}function Ot(e,t,r){return e.expression!==t||e.literal!==r?n(Pt(t,r),e):e}function Ft(e,n){var a=t(207);return a.statements=r(e),n&&(a.multiLine=n),a}function It(e,t){return t!==e.statements?n(Ft(t,e.multiLine),e):e}function Rt(n,r){var a=t(208);return a.decorators=void 0,a.modifiers=na(n),a.declarationList=e.isArray(r)?Lt(r):r,a}function Mt(e,t,r){return e.modifiers!==t||e.declarationList!==r?n(Rt(t,r),e):e}function Lt(e,n){var a=t(227);return a.flags|=n,a.declarations=r(e),a}function Bt(e,t){return e.declarations!==t?n(Lt(t,e.flags),e):e}function Kt(n,r,a){var i=t(226);return i.name=ea(n),i.type=r,i.initializer=void 0!==a?e.parenthesizeExpressionForList(a):void 0,i}function jt(e,t,r,a){return e.name!==t||e.type!==r||e.initializer!==a?n(Kt(t,r,a),e):e}function Jt(){return t(209)}function zt(n){var r=t(210);return r.expression=e.parenthesizeExpressionForExpressionStatement(n),r}function Ut(e,t){return e.expression!==t?n(zt(t),e):e}function Vt(e,n,r){var a=t(211);return a.expression=e,a.thenStatement=n,a.elseStatement=r,a}function qt(e,t,r,a){return e.expression!==t||e.thenStatement!==r||e.elseStatement!==a?n(Vt(t,r,a),e):e}function $t(e,n){var r=t(212);return r.statement=e,r.expression=n,r}function Gt(e,t,r){return e.statement!==t||e.expression!==r?n($t(t,r),e):e}function Wt(e,n){var r=t(213);return r.expression=e,r.statement=n,r}function Ht(e,t,r){return e.expression!==t||e.statement!==r?n(Wt(t,r),e):e}function Xt(e,n,r,a){var i=t(214);return i.initializer=e,i.condition=n,i.incrementor=r,i.statement=a,i}function Yt(e,t,r,a,i){return e.initializer!==t||e.condition!==r||e.incrementor!==a||e.statement!==i?n(Xt(t,r,a,i),e):e}function Qt(e,n,r){var a=t(215);return a.initializer=e,a.expression=n,a.statement=r,a}function Zt(e,t,r,a){return e.initializer!==t||e.expression!==r||e.statement!==a?n(Qt(t,r,a),e):e}function en(e,n,r,a){var i=t(216);return i.awaitModifier=e,i.initializer=n,i.expression=r,i.statement=a,i}function tn(e,t,r,a,i){return e.awaitModifier!==t||e.initializer!==r||e.expression!==a||e.statement!==i?n(en(t,r,a,i),e):e}function nn(e){var n=t(217);return n.label=ea(e),n}function rn(e,t){return e.label!==t?n(nn(t),e):e}function an(e){var n=t(218);return n.label=ea(e),n}function on$$1(e,t){return e.label!==t?n(an(t),e):e}function sn(e){var n=t(219);return n.expression=e,n}function cn(e,t){return e.expression!==t?n(sn(t),e):e}function un(e,n){var r=t(220);return r.expression=e,r.statement=n,r}function ln(e,t,r){return e.expression!==t||e.statement!==r?n(un(t,r),e):e}function _n(n,r){var a=t(221);return a.expression=e.parenthesizeExpressionForList(n),a.caseBlock=r,a}function dn(e,t,r){return e.expression!==t||e.caseBlock!==r?n(_n(t,r),e):e}function pn(e,n){var r=t(222);return r.label=ea(e),r.statement=n,r}function fn(e,t,r){return e.label!==t||e.statement!==r?n(pn(t,r),e):e}function mn(e){var n=t(223);return n.expression=e,n}function gn(e,t){return e.expression!==t?n(mn(t),e):e}function yn(e,n,r){var a=t(224);return a.tryBlock=e,a.catchClause=n,a.finallyBlock=r,a}function hn(e,t,r,a){return e.tryBlock!==t||e.catchClause!==r||e.finallyBlock!==a?n(yn(t,r,a),e):e}function vn(e,n,a,i,o,s,c,u){var l=t(228);return l.decorators=na(e),l.modifiers=na(n),l.asteriskToken=a,l.name=ea(i),l.typeParameters=na(o),l.parameters=r(s),l.type=c,l.body=u,l}function bn(e,t,r,a,i,o,s,c,u){return e.decorators!==t||e.modifiers!==r||e.asteriskToken!==a||e.name!==i||e.typeParameters!==o||e.parameters!==s||e.type!==c||e.body!==u?n(vn(t,r,a,i,o,s,c,u),e):e}function xn(e,n,a,i,o,s){var c=t(229);return c.decorators=na(e),c.modifiers=na(n),c.name=ea(a),c.typeParameters=na(i),c.heritageClauses=na(o),c.members=r(s),c}function kn(e,t,r,a,i,o,s){return e.decorators!==t||e.modifiers!==r||e.name!==a||e.typeParameters!==i||e.heritageClauses!==o||e.members!==s?n(xn(t,r,a,i,o,s),e):e}function Sn(e,n,a,i){var o=t(232);return o.decorators=na(e),o.modifiers=na(n),o.name=ea(a),o.members=r(i),o}function Tn(e,t,r,a,i){return e.decorators!==t||e.modifiers!==r||e.name!==a||e.members!==i?n(Sn(t,r,a,i),e):e}function Cn(e,n,r,a,i){var o=t(233);return o.flags|=i,o.decorators=na(e),o.modifiers=na(n),o.name=r,o.body=a,o}function En(e,t,r,a,i){return e.decorators!==t||e.modifiers!==r||e.name!==a||e.body!==i?n(Cn(t,r,a,i,e.flags),e):e}function Dn(e){var n=t(234);return n.statements=r(e),n}function Nn(e,t){return e.statements!==t?n(Dn(t),e):e}function An(e){var n=t(235);return n.clauses=r(e),n}function wn(e,t){return e.clauses!==t?n(An(t),e):e}function Pn(e,n,r,a){var i=t(237);return i.decorators=na(e),i.modifiers=na(n),i.name=ea(r),i.moduleReference=a,i}function On(e,t,r,a,i){return e.decorators!==t||e.modifiers!==r||e.name!==a||e.moduleReference!==i?n(Pn(t,r,a,i),e):e}function Fn(e,n,r,a){var i=t(238);return i.decorators=na(e),i.modifiers=na(n),i.importClause=r,i.moduleSpecifier=a,i}function In(e,t,r,a,i){return e.decorators!==t||e.modifiers!==r||e.importClause!==a||e.moduleSpecifier!==i?n(Fn(t,r,a,i),e):e}function Rn(e,n){var r=t(239);return r.name=e,r.namedBindings=n,r}function Mn(e,t,r){return e.name!==t||e.namedBindings!==r?n(Rn(t,r),e):e}function Ln(e){var n=t(240);return n.name=e,n}function Bn(e,t){return e.name!==t?n(Ln(t),e):e}function Kn(e){var n=t(241);return n.elements=r(e),n}function jn(e,t){return e.elements!==t?n(Kn(t),e):e}function Jn(e,n){var r=t(242);return r.propertyName=e,r.name=n,r}function zn(e,t,r){return e.propertyName!==t||e.name!==r?n(Jn(t,r),e):e}function Un(e,n,r,a){var i=t(243);return i.decorators=na(e),i.modifiers=na(n),i.isExportEquals=r,i.expression=a,i}function Vn(e,t,r,a){return e.decorators!==t||e.modifiers!==r||e.expression!==a?n(Un(t,r,e.isExportEquals,a),e):e}function qn(e,n,r,a){var i=t(244);return i.decorators=na(e),i.modifiers=na(n),i.exportClause=r,i.moduleSpecifier=a,i}function $n(e,t,r,a,i){return e.decorators!==t||e.modifiers!==r||e.exportClause!==a||e.moduleSpecifier!==i?n(qn(t,r,a,i),e):e}function Gn(e){var n=t(245);return n.elements=r(e),n}function Wn(e,t){return e.elements!==t?n(Gn(t),e):e}function Hn(e,n){var r=t(246);return r.propertyName=ea(e),r.name=ea(n),r}function Xn(e,t,r){return e.propertyName!==t||e.name!==r?n(Hn(t,r),e):e}function Yn(e){var n=t(248);return n.expression=e,n}function Qn(e,t){return e.expression!==t?n(Yn(t),e):e}function Zn(e,n,a){var i=t(249);return i.openingElement=e,i.children=r(n),i.closingElement=a,i}function er(e,t,r,a){return e.openingElement!==t||e.children!==r||e.closingElement!==a?n(Zn(t,r,a),e):e}function tr(e,n){var r=t(250);return r.tagName=e,r.attributes=n,r}function nr(e,t,r){return e.tagName!==t||e.attributes!==r?n(tr(t,r),e):e}function rr(e,n){var r=t(251);return r.tagName=e,r.attributes=n,r}function ar(e,t,r){return e.tagName!==t||e.attributes!==r?n(rr(t,r),e):e}function ir(e){var n=t(252);return n.tagName=e,n}function or(e,t){return e.tagName!==t?n(ir(t),e):e}function sr(e){var n=t(254);return n.properties=r(e),n}function cr(e,t){return e.properties!==t?n(sr(t),e):e}function ur(e,n){var r=t(253);return r.name=e,r.initializer=n,r}function lr(e,t,r){return e.name!==t||e.initializer!==r?n(ur(t,r),e):e}function _r(e){var n=t(255);return n.expression=e,n}function dr(e,t){return e.expression!==t?n(_r(t),e):e}function pr(e,n){var r=t(256);return r.dotDotDotToken=e,r.expression=n,r}function fr(e,t){return e.expression!==t?n(pr(e.dotDotDotToken,t),e):e}function mr(e,n){var a=t(259);return a.token=e,a.types=r(n),a}function gr(e,t){return e.types!==t?n(mr(e.token,t),e):e}function yr(n,a){var i=t(257);return i.expression=e.parenthesizeExpressionForList(n),i.statements=r(a),i}function hr(e,t,r){return e.expression!==t||e.statements!==r?n(yr(t,r),e):e}function vr(e){var n=t(258);return n.statements=r(e),n}function br(e,t){return e.statements!==t?n(vr(t),e):e}function xr(e,n){var r=t(260);return r.variableDeclaration="string"==typeof e?Kt(e):e,r.block=n,r}function kr(e,t,r){return e.variableDeclaration!==t||e.block!==r?n(xr(t,r),e):e}function Sr(n,r){var a=t(261);return a.name=ea(n),a.questionToken=void 0,a.initializer=void 0!==r?e.parenthesizeExpressionForList(r):void 0,a}function Tr(e,t,r){return e.name!==t||e.initializer!==r?n(Sr(t,r),e):e}function Cr(n,r){var a=t(262);return a.name=ea(n),a.objectAssignmentInitializer=void 0!==r?e.parenthesizeExpressionForList(r):void 0,a}function Er(e,t,r){return e.name!==t||e.objectAssignmentInitializer!==r?n(Cr(t,r),e):e}function Dr(n){var r=t(263);return r.expression=void 0!==n?e.parenthesizeExpressionForList(n):void 0,r}function Nr(e,t){return e.expression!==t?n(Dr(t),e):e}function Ar(n,r){var a=t(264);return a.name=ea(n),a.initializer=r&&e.parenthesizeExpressionForList(r),a}function wr(e,t,r){return e.name!==t||e.initializer!==r?n(Ar(t,r),e):e}function Pr(e,a){if(e.statements!==a){var i=t(265);return i.flags|=e.flags,i.statements=r(a),i.endOfFileToken=e.endOfFileToken,i.fileName=e.fileName,i.path=e.path,i.text=e.text,void 0!==e.amdDependencies&&(i.amdDependencies=e.amdDependencies),void 0!==e.moduleName&&(i.moduleName=e.moduleName),void 0!==e.referencedFiles&&(i.referencedFiles=e.referencedFiles),void 0!==e.typeReferenceDirectives&&(i.typeReferenceDirectives=e.typeReferenceDirectives),void 0!==e.languageVariant&&(i.languageVariant=e.languageVariant),void 0!==e.isDeclarationFile&&(i.isDeclarationFile=e.isDeclarationFile),void 0!==e.renamedDependencies&&(i.renamedDependencies=e.renamedDependencies),void 0!==e.hasNoDefaultLib&&(i.hasNoDefaultLib=e.hasNoDefaultLib),void 0!==e.languageVersion&&(i.languageVersion=e.languageVersion),void 0!==e.scriptKind&&(i.scriptKind=e.scriptKind),void 0!==e.externalModuleIndicator&&(i.externalModuleIndicator=e.externalModuleIndicator),void 0!==e.commonJsModuleIndicator&&(i.commonJsModuleIndicator=e.commonJsModuleIndicator),void 0!==e.identifiers&&(i.identifiers=e.identifiers),void 0!==e.nodeCount&&(i.nodeCount=e.nodeCount),void 0!==e.identifierCount&&(i.identifierCount=e.identifierCount),void 0!==e.symbolCount&&(i.symbolCount=e.symbolCount),void 0!==e.parseDiagnostics&&(i.parseDiagnostics=e.parseDiagnostics),void 0!==e.bindDiagnostics&&(i.bindDiagnostics=e.bindDiagnostics),void 0!==e.lineMap&&(i.lineMap=e.lineMap),void 0!==e.classifiableNames&&(i.classifiableNames=e.classifiableNames),void 0!==e.resolvedModules&&(i.resolvedModules=e.resolvedModules),void 0!==e.resolvedTypeReferenceDirectiveNames&&(i.resolvedTypeReferenceDirectiveNames=e.resolvedTypeReferenceDirectiveNames),void 0!==e.imports&&(i.imports=e.imports),void 0!==e.moduleAugmentations&&(i.moduleAugmentations=e.moduleAugmentations),n(i,e)}return e}function Or(e){var t=a(e);return t.pos=e.pos,t.end=e.end,t.parent=e.parent,t}function Fr(e){var n=t(295);return n.original=e,oa(n,e),n}function Ir(e){var n=t(298);return n.emitNode={},n.original=e,n}function Rr(e){var n=t(297);return n.emitNode={},n.original=e,n}function Mr(e,n){var r=t(296);return r.expression=e,r.original=n,oa(r,n),r}function Lr(e,t){return e.expression!==t?n(Mr(t,e.original),e):e}function Br(t){var n=e.createNode(266);return n.sourceFiles=t,n}function Kr(e,t){return e.sourceFiles!==t?Br(t):e}function jr(e,t){return dt(e,26,t)}function Jr(e,t){return dt(e,27,t)}function zr(e,t){return dt(e,58,t)}function Ur(e,t){return dt(e,34,t)}function Vr(e,t){return dt(e,35,t)}function qr(e,t){return dt(e,37,t)}function $r(e,t){return dt(e,38,t)}function Gr(e){return lt(e,43)}function Wr(e,t){return dt(e,53,t)}function Hr(e,t){return dt(e,54,t)}function Xr(e){return ct(51,e)}function Yr(){return at(i(0))}function Qr(e){return Un(void 0,void 0,!1,e)}function Zr(e){return qn(void 0,void 0,Gn([Hn(void 0,e)]))}function ea(e){return"string"==typeof e?u(e):e}function ta(e){return"string"==typeof e||"number"==typeof e?i(e):e}function na(e){return e?r(e):void 0}function ra(e){return"number"==typeof e?f(e):e}function aa(t){var n=(t=e.getSourceFileOfNode(e.getParseTreeNode(t)))&&t.emitNode,r=n&&n.annotatedNodes;if(r)for(var a=0,i=r;a0&&(i[c-s]=u);}s>0&&(i.length-=s);}}function Na(t,n){return t===n?0:t.priority===n.priority?0:void 0===t.priority?1:void 0===n.priority?-1:e.compareValues(t.priority,n.priority)}function Aa(e,t){if(e.original=t,t){var n=t.emitNode;n&&(e.emitNode=wa(n,e.emitNode));}return e}function wa(t,n){var r=t.flags,a=t.leadingComments,i=t.trailingComments,o=t.commentRange,s=t.sourceMapRange,c=t.tokenSourceMapRanges,u=t.constantValue,l=t.helpers;return n||(n={}),a&&(n.leadingComments=e.addRange(a.slice(),n.leadingComments)),i&&(n.trailingComments=e.addRange(i.slice(),n.trailingComments)),r&&(n.flags=r),o&&(n.commentRange=o),s&&(n.sourceMapRange=s),c&&(n.tokenSourceMapRanges=Pa(c,n.tokenSourceMapRanges)),void 0!==u&&(n.constantValue=u),l&&(n.helpers=e.addRange(n.helpers,l)),n}function Pa(e,t){t||(t=[]);for(var n in e)t[n]=e[n];return t}e.updateNode=n,e.createNodeArray=r,e.getSynthesizedClone=a,e.createLiteral=i,e.createNumericLiteral=o,e.createIdentifier=u;var Oa=0;e.createTempVariable=l,e.createLoopVariable=_,e.createUniqueName=d,e.getGeneratedNameForNode=p,e.createToken=f,e.createSuper=m,e.createThis=g,e.createNull=y,e.createTrue=h,e.createFalse=v,e.createQualifiedName=b,e.updateQualifiedName=x,e.createComputedPropertyName=k,e.updateComputedPropertyName=S,e.createSignatureDeclaration=T,e.createFunctionTypeNode=E,e.updateFunctionTypeNode=D,e.createConstructorTypeNode=N,e.updateConstructorTypeNode=A,e.createCallSignatureDeclaration=w,e.updateCallSignatureDeclaration=P,e.createConstructSignatureDeclaration=O,e.updateConstructSignatureDeclaration=F,e.createMethodSignature=I,e.updateMethodSignature=R,e.createKeywordTypeNode=M,e.createThisTypeNode=L,e.createLiteralTypeNode=B,e.updateLiteralTypeNode=K,e.createTypeReferenceNode=j,e.updateTypeReferenceNode=J,e.createTypePredicateNode=z,e.updateTypePredicateNode=U,e.createTypeQueryNode=V,e.updateTypeQueryNode=q,e.createArrayTypeNode=$,e.updateArrayTypeNode=G,e.createUnionOrIntersectionTypeNode=W,e.updateUnionOrIntersectionTypeNode=H,e.createTypeLiteralNode=X,e.updateTypeLiteralNode=Y,e.createTupleTypeNode=Q,e.updateTypleTypeNode=Z,e.createMappedTypeNode=ee,e.updateMappedTypeNode=te,e.createTypeOperatorNode=ne,e.updateTypeOperatorNode=re,e.createIndexedAccessTypeNode=ae,e.updateIndexedAccessTypeNode=ie,e.createTypeParameterDeclaration=oe,e.updateTypeParameterDeclaration=se,e.createPropertySignature=ce,e.updatePropertySignature=ue,e.createIndexSignatureDeclaration=le,e.updateIndexSignatureDeclaration=_e,e.createParameter=de,e.updateParameter=pe,e.createDecorator=fe,e.updateDecorator=me,e.createProperty=ge,e.updateProperty=ye,e.createMethodDeclaration=he,e.updateMethod=ve,e.createConstructor=be,e.updateConstructor=xe,e.createGetAccessor=ke,e.updateGetAccessor=Se,e.createSetAccessor=Te,e.updateSetAccessor=Ce,e.createObjectBindingPattern=Ee,e.updateObjectBindingPattern=De,e.createArrayBindingPattern=Ne,e.updateArrayBindingPattern=Ae,e.createBindingElement=we,e.updateBindingElement=Pe,e.createArrayLiteral=Oe,e.updateArrayLiteral=Fe,e.createObjectLiteral=Ie,e.updateObjectLiteral=Re,e.createPropertyAccess=Me,e.updatePropertyAccess=Le,e.createElementAccess=Be,e.updateElementAccess=Ke,e.createCall=je,e.updateCall=Je,e.createNew=ze,e.updateNew=Ue,e.createTaggedTemplate=Ve,e.updateTaggedTemplate=qe,e.createTypeAssertion=$e,e.updateTypeAssertion=Ge,e.createParen=We,e.updateParen=He,e.createFunctionExpression=Xe,e.updateFunctionExpression=Ye,e.createArrowFunction=Qe,e.updateArrowFunction=Ze,e.createDelete=et,e.updateDelete=tt,e.createTypeOf=nt,e.updateTypeOf=rt,e.createVoid=at,e.updateVoid=it,e.createAwait=ot,e.updateAwait=st,e.createPrefix=ct,e.updatePrefix=ut,e.createPostfix=lt,e.updatePostfix=_t,e.createBinary=dt,e.updateBinary=pt,e.createConditional=ft,e.updateConditional=mt,e.createTemplateExpression=gt,e.updateTemplateExpression=yt,e.createYield=ht,e.updateYield=vt,e.createSpread=bt,e.updateSpread=xt,e.createClassExpression=kt,e.updateClassExpression=St,e.createOmittedExpression=Tt,e.createExpressionWithTypeArguments=Ct,e.updateExpressionWithTypeArguments=Et,e.createAsExpression=Dt,e.updateAsExpression=Nt,e.createNonNullExpression=At,e.updateNonNullExpression=wt,e.createTemplateSpan=Pt,e.updateTemplateSpan=Ot,e.createBlock=Ft,e.updateBlock=It,e.createVariableStatement=Rt,e.updateVariableStatement=Mt,e.createVariableDeclarationList=Lt,e.updateVariableDeclarationList=Bt,e.createVariableDeclaration=Kt,e.updateVariableDeclaration=jt,e.createEmptyStatement=Jt,e.createStatement=zt,e.updateStatement=Ut,e.createIf=Vt,e.updateIf=qt,e.createDo=$t,e.updateDo=Gt,e.createWhile=Wt,e.updateWhile=Ht,e.createFor=Xt,e.updateFor=Yt,e.createForIn=Qt,e.updateForIn=Zt,e.createForOf=en,e.updateForOf=tn,e.createContinue=nn,e.updateContinue=rn,e.createBreak=an,e.updateBreak=on$$1,e.createReturn=sn,e.updateReturn=cn,e.createWith=un,e.updateWith=ln,e.createSwitch=_n,e.updateSwitch=dn,e.createLabel=pn,e.updateLabel=fn,e.createThrow=mn,e.updateThrow=gn,e.createTry=yn,e.updateTry=hn,e.createFunctionDeclaration=vn,e.updateFunctionDeclaration=bn,e.createClassDeclaration=xn,e.updateClassDeclaration=kn,e.createEnumDeclaration=Sn,e.updateEnumDeclaration=Tn,e.createModuleDeclaration=Cn,e.updateModuleDeclaration=En,e.createModuleBlock=Dn,e.updateModuleBlock=Nn,e.createCaseBlock=An,e.updateCaseBlock=wn,e.createImportEqualsDeclaration=Pn,e.updateImportEqualsDeclaration=On,e.createImportDeclaration=Fn,e.updateImportDeclaration=In,e.createImportClause=Rn,e.updateImportClause=Mn,e.createNamespaceImport=Ln,e.updateNamespaceImport=Bn,e.createNamedImports=Kn,e.updateNamedImports=jn,e.createImportSpecifier=Jn,e.updateImportSpecifier=zn,e.createExportAssignment=Un,e.updateExportAssignment=Vn,e.createExportDeclaration=qn,e.updateExportDeclaration=$n,e.createNamedExports=Gn,e.updateNamedExports=Wn,e.createExportSpecifier=Hn,e.updateExportSpecifier=Xn,e.createExternalModuleReference=Yn,e.updateExternalModuleReference=Qn,e.createJsxElement=Zn,e.updateJsxElement=er,e.createJsxSelfClosingElement=tr,e.updateJsxSelfClosingElement=nr,e.createJsxOpeningElement=rr,e.updateJsxOpeningElement=ar,e.createJsxClosingElement=ir,e.updateJsxClosingElement=or,e.createJsxAttributes=sr,e.updateJsxAttributes=cr,e.createJsxAttribute=ur,e.updateJsxAttribute=lr,e.createJsxSpreadAttribute=_r,e.updateJsxSpreadAttribute=dr,e.createJsxExpression=pr,e.updateJsxExpression=fr,e.createHeritageClause=mr,e.updateHeritageClause=gr,e.createCaseClause=yr,e.updateCaseClause=hr,e.createDefaultClause=vr,e.updateDefaultClause=br,e.createCatchClause=xr,e.updateCatchClause=kr,e.createPropertyAssignment=Sr,e.updatePropertyAssignment=Tr,e.createShorthandPropertyAssignment=Cr,e.updateShorthandPropertyAssignment=Er,e.createSpreadAssignment=Dr,e.updateSpreadAssignment=Nr,e.createEnumMember=Ar,e.updateEnumMember=wr,e.updateSourceFileNode=Pr,e.getMutableClone=Or,e.createNotEmittedStatement=Fr,e.createEndOfDeclarationMarker=Ir,e.createMergeDeclarationMarker=Rr,e.createPartiallyEmittedExpression=Mr,e.updatePartiallyEmittedExpression=Lr,e.createBundle=Br,e.updateBundle=Kr,e.createComma=jr,e.createLessThan=Jr,e.createAssignment=zr,e.createStrictEquality=Ur,e.createStrictInequality=Vr,e.createAdd=qr,e.createSubtract=$r,e.createPostfixIncrement=Gr,e.createLogicalAnd=Wr,e.createLogicalOr=Hr,e.createLogicalNot=Xr,e.createVoidZero=Yr,e.createExportDefault=Qr,e.createExternalModuleExport=Zr,e.disposeEmitNodes=aa,e.getOrCreateEmitNode=ia,e.setTextRange=oa,e.getEmitFlags=sa,e.setEmitFlags=ca,e.getSourceMapRange=ua,e.setSourceMapRange=la,e.getTokenSourceMapRange=_a,e.setTokenSourceMapRange=da,e.getCommentRange=pa,e.setCommentRange=fa,e.getSyntheticLeadingComments=ma,e.setSyntheticLeadingComments=ga,e.addSyntheticLeadingComment=ya,e.getSyntheticTrailingComments=ha,e.setSyntheticTrailingComments=va,e.addSyntheticTrailingComment=ba,e.getConstantValue=xa,e.setConstantValue=ka,e.addEmitHelper=Sa,e.addEmitHelpers=Ta,e.removeEmitHelper=Ca,e.getEmitHelpers=Ea,e.moveEmitHelpers=Da,e.compareEmitHelpers=Na,e.setOriginalNode=Aa;}(r||(r={})),function(e){function t(t,n){return"undefined"===n?e.createStrictEquality(t,e.createVoidZero()):e.createStrictEquality(e.createTypeOf(t),e.createLiteral(n))}function n(t,n,r){if(e.isComputedPropertyName(n))return e.setTextRange(e.createElementAccess(t,n.expression),r);var a=e.setTextRange(e.isIdentifier(n)?e.createPropertyAccess(t,n):e.createElementAccess(t,n),n);return e.getOrCreateEmitNode(a).flags|=64,a}function r(t,n,r,a){return e.setTextRange(e.createCall(e.createPropertyAccess(t,"call"),void 0,[n].concat(r)),a)}function a(t,n,r,a){return e.setTextRange(e.createCall(e.createPropertyAccess(t,"apply"),void 0,[n,r]),a)}function i(t,n){var r=[];return void 0!==n&&r.push("number"==typeof n?e.createLiteral(n):n),e.createCall(e.createPropertyAccess(t,"slice"),void 0,r)}function o(t,n){return e.createCall(e.createPropertyAccess(t,"concat"),void 0,n)}function s(t,n,r){return e.setTextRange(e.createCall(e.createPropertyAccess(e.createIdentifier("Math"),"pow"),void 0,[t,n]),r)}function c(t,n){var r=e.createIdentifier(t||"React");return r.flags&=-9,r.parent=e.getParseTreeNode(n),r}function u(t,n){if(e.isQualifiedName(t)){var r=u(t.left,n),a=e.createIdentifier(t.right.text);return a.text=t.right.text,e.createPropertyAccess(r,a)}return c(t.text,n)}function l(t,n,r){return t?u(t,r):e.createPropertyAccess(c(n,r),"createElement")}function _(t,n,r,a,i,o,s){var c=[r];if(a&&c.push(a),i&&i.length>0)if(a||c.push(e.createNull()),i.length>1)for(var u=0,_=i;u<_.length;u++){var d=_[u];d.startsOnNewLine=!0,c.push(d);}else c.push(i[0]);return e.setTextRange(e.createCall(l(t,n,o),void 0,c),s)}function d(t){return e.setEmitFlags(e.createIdentifier(t),4098)}function p(t,n,r){return t.requestEmitHelper(Fe),e.setTextRange(e.createCall(d("__values"),void 0,[n]),r)}function f(t,n,r,a){return t.requestEmitHelper(Ie),e.setTextRange(e.createCall(d("__read"),void 0,void 0!==r?[n,e.createLiteral(r)]:[n]),a)}function m(t,n,r){return t.requestEmitHelper(Ie),t.requestEmitHelper(Re),e.setTextRange(e.createCall(d("__spread"),void 0,n),r)}function g(t,n){if(e.isVariableDeclarationList(t)){var r=e.firstOrUndefined(t.declarations),a=e.updateVariableDeclaration(r,r.name,void 0,n);return e.setTextRange(e.createVariableStatement(void 0,e.updateVariableDeclarationList(t,[a])),t)}var i=e.setTextRange(e.createAssignment(t,n),t);return e.setTextRange(e.createStatement(i),t)}function y(t,n){return e.isBlock(t)?e.updateBlock(t,e.setTextRange(e.createNodeArray([n].concat(t.statements)),t.statements)):e.createBlock(e.createNodeArray([t,n]),!0)}function h(t,n,r){if(!n)return t;var a=e.updateLabel(n,n.label,222===n.statement.kind?h(t,n.statement):t);return r&&r(n),a}function v(e,t){var n=ce(e);switch(n.kind){case 71:return t;case 99:case 8:case 9:return!1;case 177:return 0!==n.elements.length;case 178:return n.properties.length>0;default:return!0}}function b(t,n,r,a){var i,o,s=se(t,7);if(e.isSuperProperty(s))i=e.createThis(),o=s;else if(97===s.kind)i=e.createThis(),o=r<2?e.setTextRange(e.createIdentifier("_super"),s):s;else if(4096&e.getEmitFlags(s))i=e.createVoidZero(),o=Q(s);else switch(s.kind){case 179:v(s.expression,a)?(i=e.createTempVariable(n),o=e.createPropertyAccess(e.setTextRange(e.createAssignment(i,s.expression),s.expression),s.name),e.setTextRange(o,s)):(i=s.expression,o=s);break;case 180:v(s.expression,a)?(i=e.createTempVariable(n),o=e.createElementAccess(e.setTextRange(e.createAssignment(i,s.expression),s.expression),s.argumentExpression),e.setTextRange(o,s)):(i=s.expression,o=s);break;default:i=e.createVoidZero(),o=Q(t);}return{target:o,thisArg:i}}function x(t){return e.reduceLeft(t,e.createComma)}function k(t){if(e.isQualifiedName(t)){var n=k(t.left),r=e.getMutableClone(t.right);return e.setTextRange(e.createPropertyAccess(n,r),t)}return e.getMutableClone(t)}function S(t){return e.isIdentifier(t)?e.createLiteral(t):e.isComputedPropertyName(t)?e.getMutableClone(t.expression):e.getMutableClone(t)}function T(e,t,n){switch(t.kind){case 153:case 154:return C(e.properties,t,n,e.multiLine);case 261:return E(t,n);case 262:return D(t,n);case 151:return N(t,n)}}function C(t,n,r,a){var i=e.getAllAccessorDeclarations(t,n),o=i.firstAccessor,s=i.getAccessor,c=i.setAccessor;if(n===o){var u=[];if(s){var l=e.createFunctionExpression(s.modifiers,void 0,void 0,void 0,s.parameters,void 0,s.body);e.setTextRange(l,s),e.setOriginalNode(l,s);var _=e.createPropertyAssignment("get",l);u.push(_);}if(c){var d=e.createFunctionExpression(c.modifiers,void 0,void 0,void 0,c.parameters,void 0,c.body);e.setTextRange(d,c),e.setOriginalNode(d,c);var p=e.createPropertyAssignment("set",d);u.push(p);}u.push(e.createPropertyAssignment("enumerable",e.createTrue())),u.push(e.createPropertyAssignment("configurable",e.createTrue()));var f=e.setTextRange(e.createCall(e.createPropertyAccess(e.createIdentifier("Object"),"defineProperty"),void 0,[r,S(n.name),e.createObjectLiteral(u,a)]),o);return e.aggregateTransformFlags(f)}}function E(t,r){return e.aggregateTransformFlags(e.setOriginalNode(e.setTextRange(e.createAssignment(n(r,t.name,t.name),t.initializer),t),t))}function D(t,r){return e.aggregateTransformFlags(e.setOriginalNode(e.setTextRange(e.createAssignment(n(r,t.name,t.name),e.getSynthesizedClone(t.name)),t),t))}function N(t,r){return e.aggregateTransformFlags(e.setOriginalNode(e.setTextRange(e.createAssignment(n(r,t.name,t.name),e.setOriginalNode(e.setTextRange(e.createFunctionExpression(t.modifiers,t.asteriskToken,void 0,void 0,t.parameters,void 0,t.body),t),t)),t),t))}function A(e,t,n){return I(e,t,n,16384)}function w(t){return 0!=(16384&e.getEmitFlags(t))}function P(e,t,n){return I(e,t,n,8192)}function O(t){return 0!=(8192&e.getEmitFlags(t))}function F(e,t,n){return I(e,t,n)}function I(t,n,r,a){if(t.name&&e.isIdentifier(t.name)&&!e.isGeneratedIdentifier(t.name)){var i=e.getMutableClone(t.name);return a|=e.getEmitFlags(t.name),r||(a|=48),n||(a|=1536),a&&e.setEmitFlags(i,a),i}return e.getGeneratedNameForNode(t)}function R(t,n,r,a){return t&&e.hasModifier(n,1)?M(t,I(n),r,a):P(n,r,a)}function M(t,n,r,a){var i=e.createPropertyAccess(t,e.nodeIsSynthesized(n)?n:e.getSynthesizedClone(n));e.setTextRange(i,n);var o;return a||(o|=48),r||(o|=1536),o&&e.setEmitFlags(i,o),i}function L(t,n){return e.isBlock(t)?t:e.setTextRange(e.createBlock([e.setTextRange(e.createReturn(t),t)],n),t)}function B(e){return"use strict"===e.expression.text}function K(e,t,n,r){return J(e,t,j(e,t,n),r)}function j(t,n,r){e.Debug.assert(0===t.length,"Prologue directives should be at the first statement in the target statements array");for(var a=!1,i=0,o=n.length;ie.getOperatorPrecedence(194,26)?t:e.setTextRange(e.createParen(t),t)}function re(t){var n=le(t);if(e.isCallExpression(n)){var r=n.expression,a=le(r).kind;if(186===a||187===a){var i=e.getMutableClone(n);return i.expression=e.setTextRange(e.createParen(r),r),ae(t,i)}}else{var o=ie(n).kind;if(178===o||186===o)return e.setTextRange(e.createParen(t),t)}return t}function ae(t,n){if(e.isPartiallyEmittedExpression(t)){var r=e.getMutableClone(t);return r.expression=ae(r.expression,n),r}return n}function ie(e){for(;;){switch(e.kind){case 193:e=e.operand;continue;case 194:e=e.left;continue;case 195:e=e.condition;continue;case 181:case 180:case 179:case 296:e=e.expression;continue}return e}}function oe(t){return e.isBlock(t)||178!==ie(t).kind?t:e.setTextRange(e.createParen(t),t)}function se(e,t){void 0===t&&(t=7);var n;do{n=e,1&t&&(e=ce(e)),2&t&&(e=ue(e)),4&t&&(e=le(e));}while(n!==e);return e}function ce(e){for(;185===e.kind;)e=e.expression;return e}function ue(t){for(;e.isAssertionExpression(t);)t=t.expression;return t}function le(e){for(;296===e.kind;)e=e.expression;return e}function _e(e){return e.startsOnNewLine=!0,e}function de(t){var n=e.getOriginalNode(t,e.isSourceFile),r=n&&n.emitNode;return r&&r.externalHelpersModuleName}function pe(t,n){if(n.importHelpers&&(e.isExternalModule(t)||n.isolatedModules)){var r=de(t);if(r)return r;var a=e.getEmitHelpers(t);if(a)for(var i=0,o=a;i= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n };\n '};e.createValuesHelper=p;var Ie={name:"typescript:read",scoped:!1,text:'\n var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === "function" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i["return"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n };\n '};e.createReadHelper=f;var Re={name:"typescript:spread",scoped:!1,text:"\n var __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n };"};e.createSpreadHelper=m,e.createForOfBindingStatement=g,e.insertLeadingStatement=y,e.restoreEnclosingLabel=h,e.createCallBinding=b,e.inlineExpressions=x,e.createExpressionFromEntityName=k,e.createExpressionForPropertyName=S,e.createExpressionForObjectLiteralElementLike=T,e.getLocalName=A,e.isLocalName=w,e.getExportName=P,e.isExportName=O,e.getDeclarationName=F,e.getExternalModuleOrNamespaceExportName=R,e.getNamespaceMemberName=M,e.convertToFunctionBody=L,e.addPrologue=K,e.addStandardPrologue=j,e.addCustomPrologue=J,e.startsWithUseStrict=z,e.ensureUseStrict=U,e.parenthesizeConditionalHead=V,e.parenthesizeBinaryOperand=q,e.parenthesizeForConditionalHead=H,e.parenthesizeSubexpressionOfConditionalExpression=X,e.parenthesizeForNew=Y,e.parenthesizeForAccess=Q,e.parenthesizePostfixOperand=Z,e.parenthesizePrefixOperand=ee,e.parenthesizeListElements=te,e.parenthesizeExpressionForList=ne,e.parenthesizeExpressionForExpressionStatement=re,e.parenthesizeConciseBody=oe;!function(e){e[e.Parentheses=1]="Parentheses",e[e.Assertions=2]="Assertions",e[e.PartiallyEmittedExpressions=4]="PartiallyEmittedExpressions",e[e.All=7]="All";}(e.OuterExpressionKinds||(e.OuterExpressionKinds={})),e.skipOuterExpressions=se,e.skipParentheses=ce,e.skipAssertions=ue,e.skipPartiallyEmittedExpressions=le,e.startOnNewLine=_e,e.getExternalHelpersModuleName=de,e.getOrCreateExternalHelpersModuleNameIfNeeded=pe,e.getLocalNameForExternalImport=fe,e.getExternalModuleNameLiteral=me,e.tryGetModuleNameFromFile=ye,e.getInitializerOfBindingOrAssignmentElement=ve,e.getTargetOfBindingOrAssignmentElement=be,e.getRestIndicatorOfBindingOrAssignmentElement=xe,e.getPropertyNameOfBindingOrAssignmentElement=ke,e.getElementsOfBindingOrAssignmentPattern=Se,e.convertToArrayAssignmentElement=Te,e.convertToObjectAssignmentElement=Ce,e.convertToAssignmentPattern=Ee,e.convertToObjectAssignmentPattern=De,e.convertToArrayAssignmentPattern=Ne,e.convertToAssignmentElementTarget=Ae,e.collectExternalModuleInfo=we;}(r||(r={}));!function(e){function t(t,n,r){return 265===t?new(m||(m=e.objectAllocator.getSourceFileConstructor()))(t,n,r):71===t?new(f||(f=e.objectAllocator.getIdentifierConstructor()))(t,n,r):t<143?new(p||(p=e.objectAllocator.getTokenConstructor()))(t,n,r):new(d||(d=e.objectAllocator.getNodeConstructor()))(t,n,r)}function n(e,t){if(t)return e(t)}function r(e,t){if(t)return e(t)}function a(e,t){if(t)for(var n=0,r=t;n107)}function W(t,n,r){return void 0===r&&(r=!0),M()===t?(r&&L(),!0):(n?P(n):P(e.Diagnostics._0_expected,e.tokenToString(t)),!1)}function H(e){return M()===e&&(L(),!0)}function X(e){if(M()===e)return Q()}function Y(e,t,n,r){return X(e)||ae(e,t,n,r)}function Q(){var e=te(M());return L(),re(e)}function Z(){return 25===M()||(18===M()||1===M()||_i.hasPrecedingLineBreak())}function ee(){return Z()?(25===M()&&L(),!0):W(25)}function te(e,t){return oi++,t>=0||(t=_i.getStartPos()),e>=143?new Ya(e,t,t):71===e?new Za(e,t,t):new Qa(e,t,t)}function ne(e,t){var n=e||[];return t>=0||(t=I()),n.pos=t,n.end=t,n}function re(e,t){return e.end=void 0===t?_i.getStartPos():t,li&&(e.flags|=li),pi&&(pi=!1,e.flags|=32768),e}function ae(e,t,n,r){t?O(_i.getStartPos(),0,n,r):P(n,r);var a=te(e,_i.getStartPos());return a.text="",re(a)}function ie(t){t=e.escapeIdentifier(t);var n=si.get(t);return void 0===n&&si.set(t,n=t),n}function oe(t,n){if(ci++,t){var r=te(71);return 71!==M()&&(r.originalKeywordKind=M()),r.text=ie(_i.getTokenValue()),L(),re(r)}return ae(71,!1,n||e.Diagnostics.Identifier_expected)}function se(e){return oe(G(),e)}function ce(){return oe(e.tokenIsIdentifierOrKeyword(M()))}function ue(){return e.tokenIsIdentifierOrKeyword(M())||9===M()||8===M()}function le(e){return 9===M()||8===M()?Ye(!0):e&&21===M()?fe():ce()}function _e(){return le(!0)}function de(){return le(!1)}function pe(){return 9===M()||8===M()||e.tokenIsIdentifierOrKeyword(M())}function fe(){var e=te(144);return W(21),e.expression=v(en),W(22),re(e)}function me(e){return M()===e&&$(ye)}function ge(){return L(),!_i.hasPrecedingLineBreak()&&ve()}function ye(){return 76===M()?83===L():84===M()?(L(),79===M()?q(be):39!==M()&&118!==M()&&17!==M()&&ve()):79===M()?be():115===M()?(L(),ve()):ge()}function he(){return e.isModifierKind(M())&&$(ye)}function ve(){return 21===M()||17===M()||39===M()||24===M()||ue()}function be(){return L(),75===M()||89===M()||117===M()&&q(Fr)||120===M()&&q(Ir)}function xe(t,n){if(Oe(t))return!0;switch(t){case 0:case 1:case 3:return!(25===M()&&n)&&Br();case 2:return 73===M()||79===M();case 4:return q(bt);case 5:return q(ua)||25===M()&&!n;case 6:return 21===M()||ue();case 12:return 21===M()||39===M()||24===M()||ue();case 17:return ue();case 9:return 21===M()||24===M()||ue();case 7:return 17===M()?q(ke):n?G()&&!Ce():Yt()&&!Ce();case 8:return Hr();case 10:return 26===M()||24===M()||Hr();case 18:return G();case 11:case 15:return 26===M()||24===M()||Qt();case 16:return ct();case 19:case 20:return 26===M()||Rt();case 21:return ka();case 22:return e.tokenIsIdentifierOrKeyword(M());case 13:return e.tokenIsIdentifierOrKeyword(M())||17===M();case 14:return!0;case 23:case 24:case 26:return gi.isJSDocType();case 25:return pe()}e.Debug.fail("Non-exhaustive case in 'isListElement'.");}function ke(){if(e.Debug.assert(17===M()),18===L()){var t=L();return 26===t||17===t||85===t||108===t}return!0}function Se(){return L(),G()}function Te(){return L(),e.tokenIsIdentifierOrKeyword(M())}function Ce(){return(108===M()||85===M())&&q(Ee)}function Ee(){return L(),Qt()}function De(e){if(1===M())return!0;switch(e){case 1:case 2:case 4:case 5:case 6:case 12:case 9:case 22:return 18===M();case 3:return 18===M()||73===M()||79===M();case 7:return 17===M()||85===M()||108===M();case 8:return Ne();case 18:return 29===M()||19===M()||17===M()||85===M()||108===M();case 11:return 20===M()||25===M();case 15:case 20:case 10:return 22===M();case 16:case 17:return 20===M()||22===M();case 19:return 26!==M();case 21:return 17===M()||18===M();case 13:return 29===M()||41===M();case 14:return 27===M()&&q(Ia);case 23:return 20===M()||56===M()||18===M();case 24:return 29===M()||18===M();case 26:return 22===M()||18===M();case 25:return 18===M()}}function Ne(){return!!Z()||(!!hn(M())||36===M())}function Ae(){for(var e=0;e<27;e++)if(ui&1<=0&&(a.hasTrailingComma=!0),a.end=R(),ui=r,a}function qe(){return ne()}function $e(e,t,n,r){if(W(n)){var a=Ve(e,t);return W(r),a}return qe()}function Ge(e,t){for(var n=se(t);H(23);){var r=te(143,n.pos);r.left=n,r.right=We(e),n=re(r);}return n}function We(t){return _i.hasPrecedingLineBreak()&&e.tokenIsIdentifierOrKeyword(M())&&q(Or)?ae(71,!0,e.Diagnostics.Identifier_expected):t?ce():se()}function He(){var t=te(196);t.head=Qe(),e.Debug.assert(14===t.head.kind,"Template head has wrong token kind");var n=ne();do{n.push(Xe());}while(15===e.lastOrUndefined(n).literal.kind);return n.end=R(),t.templateSpans=n,re(t)}function Xe(){var t=te(205);t.expression=v(en);var n;return 18===M()?(j(),n=Ze()):n=Y(16,!1,e.Diagnostics._0_expected,e.tokenToString(18)),t.literal=n,re(t)}function Ye(e){return et(M(),e)}function Qe(){var t=et(M(),!1);return e.Debug.assert(14===t.kind,"Template head has wrong token kind"),t}function Ze(){var t=et(M(),!1);return e.Debug.assert(15===t.kind||16===t.kind,"Template fragment has wrong token kind"),t}function et(e,t){var n=te(e),r=_i.getTokenValue();return n.text=t?ie(r):r,_i.hasExtendedUnicodeEscape()&&(n.hasExtendedUnicodeEscape=!0),_i.isUnterminated()&&(n.isUnterminated=!0),8===n.kind&&(n.numericLiteralFlags=_i.getNumericLiteralFlags()),L(),re(n),n}function tt(){var t=te(159);return t.typeName=Ge(!1,e.Diagnostics.Type_expected),_i.hasPrecedingLineBreak()||27!==M()||(t.typeArguments=$e(19,Wt,27,29)),re(t)}function nt(e){L();var t=te(158,e.pos);return t.parameterName=e,t.type=Wt(),re(t)}function rt(){var e=te(169);return L(),re(e)}function at(){var e=te(162);return W(103),e.exprName=Ge(!0),re(e)}function it(){var e=te(145);return e.name=se(),H(85)&&(Rt()||!Qt()?e.constraint=Wt():e.expression=wn()),H(58)&&(e.default=Wt()),re(e)}function ot(){if(27===M())return $e(18,it,27,29)}function st(){if(H(56))return Wt()}function ct(){return 24===M()||Hr()||e.isModifierKind(M())||57===M()||99===M()}function ut(){var t=te(146);return 99===M()?(t.name=oe(!0),t.type=st(),re(t)):(t.decorators=la(),t.modifiers=_a(),t.dotDotDotToken=X(24),t.name=Xr(),0===e.getFullWidth(t.name)&&!e.hasModifiers(t)&&e.isModifierKind(M())&&L(),t.questionToken=X(55),t.type=st(),t.initializer=lt(!0),u(re(t)))}function lt(e){return e?_t():oa()}function _t(){return tn(!0)}function dt(e,t,n,r,a){var i=36===e;a.typeParameters=ot(),a.parameters=pt(t,n,r),i?(W(e),a.type=$t()):H(e)&&(a.type=$t());}function pt(e,t,n){if(W(19)){var r=D(),a=w();f(e),g(t);var i=Ve(16,ut);if(f(r),g(a),!W(20)&&n)return;return i}return n?void 0:qe()}function ft(){H(26)||ee();}function mt(e){var t=te(e);return 156===e&&W(94),dt(56,!1,!1,!1,t),ft(),u(re(t))}function gt(){return 21===M()&&q(yt)}function yt(){if(L(),24===M()||22===M())return!0;if(e.isModifierKind(M())){if(L(),G())return!0}else{if(!G())return!1;L();}return 56===M()||26===M()||55===M()&&(L(),56===M()||26===M()||22===M())}function ht(e,t,n){var r=te(157,e);return r.decorators=t,r.modifiers=n,r.parameters=$e(16,ut,21,22),r.type=Xt(),ft(),re(r)}function vt(e,t){var n=_e(),r=X(55);if(19===M()||27===M()){var a=te(150,e);return a.modifiers=t,a.name=n,a.questionToken=r,dt(56,!1,!1,!1,a),ft(),u(re(a))}var i=te(148,e);return i.modifiers=t,i.name=n,i.questionToken=r,i.type=Xt(),58===M()&&(i.initializer=oa()),ft(),u(re(i))}function bt(){if(19===M()||27===M())return!0;for(var t;e.isModifierKind(M());)t=!0,L();return 21===M()||(ue()&&(t=!0,L()),!!t&&(19===M()||27===M()||55===M()||56===M()||26===M()||Z()))}function xt(){if(19===M()||27===M())return mt(155);if(94===M()&&q(kt))return mt(156);var e=I(),t=_a();return gt()?ht(e,void 0,t):vt(e,t)}function kt(){return L(),19===M()||27===M()}function St(){var e=te(163);return e.members=Tt(),re(e)}function Tt(){var e;return W(17)?(e=we(4,xt),W(18)):e=qe(),e}function Ct(){return L(),131===M()&&L(),21===M()&&Se()&&92===L()}function Et(){var e=te(145);return e.name=se(),W(92),e.constraint=Wt(),re(e)}function Dt(){var e=te(172);return W(17),e.readonlyToken=X(131),W(21),e.typeParameter=Et(),W(22),e.questionToken=X(55),e.type=Xt(),ee(),W(18),re(e)}function Nt(){var e=te(165);return e.elementTypes=$e(20,Wt,21,22),re(e)}function At(){var e=te(168);return W(19),e.type=Wt(),W(20),re(e)}function wt(e){var t=te(e);return 161===e&&W(94),dt(36,!1,!1,!1,t),re(t)}function Pt(){var e=Q();return 23===M()?void 0:e}function Ot(){var e=te(173);return e.literal=Pn(),re(e),e}function Ft(){return 8===L()}function It(){switch(M()){case 119:case 136:case 133:case 122:case 137:case 139:case 130:case 134:return $(Pt)||tt();case 9:case 8:case 101:case 86:return Ot();case 38:return q(Ft)?Ot():tt();case 105:case 95:return Q();case 99:var e=rt();return 126!==M()||_i.hasPrecedingLineBreak()?e:nt(e);case 103:return at();case 17:return q(Ct)?Dt():St();case 21:return Nt();case 19:return At();default:return tt()}}function Rt(){switch(M()){case 119:case 136:case 133:case 122:case 137:case 105:case 139:case 95:case 99:case 103:case 130:case 17:case 21:case 27:case 49:case 48:case 94:case 9:case 8:case 101:case 86:case 134:return!0;case 38:return q(Ft);case 19:return q(Mt);default:return G()}}function Mt(){return L(),20===M()||ct()||Rt()}function Lt(){for(var e=It();!_i.hasPrecedingLineBreak()&&H(21);)if(Rt())(t=te(171,e.pos)).objectType=e,t.indexType=Wt(),W(22),e=re(t);else{var t=te(164,e.pos);t.elementType=e,W(22),e=re(t);}return e}function Bt(e){var t=te(170);return W(e),t.operator=e,t.type=Kt(),re(t)}function Kt(){switch(M()){case 127:return Bt(127)}return Lt()}function jt(e,t,n){H(n);var r=t();if(M()===n){for(var a=ne([r],r.pos);H(n);)a.push(t());a.end=R();var i=te(e,r.pos);i.types=a,r=re(i);}return r}function Jt(){return jt(167,Kt,48)}function zt(){return jt(166,Jt,49)}function Ut(){return 27===M()||19===M()&&q(qt)}function Vt(){if(e.isModifierKind(M())&&_a(),G()||99===M())return L(),!0;if(21===M()||17===M()){var t=ni.length;return Xr(),t===ni.length}return!1}function qt(){if(L(),20===M()||24===M())return!0;if(Vt()){if(56===M()||26===M()||55===M()||58===M())return!0;if(20===M()&&(L(),36===M()))return!0}return!1}function $t(){var e=G()&&$(Gt),t=Wt();if(e){var n=te(158,e.pos);return n.parameterName=e,n.type=t,re(n)}return t}function Gt(){var e=se();if(126===M()&&!_i.hasPrecedingLineBreak())return L(),e}function Wt(){return y(20480,Ht)}function Ht(){return Ut()?wt(160):94===M()?wt(161):zt()}function Xt(){return H(56)?Wt():void 0}function Yt(){switch(M()){case 99:case 97:case 95:case 101:case 86:case 8:case 9:case 13:case 14:case 19:case 21:case 17:case 89:case 75:case 94:case 41:case 63:case 71:return!0;default:return G()}}function Qt(){if(Yt())return!0;switch(M()){case 37:case 38:case 52:case 51:case 80:case 103:case 105:case 43:case 44:case 27:case 121:case 116:return!0;default:return!!bn()||G()}}function Zt(){return 17!==M()&&89!==M()&&75!==M()&&57!==M()&&Qt()}function en(){var e=A();e&&m(!1);for(var t,n=nn();t=X(26);)n=kn(n,t,nn());return e&&m(!0),n}function tn(e){if(58===M()||!(_i.hasPrecedingLineBreak()||e&&17===M())&&Qt())return W(58),nn()}function nn(){if(rn())return on$$1();var t=cn()||dn();if(t)return t;var n=yn(0);return 71===n.kind&&36===M()?sn(n):e.isLeftHandSideExpression(n)&&e.isAssignmentOperator(B())?kn(n,Q(),nn()):gn(n)}function rn(){return 116===M()&&(!!D()||q(Rr))}function an(){return L(),!_i.hasPrecedingLineBreak()&&G()}function on$$1(){var e=te(197);return L(),_i.hasPrecedingLineBreak()||39!==M()&&!Qt()?re(e):(e.asteriskToken=X(39),e.expression=nn(),re(e))}function sn(t,n){e.Debug.assert(36===M(),"parseSimpleArrowFunctionExpression should only have been called if we had a =>");var r;n?(r=te(187,n.pos)).modifiers=n:r=te(187,t.pos);var a=te(146,t.pos);return a.name=t,re(a),r.parameters=ne([a],a.pos),r.parameters.end=a.end,r.equalsGreaterThanToken=Y(36,!1,e.Diagnostics._0_expected,"=>"),r.body=mn(!!n),u(re(r))}function cn(){var t=un();if(0!==t){var n=1===t?fn(!0):$(_n);if(n){var r=!!(256&e.getModifierFlags(n)),a=M();return n.equalsGreaterThanToken=Y(36,!1,e.Diagnostics._0_expected,"=>"),n.body=36===a||17===a?mn(r):se(),u(re(n))}}}function un(){return 19===M()||27===M()||120===M()?q(ln):36===M()?1:0}function ln(){if(120===M()){if(L(),_i.hasPrecedingLineBreak())return 0;if(19!==M()&&27!==M())return 0}var t=M(),n=L();if(19===t){if(20===n)switch(L()){case 36:case 56:case 17:return 1;default:return 0}return 21===n||17===n?2:24===n?1:G()?56===L()?1:2:0}return e.Debug.assert(27===t),G()?1===ti.languageVariant?q(function(){var e=L();if(85===e)switch(L()){case 58:case 29:return!1;default:return!0}else if(26===e)return!0;return!1})?1:0:2:0}function _n(){return fn(!1)}function dn(){if(120===M()&&1===q(pn)){var e=da();return sn(yn(0),e)}}function pn(){if(120===M()){if(L(),_i.hasPrecedingLineBreak()||36===M())return 0;var e=yn(0);if(!_i.hasPrecedingLineBreak()&&71===e.kind&&36===M())return 1}return 0}function fn(t){var n=te(187);if(n.modifiers=da(),dt(56,!1,!!(256&e.getModifierFlags(n)),!t,n),n.parameters&&(t||36===M()||17===M()))return n}function mn(e){return 17===M()?fr(!1,e,!1):25!==M()&&89!==M()&&75!==M()&&Br()&&!Zt()?fr(!1,e,!0):e?S(nn):T(nn)}function gn(t){var n=X(55);if(!n)return t;var r=te(195,t.pos);return r.condition=t,r.questionToken=n,r.whenTrue=y(di,nn),r.colonToken=Y(56,!1,e.Diagnostics._0_expected,e.tokenToString(56)),r.whenFalse=nn(),re(r)}function yn(e){return vn(e,wn())}function hn(e){return 92===e||142===e}function vn(e,t){for(;;){B();var n=xn();if(!(40===M()?n>=e:n>e))break;if(92===M()&&N())break;if(118===M()){if(_i.hasPrecedingLineBreak())break;L(),t=Sn(t,Wt());}else t=kn(t,Q(),yn(n));}return t}function bn(){return(!N()||92!==M())&&xn()>0}function xn(){switch(M()){case 54:return 1;case 53:return 2;case 49:return 3;case 50:return 4;case 48:return 5;case 32:case 33:case 34:case 35:return 6;case 27:case 29:case 30:case 31:case 93:case 92:case 118:return 7;case 45:case 46:case 47:return 8;case 37:case 38:return 9;case 39:case 41:case 42:return 10;case 40:return 11}return-1}function kn(e,t,n){var r=te(194,e.pos);return r.left=e,r.operatorToken=t,r.right=n,re(r)}function Sn(e,t){var n=te(202,e.pos);return n.expression=e,n.type=t,re(n)}function Tn(){var e=te(192);return e.operator=M(),L(),e.operand=Pn(),re(e)}function Cn(){var e=te(188);return L(),e.expression=Pn(),re(e)}function En(){var e=te(189);return L(),e.expression=Pn(),re(e)}function Dn(){var e=te(190);return L(),e.expression=Pn(),re(e)}function Nn(){return 121===M()&&(!!w()||q(an))}function An(){var e=te(191);return L(),e.expression=Pn(),re(e)}function wn(){if(On()){var t=Fn();return 40===M()?vn(xn(),t):t}var n=M(),r=Pn();if(40===M()){var a=e.skipTrivia(ii,r.pos);184===r.kind?O(a,r.end-a,e.Diagnostics.A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses):O(a,r.end-a,e.Diagnostics.An_unary_expression_with_the_0_operator_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses,e.tokenToString(n));}return r}function Pn(){switch(M()){case 37:case 38:case 52:case 51:return Tn();case 80:return Cn();case 103:return En();case 105:return Dn();case 27:return Hn();case 121:if(Nn())return An();default:return Fn()}}function On(){switch(M()){case 37:case 38:case 52:case 51:case 80:case 103:case 105:case 121:return!1;case 27:if(1!==ti.languageVariant)return!1;default:return!0}}function Fn(){if(43===M()||44===M())return(n=te(192)).operator=M(),L(),n.operand=In(),re(n);if(1===ti.languageVariant&&27===M()&&q(Te))return Bn(!0);var t=In();if(e.Debug.assert(e.isLeftHandSideExpression(t)),(43===M()||44===M())&&!_i.hasPrecedingLineBreak()){var n=te(193,t.pos);return n.operand=t,n.operator=M(),L(),re(n)}return t}function In(){return Yn(97===M()?Mn():Rn())}function Rn(){return Xn(tr())}function Mn(){var t=Q();if(19===M()||23===M()||21===M())return t;var n=te(179,t.pos);return n.expression=t,Y(23,!1,e.Diagnostics.super_must_be_followed_by_an_argument_list_or_member_access),n.name=We(!0),re(n)}function Ln(e,t){return e.kind===t.kind&&(71===e.kind?e.text===t.text:99===e.kind||e.name.text===t.name.text&&Ln(e.expression,t.expression))}function Bn(t){var n,r=Un(t);if(251===r.kind){var a=te(249,r.pos);a.openingElement=r,a.children=Jn(a.openingElement.tagName),a.closingElement=Wn(t),Ln(a.openingElement.tagName,a.closingElement.tagName)||O(a.closingElement.pos,a.closingElement.end-a.closingElement.pos,e.Diagnostics.Expected_corresponding_JSX_closing_tag_for_0,e.getTextOfNodeFromSourceText(ii,a.openingElement.tagName)),n=re(a);}else e.Debug.assert(250===r.kind),n=r;if(t&&27===M()){var i=$(function(){return Bn(!0)});if(i){P(e.Diagnostics.JSX_expressions_must_have_one_parent_element);var o=te(194,n.pos);return o.end=i.end,o.left=n,o.right=i,o.operatorToken=ae(26,!1,void 0),o.operatorToken.pos=o.operatorToken.end=o.right.pos,o}}return n}function Kn(){var e=te(10,_i.getStartPos());return e.containsOnlyWhiteSpaces=11===ai,ai=_i.scanJsxToken(),re(e)}function jn(){switch(M()){case 10:case 11:return Kn();case 17:return qn(!1);case 27:return Bn(!1)}e.Debug.fail("Unknown JSX child kind "+M());}function Jn(t){var n=ne(),r=ui;for(ui|=16384;;){if(ai=_i.reScanJsxToken(),28===M())break;if(1===M()){O(t.pos,t.end-t.pos,e.Diagnostics.JSX_element_0_has_no_corresponding_closing_tag,e.getTextOfNodeFromSourceText(ii,t));break}if(7===M())break;var a=jn();a&&n.push(a);}return n.end=_i.getTokenPos(),ui=r,n}function zn(){var e=te(254);return e.properties=we(13,$n),re(e)}function Un(e){var t=_i.getStartPos();W(27);var n,r=Vn(),a=zn();return 29===M()?(n=te(251,t),z()):(W(41),e?W(29):(W(29,void 0,!1),z()),n=te(250,t)),n.tagName=r,n.attributes=a,re(n)}function Vn(){J();for(var e=99===M()?Q():ce();H(23);){var t=te(179,e.pos);t.expression=e,t.name=We(!0),e=re(t);}return e}function qn(e){var t=te(256);return W(17),18!==M()&&(t.dotDotDotToken=X(24),t.expression=nn()),e?W(18):(W(18,void 0,!1),z()),re(t)}function $n(){if(17===M())return Gn();J();var e=te(253);if(e.name=ce(),58===M())switch(U()){case 9:e.initializer=Ye();break;default:e.initializer=qn(!0);}return re(e)}function Gn(){var e=te(255);return W(17),W(24),e.expression=en(),W(18),re(e)}function Wn(e){var t=te(252);return W(28),t.tagName=Vn(),e?W(29):(W(29,void 0,!1),z()),re(t)}function Hn(){var e=te(184);return W(27),e.type=Wt(),W(29),e.expression=Pn(),re(e)}function Xn(e){for(;;)if(X(23)){var t=te(179,e.pos);t.expression=e,t.name=We(!0),e=re(t);}else if(51!==M()||_i.hasPrecedingLineBreak())if(A()||!H(21)){if(13!==M()&&14!==M())return e;var n=te(183,e.pos);n.tag=e,n.template=13===M()?Ye():He(),e=re(n);}else{var r=te(180,e.pos);if(r.expression=e,22!==M()&&(r.argumentExpression=v(en),9===r.argumentExpression.kind||8===r.argumentExpression.kind)){var a=r.argumentExpression;a.text=ie(a.text);}W(22),e=re(r);}else{L();var i=te(203,e.pos);i.expression=e,e=re(i);}}function Yn(e){for(;;)if(e=Xn(e),27!==M()){if(19!==M())return e;var t=te(181,e.pos);t.expression=e,t.arguments=Qn(),e=re(t);}else{var n=$(Zn);if(!n)return e;(t=te(181,e.pos)).expression=e,t.typeArguments=n,t.arguments=Qn(),e=re(t);}}function Qn(){W(19);var e=Ve(11,ir);return W(20),e}function Zn(){if(H(27)){var e=Ve(19,Wt);if(W(29))return e&&er()?e:void 0}}function er(){switch(M()){case 19:case 23:case 20:case 22:case 56:case 25:case 55:case 32:case 34:case 33:case 35:case 53:case 54:case 50:case 48:case 49:case 18:case 1:return!0;case 26:case 17:default:return!1}}function tr(){switch(M()){case 8:case 9:case 13:return Ye();case 99:case 97:case 95:case 101:case 86:return Q();case 19:return nr();case 21:return or();case 17:return ur();case 120:if(!q(Ir))break;return lr();case 75:return fa();case 89:return lr();case 94:return dr();case 41:case 63:if(12===K())return Ye();break;case 14:return He()}return se(e.Diagnostics.Expression_expected)}function nr(){var e=te(185);return W(19),e.expression=v(en),W(20),re(e)}function rr(){var e=te(198);return W(24),e.expression=nn(),re(e)}function ar(){return 24===M()?rr():26===M()?te(200):nn()}function ir(){return y(di,ar)}function or(){var e=te(177);return W(21),_i.hasPrecedingLineBreak()&&(e.multiLine=!0),e.elements=Ve(15,ar),W(22),re(e)}function sr(e,t,n){return me(125)?sa(153,e,t,n):me(135)?sa(154,e,t,n):void 0}function cr(){var e=_i.getStartPos();if(X(24)){var t=te(263,e);return t.expression=nn(),u(re(t))}var n=la(),r=_a(),a=sr(e,n,r);if(a)return a;var i=X(39),o=G(),s=_e(),c=X(55);if(i||19===M()||27===M())return ra(e,n,r,i,s,c);if(o&&(26===M()||18===M()||58===M())){var l=te(262,e);l.name=s,l.questionToken=c;var _=X(58);return _&&(l.equalsToken=_,l.objectAssignmentInitializer=v(nn)),u(re(l))}var d=te(261,e);return d.modifiers=r,d.name=s,d.questionToken=c,W(56),d.initializer=v(nn),u(re(d))}function ur(){var e=te(178);return W(17),_i.hasPrecedingLineBreak()&&(e.multiLine=!0),e.properties=Ve(12,cr,!0),W(18),re(e)}function lr(){var t=A();t&&m(!1);var n=te(186);n.modifiers=_a(),W(89),n.asteriskToken=X(39);var r=!!n.asteriskToken,a=!!(256&e.getModifierFlags(n));return n.name=r&&a?C(_r):r?x(_r):a?S(_r):_r(),dt(56,r,a,!1,n),n.body=fr(r,a,!1),t&&m(!0),u(re(n))}function _r(){return G()?se():void 0}function dr(){var e=_i.getStartPos();if(W(94),H(23)){var t=te(204,e);return t.keywordToken=94,t.name=ce(),re(t)}var n=te(182,e);return n.expression=Rn(),n.typeArguments=$(Zn),(n.typeArguments||19===M())&&(n.arguments=Qn()),re(n)}function pr(e,t){var n=te(207);return W(17,t)||e?(_i.hasPrecedingLineBreak()&&(n.multiLine=!0),n.statements=we(1,Jr),W(18)):n.statements=qe(),re(n)}function fr(e,t,n,r){var a=D();f(e);var i=w();g(t);var o=A();o&&m(!1);var s=pr(n,r);return o&&m(!0),f(a),g(i),s}function mr(){var e=te(209);return W(25),re(e)}function gr(){var e=te(211);return W(90),W(19),e.expression=v(en),W(20),e.thenStatement=Jr(),e.elseStatement=H(82)?Jr():void 0,re(e)}function yr(){var e=te(212);return W(81),e.statement=Jr(),W(106),W(19),e.expression=v(en),W(20),H(25),re(e)}function hr(){var e=te(213);return W(106),W(19),e.expression=v(en),W(20),e.statement=Jr(),re(e)}function vr(){var e=I();W(88);var t=X(121);W(19);var n=void 0;25!==M()&&(n=104===M()||110===M()||76===M()?Qr(!0):b(en));var r;if(t?W(142):H(142)){var a=te(216,e);a.awaitModifier=t,a.initializer=n,a.expression=v(nn),W(20),r=a;}else if(H(92)){var i=te(215,e);i.initializer=n,i.expression=v(en),W(20),r=i;}else{var o=te(214,e);o.initializer=n,W(25),25!==M()&&20!==M()&&(o.condition=v(en)),W(25),20!==M()&&(o.incrementor=v(en)),W(20),r=o;}return r.statement=Jr(),re(r)}function br(e){var t=te(e);return W(218===e?72:77),Z()||(t.label=se()),ee(),re(t)}function xr(){var e=te(219);return W(96),Z()||(e.expression=v(en)),ee(),re(e)}function kr(){var e=te(220);return W(107),W(19),e.expression=v(en),W(20),e.statement=Jr(),re(e)}function Sr(){var e=te(257);return W(73),e.expression=v(en),W(56),e.statements=we(3,Jr),re(e)}function Tr(){var e=te(258);return W(79),W(56),e.statements=we(3,Jr),re(e)}function Cr(){return 73===M()?Sr():Tr()}function Er(){var e=te(221);W(98),W(19),e.expression=v(en),W(20);var t=te(235,_i.getStartPos());return W(17),t.clauses=we(2,Cr),W(18),e.caseBlock=re(t),re(e)}function Dr(){var e=te(223);return W(100),e.expression=_i.hasPrecedingLineBreak()?void 0:v(en),ee(),re(e)}function Nr(){var e=te(224);return W(102),e.tryBlock=pr(!1),e.catchClause=74===M()?Ar():void 0,e.catchClause&&87!==M()||(W(87),e.finallyBlock=pr(!1)),re(e)}function Ar(){var e=te(260);return W(74),W(19)&&(e.variableDeclaration=Yr()),W(20),e.block=pr(!1),re(e)}function wr(){var e=te(225);return W(78),ee(),re(e)}function Pr(){var e=_i.getStartPos(),t=v(en);if(71===t.kind&&H(56)){var n=te(222,e);return n.label=t,n.statement=Jr(),u(re(n))}var r=te(210,e);return r.expression=t,ee(),u(re(r))}function Or(){return L(),e.tokenIsIdentifierOrKeyword(M())&&!_i.hasPrecedingLineBreak()}function Fr(){return L(),75===M()&&!_i.hasPrecedingLineBreak()}function Ir(){return L(),89===M()&&!_i.hasPrecedingLineBreak()}function Rr(){return L(),(e.tokenIsIdentifierOrKeyword(M())||8===M())&&!_i.hasPrecedingLineBreak()}function Mr(){for(;;)switch(M()){case 104:case 110:case 76:case 89:case 75:case 83:return!0;case 109:case 138:return an();case 128:case 129:return Ur();case 117:case 120:case 124:case 112:case 113:case 114:case 131:if(L(),_i.hasPrecedingLineBreak())return!1;continue;case 141:return L(),17===M()||71===M()||84===M();case 91:return L(),9===M()||39===M()||17===M()||e.tokenIsIdentifierOrKeyword(M());case 84:if(L(),58===M()||39===M()||17===M()||79===M()||118===M())return!0;continue;case 115:L();continue;default:return!1}}function Lr(){return q(Mr)}function Br(){switch(M()){case 57:case 25:case 17:case 104:case 110:case 89:case 75:case 83:case 90:case 81:case 106:case 88:case 77:case 72:case 96:case 107:case 98:case 100:case 102:case 78:case 74:case 87:return!0;case 76:case 84:case 91:return Lr();case 120:case 124:case 109:case 128:case 129:case 138:case 141:return!0;case 114:case 112:case 113:case 115:case 131:return Lr()||!q(Or);default:return Qt()}}function Kr(){return L(),G()||17===M()||21===M()}function jr(){return q(Kr)}function Jr(){switch(M()){case 25:return mr();case 17:return pr(!1);case 104:return ea(_i.getStartPos(),void 0,void 0);case 110:if(jr())return ea(_i.getStartPos(),void 0,void 0);break;case 89:return ta(_i.getStartPos(),void 0,void 0);case 75:return ma(_i.getStartPos(),void 0,void 0);case 90:return gr();case 81:return yr();case 106:return hr();case 88:return vr();case 77:return br(217);case 72:return br(218);case 96:return xr();case 107:return kr();case 98:return Er();case 100:return Dr();case 102:case 74:case 87:return Nr();case 78:return wr();case 57:return zr();case 120:case 109:case 138:case 128:case 129:case 124:case 76:case 83:case 84:case 91:case 112:case 113:case 114:case 117:case 115:case 131:case 141:if(Lr())return zr()}return Pr()}function zr(){var t=I(),n=la(),r=_a();switch(M()){case 104:case 110:case 76:return ea(t,n,r);case 89:return ta(t,n,r);case 75:return ma(t,n,r);case 109:return Ta(t,n,r);case 138:return Ca(t,n,r);case 83:return Da(t,n,r);case 141:case 128:case 129:return Pa(t,n,r);case 91:return Ma(t,n,r);case 84:switch(L(),M()){case 79:case 58:return Wa(t,n,r);case 118:return Ra(t,n,r);default:return Ga(t,n,r)}default:if(n||r){var a=ae(247,!0,e.Diagnostics.Declaration_expected);return a.pos=t,a.decorators=n,a.modifiers=r,re(a)}}}function Ur(){return L(),!_i.hasPrecedingLineBreak()&&(G()||9===M())}function Vr(e,t,n){return 17!==M()&&Z()?void ee():fr(e,t,!1,n)}function qr(){if(26===M())return te(200);var e=te(176);return e.dotDotDotToken=X(24),e.name=Xr(),e.initializer=lt(!1),re(e)}function $r(){var e=te(176);e.dotDotDotToken=X(24);var t=G(),n=_e();return t&&56!==M()?e.name=n:(W(56),e.propertyName=n,e.name=Xr()),e.initializer=lt(!1),re(e)}function Gr(){var e=te(174);return W(17),e.elements=Ve(9,$r),W(18),re(e)}function Wr(){var e=te(175);return W(21),e.elements=Ve(10,qr),W(22),re(e)}function Hr(){return 17===M()||21===M()||G()}function Xr(){return 21===M()?Wr():17===M()?Gr():se()}function Yr(){var e=te(226);return e.name=Xr(),e.type=Xt(),hn(M())||(e.initializer=tn(!1)),re(e)}function Qr(t){var n=te(227);switch(M()){case 104:break;case 110:n.flags|=1;break;case 76:n.flags|=2;break;default:e.Debug.fail();}if(L(),142===M()&&q(Zr))n.declarations=qe();else{var r=N();p(t),n.declarations=Ve(8,Yr),p(r);}return re(n)}function Zr(){return Se()&&20===L()}function ea(e,t,n){var r=te(208,e);return r.decorators=t,r.modifiers=n,r.declarationList=Qr(!1),ee(),u(re(r))}function ta(t,n,r){var a=te(228,t);a.decorators=n,a.modifiers=r,W(89),a.asteriskToken=X(39),a.name=e.hasModifier(a,512)?_r():se();var i=!!a.asteriskToken,o=e.hasModifier(a,256);return dt(56,i,o,!1,a),a.body=Vr(i,o,e.Diagnostics.or_expected),u(re(a))}function na(t,n,r){var a=te(152,t);return a.decorators=n,a.modifiers=r,W(123),dt(56,!1,!1,!1,a),a.body=Vr(!1,!1,e.Diagnostics.or_expected),u(re(a))}function ra(t,n,r,a,i,o,s){var c=te(151,t);c.decorators=n,c.modifiers=r,c.asteriskToken=a,c.name=i,c.questionToken=o;var l=!!a,_=e.hasModifier(c,256);return dt(56,l,_,!1,c),c.body=Vr(l,_,s),u(re(c))}function aa(t,n,r,a,i){var o=te(149,t);return o.decorators=n,o.modifiers=r,o.name=a,o.questionToken=i,o.type=Xt(),o.initializer=e.hasModifier(o,32)?v(oa):y(6144,oa),ee(),u(re(o))}function ia(t,n,r){var a=X(39),i=_e(),o=X(55);return a||19===M()||27===M()?ra(t,n,r,a,i,o,e.Diagnostics.or_expected):aa(t,n,r,i,o)}function oa(){return tn(!1)}function sa(e,t,n,r){var a=te(e,t);return a.decorators=n,a.modifiers=r,a.name=_e(),dt(56,!1,!1,!1,a),a.body=Vr(!1,!1),u(re(a))}function ca(e){switch(e){case 114:case 112:case 113:case 115:case 131:return!0;default:return!1}}function ua(){var t;if(57===M())return!0;for(;e.isModifierKind(M());){if(t=M(),ca(t))return!0;L();}if(39===M())return!0;if(ue()&&(t=M(),L()),21===M())return!0;if(void 0!==t){if(!e.isKeyword(t)||135===t||125===t)return!0;switch(M()){case 19:case 27:case 56:case 58:case 55:return!0;default:return Z()}}return!1}function la(){for(var e;;){var t=I();if(!H(57))break;var n=te(147,t);n.expression=k(In),re(n),e?e.push(n):e=ne([n],t);}return e&&(e.end=R()),e}function _a(e){for(var t;;){var n=_i.getStartPos(),r=M();if(76===M()&&e){if(!$(ge))break}else if(!he())break;var a=re(te(r,n));t?t.push(a):t=ne([a],n);}return t&&(t.end=_i.getStartPos()),t}function da(){var e;if(120===M()){var t=_i.getStartPos(),n=M();L(),(e=ne([re(te(n,t))],t)).end=_i.getStartPos();}return e}function pa(){if(25===M()){var t=te(206);return L(),re(t)}var n=I(),r=la(),a=_a(!0),i=sr(n,r,a);return i||(123===M()?na(n,r,a):gt()?ht(n,r,a):e.tokenIsIdentifierOrKeyword(M())||9===M()||8===M()||39===M()||21===M()?ia(n,r,a):r||a?aa(n,r,a,ae(71,!0,e.Diagnostics.Declaration_expected),void 0):void e.Debug.fail("Should not have attempted to parse class member declaration."))}function fa(){return ga(_i.getStartPos(),void 0,void 0,199)}function ma(e,t,n){return ga(e,t,n,229)}function ga(e,t,n,r){var a=te(r,e);return a.decorators=t,a.modifiers=n,W(75),a.name=ya(),a.typeParameters=ot(),a.heritageClauses=va(),W(17)?(a.members=Sa(),W(18)):a.members=qe(),u(re(a))}function ya(){return G()&&!ha()?se():void 0}function ha(){return 108===M()&&q(Te)}function va(){if(ka())return we(21,ba)}function ba(){var e=M();if(85===e||108===e){var t=te(259);return t.token=e,L(),t.types=Ve(7,xa),re(t)}}function xa(){var e=te(201);return e.expression=In(),27===M()&&(e.typeArguments=$e(19,Wt,27,29)),re(e)}function ka(){return 85===M()||108===M()}function Sa(){return we(5,pa)}function Ta(e,t,n){var r=te(230,e);return r.decorators=t,r.modifiers=n,W(109),r.name=se(),r.typeParameters=ot(),r.heritageClauses=va(),r.members=Tt(),u(re(r))}function Ca(e,t,n){var r=te(231,e);return r.decorators=t,r.modifiers=n,W(138),r.name=se(),r.typeParameters=ot(),W(58),r.type=Wt(),ee(),u(re(r))}function Ea(){var e=te(264,_i.getStartPos());return e.name=_e(),e.initializer=v(oa),u(re(e))}function Da(e,t,n){var r=te(232,e);return r.decorators=t,r.modifiers=n,W(83),r.name=se(),W(17)?(r.members=Ve(6,Ea),W(18)):r.members=qe(),u(re(r))}function Na(){var e=te(234,_i.getStartPos());return W(17)?(e.statements=we(1,Jr),W(18)):e.statements=qe(),re(e)}function Aa(e,t,n,r){var a=te(233,e),i=16&r;return a.decorators=t,a.modifiers=n,a.flags|=r,a.name=se(),a.body=H(23)?Aa(I(),void 0,void 0,4|i):Na(),u(re(a))}function wa(e,t,n){var r=te(233,e);return r.decorators=t,r.modifiers=n,141===M()?(r.name=se(),r.flags|=512):r.name=Ye(!0),17===M()?r.body=Na():ee(),re(r)}function Pa(e,t,n){var r=0;if(141===M())return wa(e,t,n);if(H(129))r|=16;else if(W(128),9===M())return wa(e,t,n);return Aa(e,t,n,r)}function Oa(){return 132===M()&&q(Fa)}function Fa(){return 19===L()}function Ia(){return 41===L()}function Ra(e,t,n){var r=te(236,e);return r.decorators=t,r.modifiers=n,W(118),W(129),r.name=se(),ee(),re(r)}function Ma(e,t,n){W(91);var r,a=_i.getStartPos();if(G()&&(r=se(),26!==M()&&140!==M()))return La(e,t,n,r);var i=te(238,e);return i.decorators=t,i.modifiers=n,(r||39===M()||17===M())&&(i.importClause=Ba(r,a),W(140)),i.moduleSpecifier=Ja(),ee(),re(i)}function La(e,t,n,r){var a=te(237,e);return a.decorators=t,a.modifiers=n,a.name=r,W(58),a.moduleReference=Ka(),ee(),u(re(a))}function Ba(e,t){var n=te(239,t);return e&&(n.name=e),n.name&&!H(26)||(n.namedBindings=39===M()?za():Ua(241)),re(n)}function Ka(){return Oa()?ja():Ge(!1)}function ja(){var e=te(248);return W(132),W(19),e.expression=Ja(),W(20),re(e)}function Ja(){if(9===M()){var e=Ye();return ie(e.text),e}return en()}function za(){var e=te(240);return W(39),W(118),e.name=se(),re(e)}function Ua(e){var t=te(e);return t.elements=$e(22,241===e?qa:Va,17,18),re(t)}function Va(){return $a(246)}function qa(){return $a(242)}function $a(t){var n=te(t),r=e.isKeyword(M())&&!G(),a=_i.getTokenPos(),i=_i.getTextPos(),o=ce();return 118===M()?(n.propertyName=o,W(118),r=e.isKeyword(M())&&!G(),a=_i.getTokenPos(),i=_i.getTextPos(),n.name=ce()):n.name=o,242===t&&r&&O(a,i-a,e.Diagnostics.Identifier_expected),re(n)}function Ga(e,t,n){var r=te(244,e);return r.decorators=t,r.modifiers=n,H(39)?(W(140),r.moduleSpecifier=Ja()):(r.exportClause=Ua(245),(140===M()||9===M()&&!_i.hasPrecedingLineBreak())&&(W(140),r.moduleSpecifier=Ja())),ee(),re(r)}function Wa(e,t,n){var r=te(243,e);return r.decorators=t,r.modifiers=n,H(58)?r.isExportEquals=!0:W(79),r.expression=nn(),ee(),re(r)}function Ha(t){for(var n,r=e.createScanner(t.languageVersion,!1,0,ii),a=[],i=[],o=[],s=void 0;;){var c=r.scan();if(2!==c){if(e.isTrivia(c))continue;break}var u={kind:r.getToken(),pos:r.getTokenPos(),end:r.getTextPos()},l=ii.substring(u.pos,u.end),_=e.getFileReferenceFromReferencePath(l,u);if(_){var d=_.fileReference;t.hasNoDefaultLib=_.isNoDefaultLib;var p=_.diagnosticMessage;d&&(_.isTypeReferenceDirective?i.push(d):a.push(d)),p&&ni.push(e.createFileDiagnostic(t,u.pos,u.end-u.pos,p));}else{var f=/^\/\/\/\s*".length-n,e.Diagnostics.Type_argument_list_cannot_be_empty)}}function b(e){var t=te(143,e.pos);return t.left=e,t.right=ce(),re(t)}function x(){var e=te(275);return e.literal=St(),re(e)}function k(){var e=te(274);return L(),e.type=c(),re(e)}function S(){var e=te(272);return L(),e.types=Ve(26,c),T(e.types),W(22),re(e)}function T(t){0===ni.length&&t.hasTrailingComma&&O(t.end-",".length,",".length,e.Diagnostics.Trailing_comma_not_allowed);}function C(){var e=te(271);return L(),e.types=E(c()),W(20),re(e)}function E(t){e.Debug.assert(!!t);for(var n=ne([t],t.pos);H(49);)n.push(c());return n.end=_i.getStartPos(),n}function D(){var e=te(268);return L(),re(e)}function N(){var e=te(293);return e.literal=Ot(),re(e)}function A(){var e=_i.getStartPos();if(L(),26===M()||18===M()||20===M()||29===M()||58===M()||49===M())return re(t=te(269,e));var t=te(273,e);return t.type=c(),re(t)}function w(e,t,n){o(e,5,void 0,1),ti={languageVariant:0,text:e};var r=I(t,n),a=ni;return s(),r?{jsDoc:r,diagnostics:a}:void 0}function F(e,t,n){var r=ai,a=ni.length,i=pi,o=I(t,n);return o&&(o.parent=e),ai=r,ni.length=a,pi=i,o}function I(t,n){function r(e){for(;e.length&&("\n"===e[0]||"\r"===e[0]);)e.shift();}function i(e){for(;e.length&&("\n"===e[e.length-1]||"\r"===e[e.length-1]);)e.pop();}function o(){var e=te(283,t);return e.tags=E,e.comment=N.length?N.join(""):void 0,re(e,C)}function s(){for(;5===M()||4===M();)x();}function c(t){e.Debug.assert(57===M());var n=te(57,_i.getTokenPos());n.end=_i.getTextPos(),x();var r=k();if(s(),r){var a;if(r)switch(r.text){case"augments":a=y(n,r);break;case"param":a=p(n,r);break;case"return":case"returns":a=f(n,r);break;case"template":a=b(n,r);break;case"type":a=m(n,r);break;case"typedef":a=h(n,r);break;default:a=l(n,r);}else a=l(n,r);a&&_(a,u(t+a.end-a.pos));}}function u(e){function t(t){n||(n=e),a.push(t),e+=t.length;}for(var n,a=[],o=0;57!==M()&&1!==M();){switch(M()){case 4:o>=1&&(o=0,a.push(_i.getTokenText())),e=0;break;case 57:break;case 5:if(2===o)t(_i.getTokenText());else{var s=_i.getTokenText();void 0!==n&&e+s.length>n&&a.push(s.slice(n-e-1)),e+=s.length;}break;case 39:if(0===o){o=1,e+=_i.getTokenText().length;break}default:o=2,t(_i.getTokenText());}if(57===M())break;x();}return r(a),i(a),a}function l(e,t){var n=te(284,e.pos);return n.atToken=e,n.tagName=t,re(n)}function _(e,t){e.comment=t.join(""),E?E.push(e):E=ne([e],e.pos),E.end=e.end;}function d(){return $(function(){if(s(),17===M())return a()})}function p(t,n){var r=d();s();var a,i;if(X(21)?(a=k(),s(),i=!0,X(58)&&en(),W(22)):e.tokenIsIdentifierOrKeyword(M())&&(a=k()),a){var o,c;r?c=a:o=a,r||(r=d());var u=te(286,t.pos);return u.atToken=t,u.tagName=n,u.preParameterName=o,u.typeExpression=r,u.postParameterName=c,u.parameterName=c||o,u.isBracketed=i,re(u)}O(_i.getStartPos(),0,e.Diagnostics.Identifier_expected);}function f(t,n){e.forEach(E,function(e){return 287===e.kind})&&O(n.pos,_i.getTokenPos()-n.pos,e.Diagnostics._0_tag_already_specified,n.text);var r=te(287,t.pos);return r.atToken=t,r.tagName=n,r.typeExpression=d(),re(r)}function m(t,n){e.forEach(E,function(e){return 288===e.kind})&&O(n.pos,_i.getTokenPos()-n.pos,e.Diagnostics._0_tag_already_specified,n.text);var r=te(288,t.pos);return r.atToken=t,r.tagName=n,r.typeExpression=d(),re(r)}function g(t,n){var r=d();s();var a=k();s();if(a){var i=te(291,t.pos);return i.atToken=t,i.tagName=n,i.name=a,i.typeExpression=r,re(i)}O(_i.getStartPos(),0,e.Diagnostics.Identifier_expected);}function y(e,t){var n=d(),r=te(285,e.pos);return r.atToken=e,r.tagName=t,r.typeExpression=n,re(r)}function h(e,t){function n(){for(var e=te(292,_i.getStartPos()),t=_i.getStartPos(),n=!0,r=!1,a=!1;1!==M()&&!a;)switch(x(),M()){case 57:n&&((a=!v(e))||(t=_i.getStartPos())),r=!1;break;case 4:t=_i.getStartPos()-1,n=!0,r=!1;break;case 39:r&&(n=!1),r=!0;break;case 71:n=!1;}return _i.setTextPos(t),re(e)}function r(e){var t=_i.getTokenPos(),n=k();if(n&&H(23)){var a=te(233,t);return a.flags|=e,a.name=n,a.body=r(4),a}return n&&4&e&&(n.isInJSDocNamespace=!0),n}var a=d();s();var i=te(290,e.pos);if(i.atToken=e,i.tagName=t,i.fullName=r(0),i.fullName)for(var o=i.fullName;;){if(71===o.kind||!o.body){i.name=71===o.kind?o:o.name;break}o=o.body;}if(i.typeExpression=a,s(),a){if(277===a.type.kind){var c=a.type;71===c.name.kind&&"Object"===c.name.text&&(i.jsDocTypeLiteral=n());}i.jsDocTypeLiteral||(i.jsDocTypeLiteral=a.type);}else i.jsDocTypeLiteral=n();return re(i)}function v(t){e.Debug.assert(57===M());var n=te(57,_i.getStartPos());n.end=_i.getTextPos(),x();var r=k();if(s(),!r)return!1;switch(r.text){case"type":return!t.jsDocTypeTag&&(t.jsDocTypeTag=m(n,r),!0);case"prop":case"property":var a=g(n,r);return!!a&&(t.jsDocPropertyTags||(t.jsDocPropertyTags=[]),t.jsDocPropertyTags.push(a),!0)}return!1}function b(t,n){e.forEach(E,function(e){return 289===e.kind})&&O(n.pos,_i.getTokenPos()-n.pos,e.Diagnostics._0_tag_already_specified,n.text);for(var r=ne();;){var a=k();if(s(),!a)return void O(_i.getStartPos(),0,e.Diagnostics.Identifier_expected);var i=te(145,a.pos);if(i.name=a,re(i),r.push(i),26!==M())break;x(),s();}var o=te(289,t.pos);return o.atToken=t,o.tagName=n,o.typeParameters=r,re(o),r.end=o.end,o}function x(){return ai=_i.scanJSDocToken()}function k(){return S(e.tokenIsIdentifierOrKeyword(M()))}function S(t){if(t){var n=_i.getTokenPos(),r=_i.getTextPos(),a=te(71,n);return a.text=T.substring(n,r),re(a,r),x(),a}P(e.Diagnostics.Identifier_expected);}var T=ii;t=t||0;var C=void 0===n?T.length:t+n;n=C-t,e.Debug.assert(t>=0),e.Debug.assert(t<=C),e.Debug.assert(C<=T.length);var E,D,N=[];return function(e,t){return 47===e.charCodeAt(t)&&42===e.charCodeAt(t+1)&&42===e.charCodeAt(t+2)&&42!==e.charCodeAt(t+3)}(T,t)?(_i.scanRange(t+3,n-5,function(){function e(e){s||(s=u),N.push(e),u+=e.length;}var n=!0,a=1,s=void 0,u=t-Math.max(T.lastIndexOf("\n",t),0)+4;for(x();5===M();)x();for(4===M()&&(a=0,u=0,x());1!==M();){switch(M()){case 57:0===a||1===a?(i(N),c(u),a=0,n=!1,s=void 0,u++):e(_i.getTokenText());break;case 4:N.push(_i.getTokenText()),a=0,u=0;break;case 39:var l=_i.getTokenText();1===a||2===a?(a=2,e(l)):(a=1,u+=l.length);break;case 71:e(_i.getTokenText()),a=2;break;case 5:var _=_i.getTokenText();2===a?N.push(_):void 0!==s&&u+_.length>s&&N.push(_.slice(s-u-1)),u+=_.length;break;case 1:break;default:a=2,e(_i.getTokenText());}n?x():n=!0;}r(N),i(N),D=o();}),D):D}t.isJSDocType=n,t.parseJSDocTypeExpressionForTests=r,t.parseJSDocTypeExpression=a,t.parseIsolatedJSDocComment=w,t.parseJSDocComment=F;var R;!function(e){e[e.BeginningOfLine=0]="BeginningOfLine",e[e.SawAsterisk=1]="SawAsterisk",e[e.SavingComments=2]="SavingComments";}(R||(R={})),t.parseJSDocCommentWorker=I;}(gi=t.JSDocParser||(t.JSDocParser={}));}(g||(g={}));var y;!function(t){function n(t,n,r,a){if(a=a||e.Debug.shouldAssert(2),_(t,n,r,a),e.textChangeRangeIsUnchanged(r))return t;if(0===t.statements.length)return g.parseSourceFile(t.fileName,n,t.languageVersion,void 0,!0,t.scriptKind);var i=t;e.Debug.assert(!i.hasBeenIncrementallyParsed),i.hasBeenIncrementallyParsed=!0;var o=t.text,s=d(t),l=u(t,r);_(t,n,l,a),e.Debug.assert(l.span.start<=r.span.start),e.Debug.assert(e.textSpanEnd(l.span)===e.textSpanEnd(r.span)),e.Debug.assert(e.textSpanEnd(e.textChangeRangeNewSpan(l))===e.textSpanEnd(e.textChangeRangeNewSpan(r)));var p=e.textChangeRangeNewSpan(l).length-l.span.length;return c(i,l.span.start,e.textSpanEnd(l.span),e.textSpanEnd(e.textChangeRangeNewSpan(l)),p,o,n,a),g.parseSourceFile(t.fileName,n,t.languageVersion,s,!0,t.scriptKind)}function r(t,n,r,o,c,u){function l(t){var n="";if(u&&a(t)&&(n=o.substring(t.pos,t.end)),t._children&&(t._children=void 0),t.pos+=r,t.end+=r,u&&a(t)&&e.Debug.assert(n===c.substring(t.pos,t.end)),i(t,l,_),t.jsDoc)for(var d=0,p=t.jsDoc;d=n,"Adjusting an element that was entirely before the change range"),e.Debug.assert(t.pos<=r,"Adjusting an element that was entirely after the change range"),e.Debug.assert(t.pos<=t.end),t.pos=Math.min(t.pos,a),t.end>=r?t.end+=i:t.end=Math.min(t.end,a),e.Debug.assert(t.pos<=t.end),t.parent&&(e.Debug.assert(t.pos>=t.parent.pos),e.Debug.assert(t.end<=t.parent.end));}function s(t,n){if(n){var r=t.pos;i(t,function(t){e.Debug.assert(t.pos>=r),r=t.end;}),e.Debug.assert(r<=t.end);}}function c(t,n,a,c,u,l,_,d){function p(t){if(e.Debug.assert(t.pos<=t.end),t.pos>a)r(t,!1,u,l,_,d);else{var m=t.end;if(m>=n)return t.intersectsChange=!0,t._children=void 0,o(t,n,a,c,u),i(t,p,f),void s(t,d);e.Debug.assert(ma)r(t,!0,u,l,_,d);else{var i=t.end;if(i>=n){t.intersectsChange=!0,t._children=void 0,o(t,n,a,c,u);for(var s=0,f=t;s0&&a<=1;a++){var i=l(t,r);e.Debug.assert(i.pos<=r);var o=i.pos;r=Math.max(0,o-1);}var s=e.createTextSpanFromBounds(r,e.textSpanEnd(n.span)),c=n.newLength+(n.span.start-r);return e.createTextChangeRange(s,c)}function l(t,n){function r(t){var n=void 0;return i(t,function(t){e.nodeIsPresent(t)&&(n=t);}),n}function a(t){if(!e.nodeIsMissing(t))return t.pos<=n?(t.pos>=s.pos&&(s=t),nn),!0)}var o,s=t;if(i(t,a),o){var c=function(e){for(;;){var t=r(e);if(!t)return e;e=t;}}(o);c.pos>s.pos&&(s=c);}return s}function _(t,n,r,a){var i=t.text;if(r&&(e.Debug.assert(i.length-r.span.length+r.newLength===n.length),a||e.Debug.shouldAssert(3))){var o=i.substr(0,r.span.start),s=n.substr(0,r.span.start);e.Debug.assert(o===s);var c=i.substring(e.textSpanEnd(r.span),i.length),u=n.substring(e.textSpanEnd(e.textChangeRangeNewSpan(r)),n.length);e.Debug.assert(c===u);}}function d(t){function n(e){function n(t){return e>=t.pos&&e=t.pos&&e=158&&e<=173)return-3;switch(e){case 181:case 182:case 177:return 537396545;case 233:return 574674241;case 146:return 536872257;case 187:return 601249089;case 186:case 228:return 601281857;case 227:return 546309441;case 229:case 199:return 539358529;case 152:return 601015617;case 151:case 153:case 154:return 601015617;case 119:case 133:case 130:case 136:case 134:case 122:case 137:case 105:case 145:case 148:case 150:case 155:case 156:case 157:case 230:case 231:return-3;case 178:return 540087617;case 260:return 537920833;case 174:case 175:return 537396545;default:return 536872257}}!function(e){e[e.NonInstantiated=0]="NonInstantiated",e[e.Instantiated=1]="Instantiated",e[e.ConstEnumOnly=2]="ConstEnumOnly";}(e.ModuleInstanceState||(e.ModuleInstanceState={})),e.getModuleInstanceState=t;var O;!function(e){e[e.None=0]="None",e[e.IsContainer=1]="IsContainer",e[e.IsBlockScopedContainer=2]="IsBlockScopedContainer",e[e.IsControlFlowContainer=4]="IsControlFlowContainer",e[e.IsFunctionLike=8]="IsFunctionLike",e[e.IsFunctionExpression=16]="IsFunctionExpression",e[e.HasLocals=32]="HasLocals",e[e.IsInterface=64]="IsInterface",e[e.IsObjectLiteralOrClassExpressionMethod=128]="IsObjectLiteralOrClassExpressionMethod";}(O||(O={}));var F=function(){function n(t,n){Et=t,Dt=n,Nt=e.getEmitScriptTarget(Dt),Vt=a(Et,n),$t=e.createMap(),Wt=0,Gt=e.isDeclarationFile(Et),qt=e.objectAllocator.getSymbolConstructor(),Et.locals||($e(Et),Et.symbolCount=Wt,Et.classifiableNames=$t),Et=void 0,Dt=void 0,Nt=void 0,At=void 0,wt=void 0,Pt=void 0,Ot=void 0,Ft=!1,It=void 0,Rt=void 0,Mt=void 0,Lt=void 0,Bt=void 0,Kt=void 0,Jt=void 0,zt=!1,Ut=0,Yt=0;}function a(t,n){return!((void 0===n.alwaysStrict?!n.strict:!n.alwaysStrict)||e.isDeclarationFile(t))||!!t.externalModuleIndicator}function i(e,t){return Wt++,new qt(e,t)}function o(t,n,r){if(t.flags|=r,n.symbol=t,t.declarations||(t.declarations=[]),t.declarations.push(n),1952&r&&!t.exports&&(t.exports=e.createMap()),6240&r&&!t.members&&(t.members=e.createMap()),107455&r){var a=t.valueDeclaration;(!a||a.kind!==n.kind&&233===a.kind)&&(t.valueDeclaration=n);}}function s(t){if(t.name){if(e.isAmbientModule(t))return e.isGlobalScopeAugmentation(t)?"__global":'"'+t.name.text+'"';if(144===t.name.kind){var n=t.name.expression;return e.isStringOrNumericLiteral(n)?n.text:(e.Debug.assert(e.isWellKnownSymbolSyntactically(n)),e.getPropertyNameForKnownSymbolName(n.name.text))}return t.name.text}switch(t.kind){case 152:return"__constructor";case 160:case 155:return"__call";case 161:case 156:return"__new";case 157:return"__index";case 244:return"__export";case 243:return t.isExportEquals?"export=":"default";case 194:switch(e.getSpecialPropertyAssignmentKind(t)){case 2:return"export=";case 1:case 4:case 5:return t.left.name.text;case 3:return t.left.expression.name.text}e.Debug.fail("Unknown binary declaration kind");break;case 228:case 229:return e.hasModifier(t,512)?"default":void 0;case 279:return e.isJSDocConstructSignature(t)?"__new":"__call";case 146:e.Debug.assert(279===t.parent.kind);var r=t.parent;return"arg"+e.indexOf(r.parameters,t);case 290:var a=t.parent&&t.parent.parent,i=void 0;if(a&&208===a.kind&&a.declarationList.declarations.length>0){var o=a.declarationList.declarations[0].name;71===o.kind&&(i=o.text);}return i}}function c(t){return t.name?e.declarationNameToString(t.name):s(t)}function u(t,n,r,a,u){e.Debug.assert(!e.hasDynamicName(r));var l,_=e.hasModifier(r,512),d=_&&n?"default":s(r);if(void 0===d)l=i(0,"__missing");else if((l=t.get(d))||t.set(d,l=i(0,d)),d&&788448&a&&$t.set(d,d),l.flags&u)if(l.isReplaceableByMethod)t.set(d,l=i(0,d));else{r.name&&(r.name.parent=r);var p=2&l.flags?e.Diagnostics.Cannot_redeclare_block_scoped_variable_0:e.Diagnostics.Duplicate_identifier_0;l.declarations&&l.declarations.length&&(_?p=e.Diagnostics.A_module_cannot_have_multiple_default_exports:l.declarations&&l.declarations.length&&(_||243===r.kind&&!r.isExportEquals)&&(p=e.Diagnostics.A_module_cannot_have_multiple_default_exports)),e.forEach(l.declarations,function(t){Et.bindDiagnostics.push(e.createDiagnosticForNode(t.name||t,p,c(t)));}),Et.bindDiagnostics.push(e.createDiagnosticForNode(r.name||r,p,c(r))),l=i(0,d);}return o(l,r,a),l.parent=n,l}function l(t,n,r){var a=1&e.getCombinedModifierFlags(t);if(8388608&n)return 246===t.kind||237===t.kind&&a?u(wt.symbol.exports,wt.symbol,t,n,r):u(wt.locals,void 0,t,n,r);var i=290===t.kind&&t.name&&71===t.name.kind&&t.name.isInJSDocNamespace;if(!e.isAmbientModule(t)&&(a||32&wt.flags)||i){var o=(107455&n?1048576:0)|(793064&n?2097152:0)|(1920&n?4194304:0),s=u(wt.locals,void 0,t,o,r);return s.exportSymbol=u(wt.symbol.exports,wt.symbol,t,n,r),t.localSymbol=s,s}return u(wt.locals,void 0,t,n,r)}function _(t,n){var r=wt,a=Pt;if(1&n?(wt=Pt=t,32&n&&(wt.locals=e.createMap()),pe(wt)):2&n&&((Pt=t).locals=void 0),4&n){var i=It,o=Rt,s=Mt,c=Lt,u=Jt,l=zt,_=16&n&&!e.hasModifier(t,256)&&!!e.getImmediatelyInvokedFunctionExpression(t);_?Lt=k():(It={flags:2},144&n&&(It.container=t),Lt=void 0),Rt=void 0,Mt=void 0,Jt=void 0,zt=!1,d(t),t.flags&=-1409,!(1&It.flags)&&8&n&&e.nodeIsPresent(t.body)&&(t.flags|=128,zt&&(t.flags|=256)),265===t.kind&&(t.flags|=Ut),_?(C(Lt,It),It=w(Lt)):It=i,Rt=o,Mt=s,Lt=c,Jt=u,zt=l;}else 64&n?(Ft=!1,d(t),t.flags=Ft?64|t.flags:-65&t.flags):d(t);wt=r,Pt=a;}function d(e){if(Gt)m(e);else if(536870912&e.transformFlags)Gt=!0,m(e),Gt=!1,Yt|=e.transformFlags&~P(e.kind);else{var t=Yt;Yt=0,m(e),Yt=t|r(e,Yt);}}function p(t){if(void 0!==t)if(Gt)e.forEach(t,$e);else{var n=Yt;Yt=0;for(var r=0,a=0,i=t;a=108&&t.originalKeywordKind<=116&&!e.isIdentifierName(t)&&!e.isInAmbientContext(t)&&(Et.parseDiagnostics.length||Et.bindDiagnostics.push(e.createDiagnosticForNode(t,we(t),e.declarationNameToString(t))));}function we(t){return e.getContainingClass(t)?e.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode:Et.externalModuleIndicator?e.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode_Modules_are_automatically_in_strict_mode:e.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode}function Pe(t){Vt&&e.isLeftHandSideExpression(t.left)&&e.isAssignmentOperator(t.operatorToken.kind)&&Re(t,t.left);}function Oe(e){Vt&&e.variableDeclaration&&Re(e,e.variableDeclaration.name);}function Fe(t){if(Vt&&71===t.expression.kind){var n=e.getErrorSpanForNode(Et,t.expression);Et.bindDiagnostics.push(e.createFileDiagnostic(Et,n.start,n.length,e.Diagnostics.delete_cannot_be_called_on_an_identifier_in_strict_mode));}}function Ie(e){return 71===e.kind&&("eval"===e.text||"arguments"===e.text)}function Re(t,n){if(n&&71===n.kind){var r=n;if(Ie(r)){var a=e.getErrorSpanForNode(Et,n);Et.bindDiagnostics.push(e.createFileDiagnostic(Et,a.start,a.length,Me(t),r.text));}}}function Me(t){return e.getContainingClass(t)?e.Diagnostics.Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode:Et.externalModuleIndicator?e.Diagnostics.Invalid_use_of_0_Modules_are_automatically_in_strict_mode:e.Diagnostics.Invalid_use_of_0_in_strict_mode}function Le(e){Vt&&Re(e,e.name);}function Be(t){return e.getContainingClass(t)?e.Diagnostics.Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5_Class_definitions_are_automatically_in_strict_mode:Et.externalModuleIndicator?e.Diagnostics.Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5_Modules_are_automatically_in_strict_mode:e.Diagnostics.Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5}function Ke(t){if(Nt<2&&265!==Pt.kind&&233!==Pt.kind&&!e.isFunctionLike(Pt)){var n=e.getErrorSpanForNode(Et,t);Et.bindDiagnostics.push(e.createFileDiagnostic(Et,n.start,n.length,Be(t)));}}function je(t){Vt&&4&t.numericLiteralFlags&&Et.bindDiagnostics.push(e.createDiagnosticForNode(t,e.Diagnostics.Octal_literals_are_not_allowed_in_strict_mode));}function Je(e){Vt&&Re(e,e.operand);}function ze(e){Vt&&(43!==e.operator&&44!==e.operator||Re(e,e.operand));}function Ue(t){Vt&&Ve(t,e.Diagnostics.with_statements_are_not_allowed_in_strict_mode);}function Ve(t,n,r,a,i){var o=e.getSpanOfTokenAtPosition(Et,t.pos);Et.bindDiagnostics.push(e.createFileDiagnostic(Et,o.start,o.length,n,r,a,i));}function qe(t){return"__"+e.indexOf(t.parent.parameters,t)}function $e(t){if(t){t.parent=At;var n=Vt;if(e.isInJavaScriptFile(t)&&Ge(t),Xe(t),t.kind>142){var a=At;At=t;var i=de(t);0===i?d(t):_(t,i),At=a;}else Gt||0!=(536870912&t.transformFlags)||(Yt|=r(t,0));Vt=n;}}function Ge(e){if(e.jsDoc)for(var t=0,n=e.jsDoc;t1);}function v(t,n,r){function a(t,n){return function(r){return wv.add(e.createDiagnosticForNode(r,n,t))}}n.forEach(function(n,i){var o=t.get(i);o?e.forEach(o.declarations,a(i,r)):t.set(i,n);});}function b(e){if(134217728&e.flags)return e;var t=n(e);return vv[t]||(vv[t]={})}function x(e){var n=t(e);return bv[n]||(bv[n]={flags:0})}function k(e){return 32768&e.flags?e.objectFlags:0}function S(e){return 134217728&e.flags?e.checkFlags:0}function T(t){return 265===t.kind&&!e.isExternalOrCommonJsModule(t)}function C(t,n,r){if(r){var a=t.get(n);if(a){if(e.Debug.assert(0==(1&S(a)),"Should never get an instantiated symbol here."),a.flags&r)return a;if(8388608&a.flags){var i=Z(a);if(i===Zy||i.flags&r)return a}}}}function E(t,n){var r=t.parent,a=t.parent.parent,i=C(r.locals,n,107455),o=C(a.symbol.members,n,107455);if(i&&o)return[i,o];e.Debug.fail("There should exist two symbols, one as property declaration and one as parameter declaration");}function D(t,n){function a(t,n,r){return!!e.findAncestor(t,function(a){if(a===r)return"quit";if(e.isFunctionLike(a))return!0;if(a.parent&&149===a.parent.kind&&a.parent.initializer===a)if(32&e.getModifierFlags(a.parent)){if(151===n.kind)return!0}else if(!(149===n.kind&&!(32&e.getModifierFlags(n)))||e.getContainingClass(t)!==e.getContainingClass(n))return!0})}var i=e.getSourceFileOfNode(t),o=e.getSourceFileOfNode(n);if(i!==o){if(Ry&&(i.externalModuleIndicator||o.externalModuleIndicator)||!Fy.outFile&&!Fy.out)return!0;if(a(n,t))return!0;var s=r.getSourceFiles();return e.indexOf(s,i)<=e.indexOf(s,o)}if(t.pos<=n.pos){if(176===t.kind){var c=e.getAncestor(n,176);return c?e.findAncestor(c,e.isBindingElement)!==e.findAncestor(t,e.isBindingElement)||t.pos=o&&(i=i.substr(0,o-"...".length)+"..."),i}function $e(t,n,r){var a=e.getSingleLineStringWriter();Ze().buildTypePredicateDisplay(t,a,n,r);var i=a.string();return e.releaseStringWriter(a),i}function Ge(e){for(var t=[],n=0,r=0;r0&&(26!==t&&ze(a),Je(a,t),ze(a)),c(e[n],26===t?0:64);}function l(e,t,n,o,s){if((32&e.flags||!De(e.name))&&r(e,a,i,793064,0,s),n0&&(Je(t,26),ze(t)),n(e[r]);}function p(e,t,n,r){if(e&&e.length){Je(n,27);for(var i=256,o=0;o0&&(Je(n,26),ze(n),i=0),a(t(e[o]),n,r,i);Je(n,29);}}function f(e,t,n,r,a,i){Je(n,19),e&&s(e,n,r,a,i);for(var o=0;o0||e)&&(Je(n,26),ze(n)),s(t[o],n,r,a,i);Je(n,20);}function m(t,n,r,i,o){e.isIdentifierTypePredicate(t)?n.writeParameter(t.parameterName):je(n,99),ze(n),je(n,126),ze(n),a(t.type,n,r,i,o);}function g(e,t,n,r,i){var o=Ir(e);2048&r&&ut(o)||(8&r?(ze(t),Je(t,36)):Je(t,56),ze(t),e.typePredicate?m(e.typePredicate,t,n,r,i):a(o,t,n,r,i));}function y(e,t,n,r,a,i){1===a&&(je(t,94),ze(t)),e.target&&32&r?p(e.target.typeParameters,e.mapper,t,n):l(e.typeParameters,t,n,r,i),f(e.thisParameter,e.parameters,t,n,r,i),g(e,t,n,r,i);}function h(t,n,r,i,o,s){if(t){switch(t.isReadonly&&(je(n,131),ze(n)),Je(n,21),n.writeParameter(t.declaration?e.declarationNameToString(t.declaration.parameters[0].name):"x"),Je(n,56),ze(n),r){case 1:je(n,133);break;case 0:je(n,136);}Je(n,22),Je(n,56),ze(n),a(t.type,n,i,o,s),Je(n,25),n.writeLine();}}return Rv||(Rv={buildSymbolDisplay:r,buildTypeDisplay:a,buildTypeParameterDisplay:o,buildTypePredicateDisplay:m,buildParameterDisplay:s,buildDisplayForParametersAndDelimiters:f,buildDisplayForTypeParametersAndDelimiters:l,buildTypeParameterDisplayFromSymbol:i,buildSignatureDisplay:y,buildIndexSignatureDisplay:h,buildReturnTypeDisplay:g})}function et(t){if(t){var n=x(t);return void 0===n.isVisible&&(n.isVisible=!!function(){switch(t.kind){case 176:return et(t.parent.parent);case 226:if(e.isBindingPattern(t.name)&&!t.name.elements.length)return!1;case 233:case 229:case 230:case 231:case 228:case 232:case 237:if(e.isExternalModuleAugmentation(t))return!0;var n=ot(t);return 1&e.getCombinedModifierFlags(t)||237!==t.kind&&265!==n.kind&&e.isInAmbientContext(n)?et(n):T(n);case 149:case 148:case 153:case 154:case 151:case 150:if(24&e.getModifierFlags(t))return!1;case 152:case 156:case 155:case 157:case 146:case 234:case 160:case 161:case 163:case 159:case 164:case 165:case 166:case 167:case 168:return et(t.parent);case 239:case 240:case 242:return!1;case 145:case 265:case 236:return!0;case 243:default:return!1}}()),n.isVisible}return!1}function tt(t){function n(t){e.forEach(t,function(t){x(t).isVisible=!0;var r=B(t)||t;if(e.contains(i,r)||i.push(r),e.isInternalModuleImportEqualsDeclaration(t)){var a=N(t,Yf(t.moduleReference).text,901119,void 0,void 0);a&&n(a.declarations);}});}var r;if(t.parent&&243===t.parent.kind)r=N(t.parent,t.text,9289727,e.Diagnostics.Cannot_find_name_0,t);else if(246===t.parent.kind){var a=t.parent;r=a.parent.parent.moduleSpecifier?$(a.parent.parent,a):ae(a.propertyName||a.name,9289727);}var i=[];return r&&n(r.declarations),i}function nt(e,t){var n=rt(e,t);if(n>=0){for(var r=mv.length,a=n;a=0;n--){if(at(mv[n],yv[n]))return-1;if(mv[n]===e&&yv[n]===t)return n}return-1}function at(t,n){return 0===n?b(t).type:2===n?b(t).declaredType:1===n?t.resolvedBaseConstructorType:3===n?t.resolvedReturnType:void e.Debug.fail("Unhandled TypeSystemPropertyName "+n)}function it(){return mv.pop(),yv.pop(),gv.pop()}function ot(t){return(t=e.findAncestor(e.getRootDeclaration(t),function(e){switch(e.kind){case 226:case 227:case 242:case 241:case 240:case 239:return!1;default:return!0}}))&&t.parent}function st(t){var n=fn(be(t));return n.typeParameters?Hr(n,e.map(n.typeParameters,function(e){return th})):n}function ct(e,t){var n=_r(e,t);return n?Lt(n):void 0}function ut(e){return e&&0!=(1&e.flags)}function lt(e){var t=ve(e);return t&&b(t).type||ht(e,!1)}function _t(t){return 144===t.kind&&!e.isStringOrNumericLiteral(t.expression)}function dt(t,n,r){if(8192&(t=kc(t,function(e){return!(6144&e.flags)})).flags)return hh;if(65536&t.flags)return Sc(t,function(e){return dt(e,n,r)});for(var a=e.createMap(),i=e.createMap(),o=0,s=n;o=2?Fa(th):Fh;var o=Ka(e.map(a,function(t){return e.isOmittedExpression(t)?th:bt(t,n,r)}));return n&&((o=Xr(o)).pattern=t),o}function St(e,t,n){return 174===e.kind?xt(e,t,n):kt(e,t,n)}function Tt(e,t){var n=ht(e,!0);return n?(t&&hs(e,n),261===e.kind?n:ms(n)):(n=e.dotDotDotToken?Fh:th,t&&Ky&&(Ct(e)||ys(e,n)),n)}function Ct(t){var n=e.getRootDeclaration(t);return pp(146===n.kind?n.parent:n)}function Et(t){var n=b(t);if(!n.type){if(16777216&t.flags)return n.type=st(t);var r=t.valueDeclaration;if(e.isCatchClauseVariableDeclarationOrBindingElement(r))return n.type=th;if(243===r.kind)return n.type=Bd(r.expression);if(65536&r.flags&&291===r.kind&&r.typeExpression)return n.type=wi(r.typeExpression.type);if(!nt(t,0))return rh;var a=void 0;a=194===r.kind||179===r.kind&&194===r.parent.kind?vt(t):Tt(r,!0),it()||(a=Mt(t)),n.type=a;}return n.type}function Dt(t){if(t){if(153===t.kind)return t.type&&wi(t.type);var n=e.getSetAccessorTypeAnnotationNode(t);return n&&wi(n)}}function Nt(e){var t=Hg(e);return t&&t.symbol}function At(e){return Fr(Nr(e))}function wt(t){var n=b(t);if(!n.type){var r=e.getDeclarationOfKind(t,153),a=e.getDeclarationOfKind(t,154);if(r&&65536&r.flags){var i=ft(r);if(i)return n.type=i}if(!nt(t,0))return rh;var o=void 0,s=Dt(r);if(s)o=s;else{var c=Dt(a);c?o=c:r&&r.body?o=j_(r):(Ky&&(a?l(a,e.Diagnostics.Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_parameter_type_annotation,Ue(t)):(e.Debug.assert(!!r,"there must existed getter as we are current checking either setter or getter in this function"),l(r,e.Diagnostics.Property_0_implicitly_has_type_any_because_its_get_accessor_lacks_a_return_type_annotation,Ue(t)))),o=th);}it()||(o=th,Ky&&l(e.getDeclarationOfKind(t,153),e.Diagnostics._0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions,Ue(t))),n.type=o;}return n.type}function Pt(e){var t=Yt(an(e));return 540672&t.flags?t:void 0}function Ot(t){var n=b(t);if(!n.type)if(1536&t.flags&&e.isShorthandAmbientModuleSymbol(t))n.type=th;else{var r=Ee(16,t);if(32&t.flags){var a=Pt(t);n.type=a?ti([r,a]):r;}else n.type=By&&67108864&t.flags?is(r,2048):r;}return n.type}function Ft(e){var t=b(e);return t.type||(t.type=_n(e)),t.type}function It(e){var t=b(e);if(!t.type){var n=Z(e);t.type=107455&n.flags?Lt(n):rh;}return t.type}function Rt(t){var n=b(t);if(!n.type)if(100===wy)l(t.valueDeclaration,e.Diagnostics.Generic_type_instantiation_is_excessively_deep_and_possibly_infinite),n.type=rh;else{if(!nt(t,0))return rh;wy++;var r=to(Lt(n.target),n.mapper);wy--,it()||(r=Mt(t)),n.type=r;}return n.type}function Mt(t){return t.valueDeclaration.type?(l(t.valueDeclaration,e.Diagnostics._0_is_referenced_directly_or_indirectly_in_its_own_type_annotation,Ue(t)),rh):(Ky&&l(t.valueDeclaration,e.Diagnostics._0_implicitly_has_type_any_because_it_does_not_have_a_type_annotation_and_is_referenced_directly_or_indirectly_in_its_own_initializer,Ue(t)),th)}function Lt(e){return 1&S(e)?Rt(e):7&e.flags?Et(e):9136&e.flags?Ot(e):8&e.flags?Ft(e):98304&e.flags?wt(e):8388608&e.flags?It(e):rh}function Bt(e,t){return void 0!==e&&void 0!==t&&0!=(4&k(e))&&e.target===t}function Kt(e){return 4&k(e)?e.target:e}function jt(t,n){function r(t){if(7&k(t)){var a=Kt(t);return a===n||e.forEach(Qt(a),r)}if(131072&t.flags)return e.forEach(t.types,r)}return r(t)}function Jt(t,n){for(var r=0,a=n;r0)return!0;if(540672&e.flags){var t=nr(e);return t&&tn(t)&&$t(t)}return!1}function Wt(t){return e.getClassExtendsHeritageClauseElement(t.symbol.valueDeclaration)}function Ht(t,n,r){var a=e.length(n),i=e.isInJavaScriptFile(r);return e.filter(pr(t,1),function(t){return(i||a>=Er(t.typeParameters))&&a<=e.length(t.typeParameters)})}function Xt(t,n,r){var a=Ht(t,n,r);if(n){var i=e.map(n,wi);a=e.map(a,function(e){return Mr(e,i)});}return a}function Yt(t){if(!t.resolvedBaseConstructorType){var n=Wt(t);if(!n)return t.resolvedBaseConstructorType=ah;if(!nt(t,1))return rh;var r=Bd(n.expression);if(163840&r.flags&&Wn(r),!it())return l(t.symbol.valueDeclaration,e.Diagnostics._0_is_referenced_directly_or_indirectly_in_its_own_base_expression,Ue(t.symbol)),t.resolvedBaseConstructorType=rh;if(!(1&r.flags||r===sh||Gt(r)))return l(n.expression,e.Diagnostics.Type_0_is_not_a_constructor_function_type,qe(r)),t.resolvedBaseConstructorType=rh;t.resolvedBaseConstructorType=r;}return t.resolvedBaseConstructorType}function Qt(t){return t.resolvedBaseTypes||(8&t.objectFlags?t.resolvedBaseTypes=[Ra(Xa(t.typeParameters))]:96&t.symbol.flags?(32&t.symbol.flags&&Zt(t),64&t.symbol.flags&&nn(t)):e.Debug.fail("type must be class or interface")),t.resolvedBaseTypes}function Zt(t){t.resolvedBaseTypes=t.resolvedBaseTypes||Py;var n=sr(Yt(t));if(163841&n.flags){var r,a=Wt(t),i=n&&n.symbol?fn(n.symbol):void 0;if(n.symbol&&32&n.symbol.flags&&en(i))r=Qr(a,n.symbol);else if(1&n.flags)r=n;else{var o=Xt(n,a.typeArguments,a);if(!o.length)return void l(a.expression,e.Diagnostics.No_base_constructor_has_the_specified_number_of_type_arguments);r=Ir(o[0]);}var s=t.symbol.valueDeclaration;if(s&&e.isInJavaScriptFile(s)){var c=e.getJSDocAugmentsTag(t.symbol.valueDeclaration);c&&(r=wi(c.typeExpression.type));}r!==rh&&(tn(r)?t===r||jt(r,t)?l(s,e.Diagnostics.Type_0_recursively_references_itself_as_a_base_type,qe(t,void 0,1)):t.resolvedBaseTypes===Py?t.resolvedBaseTypes=[r]:t.resolvedBaseTypes.push(r):l(a.expression,e.Diagnostics.Base_constructor_return_type_0_is_not_a_class_or_interface_type,qe(r)));}}function en(e){var t=e.outerTypeParameters;if(t){var n=t.length-1,r=e.typeArguments;return t[n].symbol!==r[n].symbol}return!0}function tn(t){return 16809985&t.flags&&!Gn(t)||131072&t.flags&&!e.forEach(t.types,function(e){return!tn(e)})}function nn(t){t.resolvedBaseTypes=t.resolvedBaseTypes||Py;for(var n=0,r=t.symbol.declarations;n1&&(n.flags|=65536,n.types=r,Gy.set(Gr(r),n));}}return t.declaredType}function _n(e){var t=b(e);if(!t.declaredType){var n=ln(be(e));t.declaredType=65536&n.flags?n.memberTypes[ng(e.valueDeclaration)]:n;}return t.declaredType}function dn(e){var t=b(e);if(!t.declaredType){var n=Te(16384);n.symbol=e,t.declaredType=n;}return t.declaredType}function pn(e){var t=b(e);return t.declaredType||(t.declaredType=fn(Z(e))),t.declaredType}function fn(e){return 96&e.flags?an(e):524288&e.flags?on$$1(e):262144&e.flags?dn(e):384&e.flags?ln(e):8&e.flags?_n(e):8388608&e.flags?pn(e):rh}function mn(e){if(e.typeArguments)for(var t=0,n=e.typeArguments;t=_)&&o<=d){var p=d?Lr(l,Dr(i,l.typeParameters,_,r)):An(l);p.typeParameters=t.localTypeParameters,p.resolvedReturnType=t,s.push(p);}}return s}function Pn(e,t,n,r,a){for(var i=0,o=e;i0)return;for(i=1;i1){if(l=An(c),e.forEach(u,function(e){return e.thisParameter})){var _=Xa(e.map(u,function(e){return Lt(e.thisParameter)||th}),!0);l.thisParameter=us(c.thisParameter,_);}l.resolvedReturnType=void 0,l.unionSignatures=u;}(a||(a=[])).push(l);}}}return a||Py}function In(e,t){for(var n=[],r=!1,a=0,i=e;a0&&(l=e.map(l,function(e){var t=An(e);return t.resolvedReturnType=Kn(Ir(e),o,c),t})),i=e.concatenate(i,l);}a=e.concatenate(a,pr(u,0)),n=Ln(n,gr(u,0)),r=Ln(r,gr(u,1));}(c);Ae(t,Oy,a,i,n,r);}function Jn(e){var t=e.symbol;if(e.target)Ae(e,r=xn(Hn(e.target),e.mapper,!1),n=Fi(pr(e.target,0),e.mapper),a=Fi(pr(e.target,1),e.mapper),i=ro(gr(e.target,0),e.mapper),c=ro(gr(e.target,1),e.mapper));else if(2048&t.flags){var n=Pr((r=t.members).get("__call"));Ae(e,r,n,a=Pr(r.get("__new")),i=Ur(t,0),c=Ur(t,1));}else{var r=Oy,a=Py,i=void 0;if(t.exports&&(r=fe(t)),32&t.flags){var o=an(t);(a=Pr(t.members.get("__constructor"))).length||(a=wn(o));var s=Yt(o);704512&s.flags?kn(r=bn(Ne(r)),Qn(s)):s===th&&(i=zr(th,!1));}var c=384&t.flags?sv:void 0;Ae(e,r,Py,a,i,c),8208&t.flags&&(e.callSignatures=Pr(t));}}function zn(t){function n(e,n){var o=Bi([i],[e]),d=t.mapper?Ui(t.mapper,o):o,p=to(s,d);if(32&e.flags){var f=e.text,m=_r(c,f),g=_(4|(l||!!(m&&67108864&m.flags)?67108864:0),f);g.checkFlags=u||m&&H_(m)?8:0,g.type=p,n&&(g.syntheticOrigin=n),a.set(f,g);}else 2&e.flags&&(r=zr(p,u));}var r,a=e.createMap();Ae(t,Oy,Py,Py,void 0,void 0);var i=Un(t),o=Vn(t),s=qn(t),c=sr($n(t)),u=!!t.declaration.readonlyToken,l=!!t.declaration.questionToken;if(170===t.declaration.typeParameter.constraint.kind){for(var d=0,p=Qn(c);d=2):16777216&t.flags?hh:t}function cr(t,n){for(var r,a=t.types,i=65536&t.flags,o=i?24:0,s=i?0:67108864,c=4,u=0,l=0,d=a;l=0),a>=r.minArgumentCount}var i=e.getImmediatelyInvokedFunctionExpression(t.parent);return!!i&&(!t.type&&!t.dotDotDotToken&&e.indexOf(t.parent.parameters,t)>=i.arguments.length)}function Cr(e){if(71===e.parameterName.kind){var t=e.parameterName;return{kind:1,parameterName:t?t.text:void 0,parameterIndex:t?zd(e.parent.parameters,t):void 0,type:wi(e.type)}}return{kind:0,type:wi(e.type)}}function Er(e){var t=0;if(e)for(var n=0;n=r)&&o<=i){t||(t=[]);for(c=o;cc.arguments.length&&!d.type||kr(d)||l||(i=r.length);}if(!(153!==t.kind&&154!==t.kind||e.hasDynamicName(t)||s&&o)){var f=153===t.kind?154:153,m=e.getDeclarationOfKind(t.symbol,f);m&&(o=Nt(m));}var g=152===t.kind?an(he(t.parent.symbol)):void 0,y=g?g.localTypeParameters:t.typeParameters?br(t.typeParameters):vr(t),h=Ar(t,u,g),v=t.type&&158===t.type.kind?Cr(t.type):void 0;n.resolvedSignature=Nn(t,y,o,r,h,v,i,e.hasRestParameter(t),a);}return n.resolvedSignature}function Ar(t,n,r){if(n)return wi(t.parameters[0].type);if(r)return r;if(t.type)return wi(t.type);if(65536&t.flags){var a=L_(t);if(a&&a!==rh)return a}return 153!==t.kind||e.hasDynamicName(t)?e.nodeIsMissing(t.body)?th:void 0:Dt(e.getDeclarationOfKind(t.symbol,154))}function wr(t){function n(t){if(!t)return!1;switch(t.kind){case 71:return"arguments"===t.text&&e.isPartOfExpression(t);case 149:case 151:case 153:case 154:return 144===t.name.kind&&n(t.name);default:return!e.nodeStartsNewLexicalEnvironment(t)&&!e.isPartOfTypeNode(t)&&e.forEachChild(t,n)}}var r=x(t);return void 0===r.containsArgumentsReference&&(8192&r.flags?r.containsArgumentsReference=!0:r.containsArgumentsReference=n(t.body)),r.containsArgumentsReference}function Pr(e){if(!e)return Py;for(var t=[],n=0;n0&&r.body){var a=e.declarations[n-1];if(r.parent===a.parent&&r.kind===a.kind&&r.pos===a.end)break}t.push(Nr(r));}}return t}function Or(e){var t=ie(e,e);if(t){var n=ce(t);if(n)return Lt(n)}return th}function Fr(e){if(e.thisParameter)return Lt(e.thisParameter)}function Ir(t){if(!t.resolvedReturnType){if(!nt(t,3))return rh;var n=void 0;if(n=t.target?to(Ir(t.target),t.mapper):t.unionSignatures?Xa(e.map(t.unionSignatures,Ir),!0):j_(t.declaration),!it()&&(n=th,Ky)){var r=t.declaration;r.name?l(r.name,e.Diagnostics._0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions,e.declarationNameToString(r.name)):l(r,e.Diagnostics.Function_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions);}t.resolvedReturnType=n;}return t.resolvedReturnType}function Rr(t){if(t.hasRestParameter){var n=Lt(e.lastOrUndefined(t.parameters));if(4&k(n)&&n.target===Eh)return n.typeArguments[0]}return th}function Mr(t,n){n=Dr(n,t.typeParameters,Er(t.typeParameters));var r=t.instantiations||(t.instantiations=e.createMap()),a=Gr(n),i=r.get(a);return i||r.set(a,i=Lr(t,n)),i}function Lr(e,t){return Gi(e,Bi(e.typeParameters,t),!0)}function Br(e){return e.typeParameters?(e.erasedSignatureCache||(e.erasedSignatureCache=Gi(e,Ki(e.typeParameters),!0)),e.erasedSignatureCache):e}function Kr(e){if(!e.isolatedSignatureType){var t=152===e.declaration.kind||156===e.declaration.kind,n=Ee(16);n.members=Oy,n.properties=Py,n.callSignatures=t?Py:[e],n.constructSignatures=t?[e]:Py,e.isolatedSignatureType=n;}return e.isolatedSignatureType}function jr(e){return e.members.get("__index")}function Jr(e,t){var n=1===t?133:136,r=jr(e);if(r)for(var a=0,i=r.declarations;a1&&(t+=":"+i),r+=i;}return t}function Wr(e,t){for(var n=0,r=0,a=e;ra.length)?(l(t,o===a.length?e.Diagnostics.Generic_type_0_requires_1_type_argument_s:e.Diagnostics.Generic_type_0_requires_between_1_and_2_type_arguments,qe(r,void 0,1),o,a.length),rh):Hr(r,e.concatenate(r.outerTypeParameters,Dr(e.map(t.typeArguments,wi),a,o,t)))}return t.typeArguments?(l(t,e.Diagnostics.Type_0_is_not_generic,qe(r)),rh):r}function Zr(e,t){var n=fn(e),r=b(e),a=r.typeParameters,i=Gr(t),o=r.instantiations.get(i);return o||r.instantiations.set(i,o=no(n,Bi(a,Dr(t,a,Er(a))))),o}function ea(t,n){var r=fn(n),a=b(n).typeParameters;if(a){var i=e.length(t.typeArguments),o=Er(a);return ia.length?(l(t,o===a.length?e.Diagnostics.Generic_type_0_requires_1_type_argument_s:e.Diagnostics.Generic_type_0_requires_between_1_and_2_type_arguments,Ue(n),o,a.length),rh):Zr(n,e.map(t.typeArguments,wi))}return t.typeArguments?(l(t,e.Diagnostics.Type_0_is_not_generic,Ue(n)),rh):r}function ta(t,n){return t.typeArguments?(l(t,e.Diagnostics.Type_0_is_not_generic,Ue(n)),rh):fn(n)}function na(t){switch(t.kind){case 159:return t.typeName;case 277:return t.name;case 201:var n=t.expression;if(e.isEntityNameExpression(n))return n}}function ra(e){return e?ae(e,793064)||Zy:Zy}function aa(e,t){return t===Zy?rh:96&t.flags?Qr(e,t):524288&t.flags?ea(e,t):107455&t.flags&&277===e.kind?Lt(t):ta(e,t)}function ia(t){if(e.isIdentifier(t.name))switch(t.name.text){case"String":return ch;case"Number":return uh;case"Boolean":return dh;case"Void":return fh;case"Undefined":return ah;case"Null":return oh;case"Object":return th;case"Function":return kh;case"Array":case"array":return t.typeArguments&&t.typeArguments.length?void 0:Ra(th);case"Promise":case"promise":return t.typeArguments&&t.typeArguments.length?void 0:B_(th)}}function oa(e){var t=wi(e.type);return By?Xa([t,oh]):t}function sa(t){var n=x(t);if(!n.resolvedType){var r=void 0,a=void 0;if(277===t.kind)(a=ia(t))||(a=aa(t,r=ra(na(t))));else{var i=159===t.kind?t.typeName:e.isEntityNameExpression(t.expression)?t.expression:void 0;a=(r=i&&ae(i,793064)||Zy)===Zy?rh:96&r.flags?Qr(t,r):524288&r.flags?ea(t,r):ta(t,r);}n.resolvedSymbol=r,n.resolvedType=a;}return n.resolvedType}function ca(e){var t=x(e);return t.resolvedType||(t.resolvedType=ms(Bd(e.exprName))),t.resolvedType}function ua(t,n){function r(e){for(var t=0,n=e.declarations;t>1),o=e[i].id;if(o===a)return i;o>a?r=i-1:n=i+1;}return~n}function za(e,t){return Ja(e,t)>=0}function Ua(e,t){var n=t.flags;if(65536&n)Va(e,t.types);else if(1&n)e.containsAny=!0;else if(!By&&6144&n)2048&n&&(e.containsUndefined=!0),4096&n&&(e.containsNull=!0),2097152&n||(e.containsNonWideningType=!0);else if(!(8192&n)){2&n&&(e.containsString=!0),4&n&&(e.containsNumber=!0),96&n&&(e.containsStringOrNumberLiteral=!0);var r=e.length,a=r&&t.id>e[r-1].id?~r:Ja(e,t);a<0&&(32768&n&&16&t.objectFlags&&t.symbol&&8208&t.symbol.flags&&qa(e,t)||e.splice(~a,0,t));}}function Va(e,t){for(var n=0,r=t;n0;)$a(t[--n],t)&&e.orderedRemoveItemAt(t,n);}function Ha(t){for(var n=t.length;n>0;){var r=t[--n];(32&r.flags&&t.containsString||64&r.flags&&t.containsNumber||96&r.flags&&1048576&r.flags&&za(t,r.regularType))&&e.orderedRemoveItemAt(t,n);}}function Xa(e,t,n,r){if(0===e.length)return mh;if(1===e.length)return e[0];var a=[];return Va(a,e),a.containsAny?th:(t?Wa(a):a.containsStringOrNumberLiteral&&Ha(a),0===a.length?a.containsNull?a.containsNonWideningType?oh:sh:a.containsUndefined?a.containsNonWideningType?ah:ih:mh:Ya(a,n,r))}function Ya(e,t,n){if(0===e.length)return mh;if(1===e.length)return e[0];var r=Gr(e),a=Gy.get(r);return a||(a=Te(65536|Wr(e,6144)),Gy.set(r,a),a.types=e,a.aliasSymbol=t,a.aliasTypeArguments=n),a}function Qa(t){var n=x(t);return n.resolvedType||(n.resolvedType=Xa(e.map(t.types,wi),!1,gi(t),yi(t))),n.resolvedType}function Za(t,n){131072&n.flags?ei(t,n.types):1&n.flags?t.containsAny=!0:16&k(n)&&Do(n)?t.containsEmptyObject=!0:8192&n.flags||!By&&6144&n.flags||e.contains(t,n)||(32768&n.flags&&(t.containsObjectType=!0),65536&n.flags&&void 0===t.unionIndex&&(t.unionIndex=t.length),32768&n.flags&&16&n.objectFlags&&n.symbol&&8208&n.symbol.flags&&qa(t,n)||t.push(n));}function ei(e,t){for(var n=0,r=t;n=n?hh:r};return r.mappedTypes=t,r}function Ji(e){if(!e.mapper){var t=function(t){for(var n=e.signature.typeParameters,r=0;rn.parameters.length)return 0;t=Br(t),n=Br(n);var s=-1,c=Fr(t);if(c&&c!==fh){var u=Fr(n);if(u){if(!(h=o(c,u,!1)||o(u,c,a)))return a&&i(e.Diagnostics.The_this_types_of_each_signature_are_incompatible),0;s&=h;}}for(var l=To(t),_=To(n),d=Co(t,l,n,_),p=t.parameters,f=n.parameters,m=0;m0){for(var s=0;s=5&&32768&e.flags){var r=e.symbol;if(r)for(var a=0,i=0;i=5)return!0}}return!1}function Ko(e,t){return 0!==jo(e,t,uo)}function jo(e,t,n){if(e===t)return-1;var r=24&El(e);if(r!==(24&El(t)))return 0;if(r){if(Lf(e)!==Lf(t))return 0}else if((67108864&e.flags)!=(67108864&t.flags))return 0;return H_(e)!==H_(t)?0:n(Lt(e),Lt(t))}function Jo(e,t,n){if(e.parameters.length===t.parameters.length&&e.minArgumentCount===t.minArgumentCount&&e.hasRestParameter===t.hasRestParameter)return!0;var r=e.hasRestParameter?1:0,a=t.hasRestParameter?1:0;return!!(n&&e.minArgumentCount<=t.minArgumentCount&&(r>a||r===a&&e.parameters.length>=t.parameters.length))}function zo(t,n,r,a,i,o){if(t===n)return-1;if(!Jo(t,n,r))return 0;if(e.length(t.typeParameters)!==e.length(n.typeParameters))return 0;t=Br(t),n=Br(n);var s=-1;if(!a){var c=Fr(t);if(c){var u=Fr(n);if(u){if(!(d=o(c,u)))return 0;s&=d;}}}for(var l=n.parameters.length,_=0;_=e.parameters.length-1}function Vo(e,t){for(var n=0,r=t;no&&(a=t[s],i=u,o=c),o===t.length-1)break}yo(i,a,n,e.Diagnostics.Type_argument_candidate_1_is_not_a_valid_type_argument_because_it_is_not_a_supertype_of_candidate_0,r);}function Ho(e){return 4&k(e)&&e.target===Eh}function Xo(e){return 4&k(e)&&(e.target===Eh||e.target===Dh)||!(6144&e.flags)&&po(e,Rh)}function Yo(e){return!!_r(e,"0")}function Qo(e){return 0!=(6624&e.flags)}function Zo(t){return!!(8&t.flags)||(65536&t.flags?!!(16&t.flags)||!e.forEach(t.types,function(e){return!Qo(e)}):Qo(t))}function es(t){return 32&t.flags?ch:64&t.flags?uh:128&t.flags?dh:256&t.flags?t.baseType:65536&t.flags&&!(16&t.flags)?Xa(e.sameMap(t.types,es)):t}function ts(t){return 32&t.flags&&1048576&t.flags?ch:64&t.flags&&1048576&t.flags?uh:128&t.flags?dh:256&t.flags?t.baseType:65536&t.flags&&!(16&t.flags)?Xa(e.sameMap(t.types,ts)):t}function ns(e){return!!(4&k(e)&&8&e.target.objectFlags)}function rs(e){for(var t=0,n=0,r=e;n=0&&!n[s].isFixed){var l=Cs(r,a);l&&(g++,o(l,t[s]),g--);}return}if(16384&i.flags)return o(oi(r),i),void o(Xa(e.map(Qn(r),Lt)),qn(a))}c(r,a),u(r,a,0),u(r,a,1),d(r,a);}function c(e,t){for(var n=0,r=Hn(t);nn)&&(t.failedTypeParameterIndex=n);}return a}function Fs(e){for(var t=0;t=2||0==(34&n.flags)||260===n.valueDeclaration.parent.kind)){for(var r=e.getEnclosingBlockScopeContainer(n.valueDeclaration),a=Xc(t.parent,r),i=r,o=!1;i&&!e.nodeStartsNewLexicalEnvironment(i);){if(e.isIterationStatement(i,!1)){o=!0;break}i=i.parent;}o&&(a&&(x(i).flags|=65536),214===r.kind&&e.getAncestor(n.valueDeclaration,227).parent===r&&Qc(t,r)&&(x(n.valueDeclaration).flags|=2097152),x(n.valueDeclaration).flags|=262144),a&&(x(n.valueDeclaration).flags|=131072);}}function Qc(t,n){for(var r=t;185===r.parent.kind;)r=r.parent;var a=!1;if(e.isAssignmentTarget(r))a=!0;else if(192===r.parent.kind||193===r.parent.kind){var i=r.parent;a=43===i.operator||44===i.operator;}return!!a&&!!e.findAncestor(r,function(e){return e===n?"quit":e===n.statement})}function Zc(e,t){x(e).flags|=2,149===t.kind||152===t.kind?x(t.parent).flags|=4:x(t).flags|=4;}function eu(t){if(e.isSuperCall(t))return t;if(!e.isFunctionLike(t))return e.forEachChild(t,eu)}function tu(e){var t=x(e);return void 0===t.hasSuperCall&&(t.superCall=eu(e.body),t.hasSuperCall=!!t.superCall),t.superCall}function nu(e){return Yt(fn(ve(e)))===sh}function ru(t,n,r){var a=n.parent;if(e.getClassExtendsHeritageClauseElement(a)&&!nu(a)){var i=tu(n);(!i||i.end>t.pos)&&l(t,r);}}function au(t){var n=e.getThisContainer(t,!0),r=!1;switch(152===n.kind&&ru(t,n,e.Diagnostics.super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class),187===n.kind&&(n=e.getThisContainer(n,!1),r=Iy<2),n.kind){case 233:l(t,e.Diagnostics.this_cannot_be_referenced_in_a_module_or_namespace_body);break;case 232:l(t,e.Diagnostics.this_cannot_be_referenced_in_current_location);break;case 152:ou(t,n)&&l(t,e.Diagnostics.this_cannot_be_referenced_in_constructor_arguments);break;case 149:case 148:32&e.getModifierFlags(n)&&l(t,e.Diagnostics.this_cannot_be_referenced_in_a_static_property_initializer);break;case 144:l(t,e.Diagnostics.this_cannot_be_referenced_in_a_computed_property_name);}if(r&&Zc(t,n),e.isFunctionLike(n)&&(!gu(t)||e.getThisParameter(n))){if(186===n.kind&&194===n.parent.kind&&3===e.getSpecialPropertyAssignmentKind(n.parent)){var a=Bd(n.parent.left.expression.expression).symbol;if(a&&a.members&&16&a.flags)return T_(a)}var i=At(n)||_u(n);if(i)return i}if(e.isClassLike(n.parent)){var o=ve(n.parent);return Jc(t,s=e.hasModifier(n,32)?Lt(o):fn(o).thisType)}if(e.isInJavaScriptFile(t)){var s=iu(n);if(s&&s!==rh)return s}return jy&&l(t,e.Diagnostics.this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation),th}function iu(t){var n=e.getJSDocType(t);if(n&&279===n.kind){var r=n;if(r.parameters.length>0&&282===r.parameters[0].type.kind)return wi(r.parameters[0].type)}}function ou(t,n){return!!e.findAncestor(t,function(e){return e===n?"quit":146===e.kind})}function su(t){var n=181===t.parent.kind&&t.parent.expression===t,r=e.getSuperContainer(t,!0),a=!1;if(!n)for(;r&&187===r.kind;)r=e.getSuperContainer(r,!0),a=Iy<2;var i=0;if(!function(t){return!!t&&(n?152===t.kind:!(!e.isClassLike(t.parent)&&178!==t.parent.kind)&&(32&e.getModifierFlags(t)?151===t.kind||150===t.kind||153===t.kind||154===t.kind:151===t.kind||150===t.kind||153===t.kind||154===t.kind||149===t.kind||148===t.kind||152===t.kind))}(r)){var o=e.findAncestor(t,function(e){return e===r?"quit":144===e.kind});return o&&144===o.kind?l(t,e.Diagnostics.super_cannot_be_referenced_in_a_computed_property_name):n?l(t,e.Diagnostics.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors):r&&r.parent&&(e.isClassLike(r.parent)||178===r.parent.kind)?l(t,e.Diagnostics.super_property_access_is_permitted_only_in_a_constructor_member_function_or_member_accessor_of_a_derived_class):l(t,e.Diagnostics.super_can_only_be_referenced_in_members_of_derived_classes_or_object_literal_expressions),rh}if(n||152!==r.kind||ru(t,r,e.Diagnostics.super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class),i=32&e.getModifierFlags(r)||n?512:256,x(t).flags|=i,151===r.kind&&256&e.getModifierFlags(r)&&(e.isSuperProperty(t.parent)&&e.isAssignmentTarget(t.parent)?x(r).flags|=4096:x(r).flags|=2048),a&&Zc(t.parent,r),178===r.parent.kind)return Iy<2?(l(t,e.Diagnostics.super_is_only_allowed_in_members_of_object_literal_expressions_when_option_target_is_ES2015_or_higher),rh):th;var s=r.parent,c=fn(ve(s)),u=c&&Qt(c)[0];return u?152===r.kind&&ou(t,r)?(l(t,e.Diagnostics.super_cannot_be_referenced_in_constructor_arguments),rh):512===i?Yt(c):Tn(u,c.thisType):(e.getClassExtendsHeritageClauseElement(s)||l(t,e.Diagnostics.super_can_only_be_referenced_in_a_derived_class),rh)}function cu(e){return 151!==e.kind&&153!==e.kind&&154!==e.kind||178!==e.parent.kind?186===e.kind&&261===e.parent.kind?e.parent.parent:void 0:e.parent}function uu(e){return 4&k(e)&&e.target===Oh?e.typeArguments[0]:void 0}function lu(t){return Sc(t,function(t){return 131072&t.flags?e.forEach(t.types,uu):uu(t)})}function _u(e){if(187!==e.kind){if(oo(e)){var t=Bu(e);if(t){var n=t.thisParameter;if(n)return Lt(n)}}if(jy){var r=cu(e);if(r){for(var a=wu(r),i=r,o=a;o;){var s=lu(o);if(s)return to(s,Ou(r));if(261!==i.parent.kind)break;o=wu(i=i.parent.parent);}return a?ss(a):Nd(r)}if(194===e.parent.kind&&58===e.parent.operatorToken.kind){var c=e.parent.left;if(179===c.kind||180===c.kind)return Nd(c.expression)}}}}function du(t){var n=t.parent;if(oo(n)){var r=e.getImmediatelyInvokedFunctionExpression(n);if(r&&r.arguments){var a=e.indexOf(n.parameters,t);if(t.dotDotDotToken){for(var i=[],o=a;o=0)return O_(S_(t),a)}function vu(e,t){if(183===e.parent.kind)return hu(e.parent,t)}function bu(t){var n=t.parent,r=n.operatorToken.kind;if(r>=58&&r<=70){if(0!==e.getSpecialPropertyAssignmentKind(n))return;if(t===n.right)return Md(n.left)}else{if(54===r){var a=Pu(n);return a||t!==n.right||(a=Md(n.left)),a}if((53===r||26===r)&&t===n.right)return Pu(n)}}function xu(e,t){return Sc(e,function(e){var n=229376&e.flags?_r(e,t):void 0;return n?Lt(n):void 0})}function ku(e,t){return Sc(e,function(e){return mr(e,t)})}function Su(t){return!!(65536&t.flags?e.forEach(t.types,Yo):Yo(t))}function Tu(t){if(e.Debug.assert(e.isObjectLiteralMethod(t)),!hm(t))return Cu(t)}function Cu(t){var n=wu(t.parent);if(n){if(!e.hasDynamicName(t)){var r=xu(n,ve(t).name);if(r)return r}return zu(t.name)&&ku(n,1)||ku(n,0)}}function Eu(t){var n=t.parent,r=wu(n);if(r)return xu(r,""+e.indexOf(n.elements,t))||ku(r,1)||ff(r,void 0,!1,!1,!1)}function Du(e){var t=e.parent;return e===t.whenTrue||e===t.whenFalse?Pu(t):void 0}function Nu(t){var n=Pu(e.isJsxAttributeLike(t.parent)?t.parent.parent:t.parent.openingElement.attributes);if(n&&!ut(n)){if(e.isJsxAttribute(t.parent))return ct(n,t.parent.name.text);if(249===t.parent.kind){var r=cl();return r&&""!==r?ct(n,r):th}return n}}function Au(t){var n=Pu(t.parent);if(e.isJsxAttribute(t)){if(!n||ut(n))return;return ct(n,t.name.text)}return n}function wu(e){var t=Pu(e);return t&&sr(t)}function Pu(t){if(!hm(t)){if(t.contextualType)return t.contextualType;var n=t.parent;switch(n.kind){case 226:case 146:case 149:case 148:case 176:return pu(t);case 187:case 219:return fu(t);case 197:return mu(n);case 181:case 182:return hu(n,t);case 184:case 202:return wi(n.type);case 194:return bu(t);case 261:case 262:return Cu(n);case 177:return Eu(t);case 195:return Du(t);case 205:return e.Debug.assert(196===n.parent.kind),vu(n.parent,t);case 185:return Pu(n);case 256:return Nu(n);case 253:case 255:return Au(n);case 251:case 250:return ml(n)}}}function Ou(t){return t=e.findAncestor(t,function(e){return!!e.contextualMapper}),t?t.contextualMapper:zi}function Fu(e,t){var n=dr(e,0);if(1===n.length){var r=n[0];if(!r.typeParameters&&!Iu(r,t))return r}}function Iu(t,n){for(var r=0;r0&&(s=hi(s,r()),o=[],i=e.createMap(),g=!1,y=!1,f=0),!Xu(S=Bd(b.expression)))return l(b,e.Diagnostics.Spread_types_may_only_be_created_from_object_types),rh;s=hi(s,S),h=v+1;continue}e.Debug.assert(153===b.kind||154===b.kind),lm(b);}e.hasDynamicName(b)?zu(b.name)?y=!0:g=!0:i.set(x.name,x),o.push(x);}if(d)for(var C=0,E=Qn(u);C0&&(s=hi(s,r())),32768&s.flags&&(s.flags|=c,s.symbol=t.symbol),s):r()}function Xu(t){return!!(16783361&t.flags||32768&t.flags&&!Gn(t)||196608&t.flags&&!e.forEach(t.types,function(e){return!Xu(e)}))}function Yu(e){return kl(e),hl()||th}function Qu(e){return kl(e.openingElement),el(e.closingElement.tagName)?al(e.closingElement):Bd(e.closingElement.tagName),hl()||th}function Zu(e){return e.indexOf("-")<0}function el(t){return 179!==t.kind&&99!==t.kind&&e.isIntrinsicJsxName(t.text)}function tl(t,n,r){function a(e,t){var n=we(e,t,Py,Py,void 0,void 0),r=Fy.suppressExcessPropertyErrors?0:1048576;return n.flags|=37748736|r,n.objectFlags|=128,n}for(var i=t.attributes,o=e.createMap(),s=hh,c=[],u=0,d=i.properties;u0&&(s=hi(s,a(i.symbol,o)),c=[],o=e.createMap()),!Xu(m=Bd(p.expression)))return l(p,e.Diagnostics.Spread_types_may_only_be_created_from_object_types),th;if(ut(m))return th;s=hi(s,m);}}s!==hh&&(c.length>0&&(s=hi(s,a(i.symbol,o)),c=[],o=e.createMap()),c=Qn(s)),o=e.createMap(),c&&e.forEach(c,function(e){n&&!n(e)||o.set(e.name,e);});var y=249===t.parent.kind?t.parent:void 0;if(y&&y.openingElement===t&&y.children.length>0){for(var h=[],v=0,b=y.children;v1&&l(r.declarations[0],e.Diagnostics.The_global_type_JSX_0_may_not_have_more_than_one_property,t);}}function sl(){return Jv||(Jv=!0,Fv=ol(Vv.ElementAttributesPropertyNameContainer)),Fv}function cl(){return zv||(zv=!0,Iv=ol(Vv.ElementChildrenAttributeNameContainer)),Iv}function ul(t,n,r,a){if(e.Debug.assert(!(65536&n.flags)),!a||!po(r,a)){var i=vl();if(i){var o=v_(t,n,void 0);if(o!==av){var s=o&&Ir(o),c=s&&(0===o.parameters.length?hh:Lt(o.parameters[0]));if(s&&po(s,i)){var u=rl(Vv.IntrinsicAttributes);return u!==rh&&(c=Mn(u,c)),c}}}}}function ll(t,n,r,a){if(e.Debug.assert(!(65536&n.flags)),!a||!po(r,a)){var i=vl();if(i){var o=[];v_(t,n,o);for(var s=void 0,c=void 0,u=0,l=o;u0)?l(t,e.Diagnostics.JSX_element_class_does_not_support_attributes_because_it_does_not_have_a_0_property,sl()):ho(r,n,t.attributes.properties.length>0?t.attributes:t);}function Tl(t,n){if(t.expression){var r=Bd(t.expression,n);return t.dotDotDotToken&&r!==th&&!Ho(r)&&l(t,e.Diagnostics.JSX_spread_child_must_be_an_array_type,t.toString(),qe(r)),r}return rh}function Cl(e){return e.valueDeclaration?e.valueDeclaration.kind:149}function El(t){if(t.valueDeclaration){var n=e.getCombinedModifierFlags(t.valueDeclaration);return t.parent&&32&t.parent.flags?n:-29&n}if(6&S(t)){var r=t.checkFlags;return(256&r?8:64&r?4:16)|(512&r?32:0)}return 16777216&t.flags?36:0}function Dl(t){return t.valueDeclaration?e.getCombinedNodeFlags(t.valueDeclaration):0}function Nl(e){return!!(8192&e.flags||4&S(e))}function Al(t,n,r,a){var i=El(a),o=179===t.kind||226===t.kind?t.name:t.right;if(256&S(a))return l(o,e.Diagnostics.Property_0_has_conflicting_declarations_and_is_inaccessible_in_type_1,Ue(a),qe(r)),!1;if(97===n.kind){if(Iy<2&&Oo(a,function(e){var t=Cl(e);return 151!==t&&150!==t}))return l(o,e.Diagnostics.Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword),!1;if(128&i)return l(o,e.Diagnostics.Abstract_method_0_in_class_1_cannot_be_accessed_via_super_expression,Ue(a),qe(Fo(a))),!1}if(!(24&i))return!0;if(8&i)return!!Cm(t,Bf(be(a)))||(l(o,e.Diagnostics.Property_0_is_private_and_only_accessible_within_class_1,Ue(a),qe(Fo(a))),!1);if(97===n.kind)return!0;var s=Tm(t,function(e){var t=fn(ve(e));return Mo(t,a)?t:void 0});return s?!!(32&i)||(16384&r.flags&&r.isThisType&&(r=er(r)),!!(3&k(Kt(r))&&jt(r,s))||(l(o,e.Diagnostics.Property_0_is_protected_and_only_accessible_through_an_instance_of_class_1,Ue(a),qe(s)),!1)):(l(o,e.Diagnostics.Property_0_is_protected_and_only_accessible_within_class_1_and_its_subclasses,Ue(a),qe(Fo(a)||r)),!1)}function wl(e){return Pl(Bd(e),e)}function Pl(t,n){var r=6144&(By?as(t):t.flags);if(r){l(n,2048&r?4096&r?e.Diagnostics.Object_is_possibly_null_or_undefined:e.Diagnostics.Object_is_possibly_undefined:e.Diagnostics.Object_is_possibly_null);var a=ss(t);return 14336&a.flags?rh:a}return t}function Ol(e){return Ll(e,e.expression,e.name)}function Fl(e){return Ll(e,e.left,e.right)}function Il(t,n){var r;if(65536&n.flags&&!(8190&n.flags))for(var a=0,i=n.types;a=m&&o.length<=f))return!1;if(c>=0)return Uo(r,c);if(!r.hasRestParameter&&i>r.parameters.length)return!1;var g=i>=r.minArgumentCount;return s||g}function Hl(e){if(32768&e.flags){var t=Wn(e);if(1===t.callSignatures.length&&0===t.constructSignatures.length&&0===t.properties.length&&!t.stringIndexInfo&&!t.numberIndexInfo)return t.callSignatures[0]}}function Xl(e,t,n){var r=bs(e,!0,!1);return vs(t,e,function(e,t){Es(r,to(e,n),t);}),Mr(e,Fs(r))}function Yl(e,t,n,r,a){for(var i=t.typeParameters,o=Ji(a),s=0;s0?[t.attributes]:Py:t.arguments||Py;}return n}function r_(e,t,n){if(147!==e.kind)return t.length;switch(e.parent.kind){case 229:case 199:return 1;case 149:return 2;case 151:case 153:case 154:return 0===Iy?2:n.parameters.length>=3?3:2;case 146:return 3}}function a_(t){if(229===t.kind)return Lt(n=ve(t));if(146===t.kind&&152===(t=t.parent).kind){var n=ve(t);return Lt(n)}return 149===t.kind||151===t.kind||153===t.kind||154===t.kind?Lm(t):(e.Debug.fail("Unsupported decorator target."),rh)}function i_(t){if(229===t.kind)return e.Debug.fail("Class decorators should not have a second synthetic argument."),rh;if(146===t.kind&&152===(t=t.parent).kind)return th;if(149===t.kind||151===t.kind||153===t.kind||154===t.kind){var n=t;switch(n.name.kind){case 71:case 8:case 9:return Ti(32,n.name.text);case 144:var r=Gu(n.name);return od(r,512)?r:ch;default:return e.Debug.fail("Unsupported property name."),rh}}return e.Debug.fail("Unsupported decorator target."),rh}function o_(t){return 229===t.kind?(e.Debug.fail("Class decorators should not have a third synthetic argument."),rh):146===t.kind?uh:149===t.kind?(e.Debug.fail("Property decorators should not have a third synthetic argument."),rh):151===t.kind||153===t.kind||154===t.kind?wa(Fm(t)):(e.Debug.fail("Unsupported decorator target."),rh)}function s_(t,n){return 0===n?a_(t.parent):1===n?i_(t.parent):2===n?o_(t.parent):(e.Debug.fail("Decorators should not have a fourth synthetic argument."),rh)}function c_(e,t){return 147===e.kind?s_(e,t):0===t&&183===e.kind?ma():void 0}function u_(e,t,n){if(147!==e.kind&&(0!==n||183!==e.kind))return t[n]}function l_(e,t,n){return 147===e.kind?e.expression:0===t&&183===e.kind?e.template:n}function __(t,n,r,a){function o(n,r,i,o){var s;s=e.chainDiagnosticMessages(s,n,r,i,o),a&&(s=e.chainDiagnosticMessages(s,a)),wv.add(e.createDiagnosticForNodeFromMessageChain(t,s));}function s(n,r,a){void 0===a&&(a=!1);for(var i=0,o=n;i1&&(S=s(g,qv,T)),S||(b=void 0,x=void 0,k=void 0,S=s(g,$v,T)),S)return S;if(b){if(d)return b;e_(t,h,b,$v,void 0,!0);}else if(x)if(u||l||!c){e.Debug.assert(k.failedTypeParameterIndex>=0);var C=x.typeParameters[k.failedTypeParameterIndex],E=ws(k,k.failedTypeParameterIndex),D=e.chainDiagnosticMessages(void 0,e.Diagnostics.The_type_argument_for_type_parameter_0_cannot_be_inferred_from_the_usage_Consider_specifying_the_type_arguments_explicitly,qe(C));a&&(D=e.chainDiagnosticMessages(D,a)),Wo(E,t.tagName||t.expression||t.tag,D);}else{var N=t.typeArguments;Ql(x,N,e.map(N,wi),!0,a);}else o(e.Diagnostics.Supplied_parameters_do_not_match_any_signature_of_call_target);if(!i)for(var A=0,w=g;A=0&&l(t.arguments[r],e.Diagnostics.Spread_operator_in_new_expressions_is_only_available_when_targeting_ECMAScript_5_and_higher);}var a=wl(t.expression);if(a===gh)return ov;if((a=sr(a))===rh)return ql(t);var i=a.symbol&&Bf(a.symbol);if(i&&128&e.getModifierFlags(i))return l(t,e.Diagnostics.Cannot_create_an_instance_of_the_abstract_class_0,e.declarationNameToString(i.name)),ql(t);if(ut(a))return t.typeArguments&&l(t,e.Diagnostics.Untyped_function_calls_may_not_accept_type_arguments),Vl(t);var o=pr(a,1);if(o.length)return m_(t,o[0])?__(t,o,n):ql(t);var s=pr(a,0);if(s.length){var c=__(t,s,n);return Ir(c)!==fh&&l(t,e.Diagnostics.Only_a_void_function_can_be_called_with_the_new_keyword),Fr(c)===fh&&l(t,e.Diagnostics.A_function_that_is_called_with_the_new_keyword_cannot_have_a_this_type_that_is_void),c}return l(t,e.Diagnostics.Cannot_use_new_with_an_expression_whose_type_lacks_a_call_or_construct_signature),ql(t)}function m_(t,n){if(!n||!n.declaration)return!0;var r=n.declaration,a=e.getModifierFlags(r);if(!(24&a))return!0;var i=Bf(r.parent.symbol),o=fn(r.parent.symbol);if(!Cm(t,i)){var s=e.getContainingClass(t);if(s)for(var c=Qt(Fm(s));c.length;){var u=c[0];if(16&a&&u.symbol===r.parent.symbol)return!0;c=Qt(u);}return 8&a&&l(t,e.Diagnostics.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration,qe(o)),16&a&&l(t,e.Diagnostics.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration,qe(o)),!1}return!0}function g_(t,n){var r=Bd(t.tag),a=sr(r);if(a===rh)return ql(t);var i=pr(a,0),o=pr(a,1);return p_(r,a,i.length,o.length)?Vl(t):i.length?__(t,i,n):(l(t,e.Diagnostics.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures,qe(a)),ql(t))}function y_(t){switch(t.parent.kind){case 229:case 199:return e.Diagnostics.Unable_to_resolve_signature_of_class_decorator_when_called_as_an_expression;case 146:return e.Diagnostics.Unable_to_resolve_signature_of_parameter_decorator_when_called_as_an_expression;case 149:return e.Diagnostics.Unable_to_resolve_signature_of_property_decorator_when_called_as_an_expression;case 151:case 153:case 154:return e.Diagnostics.Unable_to_resolve_signature_of_method_decorator_when_called_as_an_expression}}function h_(t,n){var r=Bd(t.expression),a=sr(r);if(a===rh)return ql(t);var i=pr(a,0),o=pr(a,1);if(p_(r,a,i.length,o.length))return Vl(t);var s=y_(t);if(!i.length){var c=void 0;return c=e.chainDiagnosticMessages(c,e.Diagnostics.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures,qe(a)),c=e.chainDiagnosticMessages(c,s),wv.add(e.createDiagnosticForNodeFromMessageChain(t,c)),ql(t)}return __(t,i,n,s)}function v_(t,n,r){return e.Debug.assert(!(65536&n.flags)),b_(t,n,r)}function b_(e,t,n){if(65536&t.flags){for(var r=void 0,a=0,i=t.types;a0){return __(e,s,n)}}function x_(t,n){switch(t.kind){case 181:return d_(t,n);case 182:return f_(t,n);case 183:return g_(t,n);case 147:return h_(t,n);case 251:case 250:return b_(t,Bd(t.tagName),n)}e.Debug.fail("Branch in 'resolveSignature' should be unreachable.");}function k_(e,t){var n=x(e),r=n.resolvedSignature;if(r&&r!==iv&&!t)return r;n.resolvedSignature=iv;var a=x_(e,t);return n.resolvedSignature=lv===_v?a:r,a}function S_(e){return x(e).resolvedSignature===iv?iv:k_(e)}function T_(e){var t=b(e);return t.inferredClassType||(t.inferredClassType=we(e,e.members,Py,Py,void 0,void 0)),t.inferredClassType}function C_(t){Rg(t,t.typeArguments)||Lg(t,t.arguments);var n=k_(t);if(97===t.expression.kind)return fh;if(182===t.kind){var r=n.declaration;if(r&&152!==r.kind&&156!==r.kind&&161!==r.kind&&!e.isJSDocConstructSignature(r)){var a=71===t.expression.kind?Is(t.expression):Bd(t.expression).symbol;return a&&e.isDeclarationOfFunctionOrClassExpression(a)&&(a=ve(a.valueDeclaration.initializer)),a&&a.members&&16&a.flags?T_(a):(Ky&&l(t,e.Diagnostics.new_expression_whose_target_lacks_a_construct_signature_implicitly_has_an_any_type),th)}}return e.isInJavaScriptFile(t)&&E_(t)?Or(t.arguments[0]):Ir(n)}function E_(t){if(!e.isRequireCall(t,!0))return!1;var n=N(t.expression,t.expression.text,107455,void 0,void 0);if(!n)return!0;if(8388608&n.flags)return!1;var r=16&n.flags?228:3&n.flags?226:0;if(0!==r){var a=e.getDeclarationOfKind(n,r);return e.isInAmbientContext(a)}return!1}function D_(e){return Ir(k_(e))}function N_(t){var n=_s(es(Bd(t.expression)));um(t.type);var r=wi(t.type);return i&&r!==rh&&(mo(r,ms(n))||vo(n,r,t,e.Diagnostics.Type_0_cannot_be_converted_to_type_1)),r}function A_(e){return ss(Bd(e.expression))}function w_(t){sy(t);var n=e.getNewTargetContainer(t);if(n){if(152===n.kind)return Lt(r=ve(n.parent));var r=ve(n);return Lt(r)}return l(t,e.Diagnostics.Meta_property_0_is_only_allowed_in_the_body_of_a_function_declaration_function_expression_or_constructor,"new.target"),rh}function P_(e){var t=Lt(e);if(By){var n=e.valueDeclaration;if(n&&n.initializer)return is(t,2048)}return t}function O_(e,t){return e.hasRestParameter?t0?O_(e,0):mh}function I_(t,n,r,a){var i=t.parameters.length-(t.hasRestParameter?1:0);if(2===a)for(s=0;s=58&&_<=70&&Q_(t,e.Diagnostics.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access)&&ho(n,d,t,void 0);}function u(){l(o||n,e.Diagnostics.Operator_0_cannot_be_applied_to_types_1_and_2,e.tokenToString(n.kind),qe(d),qe(p));}var _=n.kind;if(58===_&&(178===t.kind||177===t.kind))return md(t,Bd(r,a),a);var d=Bd(t,a),p=Bd(r,a);switch(_){case 39:case 40:case 61:case 62:case 41:case 63:case 42:case 64:case 38:case 60:case 45:case 65:case 46:case 66:case 47:case 67:case 49:case 69:case 50:case 70:case 48:case 68:if(d===gh||p===gh)return gh;d=Pl(d,t),p=Pl(p,r);var f=void 0;if(136&d.flags&&136&p.flags&&void 0!==(f=function(e){switch(e){case 49:case 69:return 54;case 50:case 70:return 35;case 48:case 68:return 53;default:return}}(n.kind)))l(o||n,e.Diagnostics.The_0_operator_is_not_allowed_for_boolean_types_Consider_using_1_instead,e.tokenToString(n.kind),e.tokenToString(f));else{var m=W_(t,d,e.Diagnostics.The_left_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type),g=W_(r,p,e.Diagnostics.The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_or_an_enum_type);m&&g&&c(uh);}return uh;case 37:case 59:if(d===gh||p===gh)return gh;od(d,262179)||od(p,262179)||(d=Pl(d,t),p=Pl(p,r));var y=void 0;if(od(d,340)&&od(p,340))y=uh;else if(od(d,262178)||od(p,262178)?y=ch:(ut(d)||ut(p))&&(y=d===rh||p===rh?rh:th),y&&!s(_))return y;return y?(59===_&&c(y),y):(u(),th);case 27:case 29:case 30:case 31:return s(_)&&(d=es(Pl(d,t)),p=es(Pl(p,r)),mo(d,p)||mo(p,d)||u()),dh;case 32:case 33:case 34:case 35:var h=Zo(d),v=Zo(p);return h&&v||(d=h?es(d):d,p=v?es(p):p),hd(d,p)||hd(p,d)||u(),dh;case 93:return ud(t,r,d,p);case 92:return ld(t,r,d,p);case 53:return 1048576&Hs(d)?is(p,as(By?d:es(p))):d;case 54:return 2097152&Hs(d)?vd(os$$1(d),p):d;case 58:return c(p),_s(p);case 26:return Fy.allowUnreachableCode||!yd(t)||function(e){return 71===e.kind&&"eval"===e.text}(r)||l(t,e.Diagnostics.Left_side_of_comma_operator_is_unused_and_has_no_side_effects),p}}function kd(t){for(var n=t,r=t.parent;r;){if(e.isFunctionLike(r)&&n===r.body)return!1;if(e.isClassLike(n))return!0;n=r,r=r.parent;}return!1}function Sd(t){if(i&&(4096&t.flags&&!kd(t)||uy(t,e.Diagnostics.A_yield_expression_is_only_allowed_in_a_generator_body),gu(t)&&l(t,e.Diagnostics.yield_expressions_cannot_be_used_in_a_parameter_initializer)),t.expression){var n=e.getContainingFunction(t),r=n&&e.getFunctionFlags(n);if(t.asteriskToken&&(2&r?Iy<4&&yg(t,4096):Iy<2&&Fy.downlevelIteration&&yg(t,256)),1&r){var a=Nd(t.expression,void 0),o=void 0,s=!!t.asteriskToken;if(s&&(o=pf(a,t.expression,!1,0!=(2&r))),n.type){var c=yf(wi(n.type),0!=(2&r))||th;s?ho(2&r?bp(o,t.expression,e.Diagnostics.Type_of_iterated_elements_of_a_yield_Asterisk_operand_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member):o,c,t.expression,void 0):ho(2&r?bp(a,t.expression,e.Diagnostics.Type_of_yield_operand_in_an_async_generator_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member):a,c,t.expression,void 0);}}}return th}function Td(e,t){return Bd(e.condition),vd(Bd(e.whenTrue,t),Bd(e.whenFalse,t))}function Cd(e){switch(8===e.kind&&vy(e),e.kind){case 9:return ki(Ti(32,e.text));case 8:return ki(Ti(64,e.text));case 101:return lh;case 86:return _h}}function Ed(t){return e.forEach(t.templateSpans,function(e){Bd(e.expression);}),ch}function Dd(e,t,n){var r=e.contextualType,a=e.contextualMapper;e.contextualType=t,e.contextualMapper=n;var i=Bd(e,n===zi?1:n?2:0);return e.contextualType=r,e.contextualMapper=a,i}function Nd(e,t){var n=x(e);if(!n.resolvedType){var r=lv;lv=_v,n.resolvedType=Bd(e,t),lv=r;}return n.resolvedType}function Ad(t){return 184===(t=e.skipParentheses(t)).kind||202===t.kind}function wd(t){var n=Md(t.initializer,!0);return 2&e.getCombinedNodeFlags(t)||64&e.getCombinedModifierFlags(t)&&!e.isParameterPropertyDeclaration(t)||Ad(t.initializer)?n:ts(n)}function Pd(e){if(e){if(540672&e.flags){var t=nr(e)||hh;if(30&t.flags)return!0;e=t;}return id(e,262624)}return!1}function Od(e,t){var n=Bd(e,t);return Ad(e)||Pd(Pu(e))?n:ts(n)}function Fd(e,t){return 144===e.name.kind&&Gu(e.name),Od(e.initializer,t)}function Id(e,t){return Yg(e),144===e.name.kind&&Gu(e.name),Rd(e,$_(e,t),t)}function Rd(e,t,n){if(2===n){var r=Hl(t);if(r&&r.typeParameters){var a=wu(e);if(a){var i=Hl(a);if(i&&!i.typeParameters)return Kr(Xl(r,i,Ou(e)))}}}return t}function Md(t,n){if(181===t.kind&&97!==t.expression.kind&&!e.isRequireCall(t,!0)){var r=Hl(wl(t.expression));if(r&&!r.typeParameters)return Ir(r)}return n?Nd(t):Bd(t)}function Ld(e){var t=e.contextualType;e.contextualType=th;var n=Md(e);return e.contextualType=t,n}function Bd(t,n){var r;return r=143===t.kind?Fl(t):Rd(t,Kd(t,n),n),sd(r)&&(179===t.parent.kind&&t.parent.expression===t||180===t.parent.kind&&t.parent.expression===t||(71===t.kind||143===t.kind)&&Dm(t)||l(t,e.Diagnostics.const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_import_declaration_or_export_assignment)),r}function Kd(t,n){switch(t.kind){case 71:return Hc(t);case 99:return au(t);case 97:return su(t);case 95:return sh;case 9:case 8:case 101:case 86:return Cd(t);case 196:return Ed(t);case 13:return ch;case 12:return Ph;case 177:return Ju(t,n);case 178:return Hu(t,n);case 179:return Ol(t);case 180:return zl(t);case 181:case 182:return C_(t);case 183:return D_(t);case 185:return Bd(t.expression,n);case 199:return Of(t);case 186:case 187:return $_(t,n);case 189:return ed(t);case 184:case 202:return N_(t);case 203:return A_(t);case 204:return w_(t);case 188:return Z_(t);case 190:return td(t);case 191:return nd(t);case 192:return rd(t);case 193:return ad(t);case 194:return bd(t,n);case 195:return Td(t,n);case 198:return Ku(t,n);case 200:return ih;case 197:return Sd(t);case 256:return Tl(t,n);case 249:return Qu(t);case 250:return Yu(t);case 254:return nl(t,n);case 251:e.Debug.fail("Shouldn't ever directly check a JsxOpeningElement");}return rh}function jd(t){t.expression&&uy(t.expression,e.Diagnostics.Type_expected),um(t.constraint),um(t.default);var n=dn(ve(t));rr(n)||l(t.constraint,e.Diagnostics.Type_parameter_0_has_a_circular_constraint,qe(n));var r=er(n),a=or(n);r&&a&&ho(a,Tn(r,a),t.default,e.Diagnostics.Type_0_does_not_satisfy_the_constraint_1),i&&Nf(t.name,e.Diagnostics.Type_parameter_name_cannot_be_0);}function Jd(t){bg(t)||xg(t),Yp(t);var n=e.getContainingFunction(t);92&e.getModifierFlags(t)&&(152===(n=e.getContainingFunction(t)).kind&&e.nodeIsPresent(n.body)||l(t,e.Diagnostics.A_parameter_property_is_only_allowed_in_a_constructor_implementation)),t.questionToken&&e.isBindingPattern(t.name)&&n.body&&l(t,e.Diagnostics.A_binding_pattern_parameter_cannot_be_optional_in_an_implementation_signature),"this"===t.name.text&&(0!==e.indexOf(n.parameters,t)&&l(t,e.Diagnostics.A_this_parameter_must_be_the_first_parameter),152!==n.kind&&156!==n.kind&&161!==n.kind||l(t,e.Diagnostics.A_constructor_cannot_have_a_this_parameter)),!t.dotDotDotToken||e.isBindingPattern(t.name)||Ho(Lt(t.symbol))||l(t,e.Diagnostics.A_rest_parameter_must_be_of_an_array_type);}function zd(e,t){if(e)for(var n=0;n=0)if(n.parameters[r.parameterIndex].dotDotDotToken)l(a,e.Diagnostics.A_type_predicate_cannot_reference_a_rest_parameter);else{var i=e.chainDiagnosticMessages(void 0,e.Diagnostics.A_type_predicate_s_type_must_be_assignable_to_its_parameter_s_type);ho(r.type,Fm(n.parameters[r.parameterIndex]),t.type,void 0,i);}else if(a){for(var o=!1,s=0,c=n.parameters;s0&&n.declarations[0]!==t)return}var r=jr(ve(t));if(r)for(var a=!1,i=!1,o=0,s=r.declarations;o=0)return void(n&&l(n,e.Diagnostics.Type_is_referenced_directly_or_indirectly_in_the_fulfillment_callback_of_its_own_then_method));Av.push(t.id);var _=bp(u,n,r);if(Av.pop(),!_)return;return a.awaitedTypeOfType=_}var d=ct(t,"then");return d&&pr(d,0).length>0?void(n&&(e.Debug.assert(!!r),l(n,r))):a.awaitedTypeOfType=t}function xp(t){var n=wi(t.type);if(Iy>=2){if(n===rh)return rh;var r=ha(!0);if(r!==xh&&!Bt(n,r))return l(t.type,e.Diagnostics.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type),rh}else{if(Sp(t.type),n===rh)return rh;var a=e.getEntityNameFromTypeNode(t.type);if(void 0===a)return l(t.type,e.Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value,qe(n)),rh;var i=ae(a,107455,!0),o=i?Lt(i):rh;if(o===rh)return 71===a.kind&&"Promise"===a.text&&Kt(n)===ha(!1)?l(t.type,e.Diagnostics.An_async_function_or_method_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_declaration_for_the_Promise_constructor_or_include_ES2015_in_your_lib_option):l(t.type,e.Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value,e.entityNameToString(a)),rh;var s=ba(!0);if(s===hh)return l(t.type,e.Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value,e.entityNameToString(a)),rh;if(!ho(o,s,t.type,e.Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value))return rh;var c=a&&Yf(a),u=C(t.locals,c.text,107455);if(u)return l(u.valueDeclaration,e.Diagnostics.Duplicate_identifier_0_Compiler_uses_declaration_1_to_support_async_functions,c.text,e.entityNameToString(a)),rh}return vp(n,t,e.Diagnostics.The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member)}function kp(t){var n=Ir(k_(t));if(!(1&n.flags)){var r,a,i=y_(t);switch(t.parent.kind){case 229:r=Xa([Lt(ve(t.parent)),fh]);break;case 146:r=fh,a=e.chainDiagnosticMessages(a,e.Diagnostics.The_return_type_of_a_parameter_decorator_function_must_be_either_void_or_any);break;case 149:r=fh,a=e.chainDiagnosticMessages(a,e.Diagnostics.The_return_type_of_a_property_decorator_function_must_be_either_void_or_any);break;case 151:case 153:case 154:r=Xa([wa(Fm(t.parent)),fh]);}ho(n,r,t,i,a);}}function Sp(t){var n=t&&e.getEntityNameFromTypeNode(t),r=n&&Yf(n),a=r&&N(r,r.text,8388608|(71===n.kind?793064:1920),void 0,void 0);a&&8388608&a.flags&&ke(a)&&!Ym(Z(a))&&te(a);}function Tp(t){return t.dotDotDotToken?e.getRestParameterElementType(t.type):t.type}function Cp(t){if(t.decorators&&e.nodeCanBeDecorated(t)){Fy.experimentalDecorators||l(t,e.Diagnostics.Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_the_experimentalDecorators_option_to_remove_this_warning);var n=t.decorators[0];if(yg(n,8),146===t.kind&&yg(n,32),Fy.emitDecoratorMetadata)switch(yg(n,16),t.kind){case 229:var r=e.getFirstConstructorWithBody(t);if(r)for(var a=0,i=r.parameters;a=e.ModuleKind.ES2015)&&(jp(t,n,"require")||jp(t,n,"exports"))&&(233!==t.kind||1===e.getModuleInstanceState(t))){var r=ot(t);265===r.kind&&e.isExternalOrCommonJsModule(r)&&l(n,e.Diagnostics.Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module,e.declarationNameToString(n),e.declarationNameToString(n));}}function Gp(t,n){if(!(Iy>=4)&&jp(t,n,"Promise")&&(233!==t.kind||1===e.getModuleInstanceState(t))){var r=ot(t);265===r.kind&&e.isExternalOrCommonJsModule(r)&&1024&r.flags&&l(n,e.Diagnostics.Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module_containing_async_functions,e.declarationNameToString(n),e.declarationNameToString(n));}}function Wp(t){if(0==(3&e.getCombinedNodeFlags(t))&&!e.isParameterDeclaration(t)&&(226!==t.kind||t.initializer)){var n=ve(t);if(1&n.flags){var r=N(t,t.name.text,3,void 0,void 0);if(r&&r!==n&&2&r.flags&&3&Dl(r)){var a=e.getAncestor(r.valueDeclaration,227),i=208===a.parent.kind&&a.parent.parent?a.parent.parent:void 0;if(!(i&&(207===i.kind&&e.isFunctionLike(i.parent)||234===i.kind||233===i.kind||265===i.kind))){var o=Ue(r);l(t,e.Diagnostics.Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1,o,o);}}}}}function Hp(t){function n(a){if(!e.isTypeNode(a)&&!e.isDeclarationName(a)){if(179===a.kind)return n(a.expression);if(71!==a.kind)return e.forEachChild(a,n);var i=N(a,a.text,8496063,void 0,void 0);if(i&&i!==Zy&&i.valueDeclaration)if(i.valueDeclaration!==t){if(e.getEnclosingBlockScopeContainer(i.valueDeclaration)===r){if(146===i.valueDeclaration.kind||176===i.valueDeclaration.kind){if(i.valueDeclaration.pos1)return uy(t,e.Diagnostics.Modifiers_cannot_appear_here)}}function rf(e){hy(e),Bd(e.expression);}function af(t){hy(t),Bd(t.expression),um(t.thenStatement),209===t.thenStatement.kind&&l(t.thenStatement,e.Diagnostics.The_body_of_an_if_statement_cannot_be_the_empty_statement),um(t.elseStatement);}function of(e){hy(e),um(e.statement),Bd(e.expression);}function sf(e){hy(e),Bd(e.expression),um(e.statement);}function cf(t){hy(t)||t.initializer&&227===t.initializer.kind&&ay(t.initializer),t.initializer&&(227===t.initializer.kind?e.forEach(t.initializer.declarations,Zp):Bd(t.initializer)),t.condition&&Bd(t.condition),t.incrementor&&Bd(t.incrementor),um(t.statement),t.locals&&Np(t);}function uf(t){if($g(t),216===t.kind&&(t.awaitModifier?Iy<4&&yg(t,8192):Iy<2&&Fy.downlevelIteration&&yg(t,256)),227===t.initializer.kind)_f(t);else{var n=t.initializer,r=df(t.expression,t.awaitModifier);if(177===n.kind||178===n.kind)md(n,r||rh);else{var a=Bd(n);Q_(n,e.Diagnostics.The_left_hand_side_of_a_for_of_statement_must_be_a_variable_or_a_property_access),r&&ho(r,a,n,void 0);}}um(t.statement),t.locals&&Np(t);}function lf(t){$g(t);var n=wl(t.expression);if(227===t.initializer.kind){var r=t.initializer.declarations[0];r&&e.isBindingPattern(r.name)&&l(r.name,e.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern),_f(t);}else{var a=t.initializer,i=Bd(a);177===a.kind||178===a.kind?l(a,e.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern):po(si(n),i)?Q_(a,e.Diagnostics.The_left_hand_side_of_a_for_in_statement_must_be_a_variable_or_a_property_access):l(a,e.Diagnostics.The_left_hand_side_of_a_for_in_statement_must_be_of_type_string_or_any);}Vu(n,17350656)||l(t.expression,e.Diagnostics.The_right_hand_side_of_a_for_in_statement_must_be_of_type_any_an_object_type_or_a_type_parameter),um(t.statement),t.locals&&Np(t);}function _f(e){var t=e.initializer;t.declarations.length>=1&&Zp(t.declarations[0]);}function df(e,t){return pf(wl(e),e,!0,void 0!==t)}function pf(e,t,n,r){return ut(e)?e:ff(e,t,n,r,!0)||th}function ff(t,n,r,a,i){var o=Iy>=2,s=!o&&Fy.downlevelIteration;if(o||s||a){var c=mf(t,o?n:void 0,a,a,i);if(c||o)return c}var u=t,_=!1,d=!1;if(r){if(65536&u.flags){var p=t.types,f=e.filter(p,function(e){return!(262178&e.flags)});f!==p&&(u=Xa(f,!0));}else 262178&u.flags&&(u=mh);if((d=u!==t)&&(Iy<1&&n&&(l(n,e.Diagnostics.Using_a_string_in_a_for_of_statement_is_only_supported_in_ECMAScript_5_and_higher),_=!0),8192&u.flags))return ch}if(!Xo(u))return n&&!_&&l(n,!r||d?s?e.Diagnostics.Type_0_is_not_an_array_type_or_does_not_have_a_Symbol_iterator_method_that_returns_an_iterator:e.Diagnostics.Type_0_is_not_an_array_type:s?e.Diagnostics.Type_0_is_not_an_array_type_or_a_string_type_or_does_not_have_a_Symbol_iterator_method_that_returns_an_iterator:e.Diagnostics.Type_0_is_not_an_array_type_or_a_string_type,qe(u)),d?ch:void 0;var m=yr(u,1);return d&&m?262178&m.flags?ch:Xa([m,ch],!0):m}function mf(t,n,r,a,i){if(!ut(t)){var o=t;if(r?o.iteratedTypeOfAsyncIterable:o.iteratedTypeOfIterable)return r?o.iteratedTypeOfAsyncIterable:o.iteratedTypeOfIterable;if(r&&(Bt(t,xa(!1))||Bt(t,Sa(!1))))return o.iteratedTypeOfAsyncIterable=t.typeArguments[0];if((!r||a)&&(Bt(t,Ta(!1))||Bt(t,Ea(!1))))return r?o.iteratedTypeOfAsyncIterable=t.typeArguments[0]:o.iteratedTypeOfIterable=t.typeArguments[0];var s,c=!1;if(r){if(ut(u=ct(t,e.getPropertyNameForKnownSymbolName("asyncIterator"))))return;s=u&&pr(u,0);}if(!r||a&&!e.some(s)){var u=ct(t,e.getPropertyNameForKnownSymbolName("iterator"));if(ut(u))return;s=u&&pr(u,0),c=!0;}if(e.some(s)){var _=gf(Xa(e.map(s,Ir),!0),n,!c);return i&&n&&_&&ho(t,c?Fa(_):Pa(_),n),r?o.iteratedTypeOfAsyncIterable=_:o.iteratedTypeOfIterable=_}n&&l(n,r?e.Diagnostics.Type_must_have_a_Symbol_asyncIterator_method_that_returns_an_async_iterator:e.Diagnostics.Type_must_have_a_Symbol_iterator_method_that_returns_an_iterator);}}function gf(t,n,r){if(!ut(t)){var a=t;if(r?a.iteratedTypeOfAsyncIterator:a.iteratedTypeOfIterator)return r?a.iteratedTypeOfAsyncIterator:a.iteratedTypeOfIterator;if(Bt(t,(r?ka:Ca)(!1)))return r?a.iteratedTypeOfAsyncIterator=t.typeArguments[0]:a.iteratedTypeOfIterator=t.typeArguments[0];var i=ct(t,"next");if(!ut(i)){var o=i?pr(i,0):Py;if(0!==o.length){var s=Xa(e.map(o,Ir),!0);if(!(ut(s)||r&&(s=yp(s,n,e.Diagnostics.The_type_returned_by_the_next_method_of_an_async_iterator_must_be_a_promise_for_a_type_with_a_value_property),ut(s)))){var c=s&&ct(s,"value");return c?r?a.iteratedTypeOfAsyncIterator=c:a.iteratedTypeOfIterator=c:void(n&&l(n,r?e.Diagnostics.The_type_returned_by_the_next_method_of_an_async_iterator_must_be_a_promise_for_a_type_with_a_value_property:e.Diagnostics.The_type_returned_by_the_next_method_of_an_iterator_must_have_a_value_property))}}else n&&l(n,r?e.Diagnostics.An_async_iterator_must_have_a_next_method:e.Diagnostics.An_iterator_must_have_a_next_method);}}}function yf(e,t){if(!ut(e))return mf(e,void 0,t,!1,!1)||gf(e,void 0,t)}function hf(e){hy(e)||Qg(e);}function vf(t){return!(153!==t.kind||!e.getSetAccessorTypeAnnotationNode(e.getDeclarationOfKind(t.symbol,154)))}function bf(t,n){var r=2==(3&e.getFunctionFlags(t))?hp(n):n;return r&&id(r,1025)}function xf(t){hy(t)||e.getContainingFunction(t)||uy(t,e.Diagnostics.A_return_statement_can_only_be_used_within_a_function_body);var n=e.getContainingFunction(t);if(n){var r=Ir(Nr(n));if(By||t.expression||8192&r.flags){var a=t.expression?Nd(t.expression):ah,i=e.getFunctionFlags(n);if(1&i)return;if(154===n.kind)t.expression&&l(t,e.Diagnostics.Setters_cannot_return_a_value);else if(152===n.kind)t.expression&&!ho(a,r,t)&&l(t,e.Diagnostics.Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class);else if(n.type||vf(n))if(2&i){var o=hp(r),s=vp(a,t,e.Diagnostics.The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member);o&&ho(s,o,t);}else ho(a,r,t);}else 152!==n.kind&&Fy.noImplicitReturns&&!bf(n,r)&&l(t,e.Diagnostics.Not_all_code_paths_return_a_value);}}function kf(t){hy(t)||16384&t.flags&&uy(t,e.Diagnostics.with_statements_are_not_allowed_in_an_async_function_block),Bd(t.expression);var n=e.getSourceFileOfNode(t);if(!cy(n)){var r=e.getSpanOfTokenAtPosition(n,t.pos).start;ly(n,r,t.statement.pos-r,e.Diagnostics.The_with_statement_is_not_supported_All_symbols_in_a_with_block_will_have_type_any);}}function Sf(t){hy(t);var n,r=!1,a=Bd(t.expression),o=Zo(a);e.forEach(t.caseBlock.clauses,function(s){if(258===s.kind&&!r)if(void 0===n)n=s;else{var c=e.getSourceFileOfNode(t),u=e.skipTrivia(c.text,s.pos);ly(c,u,(s.statements.length>0?s.statements[0].pos:s.end)-u,e.Diagnostics.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement),r=!0;}if(i&&257===s.kind){var l=s,_=Bd(l.expression),d=Zo(_),p=a;d&&o||(_=d?es(_):_,p=es(a)),hd(p,_)||vo(_,p,l.expression,void 0);}e.forEach(s.statements,um);}),t.caseBlock.locals&&Np(t.caseBlock);}function Tf(t){hy(t)||e.findAncestor(t.parent,function(n){if(e.isFunctionLike(n))return"quit";if(222===n.kind&&n.label.text===t.label.text){var r=e.getSourceFileOfNode(t);return _y(t.label,e.Diagnostics.Duplicate_label_0,e.getTextOfNodeFromSourceText(r.text,t.label)),!0}}),um(t.statement);}function Cf(t){hy(t)||void 0===t.expression&&by(t,e.Diagnostics.Line_break_not_permitted_here),t.expression&&Bd(t.expression);}function Ef(t){hy(t),Bp(t.tryBlock);var n=t.catchClause;if(n){if(n.variableDeclaration)if(n.variableDeclaration.type)uy(n.variableDeclaration.type,e.Diagnostics.Catch_clause_variable_cannot_have_a_type_annotation);else if(n.variableDeclaration.initializer)uy(n.variableDeclaration.initializer,e.Diagnostics.Catch_clause_variable_cannot_have_an_initializer);else{var r=n.block.locals;r&&e.forEachKey(n.locals,function(t){var n=r.get(t);n&&0!=(2&n.flags)&&_y(n.valueDeclaration,e.Diagnostics.Cannot_redeclare_identifier_0_in_catch_clause,t);});}Bp(n.block);}t.finallyBlock&&Bp(t.finallyBlock);}function Df(t){function n(t,n,r,a,i,o){if(i){var s=t.valueDeclaration;if(1!==o||(s?zu(s.name):$u(t.name))){var c;!s||144!==s.name.kind&&t.parent!==r.symbol?a?c=a:2&k(r)&&(c=e.forEach(Qt(r),function(e){return Xn(e,t.name)&&yr(e,o)})?void 0:r.symbol.declarations[0]):c=s,c&&!po(n,i)&&l(c,0===o?e.Diagnostics.Property_0_of_type_1_is_not_assignable_to_string_index_type_2:e.Diagnostics.Property_0_of_type_1_is_not_assignable_to_numeric_index_type_2,Ue(t),qe(n),qe(i));}}}var r=Jr(t.symbol,1),a=Jr(t.symbol,0),i=yr(t,0),o=yr(t,1);if((i||o)&&(e.forEach(Hn(t),function(e){var s=Lt(e);n(e,s,t,a,i,0),n(e,s,t,r,o,1);}),1&k(t)&&e.isClassLike(t.symbol.valueDeclaration)))for(var s=0,c=t.symbol.valueDeclaration.members;sr)return!1;for(var u=0;u>s;case 47:return a>>>s;case 45:return a<1&&e.forEach(r.declarations,function(t){e.isConstEnumDeclaration(t)!==n&&l(t.name,e.Diagnostics.Enum_declarations_must_all_be_const_or_non_const);});var a=!1;e.forEach(r.declarations,function(t){if(232!==t.kind)return!1;var n=t;if(!n.members.length)return!1;var r=n.members[0];r.initializer||(a?l(r.name,e.Diagnostics.In_an_enum_with_multiple_declarations_only_one_declaration_can_omit_an_initializer_for_its_first_enum_element):a=!0);});}}}function Gf(t){for(var n=0,r=t.declarations;n1&&!r&&e.isInstantiatedModule(t,Fy.preserveConstEnums||Fy.isolatedModules)){var s=Gf(o);s&&(e.getSourceFileOfNode(t)!==e.getSourceFileOfNode(s)?l(t.name,e.Diagnostics.A_namespace_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merged):t.pos1)for(var s=0,c=a;s0?e.concatenate(o,i):i}return e.forEach(r.getSourceFiles(),dm),wv.getDiagnostics()}function gm(){return ym(),wv.getGlobalDiagnostics()}function ym(){if(!i)throw new Error("Trying to get diagnostics from a type checker that does not produce them.")}function hm(e){if(e)for(;e.parent;){if(220===e.parent.kind&&e.parent.statement===e)return!0;e=e.parent;}return!1}function vm(t,n){function r(e,t){if(e.flags&t){var n=e.name;i.has(n)||i.set(n,e);}}function a(e,t){t&&e.forEach(function(e){r(e,t);});}if(hm(t))return[];var i=e.createMap(),o=0;return function(){for(;t;){switch(t.locals&&!T(t)&&a(t.locals,n),t.kind){case 265:if(!e.isExternalOrCommonJsModule(t))break;case 233:a(ve(t).exports,8914931&n);break;case 232:a(ve(t).exports,8&n);break;case 199:t.name&&r(t.symbol,n);case 229:case 230:32&o||a(ve(t).members,793064&n);break;case 186:t.name&&r(t.symbol,n);}e.introducesArgumentsExoticObject(t)&&r(Vy,n),o=e.getModifierFlags(t),t=t.parent;}a(uv,n);}(),xr(i)}function bm(e){return 71===e.kind&&xm(e.parent)&&e.parent.name===e}function xm(e){switch(e.kind){case 145:case 229:case 230:case 231:case 232:return!0}}function km(e){for(var t=e;t.parent&&143===t.parent.kind;)t=t.parent;return t.parent&&(159===t.parent.kind||277===t.parent.kind)}function Sm(e){for(var t=e;t.parent&&179===t.parent.kind;)t=t.parent;return t.parent&&201===t.parent.kind}function Tm(t,n){for(var r;;){if(!(t=e.getContainingClass(t)))break;if(r=n(t))break}return r}function Cm(e,t){return!!Tm(e,function(e){return e===t})}function Em(e){for(;143===e.parent.kind;)e=e.parent;return 237===e.parent.kind?e.parent.moduleReference===e&&e.parent:243===e.parent.kind?e.parent.expression===e&&e.parent:void 0}function Dm(e){return void 0!==Em(e)}function Nm(t){switch(e.getSpecialPropertyAssignmentKind(t.parent.parent)){case 1:case 3:return ve(t.parent);case 4:case 2:case 5:return ve(t.parent.parent)}}function Am(t){if(e.isDeclarationName(t))return ve(t.parent);if(e.isInJavaScriptFile(t)&&179===t.parent.kind&&t.parent===t.parent.parent.left){var n=Nm(t);if(n)return n}if(243===t.parent.kind&&e.isEntityNameExpression(t))return ae(t,9289727);if(179!==t.kind&&Dm(t)){var r=e.getAncestor(t,237);return e.Debug.assert(void 0!==r),ne(t,!0)}if(e.isRightSideOfQualifiedNameOrPropertyAccess(t)&&(t=t.parent),Sm(t)){var a=0;201===t.parent.kind?(a=793064,e.isExpressionWithTypeArgumentsInClassExtendsClause(t.parent)&&(a|=107455)):a=1920;var i=ae(t,a|=8388608);if(i)return i}if(e.isPartOfExpression(t)){if(e.nodeIsMissing(t))return;if(71===t.kind)return e.isJSXTagName(t)&&el(t)?al(t.parent):ae(t,107455,!1,!0);if(179===t.kind)return(o=x(t).resolvedSymbol)||Ol(t),x(t).resolvedSymbol;if(143===t.kind){var o=x(t).resolvedSymbol;return o||Fl(t),x(t).resolvedSymbol}}else{if(km(t))return ae(t,a=159===t.parent.kind||277===t.parent.kind?793064:1920,!1,!0);if(253===t.parent.kind)return gl(t.parent)}return 158===t.parent.kind?ae(t,1):void 0}function wm(t){if(265===t.kind)return e.isExternalModule(t)?he(t.symbol):void 0;if(!hm(t)){if(e.isDeclarationName(t))return ve(t.parent);if(e.isLiteralComputedPropertyDeclarationName(t))return ve(t.parent.parent);if(71===t.kind){if(Dm(t))return Am(t);if(176===t.parent.kind&&174===t.parent.parent.kind&&t===t.parent.propertyName){var n=Fm(t.parent.parent),r=n&&_r(n,t.text);if(r)return r}}switch(t.kind){case 71:case 179:case 143:return Am(t);case 99:var a=e.getThisContainer(t,!1);if(e.isFunctionLike(a)){var i=Nr(a);if(i.thisParameter)return i.thisParameter}case 97:return(e.isPartOfExpression(t)?Md(t):wi(t)).symbol;case 169:return wi(t).symbol;case 123:var o=t.parent;if(o&&152===o.kind)return o.parent.symbol;return;case 9:if(e.isExternalModuleImportEqualsDeclaration(t.parent.parent)&&e.getExternalModuleImportEqualsDeclarationExpression(t.parent.parent)===t||(238===t.parent.kind||244===t.parent.kind)&&t.parent.moduleSpecifier===t)return ie(t,t);if(e.isInJavaScriptFile(t)&&e.isRequireCall(t.parent,!1))return ie(t,t);case 8:if(180===t.parent.kind&&t.parent.argumentExpression===t){var s=Md(t.parent.expression);if(s===rh)return;var c=sr(s);if(c===rh)return;return _r(c,t.text)}}}}function Pm(e){if(e&&262===e.kind)return ae(e.name,8496063)}function Om(e){return e.parent.parent.moduleSpecifier?$(e.parent.parent,e):ae(e.propertyName||e.name,9289727)}function Fm(t){if(hm(t))return rh;if(e.isPartOfTypeNode(t)){var n=wi(t);return n&&e.isExpressionWithTypeArgumentsInClassImplementsClause(t)&&(n=Tn(n,(r=Fm(e.getContainingClass(t))).thisType)),n}if(e.isPartOfExpression(t))return Mm(t);if(e.isExpressionWithTypeArgumentsInClassExtendsClause(t)){var r=fn(ve(e.getContainingClass(t))),a=Qt(r)[0];return a&&Tn(a,r.thisType)}if(xm(t))return fn(i=ve(t));if(bm(t))return(i=wm(t))&&fn(i);if(e.isDeclaration(t))return Lt(i=ve(t));if(e.isDeclarationName(t))return(i=wm(t))&&Lt(i);if(e.isBindingPattern(t))return ht(t.parent,!0);if(Dm(t)){var i=wm(t),o=i&&fn(i);return o!==rh?o:Lt(i)}return rh}function Im(t){if(e.Debug.assert(178===t.kind||177===t.kind),216===t.parent.kind)return md(t,(n=df(t.parent.expression,t.parent.awaitModifier))||rh);if(194===t.parent.kind){var n=Md(t.parent.right);return md(t,n||rh)}if(261===t.parent.kind)return dd(Im(t.parent.parent)||rh,t.parent);e.Debug.assert(177===t.parent.kind);var r=Im(t.parent),a=pf(r||rh,t.parent,!1,!1)||rh;return fd(t.parent,r,e.indexOf(t.parent.elements,t),a||rh)}function Rm(e){var t=Im(e.parent.parent);return t&&_r(t,e.text)}function Mm(t){return e.isRightSideOfQualifiedNameOrPropertyAccess(t)&&(t=t.parent),Si(Md(t))}function Lm(t){var n=ve(t.parent);return 32&e.getModifierFlags(t)?Lt(n):fn(n)}function Bm(t){var n=bn(Qn(t=sr(t)));return(pr(t,0).length||pr(t,1).length)&&e.forEach(Qn(Ch),function(e){n.has(e.name)||n.set(e.name,e);}),Ne(n)}function Km(t){if(6&S(t)){var n=[],r=t.name;return e.forEach(b(t).containingType.types,function(e){var t=_r(e,r);t&&n.push(t);}),n}if(134217728&t.flags){if(t.leftSpread){var a=t;return Km(a.leftSpread).concat(Km(a.rightSpread))}if(t.syntheticOrigin)return Km(t.syntheticOrigin);for(var i=void 0,o=t;o=b(o).target;)i=o;if(i)return[i]}return[t]}function jm(t){return!(e.isGeneratedIdentifier(t)||!(t=e.getParseTreeNode(t,e.isIdentifier)))&&(!(179===t.parent.kind&&t.parent.name===t)&&dg(t)===Vy)}function Jm(t){function n(e){return(e=Q(e))&&!!(107455&e.flags)}var r=ie(t.parent,t);if(!r||e.isShorthandAmbientModuleSymbol(r))return!0;var a=le(r),i=b(r=ce(r));return void 0===i.exportsSomeValue&&(i.exportsSomeValue=a?!!(107455&r.flags):e.forEachEntry(me(r),n)),i.exportsSomeValue}function zm(t){var n=t.parent;return n&&e.isModuleOrEnumDeclaration(n)&&t===n.name}function Um(t,n){if(t=e.getParseTreeNode(t,e.isIdentifier)){var r=dg(t,zm(t));if(r){if(1048576&r.flags){var a=he(r.exportSymbol);if(!n&&944&a.flags)return;r=a;}var i=be(r);if(i){if(512&i.flags&&265===i.valueDeclaration.kind){var o=i.valueDeclaration;return o!==e.getSourceFileOfNode(t)?void 0:o}return e.findAncestor(t.parent,function(t){return e.isModuleOrEnumDeclaration(t)&&ve(t)===i})}}}}function Vm(t){if(t=e.getParseTreeNode(t,e.isIdentifier)){var n=dg(t);if(n&&8388608&n.flags)return K(n)}}function qm(t){if(418&t.flags){var n=b(t);if(void 0===n.isDeclarationWithCollidingName){var r=e.getEnclosingBlockScopeContainer(t.valueDeclaration);if(e.isStatementWithLocals(r)){var a=x(t.valueDeclaration);if(N(r.parent,t.name,107455,void 0,void 0))n.isDeclarationWithCollidingName=!0;else if(131072&a.flags){var i=262144&a.flags,o=e.isIterationStatement(r,!1),s=207===r.kind&&e.isIterationStatement(r.parent,!1);n.isDeclarationWithCollidingName=!(e.isBlockScopedContainerTopLevel(r)||i&&(o||s));}else n.isDeclarationWithCollidingName=!1;}}return n.isDeclarationWithCollidingName}return!1}function $m(t){if(!e.isGeneratedIdentifier(t)&&(t=e.getParseTreeNode(t,e.isIdentifier))){var n=dg(t);if(n&&qm(n))return n.valueDeclaration}}function Gm(t){if(t=e.getParseTreeNode(t,e.isDeclaration)){var n=ve(t);if(n)return qm(n)}return!1}function Wm(t){switch(t.kind){case 237:case 239:case 240:case 242:case 246:return Xm(ve(t)||Zy);case 244:var n=t.exportClause;return n&&e.forEach(n.elements,Wm);case 243:return!t.expression||71!==t.expression.kind||Xm(ve(t)||Zy)}return!1}function Hm(t){return!(void 0===(t=e.getParseTreeNode(t,e.isImportEqualsDeclaration))||265!==t.parent.kind||!e.isInternalModuleImportEqualsDeclaration(t))&&(Xm(ve(t))&&t.moduleReference&&!e.nodeIsMissing(t.moduleReference))}function Xm(e){var t=Z(e);return t===Zy||107455&t.flags&&(Fy.preserveConstEnums||!Ym(t))}function Ym(e){return cd(e)||e.constEnumOnlyModule}function Qm(t,n){if(e.isAliasSymbolDeclaration(t)){var r=ve(t);if(r&&b(r).referenced)return!0}return!!n&&e.forEachChild(t,function(e){return Qm(e,n)})}function Zm(t){if(e.nodeIsPresent(t.body)){var n=Pr(ve(t));return n.length>1||1===n.length&&n[0].declaration!==t}return!1}function eg(t){return By&&!Tr(t)&&t.initializer&&!(92&e.getModifierFlags(t))}function tg(e){return x(e).flags}function ng(e){return qf(e.parent),x(e).enumMemberValue}function rg(e){switch(e.kind){case 264:case 179:case 180:return!0}return!1}function ag(t){if(264===t.kind)return ng(t);var n=x(t).resolvedSymbol;return n&&8&n.flags&&e.isConstEnumDeclaration(n.valueDeclaration.parent)?ng(n.valueDeclaration):void 0}function ig(e){return 32768&e.flags&&pr(e,0).length>0}function og(t,n){var r=ae(t,107455,!0,!1,n),a=ae(t,793064,!0,!1,n);if(r&&r===a){var i=va(!1);if(i&&r===i)return e.TypeReferenceSerializationKind.Promise;var o=Lt(r);if(o&&Gt(o))return e.TypeReferenceSerializationKind.TypeWithConstructSignatureAndValue}if(!a)return e.TypeReferenceSerializationKind.ObjectType;var s=fn(a);return s===rh?e.TypeReferenceSerializationKind.Unknown:1&s.flags?e.TypeReferenceSerializationKind.ObjectType:od(s,15360)?e.TypeReferenceSerializationKind.VoidNullableOrNeverType:od(s,136)?e.TypeReferenceSerializationKind.BooleanType:od(s,340)?e.TypeReferenceSerializationKind.NumberLikeType:od(s,262178)?e.TypeReferenceSerializationKind.StringLikeType:ns(s)?e.TypeReferenceSerializationKind.ArrayLikeType:od(s,512)?e.TypeReferenceSerializationKind.ESSymbolType:ig(s)?e.TypeReferenceSerializationKind.TypeWithCallSignature:Ho(s)?e.TypeReferenceSerializationKind.ArrayLikeType:e.TypeReferenceSerializationKind.ObjectType}function sg(e,t,n,r){var a=ve(e),i=!a||133120&a.flags?rh:ts(Lt(a));4096&n&&(i=is(i,2048)),Ze().buildTypeDisplay(i,r,t,n);}function cg(e,t,n,r){var a=Nr(e);Ze().buildTypeDisplay(Ir(a),r,t,n);}function ug(e,t,n,r){var a=ms(Mm(e));Ze().buildTypeDisplay(a,r,t,n);}function lg(e,t,n,r){var a=fn(ve(e));Zt(a);var i=a.resolvedBaseTypes.length?a.resolvedBaseTypes[0]:rh;i.symbol||r.reportIllegalExtends(),Ze().buildTypeDisplay(i,r,t,n);}function _g(e){return uv.has(e)}function dg(t,n){var r=x(t).resolvedSymbol;if(r)return r;var a=t;if(n){var i=t.parent;e.isDeclaration(i)&&t===i.name&&(a=ot(i));}return N(a,t.text,9544639,void 0,void 0)}function pg(t){if(!e.isGeneratedIdentifier(t)&&(t=e.getParseTreeNode(t,e.isIdentifier))){var n=dg(t);if(n)return xe(n).valueDeclaration}}function fg(t){if(e.isConst(t)){var n=Lt(ve(t));return!!(96&n.flags&&1048576&n.flags)}return!1}function mg(e,t){var n=Lt(ve(e));t.writeStringLiteral(Ye(n));}function gg(t){var n=e.getExternalModuleName(t),r=oe(n,n,void 0);if(r)return e.getDeclarationOfKind(r,265)}function yg(t,n){if((Sy&n)!==n&&Fy.importHelpers){var r=e.getSourceFileOfNode(t);if(e.isEffectiveExternalModule(r,Fy)&&!e.isInAmbientContext(t)){var a=vg(r,t);if(a!==Zy)for(var i=n&~Sy,o=1;o<=8192;o<<=1)if(i&o){var s=hg(o);C(a.exports,e.escapeIdentifier(s),107455)||l(t,e.Diagnostics.This_syntax_requires_an_imported_helper_named_1_but_module_0_has_no_exported_member_1,e.externalHelpersModuleNameText,s);}Sy|=n;}}}function hg(t){switch(t){case 1:return"__extends";case 2:return"__assign";case 4:return"__rest";case 8:return"__decorate";case 16:return"__metadata";case 32:return"__param";case 64:return"__awaiter";case 128:return"__generator";case 256:return"__values";case 512:return"__read";case 1024:return"__spread";case 2048:return"__asyncGenerator";case 4096:return"__asyncDelegator";case 8192:return"__asyncValues";default:e.Debug.fail("Unrecognized helper.");}}function vg(t,n){return Ty||(Ty=se(t,e.externalHelpersModuleNameText,e.Diagnostics.This_syntax_requires_an_imported_helper_but_module_0_cannot_be_found,n)||Zy),Ty}function bg(t){if(!t.decorators)return!1;if(!e.nodeCanBeDecorated(t))return 151!==t.kind||e.nodeIsPresent(t.body)?uy(t,e.Diagnostics.Decorators_are_not_valid_here):uy(t,e.Diagnostics.A_decorator_can_only_decorate_a_method_implementation_not_an_overload);if(153===t.kind||154===t.kind){var n=e.getAllAccessorDeclarations(t.parent.members,t);if(n.firstAccessor.decorators&&t===n.secondAccessor)return uy(t,e.Diagnostics.Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name)}return!1}function xg(t){var n=kg(t);if(void 0!==n)return n;for(var r,a,i,o,s=0,c=0,u=t.modifiers;c1||e.modifiers[0].kind!==t}function Cg(t,n){switch(t.kind){case 151:case 228:case 186:case 187:return!1}return _y(n,e.Diagnostics._0_modifier_cannot_be_used_here,"async")}function Eg(t){if(t&&t.hasTrailingComma){var n=t.end-",".length,r=t.end;return ly(e.getSourceFileOfNode(t[0]),n,r-n,e.Diagnostics.Trailing_comma_not_allowed)}}function Dg(t,n){if(Eg(t))return!0;if(t&&0===t.length){var r=t.pos-"<".length;return ly(n,r,e.skipTrivia(n.text,t.end)+">".length-r,e.Diagnostics.Type_parameter_list_cannot_be_empty)}}function Ng(t){for(var n=!1,r=t.length,a=0;a".length-a,e.Diagnostics.Type_argument_list_cannot_be_empty)}}function Rg(e,t){return Eg(t)||Ig(e,t)}function Mg(t,n){if(n)for(var r=e.getSourceFileOfNode(t),a=0,i=n;a1)return uy(o.types[1],e.Diagnostics.Classes_can_only_extend_a_single_class);n=!0;}else{if(e.Debug.assert(108===o.token),r)return uy(o,e.Diagnostics.implements_clause_already_seen);r=!0;}Bg(o);}}function jg(t){var n=!1;if(t.heritageClauses)for(var r=0,a=t.heritageClauses;r1){i=215===t.kind?e.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement:e.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement;return uy(n.declarations[1],i)}var a=r[0];if(a.initializer){var i=215===t.kind?e.Diagnostics.The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer:e.Diagnostics.The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer;return _y(a.name,i)}if(a.type)return _y(a,i=215===t.kind?e.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation:e.Diagnostics.The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation)}}return!1}function Gg(t){var n=t.kind;if(Iy<1)return _y(t.name,e.Diagnostics.Accessors_are_only_available_when_targeting_ECMAScript_5_and_higher);if(e.isInAmbientContext(t))return _y(t.name,e.Diagnostics.An_accessor_cannot_be_declared_in_an_ambient_context);if(!(void 0!==t.body||128&e.getModifierFlags(t)))return ly(e.getSourceFileOfNode(t),t.end-1,";".length,e.Diagnostics._0_expected,"{");if(t.body&&128&e.getModifierFlags(t))return _y(t,e.Diagnostics.An_abstract_accessor_cannot_have_an_implementation);if(t.typeParameters)return _y(t.name,e.Diagnostics.An_accessor_cannot_have_type_parameters);if(!Wg(t))return _y(t.name,153===n?e.Diagnostics.A_get_accessor_cannot_have_parameters:e.Diagnostics.A_set_accessor_must_have_exactly_one_parameter);if(154===n){if(t.type)return _y(t.name,e.Diagnostics.A_set_accessor_cannot_have_a_return_type_annotation);var r=t.parameters[0];if(r.dotDotDotToken)return _y(r.dotDotDotToken,e.Diagnostics.A_set_accessor_cannot_have_rest_parameter);if(r.questionToken)return _y(r.questionToken,e.Diagnostics.A_set_accessor_cannot_have_an_optional_parameter);if(r.initializer)return _y(t.name,e.Diagnostics.A_set_accessor_parameter_cannot_have_an_initializer)}}function Wg(e){return Hg(e)||e.parameters.length===(153===e.kind?0:1)}function Hg(t){if(t.parameters.length===(153===t.kind?1:2))return e.getThisParameter(t)}function Xg(t,n){if(e.isDynamicName(t))return _y(t,n)}function Yg(t){if(nf(t)||Ag(t)||zg(t))return!0;if(178===t.parent.kind){if(Ug(t.questionToken,e.Diagnostics.An_object_member_cannot_be_declared_optional))return!0;if(void 0===t.body)return ly(e.getSourceFileOfNode(t),t.end-1,";".length,e.Diagnostics._0_expected,"{")}if(e.isClassLike(t.parent)){if(e.isInAmbientContext(t))return Xg(t.name,e.Diagnostics.A_computed_property_name_in_an_ambient_context_must_directly_refer_to_a_built_in_symbol);if(!t.body)return Xg(t.name,e.Diagnostics.A_computed_property_name_in_a_method_overload_must_directly_refer_to_a_built_in_symbol)}else{if(230===t.parent.kind)return Xg(t.name,e.Diagnostics.A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol);if(163===t.parent.kind)return Xg(t.name,e.Diagnostics.A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_symbol)}}function Qg(t){for(var n=t;n;){if(e.isFunctionLike(n))return _y(t,e.Diagnostics.Jump_target_cannot_cross_function_boundary);switch(n.kind){case 222:if(t.label&&n.label.text===t.label.text)return!(217!==t.kind||e.isIterationStatement(n.statement,!0))&&_y(t,e.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement);break;case 221:if(218===t.kind&&!t.label)return!1;break;default:if(e.isIterationStatement(n,!1)&&!t.label)return!1}n=n.parent;}if(t.label)return _y(t,r=218===t.kind?e.Diagnostics.A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement:e.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement);var r=218===t.kind?e.Diagnostics.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement:e.Diagnostics.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement;return _y(t,r)}function Zg(t){if(t.dotDotDotToken){var n=t.parent.elements;if(t!==e.lastOrUndefined(n))return _y(t,e.Diagnostics.A_rest_element_must_be_last_in_a_destructuring_pattern);if(175===t.name.kind||174===t.name.kind)return _y(t.name,e.Diagnostics.A_rest_element_cannot_contain_a_binding_pattern);if(t.initializer)return ly(e.getSourceFileOfNode(t),t.initializer.pos-1,1,e.Diagnostics.A_rest_element_cannot_have_an_initializer)}}function ey(e){return 9===e.kind||8===e.kind||192===e.kind&&38===e.operator&&8===e.operand.kind}function ty(t){if(215!==t.parent.parent.kind&&216!==t.parent.parent.kind)if(e.isInAmbientContext(t)){if(t.initializer){if(!e.isConst(t)||t.type){n="=".length;return ly(e.getSourceFileOfNode(t),t.initializer.pos-n,n,e.Diagnostics.Initializers_are_not_allowed_in_ambient_contexts)}if(!ey(t.initializer))return _y(t.initializer,e.Diagnostics.A_const_initializer_in_an_ambient_context_must_be_a_string_or_numeric_literal)}if(t.initializer&&(!e.isConst(t)||!ey(t.initializer))){var n="=".length;return ly(e.getSourceFileOfNode(t),t.initializer.pos-n,n,e.Diagnostics.Initializers_are_not_allowed_in_ambient_contexts)}}else if(!t.initializer){if(e.isBindingPattern(t.name)&&!e.isBindingPattern(t.parent))return _y(t,e.Diagnostics.A_destructuring_declaration_must_have_an_initializer);if(e.isConst(t))return _y(t,e.Diagnostics.const_declarations_must_be_initialized)}return Fy.module===e.ModuleKind.ES2015||Fy.module===e.ModuleKind.System||Fy.noEmit||e.isInAmbientContext(t.parent.parent)||!e.hasModifier(t.parent.parent,1)||ny(t.name),(e.isLet(t)||e.isConst(t))&&ry(t.name)}function ny(t){if(71===t.kind){if("__esModule"===e.unescapeIdentifier(t.text))return _y(t,e.Diagnostics.Identifier_expected_esModule_is_reserved_as_an_exported_marker_when_transforming_ECMAScript_modules)}else for(var n=0,r=t.elements;n0}function uy(t,n,r,a,i){var o=e.getSourceFileOfNode(t);if(!cy(o)){var s=e.getSpanOfTokenAtPosition(o,t.pos);return wv.add(e.createFileDiagnostic(o,s.start,s.length,n,r,a,i)),!0}}function ly(t,n,r,a,i,o,s){if(!cy(t))return wv.add(e.createFileDiagnostic(t,n,r,a,i,o,s)),!0}function _y(t,n,r,a,i){if(!cy(e.getSourceFileOfNode(t)))return wv.add(e.createDiagnosticForNode(t,n,r,a,i)),!0}function dy(t){if(t.typeParameters)return ly(e.getSourceFileOfNode(t),t.typeParameters.pos,t.typeParameters.end-t.typeParameters.pos,e.Diagnostics.Type_parameters_cannot_appear_on_a_constructor_declaration)}function py(t){if(t.type)return _y(t.type,e.Diagnostics.Type_annotation_cannot_appear_on_a_constructor_declaration)}function fy(t){if(e.isClassLike(t.parent)){if(Xg(t.name,e.Diagnostics.A_computed_property_name_in_a_class_property_declaration_must_directly_refer_to_a_built_in_symbol))return!0}else if(230===t.parent.kind){if(Xg(t.name,e.Diagnostics.A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol))return!0;if(t.initializer)return _y(t.initializer,e.Diagnostics.An_interface_property_cannot_have_an_initializer)}else if(163===t.parent.kind){if(Xg(t.name,e.Diagnostics.A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_symbol))return!0;if(t.initializer)return _y(t.initializer,e.Diagnostics.A_type_literal_property_cannot_have_an_initializer)}if(e.isInAmbientContext(t)&&t.initializer)return uy(t.initializer,e.Diagnostics.Initializers_are_not_allowed_in_ambient_contexts)}function my(t){return!(230===t.kind||231===t.kind||238===t.kind||237===t.kind||244===t.kind||243===t.kind||236===t.kind||515&e.getModifierFlags(t))&&uy(t,e.Diagnostics.A_declare_modifier_is_required_for_a_top_level_declaration_in_a_d_ts_file)}function gy(t){for(var n=0,r=t.statements;n=1?n=e.Diagnostics.Octal_literals_are_not_available_when_targeting_ECMAScript_5_and_higher_Use_the_syntax_0:e.isChildOfNodeWithKind(t,173)?n=e.Diagnostics.Octal_literal_types_must_use_ES2015_syntax_Use_the_syntax_0:e.isChildOfNodeWithKind(t,264)&&(n=e.Diagnostics.Octal_literals_are_not_allowed_in_enums_members_initializer_Use_the_syntax_0),n){var r=e.isPrefixUnaryExpression(t.parent)&&38===t.parent.operator,a=(r?"-":"")+"0o"+t.text;return _y(r?t.parent:t,n,a)}}}function by(t,n,r,a,i){var o=e.getSourceFileOfNode(t);if(!cy(o)){var s=e.getSpanOfTokenAtPosition(o,t.pos);return wv.add(e.createFileDiagnostic(o,e.textSpanEnd(s),0,n,r,a,i)),!0}}function xy(){var e=[];return uv.forEach(function(t,n){a.test(n)&&e.push(t);}),e}var ky,Sy,Ty,Cy=e.objectAllocator.getSymbolConstructor(),Ey=e.objectAllocator.getTypeConstructor(),Dy=e.objectAllocator.getSignatureConstructor(),Ny=0,Ay=0,wy=0,Py=[],Oy=e.createMap(),Fy=r.getCompilerOptions(),Iy=e.getEmitScriptTarget(Fy),Ry=e.getEmitModuleKind(Fy),My=!!Fy.noUnusedLocals||!!Fy.noUnusedParameters,Ly=void 0!==Fy.allowSyntheticDefaultImports?Fy.allowSyntheticDefaultImports:Ry===e.ModuleKind.System,By=void 0===Fy.strictNullChecks?Fy.strict:Fy.strictNullChecks,Ky=void 0===Fy.noImplicitAny?Fy.strict:Fy.noImplicitAny,jy=void 0===Fy.noImplicitThis?Fy.strict:Fy.noImplicitThis,Jy=function(){function t(e){if(i){var t=179===e.kind||71===e.kind&&Rs(e)?1156031:794600,r=ae(e,t,!0);return r&&r!==Zy?n(r,t):void 0}}function n(t,n){if(i&&a(t)){for(var r,o=0,s=t.declarations;o0){var i=o(r.slice(0,Yr(t)));if(i&&i.length>0)return e.createTupleTypeNode(i)}return void(c.encounteredError||c.flags&e.NodeBuilderFlags.allowEmptyTuple||(c.encounteredError=!0))}var u=t.target.outerTypeParameters,l=0,_=void 0;if(u)for(var d=u.length;l0?e.createUnionOrIntersectionTypeNode(166,y):void(c.encounteredError||c.flags&e.NodeBuilderFlags.allowEmptyUnionOrIntersection||(c.encounteredError=!0))}if(131072&t.flags)return e.createUnionOrIntersectionTypeNode(167,o(t.types));if(48&p)return e.Debug.assert(!!(32768&t.flags)),function(t){var n=t.symbol;if(n){if(32&n.flags&&!Pt(n)||896&n.flags||function(){var t=!!(8192&n.flags&&e.forEach(n.declarations,function(t){return 32&e.getModifierFlags(t)})),r=!!(16&n.flags)&&(n.parent||e.forEach(n.declarations,function(e){return 265===e.parent.kind||234===e.parent.kind}));if(t||r)return e.contains(c.symbolStack,n)}())return _(n);if(e.contains(c.symbolStack,n)){var r=He(t);if(r){var a=s(r,!1);return e.createTypeReferenceNode(a,void 0)}return e.createKeywordTypeNode(119)}c.symbolStack||(c.symbolStack=[]),c.symbolStack.push(n);var i=l(t);return c.symbolStack.pop(),i}return l(t)}(t);if(262144&t.flags){v=n(t.type);return e.createTypeOperatorNode(v)}if(524288&t.flags){var h=n(t.objectType),v=n(t.indexType);return e.createIndexedAccessTypeNode(h,v)}e.Debug.fail("Should be unreachable.");}else c.encounteredError=!0;}function r(t,r){var a=e.createKeywordTypeNode(0===r?136:133),i=e.getNameFromIndexInfo(t),o=e.createParameter(void 0,void 0,void 0,i,void 0,a,void 0),s=n(t.type);return e.createIndexSignatureDeclaration(void 0,t.isReadonly?[e.createToken(131)]:void 0,[o],s)}function a(t,r){var a,s=t.typeParameters&&t.typeParameters.map(function(e){return i(e)}),c=t.parameters.map(function(e){return o(e)});if(t.typePredicate){var u=t.typePredicate,l=1===u.kind?e.createIdentifier(u.parameterName):e.createThisTypeNode(),_=n(u.type);a=e.createTypePredicateNode(l,_);}else{var d=Ir(t);a=d&&n(d);}var p=a&&119!==a.kind?a:void 0;return e.createSignatureDeclaration(r,s,c,p)}function i(t){var r=qr(t),a=r&&n(r),i=or(t),o=i&&n(i),c=s(t.symbol,!0);return e.createTypeParameterDeclaration(c,a,o)}function o(t){var r=e.getDeclarationOfKind(t,146),a=n(Lt(t));return e.createParameter(r.decorators,r.modifiers,r.dotDotDotToken&&e.createToken(24),e.getSynthesizedClone(r.name),r.questionToken&&e.createToken(55),a,r.initializer)}function s(t,n){function r(t,n){e.Debug.assert(t&&0<=n&&n0){var s=t[n-1],u=void 0;if(1&S(a)?u=qt(s):524384&Lf(s).flags&&(u=Vt(a)),u&&u.length>0){c.encounteredError||c.flags&e.NodeBuilderFlags.allowTypeParameterInQualifiedName||(c.encounteredError=!0);var l=e.getSingleLineStringWriter();Ze().buildDisplayForTypeParametersAndDelimiters(u,l,c.enclosingDeclaration,0),o=l.string(),e.releaseStringWriter(l);}}var _=i(a),d=o.length>0?_+"<"+o+">":_,p=e.createIdentifier(d);return n>0?e.createQualifiedName(r(t,n-1),p):p}function a(t,n,r){var i,o=Fe(t,c.enclosingDeclaration,n,!1);if(!o||Ie(o[0],c.enclosingDeclaration,1===o.length?n:Oe(n))){var s=be(o?o[0]:t);if(s){var u=a(s,Oe(n),!1);u&&(i=s,o=u.concat(o||[t]));}}return o||(!r&&(!i&&e.forEach(t.declarations,Le)||6144&t.flags)?void 0:[t])}function i(t){var n=e.firstOrUndefined(t.declarations);if(n){if(n.name)return e.declarationNameToString(n.name);if(n.parent&&226===n.parent.kind)return e.declarationNameToString(n.parent.name);switch(c.encounteredError||c.flags&e.NodeBuilderFlags.allowAnonymousIdentifier||(c.encounteredError=!0),n.kind){case 199:return"(Anonymous class)";case 186:case 187:return"(Anonymous function)"}}return t.name}var o;return!(262144&t.flags)&&c.enclosingDeclaration?(o=a(t,0,!0),e.Debug.assert(o&&o.length>0)):o=[t],!n||1===o.length||c.encounteredError||c.flags&e.NodeBuilderFlags.allowQualifedNameInPlaceOfIdentifier||(c.encounteredError=!0),r(o,o.length-1)}var c;return{typeToTypeNode:function(e,r,a){c=t(r,a);var i=n(e);return c.encounteredError?void 0:i},indexInfoToIndexSignatureDeclaration:function(e,n,a,i){c=t(a,i);var o=r(e,n);return c.encounteredError?void 0:o},signatureToSignatureDeclaration:function(e,n,r,i){c=t(r,i);var o=a(e,n);return c.encounteredError?void 0:o}}}(),Uy=_(4,"undefined");Uy.declarations=[];var Vy=_(4,"arguments"),qy={getNodeCount:function(){return e.sum(r.getSourceFiles(),"nodeCount")},getIdentifierCount:function(){return e.sum(r.getSourceFiles(),"identifierCount")},getSymbolCount:function(){return e.sum(r.getSourceFiles(),"symbolCount")+Ay},getTypeCount:function(){return Ny},isUndefinedSymbol:function(e){return e===Uy},isArgumentsSymbol:function(e){return e===Vy},isUnknownSymbol:function(e){return e===Zy},getMergedSymbol:he,getDiagnostics:fm,getGlobalDiagnostics:gm,getTypeOfSymbolAtLocation:function(t,n){return n=e.getParseTreeNode(n),n?zc(t,n):rh},getSymbolsOfParameterPropertyDeclaration:function(t,n){return t=e.getParseTreeNode(t,e.isParameter),e.Debug.assert(void 0!==t,"Cannot get symbols of a synthetic parameter that cannot be resolved to a parse-tree node."),E(t,n)},getDeclaredTypeOfSymbol:fn,getPropertiesOfType:Qn,getPropertyOfType:_r,getIndexInfoOfType:gr,getSignaturesOfType:pr,getIndexTypeOfType:yr,getBaseTypes:Qt,getBaseTypeOfLiteralType:es,getWidenedType:ms,getTypeFromTypeNode:function(t){return t=e.getParseTreeNode(t,e.isTypeNode),t?wi(t):rh},getParameterType:O_,getReturnTypeOfSignature:Ir,getNonNullableType:ss,typeToTypeNode:zy.typeToTypeNode,indexInfoToIndexSignatureDeclaration:zy.indexInfoToIndexSignatureDeclaration,signatureToSignatureDeclaration:zy.signatureToSignatureDeclaration,getSymbolsInScope:function(t,n){return t=e.getParseTreeNode(t),t?vm(t,n):[]},getSymbolAtLocation:function(t){return t=e.getParseTreeNode(t),t?wm(t):void 0},getShorthandAssignmentValueSymbol:function(t){return t=e.getParseTreeNode(t),t?Pm(t):void 0},getExportSpecifierLocalTargetSymbol:function(t){return t=e.getParseTreeNode(t,e.isExportSpecifier),t?Om(t):void 0},getTypeAtLocation:function(t){return t=e.getParseTreeNode(t),t?Fm(t):rh},getPropertySymbolOfDestructuringAssignment:function(t){return t=e.getParseTreeNode(t,e.isIdentifier),t?Rm(t):void 0},signatureToString:function(t,n,r,a){return Ve(t,e.getParseTreeNode(n),r,a)},typeToString:function(t,n,r){return qe(t,e.getParseTreeNode(n),r)},getSymbolDisplayBuilder:Ze,symbolToString:function(t,n,r){return Ue(t,e.getParseTreeNode(n),r)},getAugmentedPropertiesOfType:Bm,getRootSymbols:Km,getContextualType:function(t){return t=e.getParseTreeNode(t,e.isExpression),t?Pu(t):void 0},getFullyQualifiedName:re,getResolvedSignature:function(t,n){return t=e.getParseTreeNode(t,e.isCallLikeExpression),t?k_(t,n):void 0},getConstantValue:function(t){return t=e.getParseTreeNode(t,rg),t?ag(t):void 0},isValidPropertyAccess:function(t,n){return!!(t=e.getParseTreeNode(t,e.isPropertyAccessOrQualifiedName))&&Bl(t,n)},getSignatureFromDeclaration:function(t){return t=e.getParseTreeNode(t,e.isFunctionLike),t?Nr(t):void 0},isImplementationOfOverload:function(t){return t=e.getParseTreeNode(t,e.isFunctionLike),t?Zm(t):void 0},getImmediateAliasedSymbol:function(t){e.Debug.assert(0!=(8388608&t.flags),"Should only get Alias here.");var n=b(t);if(!n.immediateTarget){var r=K(t);e.Debug.assert(!!r),n.immediateTarget=Y(r,!0);}return n.immediateTarget},getAliasedSymbol:Z,getEmitResolver:u,getExportsOfModule:_e,getExportsAndPropertiesOfModule:de,getAmbientModules:xy,getAllAttributesTypeFromJsxOpeningLikeElement:function(t){return t=e.getParseTreeNode(t,e.isJsxOpeningLikeElement),t?fl(t):void 0},getJsxIntrinsicTagNames:bl,isOptionalParameter:function(t){return!!(t=e.getParseTreeNode(t,e.isParameter))&&Tr(t)},tryGetMemberInModuleExports:pe,tryFindAmbientModuleWithoutAugmentations:function(e){return Sr(e,!1)},getApparentType:sr},$y=[],Gy=e.createMap(),Wy=e.createMap(),Hy=e.createMap(),Xy=e.createMap(),Yy=e.createMap(),Qy=[],Zy=_(4,"unknown"),eh=_(0,"__resolving__"),th=Ce(1,"any"),nh=Ce(1,"any"),rh=Ce(1,"unknown"),ah=Ce(2048,"undefined"),ih=By?ah:Ce(2099200,"undefined"),oh=Ce(4096,"null"),sh=By?oh:Ce(2101248,"null"),ch=Ce(2,"string"),uh=Ce(4,"number"),lh=Ce(128,"true"),_h=Ce(128,"false"),dh=function(e){var t=Xa(e);return t.flags|=8,t.intrinsicName="boolean",t}([lh,_h]),ph=Ce(512,"symbol"),fh=Ce(1024,"void"),mh=Ce(8192,"never"),gh=Ce(8192,"never"),yh=Ce(16777216,"object"),hh=we(void 0,Oy,Py,Py,void 0,void 0),vh=_(2048,"__type");vh.members=e.createMap();var bh=we(vh,Oy,Py,Py,void 0,void 0),xh=we(void 0,Oy,Py,Py,void 0,void 0);xh.instantiations=e.createMap();var kh=we(void 0,Oy,Py,Py,void 0,void 0);kh.flags|=8388608;var Sh,Th,Ch,Eh,Dh,Nh,Ah,wh,Ph,Oh,Fh,Ih,Rh,Mh,Lh,Bh,Kh,jh,Jh,zh,Uh,Vh,qh,$h,Gh,Wh,Hh,Xh,Yh,Qh,Zh,ev,tv=we(void 0,Oy,Py,Py,void 0,void 0),nv=we(void 0,Oy,Py,Py,void 0,void 0),rv=Nn(void 0,void 0,void 0,Py,th,void 0,0,!1,!1),av=Nn(void 0,void 0,void 0,Py,rh,void 0,0,!1,!1),iv=Nn(void 0,void 0,void 0,Py,th,void 0,0,!1,!1),ov=Nn(void 0,void 0,void 0,Py,gh,void 0,0,!1,!1),sv=zr(ch,!0),cv=zr(th,!1),uv=e.createMap(),lv=0,_v=0,dv=0,pv=Ti(32,""),fv=Ti(64,"0"),mv=[],gv=[],yv=[],hv=[],vv=[],bv=[],xv=[],kv=[],Sv=[],Tv=[],Cv=[],Ev=[],Dv=[],Nv=[],Av=[],wv=e.createDiagnosticCollection();!function(e){e[e.None=0]="None",e[e.TypeofEQString=1]="TypeofEQString",e[e.TypeofEQNumber=2]="TypeofEQNumber",e[e.TypeofEQBoolean=4]="TypeofEQBoolean",e[e.TypeofEQSymbol=8]="TypeofEQSymbol",e[e.TypeofEQObject=16]="TypeofEQObject",e[e.TypeofEQFunction=32]="TypeofEQFunction",e[e.TypeofEQHostObject=64]="TypeofEQHostObject",e[e.TypeofNEString=128]="TypeofNEString",e[e.TypeofNENumber=256]="TypeofNENumber",e[e.TypeofNEBoolean=512]="TypeofNEBoolean",e[e.TypeofNESymbol=1024]="TypeofNESymbol",e[e.TypeofNEObject=2048]="TypeofNEObject",e[e.TypeofNEFunction=4096]="TypeofNEFunction",e[e.TypeofNEHostObject=8192]="TypeofNEHostObject",e[e.EQUndefined=16384]="EQUndefined",e[e.EQNull=32768]="EQNull",e[e.EQUndefinedOrNull=65536]="EQUndefinedOrNull",e[e.NEUndefined=131072]="NEUndefined",e[e.NENull=262144]="NENull",e[e.NEUndefinedOrNull=524288]="NEUndefinedOrNull",e[e.Truthy=1048576]="Truthy",e[e.Falsy=2097152]="Falsy",e[e.Discriminatable=4194304]="Discriminatable",e[e.All=8388607]="All",e[e.BaseStringStrictFacts=933633]="BaseStringStrictFacts",e[e.BaseStringFacts=3145473]="BaseStringFacts",e[e.StringStrictFacts=4079361]="StringStrictFacts",e[e.StringFacts=4194049]="StringFacts",e[e.EmptyStringStrictFacts=3030785]="EmptyStringStrictFacts",e[e.EmptyStringFacts=3145473]="EmptyStringFacts",e[e.NonEmptyStringStrictFacts=1982209]="NonEmptyStringStrictFacts",e[e.NonEmptyStringFacts=4194049]="NonEmptyStringFacts",e[e.BaseNumberStrictFacts=933506]="BaseNumberStrictFacts",e[e.BaseNumberFacts=3145346]="BaseNumberFacts",e[e.NumberStrictFacts=4079234]="NumberStrictFacts",e[e.NumberFacts=4193922]="NumberFacts",e[e.ZeroStrictFacts=3030658]="ZeroStrictFacts",e[e.ZeroFacts=3145346]="ZeroFacts",e[e.NonZeroStrictFacts=1982082]="NonZeroStrictFacts",e[e.NonZeroFacts=4193922]="NonZeroFacts",e[e.BaseBooleanStrictFacts=933252]="BaseBooleanStrictFacts",e[e.BaseBooleanFacts=3145092]="BaseBooleanFacts",e[e.BooleanStrictFacts=4078980]="BooleanStrictFacts",e[e.BooleanFacts=4193668]="BooleanFacts",e[e.FalseStrictFacts=3030404]="FalseStrictFacts",e[e.FalseFacts=3145092]="FalseFacts",e[e.TrueStrictFacts=1981828]="TrueStrictFacts",e[e.TrueFacts=4193668]="TrueFacts",e[e.SymbolStrictFacts=1981320]="SymbolStrictFacts",e[e.SymbolFacts=4193160]="SymbolFacts",e[e.ObjectStrictFacts=6166480]="ObjectStrictFacts",e[e.ObjectFacts=8378320]="ObjectFacts",e[e.FunctionStrictFacts=6164448]="FunctionStrictFacts",e[e.FunctionFacts=8376288]="FunctionFacts",e[e.UndefinedFacts=2457472]="UndefinedFacts",e[e.NullFacts=2340752]="NullFacts";}(ev||(ev={}));var Pv,Ov,Fv,Iv,Rv,Mv,Lv=e.createMapFromTemplate({string:1,number:2,boolean:4,symbol:8,undefined:16384,object:16,function:32}),Bv=e.createMapFromTemplate({string:128,number:256,boolean:512,symbol:1024,undefined:131072,object:2048,function:4096}),Kv=e.createMapFromTemplate({string:ch,number:uh,boolean:dh,symbol:ph,undefined:ah}),jv=function(){return Xa(e.convertToArray(Lv.keys(),function(e){return Ti(32,e)}))}(),Jv=!1,zv=!1,Uv=e.createMap(),Vv={JSX:"JSX",IntrinsicElements:"IntrinsicElements",ElementClass:"ElementClass",ElementAttributesPropertyNameContainer:"ElementAttributesProperty",ElementChildrenAttributeNameContainer:"ElementChildrenAttribute",Element:"Element",IntrinsicAttributes:"IntrinsicAttributes",IntrinsicClassAttributes:"IntrinsicClassAttributes"},qv=e.createMap(),$v=e.createMap(),Gv=e.createMap(),Wv=e.createMap(),Hv=e.createMap();!function(e){e[e.Type=0]="Type",e[e.ResolvedBaseConstructorType=1]="ResolvedBaseConstructorType",e[e.DeclaredType=2]="DeclaredType",e[e.ResolvedReturnType=3]="ResolvedReturnType";}(Mv||(Mv={}));var Xv;!function(e){e[e.Normal=0]="Normal",e[e.SkipContextSensitive=1]="SkipContextSensitive",e[e.Inferential=2]="Inferential";}(Xv||(Xv={}));var Yv=e.createMap();return Yv.set(Uy.name,Uy),function(){for(var t=0,n=r.getSourceFiles();ts-a)&&(i=s-a),(a>0||i0&&_<=142||169===_)return o;switch(o.kind){case 206:case 209:case 200:case 225:case 298:case 247:return o;case 143:return e.updateQualifiedName(o,t(o.left,s,e.isEntityName),t(o.right,s,e.isIdentifier));case 144:return e.updateComputedPropertyName(o,t(o.expression,s,e.isExpression));case 160:return e.updateFunctionTypeNode(o,u(o.typeParameters,s,e.isTypeParameter),a(o.parameters,s,c,u),t(o.type,s,e.isTypeNode));case 161:return e.updateConstructorTypeNode(o,u(o.typeParameters,s,e.isTypeParameter),a(o.parameters,s,c,u),t(o.type,s,e.isTypeNode));case 155:return e.updateCallSignatureDeclaration(o,u(o.typeParameters,s,e.isTypeParameter),a(o.parameters,s,c,u),t(o.type,s,e.isTypeNode));case 156:return e.updateConstructSignatureDeclaration(o,u(o.typeParameters,s,e.isTypeParameter),a(o.parameters,s,c,u),t(o.type,s,e.isTypeNode));case 150:return e.updateMethodSignature(o,u(o.typeParameters,s,e.isTypeParameter),a(o.parameters,s,c,u),t(o.type,s,e.isTypeNode),t(o.name,s,e.isPropertyName),t(o.questionToken,l,e.isToken));case 157:return e.updateIndexSignatureDeclaration(o,u(o.decorators,s,e.isDecorator),u(o.modifiers,s,e.isModifier),a(o.parameters,s,c,u),t(o.type,s,e.isTypeNode));case 146:return e.updateParameter(o,u(o.decorators,s,e.isDecorator),u(o.modifiers,s,e.isModifier),t(o.dotDotDotToken,l,e.isToken),t(o.name,s,e.isBindingName),t(o.questionToken,l,e.isToken),t(o.type,s,e.isTypeNode),t(o.initializer,s,e.isExpression));case 147:return e.updateDecorator(o,t(o.expression,s,e.isExpression));case 159:return e.updateTypeReferenceNode(o,t(o.typeName,s,e.isEntityName),u(o.typeArguments,s,e.isTypeNode));case 158:return e.updateTypePredicateNode(o,t(o.parameterName,s),t(o.type,s,e.isTypeNode));case 162:return e.updateTypeQueryNode(o,t(o.exprName,s,e.isEntityName));case 163:return e.updateTypeLiteralNode(o,u(o.members,s));case 164:return e.updateArrayTypeNode(o,t(o.elementType,s,e.isTypeNode));case 165:return e.updateTypleTypeNode(o,u(o.elementTypes,s,e.isTypeNode));case 166:case 167:return e.updateUnionOrIntersectionTypeNode(o,u(o.types,s,e.isTypeNode));case 168:throw e.Debug.fail("not implemented.");case 170:return e.updateTypeOperatorNode(o,t(o.type,s,e.isTypeNode));case 171:return e.updateIndexedAccessTypeNode(o,t(o.objectType,s,e.isTypeNode),t(o.indexType,s,e.isTypeNode));case 172:return e.updateMappedTypeNode(o,t(o.readonlyToken,l,e.isToken),t(o.typeParameter,s,e.isTypeParameter),t(o.questionToken,l,e.isToken),t(o.type,s,e.isTypeNode));case 173:return e.updateLiteralTypeNode(o,t(o.literal,s,e.isExpression));case 145:return e.updateTypeParameterDeclaration(o,t(o.name,s,e.isIdentifier),t(o.constraint,s,e.isTypeNode),t(o.default,s,e.isTypeNode));case 148:return e.updatePropertySignature(o,t(o.name,s,e.isPropertyName),t(o.questionToken,l,e.isToken),t(o.type,s,e.isTypeNode),t(o.initializer,s,e.isExpression));case 149:return e.updateProperty(o,u(o.decorators,s,e.isDecorator),u(o.modifiers,s,e.isModifier),t(o.name,s,e.isPropertyName),t(o.type,s,e.isTypeNode),t(o.initializer,s,e.isExpression));case 151:return e.updateMethod(o,u(o.decorators,s,e.isDecorator),u(o.modifiers,s,e.isModifier),t(o.asteriskToken,l,e.isToken),t(o.name,s,e.isPropertyName),t(o.questionToken,l,e.isToken),u(o.typeParameters,s,e.isTypeParameter),a(o.parameters,s,c,u),t(o.type,s,e.isTypeNode),i(o.body,s,c));case 152:return e.updateConstructor(o,u(o.decorators,s,e.isDecorator),u(o.modifiers,s,e.isModifier),a(o.parameters,s,c,u),i(o.body,s,c));case 153:return e.updateGetAccessor(o,u(o.decorators,s,e.isDecorator),u(o.modifiers,s,e.isModifier),t(o.name,s,e.isPropertyName),a(o.parameters,s,c,u),t(o.type,s,e.isTypeNode),i(o.body,s,c));case 154:return e.updateSetAccessor(o,u(o.decorators,s,e.isDecorator),u(o.modifiers,s,e.isModifier),t(o.name,s,e.isPropertyName),a(o.parameters,s,c,u),i(o.body,s,c));case 174:return e.updateObjectBindingPattern(o,u(o.elements,s,e.isBindingElement));case 175:return e.updateArrayBindingPattern(o,u(o.elements,s,e.isArrayBindingElement));case 176:return e.updateBindingElement(o,t(o.dotDotDotToken,l,e.isToken),t(o.propertyName,s,e.isPropertyName),t(o.name,s,e.isBindingName),t(o.initializer,s,e.isExpression));case 177:return e.updateArrayLiteral(o,u(o.elements,s,e.isExpression));case 178:return e.updateObjectLiteral(o,u(o.properties,s,e.isObjectLiteralElementLike));case 179:return e.updatePropertyAccess(o,t(o.expression,s,e.isExpression),t(o.name,s,e.isIdentifier));case 180:return e.updateElementAccess(o,t(o.expression,s,e.isExpression),t(o.argumentExpression,s,e.isExpression));case 181:return e.updateCall(o,t(o.expression,s,e.isExpression),u(o.typeArguments,s,e.isTypeNode),u(o.arguments,s,e.isExpression));case 182:return e.updateNew(o,t(o.expression,s,e.isExpression),u(o.typeArguments,s,e.isTypeNode),u(o.arguments,s,e.isExpression));case 183:return e.updateTaggedTemplate(o,t(o.tag,s,e.isExpression),t(o.template,s,e.isTemplateLiteral));case 184:return e.updateTypeAssertion(o,t(o.type,s,e.isTypeNode),t(o.expression,s,e.isExpression));case 185:return e.updateParen(o,t(o.expression,s,e.isExpression));case 186:return e.updateFunctionExpression(o,u(o.modifiers,s,e.isModifier),t(o.asteriskToken,l,e.isToken),t(o.name,s,e.isIdentifier),u(o.typeParameters,s,e.isTypeParameter),a(o.parameters,s,c,u),t(o.type,s,e.isTypeNode),i(o.body,s,c));case 187:return e.updateArrowFunction(o,u(o.modifiers,s,e.isModifier),u(o.typeParameters,s,e.isTypeParameter),a(o.parameters,s,c,u),t(o.type,s,e.isTypeNode),i(o.body,s,c));case 188:return e.updateDelete(o,t(o.expression,s,e.isExpression));case 189:return e.updateTypeOf(o,t(o.expression,s,e.isExpression));case 190:return e.updateVoid(o,t(o.expression,s,e.isExpression));case 191:return e.updateAwait(o,t(o.expression,s,e.isExpression));case 194:return e.updateBinary(o,t(o.left,s,e.isExpression),t(o.right,s,e.isExpression));case 192:return e.updatePrefix(o,t(o.operand,s,e.isExpression));case 193:return e.updatePostfix(o,t(o.operand,s,e.isExpression));case 195:return e.updateConditional(o,t(o.condition,s,e.isExpression),t(o.whenTrue,s,e.isExpression),t(o.whenFalse,s,e.isExpression));case 196:return e.updateTemplateExpression(o,t(o.head,s,e.isTemplateHead),u(o.templateSpans,s,e.isTemplateSpan));case 197:return e.updateYield(o,t(o.asteriskToken,l,e.isToken),t(o.expression,s,e.isExpression));case 198:return e.updateSpread(o,t(o.expression,s,e.isExpression));case 199:return e.updateClassExpression(o,u(o.modifiers,s,e.isModifier),t(o.name,s,e.isIdentifier),u(o.typeParameters,s,e.isTypeParameter),u(o.heritageClauses,s,e.isHeritageClause),u(o.members,s,e.isClassElement));case 201:return e.updateExpressionWithTypeArguments(o,u(o.typeArguments,s,e.isTypeNode),t(o.expression,s,e.isExpression));case 202:return e.updateAsExpression(o,t(o.expression,s,e.isExpression),t(o.type,s,e.isTypeNode));case 203:return e.updateNonNullExpression(o,t(o.expression,s,e.isExpression));case 205:return e.updateTemplateSpan(o,t(o.expression,s,e.isExpression),t(o.literal,s,e.isTemplateMiddleOrTemplateTail));case 207:return e.updateBlock(o,u(o.statements,s,e.isStatement));case 208:return e.updateVariableStatement(o,u(o.modifiers,s,e.isModifier),t(o.declarationList,s,e.isVariableDeclarationList));case 210:return e.updateStatement(o,t(o.expression,s,e.isExpression));case 211:return e.updateIf(o,t(o.expression,s,e.isExpression),t(o.thenStatement,s,e.isStatement,e.liftToBlock),t(o.elseStatement,s,e.isStatement,e.liftToBlock));case 212:return e.updateDo(o,t(o.statement,s,e.isStatement,e.liftToBlock),t(o.expression,s,e.isExpression));case 213:return e.updateWhile(o,t(o.expression,s,e.isExpression),t(o.statement,s,e.isStatement,e.liftToBlock));case 214:return e.updateFor(o,t(o.initializer,s,e.isForInitializer),t(o.condition,s,e.isExpression),t(o.incrementor,s,e.isExpression),t(o.statement,s,e.isStatement,e.liftToBlock));case 215:return e.updateForIn(o,t(o.initializer,s,e.isForInitializer),t(o.expression,s,e.isExpression),t(o.statement,s,e.isStatement,e.liftToBlock));case 216:return e.updateForOf(o,o.awaitModifier,t(o.initializer,s,e.isForInitializer),t(o.expression,s,e.isExpression),t(o.statement,s,e.isStatement,e.liftToBlock));case 217:return e.updateContinue(o,t(o.label,s,e.isIdentifier));case 218:return e.updateBreak(o,t(o.label,s,e.isIdentifier));case 219:return e.updateReturn(o,t(o.expression,s,e.isExpression));case 220:return e.updateWith(o,t(o.expression,s,e.isExpression),t(o.statement,s,e.isStatement,e.liftToBlock));case 221:return e.updateSwitch(o,t(o.expression,s,e.isExpression),t(o.caseBlock,s,e.isCaseBlock));case 222:return e.updateLabel(o,t(o.label,s,e.isIdentifier),t(o.statement,s,e.isStatement,e.liftToBlock));case 223:return e.updateThrow(o,t(o.expression,s,e.isExpression));case 224:return e.updateTry(o,t(o.tryBlock,s,e.isBlock),t(o.catchClause,s,e.isCatchClause),t(o.finallyBlock,s,e.isBlock));case 226:return e.updateVariableDeclaration(o,t(o.name,s,e.isBindingName),t(o.type,s,e.isTypeNode),t(o.initializer,s,e.isExpression));case 227:return e.updateVariableDeclarationList(o,u(o.declarations,s,e.isVariableDeclaration));case 228:return e.updateFunctionDeclaration(o,u(o.decorators,s,e.isDecorator),u(o.modifiers,s,e.isModifier),t(o.asteriskToken,l,e.isToken),t(o.name,s,e.isIdentifier),u(o.typeParameters,s,e.isTypeParameter),a(o.parameters,s,c,u),t(o.type,s,e.isTypeNode),i(o.body,s,c));case 229:return e.updateClassDeclaration(o,u(o.decorators,s,e.isDecorator),u(o.modifiers,s,e.isModifier),t(o.name,s,e.isIdentifier),u(o.typeParameters,s,e.isTypeParameter),u(o.heritageClauses,s,e.isHeritageClause),u(o.members,s,e.isClassElement));case 232:return e.updateEnumDeclaration(o,u(o.decorators,s,e.isDecorator),u(o.modifiers,s,e.isModifier),t(o.name,s,e.isIdentifier),u(o.members,s,e.isEnumMember));case 233:return e.updateModuleDeclaration(o,u(o.decorators,s,e.isDecorator),u(o.modifiers,s,e.isModifier),t(o.name,s,e.isIdentifier),t(o.body,s,e.isModuleBody));case 234:return e.updateModuleBlock(o,u(o.statements,s,e.isStatement));case 235:return e.updateCaseBlock(o,u(o.clauses,s,e.isCaseOrDefaultClause));case 237:return e.updateImportEqualsDeclaration(o,u(o.decorators,s,e.isDecorator),u(o.modifiers,s,e.isModifier),t(o.name,s,e.isIdentifier),t(o.moduleReference,s,e.isModuleReference));case 238:return e.updateImportDeclaration(o,u(o.decorators,s,e.isDecorator),u(o.modifiers,s,e.isModifier),t(o.importClause,s,e.isImportClause),t(o.moduleSpecifier,s,e.isExpression));case 239:return e.updateImportClause(o,t(o.name,s,e.isIdentifier),t(o.namedBindings,s,e.isNamedImportBindings));case 240:return e.updateNamespaceImport(o,t(o.name,s,e.isIdentifier));case 241:return e.updateNamedImports(o,u(o.elements,s,e.isImportSpecifier));case 242:return e.updateImportSpecifier(o,t(o.propertyName,s,e.isIdentifier),t(o.name,s,e.isIdentifier));case 243:return e.updateExportAssignment(o,u(o.decorators,s,e.isDecorator),u(o.modifiers,s,e.isModifier),t(o.expression,s,e.isExpression));case 244:return e.updateExportDeclaration(o,u(o.decorators,s,e.isDecorator),u(o.modifiers,s,e.isModifier),t(o.exportClause,s,e.isNamedExports),t(o.moduleSpecifier,s,e.isExpression));case 245:return e.updateNamedExports(o,u(o.elements,s,e.isExportSpecifier));case 246:return e.updateExportSpecifier(o,t(o.propertyName,s,e.isIdentifier),t(o.name,s,e.isIdentifier));case 248:return e.updateExternalModuleReference(o,t(o.expression,s,e.isExpression));case 249:return e.updateJsxElement(o,t(o.openingElement,s,e.isJsxOpeningElement),u(o.children,s,e.isJsxChild),t(o.closingElement,s,e.isJsxClosingElement));case 254:return e.updateJsxAttributes(o,u(o.properties,s,e.isJsxAttributeLike));case 250:return e.updateJsxSelfClosingElement(o,t(o.tagName,s,e.isJsxTagNameExpression),t(o.attributes,s,e.isJsxAttributes));case 251:return e.updateJsxOpeningElement(o,t(o.tagName,s,e.isJsxTagNameExpression),t(o.attributes,s,e.isJsxAttributes));case 252:return e.updateJsxClosingElement(o,t(o.tagName,s,e.isJsxTagNameExpression));case 253:return e.updateJsxAttribute(o,t(o.name,s,e.isIdentifier),t(o.initializer,s,e.isStringLiteralOrJsxExpression));case 255:return e.updateJsxSpreadAttribute(o,t(o.expression,s,e.isExpression));case 256:return e.updateJsxExpression(o,t(o.expression,s,e.isExpression));case 257:return e.updateCaseClause(o,t(o.expression,s,e.isExpression),u(o.statements,s,e.isStatement));case 258:return e.updateDefaultClause(o,u(o.statements,s,e.isStatement));case 259:return e.updateHeritageClause(o,u(o.types,s,e.isExpressionWithTypeArguments));case 260:return e.updateCatchClause(o,t(o.variableDeclaration,s,e.isVariableDeclaration),t(o.block,s,e.isBlock));case 261:return e.updatePropertyAssignment(o,t(o.name,s,e.isPropertyName),t(o.initializer,s,e.isExpression));case 262:return e.updateShorthandPropertyAssignment(o,t(o.name,s,e.isIdentifier),t(o.objectAssignmentInitializer,s,e.isExpression));case 263:return e.updateSpreadAssignment(o,t(o.expression,s,e.isExpression));case 264:return e.updateEnumMember(o,t(o.name,s,e.isPropertyName),t(o.initializer,s,e.isExpression));case 265:return e.updateSourceFileNode(o,r(o.statements,s,c));case 296:return e.updatePartiallyEmittedExpression(o,t(o.expression,s,e.isExpression));default:return o}}}function s(t){return e.Debug.assert(t.length<=1,"Too many nodes written to output."),e.singleOrUndefined(t)}e.visitNode=t,e.visitNodes=n,e.visitLexicalEnvironment=r,e.visitParameterList=a,e.visitFunctionBody=i,e.visitEachChild=o;}(r||(r={})),function(e){function t(e,t,n){return e?t(n,e):n}function n(e,t,n){return e?t(n,e):n}function r(r,a,i,o){if(void 0===r)return a;var s=o?n:e.reduceLeft,c=o||i,u=r.kind;if(u>0&&u<=142)return a;if(u>=158&&u<=173)return a;var l=a;switch(r.kind){case 206:case 209:case 200:case 225:case 295:break;case 143:l=t(r.left,i,l),l=t(r.right,i,l);break;case 144:l=t(r.expression,i,l);break;case 146:l=s(r.decorators,c,l),l=s(r.modifiers,c,l),l=t(r.name,i,l),l=t(r.type,i,l),l=t(r.initializer,i,l);break;case 147:l=t(r.expression,i,l);break;case 149:l=s(r.decorators,c,l),l=s(r.modifiers,c,l),l=t(r.name,i,l),l=t(r.type,i,l),l=t(r.initializer,i,l);break;case 151:l=s(r.decorators,c,l),l=s(r.modifiers,c,l),l=t(r.name,i,l),l=s(r.typeParameters,c,l),l=s(r.parameters,c,l),l=t(r.type,i,l),l=t(r.body,i,l);break;case 152:l=s(r.modifiers,c,l),l=s(r.parameters,c,l),l=t(r.body,i,l);break;case 153:l=s(r.decorators,c,l),l=s(r.modifiers,c,l),l=t(r.name,i,l),l=s(r.parameters,c,l),l=t(r.type,i,l),l=t(r.body,i,l);break;case 154:l=s(r.decorators,c,l),l=s(r.modifiers,c,l),l=t(r.name,i,l),l=s(r.parameters,c,l),l=t(r.body,i,l);break;case 174:case 175:l=s(r.elements,c,l);break;case 176:l=t(r.propertyName,i,l),l=t(r.name,i,l),l=t(r.initializer,i,l);break;case 177:l=s(r.elements,c,l);break;case 178:l=s(r.properties,c,l);break;case 179:l=t(r.expression,i,l),l=t(r.name,i,l);break;case 180:l=t(r.expression,i,l),l=t(r.argumentExpression,i,l);break;case 181:case 182:l=t(r.expression,i,l),l=s(r.typeArguments,c,l),l=s(r.arguments,c,l);break;case 183:l=t(r.tag,i,l),l=t(r.template,i,l);break;case 184:l=t(r.type,i,l),l=t(r.expression,i,l);break;case 186:l=s(r.modifiers,c,l),l=t(r.name,i,l),l=s(r.typeParameters,c,l),l=s(r.parameters,c,l),l=t(r.type,i,l),l=t(r.body,i,l);break;case 187:l=s(r.modifiers,c,l),l=s(r.typeParameters,c,l),l=s(r.parameters,c,l),l=t(r.type,i,l),l=t(r.body,i,l);break;case 185:case 188:case 189:case 190:case 191:case 197:case 198:case 203:l=t(r.expression,i,l);break;case 192:case 193:l=t(r.operand,i,l);break;case 194:l=t(r.left,i,l),l=t(r.right,i,l);break;case 195:l=t(r.condition,i,l),l=t(r.whenTrue,i,l),l=t(r.whenFalse,i,l);break;case 196:l=t(r.head,i,l),l=s(r.templateSpans,c,l);break;case 199:l=s(r.modifiers,c,l),l=t(r.name,i,l),l=s(r.typeParameters,c,l),l=s(r.heritageClauses,c,l),l=s(r.members,c,l);break;case 201:l=t(r.expression,i,l),l=s(r.typeArguments,c,l);break;case 202:l=t(r.expression,i,l),l=t(r.type,i,l);break;case 203:l=t(r.expression,i,l);break;case 205:l=t(r.expression,i,l),l=t(r.literal,i,l);break;case 207:l=s(r.statements,c,l);break;case 208:l=s(r.modifiers,c,l),l=t(r.declarationList,i,l);break;case 210:l=t(r.expression,i,l);break;case 211:l=t(r.expression,i,l),l=t(r.thenStatement,i,l),l=t(r.elseStatement,i,l);break;case 212:l=t(r.statement,i,l),l=t(r.expression,i,l);break;case 213:case 220:l=t(r.expression,i,l),l=t(r.statement,i,l);break;case 214:l=t(r.initializer,i,l),l=t(r.condition,i,l),l=t(r.incrementor,i,l),l=t(r.statement,i,l);break;case 215:case 216:l=t(r.initializer,i,l),l=t(r.expression,i,l),l=t(r.statement,i,l);break;case 219:case 223:l=t(r.expression,i,l);break;case 221:l=t(r.expression,i,l),l=t(r.caseBlock,i,l);break;case 222:l=t(r.label,i,l),l=t(r.statement,i,l);break;case 224:l=t(r.tryBlock,i,l),l=t(r.catchClause,i,l),l=t(r.finallyBlock,i,l);break;case 226:l=t(r.name,i,l),l=t(r.type,i,l),l=t(r.initializer,i,l);break;case 227:l=s(r.declarations,c,l);break;case 228:l=s(r.decorators,c,l),l=s(r.modifiers,c,l),l=t(r.name,i,l),l=s(r.typeParameters,c,l),l=s(r.parameters,c,l),l=t(r.type,i,l),l=t(r.body,i,l);break;case 229:l=s(r.decorators,c,l),l=s(r.modifiers,c,l),l=t(r.name,i,l),l=s(r.typeParameters,c,l),l=s(r.heritageClauses,c,l),l=s(r.members,c,l);break;case 232:l=s(r.decorators,c,l),l=s(r.modifiers,c,l),l=t(r.name,i,l),l=s(r.members,c,l);break;case 233:l=s(r.decorators,c,l),l=s(r.modifiers,c,l),l=t(r.name,i,l),l=t(r.body,i,l);break;case 234:l=s(r.statements,c,l);break;case 235:l=s(r.clauses,c,l);break;case 237:l=s(r.decorators,c,l),l=s(r.modifiers,c,l),l=t(r.name,i,l),l=t(r.moduleReference,i,l);break;case 238:l=s(r.decorators,c,l),l=s(r.modifiers,c,l),l=t(r.importClause,i,l),l=t(r.moduleSpecifier,i,l);break;case 239:l=t(r.name,i,l),l=t(r.namedBindings,i,l);break;case 240:l=t(r.name,i,l);break;case 241:case 245:l=s(r.elements,c,l);break;case 242:case 246:l=t(r.propertyName,i,l),l=t(r.name,i,l);break;case 243:l=e.reduceLeft(r.decorators,i,l),l=e.reduceLeft(r.modifiers,i,l),l=t(r.expression,i,l);break;case 244:l=e.reduceLeft(r.decorators,i,l),l=e.reduceLeft(r.modifiers,i,l),l=t(r.exportClause,i,l),l=t(r.moduleSpecifier,i,l);break;case 248:l=t(r.expression,i,l);break;case 249:l=t(r.openingElement,i,l),l=e.reduceLeft(r.children,i,l),l=t(r.closingElement,i,l);break;case 250:case 251:l=t(r.tagName,i,l),l=t(r.attributes,i,l);break;case 254:l=s(r.properties,c,l);break;case 252:l=t(r.tagName,i,l);break;case 253:l=t(r.name,i,l),l=t(r.initializer,i,l);break;case 255:case 256:l=t(r.expression,i,l);break;case 257:l=t(r.expression,i,l);case 258:l=s(r.statements,c,l);break;case 259:l=s(r.types,c,l);break;case 260:l=t(r.variableDeclaration,i,l),l=t(r.block,i,l);break;case 261:l=t(r.name,i,l),l=t(r.initializer,i,l);break;case 262:l=t(r.name,i,l),l=t(r.objectAssignmentInitializer,i,l);break;case 263:l=t(r.expression,i,l);break;case 264:l=t(r.name,i,l),l=t(r.initializer,i,l);break;case 265:l=s(r.statements,c,l);break;case 296:l=t(r.expression,i,l);}return l}function a(t,n){return e.some(n)?e.isNodeArray(t)?e.setTextRange(e.createNodeArray(e.concatenate(t,n)),t):e.addRange(t,n):t}function i(t){return d.assert(e.every(t,e.isStatement),"Cannot lift nodes to a Block."),e.singleOrUndefined(t)||e.createBlock(t)}function o(e){return s(e),e}function s(t){if(void 0===t)return 0;if(536870912&t.transformFlags)return t.transformFlags&~e.getTransformFlagsSubtreeExclusions(t.kind);var n=u(t);return e.computeTransformFlagsForNode(t,n)}function c(e){if(void 0===e)return 0;for(var t=0,n=0,r=0,a=e;r=1)||1572864&f.transformFlags||1572864&e.getTargetOfBindingOrAssignmentElement(f).transformFlags||e.isComputedPropertyName(g)){_&&(t.emitBindingOrAssignment(t.createObjectBindingOrAssignmentPattern(_),i,o,a),_=void 0);var y=s(t,i,g);e.isComputedPropertyName(g)&&(d=e.append(d,y.argumentExpression)),r(t,f,y,f);}else _=e.append(_,f);}}_&&t.emitBindingOrAssignment(t.createObjectBindingOrAssignmentPattern(_),i,o,a);}function i(t,n,a,i,o){var s=e.getElementsOfBindingOrAssignmentPattern(a),u=s.length;t.level<1&&t.downlevelIteration?i=c(t,e.createReadHelper(t.context,i,u>0&&e.getRestIndicatorOfBindingOrAssignmentElement(s[u-1])?void 0:u,o),!1,o):1!==u&&(t.level<1||0===u)&&(i=c(t,i,!e.isDeclarationBindingElement(n)||0!==u,o));for(var l,_,d=0;d=1)if(1048576&p.transformFlags){var f=e.createTempVariable(void 0);t.hoistTempVariables&&t.context.hoistVariableDeclaration(f),_=e.append(_,[f,p]),l=e.append(l,t.createArrayBindingOrAssignmentElement(f));}else l=e.append(l,p);else{if(e.isOmittedExpression(p))continue;if(e.getRestIndicatorOfBindingOrAssignmentElement(p)){if(d===u-1){var m=e.createArraySlice(i,d);r(t,p,m,p);}}else r(t,p,m=e.createElementAccess(i,d),p);}}if(l&&t.emitBindingOrAssignment(t.createArrayBindingOrAssignmentPattern(l),i,o,a),_)for(var g=0,y=_;g0)return!0;var n=e.getFirstConstructorWithBody(t);return!!n&&e.forEach(n.parameters,x)}function x(e){return void 0!==e.decorators&&e.decorators.length>0}function k(t){var n=I(t,!0),r=void 0!==e.getClassExtendsHeritageClauseElement(t),a=b(t),i=t.name;!i&&(n.length>0||e.childIsDecorated(t))&&(i=e.getGeneratedNameForNode(t));var o=a?T(t,i,r):S(t,i,r,n.length>0),s=[o];return n.length&&B(s,n,e.getLocalName(t)),Q(s,t,!1),Q(s,t,!0),te(s,t),dt(t)?yt(s,t):a&&(mt(t)?s.push(e.createExportDefault(e.getLocalName(t,!1,!0))):ft(t)&&s.push(e.createExternalModuleExport(e.getLocalName(t,!1,!0)))),s.length>1&&(s.push(e.createEndOfDeclarationMarker(t)),e.setEmitFlags(o,2097152|e.getEmitFlags(o))),e.singleOrMany(s)}function S(t,n,r,a){var i=e.createClassDeclaration(void 0,e.visitNodes(t.modifiers,y,e.isModifier),n,void 0,e.visitNodes(t.heritageClauses,u,e.isHeritageClause),E(t,r)),o=e.getEmitFlags(t);return a&&(o|=32),e.setTextRange(i,t),e.setOriginalNode(i,t),e.setEmitFlags(i,o),i}function T(t,n,r){var a=e.moveRangePastDecorators(t),i=St(t),o=e.getLocalName(t,!1,!0),s=e.visitNodes(t.heritageClauses,u,e.isHeritageClause),c=E(t,r),l=e.createClassExpression(void 0,n,void 0,s,c);e.setOriginalNode(l,t),e.setTextRange(l,a);var _=e.createVariableStatement(void 0,e.createVariableDeclarationList([e.createVariableDeclaration(o,void 0,i?e.createAssignment(i,l):l)],1));return e.setOriginalNode(_,t),e.setTextRange(_,a),e.setCommentRange(_,t),_}function C(t){var n=I(t,!0),r=e.visitNodes(t.heritageClauses,u,e.isHeritageClause),a=E(t,e.some(r,function(e){return 85===e.token})),i=e.createClassExpression(void 0,t.name,void 0,r,a);if(e.setOriginalNode(i,t),e.setTextRange(i,t),n.length>0){var o=[],s=e.createTempVariable(qt);return 8388608&$t.getNodeCheckFlags(t)&&(Dt(),an[e.getOriginalNodeId(t)]=e.getSynthesizedClone(s)),e.setEmitFlags(i,32768|e.getEmitFlags(i)),o.push(e.startOnNewLine(e.createAssignment(s,i))),e.addRange(o,K(n,s)),o.push(e.startOnNewLine(s)),e.inlineExpressions(o)}return i}function E(t,n){var r=[],a=D(t,n);return a&&r.push(a),e.addRange(r,e.visitNodes(t.members,m,e.isClassElement)),e.setTextRange(e.createNodeArray(r),t.members)}function D(n,r){var a=e.forEach(n.members,M),i=262144&n.transformFlags,o=e.getFirstConstructorWithBody(n);if(!a&&!i)return e.visitEachChild(o,u,t);var s=N(o),c=A(n,o,r);return e.startOnNewLine(e.setOriginalNode(e.setTextRange(e.createConstructor(void 0,void 0,s,c),o||n),o))}function N(n){return e.visitParameterList(n&&n.parameters,u,t)||[]}function A(t,n,r){var a=[],i=0;if(Ut(),n){i=w(n,a);var o=P(n);e.addRange(a,e.map(o,F));}else r&&a.push(e.createStatement(e.createCall(e.createSuper(),void 0,[e.createSpread(e.createIdentifier("arguments"))])));return B(a,I(t,!1),e.createThis()),n&&e.addRange(a,e.visitNodes(n.body.statements,u,e.isStatement,i)),a=e.mergeLexicalEnvironment(a,Vt()),e.setTextRange(e.createBlock(e.setTextRange(e.createNodeArray(a),n?n.body.statements:t.members),!0),n?n.body:void 0)}function w(t,n){if(t.body){var r=t.body.statements,a=e.addPrologue(n,r,!1,u);if(a===r.length)return a;var i=r[a];return 210===i.kind&&e.isSuperCall(i.expression)?(n.push(e.visitNode(i,u,e.isStatement)),a+1):a}return 0}function P(t){return e.filter(t.parameters,O)}function O(t){return e.hasModifier(t,92)&&e.isIdentifier(t.name)}function F(t){e.Debug.assert(e.isIdentifier(t.name));var n=t.name,r=e.getMutableClone(n);e.setEmitFlags(r,1584);var a=e.getMutableClone(n);return e.setEmitFlags(a,1536),e.startOnNewLine(e.setTextRange(e.createStatement(e.createAssignment(e.setTextRange(e.createPropertyAccess(e.createThis(),r),t.name),a)),e.moveRangePos(t,-1)))}function I(t,n){return e.filter(t.members,n?R:M)}function R(e){return L(e,!0)}function M(e){return L(e,!1)}function L(t,n){return 149===t.kind&&n===e.hasModifier(t,32)&&void 0!==t.initializer}function B(t,n,r){for(var a=0,i=n;a0?149===a.kind?e.createVoidZero():e.createNull():void 0,u=n(t,i,o,s,c,e.moveRangePastDecorators(a));return e.setEmitFlags(u,1536),u}}function te(t,n){var r=ne(n);r&&t.push(e.setOriginalNode(e.createStatement(r),n));}function ne(r){var a=Y(r,r,$(r));if(a){var i=an&&an[e.getOriginalNodeId(r)],o=e.getLocalName(r,!1,!0),s=n(t,a,o),c=e.createAssignment(o,i?e.createAssignment(i,s):s);return e.setEmitFlags(c,1536),e.setSourceMapRange(c,e.moveRangePastDecorators(r)),c}}function re(t){return e.visitNode(t.expression,u,e.isExpression)}function ae(n,r){var i;if(n){i=[];for(var o=0,s=n;o= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n };'},c={name:"typescript:metadata",scoped:!1,priority:3,text:'\n var __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);\n };'},u={name:"typescript:param",scoped:!1,priority:4,text:"\n var __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n };"};}(r||(r={}));!function(e){function t(t){function r(n){if(e.isDeclarationFile(n))return n;k=n;var r=e.visitEachChild(n,a,t);return e.addEmitHelpers(r,t.readEmitHelpers()),k=void 0,r}function a(n){if(0==(16&n.transformFlags))return n;switch(n.kind){case 120:return;case 191:return i(n);case 151:return o(n);case 228:return s(n);case 186:return c(n);case 187:return u(n);default:return e.visitEachChild(n,a,t)}}function i(t){return e.setOriginalNode(e.setTextRange(e.createYield(void 0,e.visitNode(t.expression,a,e.isExpression)),t),t)}function o(n){return e.updateMethod(n,void 0,e.visitNodes(n.modifiers,a,e.isModifier),n.asteriskToken,n.name,void 0,void 0,e.visitParameterList(n.parameters,a,t),void 0,2&e.getFunctionFlags(n)?l(n):e.visitFunctionBody(n.body,a,t))}function s(n){return e.updateFunctionDeclaration(n,void 0,e.visitNodes(n.modifiers,a,e.isModifier),n.asteriskToken,n.name,void 0,e.visitParameterList(n.parameters,a,t),void 0,2&e.getFunctionFlags(n)?l(n):e.visitFunctionBody(n.body,a,t))}function c(n){return e.updateFunctionExpression(n,e.visitNodes(n.modifiers,a,e.isModifier),n.asteriskToken,n.name,void 0,e.visitParameterList(n.parameters,a,t),void 0,2&e.getFunctionFlags(n)?l(n):e.visitFunctionBody(n.body,a,t))}function u(n){return e.updateArrowFunction(n,e.visitNodes(n.modifiers,a,e.isModifier),void 0,e.visitParameterList(n.parameters,a,t),void 0,2&e.getFunctionFlags(n)?l(n):e.visitFunctionBody(n.body,a,t))}function l(r){C();var i=e.getOriginalNode(r,e.isFunctionLike).type,o=A<2?d(i):void 0,s=187===r.kind,c=0!=(8192&D.getNodeCheckFlags(r));if(s){var u=n(t,c,o,_(r.body)),l=E();if(e.some(l)){g=e.convertToFunctionBody(u);return e.updateBlock(g,e.setTextRange(e.createNodeArray(e.concatenate(g.statements,l)),g.statements))}return u}var f=[],m=e.addPrologue(f,r.body.statements,!1,a);f.push(e.createReturn(n(t,c,o,_(r.body,m)))),e.addRange(f,E());var g=e.createBlock(f,!0);return e.setTextRange(g,r.body),A>=2&&(4096&D.getNodeCheckFlags(r)?(p(),e.addEmitHelper(g,e.advancedAsyncSuperHelper)):2048&D.getNodeCheckFlags(r)&&(p(),e.addEmitHelper(g,e.asyncSuperHelper))),g}function _(n,r){if(e.isBlock(n))return e.updateBlock(n,e.visitLexicalEnvironment(n.statements,a,t,r));T();var i=e.convertToFunctionBody(e.visitNode(n,a,e.isConciseBody)),o=E();return e.updateBlock(i,e.setTextRange(e.createNodeArray(e.concatenate(i.statements,o)),i.statements))}function d(t){var n=t&&e.getEntityNameFromTypeNode(t);if(n&&e.isEntityName(n)){var r=D.getTypeReferenceSerializationKind(n);if(r===e.TypeReferenceSerializationKind.TypeWithConstructSignatureAndValue||r===e.TypeReferenceSerializationKind.Unknown)return n}}function p(){0==(1&S)&&(S|=1,t.enableSubstitution(181),t.enableSubstitution(179),t.enableSubstitution(180),t.enableEmitNotification(229),t.enableEmitNotification(151),t.enableEmitNotification(153),t.enableEmitNotification(154),t.enableEmitNotification(152));}function f(e,t,n){if(1&S&&b(t)){var r=6144&D.getNodeCheckFlags(t);if(r!==w){var a=w;return w=r,P(e,t,n),void(w=a)}}P(e,t,n);}function m(e,t){return t=O(e,t),1===e&&w?g(t):t}function g(e){switch(e.kind){case 179:return y(e);case 180:return h(e);case 181:return v(e)}return e}function y(t){return 97===t.expression.kind?x(e.createLiteral(t.name.text),t):t}function h(e){return 97===e.expression.kind?x(e.argumentExpression,e):e}function v(t){var n=t.expression;if(e.isSuperProperty(n)){var r=e.isPropertyAccessExpression(n)?y(n):h(n);return e.createCall(e.createPropertyAccess(r,"call"),void 0,[e.createThis()].concat(t.arguments))}return t}function b(e){var t=e.kind;return 229===t||152===t||151===t||153===t||154===t}function x(t,n){return 4096&w?e.setTextRange(e.createPropertyAccess(e.createCall(e.createIdentifier("_super"),void 0,[t]),"value"),n):e.setTextRange(e.createCall(e.createIdentifier("_super"),void 0,[t]),n)}var k,S,T=t.startLexicalEnvironment,C=t.resumeLexicalEnvironment,E=t.endLexicalEnvironment,D=t.getEmitResolver(),N=t.getCompilerOptions(),A=e.getEmitScriptTarget(N),w=0,P=t.onEmitNode,O=t.onSubstituteNode;return t.onEmitNode=f,t.onSubstituteNode=m,r}function n(t,n,r,i){t.requestEmitHelper(a);var o=e.createFunctionExpression(void 0,e.createToken(39),void 0,void 0,[],void 0,i);return(o.emitNode||(o.emitNode={})).flags|=131072,e.createCall(e.getHelperName("__awaiter"),void 0,[e.createThis(),n?e.createIdentifier("arguments"):e.createVoidZero(),r?e.createExpressionFromEntityName(r):e.createVoidZero(),o])}var r;!function(e){e[e.AsyncMethodsWithSuper=1]="AsyncMethodsWithSuper";}(r||(r={})),e.transformES2017=t;var a={name:"typescript:awaiter",scoped:!1,priority:5,text:'\n var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n };'};e.asyncSuperHelper={name:"typescript:async-super",scoped:!0,text:"\n const _super = name => super[name];\n "},e.advancedAsyncSuperHelper={name:"typescript:advanced-async-super",scoped:!0,text:"\n const _super = (function (geti, seti) {\n const cache = Object.create(null);\n return name => cache[name] || (cache[name] = { get value() { return geti(name); }, set value(v) { seti(name, v); } });\n })(name => super[name], (name, value) => super[name] = value);\n "};}(r||(r={}));!function(e){function t(t){function o(n){if(e.isDeclarationFile(n))return n;var r=e.visitEachChild(n,s,t);return e.addEmitHelpers(r,t.readEmitHelpers()),r}function s(e){return l(e,!1)}function c(e){return l(e,!0)}function u(e){if(120!==e.kind)return e}function l(n,r){if(0==(8&n.transformFlags))return n;switch(n.kind){case 191:return _(n);case 197:return d(n);case 222:return p(n);case 178:return m(n);case 194:return h(n,r);case 226:return v(n);case 216:return k(n,void 0);case 214:return b(n);case 190:return x(n);case 152:return D(n);case 151:return w(n);case 153:return N(n);case 154:return A(n);case 228:return P(n);case 186:return F(n);case 187:return O(n);case 146:return E(n);case 210:return g(n);case 185:return y(n,r);default:return e.visitEachChild(n,s,t)}}function _(n){if(2&te&&1&te){var r=e.visitNode(n.expression,s,e.isExpression);return e.setOriginalNode(e.setTextRange(e.createYield(void 0,e.createArrayLiteral([e.createLiteral("await"),r])),n),n)}return e.visitEachChild(n,s,t)}function d(n){if(2&te&&1&te){var r=e.visitNode(n.expression,s,e.isExpression);return e.updateYield(n,n.asteriskToken,n.asteriskToken?a(t,r,r):e.createArrayLiteral(r?[e.createLiteral("yield"),r]:[e.createLiteral("yield")]))}return e.visitEachChild(n,s,t)}function p(n){if(2&te&&1&te){var r=e.unwrapInnermostStatementOfLabel(n);return 216===r.kind&&r.awaitModifier?k(r,n):e.restoreEnclosingLabel(e.visitEachChild(n,s,t),n)}return e.visitEachChild(n,s,t)}function f(t){for(var n,r=[],a=0,i=t;a=2&&(4096&H.getNodeCheckFlags(n)?(L(),e.addEmitHelper(o,e.advancedAsyncSuperHelper)):2048&H.getNodeCheckFlags(n)&&(L(),e.addEmitHelper(o,e.asyncSuperHelper))),o}function R(t){$();var n=0,r=[],a=e.visitNode(t.body,s,e.isConciseBody);e.isBlock(a)&&(n=e.addPrologue(r,a.statements,!1,s)),e.addRange(r,M(void 0,t));var i=G();if(n>0||e.some(r)||e.some(i)){var o=e.convertToFunctionBody(a,!0);return e.addRange(r,o.statements.slice(n)),e.addRange(r,i),e.updateBlock(o,e.setTextRange(e.createNodeArray(r),o.statements))}return a}function M(n,r){for(var a=0,i=r.parameters;a=2?e.createCall(e.createPropertyAccess(e.createIdentifier("Object"),"assign"),void 0,n):(t.requestEmitHelper(s),e.createCall(e.getHelperName("__assign"),void 0,n))}function r(t,n){return t.requestEmitHelper(c),(n.emitNode||(n.emitNode={})).flags|=131072,e.createCall(e.getHelperName("__asyncGenerator"),void 0,[e.createThis(),e.createIdentifier("arguments"),n])}function a(t,n,r){return t.requestEmitHelper(u),t.requestEmitHelper(l),e.setTextRange(e.createCall(e.getHelperName("__asyncDelegator"),void 0,[n]),r)}function i(t,n,r){return t.requestEmitHelper(l),e.setTextRange(e.createCall(e.getHelperName("__asyncValues"),void 0,[n]),r)}var o;!function(e){e[e.AsyncMethodsWithSuper=1]="AsyncMethodsWithSuper";}(o||(o={})),e.transformESNext=t;var s={name:"typescript:assign",scoped:!1,priority:1,text:"\n var __assign = (this && this.__assign) || Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };"};e.createAssignHelper=n;var c={name:"typescript:asyncGenerator",scoped:!1,text:'\n var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");\n var g = generator.apply(thisArg, _arguments || []), q = [], c, i;\n return i = { next: verb("next"), "throw": verb("throw"), "return": verb("return") }, i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { return function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]), next(); }); }; }\n function next() { if (!c && q.length) resume((c = q.shift())[0], c[1]); }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(c[3], e); } }\n function step(r) { r.done ? settle(c[2], r) : Promise.resolve(r.value[1]).then(r.value[0] === "yield" ? send : fulfill, reject); }\n function send(value) { settle(c[2], { value: value, done: false }); }\n function fulfill(value) { resume("next", value); }\n function reject(value) { resume("throw", value); }\n function settle(f, v) { c = void 0, f(v), next(); }\n };\n '},u={name:"typescript:asyncDelegator",scoped:!1,text:'\n var __asyncDelegator = (this && this.__asyncDelegator) || function (o) {\n var i = { next: verb("next"), "throw": verb("throw", function (e) { throw e; }), "return": verb("return", function (v) { return { value: v, done: true }; }) }, p;\n return o = __asyncValues(o), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { return function (v) { return v = p && n === "throw" ? f(v) : p && v.done ? v : { value: p ? ["yield", v.value] : ["await", (o[n] || f).call(o, v)], done: false }, p = !p, v; }; }\n };\n '},l={name:"typescript:asyncValues",scoped:!1,text:'\n var __asyncValues = (this && this.__asyncIterator) || function (o) {\n if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");\n var m = o[Symbol.asyncIterator];\n return m ? m.call(o) : typeof __values === "function" ? __values(o) : o[Symbol.iterator]();\n };\n '};}(r||(r={}));!function(e){function t(t){function r(n){if(e.isDeclarationFile(n))return n;var r=e.visitEachChild(n,a,t);return e.addEmitHelpers(r,t.readEmitHelpers()),r}function a(e){return 4&e.transformFlags?i(e):e}function i(n){switch(n.kind){case 249:return s(n,!1);case 250:return c(n,!1);case 256:return b(n);default:return e.visitEachChild(n,a,t)}}function o(t){switch(t.kind){case 10:return p(t);case 256:return b(t);case 249:return s(t,!0);case 250:return c(t,!0);default:return void e.Debug.failBadSyntaxKind(t)}}function s(e,t){return u(e.openingElement,e.children,t,e)}function c(e,t){return u(e,void 0,t,e)}function u(n,r,a,i){var s,c=h(n),u=n.attributes.properties;if(0===u.length)s=e.createNull();else{var d=e.flatten(e.spanMap(u,e.isJsxSpreadAttribute,function(t,n){return n?e.map(t,l):e.createObjectLiteral(e.map(t,_))}));e.isJsxSpreadAttribute(u[0])&&d.unshift(e.createObjectLiteral()),(s=e.singleOrUndefined(d))||(s=e.createAssignHelper(t,d));}var p=e.createExpressionForJsxElement(t.getEmitResolver().getJsxFactoryEntity(),x.reactNamespace,c,s,e.filter(e.map(r,o),e.isDefined),n,i);return a&&e.startOnNewLine(p),p}function l(t){return e.visitNode(t.expression,a,e.isExpression)}function _(t){var n=v(t),r=d(t.initializer);return e.createPropertyAssignment(n,r)}function d(t){if(void 0===t)return e.createTrue();if(9===t.kind){var n=y(t.text);return n?e.setTextRange(e.createLiteral(n),t):t}if(256===t.kind)return void 0===t.expression?e.createTrue():b(t);e.Debug.failBadSyntaxKind(t);}function p(t){var n=f(e.getTextOfNode(t,!0));return void 0===n?void 0:e.createLiteral(n)}function f(t){for(var n,r=0,a=-1,i=0;i=0,"statementOffset not initialized correctly!"));var s=r&&95!==e.skipOuterExpressions(r.expression).kind,u=A(i,t,s,a,o);1!==u&&2!==u||o++,t&&(1===u&&(wt|=4096),e.addRange(i,e.visitNodes(t.body.statements,c,e.isStatement,o))),!s||2===u||t&&N(t.body)||i.push(e.createReturn(e.createIdentifier("_this"))),e.addRange(i,kt()),t&&J(i,t,!1);var l=e.createBlock(e.setTextRange(e.createNodeArray(i),t?t.body.statements:n.members),!0);return e.setTextRange(l,t?t.body:n),t||e.setEmitFlags(l,1536),l}function N(t){if(219===t.kind)return!0;if(211===t.kind){var n=t;if(n.elseStatement)return N(n.thenStatement)&&N(n.elseStatement)}else if(207===t.kind){var r=e.lastOrUndefined(t.statements);if(r&&N(r))return!0}return!1}function A(t,n,r,a,i){if(!r)return n&&K(t,n),0;if(!n)return t.push(e.createReturn(P())),2;if(a)return j(t,n,P()),_t(),1;var o,s,c=n.body.statements;if(i0?n.push(e.setEmitFlags(e.createVariableStatement(void 0,e.createVariableDeclarationList(e.flattenDestructuringBinding(r,c,t,0,o))),524288)):i&&n.push(e.setEmitFlags(e.createStatement(e.createAssignment(o,e.visitNode(i,c,e.isExpression))),524288));}function M(t,n,r,a){a=e.visitNode(a,c,e.isExpression);var i=e.createIf(e.createTypeCheck(e.getSynthesizedClone(r),"undefined"),e.setEmitFlags(e.setTextRange(e.createBlock([e.createStatement(e.setTextRange(e.createAssignment(e.setEmitFlags(e.getMutableClone(r),48),e.setEmitFlags(a,48|e.getEmitFlags(a))),n))]),n),417));i.startsOnNewLine=!0,e.setTextRange(i,n),e.setEmitFlags(i,524704),t.push(i);}function L(e,t){return e&&e.dotDotDotToken&&71===e.name.kind&&!t}function B(t,n,r){var a=e.lastOrUndefined(n.parameters);if(L(a,r)){var i=e.getMutableClone(a.name);e.setEmitFlags(i,48);var o=e.getSynthesizedClone(a.name),s=n.parameters.length-1,c=e.createLoopVariable();t.push(e.setEmitFlags(e.setTextRange(e.createVariableStatement(void 0,e.createVariableDeclarationList([e.createVariableDeclaration(i,void 0,e.createArrayLiteral([]))])),a),524288));var u=e.createFor(e.setTextRange(e.createVariableDeclarationList([e.createVariableDeclaration(c,void 0,e.createLiteral(s))]),a),e.setTextRange(e.createLessThan(c,e.createPropertyAccess(e.createIdentifier("arguments"),"length")),a),e.setTextRange(e.createPostfixIncrement(c),a),e.createBlock([e.startOnNewLine(e.setTextRange(e.createStatement(e.createAssignment(e.createElementAccess(o,0===s?c:e.createSubtract(c,e.createLiteral(s))),e.createElementAccess(e.createIdentifier("arguments"),c))),a))]));e.setEmitFlags(u,524288),e.startOnNewLine(u),t.push(u);}}function K(t,n){32768&n.transformFlags&&187!==n.kind&&j(t,n,e.createThis());}function j(t,n,r,a){_t();var i=e.createVariableStatement(void 0,e.createVariableDeclarationList([e.createVariableDeclaration("_this",void 0,r)]));e.setEmitFlags(i,525824),e.setTextRange(i,a),e.setSourceMapRange(i,n),t.push(i);}function J(t,n,r){if(16384&wt){var a=void 0;switch(n.kind){case 187:return t;case 151:case 153:case 154:a=e.createVoidZero();break;case 152:a=e.createPropertyAccess(e.setEmitFlags(e.createThis(),4),"constructor");break;case 228:case 186:a=e.createConditional(e.createLogicalAnd(e.setEmitFlags(e.createThis(),4),e.createBinary(e.setEmitFlags(e.createThis(),4),93,e.getLocalName(n))),e.createPropertyAccess(e.setEmitFlags(e.createThis(),4),"constructor"),e.createVoidZero());break;default:e.Debug.failBadSyntaxKind(n);}var i=e.createVariableStatement(void 0,e.createVariableDeclarationList([e.createVariableDeclaration("_newTarget",void 0,a)]));if(r)return[i].concat(t);t.unshift(i);}return t}function z(t,n){for(var r=0,a=n.members;r0&&(o=!0),e.isBlock(l))i=e.addCustomPrologue(u,l.statements,i,c),r=l.statements,e.addRange(u,e.visitNodes(l.statements,c,e.isStatement,i)),!o&&l.multiLine&&(o=!0);else{e.Debug.assert(187===n.kind),r=e.moveRangeEnd(l,-1);var _=n.equalsGreaterThanToken;e.nodeIsSynthesized(_)||e.nodeIsSynthesized(l)||(e.rangeEndIsOnSameLineAsRangeStart(_,l,Nt)?s=!0:o=!0);var d=e.visitNode(l,c,e.isExpression),p=e.createReturn(d);e.setTextRange(p,l),e.setEmitFlags(p,1440),u.push(p),a=l;}var f=t.endLexicalEnvironment();e.addRange(u,f),J(u,n,!1),!o&&f&&f.length&&(o=!0);var m=e.createBlock(e.setTextRange(e.createNodeArray(u),r),o);return e.setTextRange(m,n.body),!o&&s&&e.setEmitFlags(m,1),a&&e.setTokenSourceMapRange(m,18,a),e.setOriginalNode(m,n.body),m}function Q(n){var r=e.visitFunctionBody(n.body,u,t);return e.updateBlock(r,e.setTextRange(e.createNodeArray(J(r.statements,n,!0)),r.statements))}function Z(n,r){if(r)return e.visitEachChild(n,c,t);var o=256&wt?a(4032,512):a(3904,128),s=e.visitEachChild(n,c,t);return i(o,0,0),s}function ee(n){switch(n.expression.kind){case 185:return e.updateStatement(n,te(n.expression,!1));case 194:return e.updateStatement(n,ne(n.expression,!1))}return e.visitEachChild(n,c,t)}function te(n,r){if(!r)switch(n.expression.kind){case 185:return e.updateParen(n,te(n.expression,!1));case 194:return e.updateParen(n,ne(n.expression,!1))}return e.visitEachChild(n,c,t)}function ne(n,r){return e.isDestructuringAssignment(n)?e.flattenDestructuringAssignment(n,c,t,0,r):e.visitEachChild(n,c,t)}function re(n){var r,o=a(0,e.hasModifier(n,1)?32:0);if(Pt&&0==(3&n.declarationList.flags)){for(var s=void 0,u=0,l=n.declarationList.declarations;u=72&&n<=107)return e.setTextRange(e.createLiteral(t),t)}var c,u,l=t.getCompilerOptions();1!==l.jsx&&3!==l.jsx||(c=t.onEmitNode,t.onEmitNode=r,t.enableEmitNotification(251),t.enableEmitNotification(252),t.enableEmitNotification(250),u=[]);var _=t.onSubstituteNode;return t.onSubstituteNode=a,t.enableSubstitution(179),t.enableSubstitution(261),n}e.transformES5=t;}(r||(r={}));!function(e){function t(e){switch(e){case 2:return"return";case 3:return"break";case 4:return"yield";case 5:return"yield*";case 7:return"endfinally"}}function n(n){function a(t){if(e.isDeclarationFile(t)||0==(512&t.transformFlags))return t;Ft=t;var r=e.visitEachChild(t,i,n);return e.addEmitHelpers(r,n.readEmitHelpers()),Ft=void 0,r}function i(t){var r=t.transformFlags;return Lt?o(t):Mt?s(t):256&r?u(t):512&r?e.visitEachChild(t,i,n):t}function o(e){switch(e.kind){case 212:return j(e);case 213:return z(e);case 221:return te(e);case 222:return re(e);default:return s(e)}}function s(t){switch(t.kind){case 228:return l(t);case 186:return _(t);case 153:case 154:return d(t);case 208:return f(t);case 214:return V(t);case 215:return $(t);case 218:return X(t);case 217:return W(t);case 219:return Q(t);default:return 16777216&t.transformFlags?c(t):33554944&t.transformFlags?e.visitEachChild(t,i,n):t}}function c(t){switch(t.kind){case 194:return m(t);case 195:return k(t);case 197:return S(t);case 177:return T(t);case 178:return E(t);case 180:return D(t);case 181:return N(t);case 182:return A(t);default:return e.visitEachChild(t,i,n)}}function u(t){switch(t.kind){case 228:return l(t);case 186:return _(t);default:return e.Debug.failBadSyntaxKind(t),e.visitEachChild(t,i,n)}}function l(t){if(t.asteriskToken)t=e.setOriginalNode(e.setTextRange(e.createFunctionDeclaration(void 0,t.modifiers,void 0,t.name,void 0,e.visitParameterList(t.parameters,i,n),void 0,p(t.body)),t),t);else{var r=Mt,a=Lt;Mt=!1,Lt=!1,t=e.visitEachChild(t,i,n),Mt=r,Lt=a;}return Mt?void Dt(t):t}function _(t){if(t.asteriskToken)t=e.setOriginalNode(e.setTextRange(e.createFunctionExpression(void 0,void 0,t.name,void 0,e.visitParameterList(t.parameters,i,n),void 0,p(t.body)),t),t);else{var r=Mt,a=Lt;Mt=!1,Lt=!1,t=e.visitEachChild(t,i,n),Mt=r,Lt=a;}return t}function d(t){var r=Mt,a=Lt;return Mt=!1,Lt=!1,t=e.visitEachChild(t,i,n),Mt=r,Lt=a,t}function p(t){var n=[],r=Mt,a=Lt,o=Bt,s=Kt,c=jt,u=Jt,l=zt,_=Ut,d=nn,p=Vt,f=qt,m=$t,g=Gt;Mt=!0,Lt=!1,Bt=void 0,Kt=void 0,jt=void 0,Jt=void 0,zt=void 0,Ut=void 0,nn=1,Vt=void 0,qt=void 0,$t=void 0,Gt=e.createTempVariable(void 0),Ct();var y=e.addPrologue(n,t.statements,!1,i);w(t.statements,y);var h=it();return e.addRange(n,Et()),n.push(e.createReturn(h)),Mt=r,Lt=a,Bt=o,Kt=s,jt=c,Jt=u,zt=l,Ut=_,nn=d,Vt=p,qt=f,$t=m,Gt=g,e.setTextRange(e.createBlock(n,t.multiLine),t)}function f(t){if(16777216&t.transformFlags)M(t.declarationList);else{if(524288&e.getEmitFlags(t))return t;for(var n=0,r=t.declarationList.declarations;n=59&&e<=70}function y(e){switch(e){case 59:return 37;case 60:return 38;case 61:return 39;case 62:return 40;case 63:return 41;case 64:return 42;case 65:return 45;case 66:return 46;case 67:return 47;case 68:return 48;case 69:return 49;case 70:return 50}}function h(t){var r=t.left,a=t.right;if(oe(a)){var o=void 0;switch(r.kind){case 179:o=e.updatePropertyAccess(r,_e(e.visitNode(r.expression,i,e.isLeftHandSideExpression)),r.name);break;case 180:o=e.updateElementAccess(r,_e(e.visitNode(r.expression,i,e.isLeftHandSideExpression)),_e(e.visitNode(r.argumentExpression,i,e.isExpression)));break;default:o=e.visitNode(r,i,e.isExpression);}var s=t.operatorToken.kind;return g(s)?e.setTextRange(e.createAssignment(o,e.setTextRange(e.createBinary(_e(o),y(s),e.visitNode(a,i,e.isExpression)),t)),t):e.updateBinary(t,o,e.visitNode(a,i,e.isExpression))}return e.visitEachChild(t,i,n)}function v(t){if(oe(t.right)){if(e.isLogicalOperator(t.operatorToken.kind))return b(t);if(26===t.operatorToken.kind)return x(t);var r=e.getMutableClone(t);return r.left=_e(e.visitNode(t.left,i,e.isExpression)),r.right=e.visitNode(t.right,i,e.isExpression),r}return e.visitEachChild(t,i,n)}function b(t){var n=pe(),r=de();return He(r,e.visitNode(t.left,i,e.isExpression),t.left),53===t.operatorToken.kind?Qe(n,r,t.left):Ye(n,r,t.left),He(r,e.visitNode(t.right,i,e.isExpression),t.right),fe(n),r}function x(t){function n(t){e.isBinaryExpression(t)&&26===t.operatorToken.kind?(n(t.left),n(t.right)):(oe(t)&&r.length>0&&(at(1,[e.createStatement(e.inlineExpressions(r))]),r=[]),r.push(e.visitNode(t,i,e.isExpression)));}var r=[];return n(t.left),n(t.right),e.inlineExpressions(r)}function k(t){if(oe(t.whenTrue)||oe(t.whenFalse)){var r=pe(),a=pe(),o=de();return Qe(r,e.visitNode(t.condition,i,e.isExpression),t.condition),He(o,e.visitNode(t.whenTrue,i,e.isExpression),t.whenTrue),Xe(a),fe(r),He(o,e.visitNode(t.whenFalse,i,e.isExpression),t.whenFalse),fe(a),o}return e.visitEachChild(t,i,n)}function S(t){var r=pe(),a=e.visitNode(t.expression,i,e.isExpression);return t.asteriskToken?Ze(0==(4194304&e.getEmitFlags(t.expression))?e.createValuesHelper(n,a,t):a,t):et(a,t),fe(r),$e(t)}function T(e){return C(e.elements,void 0,void 0,e.multiLine)}function C(t,n,r,a){function o(t,r){if(oe(r)&&t.length>0){var o=void 0!==s;s||(s=de()),He(s,o?e.createArrayConcat(s,[e.createArrayLiteral(t,a)]):e.createArrayLiteral(n?[n].concat(t):t,a)),n=void 0,t=[];}return t.push(e.visitNode(r,i,e.isExpression)),t}var s,c=se(t);if(c>0){s=de();var u=e.visitNodes(t,i,e.isExpression,0,c);He(s,e.createArrayLiteral(n?[n].concat(u):u)),n=void 0;}var l=e.reduceLeft(t,o,[],c);return s?e.createArrayConcat(s,[e.createArrayLiteral(l,a)]):e.setTextRange(e.createArrayLiteral(n?[n].concat(l):l,a),r)}function E(t){function n(n,r){oe(r)&&n.length>0&&(We(e.createStatement(e.inlineExpressions(n))),n=[]);var o=e.createExpressionForObjectLiteralElementLike(t,r,s),c=e.visitNode(o,i,e.isExpression);return c&&(a&&(c.startsOnNewLine=!0),n.push(c)),n}var r=t.properties,a=t.multiLine,o=se(r),s=de();He(s,e.createObjectLiteral(e.visitNodes(r,i,e.isObjectLiteralElementLike,0,o),a));var c=e.reduceLeft(r,n,[],o);return c.push(a?e.startOnNewLine(e.getMutableClone(s)):s),e.inlineExpressions(c)}function D(t){if(oe(t.argumentExpression)){var r=e.getMutableClone(t);return r.expression=_e(e.visitNode(t.expression,i,e.isLeftHandSideExpression)),r.argumentExpression=e.visitNode(t.argumentExpression,i,e.isExpression),r}return e.visitEachChild(t,i,n)}function N(t){if(e.forEach(t.arguments,oe)){var r=e.createCallBinding(t.expression,Nt,wt,!0),a=r.target,o=r.thisArg;return e.setOriginalNode(e.createFunctionApply(_e(e.visitNode(a,i,e.isLeftHandSideExpression)),o,C(t.arguments),t),t)}return e.visitEachChild(t,i,n)}function A(t){if(e.forEach(t.arguments,oe)){var r=e.createCallBinding(e.createPropertyAccess(t.expression,"bind"),Nt),a=r.target,o=r.thisArg;return e.setOriginalNode(e.setTextRange(e.createNew(e.createFunctionApply(_e(e.visitNode(a,i,e.isExpression)),o,C(t.arguments,e.createVoidZero())),void 0,[]),t),t)}return e.visitEachChild(t,i,n)}function w(e,t){void 0===t&&(t=0);for(var n=e.length,r=t;r0);l++)u.push(L(a));u.length&&(We(e.createStatement(e.inlineExpressions(u))),c+=u.length,u=[]);}}function L(t){return e.createAssignment(e.getSynthesizedClone(t.name),e.visitNode(t.initializer,i,e.isExpression))}function B(t){if(oe(t))if(oe(t.thenStatement)||oe(t.elseStatement)){var n=pe(),r=t.elseStatement?pe():void 0;Qe(t.elseStatement?r:n,e.visitNode(t.expression,i,e.isExpression),t.expression),P(t.thenStatement),t.elseStatement&&(Xe(n),fe(r),P(t.elseStatement)),fe(n);}else We(e.visitNode(t,i,e.isStatement));else We(e.visitNode(t,i,e.isStatement));}function K(t){if(oe(t)){var n=pe(),r=pe();Ne(n),fe(r),P(t.statement),fe(n),Ye(r,e.visitNode(t.expression,i,e.isExpression)),Ae();}else We(e.visitNode(t,i,e.isStatement));}function j(t){return Lt?(De(),t=e.visitEachChild(t,i,n),Ae(),t):e.visitEachChild(t,i,n)}function J(t){if(oe(t)){var n=pe(),r=Ne(n);fe(n),Qe(r,e.visitNode(t.expression,i,e.isExpression)),P(t.statement),Xe(n),Ae();}else We(e.visitNode(t,i,e.isStatement));}function z(t){return Lt?(De(),t=e.visitEachChild(t,i,n),Ae(),t):e.visitEachChild(t,i,n)}function U(t){if(oe(t)){var n=pe(),r=pe(),a=Ne(r);if(t.initializer){var o=t.initializer;e.isVariableDeclarationList(o)?M(o):We(e.setTextRange(e.createStatement(e.visitNode(o,i,e.isExpression)),o));}fe(n),t.condition&&Qe(a,e.visitNode(t.condition,i,e.isExpression)),P(t.statement),fe(r),t.incrementor&&We(e.setTextRange(e.createStatement(e.visitNode(t.incrementor,i,e.isExpression)),t.incrementor)),Xe(n),Ae();}else We(e.visitNode(t,i,e.isStatement));}function V(t){Lt&&De();var r=t.initializer;if(r&&e.isVariableDeclarationList(r)){for(var a=0,o=r.declarations;a0?e.inlineExpressions(e.map(c,L)):void 0,e.visitNode(t.condition,i,e.isExpression),e.visitNode(t.incrementor,i,e.isExpression),e.visitNode(t.statement,i,e.isStatement,e.liftToBlock));}else t=e.visitEachChild(t,i,n);return Lt&&Ae(),t}function q(t){if(oe(t)){var n=de(),r=de(),a=e.createLoopVariable(),o=t.initializer;Nt(a),He(n,e.createArrayLiteral()),We(e.createForIn(r,e.visitNode(t.expression,i,e.isExpression),e.createStatement(e.createCall(e.createPropertyAccess(n,"push"),void 0,[r])))),He(a,e.createLiteral(0));var s=pe(),c=pe(),u=Ne(c);fe(s),Qe(u,e.createLessThan(a,e.createPropertyAccess(n,"length")));var l=void 0;if(e.isVariableDeclarationList(o)){for(var _=0,d=o.declarations;_0,"Expected continue statment to point to a valid Label."),Xe(n,t);}function W(t){if(Lt){var r=Je(t.label&&t.label.text);if(r>0)return Ve(r,t)}return e.visitEachChild(t,i,n)}function H(t){var n=je(t.label?t.label.text:void 0);e.Debug.assert(n>0,"Expected break statment to point to a valid Label."),Xe(n,t);}function X(t){if(Lt){var r=je(t.label&&t.label.text);if(r>0)return Ve(r,t)}return e.visitEachChild(t,i,n)}function Y(t){tt(e.visitNode(t.expression,i,e.isExpression),t);}function Q(t){return qe(e.visitNode(t.expression,i,e.isExpression),t)}function Z(t){oe(t)?(ve(_e(e.visitNode(t.expression,i,e.isExpression))),P(t.statement),be()):We(e.visitNode(t,i,e.isStatement));}function ee(t){if(oe(t.caseBlock)){for(var n=t.caseBlock,r=n.clauses.length,a=Pe(),o=_e(e.visitNode(t.expression,i,e.isExpression)),s=[],c=-1,u=0;u0)break;d.push(e.createCaseClause(e.visitNode(f.expression,i,e.isExpression),[Ve(s[u],f.expression)]));}else p++;d.length&&(We(e.createSwitch(o,e.createCaseBlock(d))),_+=d.length,d=[]),p>0&&(_+=p,p=0);}Xe(c>=0?s[c]:a);for(u=0;u=0;n--){var r=Jt[n];if(!Le(r))break;if(r.labelText===e)return!0}return!1}function je(t){if(e.Debug.assert(void 0!==Bt),t)for(n=Jt.length-1;n>=0;n--){if(Le(r=Jt[n])&&r.labelText===t)return r.breakLabel;if(Me(r)&&Ke(t,n-1))return r.breakLabel}else for(var n=Jt.length-1;n>=0;n--){var r=Jt[n];if(Me(r))return r.breakLabel}return 0}function Je(t){if(e.Debug.assert(void 0!==Bt),t){for(n=Jt.length-1;n>=0;n--)if(Be(r=Jt[n])&&Ke(t,n-1))return r.continueLabel}else for(var n=Jt.length-1;n>=0;n--){var r=Jt[n];if(Be(r))return r.continueLabel}return 0}function ze(t){if(t>0){void 0===Ut&&(Ut=[]);var n=e.createLiteral(-1);return void 0===Ut[t]?Ut[t]=[n]:Ut[t].push(n),n}return e.createOmittedExpression()}function Ue(n){var r=e.createLiteral(n);return e.addSyntheticTrailingComment(r,3,t(n)),r}function Ve(t,n){return e.Debug.assert(t>0,"Invalid label: "+t),e.setTextRange(e.createReturn(e.createArrayLiteral([Ue(3),ze(t)])),n)}function qe(t,n){return e.setTextRange(e.createReturn(e.createArrayLiteral(t?[Ue(2),t]:[Ue(2)])),n)}function $e(t){return e.setTextRange(e.createCall(e.createPropertyAccess(Gt,"sent"),void 0,[]),t)}function Ge(){at(0);}function We(e){e?at(1,[e]):Ge();}function He(e,t,n){at(2,[e,t],n);}function Xe(e,t){at(3,[e],t);}function Ye(e,t,n){at(4,[e,t],n);}function Qe(e,t,n){at(5,[e,t],n);}function Ze(e,t){at(7,[e],t);}function et(e,t){at(6,[e],t);}function tt(e,t){at(8,[e],t);}function nt(e,t){at(9,[e],t);}function rt(){at(10);}function at(e,t,n){void 0===Vt&&(Vt=[],qt=[],$t=[]),void 0===zt&&fe(pe());var r=Vt.length;Vt[r]=e,qt[r]=t,$t[r]=n;}function it(){rn=0,an=0,Wt=void 0,Ht=!1,Xt=!1,Yt=void 0,Qt=void 0,Zt=void 0,en=void 0,tn=void 0;var t=ot();return r(n,e.setEmitFlags(e.createFunctionExpression(void 0,void 0,void 0,void 0,[e.createParameter(void 0,void 0,void 0,Gt)],void 0,e.createBlock(t,t.length>0)),262144))}function ot(){if(Vt){for(var t=0;t=0;n--){var r=tn[n];Qt=[e.createWith(r.expression,e.createBlock(Qt))];}if(en){var a=en.startLabel,i=en.catchLabel,o=en.finallyLabel,s=en.endLabel;Qt.unshift(e.createStatement(e.createCall(e.createPropertyAccess(e.createPropertyAccess(Gt,"trys"),"push"),void 0,[e.createArrayLiteral([ze(a),ze(i),ze(o),ze(s)])]))),en=void 0;}t&&Qt.push(e.createStatement(e.createAssignment(e.createPropertyAccess(Gt,"label"),e.createLiteral(an+1))));}Yt.push(e.createCaseClause(e.createLiteral(an),Qt||[])),Qt=void 0;}function _t(e){if(zt)for(var t=0;t 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n };'};}(r||(r={}));!function(e){function t(t){function r(t){switch(t){case e.ModuleKind.AMD:return s;case e.ModuleKind.UMD:return c;default:return o}}function a(t){if(e.isDeclarationFile(t)||!e.isExternalModule(t)&&!$.isolatedModules)return t;Z=t,ee=e.collectExternalModuleInfo(t,G,$),ne[e.getOriginalNodeId(t)]=ee;var n=r(X)(t);return Z=void 0,ee=void 0,e.aggregateTransformFlags(n)}function i(){return!(ee.exportEquals||!e.isExternalModule(Z))}function o(t){V();var r=[],a=$.alwaysStrict||!$.noImplicitUseStrict&&e.isExternalModule(Z),o=e.addPrologue(r,t.statements,a,d);i()&&e.append(r,O()),e.append(r,e.visitNode(ee.externalHelpersImportDeclaration,d,e.isStatement)),e.addRange(r,e.visitNodes(t.statements,d,e.isStatement,o)),_(r,!1),e.addRange(r,q());var s=e.updateSourceFileNode(t,e.setTextRange(e.createNodeArray(r),t.statements));return ee.hasExportStarsToExportValues&&e.addEmitHelper(s,n),s}function s(t){var n=e.createIdentifier("define"),r=e.tryGetModuleNameFromFile(t,W,$),a=u(t,!0),i=a.aliasedModuleNames,o=a.unaliasedModuleNames,s=a.importAliasNames;return e.updateSourceFileNode(t,e.setTextRange(e.createNodeArray([e.createStatement(e.createCall(n,void 0,(r?[r]:[]).concat([e.createArrayLiteral([e.createLiteral("require"),e.createLiteral("exports")].concat(i,o)),e.createFunctionExpression(void 0,void 0,void 0,void 0,[e.createParameter(void 0,void 0,void 0,"require"),e.createParameter(void 0,void 0,void 0,"exports")].concat(s),void 0,l(t))])))]),t.statements))}function c(t){var n=u(t,!1),r=n.aliasedModuleNames,a=n.unaliasedModuleNames,i=n.importAliasNames,o=e.createFunctionExpression(void 0,void 0,void 0,void 0,[e.createParameter(void 0,void 0,void 0,"factory")],void 0,e.setTextRange(e.createBlock([e.createIf(e.createLogicalAnd(e.createTypeCheck(e.createIdentifier("module"),"object"),e.createTypeCheck(e.createPropertyAccess(e.createIdentifier("module"),"exports"),"object")),e.createBlock([e.createVariableStatement(void 0,[e.createVariableDeclaration("v",void 0,e.createCall(e.createIdentifier("factory"),void 0,[e.createIdentifier("require"),e.createIdentifier("exports")]))]),e.setEmitFlags(e.createIf(e.createStrictInequality(e.createIdentifier("v"),e.createIdentifier("undefined")),e.createStatement(e.createAssignment(e.createPropertyAccess(e.createIdentifier("module"),"exports"),e.createIdentifier("v")))),1)]),e.createIf(e.createLogicalAnd(e.createTypeCheck(e.createIdentifier("define"),"function"),e.createPropertyAccess(e.createIdentifier("define"),"amd")),e.createBlock([e.createStatement(e.createCall(e.createIdentifier("define"),void 0,[e.createArrayLiteral([e.createLiteral("require"),e.createLiteral("exports")].concat(r,a)),e.createIdentifier("factory")]))])))],!0),void 0));return e.updateSourceFileNode(t,e.setTextRange(e.createNodeArray([e.createStatement(e.createCall(o,void 0,[e.createFunctionExpression(void 0,void 0,void 0,void 0,[e.createParameter(void 0,void 0,void 0,"require"),e.createParameter(void 0,void 0,void 0,"exports")].concat(i),void 0,l(t))]))]),t.statements))}function u(t,n){for(var r=[],a=[],i=[],o=0,s=t.amdDependencies;o=2?2:0)),t));}else r&&e.isDefaultImport(t)&&(n=e.append(n,e.createVariableStatement(void 0,e.createVariableDeclarationList([e.setTextRange(e.createVariableDeclaration(e.getSynthesizedClone(r.name),void 0,e.getGeneratedNameForNode(t)),t)],H>=2?2:0))));if(S(t)){var i=e.getOriginalNodeId(t);re[i]=C(re[i],t);}else n=C(n,t);return e.singleOrMany(n)}function f(t){var n=e.getExternalModuleNameLiteral(t,Z,W,G,$),r=[];return n&&r.push(n),e.createCall(e.createIdentifier("require"),void 0,r)}function m(t){e.Debug.assert(e.isExternalModuleImportEqualsDeclaration(t),"import= for internal module references should be handled in an earlier transformer.");var n;if(X!==e.ModuleKind.AMD?n=e.hasModifier(t,1)?e.append(n,e.setTextRange(e.createStatement(I(t.name,f(t))),t)):e.append(n,e.setTextRange(e.createVariableStatement(void 0,e.createVariableDeclarationList([e.createVariableDeclaration(e.getSynthesizedClone(t.name),void 0,f(t))],H>=2?2:0)),t)):e.hasModifier(t,1)&&(n=e.append(n,e.setTextRange(e.createStatement(I(e.getExportName(t),e.getLocalName(t))),t))),S(t)){var r=e.getOriginalNodeId(t);re[r]=E(re[r],t);}else n=E(n,t);return e.singleOrMany(n)}function g(t){if(t.moduleSpecifier){var n=e.getGeneratedNameForNode(t);if(t.exportClause){var r=[];X!==e.ModuleKind.AMD&&r.push(e.setTextRange(e.createVariableStatement(void 0,e.createVariableDeclarationList([e.createVariableDeclaration(n,void 0,f(t))])),t));for(var a=0,i=t.exportClause.elements;a0,"Cannot modify the lexical environment during initialization."),e.Debug.assert(F<2,"Cannot modify the lexical environment after transformation has completed.");var n=e.createVariableDeclaration(t);S?S.push(n):S=[n];}function m(t){e.Debug.assert(F>0,"Cannot modify the lexical environment during initialization."),e.Debug.assert(F<2,"Cannot modify the lexical environment after transformation has completed."),T?T.push(t):T=[t];}function g(){e.Debug.assert(F>0,"Cannot modify the lexical environment during initialization."),e.Debug.assert(F<2,"Cannot modify the lexical environment after transformation has completed."),e.Debug.assert(!w,"Lexical environment is suspended."),D[A]=S,N[A]=T,A++,S=void 0,T=void 0;}function y(){e.Debug.assert(F>0,"Cannot modify the lexical environment during initialization."),e.Debug.assert(F<2,"Cannot modify the lexical environment after transformation has completed."),e.Debug.assert(!w,"Lexical environment is already suspended."),w=!0;}function h(){e.Debug.assert(F>0,"Cannot modify the lexical environment during initialization."),e.Debug.assert(F<2,"Cannot modify the lexical environment after transformation has completed."),e.Debug.assert(w,"Lexical environment is not suspended."),w=!1;}function v(){e.Debug.assert(F>0,"Cannot modify the lexical environment during initialization."),e.Debug.assert(F<2,"Cannot modify the lexical environment after transformation has completed."),e.Debug.assert(!w,"Lexical environment is suspended.");var t;if((S||T)&&(T&&(t=T.slice()),S)){var n=e.createVariableStatement(void 0,e.createVariableDeclarationList(S));t?t.push(n):t=[n];}return A--,S=D[A],T=N[A],0===A&&(D=[],N=[]),t}function b(t){e.Debug.assert(F>0,"Cannot modify the transformation context during initialization."),e.Debug.assert(F<2,"Cannot modify the transformation context after transformation has completed."),e.Debug.assert(!t.scoped,"Cannot request a scoped emit helper."),C=e.append(C,t);}function x(){e.Debug.assert(F>0,"Cannot modify the transformation context during initialization."),e.Debug.assert(F<2,"Cannot modify the transformation context after transformation has completed.");var t=C;return C=void 0,t}function k(){if(F<3){for(var t=0,n=a;t=0&&(e.Debug.assert(!1,"We do not support name index right now, Make sure to update updateLastEncodedAndRecordedSpans when we start using this"),x.sourceMapMappings+=r(h.nameIndex-b),b=h.nameIndex),v=h,x.sourceMapDecodedMappings.push(v);}}function c(t){if(!T&&!e.positionIsSynthesized(t)){S&&e.performance.mark("beforeSourcemap");var r=e.getLineAndCharacterOfPosition(f,t);r.line++,r.character++;var a=n.getLine(),i=n.getColumn();!h||h.emittedLine!==a||h.emittedColumn!==i||h.sourceIndex===y&&(h.sourceLine>r.line||h.sourceLine===r.line&&h.sourceColumn>r.character)?(s(),h={emittedLine:a,emittedColumn:i,sourceLine:r.line,sourceColumn:r.character,sourceIndex:y}):(h.sourceLine=r.line,h.sourceColumn=r.character,h.sourceIndex=y),S&&(e.performance.mark("afterSourcemap"),e.performance.measure("Source Map","beforeSourcemap","afterSourcemap"));}}function u(t,n,r){if(T)return r(t,n);if(n){var a=n.emitNode,i=a&&a.flags,o=a&&a.sourceMapRange||n,s=o.pos,u=o.end;295!==n.kind&&0==(16&i)&&s>=0&&c(e.skipTrivia(m,s)),64&i?(T=!0,r(t,n),T=!1):r(t,n),295!==n.kind&&0==(32&i)&&u>=0&&c(u);}}function l(t,n,r,a){if(T)return a(n,r);var i=t&&t.emitNode,o=i&&i.flags,s=i&&i.tokenSourceMapRanges&&i.tokenSourceMapRanges[n];return r=e.skipTrivia(m,s?s.pos:r),0==(128&o)&&r>=0&&c(r),r=a(n,r),s&&(r=s.end),0==(256&o)&&r>=0&&c(r),r}function _(n){if(!T){m=(f=n).text;var r=k.sourceRoot?t.getCommonSourceDirectory():g,a=e.getRelativePathToDirectoryOrUrl(r,f.fileName,t.getCurrentDirectory(),t.getCanonicalFileName,!0);-1===(y=e.indexOf(x.sourceMapSources,a))&&(y=x.sourceMapSources.length,x.sourceMapSources.push(a),x.inputSourceFileNames.push(f.fileName),k.inlineSources&&x.sourceMapSourcesContent.push(f.text));}}function d(){if(!T)return s(),JSON.stringify({version:3,file:x.sourceMapFile,sourceRoot:x.sourceMapSourceRoot,sources:x.sourceMapSources,names:x.sourceMapNames,mappings:x.sourceMapMappings,sourcesContent:x.sourceMapSourcesContent})}function p(){if(!T){if(k.inlineSourceMap){var t=e.convertToBase64(d());return x.jsSourceMappingURL="data:application/json;base64,"+t}return x.jsSourceMappingURL}}var f,m,g,y,h,v,b,x,k=t.getCompilerOptions(),S=k.extendedDiagnostics,T=!(k.sourceMap||k.inlineSourceMap);return{initialize:i,reset:o,getSourceMapData:function(){return x},setSourceFile:_,emitPos:c,emitNodeWithSourceMap:u,emitTokenWithSourceMap:l,getText:d,getSourceMappingURL:p}}function n(e){if(e<64)return i.charAt(e);throw TypeError(e+": not a 64 based value")}function r(e){e<0?e=1+(-e<<1):e<<=1;var t="";do{var r=31&e;(e>>=5)>0&&(r|=32),t+=n(r);}while(e>0);return t}var a={emittedLine:1,emittedColumn:1,sourceLine:1,sourceColumn:1,sourceIndex:0};e.createSourceMapWriter=t;var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";}(r||(r={}));!function(e){function t(t,n){function r(t,n,r){if(j)r(t,n);else if(n){K=!1;var i=n.emitNode,o=i&&i.flags,s=i&&i.commentRange||n,c=s.pos,u=s.end;if(c<0&&u<0||c===u)a(t,n,i,o,r);else{I&&e.performance.mark("preEmitNodeWithComment");var l=295!==n.kind,d=c<0||0!=(512&o),p=u<0||0!=(1024&o);d||_(c,l);var f=M,g=L,y=B;d||(M=c),p||(L=u,227===n.kind&&(B=u)),I&&e.performance.measure("commentTime","preEmitNodeWithComment"),a(t,n,i,o,r),I&&e.performance.mark("postEmitNodeWithComment"),M=f,L=g,B=y,!p&&l&&m(u),I&&e.performance.measure("commentTime","postEmitNodeWithComment");}}}function a(t,n,r,a,s){var c=r&&r.leadingComments;e.some(c)&&(I&&e.performance.mark("preEmitNodeWithSynthesizedComments"),e.forEach(c,i),I&&e.performance.measure("commentTime","preEmitNodeWithSynthesizedComments")),u(t,n,a,s);var l=r&&r.trailingComments;e.some(l)&&(I&&e.performance.mark("postEmitNodeWithSynthesizedComments"),e.forEach(l,o),I&&e.performance.measure("commentTime","postEmitNodeWithSynthesizedComments"));}function i(e){2===e.kind&&A.writeLine(),s(e),e.hasTrailingNewLine||2===e.kind?A.writeLine():A.write(" ");}function o(e){A.isAtStartOfLine()||A.write(" "),s(e),e.hasTrailingNewLine&&A.writeLine();}function s(t){var n=c(t),r=3===t.kind?e.computeLineStarts(n):void 0;e.writeCommentRange(n,r,A,0,n.length,R);}function c(e){return 3===e.kind?"/*"+e.text+"*/":"//"+e.text}function u(e,t,n,r){2048&n?(j=!0,r(e,t),j=!1):r(e,t);}function l(t,n,r){I&&e.performance.mark("preEmitBodyWithDetachedComments");var a=n.pos,i=n.end,o=e.getEmitFlags(t),s=a<0||0!=(512&o),c=j||i<0||0!=(1024&o);s||E(n),I&&e.performance.measure("commentTime","preEmitBodyWithDetachedComments"),2048&o&&!j?(j=!0,r(t),j=!1):r(t),I&&e.performance.mark("beginEmitBodyWithDetachedCommetns"),c||(_(n.end,!0),K&&!A.isAtStartOfLine()&&A.writeLine()),I&&e.performance.measure("commentTime","beginEmitBodyWithDetachedCommetns");}function _(e,t){K=!1,t?v(e,p):0===e&&v(e,d);}function d(e,t,n,r,a){N(e,t)&&p(e,t,n,r,a);}function p(t,r,a,i,o){K||(e.emitNewLineBeforeLeadingCommentOfPosition(O,A,o,t),K=!0),n&&n(t),e.writeCommentRange(P,O,A,t,r,R),n&&n(r),i?A.writeLine():A.write(" ");}function f(e){j||-1===e||_(e,!0);}function m(e){b(e,g);}function g(t,r,a,i){A.isAtStartOfLine()||A.write(" "),n&&n(t),e.writeCommentRange(P,O,A,t,r,R),n&&n(r),i&&A.writeLine();}function y(t){j||(I&&e.performance.mark("beforeEmitTrailingCommentsOfPosition"),b(t,h),I&&e.performance.measure("commentTime","beforeEmitTrailingCommentsOfPosition"));}function h(t,r,a,i){n&&n(t),e.writeCommentRange(P,O,A,t,r,R),n&&n(r),i?A.writeLine():A.write(" ");}function v(t,n){-1!==M&&t===M||(T(t)?C(n):e.forEachLeadingCommentRange(P,t,n,t));}function b(t,n){(-1===L||t!==L&&t!==B)&&e.forEachTrailingCommentRange(P,t,n);}function x(){w=void 0,P=void 0,O=void 0,F=void 0;}function k(e){A=e;}function S(t){P=(w=t).text,O=e.getLineStarts(w),F=void 0;}function T(t){return void 0!==F&&e.lastOrUndefined(F).nodePos===t}function C(t){var n=e.lastOrUndefined(F).detachedCommentEndPos;F.length-1?F.pop():F=void 0,e.forEachLeadingCommentRange(P,n,t,n);}function E(t){var n=e.emitDetachedComments(P,O,A,D,t,R,j);n&&(F?F.push(n):F=[n]);}function D(t,r,a,i,o,s){n&&n(i),e.writeCommentRange(t,r,a,i,o,s),n&&n(o);}function N(t,n){if(47===P.charCodeAt(t+1)&&t+2=0}function c(t){if(t){var n=e.getLeadingCommentRanges(ve,t.pos);if(e.forEach(n,s))return;ie(t);}}function u(){var t=e.createTextWriter(me);t.trackSymbol=f,t.reportInaccessibleThisError=g,t.reportIllegalExtends=m,t.writeKeyword=t.write,t.writeOperator=t.write,t.writePunctuation=t.write,t.writeSpace=t.write,t.writeStringLiteral=t.writeLiteral,t.writeParameter=t.write,t.writeProperty=t.write,t.writeSymbol=t.write,l(t);}function l(e){de=e,se=e.write,_e=e.writeTextOfNode,ce=e.writeLine,ue=e.increaseIndent,le=e.decreaseIndent;}function _(t){var n=de;e.forEach(t,function(t){var n;226===t.kind?n=t.parent.parent:241===t.kind||242===t.kind||239===t.kind?e.Debug.fail("We should be getting ImportDeclaration instead to write"):n=t;var r=e.forEach(we,function(e){return e.node===n?e:void 0});if(!r&&Ce&&(r=e.forEach(Ce,function(e){return e.node===n?e:void 0})),r)if(238===r.node.kind)r.isVisible=!0;else{u();for(var a=r.indent;a;a--)ue();233===n.kind&&(e.Debug.assert(void 0===Ce),Ce=[]),w(n),233===n.kind&&(r.subModuleElementDeclarationEmitInfo=Ce,Ce=void 0),r.asynchronousOutput=de.getText();}}),l(n);}function d(t){if(t){Ee||(Ee=e.createMap());for(var n=0,r=t;n")));}(t);case 159:return function(e){a(e.typeName),e.typeArguments&&(se("<"),x(e.typeArguments,T),se(">"));}(t);case 162:return function(e){se("typeof "),a(e.exprName);}(t);case 164:return function(e){T(e.elementType),se("[]");}(t);case 165:return function(e){se("["),x(e.elementTypes,T),se("]");}(t);case 166:return function(e){b(e.types," | ",T);}(t);case 167:return function(e){b(e.types," & ",T);}(t);case 168:return function(e){se("("),T(e.type),se(")");}(t);case 170:return function(t){se(e.tokenToString(t.operator)),se(" "),T(t.type);}(t);case 171:return function(e){T(e.objectType),se("["),T(e.indexType),se("]");}(t);case 172:return function(e){var t=ye;ye=e,se("{"),ce(),ue(),e.readonlyToken&&se("readonly "),se("["),r(e.typeParameter.name),se(" in "),T(e.typeParameter.constraint),se("]"),e.questionToken&&se("?"),se(": "),T(e.type),se(";"),ce(),le(),se("}"),ye=t;}(t);case 160:case 161:return ne(t);case 163:return function(e){se("{"),e.members.length&&(ce(),ue(),v(e.members),le()),se("}");}(t);case 71:case 143:return a(t);case 158:return function(e){_e(ve,e.parameterName),se(" is "),T(e.type);}(t)}}function C(t){ve=t.text,be=e.getLineStarts(t),xe=t.identifiers,ke=e.isExternalModule(t),ye=t,e.emitDetachedComments(ve,be,de,e.writeCommentRange,t,me,!0),v(t.statements);}function E(){if(!xe.has("_default"))return"_default";for(var e=0;;){var t="_default_"+ ++e;if(!xe.has(t))return t}}function D(t){function r(){return{diagnosticMessage:e.Diagnostics.Default_export_of_the_module_has_or_is_using_private_name_0,errorNode:t}}if(71===t.expression.kind)se(t.isExportEquals?"export = ":"export default "),_e(ve,t.expression);else{var a=E();Te||se("declare "),se("var "),se(a),se(": "),de.getSymbolAccessibilityDiagnostic=r,n.writeTypeOfExpression(t.expression,ye,1026,de),se(";"),ce(),se(t.isExportEquals?"export = ":"export default "),se(a);}se(";"),ce(),71===t.expression.kind&&_(n.collectLinkedAliases(t.expression));}function N(e){return n.isDeclarationVisible(e)}function A(e,t){if(t)w(e);else if(237===e.kind||265===e.parent.kind&&ke){var r=void 0;if(Ce&&265!==e.parent.kind)Ce.push({node:e,outputPos:de.getTextPos(),indent:de.getIndent(),isVisible:r});else{if(238===e.kind){var a=e;a.importClause&&(r=a.importClause.name&&n.isDeclarationVisible(a.importClause)||I(a.importClause.namedBindings));}we.push({node:e,outputPos:de.getTextPos(),indent:de.getIndent(),isVisible:r});}}}function w(t){switch(t.kind){case 228:return te(t);case 208:return Z(t);case 230:return W(t);case 229:return G(t);case 231:return J(t);case 232:return z(t);case 233:return j(t);case 237:return F(t);case 238:return R(t);default:e.Debug.fail("Unknown symbol kind");}}function P(t){if(265===t.parent.kind){var n=e.getModifierFlags(t);1&n&&se("export "),512&n?se("default "):230===t.kind||Te||se("declare ");}}function O(e){8&e?se("private "):16&e&&se("protected "),32&e&&se("static "),64&e&&se("readonly "),128&e&&se("abstract ");}function F(t){function n(){return{diagnosticMessage:e.Diagnostics.Import_declaration_0_is_using_private_name_1,errorNode:t,typeName:t.name}}Ne(t),e.hasModifier(t,1)&&se("export "),se("import "),_e(ve,t.name),se(" = "),e.isInternalModuleImportEqualsDeclaration(t)?(S(t.moduleReference,n),se(";")):(se("require("),M(t),se(");")),de.writeLine();}function I(t){if(t)return 240===t.kind?n.isDeclarationVisible(t):e.forEach(t.elements,function(e){return n.isDeclarationVisible(e)})}function R(t){if(Ne(t),e.hasModifier(t,1)&&se("export "),se("import "),t.importClause){var r=de.getTextPos();t.importClause.name&&n.isDeclarationVisible(t.importClause)&&_e(ve,t.importClause.name),t.importClause.namedBindings&&I(t.importClause.namedBindings)&&(r!==de.getTextPos()&&se(", "),240===t.importClause.namedBindings.kind?(se("* as "),_e(ve,t.importClause.namedBindings.name)):(se("{ "),x(t.importClause.namedBindings.elements,L,n.isDeclarationVisible),se(" }"))),se(" from ");}M(t),se(";"),de.writeLine();}function M(r){he=he||233!==r.kind;var a;if(237===r.kind){var i=r;a=e.getExternalModuleImportEqualsDeclarationExpression(i);}else a=233===r.kind?r.name:(i=r).moduleSpecifier;if(9===a.kind&&fe&&(ge.out||ge.outFile)){var o=e.getExternalModuleNameFromDeclaration(t,n,r);if(o)return se('"'),se(o),void se('"')}_e(ve,a);}function L(e){e.propertyName&&(_e(ve,e.propertyName),se(" as ")),_e(ve,e.name);}function B(e){L(e),_(n.collectLinkedAliases(e.propertyName||e.name));}function K(e){Ne(e),se("export "),e.exportClause?(se("{ "),x(e.exportClause.elements,B),se(" }")):se("*"),e.moduleSpecifier&&(se(" from "),M(e)),se(";"),de.writeLine();}function j(t){for(Ne(t),P(t),e.isGlobalScopeAugmentation(t)?se("global "):(se(16&t.flags?"namespace ":"module "),e.isExternalModuleAugmentation(t)?M(t):_e(ve,t.name));t.body&&234!==t.body.kind;)t=t.body,se("."),_e(ve,t.name);var n=ye;t.body?(ye=t,se(" {"),ce(),ue(),v(t.body.statements),le(),se("}"),ce(),ye=n):se(";");}function J(t){function n(){return{diagnosticMessage:e.Diagnostics.Exported_type_alias_0_has_or_is_using_private_name_1,errorNode:t.type,typeName:t.name}}var r=ye;ye=t,Ne(t),P(t),se("type "),_e(ve,t.name),q(t.typeParameters),se(" = "),S(t.type,n),se(";"),ce(),ye=r;}function z(t){Ne(t),P(t),e.isConst(t)&&se("const "),se("enum "),_e(ve,t.name),se(" {"),ce(),ue(),v(t.members),le(),se("}"),ce();}function U(e){Ne(e),_e(ve,e.name);var t=n.getConstantValue(e);void 0!==t&&(se(" = "),se(t.toString())),se(","),ce();}function V(t){return 151===t.parent.kind&&e.hasModifier(t.parent,8)}function q(t){function n(t){function n(){var n;switch(t.parent.kind){case 229:n=e.Diagnostics.Type_parameter_0_of_exported_class_has_or_is_using_private_name_1;break;case 230:n=e.Diagnostics.Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1;break;case 156:n=e.Diagnostics.Type_parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1;break;case 155:n=e.Diagnostics.Type_parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1;break;case 151:case 150:n=e.hasModifier(t.parent,32)?e.Diagnostics.Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1:229===t.parent.parent.kind?e.Diagnostics.Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1:e.Diagnostics.Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1;break;case 228:n=e.Diagnostics.Type_parameter_0_of_exported_function_has_or_is_using_private_name_1;break;case 231:n=e.Diagnostics.Type_parameter_0_of_exported_type_alias_has_or_is_using_private_name_1;break;default:e.Debug.fail("This is unknown parent for type parameter: "+t.parent.kind);}return{diagnosticMessage:n,errorNode:t,typeName:t.name}}ue(),Ne(t),le(),_e(ve,t.name),t.constraint&&!V(t)&&(se(" extends "),160===t.parent.kind||161===t.parent.kind||t.parent.parent&&163===t.parent.parent.kind?(e.Debug.assert(151===t.parent.kind||150===t.parent.kind||160===t.parent.kind||161===t.parent.kind||155===t.parent.kind||156===t.parent.kind),T(t.constraint)):S(t.constraint,n)),t.default&&!V(t)&&(se(" = "),160===t.parent.kind||161===t.parent.kind||t.parent.parent&&163===t.parent.parent.kind?(e.Debug.assert(151===t.parent.kind||150===t.parent.kind||160===t.parent.kind||161===t.parent.kind||155===t.parent.kind||156===t.parent.kind),T(t.default)):S(t.default,n));}t&&(se("<"),x(t,n),se(">"));}function $(t,r,a){function i(r){function i(){var t;return t=229===r.parent.parent.kind?a?e.Diagnostics.Implements_clause_of_exported_class_0_has_or_is_using_private_name_1:e.Diagnostics.extends_clause_of_exported_class_0_has_or_is_using_private_name_1:e.Diagnostics.extends_clause_of_exported_interface_0_has_or_is_using_private_name_1,{diagnosticMessage:t,errorNode:r,typeName:r.parent.parent.name}}e.isEntityNameExpression(r.expression)?S(r,i):a||95!==r.expression.kind?(de.getSymbolAccessibilityDiagnostic=i,Se=t,n.writeBaseConstructorTypeOfClass(ye,ye,1026,de),Se=void 0):se("null");}r&&(se(a?" implements ":" extends "),x(r,i));}function G(t){Ne(t),P(t),e.hasModifier(t,128)&&se("abstract "),se("class "),_e(ve,t.name);var n=ye;ye=t,q(t.typeParameters);var r=e.getClassExtendsHeritageClauseElement(t);r&&(t.name,$(t.name,[r],!1)),$(t.name,e.getClassImplementsHeritageClauseElements(t),!0),se(" {"),ce(),ue(),function(t){t&&e.forEach(t.parameters,function(t){e.hasModifier(t,92)&&H(t);});}(e.getFirstConstructorWithBody(t)),v(t.members),le(),se("}"),ce(),ye=n;}function W(t){Ne(t),P(t),se("interface "),_e(ve,t.name);var n=ye;ye=t,q(t.typeParameters);var r=e.filter(e.getInterfaceBaseTypeNodes(t),function(t){return e.isEntityNameExpression(t.expression)});r&&r.length&&$(t.name,r,!1),se(" {"),ce(),ue(),v(t.members),le(),se("}"),ce(),ye=n;}function H(t){e.hasDynamicName(t)||(Ne(t),O(e.getModifierFlags(t)),X(t),se(";"),ce());}function X(t){function r(n){return 226===t.kind?n.errorModuleName?2===n.accessibility?e.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:e.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Exported_variable_0_has_or_is_using_private_name_1:149===t.kind||148===t.kind?e.hasModifier(t,32)?n.errorModuleName?2===n.accessibility?e.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:e.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_private_name_1:229===t.parent.kind?n.errorModuleName?2===n.accessibility?e.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:e.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_private_name_1:n.errorModuleName?e.Diagnostics.Property_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Property_0_of_exported_interface_has_or_is_using_private_name_1:void 0}function a(e){var n=r(e);return void 0!==n?{diagnosticMessage:n,errorNode:t,typeName:t.name}:void 0}function i(e){for(var t=[],n=0,r=e.elements;n0?e.parameters[0].type:void 0}function r(t){var n;return 154===a.kind?(n=e.hasModifier(a.parent,32)?t.errorModuleName?e.Diagnostics.Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Parameter_0_of_public_static_property_setter_from_exported_class_has_or_is_using_private_name_1:t.errorModuleName?e.Diagnostics.Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Parameter_0_of_public_property_setter_from_exported_class_has_or_is_using_private_name_1,{diagnosticMessage:n,errorNode:a.parameters[0],typeName:a.name}):(n=e.hasModifier(a,32)?t.errorModuleName?2===t.accessibility?e.Diagnostics.Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named:e.Diagnostics.Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1:e.Diagnostics.Return_type_of_public_static_property_getter_from_exported_class_has_or_is_using_private_name_0:t.errorModuleName?2===t.accessibility?e.Diagnostics.Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named:e.Diagnostics.Return_type_of_public_property_getter_from_exported_class_has_or_is_using_name_0_from_private_module_1:e.Diagnostics.Return_type_of_public_property_getter_from_exported_class_has_or_is_using_private_name_0,{diagnosticMessage:n,errorNode:a.name,typeName:void 0})}if(!e.hasDynamicName(t)){var a,i=e.getAllAccessorDeclarations(t.parent.members,t);if(t===i.firstAccessor){if(Ne(i.getAccessor),Ne(i.setAccessor),O(e.getModifierFlags(t)|(i.setAccessor?0:64)),_e(ve,t.name),!e.hasModifier(t,8)){a=t;var o=n(t);if(!o){var s=153===t.kind?i.setAccessor:i.getAccessor;(o=n(s))&&(a=s);}y(t,o,r);}se(";"),ce();}}}function te(t){e.hasDynamicName(t)||n.isImplementationOfOverload(t)||(Ne(t),228===t.kind?P(t):151!==t.kind&&152!==t.kind||O(e.getModifierFlags(t)),228===t.kind?(se("function "),_e(ve,t.name)):152===t.kind?se("constructor"):(_e(ve,t.name),e.hasQuestionToken(t)&&se("?")),re(t));}function ne(e){Ne(e),re(e);}function re(t){function n(n){var r;switch(t.kind){case 156:r=n.errorModuleName?e.Diagnostics.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1:e.Diagnostics.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_0;break;case 155:r=n.errorModuleName?e.Diagnostics.Return_type_of_call_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1:e.Diagnostics.Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_name_0;break;case 157:r=n.errorModuleName?e.Diagnostics.Return_type_of_index_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1:e.Diagnostics.Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_name_0;break;case 151:case 150:r=e.hasModifier(t,32)?n.errorModuleName?2===n.accessibility?e.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named:e.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1:e.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0:229===t.parent.kind?n.errorModuleName?2===n.accessibility?e.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named:e.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_private_module_1:e.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_private_name_0:n.errorModuleName?e.Diagnostics.Return_type_of_method_from_exported_interface_has_or_is_using_name_0_from_private_module_1:e.Diagnostics.Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0;break;case 228:r=n.errorModuleName?2===n.accessibility?e.Diagnostics.Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named:e.Diagnostics.Return_type_of_exported_function_has_or_is_using_name_0_from_private_module_1:e.Diagnostics.Return_type_of_exported_function_has_or_is_using_private_name_0;break;default:e.Debug.fail("This is unknown kind for signature: "+t.kind);}return{diagnosticMessage:r,errorNode:t.name||t}}var r=ye;ye=t;var a=!1;if(157===t.kind)O(e.getModifierFlags(t)),se("[");else{if(156===t.kind||161===t.kind)se("new ");else if(160===t.kind){var i=de.getText();t.typeParameters&&"<"===i.charAt(i.length-1)&&(a=!0,se("("));}q(t.typeParameters),se("(");}x(t.parameters,ae),se(157===t.kind?"]":")");var o=160===t.kind||161===t.kind;o||163===t.parent.kind?t.type&&(se(o?" => ":": "),T(t.type)):152===t.kind||e.hasModifier(t,8)||h(t,n),ye=r,o?a&&se(")"):(se(";"),ce());}function ae(t){function r(e){var n=a(e);return void 0!==n?{diagnosticMessage:n,errorNode:t,typeName:t.name}:void 0}function a(n){switch(t.parent.kind){case 152:return n.errorModuleName?2===n.accessibility?e.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:e.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1;case 156:return n.errorModuleName?e.Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1;case 155:return n.errorModuleName?e.Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1;case 157:return n.errorModuleName?e.Diagnostics.Parameter_0_of_index_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Parameter_0_of_index_signature_from_exported_interface_has_or_is_using_private_name_1;case 151:case 150:return e.hasModifier(t.parent,32)?n.errorModuleName?2===n.accessibility?e.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:e.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1:229===t.parent.parent.kind?n.errorModuleName?2===n.accessibility?e.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:e.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1:n.errorModuleName?e.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1;case 228:return n.errorModuleName?2===n.accessibility?e.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:e.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_private_name_1;default:e.Debug.fail("This is unknown parent for parameter: "+t.parent.kind);}}function i(e){if(174===e.kind)se("{"),x(e.elements,o),se("}");else if(175===e.kind){se("[");var t=e.elements;x(t,o),t&&t.hasTrailingComma&&se(", "),se("]");}}function o(t){200===t.kind?se(" "):176===t.kind&&(t.propertyName&&(_e(ve,t.propertyName),se(": ")),t.name&&(e.isBindingPattern(t.name)?i(t.name):(e.Debug.assert(71===t.name.kind),t.dotDotDotToken&&se("..."),_e(ve,t.name))));}ue(),Ne(t),t.dotDotDotToken&&se("..."),e.isBindingPattern(t.name)?i(t.name):_e(ve,t.name),n.isOptionalParameter(t)&&se("?"),le(),160===t.parent.kind||161===t.parent.kind||163===t.parent.parent.kind?Y(t):e.hasModifier(t.parent,8)||y(t,t.type,r);}function ie(e){switch(e.kind){case 228:case 233:case 237:case 230:case 229:case 231:case 232:return A(e,N(e));case 208:return A(e,Q(e));case 238:return A(e,!e.importClause);case 244:return K(e);case 152:case 151:case 150:return te(e);case 156:case 155:case 157:return ne(e);case 153:case 154:return ee(e);case 149:case 148:return H(e);case 264:return U(e);case 243:return D(e);case 265:return C(e)}}function oe(n,r,i){function o(t,a){var i=266===a.kind;i&&!r||(e.Debug.assert(!!t.declarationFilePath||e.isSourceFileJavaScript(n),"Declaration file is not present only for javascript files"),s=t.declarationFilePath||t.jsFilePath,c=i);}var s,c=!1;return e.isDeclarationFile(n)?s=n.fileName:e.forEachEmittedFile(t,o,n,i),s&&(s=e.getRelativePathToDirectoryOrUrl(e.getDirectoryPath(e.normalizeSlashes(a)),s,t.getCurrentDirectory(),t.getCanonicalFileName,!1),Pe+='/// '+me),c}var se,ce,ue,le,_e,de,pe=266===i.kind?i.sourceFiles:[i],fe=266===i.kind,me=t.getNewLine(),ge=t.getCompilerOptions();u();var ye,he,ve,be,xe,ke,Se,Te,Ce,Ee,De=!1,Ne=ge.removeComments?e.noop:k,Ae=ge.stripInternal?c:ie,we=[],Pe="",Oe=[],Fe=!1,Ie=[];return e.forEach(pe,function(n){if(!e.isSourceFileJavaScript(n)){if(ge.noResolve||e.forEach(n.referencedFiles,function(r){var a=e.tryResolveScriptReference(t,n,r);a&&!e.contains(Oe,a)&&(oe(a,!fe&&!Fe,o)&&(Fe=!0),Oe.push(a));}),he=!1,fe&&e.isExternalModule(n)?e.isExternalModule(n)&&(Te=!0,se('declare module "'+e.getResolvedExternalModuleName(t,n)+'" {'),ce(),ue(),C(n),le(),se("}"),ce()):(Te=!1,C(n)),we.length){var r=de;e.forEach(we,function(t){if(t.isVisible&&!t.asynchronousOutput){e.Debug.assert(238===t.node.kind),u(),e.Debug.assert(0===t.indent||1===t.indent&&fe);for(n=0;n'+me;}),{reportedDeclarationError:De,moduleElementDeclarationEmitInfo:Ie,synchronousDeclarationOutput:de.getText(),referencesOutput:Pe}}function r(t,r,a,i,o,s){function c(t,n){var r=0,a="";return e.forEach(n,function(e){e.asynchronousOutput&&(a+=t.substring(r,e.outputPos),a+=c(e.asynchronousOutput,e.subModuleElementDeclarationEmitInfo),r=e.outputPos);}),a+=t.substring(r)}var u=n(a,i,o,t,r,s),l=u.reportedDeclarationError||a.isEmitBlocked(t)||a.getCompilerOptions().noEmit;if(!l){var _=266===r.kind?r.sourceFiles:[r],d=u.referencesOutput+c(u.synchronousDeclarationOutput,u.moduleElementDeclarationEmitInfo);e.writeFile(a,o,t,d,a.getCompilerOptions().emitBOM,_);}return l}e.getDeclarationDiagnostics=t,e.writeDeclarationFile=r;}(r||(r={}));!function(e){function t(t,r,a,i,o){function s(n,a){var o=n.jsFilePath,s=n.sourceMapFilePath,u=n.declarationFilePath;r.isEmitBlocked(o)||f.noEmit?k=!0:i||c(o,s,a),u&&(k=e.writeDeclarationFile(u,e.getOriginalSourceFileOrBundle(a),r,t,h,i)||k),!k&&y&&(i||y.push(o),s&&y.push(s),u&&y.push(u));}function c(t,n,a){var i=266===a.kind?a:void 0,o=265===a.kind?a:void 0,s=i?i.sourceFiles:[o];x.initialize(t,n,a),i?(d=e.createMap(),p=!1,C.writeBundle(i,b)):(p=!0,C.writeFile(o,b)),b.writeLine();var c=x.getSourceMappingURL();c&&b.write("//# sourceMappingURL="+c),f.sourceMap&&!f.inlineSourceMap&&e.writeFile(r,h,n,x.getText(),!1,s),g&&g.push(x.getSourceMapData()),e.writeFile(r,h,t,b.getText(),f.emitBOM,s),x.reset(),b.reset(),_=void 0,d=void 0,p=!1;}function u(e){_=e,x.setSourceFile(e);}function l(t,n){var r=!1,a=266===t.kind?t:void 0;if(!a||m!==e.ModuleKind.None){for(var i=a?a.sourceFiles.length:1,o=0;o "),h(e.type);}function Z(e){Fn("new "),En(e,e.typeParameters),Nn(e,e.parameters),Fn(" => "),h(e.type);}function ee(e){Fn("typeof "),h(e.exprName);}function te(e){Fn("{"),wn(e,e.members,65),Fn("}");}function ne(e){h(e.elementType),Fn("[]");}function re(e){Fn("["),wn(e,e.elementTypes,336),Fn("]");}function ae(e){wn(e,e.types,260);}function ie(e){wn(e,e.types,264);}function oe(e){Fn("("),h(e.type),Fn(")");}function se(){Fn("this");}function ce(e){jn(e.operator),Fn(" "),h(e.type);}function ue(e){h(e.objectType),Fn("["),h(e.indexType),Fn("]");}function le(e){Fn("{"),In(),Rn(),Bn(e.readonlyToken,"readonly "),Fn("["),h(e.typeParameter.name),Fn(" in "),h(e.typeParameter.constraint),Fn("]"),Bn(e.questionToken,"?"),Fn(": "),h(e.type),Fn(";"),In(),Mn(),Fn("}");}function _e(e){b(e.literal);}function de(e){var t=e.elements;0===t.length?Fn("{}"):(Fn("{"),wn(e,t,432),Fn("}"));}function pe(e){0===e.elements.length?Fn("[]"):(Fn("["),wn(e,e.elements,304),Fn("]"));}function fe(e){kn(e.propertyName,": "),Bn(e.dotDotDotToken,"..."),h(e.name),bn(" = ",e.initializer);}function me(e){var t=e.elements;0===t.length?Fn("[]"):Pn(e,t,4466|(e.multiLine?32768:0));}function ge(t){var n=t.properties;if(0===n.length)Fn("{}");else{var r=32768&e.getEmitFlags(t);r&&Rn();var a=t.multiLine?32768:0;wn(t,n,978|(hr.languageVersion>=1?32:0)|a),r&&Mn();}}function ye(t){var n=!1,r=!1;if(!(65536&e.getEmitFlags(t))){var a={kind:23,pos:t.expression.end,end:e.skipTrivia(hr.text,t.expression.end)+1};n=Xn(t,t.expression,a),r=Xn(t,a,t.name);}b(t.expression),Vn(n),Fn(!n&&he(t.expression)?"..":"."),Vn(r),h(t.name),qn(n,r);}function he(n){if(n=e.skipPartiallyEmittedExpressions(n),e.isNumericLiteral(n)){var r=tr(n);return!n.numericLiteralFlags&&r.indexOf(e.tokenToString(23))<0}if(e.isPropertyAccessExpression(n)||e.isElementAccessExpression(n)){var a=e.getConstantValue(n);return isFinite(a)&&Math.floor(a)===a&&t.removeComments}}function ve(e){b(e.expression),Fn("["),b(e.argumentExpression),Fn("]");}function be(e){b(e.expression),Cn(e,e.typeArguments),Pn(e,e.arguments,1296);}function xe(e){Fn("new "),b(e.expression),Cn(e,e.typeArguments),Pn(e,e.arguments,9488);}function ke(e){b(e.tag),Fn(" "),b(e.template);}function Se(e){Fn("<"),h(e.type),Fn(">"),b(e.expression);}function Te(e){Fn("("),b(e.expression),Fn(")");}function Ce(e){gt(e);}function Ee(e){Tn(e,e.decorators),hn(e,e.modifiers),ht(e,De);}function De(e){En(e,e.typeParameters),Nn(e,e.parameters),vn(": ",e.type),Fn(" =>");}function Ne(e){Fn("delete "),b(e.expression);}function Ae(e){Fn("typeof "),b(e.expression);}function we(e){Fn("void "),b(e.expression);}function Pe(e){Fn("await "),b(e.expression);}function Oe(e){jn(e.operator),Fe(e)&&Fn(" "),b(e.operand);}function Fe(e){var t=e.operand;return 192===t.kind&&(37===e.operator&&(37===t.operator||43===t.operator)||38===e.operator&&(38===t.operator||44===t.operator))}function Ie(e){b(e.operand),jn(e.operator);}function Re(e){var t=26!==e.operatorToken.kind,n=Xn(e,e.left,e.operatorToken),r=Xn(e,e.operatorToken,e.right);b(e.left),Vn(n,t?" ":void 0),jn(e.operatorToken.kind),Vn(r," "),b(e.right),qn(n,r);}function Me(e){var t=Xn(e,e.condition,e.questionToken),n=Xn(e,e.questionToken,e.whenTrue),r=Xn(e,e.whenTrue,e.colonToken),a=Xn(e,e.colonToken,e.whenFalse);b(e.condition),Vn(t," "),Fn("?"),Vn(n," "),b(e.whenTrue),qn(t,n),Vn(r," "),Fn(":"),Vn(a," "),b(e.whenFalse),qn(r,a);}function Le(e){h(e.head),wn(e,e.templateSpans,131072);}function Be(e){Fn(e.asteriskToken?"yield*":"yield"),bn(" ",e.expression);}function Ke(e){Fn("..."),b(e.expression);}function je(e){Ct(e);}function Je(e){b(e.expression),Cn(e,e.typeArguments);}function ze(e){b(e.expression),e.type&&(Fn(" as "),h(e.type));}function Ue(e){b(e.expression),Fn("!");}function Ve(e){Kn(e.keywordToken,e.pos),Fn("."),h(e.name);}function qe(e){b(e.expression),h(e.literal);}function $e(e){Yn(e)?(Kn(17,e.pos,e),Fn(" "),Kn(18,e.statements.end,e)):(Kn(17,e.pos,e),Ge(e),Rn(),Jr(e.statements.end),Mn(),Kn(18,e.statements.end,e));}function Ge(t){1&e.getEmitFlags(t)?wn(t,t.statements,384):wn(t,t.statements,65);}function We(e){hn(e,e.modifiers),h(e.declarationList),Fn(";");}function He(){Fn(";");}function Xe(e){b(e.expression),Fn(";");}function Ye(e){var t=Kn(90,e.pos,e);Fn(" "),Kn(19,t,e),b(e.expression),Kn(20,e.expression.end,e),Sn(e,e.thenStatement),e.elseStatement&&(Jn(e),Kn(82,e.thenStatement.end,e),211===e.elseStatement.kind?(Fn(" "),h(e.elseStatement)):Sn(e,e.elseStatement));}function Qe(t){Fn("do"),Sn(t,t.statement),e.isBlock(t.statement)?Fn(" "):Jn(t),Fn("while ("),b(t.expression),Fn(");");}function Ze(e){Fn("while ("),b(e.expression),Fn(")"),Sn(e,e.statement);}function et(e){var t=Kn(88,e.pos);Fn(" "),Kn(19,t,e),rt(e.initializer),Fn(";"),bn(" ",e.condition),Fn(";"),bn(" ",e.incrementor),Fn(")"),Sn(e,e.statement);}function tt(e){var t=Kn(88,e.pos);Fn(" "),Kn(19,t),rt(e.initializer),Fn(" in "),b(e.expression),Kn(20,e.expression.end),Sn(e,e.statement);}function nt(e){var t=Kn(88,e.pos);Fn(" "),kn(e.awaitModifier," "),Kn(19,t),rt(e.initializer),Fn(" of "),b(e.expression),Kn(20,e.expression.end),Sn(e,e.statement);}function rt(e){void 0!==e&&(227===e.kind?h(e):b(e));}function at(e){Kn(77,e.pos),vn(" ",e.label),Fn(";");}function it(e){Kn(72,e.pos),vn(" ",e.label),Fn(";");}function ot(e){Kn(96,e.pos,e),bn(" ",e.expression),Fn(";");}function st(e){Fn("with ("),b(e.expression),Fn(")"),Sn(e,e.statement);}function ct(e){var t=Kn(98,e.pos);Fn(" "),Kn(19,t),b(e.expression),Kn(20,e.expression.end),Fn(" "),h(e.caseBlock);}function ut(e){h(e.label),Fn(": "),h(e.statement);}function lt(e){Fn("throw"),bn(" ",e.expression),Fn(";");}function _t(e){Fn("try "),h(e.tryBlock),e.catchClause&&(Jn(e),h(e.catchClause)),e.finallyBlock&&(Jn(e),Fn("finally "),h(e.finallyBlock));}function dt(e){Kn(78,e.pos),Fn(";");}function pt(e){h(e.name),vn(": ",e.type),bn(" = ",e.initializer);}function ft(t){Fn(e.isLet(t)?"let ":e.isConst(t)?"const ":"var "),wn(t,t.declarations,272);}function mt(e){gt(e);}function gt(e){Tn(e,e.decorators),hn(e,e.modifiers),Fn(e.asteriskToken?"function* ":"function "),v(e.name),ht(e,vt);}function yt(e,t){xt(t);}function ht(t,n){var r=t.body;if(r)if(e.isBlock(r)){var a=32768&e.getEmitFlags(t);a&&Rn(),262144&e.getEmitFlags(t)?(n(t),wr?wr(3,r,yt):xt(r)):(nr(),n(t),wr?wr(3,r,yt):xt(r),rr()),a&&Mn();}else n(t),Fn(" "),b(r);else n(t),Fn(";");}function vt(e){En(e,e.typeParameters),Dn(e,e.parameters),vn(": ",e.type);}function bt(t){if(1&e.getEmitFlags(t))return!0;if(t.multiLine)return!1;if(!e.nodeIsSynthesized(t)&&!e.rangeIsOnSingleLine(t,hr))return!1;if($n(t,t.statements,2)||Wn(t,t.statements,2))return!1;for(var n,r=0,a=t.statements;r0&&h(e.attributes),Fn("/>");}function Wt(e){Fn("<"),tn(e.tagName),Ln(e.attributes.properties," "),e.attributes.properties&&e.attributes.properties.length>0&&h(e.attributes),Fn(">");}function Ht(e){Tr.writeLiteral(er(e,!0));}function Xt(e){Fn("");}function Yt(e){wn(e,e.properties,131328);}function Qt(e){h(e.name),vn("=",e.initializer);}function Zt(e){Fn("{..."),b(e.expression),Fn("}");}function en(e){e.expression&&(Fn("{"),e.dotDotDotToken&&Fn("..."),b(e.expression),Fn("}"));}function tn(e){71===e.kind?b(e):h(e);}function nn(e){Fn("case "),b(e.expression),Fn(":"),an(e,e.statements);}function rn(e){Fn("default:"),an(e,e.statements);}function an(t,n){1===n.length&&(e.nodeIsSynthesized(t)||e.nodeIsSynthesized(n[0])||e.rangeStartPositionsAreOnSameLine(t,n[0],hr))?(Fn(" "),h(n[0])):wn(t,n,81985);}function on$$1(e){Fn(" "),jn(e.token),Fn(" "),wn(e,e.types,272);}function sn(e){var t=Kn(74,e.pos);Fn(" "),Kn(19,t),h(e.variableDeclaration),Kn(20,e.variableDeclaration?e.variableDeclaration.end:t),Fn(" "),h(e.block);}function cn(t){h(t.name),Fn(": ");var n=t.initializer;if(jr&&0==(512&e.getEmitFlags(n))){var r=e.getCommentRange(n);jr(r.pos);}b(n);}function un(e){h(e.name),e.objectAssignmentInitializer&&(Fn(" = "),b(e.objectAssignmentInitializer));}function ln(e){e.expression&&(Fn("..."),b(e.expression));}function _n(e){h(e.name),bn(" = ",e.initializer);}function dn(t){In();var n=t.statements;!Kr||0!==n.length&&e.isPrologueDirective(n[0])&&!e.nodeIsSynthesized(n[0])?pn(t):Kr(t,n,pn);}function pn(t){var n=t.statements;nr(),w(t);var r=e.findIndex(n,function(t){return!e.isPrologueDirective(t)});wn(t,n,1,-1===r?n.length:r),rr();}function fn(e){b(e.expression);}function mn(t,n,r){for(var a=0;a0)&&In(),h(i),r&&r.set(i.expression.text,i.expression.text));}return t.length}function gn(t){if(e.isSourceFile(t))m(t),mn(t.statements);else for(var n=e.createMap(),r=0,a=t.sourceFiles;r=o.length||0===u;if(!(_&&16384&s)){if(7680&s&&Fn(a(s)),Ir&&Ir(o),_)1&s?In():128&s&&Fn(" ");else{var d=0==(131072&s),p=d;$n(n,o,s)?(In(),p=!1):128&s&&Fn(" "),64&s&&Rn();for(var f=void 0,m=void 0,g=r(s),y=0;y"],e[4096]=["[","]"],e}();e.emitFiles=t,e.createPrinter=n;var c;!function(e){e[e.Auto=0]="Auto",e[e.CountMask=268435455]="CountMask",e[e._i=268435456]="_i";}(c||(c={}));var u;!function(e){e[e.None=0]="None",e[e.SingleLine=0]="SingleLine",e[e.MultiLine=1]="MultiLine",e[e.PreserveLines=2]="PreserveLines",e[e.LinesMask=3]="LinesMask",e[e.NotDelimited=0]="NotDelimited",e[e.BarDelimited=4]="BarDelimited",e[e.AmpersandDelimited=8]="AmpersandDelimited",e[e.CommaDelimited=16]="CommaDelimited",e[e.DelimitersMask=28]="DelimitersMask",e[e.AllowTrailingComma=32]="AllowTrailingComma",e[e.Indented=64]="Indented",e[e.SpaceBetweenBraces=128]="SpaceBetweenBraces",e[e.SpaceBetweenSiblings=256]="SpaceBetweenSiblings",e[e.Braces=512]="Braces",e[e.Parenthesis=1024]="Parenthesis",e[e.AngleBrackets=2048]="AngleBrackets",e[e.SquareBrackets=4096]="SquareBrackets",e[e.BracketsMask=7680]="BracketsMask",e[e.OptionalIfUndefined=8192]="OptionalIfUndefined",e[e.OptionalIfEmpty=16384]="OptionalIfEmpty",e[e.Optional=24576]="Optional",e[e.PreferNewLine=32768]="PreferNewLine",e[e.NoTrailingNewLine=65536]="NoTrailingNewLine",e[e.NoInterveningComments=131072]="NoInterveningComments",e[e.Modifiers=256]="Modifiers",e[e.HeritageClauses=256]="HeritageClauses",e[e.TypeLiteralMembers=65]="TypeLiteralMembers",e[e.TupleTypeElements=336]="TupleTypeElements",e[e.UnionTypeConstituents=260]="UnionTypeConstituents",e[e.IntersectionTypeConstituents=264]="IntersectionTypeConstituents",e[e.ObjectBindingPatternElements=432]="ObjectBindingPatternElements",e[e.ArrayBindingPatternElements=304]="ArrayBindingPatternElements",e[e.ObjectLiteralExpressionProperties=978]="ObjectLiteralExpressionProperties",e[e.ArrayLiteralExpressionElements=4466]="ArrayLiteralExpressionElements",e[e.CallExpressionArguments=1296]="CallExpressionArguments",e[e.NewExpressionArguments=9488]="NewExpressionArguments",e[e.TemplateExpressionSpans=131072]="TemplateExpressionSpans",e[e.SingleLineBlockStatements=384]="SingleLineBlockStatements",e[e.MultiLineBlockStatements=65]="MultiLineBlockStatements",e[e.VariableDeclarationList=272]="VariableDeclarationList",e[e.SingleLineFunctionBodyStatements=384]="SingleLineFunctionBodyStatements",e[e.MultiLineFunctionBodyStatements=1]="MultiLineFunctionBodyStatements",e[e.ClassHeritageClauses=256]="ClassHeritageClauses",e[e.ClassMembers=65]="ClassMembers",e[e.InterfaceMembers=65]="InterfaceMembers",e[e.EnumMembers=81]="EnumMembers",e[e.CaseBlockClauses=65]="CaseBlockClauses",e[e.NamedImportsOrExportsElements=432]="NamedImportsOrExportsElements",e[e.JsxElementChildren=131072]="JsxElementChildren",e[e.JsxElementAttributes=131328]="JsxElementAttributes",e[e.CaseOrDefaultClauseStatements=81985]="CaseOrDefaultClauseStatements",e[e.HeritageClauseTypes=272]="HeritageClauseTypes",e[e.SourceFileStatements=65537]="SourceFileStatements",e[e.Decorators=24577]="Decorators",e[e.TypeArguments=26960]="TypeArguments",e[e.TypeParameters=26960]="TypeParameters",e[e.Parameters=1360]="Parameters",e[e.IndexSignatureParameters=4432]="IndexSignatureParameters";}(u||(u={}));}(r||(r={}));!function(e){function t(t,n,r){for(void 0===r&&(r="tsconfig.json");;){var a=e.combinePaths(t,r);if(n(a))return a;var i=e.getDirectoryPath(t);if(i===t)break;t=i;}}function n(t,n){var r=e.getDirectoryPath(n),a=e.isRootedDiskPath(t)?t:e.combinePaths(r,t);return e.normalizePath(a)}function r(t,n,r){var a;return e.forEach(t,function(t){var i=e.getNormalizedPathComponents(t,n);if(i.pop(),a){for(var o=Math.min(a.length,i.length),s=0;se.getRootLength(t)&&!i(t)&&(o(e.getDirectoryPath(t)),e.sys.createDirectory(t));}function s(t,n,r){l||(l=e.createMap());var a=e.sys.createHash(n),i=e.sys.getModifiedTime(t);if(i){var o=l.get(t);if(o&&o.byteOrderMark===r&&o.hash===a&&o.mtime.getTime()===i.getTime())return}e.sys.writeFile(t,n,r);var s=e.sys.getModifiedTime(t);l.set(t,{hash:a,byteOrderMark:r,mtime:s});}function c(n,r,a,i){try{e.performance.mark("beforeIOWrite"),o(e.getDirectoryPath(e.normalizePath(n))),e.isWatchSet(t)&&e.sys.createHash&&e.sys.getModifiedTime?s(n,r,a):e.sys.writeFile(n,r,a),e.performance.mark("afterIOWrite"),e.performance.measure("I/O Write","beforeIOWrite","afterIOWrite");}catch(e){i&&i(e.message);}}function u(){return e.getDirectoryPath(e.normalizePath(e.sys.getExecutingFilePath()))}var l,_=e.createMap(),d=e.getNewLineCharacter(t),p=e.sys.realpath&&function(t){return e.sys.realpath(t)};return{getSourceFile:a,getDefaultLibLocation:u,getDefaultLibFileName:function(t){return e.combinePaths(u(),e.getDefaultLibFileName(t))},writeFile:c,getCurrentDirectory:e.memoize(function(){return e.sys.getCurrentDirectory()}),useCaseSensitiveFileNames:function(){return e.sys.useCaseSensitiveFileNames},getCanonicalFileName:r,getNewLine:function(){return d},fileExists:function(t){return e.sys.fileExists(t)},readFile:function(t){return e.sys.readFile(t)},trace:function(t){return e.sys.write(t+d)},directoryExists:function(t){return e.sys.directoryExists(t)},getEnvironmentVariable:function(t){return e.sys.getEnvironmentVariable?e.sys.getEnvironmentVariable(t):""},getDirectories:function(t){return e.sys.getDirectories(t)},realpath:p}}function i(t,n,r){var a=t.getOptionsDiagnostics(r).concat(t.getSyntacticDiagnostics(n,r),t.getGlobalDiagnostics(r),t.getSemanticDiagnostics(n,r));return t.getCompilerOptions().declaration&&(a=a.concat(t.getDeclarationDiagnostics(n,r))),e.sortAndDeduplicateDiagnostics(a)}function o(t,n){for(var r="",a=0,i=t;a0||c.length>0)return{diagnostics:e.concatenate(u,c),sourceMaps:void 0,emittedFiles:void 0,emitSkipped:!0}}var l=y().getEmitResolver(i.outFile||i.out?void 0:n);e.performance.mark("beforeEmit");var _=o?[]:e.getTransformers(i,s),d=e.emitFiles(l,m(r),n,o,_);return e.performance.mark("afterEmit"),e.performance.measure("Emit","beforeEmit","afterEmit"),d}function S(t){return T(e.toPath(t,ke,Z))}function T(e){return Ne.get(e)}function C(t,n,r){if(t)return n(t,r);var a=[];return e.forEach(ae.getSourceFiles(),function(t){r&&r.throwIfCancellationRequested(),e.addRange(a,n(t,r));}),e.sortAndDeduplicateDiagnostics(a)}function E(e,t){return C(e,A,t)}function D(e,t){return C(e,P,t)}function N(e,t){var n=ae.getCompilerOptions();return!e||n.out||n.outFile?R(e,t):C(e,B,t)}function A(t){return e.isSourceFileJavaScript(t)?(t.additionalSyntacticDiagnostics||(t.additionalSyntacticDiagnostics=I(t)),e.concatenate(t.additionalSyntacticDiagnostics,t.parseDiagnostics)):t.parseDiagnostics}function w(t){try{return t()}catch(t){throw t instanceof e.OperationCanceledException&&(se=void 0,oe=void 0),t}}function P(e,t){return L(e,t,le,O)}function O(t,n){return w(function(){if(i.skipLibCheck&&t.isDeclarationFile||i.skipDefaultLibCheck&&t.hasNoDefaultLib)return _;var r=y();e.Debug.assert(!!t.bindDiagnostics);var a=t.bindDiagnostics,o=!e.isSourceFileJavaScript(t)||e.isCheckJsEnabledForFile(t,i)?r.getDiagnostics(t,n):[],s=pe.getDiagnostics(t.fileName),c=xe.getDiagnostics(t.fileName),u=a.concat(o,s,c);return e.isSourceFileJavaScript(t)?e.filter(u,F):u})}function F(t){var n=t.file,r=t.start;if(n)for(var a=e.getLineStarts(n),i=e.computeLineAndCharacterOfPosition(a,r).line;i>0;){var o=n.text.slice(a[i-1],a[i]),s=d.exec(o);if(!s)return!0;if(s[3])return!1;i--;}return!0}function I(t){return w(function(){function n(t){switch(u.kind){case 146:case 149:if(u.questionToken===t)return void c.push(s(t,e.Diagnostics._0_can_only_be_used_in_a_ts_file,"?"));case 151:case 150:case 152:case 153:case 154:case 186:case 228:case 187:case 228:case 226:if(u.type===t)return void c.push(s(t,e.Diagnostics.types_can_only_be_used_in_a_ts_file))}switch(t.kind){case 237:return void c.push(s(t,e.Diagnostics.import_can_only_be_used_in_a_ts_file));case 243:if(t.isExportEquals)return void c.push(s(t,e.Diagnostics.export_can_only_be_used_in_a_ts_file));break;case 259:if(108===t.token)return void c.push(s(t,e.Diagnostics.implements_clauses_can_only_be_used_in_a_ts_file));break;case 230:return void c.push(s(t,e.Diagnostics.interface_declarations_can_only_be_used_in_a_ts_file));case 233:return void c.push(s(t,e.Diagnostics.module_declarations_can_only_be_used_in_a_ts_file));case 231:return void c.push(s(t,e.Diagnostics.type_aliases_can_only_be_used_in_a_ts_file));case 232:return void c.push(s(t,e.Diagnostics.enum_declarations_can_only_be_used_in_a_ts_file));case 184:var a=t;return void c.push(s(a.type,e.Diagnostics.type_assertion_expressions_can_only_be_used_in_a_ts_file))}var i=u;u=t,e.forEachChild(t,n,r),u=i;}function r(t){switch(u.decorators!==t||i.experimentalDecorators||c.push(s(u,e.Diagnostics.Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_the_experimentalDecorators_option_to_remove_this_warning)),u.kind){case 229:case 151:case 150:case 152:case 153:case 154:case 186:case 228:case 187:case 228:if(t===u.typeParameters)return void c.push(o(t,e.Diagnostics.type_parameter_declarations_can_only_be_used_in_a_ts_file));case 208:if(t===u.modifiers)return a(t,208===u.kind);break;case 149:if(t===u.modifiers){for(var r=0,l=t;r0),l.path=n,o.useCaseSensitiveFileNames()){var _=Ae.get(n);_?G(t,_.fileName,a,s,c):Ae.set(n,l);}be=be||l.hasNoDefaultLib,i.noResolve||(H(l,r),X(l)),ee(l),r?ue.unshift(l):ue.push(l);}return l}function H(t,r){e.forEach(t.referencedFiles,function(e){$(n(e.fileName,t.fileName),r,t,e.pos,e.end);});}function X(t){for(var n=e.map(t.typeReferenceDirectives,function(e){return e.fileName.toLocaleLowerCase()}),r=Ee(n,t.fileName),a=0;afe,p=_&&!l(i,s)&&!i.noResolve&&o1})&&xe.add(e.createCompilerDiagnostic(e.Diagnostics.Cannot_find_the_common_subdirectory_path_for_the_input_files));}if(!i.noEmit&&i.allowJs&&i.declaration&&xe.add(e.createCompilerDiagnostic(e.Diagnostics.Option_0_cannot_be_specified_with_option_1,"allowJs","declaration")),i.checkJs&&!i.allowJs&&xe.add(e.createCompilerDiagnostic(e.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1,"checkJs","allowJs")),i.emitDecoratorMetadata&&!i.experimentalDecorators&&xe.add(e.createCompilerDiagnostic(e.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1,"emitDecoratorMetadata","experimentalDecorators")),i.jsxFactory?(i.reactNamespace&&xe.add(e.createCompilerDiagnostic(e.Diagnostics.Option_0_cannot_be_specified_with_option_1,"reactNamespace","jsxFactory")),e.parseIsolatedEntityName(i.jsxFactory,l)||xe.add(e.createCompilerDiagnostic(e.Diagnostics.Invalid_value_for_jsxFactory_0_is_not_a_valid_identifier_or_qualified_name,i.jsxFactory))):i.reactNamespace&&!e.isIdentifierText(i.reactNamespace,l)&&xe.add(e.createCompilerDiagnostic(e.Diagnostics.Invalid_value_for_reactNamespace_0_is_not_a_valid_identifier,i.reactNamespace)),!i.noEmit&&!i.suppressOutputPathCheck){var v=m(),b=e.createFileMap(o.useCaseSensitiveFileNames()?void 0:function(e){return e.toLocaleLowerCase()});e.forEachEmittedFile(v,function(e){t(e.jsFilePath,b),t(e.declarationFilePath,b);});}}(),e.performance.mark("afterProgram"),e.performance.measure("Program","beforeProgram","afterProgram"),ae}function l(t,n){function r(){return t.jsx?void 0:e.Diagnostics.Module_0_was_resolved_to_1_but_jsx_is_not_set}function a(){return t.allowJs?void 0:e.Diagnostics.Module_0_was_resolved_to_1_but_allowJs_is_not_set}switch(n.extension){case e.Extension.Ts:case e.Extension.Dts:return;case e.Extension.Tsx:return r();case e.Extension.Jsx:return r()||a();case e.Extension.Js:return a()}}var _=[],d=/(^\s*$)|(^\s*\/\/\/?\s*(@ts-ignore)?)/;e.findConfigFile=t,e.resolveTripleslashReference=n,e.computeCommonSourceDirectoryOfFilenames=r,e.createCompilerHost=a,e.getPreEmitDiagnostics=i,e.formatDiagnostics=o,e.flattenDiagnosticMessageText=s,e.createProgram=u,e.getResolutionDiagnostic=l;}(r||(r={}));!function(e){function t(e){return e&&void 0!==e.enableAutoDiscovery&&void 0===e.enable?{enable:e.enableAutoDiscovery,include:e.include||[],exclude:e.exclude||[]}:e}function n(){if(w)return w;var t=e.createMap(),n=e.createMap();return e.forEach(e.optionDeclarations,function(e){t.set(e.name.toLowerCase(),e),e.shortName&&n.set(e.shortName,e.name);}),w={optionNameMap:t,shortOptionNames:n}}function r(t){var n=e.arrayFrom(t.type.keys()).map(function(e){return"'"+e+"'"}).join(", ");return e.createCompilerDiagnostic(e.Diagnostics.Argument_for_0_option_must_be_Colon_1,"--"+t.name,n)}function a(e,t,n){return v(e,x(t||""),n)}function i(t,n,r){if(void 0===n&&(n=""),n=x(n),!e.startsWith(n,"-")){if(""===n)return[];var i=n.split(",");switch(t.element.type){case"number":return e.map(i,parseInt);case"string":return e.map(i,function(e){return e||""});default:return e.filter(e.map(i,function(e){return a(t.element,e,r)}),function(e){return!!e})}}}function o(t,r){function o(t){for(var n=0;n=n.length)break;var s=i;if(34===n.charCodeAt(s)){for(i++;i32;)i++;a.push(n.substring(s,i));}}o(a);}else l.push(e.createCompilerDiagnostic(e.Diagnostics.File_0_not_found,t));}var c={},u=[],l=[],_=n(),d=_.optionNameMap,p=_.shortOptionNames;return o(t),{options:c,fileNames:u,errors:l}}function s(t,n){var r="";try{r=n(t);}catch(n){return{error:e.createCompilerDiagnostic(e.Diagnostics.Cannot_read_file_0_Colon_1,t,n.message)}}return c(t,r)}function c(t,n,r){void 0===r&&(r=!0);try{var a=r?l(n):n;return{config:/\S/.test(a)?JSON.parse(a):{}}}catch(n){return{error:e.createCompilerDiagnostic(e.Diagnostics.Failed_to_parse_file_0_Colon_1,t,n.message)}}}function u(t,r,a){function i(e){return"string"===e.type||"number"===e.type||"boolean"===e.type?void 0:"list"===e.type?i(e.element):e.type}function o(t,n){return e.forEachEntry(n,function(e,n){if(e===t)return n})}function s(t){switch(t.type){case"number":return 1;case"boolean":return!0;case"string":return t.isFilePath?"./":"";case"list":return[];case"object":return{};default:return e.arrayFrom(t.type.keys())[0]}}function c(e){return Array(e+1).join(" ")}var u={compilerOptions:function(t){var r={},a=n().optionNameMap;for(var s in t)if(e.hasProperty(t,s)){if(a.has(s)&&a.get(s).category===e.Diagnostics.Command_line_Options)continue;var c=t[s],u=a.get(s.toLowerCase());if(u){var l=i(u);if(l)if("list"===u.type){for(var _=[],d=0,p=c;d=0)return{options:{},fileNames:[],typeAcquisition:{},raw:t,errors:[e.createCompilerDiagnostic(e.Diagnostics.Circularity_detected_while_resolving_configuration_Colon_0,o.concat([p]).join(" -> "))],wildcardDirectories:{}};var f,y=m(t.compilerOptions,r,u,i),h=g(t.typeAcquisition||t.typingOptions,r,u,i);if(t.extends){var v=[void 0,void 0,void 0,{}],b=v[0],x=v[1],S=v[2],T=v[3];"string"==typeof t.extends?(b=(A=function(a){if(e.isRootedDiskPath(a)||e.startsWith(e.normalizeSlashes(a),"./")||e.startsWith(e.normalizeSlashes(a),"../")){var i=e.toPath(a,r,l);if(n.fileExists(i)||e.endsWith(i,".json")||(i+=".json",n.fileExists(i))){var c=s(i,function(e){return n.readFile(e)});if(!c.error){var d=e.getDirectoryPath(i),f=e.convertToRelativePath(d,r,l),m=function(t){return e.isRootedDiskPath(t)?t:e.combinePaths(f,t)},g=_(c.config,n,d,void 0,e.getBaseFileName(i),o.concat([p]));u.push.apply(u,g.errors);var y=e.map(["include","exclude","files"],function(n){if(!t[n]&&c.config[n])return e.map(c.config[n],m)});return[y[0],y[1],y[2],g.compileOnSave,g.options]}u.push(c.error);}else u.push(e.createCompilerDiagnostic(e.Diagnostics.File_0_does_not_exist,a));}else u.push(e.createCompilerDiagnostic(e.Diagnostics.A_path_in_an_extends_option_must_be_relative_or_rooted_but_0_is_not,a));}(t.extends)||[b,x,S,f,T])[0],x=A[1],S=A[2],f=A[3],T=A[4]):u.push(e.createCompilerDiagnostic(e.Diagnostics.Compiler_option_0_requires_a_value_of_type_1,"extends","string")),b&&!t.include&&(t.include=b),x&&!t.exclude&&(t.exclude=x),S&&!t.files&&(t.files=S),y=e.assign({},T,y);}(y=e.extend(a,y)).configFilePath=i;var C=function(a){var s;e.hasProperty(t,"files")&&(e.isArray(t.files)?0===(s=t.files).length&&a.push(e.createCompilerDiagnostic(e.Diagnostics.The_files_list_in_config_file_0_is_empty,i||"tsconfig.json")):a.push(e.createCompilerDiagnostic(e.Diagnostics.Compiler_option_0_requires_a_value_of_type_1,"files","Array")));var u;e.hasProperty(t,"include")&&(e.isArray(t.include)?u=t.include:a.push(e.createCompilerDiagnostic(e.Diagnostics.Compiler_option_0_requires_a_value_of_type_1,"include","Array")));var l;if(e.hasProperty(t,"exclude"))e.isArray(t.exclude)?l=t.exclude:a.push(e.createCompilerDiagnostic(e.Diagnostics.Compiler_option_0_requires_a_value_of_type_1,"exclude","Array"));else if(e.hasProperty(t,"excludes"))a.push(e.createCompilerDiagnostic(e.Diagnostics.Unknown_option_excludes_Did_you_mean_exclude));else{l=u?[]:["node_modules","bower_components","jspm_packages"];var _=t.compilerOptions&&t.compilerOptions.outDir;_&&l.push(_);}void 0===s&&void 0===u&&(u=["**/*"]);var d=k(s,u,l,r,y,n,a,c);return 0!==d.fileNames.length||e.hasProperty(t,"files")||0!==o.length||a.push(e.createCompilerDiagnostic(e.Diagnostics.No_inputs_were_found_in_config_file_0_Specified_include_paths_were_1_and_exclude_paths_were_2,i||"tsconfig.json",JSON.stringify(u||[]),JSON.stringify(l||[]))),d}(u),E=C.fileNames,D=C.wildcardDirectories,N=d(t,r,u);return f&&void 0===t[e.compileOnSaveCommandLineOption.name]&&(N=f),{options:y,fileNames:E,typeAcquisition:h,raw:t,errors:u,wildcardDirectories:D,compileOnSave:N};var A;}function d(t,n,r){if(!e.hasProperty(t,e.compileOnSaveCommandLineOption.name))return!1;var a=h(e.compileOnSaveCommandLineOption,t.compileOnSave,n,r);return!("boolean"!=typeof a||!a)&&a}function p(e,t,n){var r=[];return{options:m(e,t,r,n),errors:r}}function f(e,t,n){var r=[];return{options:g(e,t,r,n),errors:r}}function m(t,n,r,a){var i="jsconfig.json"===e.getBaseFileName(a)?{allowJs:!0,maxNodeModuleJsDepth:2,allowSyntheticDefaultImports:!0,skipLibCheck:!0}:{};return y(e.optionDeclarations,t,n,i,e.Diagnostics.Unknown_compiler_option_0,r),i}function g(n,r,a,i){var o={enable:"jsconfig.json"===e.getBaseFileName(i),include:[],exclude:[]},s=t(n);return y(e.typeAcquisitionDeclarations,s,r,o,e.Diagnostics.Unknown_type_acquisition_option_0,a),o}function y(t,n,r,a,i,o){if(n){var s=e.arrayToMap(t,function(e){return e.name});for(var c in n){var u=s.get(c);u?a[u.name]=h(u,n[c],r,o):o.push(e.createCompilerDiagnostic(i,c));}}}function h(t,n,r,a){var i=t.type,o="string"==typeof i?i:"string";return"list"===i&&e.isArray(n)?b(t,n,r,a):typeof n===o?"string"!=typeof i?v(t,n,a):(t.isFilePath&&""===(n=e.normalizePath(e.combinePaths(r,n)))&&(n="."),n):void a.push(e.createCompilerDiagnostic(e.Diagnostics.Compiler_option_0_requires_a_value_of_type_1,t.name,o))}function v(e,t,n){var a=t.toLowerCase(),i=e.type.get(a);if(void 0!==i)return i;n.push(r(e));}function b(t,n,r,a){return e.filter(e.map(n,function(e){return h(t.element,e,r,a)}),function(e){return!!e})}function x(e){return"function"==typeof e.trim?e.trim():e.replace(/^[\s]+|[\s]+$/g,"")}function k(t,n,r,a,i,o,s,c){a=e.normalizePath(a);var u=o.useCaseSensitiveFileNames?N:A,l=e.createMap(),_=e.createMap();n&&(n=S(n,s,!1)),r&&(r=S(r,s,!0));var d=T(n,r,a,o.useCaseSensitiveFileNames),p=e.getSupportedExtensions(i,c);if(t)for(var f=0,m=t;f0)for(var h=0,v=o.readDirectory(a,p,r,n);h=n.end}function w(e,t,n){return e.pos<=t&&e.end>=n}function P(e,t,n){return O(e.pos,e.end,t,n)}function O(e,t,n,r){return Math.max(e,n)t||!I(e,n)}function I(t,n){if(e.nodeIsMissing(t))return!1;switch(t.kind){case 229:case 230:case 232:case 178:case 174:case 163:case 207:case 234:case 235:case 241:case 245:return R(t,18,n);case 260:return I(t.block,n);case 182:if(!t.arguments)return!0;case 181:case 185:case 168:return R(t,20,n);case 160:case 161:return I(t.type,n);case 152:case 153:case 154:case 228:case 186:case 151:case 150:case 156:case 155:case 187:return t.body?I(t.body,n):t.type?I(t.type,n):L(t,20,n);case 233:return t.body&&I(t.body,n);case 211:return t.elseStatement?I(t.elseStatement,n):I(t.thenStatement,n);case 210:return I(t.expression,n)||L(t,25);case 177:case 175:case 180:case 144:case 165:return R(t,22,n);case 157:return t.type?I(t.type,n):L(t,22,n);case 257:case 258:return!1;case 214:case 215:case 216:case 213:return I(t.statement,n);case 212:return B(t,106,n)?R(t,20,n):I(t.statement,n);case 162:return I(t.exprName,n);case 189:case 188:case 190:case 197:case 198:return I(t.expression,n);case 183:return I(t.template,n);case 196:return I(e.lastOrUndefined(t.templateSpans),n);case 205:return e.nodeIsPresent(t.literal);case 244:case 238:return e.nodeIsPresent(t.moduleSpecifier);case 192:return I(t.operand,n);case 194:return I(t.right,n);case 195:return I(t.whenFalse,n);default:return!0}}function R(t,n,r){var a=t.getChildren(r);if(a.length){var i=e.lastOrUndefined(a);if(i.kind===n)return!0;if(25===i.kind&&1!==a.length)return a[a.length-2].kind===n}return!1}function M(t){var n=K(t);if(n){var r=n.getChildren();return{listItemIndex:e.indexOf(r,t),list:n}}}function L(e,t,n){return!!B(e,t,n)}function B(t,n,r){return e.forEach(t.getChildren(r),function(e){return e.kind===n&&e})}function K(t){var n=e.forEach(t.parent.getChildren(),function(e){if(294===e.kind&&e.pos<=t.pos&&e.end>=t.end)return e});return e.Debug.assert(!n||e.contains(n.getChildren(),t)),n}function j(e,t,n){return void 0===n&&(n=!1),z(e,t,function(e){return ae(e.kind)},n)}function J(e,t,n){return void 0===n&&(n=!1),z(e,t,function(e){return ie(e.kind)},n)}function z(e,t,n,r){return void 0===r&&(r=!1),V(e,t,!1,n,r)}function U(e,t,n){return void 0===n&&(n=!1),V(e,t,!0,void 0,n)}function V(t,n,r,a,i){void 0===i&&(i=!1);var o=t;e:for(;;){if(e.isToken(o))return o;if(i)for(var s=0,c=e.filter(o.getChildren(),e.isJSDocNode);sr.getStart(t)&&nt.end||o.pos===t.end)&&te(o))return r(o)}}return r(n)}function G(t,n,r){function a(t){if(e.isToken(t))return t;var n=t.getChildren(),r=o(n,n.length);return r&&a(r)}function i(s){if(e.isToken(s))return s;for(var c=s.getChildren(),u=0;u=t||10===l.kind&&_===l.end?(d=o(c,u))&&a(d):i(l)}}if(e.Debug.assert(void 0!==r||265===s.kind),c.length){var d=o(c,c.length);return d&&a(d)}}function o(e,t){for(var n=t-1;n>=0;n--)if(te(e[n]))return e[n]}return i(r||n)}function W(e,t){var n=G(t,e);if(n&&9===n.kind){var r=n.getStart(),a=n.getEnd();if(rr.getStart(t)}function Q(t,n,r){var a=U(t,n);if(a&&n<=a.getStart(t)){var i=e.getLeadingCommentRanges(t.text,a.pos);return r?e.forEach(i,function(e){return e.pos=e.pos+3&&"/"===n[e.pos]&&"*"===n[e.pos+1]&&"*"===n[e.pos+2]}var a=U(t,n),i=e.getLeadingCommentRanges(t.text,a.pos);return e.forEach(i,r)}function ee(t,n){var r=e.getTokenAtPosition(t,n);if(e.isToken(r))switch(r.kind){case 104:case 110:case 76:r=void 0===r.parent?void 0:r.parent.parent;break;default:r=r.parent;}if(r&&r.jsDoc)for(var a=0,i=r.jsDoc;a0?r.join(","):e.ScriptElementKindModifier.none}function re(t){return 159===t.kind||181===t.kind?t.typeArguments:e.isFunctionLike(t)||229===t.kind||230===t.kind?t.typeParameters:void 0}function ae(t){return 71===t||e.isKeyword(t)}function ie(e){return 9===e||8===e||ae(e)}function oe(e){return 2===e||3===e}function se(t){return!(9!==t&&12!==t&&!e.isTemplateLiteralKind(t))}function ce(e){return 17<=e&&e<=70}function ue(t,n){return e.isTemplateLiteralKind(t.kind)&&t.getStart()0&&146===e.declarations[0].kind}function n(n,a){return r(n,function(n){var r=n.flags;return 3&r?t(n)?e.SymbolDisplayPartKind.parameterName:e.SymbolDisplayPartKind.localName:4&r?e.SymbolDisplayPartKind.propertyName:32768&r?e.SymbolDisplayPartKind.propertyName:65536&r?e.SymbolDisplayPartKind.propertyName:8&r?e.SymbolDisplayPartKind.enumMemberName:16&r?e.SymbolDisplayPartKind.functionName:32&r?e.SymbolDisplayPartKind.className:64&r?e.SymbolDisplayPartKind.interfaceName:384&r?e.SymbolDisplayPartKind.enumName:1536&r?e.SymbolDisplayPartKind.moduleName:8192&r?e.SymbolDisplayPartKind.methodName:262144&r?e.SymbolDisplayPartKind.typeParameterName:524288&r?e.SymbolDisplayPartKind.aliasName:8388608&r?e.SymbolDisplayPartKind.aliasName:e.SymbolDisplayPartKind.text}(a))}function r(t,n){return{text:t,kind:e.SymbolDisplayPartKind[n]}}function a(){return r(" ",e.SymbolDisplayPartKind.space)}function i(t){return r(e.tokenToString(t),e.SymbolDisplayPartKind.keyword)}function o(t){return r(e.tokenToString(t),e.SymbolDisplayPartKind.punctuation)}function s(t){return r(e.tokenToString(t),e.SymbolDisplayPartKind.operator)}function c(t){var n=e.stringToToken(t);return void 0===n?u(t):i(n)}function u(t){return r(t,e.SymbolDisplayPartKind.text)}function l(e){return e.getNewLine?e.getNewLine():E}function _(){return r("\n",e.SymbolDisplayPartKind.lineBreak)}function d(e){e(C);var t=C.displayParts();return C.clear(),t}function p(e,t,n,r){return d(function(a){e.getSymbolDisplayBuilder().buildTypeDisplay(t,a,n,r);})}function f(e,t,n,r,a){return d(function(i){e.getSymbolDisplayBuilder().buildSymbolDisplay(t,i,n,r,a);})}function m(e,t,n,r){return d(function(a){e.getSymbolDisplayBuilder().buildSignatureDisplay(t,a,n,r);})}function g(t,n,r){if(y(r)||e.isStringOrNumericLiteral(r)&&144===r.parent.kind)return r.text;var a=e.getLocalSymbolForExportDefault(n);return t.symbolToString(a||n)}function y(e){return e.parent&&(242===e.parent.kind||246===e.parent.kind)&&e.parent.propertyName===e}function h(e){var t=e.length;return t>=2&&e.charCodeAt(0)===e.charCodeAt(t-1)&&(34===e.charCodeAt(0)||39===e.charCodeAt(0))?e.substring(1,t-1):e}function v(t,n){for(var r=[],a=2;a=0){var _=c-o;_>0&&a.push({length:_,classification:e.TokenClass.Whitespace});}a.push({length:u,classification:r(l)}),o=c+u;}var d=n.length-o;return d>0&&a.push({length:d,classification:e.TokenClass.Whitespace}),{entries:a,finalLexState:t.endOfLineState}}function r(t){switch(t){case 1:return e.TokenClass.Comment;case 3:return e.TokenClass.Keyword;case 4:return e.TokenClass.NumberLiteral;case 5:return e.TokenClass.Operator;case 6:return e.TokenClass.StringLiteral;case 8:return e.TokenClass.Whitespace;case 10:return e.TokenClass.Punctuation;case 2:case 11:case 12:case 13:case 14:case 15:case 16:case 9:case 17:default:return e.TokenClass.Identifier}}function a(e,t,r){return n(i(e,t,r),e)}function i(n,r,a){function i(e,t,n){if(8!==n){0===e&&o>0&&(e+=o);var r=(t-=o)-(e-=o);r>0&&(f.spans.push(e),f.spans.push(r),f.spans.push(n));}}for(var o=0,s=0,p=0;d.length>0;)d.pop();switch(r){case 3:n='"\\\n'+n,o=3;break;case 2:n="'\\\n"+n,o=3;break;case 1:n="/*\n"+n,o=3;break;case 4:n="`\n"+n,o=2;break;case 5:n="}\n"+n,o=2;case 6:d.push(14);}l.setText(n);var f={endOfLineState:0,spans:[]},m=0;do{if(s=l.scan(),!e.isTrivia(s)){if(41!==s&&63!==s||_[p]){if(23===p&&c(s))s=71;else if(c(p)&&c(s)&&!t(p,s))s=71;else if(71===p&&27===s)m++;else if(29===s&&m>0)m--;else if(119===s||136===s||133===s||122===s||137===s)m>0&&!a&&(s=71);else if(14===s)d.push(s);else if(17===s)d.length>0&&d.push(s);else if(18===s&&d.length>0){var g=e.lastOrUndefined(d);14===g?16===(s=l.reScanTemplateToken())?d.pop():e.Debug.assert(15===s,"Should have been a template middle. Was "+s):(e.Debug.assert(17===g,"Should have been an open brace. Was: "+s),d.pop());}}else 12===l.reScanSlashToken()&&(s=12);p=s;}!function(){var t=l.getTokenPos(),r=l.getTextPos();if(i(t,r,u(s)),r>=n.length)if(9===s){var a=l.getTokenText();if(l.isUnterminated()){for(var o=a.length-1,c=0;92===a.charCodeAt(o-c);)c++;if(1&c){var _=a.charCodeAt(0);f.endOfLineState=34===_?3:2;}}}else 3===s?l.isUnterminated()&&(f.endOfLineState=1):e.isTemplateLiteralKind(s)?l.isUnterminated()&&(16===s?f.endOfLineState=5:13===s?f.endOfLineState=4:e.Debug.fail("Only 'NoSubstitutionTemplateLiteral's and 'TemplateTail's can be unterminated; got SyntaxKind #"+s)):d.length>0&&14===e.lastOrUndefined(d)&&(f.endOfLineState=6);}();}while(1!==s);return f}function o(e){switch(e){case 39:case 41:case 42:case 37:case 38:case 45:case 46:case 47:case 27:case 29:case 30:case 31:case 93:case 92:case 118:case 32:case 33:case 34:case 35:case 48:case 50:case 49:case 53:case 54:case 69:case 68:case 70:case 65:case 66:case 67:case 59:case 60:case 61:case 63:case 64:case 58:case 26:return!0;default:return!1}}function s(e){switch(e){case 37:case 38:case 52:case 51:case 43:case 44:return!0;default:return!1}}function c(e){return e>=72&&e<=142}function u(t){if(c(t))return 3;if(o(t)||s(t))return 5;if(t>=17&&t<=70)return 10;switch(t){case 8:return 4;case 9:return 6;case 12:return 7;case 7:case 3:case 2:return 1;case 5:case 4:return 8;case 71:default:return e.isTemplateLiteralKind(t)?6:2}}var l=e.createScanner(5,!1),_=[];_[71]=!0,_[9]=!0,_[8]=!0,_[12]=!0,_[99]=!0,_[43]=!0,_[44]=!0,_[20]=!0,_[22]=!0,_[18]=!0,_[101]=!0,_[86]=!0;var d=[];return{getClassificationsForLine:a,getEncodedLexicalClassifications:i}}function n(e,t,n,r,i){return o(a(e,t,n,r,i))}function r(e,t){switch(t){case 233:case 229:case 230:case 228:e.throwIfCancellationRequested();}}function a(t,n,a,i,o){function s(e,t,n){l.push(e),l.push(t),l.push(n);}function c(t,n){var r=t.getFlags();if(0!=(788448&r)){if(32&r)return 11;if(384&r)return 12;if(524288&r)return 16;if(2&n){if(64&r)return 13;if(262144&r)return 15}else if(1536&r&&(4&n||1&n&&function(t){return e.forEach(t.declarations,function(t){return 233===t.kind&&1===e.getModuleInstanceState(t)})}(t)))return 14}}function u(a){if(a&&e.textSpanIntersectsWith(o,a.getFullStart(),a.getFullWidth())){var l=a.kind;if(r(n,l),71===l&&!e.nodeIsMissing(a)){var _=a;if(i.get(_.text)){var d=t.getSymbolAtLocation(a);if(d){var p=c(d,e.getMeaningFromLocation(a));p&&s(a.getStart(),a.getWidth(),p);}}}e.forEachChild(a,u);}}var l=[];return u(a),{spans:l,endOfLineState:0}}function i(t){switch(t){case 1:return e.ClassificationTypeNames.comment;case 2:return e.ClassificationTypeNames.identifier;case 3:return e.ClassificationTypeNames.keyword;case 4:return e.ClassificationTypeNames.numericLiteral;case 5:return e.ClassificationTypeNames.operator;case 6:return e.ClassificationTypeNames.stringLiteral;case 8:return e.ClassificationTypeNames.whiteSpace;case 9:return e.ClassificationTypeNames.text;case 10:return e.ClassificationTypeNames.punctuation;case 11:return e.ClassificationTypeNames.className;case 12:return e.ClassificationTypeNames.enumName;case 13:return e.ClassificationTypeNames.interfaceName;case 14:return e.ClassificationTypeNames.moduleName;case 15:return e.ClassificationTypeNames.typeParameterName;case 16:return e.ClassificationTypeNames.typeAliasName;case 17:return e.ClassificationTypeNames.parameterName;case 18:return e.ClassificationTypeNames.docCommentTagName;case 19:return e.ClassificationTypeNames.jsxOpenTagName;case 20:return e.ClassificationTypeNames.jsxCloseTagName;case 21:return e.ClassificationTypeNames.jsxSelfClosingTagName;case 22:return e.ClassificationTypeNames.jsxAttribute;case 23:return e.ClassificationTypeNames.jsxText;case 24:return e.ClassificationTypeNames.jsxAttributeStringLiteralValue}}function o(t){e.Debug.assert(t.spans.length%3==0);for(var n=t.spans,r=[],a=0;a=0),a>0){var s=n||m(t.kind,t);s&&i(r,a,s);}return!0}function f(e){switch(e.parent&&e.parent.kind){case 251:if(e.parent.tagName===e)return 19;break;case 252:if(e.parent.tagName===e)return 20;break;case 250:if(e.parent.tagName===e)return 21;break;case 253:if(e.parent.name===e)return 22}}function m(t,n){if(e.isKeyword(t))return 3;if((27===t||29===t)&&n&&e.getTypeArgumentOrTypeParameterList(n.parent))return 10;if(e.isPunctuation(t)){if(n){if(58===t&&(226===n.parent.kind||149===n.parent.kind||146===n.parent.kind||253===n.parent.kind))return 5;if(194===n.parent.kind||192===n.parent.kind||193===n.parent.kind||195===n.parent.kind)return 5}return 10}if(8===t)return 4;if(9===t)return 253===n.parent.kind?24:6;if(12===t)return 6;if(e.isTemplateLiteralKind(t))return 6;if(10===t)return 23;if(71===t){if(n)switch(n.parent.kind){case 229:if(n.parent.name===n)return 11;return;case 145:if(n.parent.name===n)return 15;return;case 230:if(n.parent.name===n)return 13;return;case 232:if(n.parent.name===n)return 12;return;case 233:if(n.parent.name===n)return 14;return;case 146:if(n.parent.name===n)return e.isThisIdentifier(n)?3:17;return}return 2}}function g(a){if(a&&e.decodedTextSpanIntersectsWith(y,h,a.pos,a.getFullWidth())){r(t,a.kind);for(var i=0,o=a.getChildren(n);i=e.pos&&n<=e.end&&e});if(c){var u={isGlobalCompletion:!1,isMemberCompletion:!1,isNewIdentifierLocation:!0,entries:[]},_=t.text.substr(c.pos,n-c.pos),d=T.exec(_);if(d){var p=d[1],f=d[2],g=d[3],y=e.getDirectoryPath(t.path);if("path"===f){var h=m(g,c.pos+p.length);u.entries=i(g,y,e.getSupportedExtensions(r),!0,h,a,t.path);}else{var v={start:c.pos+p.length,length:d[0].length-p.length};u.entries=l(a,r,y,v);}}return u}}}}function l(t,n,r,a,i){if(void 0===i&&(i=[]),n.types)for(var o=0,s=n.types;o=2&&46===e.charCodeAt(0)){var t=e.length>=3&&46===e.charCodeAt(1)?2:1,n=e.charCodeAt(t);return 47===n||92===n}return!1}function y(t){return e.hasTrailingDirectorySeparator(t)?e.ensureTrailingDirectorySeparator(e.normalizePath(t)):e.normalizePath(t)}function h(e,t){return S(e,e.getDirectories)}function v(e,t,n,r,a){return S(e,e.readDirectory)}function b(e,t){return S(e,e.readFile)}function x(e,t){return S(e,e.fileExists)}function k(t,n){try{return e.directoryProbablyExists(n,t)}catch(e){}}function S(e,t){for(var n=[],r=2;r0&&(q=b(s,a)),!0}function d(n){var r=241===n.kind?238:244,a=e.getAncestor(n,r).moduleSpecifier;if(!a)return!1;J=!0,z=!1;var i=t.getSymbolAtLocation(a);if(!i)return q=e.emptyArray,!0;var o=t.getExportsAndPropertiesOfModule(i);return q=v(o,n.elements),!0}function p(e){if(e)switch(e.kind){case 17:case 26:var t=e.parent;if(t&&(178===t.kind||174===t.kind))return t}}function f(e){if(e)switch(e.kind){case 17:case 26:switch(e.parent.kind){case 241:case 245:return e.parent}}}function m(e){if(e){var t=e.parent;switch(e.kind){case 28:case 41:case 71:case 179:case 254:case 253:case 255:if(t&&(250===t.kind||251===t.kind))return t;if(253===t.kind)return t.parent.parent;break;case 9:if(t&&(253===t.kind||255===t.kind))return t.parent.parent;break;case 18:if(t&&256===t.kind&&t.parent&&253===t.parent.kind)return t.parent.parent.parent;if(t&&255===t.kind)return t.parent.parent}}}function g(t){if(!e.isFunctionLikeKind(t))return!1;switch(t){case 152:case 161:case 160:return!1;default:return!0}}function y(e){var t=e.parent.kind;switch(e.kind){case 26:return 226===t||227===t||208===t||232===t||g(t)||229===t||199===t||230===t||175===t||231===t;case 23:return 175===t;case 56:return 176===t;case 21:return 175===t;case 19:return 260===t||g(t);case 17:return 232===t||230===t||163===t;case 25:return 148===t&&e.parent&&e.parent.parent&&(230===e.parent.parent.kind||163===e.parent.parent.kind);case 27:return 229===t||199===t||230===t||231===t||g(t);case 115:return 149===t;case 24:return 146===t||e.parent&&e.parent.parent&&175===e.parent.parent.kind;case 114:case 112:case 113:return 146===t;case 118:return 242===t||246===t||240===t;case 75:case 83:case 109:case 89:case 104:case 125:case 135:case 91:case 110:case 76:case 116:case 138:return!0}switch(e.getText()){case"abstract":case"async":case"class":case"const":case"declare":case"enum":case"function":case"interface":case"let":case"private":case"protected":case"public":case"static":case"var":case"yield":return!0}return!1}function h(e){if(8===e.kind){var t=e.getFullText();return"."===t.charAt(t.length-1)}return!1}function v(t,n){for(var r=e.createMap(),i=0,o=n;i=0&&!g(n,r[a],106);a--);var i=d(t.statement);return e.forEach(i,function(e){p(t,e)&&g(n,e.getFirstToken(),72,77);}),n}function b(e){var t=f(e);if(t)switch(t.kind){case 214:case 215:case 216:case 212:case 213:return v(t);case 221:return x(t)}}function x(t){var n=[];return g(n,t.getFirstToken(),98),e.forEach(t.caseBlock.clauses,function(r){g(n,r.getFirstToken(),73,79);var a=d(r);e.forEach(a,function(e){p(t,e)&&g(n,e.getFirstToken(),72);});}),n}function k(t,n){var r=[];return g(r,t.getFirstToken(),102),t.catchClause&&g(r,t.catchClause.getFirstToken(),74),t.finallyBlock&&g(r,e.findChildOfKind(t,87,n),87),r}function S(t){var n=_(t);if(n){var r=[];return e.forEach(l(n),function(e){g(r,e.getFirstToken(),100);}),e.isFunctionBlock(n)&&e.forEachReturnStatement(n,function(e){g(r,e.getFirstToken(),96);}),r}}function T(t){var n=e.getContainingFunction(t);if(n&&s(n.body,207)){var r=[];return e.forEachReturnStatement(n.body,function(e){g(r,e.getFirstToken(),96);}),e.forEach(l(n.body),function(e){g(r,e.getFirstToken(),100);}),r}}function C(t,n){for(var a=[];s(t.parent,211)&&t.parent.elseStatement===t;)t=t.parent;for(;t;){var i=t.getChildren();g(a,i[0],90);for(c=i.length-1;c>=0&&!g(a,i[c],82);c--);if(!s(t.elseStatement,211))break;t=t.elseStatement;}for(var o=[],c=0;c=u.end;d--)if(!e.isWhiteSpaceSingleLine(n.text.charCodeAt(d))){_=!1;break}if(_){o.push({fileName:n.fileName,textSpan:e.createTextSpanFromBounds(u.getStart(),l.end),kind:e.HighlightSpanKind.reference}),c++;continue}}o.push(r(a[c],n));}return o}function E(e,t){for(var n=e.parent;222===n.kind;n=n.parent)if(n.label.text===t)return!0;return!1}t.getDocumentHighlights=n;}(e.DocumentHighlights||(e.DocumentHighlights={}));}(r||(r={}));!function(e){function t(t,n){function r(e){return"_"+e.target+"|"+e.module+"|"+e.noResolve+"|"+e.jsx+"|"+e.allowJs+"|"+e.baseUrl+"|"+JSON.stringify(e.typeRoots)+"|"+JSON.stringify(e.rootDirs)+"|"+JSON.stringify(e.paths)}function a(t,n){var r=p.get(t);return!r&&n&&p.set(t,r=e.createFileMap()),r}function i(){var t=e.arrayFrom(p.keys()).filter(function(e){return e&&"_"===e.charAt(0)}).map(function(e){var t=[];return p.get(e).forEachValue(function(e,n){t.push({name:e,refCount:n.languageServiceRefCount,references:n.owners.slice(0)});}),t.sort(function(e,t){return t.refCount-e.refCount}),{bucket:e,sourceFiles:t}});return JSON.stringify(t,void 0,2)}function o(t,a,i,o,c){return s(t,e.toPath(t,n,f),a,r(a),i,o,c)}function s(e,t,n,r,a,i,o){return l(e,t,n,r,a,i,!0,o)}function c(t,a,i,o,s){return u(t,e.toPath(t,n,f),a,r(a),i,o,s)}function u(e,t,n,r,a,i,o){return l(e,t,n,r,a,i,!1,o)}function l(t,n,r,i,o,s,c,u){var l=a(i,!0),_=l.get(n);return _?_.sourceFile.version!==s&&(_.sourceFile=e.updateLanguageServiceSourceFile(_.sourceFile,o,s,o.getChangeRange(_.sourceFile.scriptSnapshot))):(e.Debug.assert(c,"How could we be trying to update a document that the registry doesn't have?"),_={sourceFile:e.createLanguageServiceSourceFile(t,o,r.target,s,!1,u),languageServiceRefCount:0,owners:[]},l.set(n,_)),c&&_.languageServiceRefCount++,_.sourceFile}function _(t,a){return d(e.toPath(t,n,f),r(a))}function d(t,n){var r=a(n,!1);e.Debug.assert(void 0!==r);var i=r.get(t);i.languageServiceRefCount--,e.Debug.assert(i.languageServiceRefCount>=0),0===i.languageServiceRefCount&&r.remove(t);}void 0===n&&(n="");var p=e.createMap(),f=e.createGetCanonicalFileName(!!t);return{acquireDocument:o,acquireDocumentWithKey:s,updateDocument:c,updateDocumentWithKey:u,releaseDocument:_,releaseDocumentWithKey:d,reportStats:i,getKeyForCompilationSettings:r}}e.createDocumentRegistry=t;}(r||(r={}));!function(e){!function(n){function r(e,n,r){var o=s(e,n,r);return function(s,c,u){var l=a(e,o,c,n,r),_=l.directImports,d=l.indirectUsers;return t({indirectUsers:d},i(_,s,c.exportKind,n,u))}}function a(t,n,r,a,i){function s(t){var n=_(t);if(n)for(var r=0,o=n;r=0&&!(u>a);){var l=u+c;0!==u&&e.isIdentifierPart(o.charCodeAt(u-1),5)||l!==s&&e.isIdentifierPart(o.charCodeAt(l),5)||i.push(u),u=o.indexOf(n,u+c+1);}return i}function y(t,r){for(var a=[],i=t.getSourceFile(),o=r.text,s=0,c=g(i,o,t.getStart(),t.getEnd());s0);for(var n=0,r=t;n0);for(var n=e.PatternMatchKind.camelCase,r=0,a=t;r0)return r}switch(t.kind){case 265:var a=t;return e.isExternalModule(a)?'"'+e.escapeString(e.getBaseFileName(e.removeFileExtension(e.normalizePath(a.fileName))))+'"':"";case 187:case 228:case 186:case 229:case 199:return 512&e.getModifierFlags(t)?"default":w(t);case 152:return"constructor";case 156:return"new()";case 155:return"()";case 157:return"[]";case 290:return b(t);default:return""}}function b(e){if(e.name)return e.name.text;var t=e.parent&&e.parent.parent;if(t&&208===t.kind&&t.declarationList.declarations.length>0){var n=t.declarationList.declarations[0].name;if(71===n.kind)return n.text}return""}function x(t){function n(e){if(r(e)&&(a.push(e),e.children))for(var t=0,i=e.children;t0?e.declarationNameToString(t.name):226===t.parent.kind?e.declarationNameToString(t.parent.name):194===t.parent.kind&&58===t.parent.operatorToken.kind?i(t.parent.left).replace(R,""):261===t.parent.kind&&t.parent.name?i(t.parent.name):512&e.getModifierFlags(t)?"default":e.isClassLike(t)?"":""}function P(e){return 186===e.kind||187===e.kind||199===e.kind}var O,F,I,R=/\s+/g,M=[],L=[];t.getNavigationBarItems=n,t.getNavigationTree=r;}(e.NavigationBar||(e.NavigationBar={}));}(r||(r={}));!function(e){!function(t){function n(t,n){function r(n,r,a,i){if(n&&r&&a){var o={textSpan:e.createTextSpanFromBounds(r.pos,a.end),hintSpan:e.createTextSpanFromNode(n,t),bannerText:l,autoCollapse:i};u.push(o);}}function a(t,n){if(t){var r={textSpan:e.createTextSpanFromBounds(t.pos,t.end),hintSpan:e.createTextSpanFromBounds(t.pos,t.end),bannerText:l,autoCollapse:n};u.push(r);}}function i(r){var i=e.getLeadingCommentRangesOfNode(r,t);if(i){for(var s=-1,c=-1,u=!0,l=0,_=0,d=i;_1&&a({kind:2,pos:t,end:n},!1);}function s(t){return e.isFunctionBlock(t)&&187!==t.parent.kind}function c(a){if(n.throwIfCancellationRequested(),!(_>d)){switch(e.isDeclaration(a)&&i(a),a.kind){case 207:if(!e.isFunctionBlock(a)){var o=a.parent,p=e.findChildOfKind(a,17,t),f=e.findChildOfKind(a,18,t);if(212===o.kind||215===o.kind||216===o.kind||214===o.kind||211===o.kind||213===o.kind||220===o.kind||260===o.kind){r(o,p,f,s(a));break}if(224===o.kind){var m=o;if(m.tryBlock===a){r(o,p,f,s(a));break}if(m.finallyBlock===a){var g=e.findChildOfKind(m,87,t);if(g){r(g,p,f,s(a));break}}}var y=e.createTextSpanFromNode(a);u.push({textSpan:y,hintSpan:y,bannerText:l,autoCollapse:s(a)});break}case 234:var p=e.findChildOfKind(a,17,t),f=e.findChildOfKind(a,18,t);r(a.parent,p,f,s(a));break;case 229:case 230:case 232:case 178:case 235:r(a,p=e.findChildOfKind(a,17,t),f=e.findChildOfKind(a,18,t),s(a));break;case 177:r(a,e.findChildOfKind(a,21,t),e.findChildOfKind(a,22,t),s(a));}_++,e.forEachChild(a,c),_--;}}var u=[],l="...",_=0,d=20;return c(t),u}t.collectElements=n;}(e.OutliningElementsCollector||(e.OutliningElementsCollector={}));}(r||(r={}));!function(e){function t(e,t,n,r){return{kind:e,punctuationStripped:t,isCaseSensitive:n,camelCaseWeight:r}}function n(n){function o(e){return b||!e}function c(t){if(!o(t))return f(t,e.lastOrUndefined(v))}function l(t,n){if(!o(n)){var r=f(n,e.lastOrUndefined(v));if(r&&(t=t||[],!(v.length-1>t.length))){for(var a=r,i=v.length-2,s=t.length-1;i>=0;i-=1,s-=1){var c=v[i],u=f(t[s],c);if(!u)return;e.addRange(a,u);}return a}}}function _(e){var t=h.get(e);return t||h.set(e,t=m(e)),t}function d(n,r,a){var o=s(n,r.textLowerCase);if(0===o)return r.text.length===n.length?t(x.exact,a,n===r.text):t(x.prefix,a,e.startsWith(n,r.text));var c=r.isLowerCase;if(c){if(o>0)for(var u=0,l=_(n);u0)return t(x.substring,a,!0);if(!c&&r.characterSpans.length>0){var p=_(n),f=y(n,p,r,!1);if(void 0!==f)return t(x.camelCase,a,!0,f);if(void 0!==(f=y(n,p,r,!0)))return t(x.camelCase,a,!1,f)}return c&&r.text.length0&&i(n.charCodeAt(o))?t(x.substring,a,!1):void 0}function p(e){for(var t=0;tt.length)return!1;if(r)for(l=0;l1}}function r(e){return{totalTextChunk:p(e),subWordTextChunks:d(e)}}function a(e){return 0===e.subWordTextChunks.length}function i(t){if(t>=65&&t<=90)return!0;if(t<127||!e.isUnicodeIdentifierStart(t,5))return!1;var n=String.fromCharCode(t);return n===n.toUpperCase()}function o(t){if(t>=97&&t<=122)return!0;if(t<127||!e.isUnicodeIdentifierStart(t,5))return!1;var n=String.fromCharCode(t);return n===n.toLowerCase()}function s(e,t){for(var n=e.length-t.length,r=0;r<=n;r++)if(c(e,t,r))return r;return-1}function c(e,t,n){for(var r=0;r=65&&e<=90?e-65+97:e<127?e:String.fromCharCode(e).toLowerCase().charCodeAt(0)}function l(e){return e>=48&&e<=57}function _(e){return i(e)||o(e)||l(e)||95===e||36===e}function d(e){for(var t=[],n=0,r=0,a=0;a0&&(t.push(p(e.substr(n,r))),r=0);return r>0&&t.push(p(e.substr(n,r))),t}function p(e){var t=e.toLowerCase();return{text:e,textLowerCase:t,isLowerCase:e===t,characterSpans:f(e)}}function f(e){return g(e,!1)}function m(e){return g(e,!0)}function g(t,n){for(var r=[],a=0,i=1;i0){if(e.some(c,o))return i(e.Diagnostics.You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library);if(71===t.kind&&79===t.originalKeywordKind&&1536&s.parent.flags)return;var u=e.stripQuotes(e.getDeclaredName(n,s,t)),l=e.SymbolDisplay.getSymbolKind(n,s,t);return l?a(u,n.getFullyQualifiedName(s),l,e.SymbolDisplay.getSymbolModifiers(s),t,r):void 0}}else if(9===t.kind)return o(t)?i(e.Diagnostics.You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library):a(u=e.stripQuotes(t.text),u,e.ScriptElementKind.variableElement,e.ScriptElementKindModifier.none,t,r)}function a(e,t,n,r,a,i){return{canRename:!0,kind:n,displayName:e,localizedErrorMessage:void 0,fullDisplayName:t,kindModifiers:r,triggerSpan:o(a,i)}}function i(t){return{canRename:!1,localizedErrorMessage:e.getLocaleSpecificMessage(t),displayName:void 0,fullDisplayName:void 0,kind:void 0,kindModifiers:void 0,triggerSpan:void 0}}function o(t,n){var r=t.getStart(n),a=t.getWidth(n);return 9===t.kind&&(r+=1,a-=2),e.createTextSpan(r,a)}function s(t){return 71===t.kind||9===t.kind||e.isLiteralNameOfPropertyDeclarationOrIndexAccess(t)||e.isThis(t)}t.getRenameInfo=n;}(e.Rename||(e.Rename={}));}(r||(r={}));!function(e){!function(t){function n(t,n,a,i){var o=t.getTypeChecker(),s=e.findTokenOnLeftOfPosition(n,a);if(s){var c=_(s,a,n);if(i.throwIfCancellationRequested(),c){var u=c.invocation,l=[],d=o.getResolvedSignature(u,l);if(i.throwIfCancellationRequested(),l.length)return f(l,d,c,o);if(e.isSourceFileJavaScript(n))return r(c,t)}}}function r(e,t){if(181===e.invocation.kind){var n=e.invocation.expression,r=71===n.kind?n:179===n.kind?n.name:void 0;if(r&&r.text)for(var a=t.getTypeChecker(),i=0,o=t.getSourceFiles();i0&&26===e.lastOrUndefined(n).kind&&r++,r}function s(t,n,r){return e.Debug.assert(r>=n.getStart(),"Assumed 'position' could not occur before node."),e.isTemplateLiteralKind(n.kind)?e.isInsideTemplateLiteral(n,r)?0:t+2:t+1}function c(t,n,r){var a=13===t.template.kind?1:t.template.templateSpans.length+1;return e.Debug.assert(0===n||ni.parent.end)&&e.Debug.fail("Node of kind "+i.kind+" is not a subspan of its parent of kind "+i.parent.kind);var o=a(i,n,r);if(o)return o}}function d(t,n,r){var a=t.getChildren(r),i=a.indexOf(n);return e.Debug.assert(i>=0&&a.length>i+1),a[i+1]}function p(e,t){for(var n=-1,r=-1,a=0;a=t)return a;i.parameters.length>r&&(r=i.parameters.length,n=a);}return n}function f(t,n,r,a){function i(t){var n=e.mapToDisplayParts(function(e){return a.getSymbolDisplayBuilder().buildParameterDisplay(t,e,u)});return{name:t.name,documentation:t.getDocumentationComment(),displayParts:n,isOptional:a.isOptionalParameter(t.valueDeclaration)}}function o(t){var n=e.mapToDisplayParts(function(e){return a.getSymbolDisplayBuilder().buildTypeParameterDisplay(t,e,u)});return{name:t.symbol.name,documentation:m,displayParts:n,isOptional:!1}}var s=r.argumentsSpan,c=0===r.kind,u=r.invocation,l=e.getInvokedExpression(u),_=a.getSymbolAtLocation(l),d=_&&e.symbolToDisplayParts(a,_,void 0,void 0),f=e.map(t,function(t){var n,r=[],s=[];d&&e.addRange(r,d);var l;if(c){l=!1,r.push(e.punctuationPart(27));var _=t.typeParameters;n=_&&_.length>0?e.map(_,o):m,s.push(e.punctuationPart(29));var p=e.mapToDisplayParts(function(e){return a.getSymbolDisplayBuilder().buildDisplayForParametersAndDelimiters(t.thisParameter,t.parameters,e,u)});e.addRange(s,p);}else{l=t.hasRestParameter;var f=e.mapToDisplayParts(function(e){return a.getSymbolDisplayBuilder().buildDisplayForTypeParametersAndDelimiters(t.typeParameters,e,u)});e.addRange(r,f),r.push(e.punctuationPart(19));var g=t.parameters;n=g.length>0?e.map(g,i):m,s.push(e.punctuationPart(20));}var y=e.mapToDisplayParts(function(e){return a.getSymbolDisplayBuilder().buildReturnTypeDisplay(t,e,u)});return e.addRange(s,y),{isVariadic:l,prefixDisplayParts:r,suffixDisplayParts:s,separatorDisplayParts:[e.punctuationPart(26),e.spacePart()],parameters:n,documentation:t.getDocumentationComment(),tags:t.getJsDocTags()}}),g=r.argumentIndex,y=r.argumentCount,h=t.indexOf(n);return h<0&&(h=p(t,y)),e.Debug.assert(0===g||g0?e.getNodeModifiers(t.declarations[0]):e.ScriptElementKindModifier.none}function i(t,a,i,o,s,c){function u(){b.length&&b.push(e.lineBreakPart());}function l(){b.push(e.spacePart()),b.push(e.keywordPart(92)),b.push(e.spacePart());}function _(n,r){var a=e.symbolToDisplayParts(t,n,r||i,void 0,3);e.addRange(b,a);}function d(t,n){u(),n&&(p(n),b.push(e.spacePart()),_(t));}function p(t){switch(t){case e.ScriptElementKind.variableElement:case e.ScriptElementKind.functionElement:case e.ScriptElementKind.letElement:case e.ScriptElementKind.constElement:case e.ScriptElementKind.constructorImplementationElement:return void b.push(e.textOrKeywordPart(t));default:return b.push(e.punctuationPart(19)),b.push(e.textOrKeywordPart(t)),void b.push(e.punctuationPart(20))}}function f(n,r,a){e.addRange(b,e.signatureToDisplayParts(t,n,o,32|a)),r.length>1&&(b.push(e.spacePart()),b.push(e.punctuationPart(19)),b.push(e.operatorPart(37)),b.push(e.displayPart((r.length-1).toString(),e.SymbolDisplayPartKind.numericLiteral)),b.push(e.spacePart()),b.push(e.textPart(2===r.length?"overload":"overloads")),b.push(e.punctuationPart(20))),g=n.getDocumentationComment(),y=n.getJsDocTags();}function m(n,r){var a=e.mapToDisplayParts(function(e){t.getSymbolDisplayBuilder().buildTypeParameterDisplayFromSymbol(n,e,r);});e.addRange(b,a);}void 0===c&&(c=e.getMeaningFromLocation(s));var g,y,h,v,b=[],x=a.flags,k=r(t,a,s),S=99===s.kind&&e.isExpression(s);if(k!==e.ScriptElementKind.unknown||32&x||8388608&x){k!==e.ScriptElementKind.memberGetAccessorElement&&k!==e.ScriptElementKind.memberSetAccessorElement||(k=e.ScriptElementKind.memberVariableElement);O=void 0;if(v=S?t.getTypeAtLocation(s):t.getTypeOfSymbolAtLocation(a,s)){if(s.parent&&179===s.parent.kind){var T=s.parent.name;(T===s||T&&0===T.getFullWidth())&&(s=s.parent);}var C=void 0;if(181===s.kind||182===s.kind?C=s:e.isCallExpressionTarget(s)||e.isNewExpressionTarget(s)?C=s.parent:s.parent&&e.isJsxOpeningLikeElement(s.parent)&&e.isFunctionLike(a.valueDeclaration)&&(C=s.parent),C){var E=[];!(O=t.getResolvedSignature(C,E))&&E.length&&(O=E[0]);var D=182===C.kind||e.isCallExpression(C)&&97===C.expression.kind,N=D?v.getConstructSignatures():v.getCallSignatures();if(e.contains(N,O.target)||e.contains(N,O)||(O=N.length?N[0]:void 0),O){switch(D&&32&x?(k=e.ScriptElementKind.constructorImplementationElement,d(v.symbol,k)):8388608&x?(p(k=e.ScriptElementKind.alias),b.push(e.spacePart()),D&&(b.push(e.keywordPart(94)),b.push(e.spacePart())),_(a)):d(a,k),k){case e.ScriptElementKind.jsxAttribute:case e.ScriptElementKind.memberVariableElement:case e.ScriptElementKind.variableElement:case e.ScriptElementKind.constElement:case e.ScriptElementKind.letElement:case e.ScriptElementKind.parameterElement:case e.ScriptElementKind.localVariableElement:b.push(e.punctuationPart(56)),b.push(e.spacePart()),D&&(b.push(e.keywordPart(94)),b.push(e.spacePart())),32768&v.flags&&16&v.objectFlags||!v.symbol||e.addRange(b,e.symbolToDisplayParts(t,v.symbol,o,void 0,1)),f(O,N,8);break;default:f(O,N);}h=!0;}}else if(e.isNameOfFunctionDeclaration(s)&&!(98304&a.flags)||123===s.kind&&152===s.parent.kind){var A=s.parent,N=152===A.kind?v.getNonNullableType().getConstructSignatures():v.getNonNullableType().getCallSignatures();O=t.isImplementationOfOverload(A)?N[0]:t.getSignatureFromDeclaration(A),152===A.kind?(k=e.ScriptElementKind.constructorImplementationElement,d(v.symbol,k)):d(155!==A.kind||2048&v.symbol.flags||4096&v.symbol.flags?a:v.symbol,k),f(O,N),h=!0;}}}if(32&x&&!h&&!S&&(e.getDeclarationOfKind(a,199)?p(e.ScriptElementKind.localClassElement):b.push(e.keywordPart(75)),b.push(e.spacePart()),_(a),m(a,i)),64&x&&2&c&&(u(),b.push(e.keywordPart(109)),b.push(e.spacePart()),_(a),m(a,i)),524288&x&&(u(),b.push(e.keywordPart(138)),b.push(e.spacePart()),_(a),m(a,i),b.push(e.spacePart()),b.push(e.operatorPart(58)),b.push(e.spacePart()),e.addRange(b,e.typeToDisplayParts(t,t.getDeclaredTypeOfSymbol(a),o,512))),384&x&&(u(),e.forEach(a.declarations,e.isConstEnumDeclaration)&&(b.push(e.keywordPart(76)),b.push(e.spacePart())),b.push(e.keywordPart(83)),b.push(e.spacePart()),_(a)),1536&x){u();var w=(P=e.getDeclarationOfKind(a,233))&&P.name&&71===P.name.kind;b.push(e.keywordPart(w?129:128)),b.push(e.spacePart()),_(a);}if(262144&x&&2&c)if(u(),b.push(e.punctuationPart(19)),b.push(e.textPart("type parameter")),b.push(e.punctuationPart(20)),b.push(e.spacePart()),_(a),a.parent)l(),_(a.parent,o),m(a.parent,o);else{var P=e.getDeclarationOfKind(a,145);if(e.Debug.assert(void 0!==P),P=P.parent)if(e.isFunctionLikeKind(P.kind)){l();var O=t.getSignatureFromDeclaration(P);156===P.kind?(b.push(e.keywordPart(94)),b.push(e.spacePart())):155!==P.kind&&P.name&&_(P.symbol),e.addRange(b,e.signatureToDisplayParts(t,O,i,32));}else 231===P.kind&&(l(),b.push(e.keywordPart(138)),b.push(e.spacePart()),_(P.symbol),m(P.symbol,i));}if(8&x&&(k=e.ScriptElementKind.enumMemberElement,d(a,"enum member"),264===(P=a.declarations[0]).kind)){var F=t.getConstantValue(P);void 0!==F&&(b.push(e.spacePart()),b.push(e.operatorPart(58)),b.push(e.spacePart()),b.push(e.displayPart(F.toString(),e.SymbolDisplayPartKind.numericLiteral)));}if(8388608&x&&(u(),236===a.declarations[0].kind?(b.push(e.keywordPart(84)),b.push(e.spacePart()),b.push(e.keywordPart(129))):b.push(e.keywordPart(91)),b.push(e.spacePart()),_(a),e.forEach(a.declarations,function(n){if(237===n.kind){var r=n;if(e.isExternalModuleImportEqualsDeclaration(r))b.push(e.spacePart()),b.push(e.operatorPart(58)),b.push(e.spacePart()),b.push(e.keywordPart(132)),b.push(e.punctuationPart(19)),b.push(e.displayPart(e.getTextOfNode(e.getExternalModuleImportEqualsDeclarationExpression(r)),e.SymbolDisplayPartKind.stringLiteral)),b.push(e.punctuationPart(20));else{var a=t.getSymbolAtLocation(r.moduleReference);a&&(b.push(e.spacePart()),b.push(e.operatorPart(58)),b.push(e.spacePart()),_(a,o));}return!0}})),!h)if(k!==e.ScriptElementKind.unknown){if(v)if(S?(u(),b.push(e.keywordPart(99))):d(a,k),k===e.ScriptElementKind.memberVariableElement||k===e.ScriptElementKind.jsxAttribute||3&x||k===e.ScriptElementKind.localVariableElement||S)if(b.push(e.punctuationPart(56)),b.push(e.spacePart()),v.symbol&&262144&v.symbol.flags){var I=e.mapToDisplayParts(function(e){t.getSymbolDisplayBuilder().buildTypeParameterDisplay(v,e,o);});e.addRange(b,I);}else e.addRange(b,e.typeToDisplayParts(t,v,o));else(16&x||8192&x||16384&x||131072&x||98304&x||k===e.ScriptElementKind.memberFunctionElement)&&f((N=v.getNonNullableType().getCallSignatures())[0],N);}else k=n(t,a,s);if(!g&&(g=a.getDocumentationComment(),y=a.getJsDocTags(),0===g.length&&4&a.flags&&a.parent&&e.forEach(a.parent.declarations,function(e){return 265===e.kind})))for(var R=0,M=a.declarations;R0))break}return{displayParts:b,documentation:g,symbolKind:k,tags:y}}function o(t){return!t.parent&&e.forEach(t.declarations,function(t){if(186===t.kind)return!0;if(226!==t.kind&&228!==t.kind)return!1;for(var n=t.parent;!e.isFunctionBlock(n);n=n.parent)if(265===n.kind||234===n.kind)return!1;return!0})}t.getSymbolKind=n,t.getSymbolModifiers=a,t.getSymbolDisplayPartsDocumentationAndSymbolKind=i;}(e.SymbolDisplay||(e.SymbolDisplay={}));}(r||(r={}));!function(e){function t(t,n){var a=[],i=n.compilerOptions?r(n.compilerOptions,a):e.getDefaultCompilerOptions();i.isolatedModules=!0,i.suppressOutputPathCheck=!0,i.allowNonTsExtensions=!0,i.noLib=!0,i.lib=void 0,i.types=void 0,i.noEmit=void 0,i.noEmitOnError=void 0,i.paths=void 0,i.rootDirs=void 0,i.declaration=void 0,i.declarationDir=void 0,i.out=void 0,i.outFile=void 0,i.noResolve=!0;var o=n.fileName||(i.jsx?"module.tsx":"module.ts"),s=e.createSourceFile(o,t,i.target);n.moduleName&&(s.moduleName=n.moduleName),n.renamedDependencies&&(s.renamedDependencies=e.createMapFromTemplate(n.renamedDependencies));var c,u,l=e.getNewLineCharacter(i),_={getSourceFile:function(t){return t===e.normalizePath(o)?s:void 0},writeFile:function(t,n){e.fileExtensionIs(t,".map")?(e.Debug.assert(void 0===u,"Unexpected multiple source map outputs for the file '"+t+"'"),u=n):(e.Debug.assert(void 0===c,"Unexpected multiple outputs for the file: '"+t+"'"),c=n);},getDefaultLibFileName:function(){return"lib.d.ts"},useCaseSensitiveFileNames:function(){return!1},getCanonicalFileName:function(e){return e},getCurrentDirectory:function(){return""},getNewLine:function(){return l},fileExists:function(e){return e===o},readFile:function(){return""},directoryExists:function(){return!0},getDirectories:function(){return[]}},d=e.createProgram([o],i,_);return n.reportDiagnostics&&(e.addRange(a,d.getSyntacticDiagnostics(s)),e.addRange(a,d.getOptionsDiagnostics())),d.emit(),e.Debug.assert(void 0!==c,"Output generation failed"),{outputText:c,diagnostics:a,sourceMapText:u}}function n(n,r,a,i,o){var s=t(n,{compilerOptions:r,fileName:a,reportDiagnostics:!!i,moduleName:o});return e.addRange(i,s.diagnostics),s.outputText}function r(t,n){a=a||e.filter(e.optionDeclarations,function(t){return"object"==typeof t.type&&!e.forEachEntry(t.type,function(e){return"number"!=typeof e})}),t=e.clone(t);for(var r=0,i=a;r>=5,n+=5;return t},t.prototype.IncreaseInsertionIndex=function(t){var n=this.rulesInsertionIndexBitmap>>t&31;n++,e.Debug.assert((31&n)===n,"Adding more rules into the sub-bucket than allowed. Maximum allowed is 32 rules.");var r=this.rulesInsertionIndexBitmap&~(31<=0},t}();t.TokenRangeAccess=n;var r=function(){function e(e){this.tokens=e&&e.length?e:[];}return e.prototype.GetTokens=function(){return this.tokens},e.prototype.Contains=function(e){return this.tokens.indexOf(e)>=0},e}();t.TokenValuesAccess=r;var a=function(){function e(e){this.token=e;}return e.prototype.GetTokens=function(){return[this.token]},e.prototype.Contains=function(e){return e===this.token},e}();t.TokenSingleValueAccess=a;var i=function(){function e(){}return e.prototype.GetTokens=function(){for(var e=[],t=0;t<=142;t++)e.push(t);return e},e.prototype.Contains=function(){return!0},e.prototype.toString=function(){return"[allTokens]"},e}();t.TokenAllAccess=i;var o=function(){function e(e){this.tokenAccess=e;}return e.FromToken=function(t){return new e(new a(t))},e.FromTokens=function(t){return new e(new r(t))},e.FromRange=function(t,r,a){return void 0===a&&(a=[]),new e(new n(t,r,a))},e.AllTokens=function(){return new e(new i)},e.prototype.GetTokens=function(){return this.tokenAccess.GetTokens()},e.prototype.Contains=function(e){return this.tokenAccess.Contains(e)},e.prototype.toString=function(){return this.tokenAccess.toString()},e}();o.Any=o.AllTokens(),o.AnyIncludingMultilineComments=o.FromTokens(o.Any.GetTokens().concat([3])),o.Keywords=o.FromRange(72,142),o.BinaryOperators=o.FromRange(27,70),o.BinaryKeywordOperators=o.FromTokens([92,93,142,118,126]),o.UnaryPrefixOperators=o.FromTokens([43,44,52,51]),o.UnaryPrefixExpressions=o.FromTokens([8,71,19,21,17,99,94]),o.UnaryPreincrementExpressions=o.FromTokens([71,19,99,94]),o.UnaryPostincrementExpressions=o.FromTokens([71,20,22,94]),o.UnaryPredecrementExpressions=o.FromTokens([71,19,99,94]),o.UnaryPostdecrementExpressions=o.FromTokens([71,20,22,94]),o.Comments=o.FromTokens([2,3]),o.TypeNames=o.FromTokens([71,133,136,122,137,105,119]),t.TokenRange=o;}(t.Shared||(t.Shared={}));}(e.formatting||(e.formatting={}));}(r||(r={}));!function(e){!function(t){var n=function(){function n(){this.globalRules=new t.Rules;}return n.prototype.getRuleName=function(e){return this.globalRules.getRuleName(e)},n.prototype.getRuleByName=function(e){return this.globalRules[e]},n.prototype.getRulesMap=function(){return this.rulesMap},n.prototype.getFormatOptions=function(){return this.options},n.prototype.ensureUpToDate=function(n){if(!this.options||!e.compareDataObjects(this.options,n)){var r=this.createActiveRules(n),a=t.RulesMap.create(r);this.activeRules=r,this.rulesMap=a,this.options=e.clone(n);}},n.prototype.createActiveRules=function(e){var t=this.globalRules.HighPriorityCommonRules.slice(0);return e.insertSpaceAfterConstructor?t.push(this.globalRules.SpaceAfterConstructor):t.push(this.globalRules.NoSpaceAfterConstructor),e.insertSpaceAfterCommaDelimiter?t.push(this.globalRules.SpaceAfterComma):t.push(this.globalRules.NoSpaceAfterComma),e.insertSpaceAfterFunctionKeywordForAnonymousFunctions?t.push(this.globalRules.SpaceAfterAnonymousFunctionKeyword):t.push(this.globalRules.NoSpaceAfterAnonymousFunctionKeyword),e.insertSpaceAfterKeywordsInControlFlowStatements?t.push(this.globalRules.SpaceAfterKeywordInControl):t.push(this.globalRules.NoSpaceAfterKeywordInControl),e.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis?(t.push(this.globalRules.SpaceAfterOpenParen),t.push(this.globalRules.SpaceBeforeCloseParen),t.push(this.globalRules.NoSpaceBetweenParens)):(t.push(this.globalRules.NoSpaceAfterOpenParen),t.push(this.globalRules.NoSpaceBeforeCloseParen),t.push(this.globalRules.NoSpaceBetweenParens)),e.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets?(t.push(this.globalRules.SpaceAfterOpenBracket),t.push(this.globalRules.SpaceBeforeCloseBracket),t.push(this.globalRules.NoSpaceBetweenBrackets)):(t.push(this.globalRules.NoSpaceAfterOpenBracket),t.push(this.globalRules.NoSpaceBeforeCloseBracket),t.push(this.globalRules.NoSpaceBetweenBrackets)),!1!==e.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces?(t.push(this.globalRules.SpaceAfterOpenBrace),t.push(this.globalRules.SpaceBeforeCloseBrace),t.push(this.globalRules.NoSpaceBetweenEmptyBraceBrackets)):(t.push(this.globalRules.NoSpaceAfterOpenBrace),t.push(this.globalRules.NoSpaceBeforeCloseBrace),t.push(this.globalRules.NoSpaceBetweenEmptyBraceBrackets)),e.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces?(t.push(this.globalRules.SpaceAfterTemplateHeadAndMiddle),t.push(this.globalRules.SpaceBeforeTemplateMiddleAndTail)):(t.push(this.globalRules.NoSpaceAfterTemplateHeadAndMiddle),t.push(this.globalRules.NoSpaceBeforeTemplateMiddleAndTail)),e.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces?(t.push(this.globalRules.SpaceAfterOpenBraceInJsxExpression),t.push(this.globalRules.SpaceBeforeCloseBraceInJsxExpression)):(t.push(this.globalRules.NoSpaceAfterOpenBraceInJsxExpression),t.push(this.globalRules.NoSpaceBeforeCloseBraceInJsxExpression)),e.insertSpaceAfterSemicolonInForStatements?t.push(this.globalRules.SpaceAfterSemicolonInFor):t.push(this.globalRules.NoSpaceAfterSemicolonInFor),e.insertSpaceBeforeAndAfterBinaryOperators?(t.push(this.globalRules.SpaceBeforeBinaryOperator),t.push(this.globalRules.SpaceAfterBinaryOperator)):(t.push(this.globalRules.NoSpaceBeforeBinaryOperator),t.push(this.globalRules.NoSpaceAfterBinaryOperator)),e.insertSpaceBeforeFunctionParenthesis?t.push(this.globalRules.SpaceBeforeOpenParenInFuncDecl):t.push(this.globalRules.NoSpaceBeforeOpenParenInFuncDecl),e.placeOpenBraceOnNewLineForControlBlocks&&t.push(this.globalRules.NewLineBeforeOpenBraceInControl),e.placeOpenBraceOnNewLineForFunctions&&(t.push(this.globalRules.NewLineBeforeOpenBraceInFunction),t.push(this.globalRules.NewLineBeforeOpenBraceInTypeScriptDeclWithBlock)),e.insertSpaceAfterTypeAssertion?t.push(this.globalRules.SpaceAfterTypeAssertion):t.push(this.globalRules.NoSpaceAfterTypeAssertion),t=t.concat(this.globalRules.LowPriorityCommonRules)},n}();t.RulesProvider=n;}(e.formatting||(e.formatting={}));}(r||(r={}));!function(e){!function(t){function n(t,n,r,a){var i=n.getLineAndCharacterOfPosition(t).line;if(0===i)return[];for(var o=e.getEndLinePosition(i,n);e.isWhiteSpaceSingleLine(n.text.charCodeAt(o));)o--;return e.isLineBreak(n.text.charCodeAt(o))&&o--,m({pos:e.getStartPositionOfLine(i-1,n),end:o+1},n,a,r,2)}function r(e,t,n,r){return s(e,25,t,r,n,3)}function a(e,t,n,r){return s(e,18,t,r,n,4)}function i(e,t,n){return m({pos:0,end:e.text.length},e,n,t,0)}function o(t,n,r,a,i){return m({pos:e.getLineStartPositionForPosition(t,r),end:n},r,i,a,1)}function s(t,n,r,a,i,o){var s=c(t,n,r);return s?m({pos:e.getLineStartPositionForPosition(s.getStart(r),r),end:s.end},r,a,i,o):[]}function c(t,n,r){var a=e.findPrecedingToken(t,r);if(a&&a.kind===n&&t===a.getEnd()){for(var i=a;i&&i.parent&&i.parent.end===a.end&&!u(i.parent,i);)i=i.parent;return i}}function u(t,n){switch(t.kind){case 229:case 230:return e.rangeContainsRange(t.members,n);case 233:var r=t.body;return r&&234===r.kind&&e.rangeContainsRange(r.statements,n);case 265:case 207:case 234:return e.rangeContainsRange(t.statements,n);case 260:return e.rangeContainsRange(t.block.statements,n)}return!1}function l(t,n){function r(a){var i=e.forEachChild(a,function(r){return e.startEndContainsRange(r.getStart(n),r.end,t)&&r});if(i){var o=r(i);if(o)return o}return a}return r(n)}function _(t,n){function r(){return!1}if(!t.length)return r;var a=t.filter(function(t){return e.rangeOverlapsWithStartEnd(n,t.start,t.start+t.length)}).sort(function(e,t){return e.start-t.start});if(!a.length)return r;var i=0;return function(t){for(;;){if(i>=a.length)return!1;var n=a[i];if(t.end<=n.start)return!1;if(e.startEndOverlapsWithStartEnd(t.pos,t.end,n.start,n.start+n.length))return!0;i++;}}}function d(t,n,r){var a=t.getStart(r);if(a===n.pos&&t.end===n.end)return a;var i=e.findPrecedingToken(n.pos,r);return i?i.end>=n.pos?t.pos:i.end:t.pos}function p(e,n,r){for(var a,i=-1;e;){var o=r.getLineAndCharacterOfPosition(e.getStart(r)).line;if(-1!==i&&o!==i)break;if(t.SmartIndenter.shouldIndentChildNode(e,a))return n.indentSize;i=o,a=e,e=e.parent;}return 0}function f(e,n,r,a,i,o){var s={pos:0,end:n.text.length};return g(s,e,a,i,t.getFormattingScanner(n.text,r,s.pos,s.end),o.getFormatOptions(),o,1,function(e){return!1},n)}function m(e,n,r,a,i){var o=l(e,n);return g(e,o,t.SmartIndenter.getIndentationForNode(o,e,n,r),p(o,r,n),t.getFormattingScanner(n.text,n.languageVariant,d(o,e,n),e.end),r,a,i,_(n.parseDiagnostics,e),n)}function g(n,r,a,i,o,s,c,u,l,_){function d(n,r,a,i,o){if(e.rangeOverlapsWithStartEnd(i,n,r)||e.rangeContainsStartEnd(i,n,r)){if(-1!==o)return o}else{var c=_.getLineAndCharacterOfPosition(n).line,u=e.getLineStartPositionForPosition(n,_),l=t.SmartIndenter.findFirstNonWhitespaceColumn(u,n,_,s);if(c!==a||n===l){var d=t.SmartIndenter.getBaseIndentation(s);return d>l?d:l}}return-1}function p(e,n,r,a,i,o){var c=r,u=t.SmartIndenter.shouldIndentChildNode(e)?s.indentSize:0;return o===n?(c=n===L?B:i.getIndentation(),u=Math.min(s.indentSize,i.getDelta(e)+u)):-1===c&&(c=t.SmartIndenter.childStartsOnTheSameLineWithElseInIfStatement(a,e,n,_)?i.getIndentation():i.getIndentation()+i.getDelta(e)),{indentation:c,delta:u}}function f(e){if(e.modifiers&&e.modifiers.length)return e.modifiers[0].kind;switch(e.kind){case 229:return 75;case 230:return 109;case 228:return 89;case 232:return 232;case 153:return 125;case 154:return 135;case 151:if(e.asteriskToken)return 39;case 149:case 146:return e.name.kind}}function m(e,n,r,a){function i(n,r){return t.SmartIndenter.nodeWillIndentChild(e,r,!0)?n:0}return{getIndentationForComment:function(e,t,n){switch(e){case 18:case 22:case 20:return r+i(a,n)}return-1!==t?t:r},getIndentationForToken:function(t,o,s){if(n!==t&&e.decorators&&o===f(e))return r;switch(o){case 17:case 18:case 19:case 20:case 82:case 106:case 57:return r;case 41:case 29:if(251===s.kind||252===s.kind||250===s.kind)return r;break;case 21:case 22:if(172!==s.kind)return r}return n!==t?r+i(a,s):r},getIndentation:function(){return r},getDelta:function(e){return i(a,e)},recomputeIndentation:function(n){e.parent&&t.SmartIndenter.shouldIndentChildNode(e.parent,e)&&(n?r+=s.indentSize:r-=s.indentSize,a=t.SmartIndenter.shouldIndentChildNode(e)?s.indentSize:0);}}}function g(t,r,a,i,s,c){function u(r,a,i,s,c,u,l,f){var m=r.getStart(_),y=_.getLineAndCharacterOfPosition(m).line,h=y;r.decorators&&(h=_.getLineAndCharacterOfPosition(e.getNonDecoratorTokenPosOfNode(r,_)).line);var b=-1;if(l&&-1!==(b=d(m,r.end,c,n,a))&&(a=b),!e.rangeOverlapsWithStartEnd(n,r.pos,r.end))return r.endm);)v(x,t,s,t);if(!o.isOnToken())return a;if(e.isToken(r)&&10!==r.kind){var x=o.readTokenInfo(r);return e.Debug.assert(x.token.end===r.end,"Token end is child end"),v(x,t,s,r),a}var k=147===r.kind?y:u,S=p(r,y,b,t,s,k);return g(r,T,y,h,S.indentation,S.delta),T=t,f&&177===i.kind&&-1===a&&(a=S.indentation),a}function f(n,r,a,i){var s=y(r,n),c=h(s),l=i,d=a;if(0!==s)for(;o.isOnToken()&&!((x=o.readTokenInfo(r)).token.end>n.pos);)if(x.token.kind===s){d=_.getLineAndCharacterOfPosition(x.token.pos).line;var f=p(x.token,d,-1,r,i,a);v(x,r,l=m(r,a,f.indentation,f.delta),r);}else v(x,r,i,r);for(var g=-1,b=0;bt.end)break;v(C,t,k,t);}}}function b(t,r,a,i){for(var o=0,s=t;o0){var k=v(x,s);P(h,b.character,k);}else w(h,b.character);}}}else a||S(n.pos,r,!1);}function D(t,n,r){for(var a=t;ao)){var s=N(i,o);-1!==s&&(e.Debug.assert(s===i||!e.isWhiteSpaceSingleLine(_.text.charCodeAt(s-1))),w(s,o+1-s));}}}function N(t,n){for(var r=n;r>=t&&e.isWhiteSpaceSingleLine(_.text.charCodeAt(r));)r--;return r!==n?r+1:-1}function A(t,n,r){return{span:e.createTextSpan(t,n),newText:r}}function w(e,t){t&&j.push(A(e,t,""));}function P(e,t,n){(t||n)&&j.push(A(e,t,n));}function O(e,t,n,r,a){switch(e.Operation.Action){case 1:return;case 8:t.end!==r.pos&&w(t.end,r.pos-t.end);break;case 4:if(1!==e.Flag&&n!==a)return;1!==a-n&&P(t.end,r.pos-t.end,s.newLineCharacter);break;case 2:if(1!==e.Flag&&n!==a)return;1===r.pos-t.end&&32===_.text.charCodeAt(t.end)||P(t.end,r.pos-t.end," ");}}var F,I,R,M,L,B,K=new t.FormattingContext(_,u),j=[];if(o.advance(),o.isOnToken()){var J=_.getLineAndCharacterOfPosition(r.getStart(_)).line,z=J;r.decorators&&(z=_.getLineAndCharacterOfPosition(e.getNonDecoratorTokenPosOfNode(r,_)).line),g(r,r,J,z,a,i);}if(!o.isOnToken()){var U=o.getCurrentLeadingTrivia();U&&(b(U,r,r,void 0),function(){var e=I?I.end:n.pos;D(_.getLineAndCharacterOfPosition(e).line,_.getLineAndCharacterOfPosition(n.end).line+1,I);}());}return o.close(),j}function y(e,t){switch(e.kind){case 152:case 228:case 186:case 151:case 150:case 187:if(e.typeParameters===t)return 27;if(e.parameters===t)return 19;break;case 181:case 182:if(e.typeArguments===t)return 27;if(e.arguments===t)return 19;break;case 159:if(e.typeArguments===t)return 27}return 0}function h(e){switch(e){case 19:return 20;case 27:return 29}return 0}function v(e,t){function n(e,t){for(var n="",r=0;rr.text.length)return a(o);if(o.indentStyle===e.IndentStyle.None)return 0;var _=e.findPrecedingToken(n,r);if(!_)return a(o);if(e.isStringOrRegularExpressionOrTemplateLiteral(_.kind)&&_.getStart(r)<=n&&_.end>n)return 0;var d=r.getLineAndCharacterOfPosition(n).line;if(o.indentStyle===e.IndentStyle.Block){for(var p=n;p>0;){var g=r.text.charCodeAt(p);if(!e.isWhiteSpaceLike(g))break;p--;}var y=e.getLineStartPositionForPosition(p,r);return t.findFirstNonWhitespaceColumn(y,p,r,o)}if(26===_.kind&&194!==_.parent.kind&&-1!==(T=s(_,r,o)))return T;for(var h,v,b,x=_;x;){if(e.positionBelongsToNode(x,n,r)&&k(x,h)){v=l(x,r);var S=u(_,x,d,r);b=0!==S?c&&2===S?o.indentSize:0:d!==v.line?o.indentSize:0;break}var T=f(x,r,o);if(-1!==T)return T;if(-1!==(T=m(x,r,o)))return T+o.indentSize;h=x,x=x.parent;}return x?i(x,v,void 0,b,r,o):a(o)}function r(e,t,n,r){return i(e,n.getLineAndCharacterOfPosition(e.getStart(n)),t,0,n,r)}function a(e){return e.baseIndentSize||0}function i(e,t,n,r,i,s){for(var u,l=e.parent;l;){var d=!0;if(n){var p=e.getStart(i);d=pn.end;}if(d&&-1!==(y=f(e,i,s)))return y+r;var g=(u=o(l,e,i)).line===t.line||_(l,e,t.line,i);if(d){var y=c(e,l,t,g,i,s);if(-1!==y)return y+r;if(-1!==(y=m(e,i,s)))return y+r}k(l,e)&&!g&&(r+=s.indentSize),t=u,l=(e=l).parent;}return r+a(s)}function o(e,t,n){var r=p(t,n);return r?n.getLineAndCharacterOfPosition(r.pos):n.getLineAndCharacterOfPosition(e.getStart(n))}function s(t,n,r){var a=e.findListItemInfo(t);return a&&a.listItemIndex>0?g(a.list.getChildren(),a.listItemIndex-1,n,r):-1}function c(t,n,r,a,i,o){return(e.isDeclaration(t)||e.isStatementButNotDeclaration(t))&&(265===n.kind||!a)?y(r,i,o):-1}function u(t,n,r,a){var i=e.findNextToken(t,n);return i?17===i.kind?1:18===i.kind&&r===l(i,a).line?2:0:0}function l(e,t){return t.getLineAndCharacterOfPosition(e.getStart(t))}function _(t,n,r,a){if(211===t.kind&&t.elseStatement===n){var i=e.findChildOfKind(t,82,a);return e.Debug.assert(void 0!==i),l(i,a).line===r}return!1}function d(t,n,r){return t&&e.rangeContainsStartEnd(t,n,r)?t:void 0}function p(e,t){if(e.parent)switch(e.parent.kind){case 159:return d(e.parent.typeArguments,e.getStart(t),e.getEnd());case 178:return e.parent.properties;case 177:return e.parent.elements;case 228:case 186:case 187:case 151:case 150:case 155:case 152:case 161:case 156:n=e.getStart(t);return d(e.parent.typeParameters,n,e.getEnd())||d(e.parent.parameters,n,e.getEnd());case 229:return d(e.parent.typeParameters,e.getStart(t),e.getEnd());case 182:case 181:var n=e.getStart(t);return d(e.parent.typeArguments,n,e.getEnd())||d(e.parent.arguments,n,e.getEnd());case 227:return d(e.parent.declarations,e.getStart(t),e.getEnd());case 241:case 245:return d(e.parent.elements,e.getStart(t),e.getEnd())}}function f(t,n,r){var a=p(t,n);return a?function(a){var i=e.indexOf(a,t);return-1!==i?g(a,i,n,r):-1}(a):-1}function m(e,t,n){if(20===e.kind)return-1;if(e.parent&&(181===e.parent.kind||182===e.parent.kind)&&e.parent.expression!==e){var r=e.parent.expression,a=function(e){for(;;)switch(e.kind){case 181:case 182:case 179:case 180:e=e.expression;break;default:return e}}(r);if(r===a)return-1;var i=t.getLineAndCharacterOfPosition(r.end),o=t.getLineAndCharacterOfPosition(a.end);return i.line===o.line?-1:y(i,t,n)}return-1}function g(t,n,r,a){e.Debug.assert(n>=0&&n=0;o--)if(26!==t[o].kind){if(r.getLineAndCharacterOfPosition(t[o].end).line!==i.line)return y(i,r,a);i=l(t[o],r);}return-1}function y(e,t,n){var r=t.getPositionOfLineAndCharacter(e.line,0);return v(r,r+e.character,t,n)}function h(t,n,r,a){for(var i=0,o=0,s=t;s=0;r--){var a=n[r];t=""+t.substring(0,a.span.start)+a.newText+t.substring(e.textSpanEnd(a.span));}return t}function g(t){return e.skipTrivia(t,0)===t.length}function y(t){function r(){}var i=e.visitEachChild(t,y,x,h,y),o=e.nodeIsSynthesized(i)?i:(r.prototype=i,new r);return o.pos=n(t),o.end=a(t),o}function h(t,r,i,o,s){var c=e.visitNodes(t,r,i,o,s);if(!c)return c;var u=c===t?e.createNodeArray(c.slice(0)):c;return u.pos=n(t),u.end=a(t),u}var v;!function(e){e[e.FullStart=0]="FullStart",e[e.Start=1]="Start";}(v=t.Position||(t.Position={})),t.getSeparatorCharacter=c,t.getAdjustedStartPosition=u,t.getAdjustedEndPosition=l;var b=function(){function t(t,n,r){this.newLine=t,this.rulesProvider=n,this.validator=r,this.changes=[],this.newLineCharacter=e.getNewLineCharacter({newLine:t});}return t.fromCodeFixContext=function(e){return new t("\n"===e.newLineCharacter?1:0,e.rulesProvider)},t.prototype.deleteNode=function(e,t,n){void 0===n&&(n={});var r=u(e,t,n,v.FullStart),a=l(e,t,n);return this.changes.push({sourceFile:e,options:n,range:{pos:r,end:a}}),this},t.prototype.deleteRange=function(e,t){return this.changes.push({sourceFile:e,range:t}),this},t.prototype.deleteNodeRange=function(e,t,n,r){void 0===r&&(r={});var a=u(e,t,r,v.FullStart),i=l(e,n,r);return this.changes.push({sourceFile:e,options:r,range:{pos:a,end:i}}),this},t.prototype.deleteNodeInList=function(t,n){var r=e.formatting.SmartIndenter.getContainingList(n,t);if(!r)return e.Debug.fail("node is not a list element"),this;var a=r.indexOf(n);if(a<0)return this;if(1===r.length)return this.deleteNode(t,n),this;if(a!==r.length-1){var i=e.getTokenAtPosition(t,n.end);if(i&&_(n,i)){var o=e.skipTrivia(t.text,u(t,n,{},v.FullStart),!1,!0),s=r[a+1],c=e.skipTrivia(t.text,u(t,s,{},v.FullStart),!1,!0);this.deleteRange(t,{pos:o,end:c});}}else{var l=e.getTokenAtPosition(t,r[a-1].end);l&&_(n,l)&&this.deleteNodeRange(t,l,n);}return this},t.prototype.replaceRange=function(e,t,n,r){return void 0===r&&(r={}),this.changes.push({sourceFile:e,range:t,options:r,node:n}),this},t.prototype.replaceNode=function(e,t,n,r){void 0===r&&(r={});var a=u(e,t,r,v.Start),i=l(e,t,r);return this.changes.push({sourceFile:e,options:r,useIndentationFromFile:!0,node:n,range:{pos:a,end:i}}),this},t.prototype.replaceNodeRange=function(e,t,n,r,a){void 0===a&&(a={});var i=u(e,t,a,v.Start),o=l(e,n,a);return this.changes.push({sourceFile:e,options:a,useIndentationFromFile:!0,node:r,range:{pos:i,end:o}}),this},t.prototype.insertNodeAt=function(e,t,n,r){return void 0===r&&(r={}),this.changes.push({sourceFile:e,options:r,node:n,range:{pos:t,end:t}}),this},t.prototype.insertNodeBefore=function(e,t,n,r){void 0===r&&(r={});var a=u(e,t,r,v.Start);return this.changes.push({sourceFile:e,options:r,useIndentationFromFile:!0,node:n,range:{pos:a,end:a}}),this},t.prototype.insertNodeAfter=function(t,n,r,a){void 0===a&&(a={}),(e.isStatementButNotDeclaration(n)||149===n.kind||148===n.kind||150===n.kind)&&59!==t.text.charCodeAt(n.end-1)&&this.changes.push({sourceFile:t,options:{},range:{pos:n.end,end:n.end},node:e.createToken(25)});var i=l(t,n,a);return this.changes.push({sourceFile:t,options:a,useIndentationFromFile:!0,node:r,range:{pos:i,end:i}}),this},t.prototype.insertNodeInListAfter=function(t,n,r){var a=e.formatting.SmartIndenter.getContainingList(n,t);if(!a)return e.Debug.fail("node is not a list element"),this;var i=a.indexOf(n);if(i<0)return this;var c=n.getEnd();if(i!==a.length-1){var u=e.getTokenAtPosition(t,n.end);if(u&&_(n,u)){var l=e.getLineAndCharacterOfPosition(t,o(t.text,a[i+1].getFullStart())),p=e.getLineAndCharacterOfPosition(t,u.end),f=void 0,m=void 0;p.line===l.line?(m=u.end,f=d(l.character-p.character)):m=e.getStartPositionOfLine(l.line,t),this.changes.push({sourceFile:t,range:{pos:m,end:a[i+1].getStart(t)},node:r,useIndentationFromFile:!0,options:{prefix:f,suffix:""+e.tokenToString(u.kind)+t.text.substring(u.end,a[i+1].getStart(t))}});}}else{var g=n.getStart(t),y=e.getLineStartPositionForPosition(g,t),h=void 0,v=!1;if(1===a.length)h=26;else{var b=e.findPrecedingToken(n.pos,t);h=_(n,b)?b.kind:26,v=e.getLineStartPositionForPosition(a[i-1].getStart(t),t)!==y;}if(s(t.text,n.end)&&(v=!0),v){this.changes.push({sourceFile:t,range:{pos:c,end:c},node:e.createToken(h),options:{}});var x=e.formatting.SmartIndenter.findFirstNonWhitespaceColumn(y,g,t,this.rulesProvider.getFormatOptions()),k=e.skipTrivia(t.text,c,!0,!1);k!==c&&e.isLineBreak(t.text.charCodeAt(k-1))&&k--,this.changes.push({sourceFile:t,range:{pos:k,end:k},node:r,options:{indentation:x,prefix:this.newLineCharacter}});}else this.changes.push({sourceFile:t,range:{pos:c,end:c},node:r,options:{prefix:e.tokenToString(h)+" "}});}return this},t.prototype.getChanges=function(){for(var n=this,r=e.createFileMap(),a=0,i=this.changes;a0&&(r=r.concat(n));}),r}var i=[];t.registerCodeFix=n,t.getSupportedErrorCodes=r,t.getFixes=a;}(e.codefix||(e.codefix={}));}(r||(r={}));!function(e){!function(t){function n(n){function r(e,t,n,r){if(!n){var a=s.getIndexInfoOfType(e,t);if(a){var i=s.indexInfoToIndexSignatureDeclaration(a,t,c);r.push(i);}}}var a=n.sourceFile,i=n.span.start,o=e.getTokenAtPosition(a,i),s=n.program.getTypeChecker(),c=e.getContainingClass(o);if(c){for(var u=e.getOpenBraceOfClassLike(c,a),l=s.getTypeAtLocation(c),_=e.getClassImplementsHeritageClauseElements(c),d=!!s.getIndexTypeOfType(l,1),p=!!s.getIndexTypeOfType(l,0),f=[],m=0,g=_;m0&&function(e,r,a){var i={description:a,changes:t.newNodesToChanges(r,u,n)};e.push(i);}(f,b,x);}return f}}t.registerCodeFix({errorCodes:[e.Diagnostics.Class_0_incorrectly_implements_interface_1.code],getCodeActions:n});}(e.codefix||(e.codefix={}));}(r||(r={}));!function(e){!function(t){function n(t){var n=t.sourceFile,r=t.span.start,a=e.getTokenAtPosition(n,r);if(71===a.kind&&e.isPropertyAccessExpression(a.parent)&&99===a.parent.expression.kind){var i=e.getThisContainer(a,!1);if(e.isClassElement(i)){var o=i.parent;if(o&&e.isClassLike(o)){var s=e.hasModifier(i,32);return e.isInJavaScriptFile(n)?function(){var r=a.getText();if(s){if(199===o.kind)return;var i=o.name.getText();return[{description:e.formatStringFromArgs(e.getLocaleSpecificMessage(e.Diagnostics.Initialize_static_property_0),[r]),changes:[{fileName:n.fileName,textChanges:[{span:{start:o.getEnd(),length:0},newText:""+t.newLineCharacter+i+"."+r+" = undefined;"+t.newLineCharacter}]}]}]}var c=e.getFirstConstructorWithBody(o);if(c)return[{description:e.formatStringFromArgs(e.getLocaleSpecificMessage(e.Diagnostics.Initialize_property_0_in_the_constructor),[r]),changes:[{fileName:n.fileName,textChanges:[{span:{start:c.body.getEnd()-1,length:0},newText:"this."+r+" = undefined;"+t.newLineCharacter}]}]}]}():function(){var r;if(194===a.parent.parent.kind){var i=a.parent.parent,c=t.program.getTypeChecker(),u=c.getWidenedType(c.getBaseTypeOfLiteralType(c.getTypeAtLocation(i.right)));r=c.typeToTypeNode(u,o);}r=r||e.createKeywordTypeNode(119);var l=e.getOpenBraceOfClassLike(o,n),_=e.createProperty(void 0,s?[e.createToken(115)]:void 0,a.getText(n),void 0,r,void 0),d=e.textChanges.ChangeTracker.fromCodeFixContext(t);d.insertNodeAfter(n,l,_,{suffix:t.newLineCharacter});var p=[{description:e.formatStringFromArgs(e.getLocaleSpecificMessage(e.Diagnostics.Add_declaration_for_missing_property_0),[a.getText()]),changes:d.getChanges()}];if(!s){var f=e.createKeywordTypeNode(136),m=e.createParameter(void 0,void 0,void 0,"x",void 0,f,void 0),g=e.createIndexSignatureDeclaration(void 0,void 0,[m],r),y=e.textChanges.ChangeTracker.fromCodeFixContext(t);y.insertNodeAfter(n,l,g,{suffix:t.newLineCharacter}),p.push({description:e.formatStringFromArgs(e.getLocaleSpecificMessage(e.Diagnostics.Add_index_signature_for_missing_property_0),[a.getText()]),changes:y.getChanges()});}return p}()}}}}t.registerCodeFix({errorCodes:[e.Diagnostics.Property_0_does_not_exist_on_type_1.code],getCodeActions:n});}(e.codefix||(e.codefix={}));}(r||(r={}));!function(e){!function(t){function n(n){var a=n.sourceFile,i=n.span.start,o=e.getTokenAtPosition(a,i),s=n.program.getTypeChecker();if(e.isClassLike(o.parent)){var c=o.parent,u=e.getClassExtendsHeritageClauseElement(c),l=s.getTypeAtLocation(u),_=s.getPropertiesOfType(l).filter(r),d=t.createMissingMemberNodes(c,_,s),p=t.newNodesToChanges(d,e.getOpenBraceOfClassLike(c,a),n);if(p&&p.length>0)return[{description:e.getLocaleSpecificMessage(e.Diagnostics.Implement_inherited_abstract_class),changes:p}]}}function r(t){var n=t.getDeclarations();e.Debug.assert(!!(n&&n.length>0));var r=e.getModifierFlags(n[0]);return!(8&r||!(128&r))}t.registerCodeFix({errorCodes:[e.Diagnostics.Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2.code],getCodeActions:n}),t.registerCodeFix({errorCodes:[e.Diagnostics.Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1.code],getCodeActions:n});}(e.codefix||(e.codefix={}));}(r||(r={}));!function(e){!function(t){t.registerCodeFix({errorCodes:[e.Diagnostics.super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class.code],getCodeActions:function(t){function n(t){if(210===t.kind&&e.isSuperCall(t.expression))return t;if(!e.isFunctionLike(t))return e.forEachChild(t,n)}var r=t.sourceFile,a=e.getTokenAtPosition(r,t.span.start);if(99===a.kind){var i=e.getContainingFunction(a),o=n(i.body);if(o){if(o.expression&&181===o.expression.kind)for(var s=o.expression.arguments,c=0;c0){var s=o[0].getFirstToken();if(s&&85===s.kind){var c=e.textChanges.ChangeTracker.fromCodeFixContext(t);c.replaceNode(n,s,e.createToken(108));for(var u=1;u=0;g--){var y=l.statements[g];if(237===y.kind||238===y.kind){u=y;break}}var h=e.createGetCanonicalFileName(p),v=e.stripQuotes(n||function(){var n=l.fileName,a=r.valueDeclaration.getSourceFile().fileName,i=e.getDirectoryPath(n),s=t.program.getCompilerOptions();return function(){if(265!==r.valueDeclaration.kind)return r.name}()||function(){var n=e.getEffectiveTypeRoots(s,t.host);if(n)for(var r=0,i=e.map(n,function(t){return e.toPath(t,void 0,h)});r=l.length+p.length&&e.startsWith(t,l)&&e.endsWith(t,p)){var f=t.substr(l.length,t.length-p.length);return r.replace("*",f)}}else if(c===t||c===n)return r}return t}}}()||function(){if(s.rootDirs){var t=o(a,s.rootDirs),n=o(i,s.rootDirs);if(void 0!==t){var r=void 0!==n?f(t,n):t;return e.removeFileExtension(r)}}}()||e.removeFileExtension(f(a,i))}()),b=s(),x=a?e.createImportClause(e.createIdentifier(m),void 0):i?e.createImportClause(void 0,e.createNamespaceImport(e.createIdentifier(m))):e.createImportClause(void 0,e.createNamedImports([e.createImportSpecifier(void 0,e.createIdentifier(m))])),k=e.createImportDeclaration(void 0,void 0,x,e.createLiteral(v));return u?b.insertNodeAfter(l,u,k,{suffix:t.newLineCharacter}):b.insertNodeAt(l,l.getStart(),k,{suffix:""+t.newLineCharacter+t.newLineCharacter}),c(e.Diagnostics.Import_0_from_1,[m,'"'+v+'"'],b.getChanges(),"NewImport",v)}var _=n(r);return _.length>0?function(t){for(var n,r,a,u=[],_=0,d=t;_=o)return{span:{start:o,length:0},newText:"// @ts-ignore"+r}}return{span:{start:n,length:0},newText:(n===o?"":r)+"// @ts-ignore"+r}}function r(t){var r=t.sourceFile,a=t.program,i=t.newLineCharacter,o=t.span;if(e.isInJavaScriptFile(r)&&e.isCheckJsEnabledForFile(r,a.getCompilerOptions()))return[{description:e.getLocaleSpecificMessage(e.Diagnostics.Ignore_this_error_message),changes:[{fileName:r.fileName,textChanges:[n(r,o.start,i)]}]},{description:e.getLocaleSpecificMessage(e.Diagnostics.Disable_checking_for_this_file),changes:[{fileName:r.fileName,textChanges:[{span:{start:r.checkJsDirective?r.checkJsDirective.pos:0,length:r.checkJsDirective?r.checkJsDirective.end-r.checkJsDirective.pos:0},newText:"// @ts-nocheck"+i}]}]}]}t.registerCodeFix({errorCodes:function(){var t=e.Diagnostics;return Object.keys(t).filter(function(n){return t[n]&&t[n].category===e.DiagnosticCategory.Error}).map(function(e){return t[e].code})}(),getCodeActions:r});}(e.codefix||(e.codefix={}));}(r||(r={}));!function(e){!function(t){function n(t,n,r){for(var a=r.sourceFile,i=e.textChanges.ChangeTracker.fromCodeFixContext(r),o=0,s=t;og.length){var v=r.getSignatureFromDeclaration(o[o.length-1]),b=a(v,n,s());b&&y.push(b);}else{e.Debug.assert(o.length===g.length);var x=i(g,l,f,d);y.push(x);}return y;default:return}}}function i(t,n,r,a){for(var i=t[0],s=t[0].minArgumentCount,c=!1,u=0;u=i.parameters.length&&(!l.hasRestParameter||i.hasRestParameter)&&(i=l);}for(var _=i.parameters.length-(i.hasRestParameter?1:0),d=i.parameters.map(function(e){return e.getName()}),p=[],u=0;u<_;u++){var f=e.createKeywordTypeNode(119),m=e.createParameter(void 0,void 0,void 0,d[u],u>=s?e.createToken(55):void 0,f,void 0);p.push(m);}if(c){var g=e.createArrayTypeNode(e.createKeywordTypeNode(119)),y=e.createParameter(void 0,void 0,e.createToken(24),d[_]||"rest",_>=s?e.createToken(55):void 0,g,void 0);p.push(y);}return o(a,n,r,void 0,p,void 0)}function o(t,n,r,a,i,o){return e.createMethodDeclaration(void 0,t,void 0,n,r?e.createToken(55):void 0,a,i,o,s())}function s(){return e.createBlock([e.createThrow(e.createNew(e.createIdentifier("Error"),void 0,[e.createLiteral("Method not implemented.")]))],!0)}function c(t){return 4&t?e.createToken(114):16&t?e.createToken(113):void 0}t.newNodesToChanges=n,t.createMissingMemberNodes=r,t.createStubbedMethod=o;}(e.codefix||(e.codefix={}));}(r||(r={}));!function(e){function t(e,t,n,r){var a=e>=143?new v(e,t,n):71===e?new S(71,t,n):new k(e,t,n);return a.parent=r,a}function r(t){var n=!0;for(var r in t)if(e.hasProperty(t,r)&&!a(r)){n=!1;break}if(n)return t;var i={};for(var r in t)e.hasProperty(t,r)&&(i[a(r)?r:r.charAt(0).toLowerCase()+r.substr(1)]=t[r]);return i}function a(e){return!e.length||e.charAt(0)===e.charAt(0).toLowerCase()}function i(t){return t?e.map(t,function(e){return e.text}).join(""):""}function o(){return{target:1,jsx:1}}function s(){return e.codefix.getSupportedErrorCodes()}function c(e,t,n){e.version=n,e.scriptSnapshot=t;}function u(t,n,r,a,i,o){var s=n.getText(0,n.getLength()),u=e.createSourceFile(t,s,r,i,o);return c(u,n,a),u}function l(t,n,r,a,i){if(a&&r!==t.version&&!e.disableIncrementalParsing){var o=void 0,s=0!==a.span.start?t.text.substr(0,a.span.start):"",l=e.textSpanEnd(a.span)!==t.text.length?t.text.substr(e.textSpanEnd(a.span)):"";if(0===a.newLength)o=s&&l?s+l:s||l;else{var _=n.getText(a.span.start,a.span.start+a.newLength);o=s&&l?s+_+l:s?s+_:_+l;}var d=e.updateSourceFile(t,o,a,i);return c(d,n,r),d.nameTable=void 0,t!==d&&t.scriptSnapshot&&(t.scriptSnapshot.dispose&&t.scriptSnapshot.dispose(),t.scriptSnapshot=void 0),d}return u(t.fileName,n,t.languageVersion,r,!0,t.scriptKind)}function _(t,n){function a(e){t.log&&t.log(e);}function i(e){var t=re.getSourceFile(e);if(!t)throw new Error("Could not find file: '"+e+"'.");return t}function o(t){return ne||(ne=new e.formatting.RulesProvider),ne.ensureUpToDate(t),ne}function s(){function r(t){return i(t,e.toPath(t,ue,le))}function i(t,r){e.Debug.assert(void 0!==u);var a=u.getOrCreateEntryByPath(t,r);if(a){if(!d){var i=re&&re.getSourceFileByPath(r);if(i)return e.Debug.assert(a.scriptKind===i.scriptKind,"Registered script kind ("+i.scriptKind+") should match new script kind ("+a.scriptKind+") for file: "+r),n.updateDocumentWithKey(t,r,_,f,a.scriptSnapshot,a.version,a.scriptKind)}return n.acquireDocumentWithKey(t,r,_,f,a.scriptSnapshot,a.version,a.scriptKind)}}function o(t){if(!t)return!1;var n=t.path||e.toPath(t.fileName,ue,le);return t.version===u.getVersion(n)}if(t.getProjectVersion){var s=t.getProjectVersion();if(s){if(ae===s)return;ae=s;}}var c=t.getTypeRootsVersion?t.getTypeRootsVersion():0;oe!==c&&(a("TypeRoots version has changed; provide new program"),re=void 0,oe=c);var u=new D(t,le);if(!function(){if(!re)return!1;var t=u.getRootFileNames();if(re.getSourceFiles().length!==t.length)return!1;for(var n=0,r=t;n0)for(var u=function(){var t=/(?:\/\/+\s*)/.source,a=/(?:\/\*+\s*)/.source,i="("+/(?:^(?:\s|\*)*)/.source+"|"+t+"|"+a+")",o="(?:"+e.map(n,function(e){return"("+r(e.text)+")"}).join("|")+")",s=/(?:$|\*\/)/.source,c=i+("("+o+/(?:.*?)/.source+")")+s;return new RegExp(c,"gim")}(),l=void 0;l=u.exec(o);){ce.throwIfCancellationRequested();e.Debug.assert(l.length===n.length+3);var _=l[1],d=l.index+_.length,p=e.getTokenAtPosition(a,d);if(e.isInsideComment(a,p,d)){for(var f=void 0,m=0;m=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57}(o.charCodeAt(d+f.text.length))){var g=l[2];c.push({descriptor:f,message:g,position:d});}}}return c}function te(n,r){s();var a=t.getDefaultLibFileName(t.getCompilationSettings());return e.Rename.getRenameInfo(re.getTypeChecker(),a,le,i(n),r)}void 0===n&&(n=e.createDocumentRegistry(t.useCaseSensitiveFileNames&&t.useCaseSensitiveFileNames(),t.getCurrentDirectory()));var ne,re,ae,ie=new N(t),oe=0,se=t.useCaseSensitiveFileNames&&t.useCaseSensitiveFileNames(),ce=new A(t.getCancellationToken&&t.getCancellationToken()),ue=t.getCurrentDirectory();!e.localizedDiagnosticMessages&&t.getLocalizedDiagnosticMessages&&(e.localizedDiagnosticMessages=t.getLocalizedDiagnosticMessages());var le=e.createGetCanonicalFileName(se);return{dispose:l,cleanupSemanticCache:u,getSyntacticDiagnostics:_,getSemanticDiagnostics:d,getCompilerOptionsDiagnostics:p,getSyntacticClassifications:U,getSemanticClassifications:J,getEncodedSyntacticClassifications:V,getEncodedSemanticClassifications:z,getCompletionsAtPosition:f,getCompletionEntryDetails:m,getCompletionEntrySymbol:g,getSignatureHelpItems:F,getQuickInfoAtPosition:y,getDefinitionAtPosition:h,getImplementationAtPosition:b,getTypeDefinitionAtPosition:v,getReferencesAtPosition:C,findReferences:w,getOccurrencesAtPosition:x,getDocumentHighlights:k,getNameOrDottedNameSpan:M,getBreakpointStatementAtPosition:L,getNavigateToItems:P,getRenameInfo:te,findRenameLocations:T,getNavigationBarItems:B,getNavigationTree:K,getOutliningSpans:q,getTodoComments:ee,getBraceMatchingAtPosition:$,getIndentationAtPosition:G,getFormattingEditsForRange:W,getFormattingEditsForDocument:H,getFormattingEditsAfterKeystroke:X,getDocCommentTemplateAtPosition:Q,isValidBraceCompletionAtPosition:Z,getCodeFixesAtPosition:Y,getEmitOutput:O,getNonBoundSourceFile:I,getSourceFile:R,getProgram:c}}function d(e){return e.nameTable||p(e),e.nameTable}function p(t){function n(t){switch(t.kind){case 71:r(t.text,t);break;case 9:case 8:(e.isDeclarationName(t)||248===t.parent.kind||y(t)||e.isLiteralComputedPropertyDeclarationName(t))&&r(t.text,t);break;default:if(e.forEachChild(t,n),t.jsDoc)for(var a=0,i=t.jsDoc;a=143){e.scanner.setText((t||this.getSourceFile()).text),n=[];var a=this.pos,i=this.kind>=283&&this.kind<=293,o=function(t){var o=e.isJSDocTag(t);!o&&a293});return r.kind<143?r:r.getFirstToken(t)}},n.prototype.getLastToken=function(t){var n=this.getChildren(t),r=e.lastOrUndefined(n);if(r)return r.kind<143?r:r.getLastToken(t)},n.prototype.forEachChild=function(t,n){return e.forEachChild(this,t,n)},n}(),b=function(){function t(e,t){this.pos=e,this.end=t,this.flags=0,this.parent=void 0;}return t.prototype.getSourceFile=function(){return e.getSourceFileOfNode(this)},t.prototype.getStart=function(t,n){return e.getTokenPosOfNode(this,t,n)},t.prototype.getFullStart=function(){return this.pos},t.prototype.getEnd=function(){return this.end},t.prototype.getWidth=function(e){return this.getEnd()-this.getStart(e)},t.prototype.getFullWidth=function(){return this.end-this.pos},t.prototype.getLeadingTriviaWidth=function(e){return this.getStart(e)-this.pos},t.prototype.getFullText=function(e){return(e||this.getSourceFile()).text.substring(this.pos,this.end)},t.prototype.getText=function(e){return(e||this.getSourceFile()).text.substring(this.getStart(),this.getEnd())},t.prototype.getChildCount=function(){return 0},t.prototype.getChildAt=function(){},t.prototype.getChildren=function(){return e.emptyArray},t.prototype.getFirstToken=function(){},t.prototype.getLastToken=function(){},t.prototype.forEachChild=function(){},t}(),x=function(){function t(e,t){this.flags=e,this.name=t;}return t.prototype.getFlags=function(){return this.flags},t.prototype.getName=function(){return this.name},t.prototype.getDeclarations=function(){return this.declarations},t.prototype.getDocumentationComment=function(){return void 0===this.documentationComment&&(this.documentationComment=e.JsDoc.getJsDocCommentsFromDeclarations(this.declarations)),this.documentationComment},t.prototype.getJsDocTags=function(){return void 0===this.tags&&(this.tags=e.JsDoc.getJsDocTagsFromDeclarations(this.declarations)),this.tags},t}(),k=function(e){function t(t,n,r){var a=e.call(this,n,r)||this;return a.kind=t,a}return n(t,e),t}(b),S=function(e){function t(t,n,r){return e.call(this,n,r)||this}return n(t,e),t}(b);S.prototype.kind=71;var T=function(){function e(e,t){this.checker=e,this.flags=t;}return e.prototype.getFlags=function(){return this.flags},e.prototype.getSymbol=function(){return this.symbol},e.prototype.getProperties=function(){return this.checker.getPropertiesOfType(this)},e.prototype.getProperty=function(e){return this.checker.getPropertyOfType(this,e)},e.prototype.getApparentProperties=function(){return this.checker.getAugmentedPropertiesOfType(this)},e.prototype.getCallSignatures=function(){return this.checker.getSignaturesOfType(this,0)},e.prototype.getConstructSignatures=function(){return this.checker.getSignaturesOfType(this,1)},e.prototype.getStringIndexType=function(){return this.checker.getIndexTypeOfType(this,0)},e.prototype.getNumberIndexType=function(){return this.checker.getIndexTypeOfType(this,1)},e.prototype.getBaseTypes=function(){return 32768&this.flags&&3&this.objectFlags?this.checker.getBaseTypes(this):void 0},e.prototype.getNonNullableType=function(){return this.checker.getNonNullableType(this)},e}(),C=function(){function t(e){this.checker=e;}return t.prototype.getDeclaration=function(){return this.declaration},t.prototype.getTypeParameters=function(){return this.typeParameters},t.prototype.getParameters=function(){return this.parameters},t.prototype.getReturnType=function(){return this.checker.getReturnTypeOfSignature(this)},t.prototype.getDocumentationComment=function(){return void 0===this.documentationComment&&(this.documentationComment=this.declaration?e.JsDoc.getJsDocCommentsFromDeclarations([this.declaration]):[]),this.documentationComment},t.prototype.getJsDocTags=function(){return void 0===this.jsDocTags&&(this.jsDocTags=this.declaration?e.JsDoc.getJsDocTagsFromDeclarations([this.declaration]):[]),this.jsDocTags},t}(),E=function(t){function r(e,n,r){return t.call(this,e,n,r)||this}return n(r,t),r.prototype.update=function(t,n){return e.updateSourceFile(this,t,n)},r.prototype.getLineAndCharacterOfPosition=function(t){return e.getLineAndCharacterOfPosition(this,t)},r.prototype.getLineStarts=function(){return e.getLineStarts(this)},r.prototype.getPositionOfLineAndCharacter=function(t,n){return e.getPositionOfLineAndCharacter(this,t,n)},r.prototype.getLineEndOfPosition=function(e){var t,n=this.getLineAndCharacterOfPosition(e).line,r=this.getLineStarts();n+1>=r.length&&(t=this.getEnd()),t||(t=r[n+1]-1);var a=this.getFullText();return"\n"===a[t]&&"\r"===a[t-1]?t-1:t},r.prototype.getNamedDeclarations=function(){return this.namedDeclarations||(this.namedDeclarations=this.computeNamedDeclarations()),this.namedDeclarations},r.prototype.computeNamedDeclarations=function(){function t(e){var t=r(e);t&&o.add(t,e);}function n(e){var t=o.get(e);return t||o.set(e,t=[]),t}function r(e){if(e.name){var t=a(e.name);if(void 0!==t)return t;if(144===e.name.kind){var n=e.name.expression;return 179===n.kind?n.name.text:a(n)}}}function a(e){if(e&&(71===e.kind||9===e.kind||8===e.kind))return e.text}function i(a){switch(a.kind){case 228:case 186:case 151:case 150:var o=a,s=r(o);if(s){var c=n(s),u=e.lastOrUndefined(c);u&&o.parent===u.parent&&o.symbol===u.symbol?o.body&&!u.body&&(c[c.length-1]=o):c.push(o);}e.forEachChild(a,i);break;case 229:case 199:case 230:case 231:case 232:case 233:case 237:case 246:case 242:case 237:case 239:case 240:case 153:case 154:case 163:t(a),e.forEachChild(a,i);break;case 146:if(!e.hasModifier(a,92))break;case 226:case 176:var l=a;if(e.isBindingPattern(l.name)){e.forEachChild(l.name,i);break}l.initializer&&i(l.initializer);case 264:case 149:case 148:t(a);break;case 244:a.exportClause&&e.forEach(a.exportClause.elements,i);break;case 238:var _=a.importClause;_&&(_.name&&t(_),_.namedBindings&&(240===_.namedBindings.kind?t(_.namedBindings):e.forEach(_.namedBindings.elements,i)));break;default:e.forEachChild(a,i);}}var o=e.createMultiMap();return e.forEachChild(this,i),o},r}(v);e.toEditorSettings=r,e.displayPartsToString=i,e.getDefaultCompilerOptions=o,e.getSupportedCodeFixes=s;var D=function(){function t(t,n){this.host=t,this.getCanonicalFileName=n,this.currentDirectory=t.getCurrentDirectory(),this.fileNameToEntry=e.createFileMap();for(var r=0,a=t.getScriptFileNames();r=this.throttleWaitMilliseconds&&(this.lastCancellationCheckTime=t,this.hostCancellationToken.isCancellationRequested())},t.prototype.throwIfCancellationRequested=function(){if(this.isCancellationRequested())throw new e.OperationCanceledException},t}();e.ThrottledCancellationToken=w,e.createLanguageService=_,e.getNameTable=d,e.getContainingObjectLiteralElement=m,e.getPropertySymbolsFromContextualType=g,e.getDefaultLibFilePath=h,e.objectAllocator=function(){return{getNodeConstructor:function(){return v},getTokenConstructor:function(){return k},getIdentifierConstructor:function(){return S},getSourceFileConstructor:function(){return E},getSymbolConstructor:function(){return x},getTypeConstructor:function(){return T},getSignatureConstructor:function(){return C}}}();}(r||(r={}));!function(e){!function(t){function n(t,n){function r(n,r){var a=n.decorators?e.skipTrivia(t.text,n.decorators.end):n.getStart(t);return e.createTextSpanFromBounds(a,(r||n).getEnd())}function a(t,n){return r(t,e.findNextToken(n,n.parent))}function i(e,n){return u(e&&_===t.getLineAndCharacterOfPosition(e.getStart(t)).line?e:n)}function o(n){return e.createTextSpanFromBounds(e.skipTrivia(t.text,n.pos),n.end)}function s(n){return u(e.findPrecedingToken(n.pos,t))}function c(t){return u(e.findNextToken(t,t.parent))}function u(n){function l(n){return 227===n.parent.kind&&n.parent.declarations[0]===n?r(e.findPrecedingToken(n.pos,t,n.parent),n):r(n)}function _(n){return 215===n.parent.parent.kind?u(n.parent.parent):e.isBindingPattern(n.name)?y(n.name):n.initializer||e.hasModifier(n,1)||216===n.parent.parent.kind?l(n):227===n.parent.kind&&n.parent.declarations[0]!==n?u(e.findPrecedingToken(n.pos,t,n.parent)):void 0}function d(t){return!!t.initializer||void 0!==t.dotDotDotToken||e.hasModifier(t,12)}function p(t){if(e.isBindingPattern(t.name))return y(t.name);if(d(t))return r(t);var n=t.parent,a=e.indexOf(n.parameters,t);return a?p(n.parameters[a-1]):u(n.body)}function f(t){return e.hasModifier(t,1)||229===t.parent.kind&&152!==t.kind}function m(n){switch(n.parent.kind){case 233:if(1!==e.getModuleInstanceState(n.parent))return;case 213:case 211:case 215:return i(n.parent,n.statements[0]);case 214:case 216:return i(e.findPrecedingToken(n.pos,t,n.parent),n.statements[0])}return u(n.statements[0])}function g(e){if(227!==e.initializer.kind)return u(e.initializer);var t=e.initializer;return t.declarations.length>0?u(t.declarations[0]):void 0}function y(t){var n=e.forEach(t.elements,function(e){return 200!==e.kind?e:void 0});return n?u(n):176===t.parent.kind?r(t.parent):l(t.parent)}function h(t){e.Debug.assert(175!==t.kind&&174!==t.kind);var n=177===t.kind?t.elements:t.properties,a=e.forEach(n,function(e){return 200!==e.kind?e:void 0});return a?u(a):r(194===t.parent.kind?t.parent:t)}if(n)switch(n.kind){case 208:return _(n.declarationList.declarations[0]);case 226:case 149:case 148:return _(n);case 146:return p(n);case 228:case 151:case 150:case 153:case 154:case 152:case 186:case 187:return function(e){if(e.body)return f(e)?r(e):u(e.body)}(n);case 207:if(e.isFunctionBlock(n))return function(e){var t=e.statements.length?e.statements[0]:e.getLastToken();return f(e.parent)?i(e.parent,t):u(t)}(n);case 234:return m(n);case 260:return m(n.block);case 210:return r(n.expression);case 219:return r(n.getChildAt(0),n.expression);case 213:return a(n,n.expression);case 212:return u(n.statement);case 225:return r(n.getChildAt(0));case 211:return a(n,n.expression);case 222:return u(n.statement);case 218:case 217:return r(n.getChildAt(0),n.label);case 214:return function(e){return e.initializer?g(e):e.condition?r(e.condition):e.incrementor?r(e.incrementor):void 0}(n);case 215:return a(n,n.expression);case 216:return g(n);case 221:return a(n,n.expression);case 257:case 258:return u(n.statements[0]);case 224:return m(n.tryBlock);case 223:case 243:return r(n,n.expression);case 237:return r(n,n.moduleReference);case 238:case 244:return r(n,n.moduleSpecifier);case 233:if(1!==e.getModuleInstanceState(n))return;case 229:case 232:case 264:case 176:return r(n);case 220:return u(n.statement);case 147:return o(n.parent.decorators);case 174:case 175:return y(n);case 230:case 231:return;case 25:case 1:return i(e.findPrecedingToken(n.pos,t));case 26:return s(n);case 17:return function(n){switch(n.parent.kind){case 232:var r=n.parent;return i(e.findPrecedingToken(n.pos,t,n.parent),r.members.length?r.members[0]:r.getLastToken(t));case 229:var a=n.parent;return i(e.findPrecedingToken(n.pos,t,n.parent),a.members.length?a.members[0]:a.getLastToken(t));case 235:return i(n.parent.parent,n.parent.clauses[0])}return u(n.parent)}(n);case 18:return function(t){switch(t.parent.kind){case 234:if(1!==e.getModuleInstanceState(t.parent.parent))return;case 232:case 229:return r(t);case 207:if(e.isFunctionBlock(t.parent))return r(t);case 260:return u(e.lastOrUndefined(t.parent.statements));case 235:var n=t.parent,a=e.lastOrUndefined(n.clauses);if(a)return u(e.lastOrUndefined(a.statements));return;case 174:var i=t.parent;return u(e.lastOrUndefined(i.elements)||i);default:if(e.isArrayLiteralOrObjectLiteralDestructuringPattern(t.parent)){var o=t.parent;return r(e.lastOrUndefined(o.properties)||o)}return u(t.parent)}}(n);case 22:return function(t){switch(t.parent.kind){case 175:var n=t.parent;return r(e.lastOrUndefined(n.elements)||n);default:if(e.isArrayLiteralOrObjectLiteralDestructuringPattern(t.parent)){var a=t.parent;return r(e.lastOrUndefined(a.elements)||a)}return u(t.parent)}}(n);case 19:return function(e){return 212===e.parent.kind||181===e.parent.kind||182===e.parent.kind?s(e):185===e.parent.kind?c(e):u(e.parent)}(n);case 20:return function(e){switch(e.parent.kind){case 186:case 228:case 187:case 151:case 150:case 153:case 154:case 152:case 213:case 212:case 214:case 216:case 181:case 182:case 185:return s(e);default:return u(e.parent)}}(n);case 56:return function(t){return e.isFunctionLike(t.parent)||261===t.parent.kind||146===t.parent.kind?s(t):u(t.parent)}(n);case 29:case 27:return function(e){return 184===e.parent.kind?c(e):u(e.parent)}(n);case 106:return function(e){return 212===e.parent.kind?a(e,e.parent.expression):u(e.parent)}(n);case 82:case 74:case 87:return c(n);case 142:return function(e){return 216===e.parent.kind?c(e):u(e.parent)}(n);default:if(e.isArrayLiteralOrObjectLiteralDestructuringPattern(n))return h(n);if((71===n.kind||198===n.kind||261===n.kind||262===n.kind)&&e.isArrayLiteralOrObjectLiteralDestructuringPattern(n.parent))return r(n);if(194===n.kind){b=n;if(e.isArrayLiteralOrObjectLiteralDestructuringPattern(b.left))return h(b.left);if(58===b.operatorToken.kind&&e.isArrayLiteralOrObjectLiteralDestructuringPattern(b.parent))return r(n);if(26===b.operatorToken.kind)return u(b.left)}if(e.isPartOfExpression(n))switch(n.parent.kind){case 212:return s(n);case 147:return u(n.parent);case 214:case 216:return r(n);case 194:if(26===n.parent.operatorToken.kind)return r(n);break;case 187:if(n.parent.body===n)return r(n)}if(261===n.parent.kind&&n.parent.name===n&&!e.isArrayLiteralOrObjectLiteralDestructuringPattern(n.parent.parent))return u(n.parent.initializer);if(184===n.parent.kind&&n.parent.type===n)return c(n.parent.type);if(e.isFunctionLike(n.parent)&&n.parent.type===n)return s(n);if(226===n.parent.kind||146===n.parent.kind){var v=n.parent;if(v.initializer===n||v.type===n||e.isAssignmentOperator(n.kind))return s(n)}if(194===n.parent.kind){var b=n.parent;if(e.isArrayLiteralOrObjectLiteralDestructuringPattern(b.left)&&(b.right===n||b.operatorToken===n))return s(n)}return u(n.parent)}}if(!t.isDeclarationFile){var l=e.getTokenAtPosition(t,n),_=t.getLineAndCharacterOfPosition(n).line;if((!(t.getLineAndCharacterOfPosition(l.getStart(t)).line>_)||(l=e.findPrecedingToken(l.pos,t))&&t.getLineAndCharacterOfPosition(l.getEnd()).line===_)&&!e.isInAmbientContext(l))return u(l)}}t.spanInSourceFileAtLocation=n;}(e.BreakpointResolver||(e.BreakpointResolver={}));}(r||(r={}));!function(e){function t(t,n,r){var a=[];r=e.fixupCompilerOptions(r,a);var i=e.isArray(t)?t:[t],o=e.transformNodes(void 0,void 0,r,i,n,!0);return o.diagnostics=e.concatenate(o.diagnostics,a),o}e.transform=t;}(r||(r={}));var r,a=function(){return this}();!function(t){function r(e,t){e&&e.log("*INTERNAL ERROR* - Exception in typescript services: "+t.message);}function i(e,n,r,a){var i;a&&(e.log(n),i=t.timestamp());var o=r();if(a){var s=t.timestamp();if(e.log(n+" completed in "+(s-i)+" msec"),"string"==typeof o){var c=o;c.length>128&&(c=c.substring(0,128)+"..."),e.log(" result.length="+c.length+", result='"+JSON.stringify(c)+"'");}}return o}function o(e,t,n,r){return s(e,t,!0,n,r)}function s(e,n,a,o,s){try{var c=i(e,n,o,s);return a?JSON.stringify({result:c}):c}catch(a){return a instanceof t.OperationCanceledException?JSON.stringify({canceled:!0}):(r(e,a),a.description=n,JSON.stringify({error:a}))}}function c(e,t){return e.map(function(e){return u(e,t)})}function u(e,n){return{message:t.flattenDiagnosticMessageText(e.messageText,n),start:e.start,length:e.length,category:t.DiagnosticCategory[e.category].toLowerCase(),code:e.code}}function l(e){return{spans:e.spans.join(","),endOfLineState:e.endOfLineState}}var _=function(){function e(e){this.scriptSnapshotShim=e;}return e.prototype.getText=function(e,t){return this.scriptSnapshotShim.getText(e,t)},e.prototype.getLength=function(){return this.scriptSnapshotShim.getLength()},e.prototype.getChangeRange=function(e){var n=e,r=this.scriptSnapshotShim.getChangeRange(n.scriptSnapshotShim);if(null===r)return null;var a=JSON.parse(r);return t.createTextChangeRange(t.createTextSpan(a.span.start,a.span.length),a.newLength)},e.prototype.dispose=function(){"dispose"in this.scriptSnapshotShim&&this.scriptSnapshotShim.dispose();},e}(),d=function(){function e(e){var n=this;this.shimHost=e,this.loggingEnabled=!1,this.tracingEnabled=!1,"getModuleResolutionsForFile"in this.shimHost&&(this.resolveModuleNames=function(e,r){var a=JSON.parse(n.shimHost.getModuleResolutionsForFile(r));return t.map(e,function(e){var n=t.getProperty(a,e);return n?{resolvedFileName:n,extension:t.extensionFromPath(n),isExternalLibraryImport:!1}:void 0})}),"directoryExists"in this.shimHost&&(this.directoryExists=function(e){return n.shimHost.directoryExists(e)}),"getTypeReferenceDirectiveResolutionsForFile"in this.shimHost&&(this.resolveTypeReferenceDirectives=function(e,r){var a=JSON.parse(n.shimHost.getTypeReferenceDirectiveResolutionsForFile(r));return t.map(e,function(e){return t.getProperty(a,e)})});}return e.prototype.log=function(e){this.loggingEnabled&&this.shimHost.log(e);},e.prototype.trace=function(e){this.tracingEnabled&&this.shimHost.trace(e);},e.prototype.error=function(e){this.shimHost.error(e);},e.prototype.getProjectVersion=function(){if(this.shimHost.getProjectVersion)return this.shimHost.getProjectVersion()},e.prototype.getTypeRootsVersion=function(){return this.shimHost.getTypeRootsVersion?this.shimHost.getTypeRootsVersion():0},e.prototype.useCaseSensitiveFileNames=function(){return!!this.shimHost.useCaseSensitiveFileNames&&this.shimHost.useCaseSensitiveFileNames()},e.prototype.getCompilationSettings=function(){var e=this.shimHost.getCompilationSettings();if(null===e||""===e)throw Error("LanguageServiceShimHostAdapter.getCompilationSettings: empty compilationSettings");var t=JSON.parse(e);return t.allowNonTsExtensions=!0,t},e.prototype.getScriptFileNames=function(){var e=this.shimHost.getScriptFileNames();return this.files=JSON.parse(e)},e.prototype.getScriptSnapshot=function(e){var t=this.shimHost.getScriptSnapshot(e);return t&&new _(t)},e.prototype.getScriptKind=function(e){return"getScriptKind"in this.shimHost?this.shimHost.getScriptKind(e):0},e.prototype.getScriptVersion=function(e){return this.shimHost.getScriptVersion(e)},e.prototype.getLocalizedDiagnosticMessages=function(){var e=this.shimHost.getLocalizedDiagnosticMessages();if(null===e||""===e)return null;try{return JSON.parse(e)}catch(e){return this.log(e.description||"diagnosticMessages.generated.json has invalid JSON format"),null}},e.prototype.getCancellationToken=function(){var e=this.shimHost.getCancellationToken();return new t.ThrottledCancellationToken(e)},e.prototype.getCurrentDirectory=function(){return this.shimHost.getCurrentDirectory()},e.prototype.getDirectories=function(e){return JSON.parse(this.shimHost.getDirectories(e))},e.prototype.getDefaultLibFileName=function(e){return this.shimHost.getDefaultLibFileName(JSON.stringify(e))},e.prototype.readDirectory=function(e,n,r,a,i){var o=t.getFileMatcherPatterns(e,r,a,this.shimHost.useCaseSensitiveFileNames(),this.shimHost.getCurrentDirectory());return JSON.parse(this.shimHost.readDirectory(e,JSON.stringify(n),JSON.stringify(o.basePaths),o.excludePattern,o.includeFilePattern,o.includeDirectoryPattern,i))},e.prototype.readFile=function(e,t){return this.shimHost.readFile(e,t)},e.prototype.fileExists=function(e){return this.shimHost.fileExists(e)},e}();t.LanguageServiceShimHostAdapter=d;var p=function(){function e(e){var t=this;this.shimHost=e,this.useCaseSensitiveFileNames=!!this.shimHost.useCaseSensitiveFileNames&&this.shimHost.useCaseSensitiveFileNames(),"directoryExists"in this.shimHost&&(this.directoryExists=function(e){return t.shimHost.directoryExists(e)}),"realpath"in this.shimHost&&(this.realpath=function(e){return t.shimHost.realpath(e)});}return e.prototype.readDirectory=function(e,n,r,a,i){try{var o=t.getFileMatcherPatterns(e,r,a,this.shimHost.useCaseSensitiveFileNames(),this.shimHost.getCurrentDirectory());return JSON.parse(this.shimHost.readDirectory(e,JSON.stringify(n),JSON.stringify(o.basePaths),o.excludePattern,o.includeFilePattern,o.includeDirectoryPattern,i))}catch(a){for(var s=[],c=0,u=n;c",""":'"',"'":"'","`":"`"},freeGlobal="object"==typeof commonjsGlobal$$1&&commonjsGlobal$$1&&commonjsGlobal$$1.Object===Object&&commonjsGlobal$$1,freeSelf="object"==typeof self&&self&&self.Object===Object&&self,root=freeGlobal||freeSelf||Function("return this")(),unescapeHtmlChar=basePropertyOf(htmlUnescapes),objectProto=Object.prototype,objectToString=objectProto.toString,Symbol=root.Symbol,symbolProto=Symbol?Symbol.prototype:void 0,symbolToString=symbolProto?symbolProto.toString:void 0,index=unescape$1;const ts$1=typescript,unescape=index,SyntaxKind$1=ts$1.SyntaxKind,ASSIGNMENT_OPERATORS=[SyntaxKind$1.EqualsToken,SyntaxKind$1.PlusEqualsToken,SyntaxKind$1.MinusEqualsToken,SyntaxKind$1.AsteriskEqualsToken,SyntaxKind$1.SlashEqualsToken,SyntaxKind$1.PercentEqualsToken,SyntaxKind$1.LessThanLessThanEqualsToken,SyntaxKind$1.GreaterThanGreaterThanEqualsToken,SyntaxKind$1.GreaterThanGreaterThanGreaterThanEqualsToken,SyntaxKind$1.AmpersandEqualsToken,SyntaxKind$1.BarEqualsToken,SyntaxKind$1.CaretEqualsToken],LOGICAL_OPERATORS=[SyntaxKind$1.BarBarToken,SyntaxKind$1.AmpersandAmpersandToken],TOKEN_TO_TEXT={};TOKEN_TO_TEXT[SyntaxKind$1.OpenBraceToken]="{",TOKEN_TO_TEXT[SyntaxKind$1.CloseBraceToken]="}",TOKEN_TO_TEXT[SyntaxKind$1.OpenParenToken]="(",TOKEN_TO_TEXT[SyntaxKind$1.CloseParenToken]=")",TOKEN_TO_TEXT[SyntaxKind$1.OpenBracketToken]="[",TOKEN_TO_TEXT[SyntaxKind$1.CloseBracketToken]="]",TOKEN_TO_TEXT[SyntaxKind$1.DotToken]=".",TOKEN_TO_TEXT[SyntaxKind$1.DotDotDotToken]="...",TOKEN_TO_TEXT[SyntaxKind$1.SemicolonToken]=";",TOKEN_TO_TEXT[SyntaxKind$1.CommaToken]=",",TOKEN_TO_TEXT[SyntaxKind$1.LessThanToken]="<",TOKEN_TO_TEXT[SyntaxKind$1.GreaterThanToken]=">",TOKEN_TO_TEXT[SyntaxKind$1.LessThanEqualsToken]="<=",TOKEN_TO_TEXT[SyntaxKind$1.GreaterThanEqualsToken]=">=",TOKEN_TO_TEXT[SyntaxKind$1.EqualsEqualsToken]="==",TOKEN_TO_TEXT[SyntaxKind$1.ExclamationEqualsToken]="!=",TOKEN_TO_TEXT[SyntaxKind$1.EqualsEqualsEqualsToken]="===",TOKEN_TO_TEXT[SyntaxKind$1.InstanceOfKeyword]="instanceof",TOKEN_TO_TEXT[SyntaxKind$1.ExclamationEqualsEqualsToken]="!==",TOKEN_TO_TEXT[SyntaxKind$1.EqualsGreaterThanToken]="=>",TOKEN_TO_TEXT[SyntaxKind$1.PlusToken]="+",TOKEN_TO_TEXT[SyntaxKind$1.MinusToken]="-",TOKEN_TO_TEXT[SyntaxKind$1.AsteriskToken]="*",TOKEN_TO_TEXT[SyntaxKind$1.AsteriskAsteriskToken]="**",TOKEN_TO_TEXT[SyntaxKind$1.SlashToken]="/",TOKEN_TO_TEXT[SyntaxKind$1.PercentToken]="%",TOKEN_TO_TEXT[SyntaxKind$1.PlusPlusToken]="++",TOKEN_TO_TEXT[SyntaxKind$1.MinusMinusToken]="--",TOKEN_TO_TEXT[SyntaxKind$1.LessThanLessThanToken]="<<",TOKEN_TO_TEXT[SyntaxKind$1.LessThanSlashToken]=">",TOKEN_TO_TEXT[SyntaxKind$1.GreaterThanGreaterThanGreaterThanToken]=">>>",TOKEN_TO_TEXT[SyntaxKind$1.AmpersandToken]="&",TOKEN_TO_TEXT[SyntaxKind$1.BarToken]="|",TOKEN_TO_TEXT[SyntaxKind$1.CaretToken]="^",TOKEN_TO_TEXT[SyntaxKind$1.ExclamationToken]="!",TOKEN_TO_TEXT[SyntaxKind$1.TildeToken]="~",TOKEN_TO_TEXT[SyntaxKind$1.AmpersandAmpersandToken]="&&",TOKEN_TO_TEXT[SyntaxKind$1.BarBarToken]="||",TOKEN_TO_TEXT[SyntaxKind$1.QuestionToken]="?",TOKEN_TO_TEXT[SyntaxKind$1.ColonToken]=":",TOKEN_TO_TEXT[SyntaxKind$1.EqualsToken]="=",TOKEN_TO_TEXT[SyntaxKind$1.PlusEqualsToken]="+=",TOKEN_TO_TEXT[SyntaxKind$1.MinusEqualsToken]="-=",TOKEN_TO_TEXT[SyntaxKind$1.AsteriskEqualsToken]="*=",TOKEN_TO_TEXT[SyntaxKind$1.AsteriskAsteriskEqualsToken]="**=",TOKEN_TO_TEXT[SyntaxKind$1.SlashEqualsToken]="/=",TOKEN_TO_TEXT[SyntaxKind$1.PercentEqualsToken]="%=",TOKEN_TO_TEXT[SyntaxKind$1.LessThanLessThanEqualsToken]="<<=",TOKEN_TO_TEXT[SyntaxKind$1.GreaterThanGreaterThanEqualsToken]=">>=",TOKEN_TO_TEXT[SyntaxKind$1.GreaterThanGreaterThanGreaterThanEqualsToken]=">>>=",TOKEN_TO_TEXT[SyntaxKind$1.AmpersandEqualsToken]="&=",TOKEN_TO_TEXT[SyntaxKind$1.BarEqualsToken]="|=",TOKEN_TO_TEXT[SyntaxKind$1.CaretEqualsToken]="^=",TOKEN_TO_TEXT[SyntaxKind$1.AtToken]="@",TOKEN_TO_TEXT[SyntaxKind$1.InKeyword]="in";var nodeUtils$2={SyntaxKind:SyntaxKind$1,isAssignmentOperator:isAssignmentOperator,isLogicalOperator:isLogicalOperator,getTextForTokenKind:getTextForTokenKind,isESTreeClassMember:isESTreeClassMember,hasModifier:hasModifier,isComma:isComma,getBinaryExpressionType:getBinaryExpressionType,getLocFor:getLocFor,getLoc:getLoc,isToken:isToken,isJSXToken:isJSXToken,getDeclarationKind:getDeclarationKind,getTSNodeAccessibility:getTSNodeAccessibility,hasStaticModifierFlag:hasStaticModifierFlag,findNextToken:findNextToken,findChildOfKind:findChildOfKind,findAncestorOfKind:findAncestorOfKind,hasJSXAncestor:hasJSXAncestor,unescapeIdentifier:unescapeIdentifier,unescapeStringLiteralText:unescapeStringLiteralText,isComputedProperty:isComputedProperty,isOptional:isOptional,fixExports:fixExports,getTokenType:getTokenType,convertToken:convertToken,convertTokens:convertTokens,getNodeContainer:getNodeContainer};const nodeUtils$1=nodeUtils$2,AST_NODE_TYPES=astNodeTypes$1,SyntaxKind=nodeUtils$1.SyntaxKind;var convert$2=function e(t){function n(t){return e({node:t,parent:l,ast:d,additionalOptions:p})}function r(e){const t=n(e);return{type:AST_NODE_TYPES.TypeAnnotation,loc:t.loc,range:t.range,typeAnnotation:t}}function a(e){const t=e[0],r=e[e.length-1];return{type:AST_NODE_TYPES.TypeParameterInstantiation,range:[t.pos-1,r.end+1],loc:nodeUtils$1.getLocFor(t.pos-1,r.end+1,d),params:e.map(e=>({type:AST_NODE_TYPES.GenericTypeAnnotation,range:[e.getStart(),e.getEnd()],loc:nodeUtils$1.getLoc(e,d),id:n(e.typeName||e),typeParameters:e.typeArguments?a(e.typeArguments):null}))}}function i(t){const n=t[0],a=t[t.length-1];return{type:AST_NODE_TYPES.TypeParameterDeclaration,range:[n.pos-1,a.end+1],loc:nodeUtils$1.getLocFor(n.pos-1,a.end+1,d),params:t.map(t=>{const n=nodeUtils$1.unescapeIdentifier(t.name.text);const a=t.default?e({node:t.default,parent:t,ast:d,additionalOptions:p}):t.default;return{type:AST_NODE_TYPES.TypeParameter,range:[t.getStart(),t.getEnd()],loc:nodeUtils$1.getLoc(t,d),name:n,constraint:t.constraint?r(t.constraint):null,default:a}})}}function o(e){const t=n(e.expression),r={type:AST_NODE_TYPES.ClassImplements,loc:t.loc,range:t.range,id:t};return e.typeArguments&&e.typeArguments.length&&(r.typeParameters=a(e.typeArguments)),r}function s(e){const t=n(e.expression),r={type:AST_NODE_TYPES.TSInterfaceHeritage,loc:t.loc,range:t.range,id:t};return e.typeArguments&&e.typeArguments.length&&(r.typeParameters=a(e.typeArguments)),r}function c(e){return e&&e.length?e.map(e=>{const t=n(e.expression);return{type:AST_NODE_TYPES.Decorator,range:[e.getStart(),e.end],loc:nodeUtils$1.getLoc(e,d),expression:t}}):[]}function u(e){const t=nodeUtils$1.convertToken(e,d);if(t.type===AST_NODE_TYPES.JSXMemberExpression){const e=l.tagName.expression.kind===SyntaxKind.PropertyAccessExpression;t.object=n(l.tagName.expression),t.property=n(l.tagName.name),t.object.type=e?AST_NODE_TYPES.JSXMemberExpression:AST_NODE_TYPES.JSXIdentifier,t.property.type=AST_NODE_TYPES.JSXIdentifier;}else t.name=t.value;return delete t.value,t}const l=t.node,_=t.parent,d=t.ast,p=t.additionalOptions||{};if(!l)return null;let f={type:"",range:[l.getStart(),l.end],loc:nodeUtils$1.getLoc(l,d)};switch(l.kind){case SyntaxKind.SourceFile:Object.assign(f,{type:AST_NODE_TYPES.Program,body:[],sourceType:l.externalModuleIndicator?"module":"script"}),l.statements.forEach(e=>{const t=n(e);t&&f.body.push(t);}),f.range[1]=l.endOfFileToken.pos,f.loc=nodeUtils$1.getLocFor(l.getStart(),f.range[1],d);break;case SyntaxKind.Block:Object.assign(f,{type:AST_NODE_TYPES.BlockStatement,body:l.statements.map(n)});break;case SyntaxKind.Identifier:Object.assign(f,{type:AST_NODE_TYPES.Identifier,name:nodeUtils$1.unescapeIdentifier(l.text)});break;case SyntaxKind.WithStatement:Object.assign(f,{type:AST_NODE_TYPES.WithStatement,object:n(l.expression),body:n(l.statement)});break;case SyntaxKind.ReturnStatement:Object.assign(f,{type:AST_NODE_TYPES.ReturnStatement,argument:n(l.expression)});break;case SyntaxKind.LabeledStatement:Object.assign(f,{type:AST_NODE_TYPES.LabeledStatement,label:n(l.label),body:n(l.statement)});break;case SyntaxKind.BreakStatement:case SyntaxKind.ContinueStatement:Object.assign(f,{type:SyntaxKind[l.kind],label:n(l.label)});break;case SyntaxKind.IfStatement:Object.assign(f,{type:AST_NODE_TYPES.IfStatement,test:n(l.expression),consequent:n(l.thenStatement),alternate:n(l.elseStatement)});break;case SyntaxKind.SwitchStatement:Object.assign(f,{type:AST_NODE_TYPES.SwitchStatement,discriminant:n(l.expression),cases:l.caseBlock.clauses.map(n)});break;case SyntaxKind.CaseClause:case SyntaxKind.DefaultClause:Object.assign(f,{type:AST_NODE_TYPES.SwitchCase,test:n(l.expression),consequent:l.statements.map(n)});break;case SyntaxKind.ThrowStatement:Object.assign(f,{type:AST_NODE_TYPES.ThrowStatement,argument:n(l.expression)});break;case SyntaxKind.TryStatement:Object.assign(f,{type:AST_NODE_TYPES.TryStatement,block:e({node:l.tryBlock,parent:null,ast:d,additionalOptions:p}),handler:n(l.catchClause),finalizer:n(l.finallyBlock)});break;case SyntaxKind.CatchClause:Object.assign(f,{type:AST_NODE_TYPES.CatchClause,param:n(l.variableDeclaration.name),body:n(l.block)});break;case SyntaxKind.WhileStatement:Object.assign(f,{type:AST_NODE_TYPES.WhileStatement,test:n(l.expression),body:n(l.statement)});break;case SyntaxKind.DoStatement:Object.assign(f,{type:AST_NODE_TYPES.DoWhileStatement,test:n(l.expression),body:n(l.statement)});break;case SyntaxKind.ForStatement:Object.assign(f,{type:AST_NODE_TYPES.ForStatement,init:n(l.initializer),test:n(l.condition),update:n(l.incrementor),body:n(l.statement)});break;case SyntaxKind.ForInStatement:case SyntaxKind.ForOfStatement:{const e=l.awaitModifier&&l.awaitModifier.kind===SyntaxKind.AwaitKeyword;Object.assign(f,{type:SyntaxKind[l.kind],left:n(l.initializer),right:n(l.expression),body:n(l.statement),await:e});break}case SyntaxKind.FunctionDeclaration:{let e=AST_NODE_TYPES.FunctionDeclaration;if(l.modifiers&&l.modifiers.length){const t=nodeUtils$1.hasModifier(SyntaxKind.DeclareKeyword,l);t&&(e=AST_NODE_TYPES.DeclareFunction);}l.parent&&l.parent.kind===SyntaxKind.ModuleBlock&&(e=AST_NODE_TYPES.TSNamespaceFunctionDeclaration),Object.assign(f,{type:e,id:n(l.name),generator:!!l.asteriskToken,expression:!1,async:nodeUtils$1.hasModifier(SyntaxKind.AsyncKeyword,l),params:l.parameters.map(n),body:n(l.body)}),l.type&&(f.returnType=r(l.type)),l.typeParameters&&l.typeParameters.length&&(f.typeParameters=i(l.typeParameters)),f=nodeUtils$1.fixExports(l,f,d);break}case SyntaxKind.VariableDeclaration:Object.assign(f,{type:AST_NODE_TYPES.VariableDeclarator,id:n(l.name),init:n(l.initializer)}),l.type&&(f.id.typeAnnotation=r(l.type));break;case SyntaxKind.VariableStatement:Object.assign(f,{type:AST_NODE_TYPES.VariableDeclaration,declarations:l.declarationList.declarations.map(n),kind:nodeUtils$1.getDeclarationKind(l.declarationList)}),f=nodeUtils$1.fixExports(l,f,d);break;case SyntaxKind.VariableDeclarationList:Object.assign(f,{type:AST_NODE_TYPES.VariableDeclaration,declarations:l.declarations.map(n),kind:nodeUtils$1.getDeclarationKind(l)});break;case SyntaxKind.ExpressionStatement:Object.assign(f,{type:AST_NODE_TYPES.ExpressionStatement,expression:n(l.expression)});break;case SyntaxKind.ThisKeyword:Object.assign(f,{type:AST_NODE_TYPES.ThisExpression});break;case SyntaxKind.ArrayLiteralExpression:{const e=nodeUtils$1.findAncestorOfKind(l,SyntaxKind.BinaryExpression);let t;e&&(t=e.left===l||nodeUtils$1.findChildOfKind(e.left,SyntaxKind.ArrayLiteralExpression,d)===l),t?Object.assign(f,{type:AST_NODE_TYPES.ArrayPattern,elements:l.elements.map(n)}):Object.assign(f,{type:AST_NODE_TYPES.ArrayExpression,elements:l.elements.map(n)});break}case SyntaxKind.ObjectLiteralExpression:{const e=nodeUtils$1.findAncestorOfKind(l,SyntaxKind.BinaryExpression);let t;e&&(t=e.left===l||nodeUtils$1.findChildOfKind(e.left,SyntaxKind.ObjectLiteralExpression,d)===l),t?Object.assign(f,{type:AST_NODE_TYPES.ObjectPattern,properties:l.properties.map(n)}):Object.assign(f,{type:AST_NODE_TYPES.ObjectExpression,properties:l.properties.map(n)});break}case SyntaxKind.PropertyAssignment:Object.assign(f,{type:AST_NODE_TYPES.Property,key:n(l.name),value:n(l.initializer),computed:nodeUtils$1.isComputedProperty(l.name),method:!1,shorthand:!1,kind:"init"});break;case SyntaxKind.ShorthandPropertyAssignment:Object.assign(f,{type:AST_NODE_TYPES.Property,key:n(l.name),value:n(l.name),computed:!1,method:!1,shorthand:!0,kind:"init"});break;case SyntaxKind.ComputedPropertyName:if(_.kind!==SyntaxKind.ObjectLiteralExpression)return n(l.expression);Object.assign(f,{type:AST_NODE_TYPES.Property,key:n(l.name),value:n(l.name),computed:!1,method:!1,shorthand:!0,kind:"init"});break;case SyntaxKind.PropertyDeclaration:{const e=nodeUtils$1.hasModifier(SyntaxKind.AbstractKeyword,l);Object.assign(f,{type:e?AST_NODE_TYPES.TSAbstractClassProperty:AST_NODE_TYPES.ClassProperty,key:n(l.name),value:n(l.initializer),computed:nodeUtils$1.isComputedProperty(l.name),static:nodeUtils$1.hasStaticModifierFlag(l),accessibility:nodeUtils$1.getTSNodeAccessibility(l),decorators:c(l.decorators),typeAnnotation:l.type?r(l.type):null}),l.name.kind===SyntaxKind.Identifier&&l.questionToken&&(f.key.optional=!0),f.key.type===AST_NODE_TYPES.Literal&&l.questionToken&&(f.optional=!0);break}case SyntaxKind.GetAccessor:case SyntaxKind.SetAccessor:case SyntaxKind.MethodDeclaration:{const e=d.getLineAndCharacterOfPosition(l.name.end+1),t=l.kind===SyntaxKind.MethodDeclaration,a={type:AST_NODE_TYPES.FunctionExpression,id:null,generator:!!l.asteriskToken,expression:!1,async:nodeUtils$1.hasModifier(SyntaxKind.AsyncKeyword,l),body:n(l.body),range:[l.parameters.pos-1,f.range[1]],loc:{start:{line:e.line+1,column:e.character-1},end:f.loc.end}};if(l.type&&(a.returnType=r(l.type)),_.kind===SyntaxKind.ObjectLiteralExpression)a.params=l.parameters.map(n),Object.assign(f,{type:AST_NODE_TYPES.Property,key:n(l.name),value:a,computed:nodeUtils$1.isComputedProperty(l.name),method:t,shorthand:!1,kind:"init"});else{a.params=l.parameters.map(e=>{const t=n(e);t.decorators=c(e.decorators);return t});const e=nodeUtils$1.hasModifier(SyntaxKind.AbstractKeyword,l)?AST_NODE_TYPES.TSAbstractMethodDefinition:AST_NODE_TYPES.MethodDefinition;Object.assign(f,{type:e,key:n(l.name),value:a,computed:nodeUtils$1.isComputedProperty(l.name),static:nodeUtils$1.hasStaticModifierFlag(l),kind:"method",accessibility:nodeUtils$1.getTSNodeAccessibility(l),decorators:c(l.decorators)});}f.key.type===AST_NODE_TYPES.Identifier&&l.questionToken&&(f.key.optional=!0),l.kind===SyntaxKind.GetAccessor?f.kind="get":l.kind===SyntaxKind.SetAccessor?f.kind="set":f.static||l.name.kind!==SyntaxKind.StringLiteral||"constructor"!==l.name.text||(f.kind="constructor"),l.typeParameters&&l.typeParameters.length&&(a.typeParameters=i(l.typeParameters));break}case SyntaxKind.Constructor:{const e=nodeUtils$1.hasStaticModifierFlag(l),t=nodeUtils$1.hasModifier(SyntaxKind.AbstractKeyword,l),r=e?nodeUtils$1.findNextToken(l.getFirstToken(),d):l.getFirstToken(),a=d.getLineAndCharacterOfPosition(l.parameters.pos-1),i={type:AST_NODE_TYPES.FunctionExpression,id:null,params:l.parameters.map(e=>{const t=n(e);const r=c(e.decorators);return Object.assign(t,{decorators:r})}),generator:!1,expression:!1,async:!1,body:n(l.body),range:[l.parameters.pos-1,f.range[1]],loc:{start:{line:a.line+1,column:a.character},end:f.loc.end}},o=d.getLineAndCharacterOfPosition(r.getStart()),s=!!l.name&&nodeUtils$1.isComputedProperty(l.name);let u;u=s?{type:AST_NODE_TYPES.Literal,value:"constructor",raw:l.name.getText(),range:[r.getStart(),r.end],loc:{start:{line:o.line+1,column:o.character},end:{line:i.loc.start.line,column:i.loc.start.column}}}:{type:AST_NODE_TYPES.Identifier,name:"constructor",range:[r.getStart(),r.end],loc:{start:{line:o.line+1,column:o.character},end:{line:i.loc.start.line,column:i.loc.start.column}}},Object.assign(f,{type:t?AST_NODE_TYPES.TSAbstractMethodDefinition:AST_NODE_TYPES.MethodDefinition,key:u,value:i,computed:s,accessibility:nodeUtils$1.getTSNodeAccessibility(l),static:e,kind:e||s?"method":"constructor"});break}case SyntaxKind.FunctionExpression:Object.assign(f,{type:AST_NODE_TYPES.FunctionExpression,id:n(l.name),generator:!!l.asteriskToken,params:l.parameters.map(n),body:n(l.body),async:nodeUtils$1.hasModifier(SyntaxKind.AsyncKeyword,l),expression:!1}),l.type&&(f.returnType=r(l.type)),l.typeParameters&&l.typeParameters.length&&(f.typeParameters=i(l.typeParameters));break;case SyntaxKind.SuperKeyword:Object.assign(f,{type:AST_NODE_TYPES.Super});break;case SyntaxKind.ArrayBindingPattern:Object.assign(f,{type:AST_NODE_TYPES.ArrayPattern,elements:l.elements.map(n)});break;case SyntaxKind.OmittedExpression:return null;case SyntaxKind.ObjectBindingPattern:Object.assign(f,{type:AST_NODE_TYPES.ObjectPattern,properties:l.elements.map(n)});break;case SyntaxKind.BindingElement:if(_.kind===SyntaxKind.ArrayBindingPattern){const t=e({node:l.name,parent:_,ast:d,additionalOptions:p});if(!l.initializer)return t;Object.assign(f,{type:AST_NODE_TYPES.AssignmentPattern,left:t,right:n(l.initializer)});}else _.kind===SyntaxKind.ObjectBindingPattern&&(l.dotDotDotToken?Object.assign(f,{type:AST_NODE_TYPES.ExperimentalRestProperty,argument:n(l.propertyName||l.name),computed:Boolean(l.propertyName&&l.propertyName.kind===SyntaxKind.ComputedPropertyName),shorthand:!l.propertyName}):Object.assign(f,{type:AST_NODE_TYPES.Property,key:n(l.propertyName||l.name),value:n(l.name),computed:Boolean(l.propertyName&&l.propertyName.kind===SyntaxKind.ComputedPropertyName),method:!1,shorthand:!l.propertyName,kind:"init"}),l.initializer&&(f.value={type:AST_NODE_TYPES.AssignmentPattern,left:n(l.name),right:n(l.initializer),range:[l.name.getStart(),l.initializer.end],loc:nodeUtils$1.getLocFor(l.name.getStart(),l.initializer.end,d)}));break;case SyntaxKind.ArrowFunction:Object.assign(f,{type:AST_NODE_TYPES.ArrowFunctionExpression,generator:!1,id:null,params:l.parameters.map(n),body:n(l.body),async:nodeUtils$1.hasModifier(SyntaxKind.AsyncKeyword,l),expression:l.body.kind!==SyntaxKind.Block}),l.type&&(f.returnType=r(l.type)),l.typeParameters&&l.typeParameters.length&&(f.typeParameters=i(l.typeParameters));break;case SyntaxKind.YieldExpression:Object.assign(f,{type:AST_NODE_TYPES.YieldExpression,delegate:!!l.asteriskToken,argument:n(l.expression)});break;case SyntaxKind.AwaitExpression:Object.assign(f,{type:AST_NODE_TYPES.AwaitExpression,argument:n(l.expression)});break;case SyntaxKind.NoSubstitutionTemplateLiteral:Object.assign(f,{type:AST_NODE_TYPES.TemplateLiteral,quasis:[{type:AST_NODE_TYPES.TemplateElement,value:{raw:d.text.slice(l.getStart()+1,l.end-1),cooked:l.text},tail:!0,range:f.range,loc:f.loc}],expressions:[]});break;case SyntaxKind.TemplateExpression:Object.assign(f,{type:AST_NODE_TYPES.TemplateLiteral,quasis:[n(l.head)],expressions:[]}),l.templateSpans.forEach(e=>{f.expressions.push(n(e.expression));f.quasis.push(n(e.literal));});break;case SyntaxKind.TaggedTemplateExpression:Object.assign(f,{type:AST_NODE_TYPES.TaggedTemplateExpression,tag:n(l.tag),quasi:n(l.template)});break;case SyntaxKind.TemplateHead:case SyntaxKind.TemplateMiddle:case SyntaxKind.TemplateTail:{const e=l.kind===SyntaxKind.TemplateTail;Object.assign(f,{type:AST_NODE_TYPES.TemplateElement,value:{raw:d.text.slice(l.getStart()+1,l.end-(e?1:2)),cooked:l.text},tail:e});break}case SyntaxKind.SpreadElement:Object.assign(f,{type:AST_NODE_TYPES.SpreadElement,argument:n(l.expression)});break;case SyntaxKind.SpreadAssignment:{let e=AST_NODE_TYPES.ExperimentalSpreadProperty;l.parent&&l.parent.parent.kind===SyntaxKind.BinaryExpression&&(l.parent.parent.right===l.parent?e=AST_NODE_TYPES.ExperimentalSpreadProperty:l.parent.parent.left===l.parent&&(e=AST_NODE_TYPES.ExperimentalRestProperty)),Object.assign(f,{type:e,argument:n(l.expression)});break}case SyntaxKind.Parameter:{let t;if(l.dotDotDotToken?(t=n(l.name),Object.assign(f,{type:AST_NODE_TYPES.RestElement,argument:t})):l.initializer?(t=n(l.name),Object.assign(f,{type:AST_NODE_TYPES.AssignmentPattern,left:t,right:n(l.initializer)})):(t=e({node:l.name,parent:_,ast:d,additionalOptions:p}),f=t),l.type&&Object.assign(t,{typeAnnotation:r(l.type)}),l.questionToken&&(t.optional=!0),l.modifiers)return{type:AST_NODE_TYPES.TSParameterProperty,range:[l.getStart(),l.end],loc:nodeUtils$1.getLoc(l,d),accessibility:nodeUtils$1.getTSNodeAccessibility(l),readonly:nodeUtils$1.hasModifier(SyntaxKind.ReadonlyKeyword,l),static:nodeUtils$1.hasModifier(SyntaxKind.StaticKeyword,l),export:nodeUtils$1.hasModifier(SyntaxKind.ExportKeyword,l),parameter:f};break}case SyntaxKind.ClassDeclaration:case SyntaxKind.ClassExpression:{const e=l.heritageClauses||[];let t=SyntaxKind[l.kind],r=e.length?e[e.length-1]:l.name;if(l.typeParameters&&l.typeParameters.length){const e=l.typeParameters[l.typeParameters.length-1];(!r||e.pos>r.pos)&&(r=nodeUtils$1.findNextToken(e,d)),f.typeParameters=i(l.typeParameters);}if(l.modifiers&&l.modifiers.length){l.kind===SyntaxKind.ClassDeclaration&&nodeUtils$1.hasModifier(SyntaxKind.AbstractKeyword,l)&&(t=`TSAbstract${t}`);const e=l.modifiers[l.modifiers.length-1];(!r||e.pos>r.pos)&&(r=nodeUtils$1.findNextToken(e,d));}else r||(r=l.getFirstToken());const s=nodeUtils$1.findNextToken(r,d),u=e.length&&l.heritageClauses[0].token===SyntaxKind.ExtendsKeyword;let _,p=!1;u&&e[0].types.length>0&&(_=e.shift()).types[0]&&_.types[0].typeArguments&&(f.superTypeParameters=a(_.types[0].typeArguments)),p=e.length>0,Object.assign(f,{type:t,id:n(l.name),body:{type:AST_NODE_TYPES.ClassBody,body:[],range:[s.getStart(),f.range[1]],loc:nodeUtils$1.getLocFor(s.getStart(),l.end,d)},superClass:_?n(_.types[0].expression):null,implements:p?e[0].types.map(o):[],decorators:c(l.decorators)});const m=l.members.filter(nodeUtils$1.isESTreeClassMember);m.length&&(f.body.body=m.map(n)),f=nodeUtils$1.fixExports(l,f,d);break}case SyntaxKind.ModuleBlock:Object.assign(f,{type:AST_NODE_TYPES.TSModuleBlock,body:l.statements.map(n)});break;case SyntaxKind.ImportDeclaration:Object.assign(f,{type:AST_NODE_TYPES.ImportDeclaration,source:n(l.moduleSpecifier),specifiers:[]}),l.importClause&&(l.importClause.name&&f.specifiers.push(n(l.importClause)),l.importClause.namedBindings&&(l.importClause.namedBindings.kind===SyntaxKind.NamespaceImport?f.specifiers.push(n(l.importClause.namedBindings)):f.specifiers=f.specifiers.concat(l.importClause.namedBindings.elements.map(n))));break;case SyntaxKind.NamespaceImport:Object.assign(f,{type:AST_NODE_TYPES.ImportNamespaceSpecifier,local:n(l.name)});break;case SyntaxKind.ImportSpecifier:Object.assign(f,{type:AST_NODE_TYPES.ImportSpecifier,local:n(l.name),imported:n(l.propertyName||l.name)});break;case SyntaxKind.ImportClause:Object.assign(f,{type:AST_NODE_TYPES.ImportDefaultSpecifier,local:n(l.name)}),f.range[1]=l.name.end,f.loc=nodeUtils$1.getLocFor(f.range[0],f.range[1],d);break;case SyntaxKind.NamedImports:Object.assign(f,{type:AST_NODE_TYPES.ImportDefaultSpecifier,local:n(l.name)});break;case SyntaxKind.ExportDeclaration:l.exportClause?Object.assign(f,{type:AST_NODE_TYPES.ExportNamedDeclaration,source:n(l.moduleSpecifier),specifiers:l.exportClause.elements.map(n),declaration:null}):Object.assign(f,{type:AST_NODE_TYPES.ExportAllDeclaration,source:n(l.moduleSpecifier)});break;case SyntaxKind.ExportSpecifier:Object.assign(f,{type:AST_NODE_TYPES.ExportSpecifier,local:n(l.propertyName||l.name),exported:n(l.name)});break;case SyntaxKind.ExportAssignment:Object.assign(f,{type:AST_NODE_TYPES.ExportDefaultDeclaration,declaration:n(l.expression)});break;case SyntaxKind.PrefixUnaryExpression:case SyntaxKind.PostfixUnaryExpression:{const e=nodeUtils$1.getTextForTokenKind(l.operator);Object.assign(f,{type:/^(?:\+\+|--)$/.test(e)?AST_NODE_TYPES.UpdateExpression:AST_NODE_TYPES.UnaryExpression,operator:e,prefix:l.kind===SyntaxKind.PrefixUnaryExpression,argument:n(l.operand)});break}case SyntaxKind.DeleteExpression:Object.assign(f,{type:AST_NODE_TYPES.UnaryExpression,operator:"delete",prefix:!0,argument:n(l.expression)});break;case SyntaxKind.VoidExpression:Object.assign(f,{type:AST_NODE_TYPES.UnaryExpression,operator:"void",prefix:!0,argument:n(l.expression)});break;case SyntaxKind.TypeOfExpression:Object.assign(f,{type:AST_NODE_TYPES.UnaryExpression,operator:"typeof",prefix:!0,argument:n(l.expression)});break;case SyntaxKind.BinaryExpression:if(nodeUtils$1.isComma(l.operatorToken)){Object.assign(f,{type:AST_NODE_TYPES.SequenceExpression,expressions:[]});const e=n(l.left),t=n(l.right);e.type===AST_NODE_TYPES.SequenceExpression?f.expressions=f.expressions.concat(e.expressions):f.expressions.push(e),t.type===AST_NODE_TYPES.SequenceExpression?f.expressions=f.expressions.concat(t.expressions):f.expressions.push(t);}else if(Object.assign(f,{type:nodeUtils$1.getBinaryExpressionType(l.operatorToken),operator:nodeUtils$1.getTextForTokenKind(l.operatorToken.kind),left:n(l.left),right:n(l.right)}),f.type===AST_NODE_TYPES.AssignmentExpression){const e=nodeUtils$1.findAncestorOfKind(l,SyntaxKind.ArrayLiteralExpression),t=e&&nodeUtils$1.findAncestorOfKind(e,SyntaxKind.BinaryExpression);let n;t&&(n=t.left===e||nodeUtils$1.findChildOfKind(t.left,SyntaxKind.ArrayLiteralExpression,d)===e),n&&(delete f.operator,f.type=AST_NODE_TYPES.AssignmentPattern);}break;case SyntaxKind.PropertyAccessExpression:if(nodeUtils$1.isJSXToken(_)){const e={type:AST_NODE_TYPES.MemberExpression,object:n(l.expression),property:n(l.name)},t=l.expression.kind===SyntaxKind.PropertyAccessExpression;e.object.type=t?AST_NODE_TYPES.MemberExpression:AST_NODE_TYPES.JSXIdentifier,e.property.type=AST_NODE_TYPES.JSXIdentifier,Object.assign(f,e);}else Object.assign(f,{type:AST_NODE_TYPES.MemberExpression,object:n(l.expression),property:n(l.name),computed:!1});break;case SyntaxKind.ElementAccessExpression:Object.assign(f,{type:AST_NODE_TYPES.MemberExpression,object:n(l.expression),property:n(l.argumentExpression),computed:!0});break;case SyntaxKind.ConditionalExpression:Object.assign(f,{type:AST_NODE_TYPES.ConditionalExpression,test:n(l.condition),consequent:n(l.whenTrue),alternate:n(l.whenFalse)});break;case SyntaxKind.CallExpression:Object.assign(f,{type:AST_NODE_TYPES.CallExpression,callee:n(l.expression),arguments:l.arguments.map(n)}),l.typeArguments&&l.typeArguments.length&&(f.typeParameters=a(l.typeArguments));break;case SyntaxKind.NewExpression:Object.assign(f,{type:AST_NODE_TYPES.NewExpression,callee:n(l.expression),arguments:l.arguments?l.arguments.map(n):[]}),l.typeArguments&&l.typeArguments.length&&(f.typeParameters=a(l.typeArguments));break;case SyntaxKind.MetaProperty:{const e=nodeUtils$1.convertToken(l.getFirstToken(),d);Object.assign(f,{type:AST_NODE_TYPES.MetaProperty,meta:{type:AST_NODE_TYPES.Identifier,range:e.range,loc:e.loc,name:"new"},property:n(l.name)});break}case SyntaxKind.StringLiteral:Object.assign(f,{type:AST_NODE_TYPES.Literal,value:nodeUtils$1.unescapeStringLiteralText(l.text),raw:d.text.slice(f.range[0],f.range[1])});break;case SyntaxKind.NumericLiteral:Object.assign(f,{type:AST_NODE_TYPES.Literal,value:Number(l.text),raw:d.text.slice(f.range[0],f.range[1])});break;case SyntaxKind.RegularExpressionLiteral:{const e=l.text.slice(1,l.text.lastIndexOf("/")),t=l.text.slice(l.text.lastIndexOf("/")+1);let n=null;try{n=new RegExp(e,t);}catch(e){n=null;}Object.assign(f,{type:AST_NODE_TYPES.Literal,value:n,raw:l.text,regex:{pattern:e,flags:t}});break}case SyntaxKind.TrueKeyword:Object.assign(f,{type:AST_NODE_TYPES.Literal,value:!0,raw:"true"});break;case SyntaxKind.FalseKeyword:Object.assign(f,{type:AST_NODE_TYPES.Literal,value:!1,raw:"false"});break;case SyntaxKind.NullKeyword:Object.assign(f,{type:AST_NODE_TYPES.Literal,value:null,raw:"null"});break;case SyntaxKind.EmptyStatement:case SyntaxKind.DebuggerStatement:!function(){Object.assign(f,{type:SyntaxKind[l.kind]});}();break;case SyntaxKind.JsxElement:Object.assign(f,{type:AST_NODE_TYPES.JSXElement,openingElement:n(l.openingElement),closingElement:n(l.closingElement),children:l.children.map(n)});break;case SyntaxKind.JsxSelfClosingElement:{l.kind=SyntaxKind.JsxOpeningElement;const e=n(l);e.selfClosing=!0,Object.assign(f,{type:AST_NODE_TYPES.JSXElement,openingElement:e,closingElement:null,children:[]});break}case SyntaxKind.JsxOpeningElement:Object.assign(f,{type:AST_NODE_TYPES.JSXOpeningElement,selfClosing:!1,name:u(l.tagName),attributes:l.attributes.properties.map(n)});break;case SyntaxKind.JsxClosingElement:Object.assign(f,{type:AST_NODE_TYPES.JSXClosingElement,name:u(l.tagName)});break;case SyntaxKind.JsxExpression:{const e=d.getLineAndCharacterOfPosition(f.range[0]+1),t=l.expression?n(l.expression):{type:AST_NODE_TYPES.JSXEmptyExpression,loc:{start:{line:e.line+1,column:e.character},end:{line:f.loc.end.line,column:f.loc.end.column-1}},range:[f.range[0]+1,f.range[1]-1]};Object.assign(f,{type:AST_NODE_TYPES.JSXExpressionContainer,expression:t});break}case SyntaxKind.JsxAttribute:{const e=nodeUtils$1.convertToken(l.name,d);e.type=AST_NODE_TYPES.JSXIdentifier,e.name=e.value,delete e.value,Object.assign(f,{type:AST_NODE_TYPES.JSXAttribute,name:e,value:n(l.initializer)});break}case SyntaxKind.JsxText:{const e=l.getFullStart(),t=l.getEnd(),n=p.useJSXTextNode?AST_NODE_TYPES.JSXText:AST_NODE_TYPES.Literal;Object.assign(f,{type:n,value:d.text.slice(e,t),raw:d.text.slice(e,t)}),f.loc=nodeUtils$1.getLocFor(e,t,d),f.range=[e,t];break}case SyntaxKind.JsxSpreadAttribute:Object.assign(f,{type:AST_NODE_TYPES.JSXSpreadAttribute,argument:n(l.expression)});break;case SyntaxKind.FirstNode:Object.assign(f,{type:AST_NODE_TYPES.TSQualifiedName,left:n(l.left),right:n(l.right)});break;case SyntaxKind.ParenthesizedExpression:return e({node:l.expression,parent:_,ast:d,additionalOptions:p});case SyntaxKind.TypeAliasDeclaration:{const e={type:AST_NODE_TYPES.VariableDeclarator,id:n(l.name),init:n(l.type),range:[l.name.getStart(),l.end]};e.loc=nodeUtils$1.getLocFor(e.range[0],e.range[1],d),l.typeParameters&&l.typeParameters.length&&(e.typeParameters=i(l.typeParameters)),Object.assign(f,{type:AST_NODE_TYPES.VariableDeclaration,kind:nodeUtils$1.getDeclarationKind(l),declarations:[e]}),f=nodeUtils$1.fixExports(l,f,d);break}case SyntaxKind.MethodSignature:Object.assign(f,{type:AST_NODE_TYPES.TSMethodSignature,optional:nodeUtils$1.isOptional(l),computed:nodeUtils$1.isComputedProperty(l.name),key:n(l.name),params:l.parameters.map(e=>n(e)),typeAnnotation:l.type?r(l.type):null,accessibility:nodeUtils$1.getTSNodeAccessibility(l),readonly:nodeUtils$1.hasModifier(SyntaxKind.ReadonlyKeyword,l),static:nodeUtils$1.hasModifier(SyntaxKind.StaticKeyword,l),export:nodeUtils$1.hasModifier(SyntaxKind.ExportKeyword,l)}),l.typeParameters&&(f.typeParameters=i(l.typeParameters));break;case SyntaxKind.PropertySignature:Object.assign(f,{type:AST_NODE_TYPES.TSPropertySignature,optional:nodeUtils$1.isOptional(l),computed:nodeUtils$1.isComputedProperty(l.name),key:n(l.name),typeAnnotation:l.type?r(l.type):null,initializer:n(l.initializer),accessibility:nodeUtils$1.getTSNodeAccessibility(l),readonly:nodeUtils$1.hasModifier(SyntaxKind.ReadonlyKeyword,l),static:nodeUtils$1.hasModifier(SyntaxKind.StaticKeyword,l),export:nodeUtils$1.hasModifier(SyntaxKind.ExportKeyword,l)});break;case SyntaxKind.IndexSignature:Object.assign(f,{type:AST_NODE_TYPES.TSIndexSignature,index:n(l.parameters[0]),typeAnnotation:l.type?r(l.type):null,accessibility:nodeUtils$1.getTSNodeAccessibility(l),readonly:nodeUtils$1.hasModifier(SyntaxKind.ReadonlyKeyword,l),static:nodeUtils$1.hasModifier(SyntaxKind.StaticKeyword,l),export:nodeUtils$1.hasModifier(SyntaxKind.ExportKeyword,l)});break;case SyntaxKind.ConstructSignature:Object.assign(f,{type:AST_NODE_TYPES.TSConstructSignature,params:l.parameters.map(e=>n(e)),typeAnnotation:l.type?r(l.type):null}),l.typeParameters&&(f.typeParameters=i(l.typeParameters));break;case SyntaxKind.InterfaceDeclaration:{const e=l.heritageClauses||[];let t=e.length?e[e.length-1]:l.name;if(l.typeParameters&&l.typeParameters.length){const e=l.typeParameters[l.typeParameters.length-1];(!t||e.pos>t.pos)&&(t=nodeUtils$1.findNextToken(e,d)),f.typeParameters=i(l.typeParameters);}const r=e.length>0,a=nodeUtils$1.hasModifier(SyntaxKind.AbstractKeyword,l),o=nodeUtils$1.findNextToken(t,d),c={type:AST_NODE_TYPES.TSInterfaceBody,body:l.members.map(e=>n(e)),range:[o.getStart(),f.range[1]],loc:nodeUtils$1.getLocFor(o.getStart(),l.end,d)};Object.assign(f,{abstract:a,type:AST_NODE_TYPES.TSInterfaceDeclaration,body:c,id:n(l.name),heritage:r?e[0].types.map(s):[]}),f=nodeUtils$1.fixExports(l,f,d);break}case SyntaxKind.FirstTypeNode:Object.assign(f,{type:AST_NODE_TYPES.TSTypePredicate,parameterName:n(l.parameterName),typeAnnotation:r(l.type)});break;default:!function(){const e=`TS${SyntaxKind[l.kind]}`;if(p.errorOnUnknownASTType&&!AST_NODE_TYPES[e])throw new Error(`Unknown AST_NODE_TYPE: "${e}"`);f.type=e,Object.keys(l).filter(e=>!/^(?:kind|parent|pos|end|flags|modifierFlagsCache|jsDoc)$/.test(e)).forEach(e=>{if("type"===e)f.typeAnnotation=l.type?r(l.type):null;else if("typeArguments"===e)f.typeParameters=l.typeArguments?a(l.typeArguments):null;else if("typeParameters"===e)f.typeParameters=l.typeParameters?i(l.typeParameters):null;else if("decorators"===e){const e=c(l.decorators);e&&e.length&&(f.decorators=e);}else Array.isArray(l[e])?f[e]=l[e].map(n):l[e]&&"object"==typeof l[e]?f[e]=n(l[e]):f[e]=l[e];});}();}return f};const ts$2=typescript,nodeUtils$4=nodeUtils$2;var convertComments_1={convertComments:convertComments$1};const convert$1=convert$2,convertComments=convertComments_1.convertComments,nodeUtils=nodeUtils$2;var astConverter=(e,t)=>{if(e.parseDiagnostics.length)throw convertError(e.parseDiagnostics[0]);const n=convert$1({node:e,parent:null,ast:e,additionalOptions:{errorOnUnknownASTType:t.errorOnUnknownASTType||!1,useJSXTextNode:t.useJSXTextNode||!1}});t.tokens&&(n.tokens=nodeUtils.convertTokens(e));t.comment&&(n.comments=convertComments(e,t.code));return n},semver$1=createCommonjsModule$$1(function(e,t){function n(e,t){if(e instanceof i)return e;if("string"!=typeof e)return null;if(e.length>W)return null;if(!(t?X[pe]:X[le]).test(e))return null;try{return new i(e,t)}catch(e){return null}}function r(e,t){var r=n(e,t);return r?r.version:null}function a(e,t){var r=n(e.trim().replace(/^[=v]+/,""),t);return r?r.version:null}function i(e,t){if(e instanceof i){if(e.loose===t)return e;e=e.version;}else if("string"!=typeof e)throw new TypeError("Invalid Version: "+e);if(e.length>W)throw new TypeError("version is longer than "+W+" characters");if(!(this instanceof i))return new i(e,t);G("SemVer",e,t),this.loose=t;var n=e.trim().match(t?X[pe]:X[le]);if(!n)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>H||this.major<0)throw new TypeError("Invalid major version");if(this.minor>H||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>H||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map(function(e){if(/^[0-9]+$/.test(e)){var t=+e;if(t>=0&&tt?1:0}function u(e,t){return c(t,e)}function l(e,t){return new i(e,t).major}function _(e,t){return new i(e,t).minor}function d(e,t){return new i(e,t).patch}function p(e,t,n){return new i(e,n).compare(t)}function f(e,t){return p(e,t,!0)}function m(e,t,n){return p(t,e,n)}function g(e,n){return e.sort(function(e,r){return t.compare(e,r,n)})}function y(e,n){return e.sort(function(e,r){return t.rcompare(e,r,n)})}function h(e,t,n){return p(e,t,n)>0}function v(e,t,n){return p(e,t,n)<0}function b(e,t,n){return 0===p(e,t,n)}function x(e,t,n){return 0!==p(e,t,n)}function k(e,t,n){return p(e,t,n)>=0}function S(e,t,n){return p(e,t,n)<=0}function T(e,t,n,r){var a;switch(t){case"===":"object"==typeof e&&(e=e.version),"object"==typeof n&&(n=n.version),a=e===n;break;case"!==":"object"==typeof e&&(e=e.version),"object"==typeof n&&(n=n.version),a=e!==n;break;case"":case"=":case"==":a=b(e,n,r);break;case"!=":a=x(e,n,r);break;case">":a=h(e,n,r);break;case">=":a=k(e,n,r);break;case"<":a=v(e,n,r);break;case"<=":a=S(e,n,r);break;default:throw new TypeError("Invalid operator: "+t)}return a}function C(e,t){if(e instanceof C){if(e.loose===t)return e;e=e.value;}if(!(this instanceof C))return new C(e,t);G("comparator",e,t),this.loose=t,this.parse(e),this.semver===Le?this.value="":this.value=this.operator+this.semver.version,G("comp",this);}function E(e,t){if(e instanceof E&&e.loose===t)return e;if(!(this instanceof E))return new E(e,t);if(this.loose=t,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(function(e){return this.parseRange(e.trim())},this).filter(function(e){return e.length}),!this.set.length)throw new TypeError("Invalid SemVer Range: "+e);this.format();}function D(e,t){return new E(e,t).set.map(function(e){return e.map(function(e){return e.value}).join(" ").trim().split(" ")})}function N(e,t){return G("comp",e),e=O(e,t),G("caret",e),e=w(e,t),G("tildes",e),e=I(e,t),G("xrange",e),e=M(e,t),G("stars",e),e}function A(e){return!e||"x"===e.toLowerCase()||"*"===e}function w(e,t){return e.trim().split(/\s+/).map(function(e){return P(e,t)}).join(" ")}function P(e,t){var n=t?X[Te]:X[Se];return e.replace(n,function(t,n,r,a,i){G("tilde",e,t,n,r,a,i);var o;return A(n)?o="":A(r)?o=">="+n+".0.0 <"+(+n+1)+".0.0":A(a)?o=">="+n+"."+r+".0 <"+n+"."+(+r+1)+".0":i?(G("replaceTilde pr",i),"-"!==i.charAt(0)&&(i="-"+i),o=">="+n+"."+r+"."+a+i+" <"+n+"."+(+r+1)+".0"):o=">="+n+"."+r+"."+a+" <"+n+"."+(+r+1)+".0",G("tilde return",o),o})}function O(e,t){return e.trim().split(/\s+/).map(function(e){return F(e,t)}).join(" ")}function F(e,t){G("caret",e,t);var n=t?X[Ne]:X[De];return e.replace(n,function(t,n,r,a,i){G("caret",e,t,n,r,a,i);var o;return A(n)?o="":A(r)?o=">="+n+".0.0 <"+(+n+1)+".0.0":A(a)?o="0"===n?">="+n+"."+r+".0 <"+n+"."+(+r+1)+".0":">="+n+"."+r+".0 <"+(+n+1)+".0.0":i?(G("replaceCaret pr",i),"-"!==i.charAt(0)&&(i="-"+i),o="0"===n?"0"===r?">="+n+"."+r+"."+a+i+" <"+n+"."+r+"."+(+a+1):">="+n+"."+r+"."+a+i+" <"+n+"."+(+r+1)+".0":">="+n+"."+r+"."+a+i+" <"+(+n+1)+".0.0"):(G("no pr"),o="0"===n?"0"===r?">="+n+"."+r+"."+a+" <"+n+"."+r+"."+(+a+1):">="+n+"."+r+"."+a+" <"+n+"."+(+r+1)+".0":">="+n+"."+r+"."+a+" <"+(+n+1)+".0.0"),G("caret return",o),o})}function I(e,t){return G("replaceXRanges",e,t),e.split(/\s+/).map(function(e){return R(e,t)}).join(" ")}function R(e,t){e=e.trim();var n=t?X[be]:X[ve];return e.replace(n,function(t,n,r,a,i,o){G("xRange",e,t,n,r,a,i,o);var s=A(r),c=s||A(a),u=c||A(i),l=u;return"="===n&&l&&(n=""),s?t=">"===n||"<"===n?"<0.0.0":"*":n&&l?(c&&(a=0),u&&(i=0),">"===n?(n=">=",c?(r=+r+1,a=0,i=0):u&&(a=+a+1,i=0)):"<="===n&&(n="<",c?r=+r+1:a=+a+1),t=n+r+"."+a+"."+i):c?t=">="+r+".0.0 <"+(+r+1)+".0.0":u&&(t=">="+r+"."+a+".0 <"+r+"."+(+a+1)+".0"),G("xRange return",t),t})}function M(e,t){return G("replaceStars",e,t),e.trim().replace(X[Ie],"")}function L(e,t,n,r,a,i,o,s,c,u,l,_,d){return t=A(n)?"":A(r)?">="+n+".0.0":A(a)?">="+n+"."+r+".0":">="+t,s=A(c)?"":A(u)?"<"+(+c+1)+".0.0":A(l)?"<"+c+"."+(+u+1)+".0":_?"<="+c+"."+u+"."+l+"-"+_:"<="+s,(t+" "+s).trim()}function B(e,t){for(n=0;n0){var r=e[n].semver;if(r.major===t.major&&r.minor===t.minor&&r.patch===t.patch)return!0}return!1}return!0}function K(e,t,n){try{t=new E(t,n);}catch(e){return!1}return t.test(e)}function j(e,t,n){return e.filter(function(e){return K(e,t,n)}).sort(function(e,t){return m(e,t,n)})[0]||null}function J(e,t,n){return e.filter(function(e){return K(e,t,n)}).sort(function(e,t){return p(e,t,n)})[0]||null}function z(e,t){try{return new E(e,t).range||"*"}catch(e){return null}}function U(e,t,n){return q(e,t,"<",n)}function V(e,t,n){return q(e,t,">",n)}function q(e,t,n,r){e=new i(e,r),t=new E(t,r);var a,o,s,c,u;switch(n){case">":a=h,o=S,s=v,c=">",u=">=";break;case"<":a=v,o=k,s=h,c="<",u="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(K(e,t,r))return!1;for(var l=0;l=0.0.0")),_=_||e,d=d||e,a(e.semver,_.semver,r)?_=e:s(e.semver,d.semver,r)&&(d=e);}),_.operator===c||_.operator===u)return!1;if((!d.operator||d.operator===c)&&o(e,d.semver))return!1;if(d.operator===u&&s(e,d.semver))return!1}return!0}function $(e,t){var r=n(e,t);return r&&r.prerelease.length?r.prerelease:null}t=e.exports=i;var G;G="object"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?function(){var e=Array.prototype.slice.call(arguments,0);e.unshift("SEMVER"),console.log.apply(console,e);}:function(){},t.SEMVER_SPEC_VERSION="2.0.0";var W=256,H=Number.MAX_SAFE_INTEGER||9007199254740991,X=t.re=[],Y=t.src=[],Q=0,Z=Q++;Y[Z]="0|[1-9]\\d*";var ee=Q++;Y[ee]="[0-9]+";var te=Q++;Y[te]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var ne=Q++;Y[ne]="("+Y[Z]+")\\.("+Y[Z]+")\\.("+Y[Z]+")";var re=Q++;Y[re]="("+Y[ee]+")\\.("+Y[ee]+")\\.("+Y[ee]+")";var ae=Q++;Y[ae]="(?:"+Y[Z]+"|"+Y[te]+")";var ie=Q++;Y[ie]="(?:"+Y[ee]+"|"+Y[te]+")";var oe=Q++;Y[oe]="(?:-("+Y[ae]+"(?:\\."+Y[ae]+")*))";var se=Q++;Y[se]="(?:-?("+Y[ie]+"(?:\\."+Y[ie]+")*))";var ce=Q++;Y[ce]="[0-9A-Za-z-]+";var ue=Q++;Y[ue]="(?:\\+("+Y[ce]+"(?:\\."+Y[ce]+")*))";var le=Q++,_e="v?"+Y[ne]+Y[oe]+"?"+Y[ue]+"?";Y[le]="^"+_e+"$";var de="[v=\\s]*"+Y[re]+Y[se]+"?"+Y[ue]+"?",pe=Q++;Y[pe]="^"+de+"$";var fe=Q++;Y[fe]="((?:<|>)?=?)";var me=Q++;Y[me]=Y[ee]+"|x|X|\\*";var ge=Q++;Y[ge]=Y[Z]+"|x|X|\\*";var ye=Q++;Y[ye]="[v=\\s]*("+Y[ge]+")(?:\\.("+Y[ge]+")(?:\\.("+Y[ge]+")(?:"+Y[oe]+")?"+Y[ue]+"?)?)?";var he=Q++;Y[he]="[v=\\s]*("+Y[me]+")(?:\\.("+Y[me]+")(?:\\.("+Y[me]+")(?:"+Y[se]+")?"+Y[ue]+"?)?)?";var ve=Q++;Y[ve]="^"+Y[fe]+"\\s*"+Y[ye]+"$";var be=Q++;Y[be]="^"+Y[fe]+"\\s*"+Y[he]+"$";var xe=Q++;Y[xe]="(?:~>?)";var ke=Q++;Y[ke]="(\\s*)"+Y[xe]+"\\s+",X[ke]=new RegExp(Y[ke],"g");var Se=Q++;Y[Se]="^"+Y[xe]+Y[ye]+"$";var Te=Q++;Y[Te]="^"+Y[xe]+Y[he]+"$";var Ce=Q++;Y[Ce]="(?:\\^)";var Ee=Q++;Y[Ee]="(\\s*)"+Y[Ce]+"\\s+",X[Ee]=new RegExp(Y[Ee],"g");var De=Q++;Y[De]="^"+Y[Ce]+Y[ye]+"$";var Ne=Q++;Y[Ne]="^"+Y[Ce]+Y[he]+"$";var Ae=Q++;Y[Ae]="^"+Y[fe]+"\\s*("+de+")$|^$";var we=Q++;Y[we]="^"+Y[fe]+"\\s*("+_e+")$|^$";var Pe=Q++;Y[Pe]="(\\s*)"+Y[fe]+"\\s*("+de+"|"+Y[ye]+")",X[Pe]=new RegExp(Y[Pe],"g");var Oe=Q++;Y[Oe]="^\\s*("+Y[ye]+")\\s+-\\s+("+Y[ye]+")\\s*$";var Fe=Q++;Y[Fe]="^\\s*("+Y[he]+")\\s+-\\s+("+Y[he]+")\\s*$";var Ie=Q++;Y[Ie]="(<|>)?=?\\s*\\*";for(var Re=0;Re=0;)"number"==typeof this.prerelease[n]&&(this.prerelease[n]++,n=-2);-1===n&&this.prerelease.push(0);}t&&(this.prerelease[0]===t?isNaN(this.prerelease[1])&&(this.prerelease=[t,0]):this.prerelease=[t,0]);break;default:throw new Error("invalid increment argument: "+e)}return this.format(),this.raw=this.version,this},t.inc=o,t.diff=s,t.compareIdentifiers=c;var Me=/^[0-9]+$/;t.rcompareIdentifiers=u,t.major=l,t.minor=_,t.patch=d,t.compare=p,t.compareLoose=f,t.rcompare=m,t.sort=g,t.rsort=y,t.gt=h,t.lt=v,t.eq=b,t.neq=x,t.gte=k,t.lte=S,t.cmp=T,t.Comparator=C;var Le={};C.prototype.parse=function(e){var t=this.loose?X[Ae]:X[we],n=e.match(t);if(!n)throw new TypeError("Invalid comparator: "+e);this.operator=n[1],"="===this.operator&&(this.operator=""),n[2]?this.semver=new i(n[2],this.loose):this.semver=Le;},C.prototype.toString=function(){return this.value},C.prototype.test=function(e){return G("Comparator.test",e,this.loose),this.semver===Le||("string"==typeof e&&(e=new i(e,this.loose)),T(e,this.operator,this.semver,this.loose))},t.Range=E,E.prototype.format=function(){return this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim(),this.range},E.prototype.toString=function(){return this.range},E.prototype.parseRange=function(e){var t=this.loose;e=e.trim(),G("range",e,t);var n=t?X[Fe]:X[Oe];e=e.replace(n,L),G("hyphen replace",e),e=e.replace(X[Pe],"$1$2$3"),G("comparator trim",e,X[Pe]),e=(e=(e=e.replace(X[ke],"$1~")).replace(X[Ee],"$1^")).split(/\s+/).join(" ");var r=t?X[Ae]:X[we],a=e.split(" ").map(function(e){return N(e,t)}).join(" ").split(/\s+/);return this.loose&&(a=a.filter(function(e){return!!e.match(r)})),a=a.map(function(e){return new C(e,t)})},t.toComparators=D,E.prototype.test=function(e){if(!e)return!1;"string"==typeof e&&(e=new i(e,this.loose));for(var t=0;t=4"},repository="eslint/typescript-eslint-parser",bugs={url:"https://github.com/eslint/typescript-eslint-parser/issues"},license="BSD-2-Clause",devDependencies={eslint:"3.19.0","eslint-config-eslint":"4.0.0","eslint-plugin-node":"4.2.2","eslint-release":"0.10.3",jest:"20.0.4","npm-license":"0.3.3",shelljs:"0.7.7","shelljs-nodecli":"0.1.1",typescript:"~2.3.2"},keywords=["ast","ecmascript","javascript","typescript","parser","syntax","eslint"],scripts={test:"node Makefile.js test",jest:"jest",lint:"node Makefile.js lint",release:"eslint-release","ci-release":"eslint-ci-release","gh-release":"eslint-gh-release",alpharelease:"eslint-prerelease alpha",betarelease:"eslint-prerelease beta"},dependencies={"lodash.unescape":"4.0.1",semver:"5.3.0"},peerDependencies={typescript:"*"},jest={testRegex:"tests/lib/.+\\.js$",testPathIgnorePatterns:[],collectCoverage:!0,coverageReporters:["text-summary"]},_package={name:name,description:description,author:author,homepage:homepage,main:main,version:version$1,files:files,engines:engines,repository:repository,bugs:bugs,license:license,devDependencies:devDependencies,keywords:keywords,scripts:scripts,dependencies:dependencies,peerDependencies:peerDependencies,jest:jest},_package$1=Object.freeze({name:name,description:description,author:author,homepage:homepage,main:main,version:version$1,files:files,engines:engines,repository:repository,bugs:bugs,license:license,devDependencies:devDependencies,keywords:keywords,scripts:scripts,dependencies:dependencies,peerDependencies:peerDependencies,jest:jest,default:_package}),require$$4$2=_package$1&&_package$1.default||_package$1;const astNodeTypes=astNodeTypes$1,ts=typescript,convert=astConverter,semver=semver$1,SUPPORTED_TYPESCRIPT_VERSIONS=require$$4$2.devDependencies.typescript,ACTIVE_TYPESCRIPT_VERSION=ts.version,isRunningSupportedTypeScriptVersion=semver.satisfies(ACTIVE_TYPESCRIPT_VERSION,SUPPORTED_TYPESCRIPT_VERSIONS);if(!isRunningSupportedTypeScriptVersion){const e="=============",t=[e,"WARNING: You are currently running a version of TypeScript which is not officially supported by typescript-eslint-parser.","You may find that it works just fine, or you may not.",`SUPPORTED TYPESCRIPT VERSIONS: ${SUPPORTED_TYPESCRIPT_VERSIONS}`,`YOUR TYPESCRIPT VERSION: ${ACTIVE_TYPESCRIPT_VERSION}`,"Please only submit bug reports when using the officially supported version.",e];console.warn(t.join("\n\n"));}let extra;var version$$1=require$$4$2.version,parse_1=parse$1;!function(){let e,t={};"function"==typeof Object.create&&(t=Object.create(null));for(e in astNodeTypes)astNodeTypes.hasOwnProperty(e)&&(t[e]=astNodeTypes[e]);"function"==typeof Object.freeze&&Object.freeze(t);}();var parser={version:version$$1,parse:parse_1};const createError=parserCreateError;var parserTypescript=parse;module.exports=parserTypescript; +}); + +var parserTypescript = unwrapExports(parserTypescript_1); + +return parserTypescript; + +}(fs,path,os,crypto,module$1)); diff --git a/docs/prettier.min.js b/docs/prettier.min.js deleted file mode 100644 index e58b2a03..00000000 --- a/docs/prettier.min.js +++ /dev/null @@ -1,31747 +0,0 @@ -var prettier = (function () { -function commonjsRequire () { - throw new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs'); -} - - - -function createCommonjsModule(fn, module) { - return module = { exports: {} }, fn(module, module.exports), module.exports; -} - -var index$4 = createCommonjsModule(function (module, exports) { -// Copyright 2014, 2015, 2016, 2017 Simon Lydell -// License: MIT. (See LICENSE.) - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -// This regex comes from regex.coffee, and is inserted here by generate-index.js -// (run `npm run build`). -exports.default = /((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyu]{1,5}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]{1,6}\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g; - -exports.matchToToken = function(match) { - var token = {type: "invalid", value: match[0]}; - if (match[ 1]) token.type = "string" , token.closed = !!(match[3] || match[4]); - else if (match[ 5]) token.type = "comment"; - else if (match[ 6]) token.type = "comment", token.closed = !!match[7]; - else if (match[ 8]) token.type = "regex"; - else if (match[ 9]) token.type = "number"; - else if (match[10]) token.type = "name"; - else if (match[11]) token.type = "punctuator"; - else if (match[12]) token.type = "whitespace"; - return token -}; -}); - -var ast = createCommonjsModule(function (module) { -/* - Copyright (C) 2013 Yusuke Suzuki - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -(function () { - 'use strict'; - - function isExpression(node) { - if (node == null) { return false; } - switch (node.type) { - case 'ArrayExpression': - case 'AssignmentExpression': - case 'BinaryExpression': - case 'CallExpression': - case 'ConditionalExpression': - case 'FunctionExpression': - case 'Identifier': - case 'Literal': - case 'LogicalExpression': - case 'MemberExpression': - case 'NewExpression': - case 'ObjectExpression': - case 'SequenceExpression': - case 'ThisExpression': - case 'UnaryExpression': - case 'UpdateExpression': - return true; - } - return false; - } - - function isIterationStatement(node) { - if (node == null) { return false; } - switch (node.type) { - case 'DoWhileStatement': - case 'ForInStatement': - case 'ForStatement': - case 'WhileStatement': - return true; - } - return false; - } - - function isStatement(node) { - if (node == null) { return false; } - switch (node.type) { - case 'BlockStatement': - case 'BreakStatement': - case 'ContinueStatement': - case 'DebuggerStatement': - case 'DoWhileStatement': - case 'EmptyStatement': - case 'ExpressionStatement': - case 'ForInStatement': - case 'ForStatement': - case 'IfStatement': - case 'LabeledStatement': - case 'ReturnStatement': - case 'SwitchStatement': - case 'ThrowStatement': - case 'TryStatement': - case 'VariableDeclaration': - case 'WhileStatement': - case 'WithStatement': - return true; - } - return false; - } - - function isSourceElement(node) { - return isStatement(node) || node != null && node.type === 'FunctionDeclaration'; - } - - function trailingStatement(node) { - switch (node.type) { - case 'IfStatement': - if (node.alternate != null) { - return node.alternate; - } - return node.consequent; - - case 'LabeledStatement': - case 'ForStatement': - case 'ForInStatement': - case 'WhileStatement': - case 'WithStatement': - return node.body; - } - return null; - } - - function isProblematicIfStatement(node) { - var current; - - if (node.type !== 'IfStatement') { - return false; - } - if (node.alternate == null) { - return false; - } - current = node.consequent; - do { - if (current.type === 'IfStatement') { - if (current.alternate == null) { - return true; - } - } - current = trailingStatement(current); - } while (current); - - return false; - } - - module.exports = { - isExpression: isExpression, - isStatement: isStatement, - isIterationStatement: isIterationStatement, - isSourceElement: isSourceElement, - isProblematicIfStatement: isProblematicIfStatement, - - trailingStatement: trailingStatement - }; -}()); -/* vim: set sw=4 ts=4 et tw=80 : */ -}); - -var code = createCommonjsModule(function (module) { -/* - Copyright (C) 2013-2014 Yusuke Suzuki - Copyright (C) 2014 Ivan Nikulin - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -(function () { - 'use strict'; - - var ES6Regex, ES5Regex, NON_ASCII_WHITESPACES, IDENTIFIER_START, IDENTIFIER_PART, ch; - - // See `tools/generate-identifier-regex.js`. - ES5Regex = { - // ECMAScript 5.1/Unicode v7.0.0 NonAsciiIdentifierStart: - 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-\u08B2\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\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\u0C59\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\u0D60\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-\u13F4\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\u19C1-\u19C7\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\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\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\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\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-\uAB5F\uAB64\uAB65\uABC0-\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]/, - // ECMAScript 5.1/Unicode v7.0.0 NonAsciiIdentifierPart: - NonAsciiIdentifierPart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B2\u08E4-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA69D\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2D\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/ - }; - - ES6Regex = { - // ECMAScript 6/Unicode v7.0.0 NonAsciiIdentifierStart: - 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-\u08B2\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\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\u0C59\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\u0D60\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-\u13F4\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\u19C1-\u19C7\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-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\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-\uAB5F\uAB64\uAB65\uABC0-\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\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]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDE00-\uDE11\uDE13-\uDE2B\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDE00-\uDE2F\uDE44\uDE80-\uDEAA]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF98]|\uD809[\uDC00-\uDC6E]|[\uD80C\uD840-\uD868\uD86A-\uD86C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\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]|\uD87E[\uDC00-\uDE1D]/, - // ECMAScript 6/Unicode v7.0.0 NonAsciiIdentifierPart: - 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-\u08B2\u08E4-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\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-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA69D\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2D\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\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\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]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDD0-\uDDDA\uDE00-\uDE11\uDE13-\uDE37\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF01-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF98]|\uD809[\uDC00-\uDC6E]|[\uD80C\uD840-\uD868\uD86A-\uD86C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\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]|\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]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/ - }; - - function isDecimalDigit(ch) { - return 0x30 <= ch && ch <= 0x39; // 0..9 - } - - function isHexDigit(ch) { - return 0x30 <= ch && ch <= 0x39 || // 0..9 - 0x61 <= ch && ch <= 0x66 || // a..f - 0x41 <= ch && ch <= 0x46; // A..F - } - - function isOctalDigit(ch) { - return ch >= 0x30 && ch <= 0x37; // 0..7 - } - - // 7.2 White Space - - NON_ASCII_WHITESPACES = [ - 0x1680, 0x180E, - 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, - 0x202F, 0x205F, - 0x3000, - 0xFEFF - ]; - - function isWhiteSpace(ch) { - return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 || - ch >= 0x1680 && NON_ASCII_WHITESPACES.indexOf(ch) >= 0; - } - - // 7.3 Line Terminators - - function isLineTerminator(ch) { - return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029; - } - - // 7.6 Identifier Names and Identifiers - - function fromCodePoint(cp) { - if (cp <= 0xFFFF) { return String.fromCharCode(cp); } - var cu1 = String.fromCharCode(Math.floor((cp - 0x10000) / 0x400) + 0xD800); - var cu2 = String.fromCharCode(((cp - 0x10000) % 0x400) + 0xDC00); - return cu1 + cu2; - } - - IDENTIFIER_START = new Array(0x80); - for(ch = 0; ch < 0x80; ++ch) { - IDENTIFIER_START[ch] = - ch >= 0x61 && ch <= 0x7A || // a..z - ch >= 0x41 && ch <= 0x5A || // A..Z - ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore) - } - - IDENTIFIER_PART = new Array(0x80); - for(ch = 0; ch < 0x80; ++ch) { - IDENTIFIER_PART[ch] = - ch >= 0x61 && ch <= 0x7A || // a..z - ch >= 0x41 && ch <= 0x5A || // A..Z - ch >= 0x30 && ch <= 0x39 || // 0..9 - ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore) - } - - function isIdentifierStartES5(ch) { - return ch < 0x80 ? IDENTIFIER_START[ch] : ES5Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch)); - } - - function isIdentifierPartES5(ch) { - return ch < 0x80 ? IDENTIFIER_PART[ch] : ES5Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch)); - } - - function isIdentifierStartES6(ch) { - return ch < 0x80 ? IDENTIFIER_START[ch] : ES6Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch)); - } - - function isIdentifierPartES6(ch) { - return ch < 0x80 ? IDENTIFIER_PART[ch] : ES6Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch)); - } - - module.exports = { - isDecimalDigit: isDecimalDigit, - isHexDigit: isHexDigit, - isOctalDigit: isOctalDigit, - isWhiteSpace: isWhiteSpace, - isLineTerminator: isLineTerminator, - isIdentifierStartES5: isIdentifierStartES5, - isIdentifierPartES5: isIdentifierPartES5, - isIdentifierStartES6: isIdentifierStartES6, - isIdentifierPartES6: isIdentifierPartES6 - }; -}()); -/* vim: set sw=4 ts=4 et tw=80 : */ -}); - -var keyword = createCommonjsModule(function (module) { -/* - Copyright (C) 2013 Yusuke Suzuki - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -(function () { - 'use strict'; - - var code$$1 = code; - - function isStrictModeReservedWordES6(id) { - switch (id) { - case 'implements': - case 'interface': - case 'package': - case 'private': - case 'protected': - case 'public': - case 'static': - case 'let': - return true; - default: - return false; - } - } - - function isKeywordES5(id, strict) { - // yield should not be treated as keyword under non-strict mode. - if (!strict && id === 'yield') { - return false; - } - return isKeywordES6(id, strict); - } - - function isKeywordES6(id, strict) { - if (strict && isStrictModeReservedWordES6(id)) { - return true; - } - - switch (id.length) { - case 2: - return (id === 'if') || (id === 'in') || (id === 'do'); - case 3: - return (id === 'var') || (id === 'for') || (id === 'new') || (id === 'try'); - case 4: - return (id === 'this') || (id === 'else') || (id === 'case') || - (id === 'void') || (id === 'with') || (id === 'enum'); - case 5: - return (id === 'while') || (id === 'break') || (id === 'catch') || - (id === 'throw') || (id === 'const') || (id === 'yield') || - (id === 'class') || (id === 'super'); - case 6: - return (id === 'return') || (id === 'typeof') || (id === 'delete') || - (id === 'switch') || (id === 'export') || (id === 'import'); - case 7: - return (id === 'default') || (id === 'finally') || (id === 'extends'); - case 8: - return (id === 'function') || (id === 'continue') || (id === 'debugger'); - case 10: - return (id === 'instanceof'); - default: - return false; - } - } - - function isReservedWordES5(id, strict) { - return id === 'null' || id === 'true' || id === 'false' || isKeywordES5(id, strict); - } - - function isReservedWordES6(id, strict) { - return id === 'null' || id === 'true' || id === 'false' || isKeywordES6(id, strict); - } - - function isRestrictedWord(id) { - return id === 'eval' || id === 'arguments'; - } - - function isIdentifierNameES5(id) { - var i, iz, ch; - - if (id.length === 0) { return false; } - - ch = id.charCodeAt(0); - if (!code$$1.isIdentifierStartES5(ch)) { - return false; - } - - for (i = 1, iz = id.length; i < iz; ++i) { - ch = id.charCodeAt(i); - if (!code$$1.isIdentifierPartES5(ch)) { - return false; - } - } - return true; - } - - function decodeUtf16(lead, trail) { - return (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000; - } - - function isIdentifierNameES6(id) { - var i, iz, ch, lowCh, check; - - if (id.length === 0) { return false; } - - check = code$$1.isIdentifierStartES6; - for (i = 0, iz = id.length; i < iz; ++i) { - ch = id.charCodeAt(i); - if (0xD800 <= ch && ch <= 0xDBFF) { - ++i; - if (i >= iz) { return false; } - lowCh = id.charCodeAt(i); - if (!(0xDC00 <= lowCh && lowCh <= 0xDFFF)) { - return false; - } - ch = decodeUtf16(ch, lowCh); - } - if (!check(ch)) { - return false; - } - check = code$$1.isIdentifierPartES6; - } - return true; - } - - function isIdentifierES5(id, strict) { - return isIdentifierNameES5(id) && !isReservedWordES5(id, strict); - } - - function isIdentifierES6(id, strict) { - return isIdentifierNameES6(id) && !isReservedWordES6(id, strict); - } - - module.exports = { - isKeywordES5: isKeywordES5, - isKeywordES6: isKeywordES6, - isReservedWordES5: isReservedWordES5, - isReservedWordES6: isReservedWordES6, - isRestrictedWord: isRestrictedWord, - isIdentifierNameES5: isIdentifierNameES5, - isIdentifierNameES6: isIdentifierNameES6, - isIdentifierES5: isIdentifierES5, - isIdentifierES6: isIdentifierES6 - }; -}()); -/* vim: set sw=4 ts=4 et tw=80 : */ -}); - -var utils = createCommonjsModule(function (module, exports) { -/* - Copyright (C) 2013 Yusuke Suzuki - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -(function () { - 'use strict'; - - exports.ast = ast; - exports.code = code; - exports.keyword = keyword; -}()); -/* vim: set sw=4 ts=4 et tw=80 : */ -}); - -var global$1 = typeof global !== "undefined" ? global : - typeof self !== "undefined" ? self : - typeof window !== "undefined" ? window : {}; - -// shim for using process in browser -// based off https://github.com/defunctzombie/node-process/blob/master/browser.js - -function defaultSetTimout() { - throw new Error('setTimeout has not been defined'); -} -function defaultClearTimeout () { - throw new Error('clearTimeout has not been defined'); -} -var cachedSetTimeout = defaultSetTimout; -var cachedClearTimeout = defaultClearTimeout; -if (typeof global$1.setTimeout === 'function') { - cachedSetTimeout = setTimeout; -} -if (typeof global$1.clearTimeout === 'function') { - cachedClearTimeout = clearTimeout; -} - -function runTimeout(fun) { - if (cachedSetTimeout === setTimeout) { - //normal enviroments in sane situations - return setTimeout(fun, 0); - } - // if setTimeout wasn't available but was latter defined - if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { - cachedSetTimeout = setTimeout; - return setTimeout(fun, 0); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedSetTimeout(fun, 0); - } catch(e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedSetTimeout.call(null, fun, 0); - } catch(e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error - return cachedSetTimeout.call(this, fun, 0); - } - } - - -} -function runClearTimeout(marker) { - if (cachedClearTimeout === clearTimeout) { - //normal enviroments in sane situations - return clearTimeout(marker); - } - // if clearTimeout wasn't available but was latter defined - if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { - cachedClearTimeout = clearTimeout; - return clearTimeout(marker); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedClearTimeout(marker); - } catch (e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedClearTimeout.call(null, marker); - } catch (e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. - // Some versions of I.E. have different rules for clearTimeout vs setTimeout - return cachedClearTimeout.call(this, marker); - } - } - - - -} -var queue = []; -var draining = false; -var currentQueue; -var queueIndex = -1; - -function cleanUpNextTick() { - if (!draining || !currentQueue) { - return; - } - draining = false; - if (currentQueue.length) { - queue = currentQueue.concat(queue); - } else { - queueIndex = -1; - } - if (queue.length) { - drainQueue(); - } -} - -function drainQueue() { - if (draining) { - return; - } - var timeout = runTimeout(cleanUpNextTick); - draining = true; - - var len = queue.length; - while(len) { - currentQueue = queue; - queue = []; - while (++queueIndex < len) { - if (currentQueue) { - currentQueue[queueIndex].run(); - } - } - queueIndex = -1; - len = queue.length; - } - currentQueue = null; - draining = false; - runClearTimeout(timeout); -} -function nextTick(fun) { - var args = new Array(arguments.length - 1); - if (arguments.length > 1) { - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } - } - queue.push(new Item(fun, args)); - if (queue.length === 1 && !draining) { - runTimeout(drainQueue); - } -} -// v8 likes predictible objects -function Item(fun, array) { - this.fun = fun; - this.array = array; -} -Item.prototype.run = function () { - this.fun.apply(null, this.array); -}; -var title = 'browser'; -var platform = 'browser'; -var browser = true; -var env = {}; -var argv = []; -var version$1 = ''; // empty string to avoid regexp issues -var versions = {}; -var release = {}; -var config = {}; - -function noop() {} - -var on = noop; -var addListener = noop; -var once = noop; -var off = noop; -var removeListener = noop; -var removeAllListeners = noop; -var emit = noop; - -function binding(name) { - throw new Error('process.binding is not supported'); -} - -function cwd () { return '/' } -function chdir (dir) { - throw new Error('process.chdir is not supported'); -} -function umask() { return 0; } - -// from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js -var performance = global$1.performance || {}; -var performanceNow = - performance.now || - performance.mozNow || - performance.msNow || - performance.oNow || - performance.webkitNow || - function(){ return (new Date()).getTime() }; - -// generate timestamp or delta -// see http://nodejs.org/api/process.html#process_process_hrtime -function hrtime(previousTimestamp){ - var clocktime = performanceNow.call(performance)*1e-3; - var seconds = Math.floor(clocktime); - var nanoseconds = Math.floor((clocktime%1)*1e9); - if (previousTimestamp) { - seconds = seconds - previousTimestamp[0]; - nanoseconds = nanoseconds - previousTimestamp[1]; - if (nanoseconds<0) { - seconds--; - nanoseconds += 1e9; - } - } - return [seconds,nanoseconds] -} - -var startTime = new Date(); -function uptime() { - var currentTime = new Date(); - var dif = currentTime - startTime; - return dif / 1000; -} - -var process = { - nextTick: nextTick, - title: title, - browser: browser, - env: env, - argv: argv, - version: version$1, - versions: versions, - on: on, - addListener: addListener, - once: once, - off: off, - removeListener: removeListener, - removeAllListeners: removeAllListeners, - emit: emit, - binding: binding, - cwd: cwd, - chdir: chdir, - umask: umask, - hrtime: hrtime, - platform: platform, - release: release, - config: config, - uptime: uptime -}; - -var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; - -var index$8 = function (str) { - if (typeof str !== 'string') { - throw new TypeError('Expected a string'); - } - - return str.replace(matchOperatorsRe, '\\$&'); -}; - -var index$10 = createCommonjsModule(function (module) { -'use strict'; - -function assembleStyles () { - var styles = { - modifiers: { - reset: [0, 0], - bold: [1, 22], // 21 isn't widely supported and 22 does the same thing - dim: [2, 22], - italic: [3, 23], - underline: [4, 24], - inverse: [7, 27], - hidden: [8, 28], - strikethrough: [9, 29] - }, - colors: { - black: [30, 39], - red: [31, 39], - green: [32, 39], - yellow: [33, 39], - blue: [34, 39], - magenta: [35, 39], - cyan: [36, 39], - white: [37, 39], - gray: [90, 39] - }, - bgColors: { - bgBlack: [40, 49], - bgRed: [41, 49], - bgGreen: [42, 49], - bgYellow: [43, 49], - bgBlue: [44, 49], - bgMagenta: [45, 49], - bgCyan: [46, 49], - bgWhite: [47, 49] - } - }; - - // fix humans - styles.colors.grey = styles.colors.gray; - - Object.keys(styles).forEach(function (groupName) { - var group = styles[groupName]; - - Object.keys(group).forEach(function (styleName) { - var style = group[styleName]; - - styles[styleName] = group[styleName] = { - open: '\u001b[' + style[0] + 'm', - close: '\u001b[' + style[1] + 'm' - }; - }); - - Object.defineProperty(styles, groupName, { - value: group, - enumerable: false - }); - }); - - return styles; -} - -Object.defineProperty(module, 'exports', { - enumerable: true, - get: assembleStyles -}); -}); - -var index$14 = function () { - return /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g; -}; - -var ansiRegex = index$14(); - -var index$12 = function (str) { - return typeof str === 'string' ? str.replace(ansiRegex, '') : str; -}; - -var ansiRegex$1 = index$14; -var re = new RegExp(ansiRegex$1().source); // remove the `g` flag -var index$16 = re.test.bind(re); - -var argv$1 = process.argv; - -var terminator = argv$1.indexOf('--'); -var hasFlag = function (flag) { - flag = '--' + flag; - var pos = argv$1.indexOf(flag); - return pos !== -1 && (terminator !== -1 ? pos < terminator : true); -}; - -var index$18 = (function () { - if ('FORCE_COLOR' in process.env) { - return true; - } - - if (hasFlag('no-color') || - hasFlag('no-colors') || - hasFlag('color=false')) { - return false; - } - - if (hasFlag('color') || - hasFlag('colors') || - hasFlag('color=true') || - hasFlag('color=always')) { - return true; - } - - if (process.stdout && !process.stdout.isTTY) { - return false; - } - - if (process.platform === 'win32') { - return true; - } - - if ('COLORTERM' in process.env) { - return true; - } - - if (process.env.TERM === 'dumb') { - return false; - } - - if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(process.env.TERM)) { - return true; - } - - return false; -})(); - -var escapeStringRegexp = index$8; -var ansiStyles = index$10; -var stripAnsi = index$12; -var hasAnsi = index$16; -var supportsColor = index$18; -var defineProps = Object.defineProperties; -var isSimpleWindowsTerm = process.platform === 'win32' && !/^xterm/i.test(process.env.TERM); - -function Chalk(options) { - // detect mode if not set manually - this.enabled = !options || options.enabled === undefined ? supportsColor : options.enabled; -} - -// use bright blue on Windows as the normal blue color is illegible -if (isSimpleWindowsTerm) { - ansiStyles.blue.open = '\u001b[94m'; -} - -var styles = (function () { - var ret = {}; - - Object.keys(ansiStyles).forEach(function (key) { - ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g'); - - ret[key] = { - get: function () { - return build.call(this, this._styles.concat(key)); - } - }; - }); - - return ret; -})(); - -var proto = defineProps(function chalk() {}, styles); - -function build(_styles) { - var builder = function () { - return applyStyle.apply(builder, arguments); - }; - - builder._styles = _styles; - builder.enabled = this.enabled; - // __proto__ is used because we must return a function, but there is - // no way to create a function with a different prototype. - /* eslint-disable no-proto */ - builder.__proto__ = proto; - - return builder; -} - -function applyStyle() { - // support varags, but simply cast to string in case there's only one arg - var args = arguments; - var argsLen = args.length; - var str = argsLen !== 0 && String(arguments[0]); - - if (argsLen > 1) { - // don't slice `arguments`, it prevents v8 optimizations - for (var a = 1; a < argsLen; a++) { - str += ' ' + args[a]; - } - } - - if (!this.enabled || !str) { - return str; - } - - var nestedStyles = this._styles; - var i = nestedStyles.length; - - // Turns out that on Windows dimmed gray text becomes invisible in cmd.exe, - // see https://github.com/chalk/chalk/issues/58 - // If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop. - var originalDim = ansiStyles.dim.open; - if (isSimpleWindowsTerm && (nestedStyles.indexOf('gray') !== -1 || nestedStyles.indexOf('grey') !== -1)) { - ansiStyles.dim.open = ''; - } - - while (i--) { - var code = ansiStyles[nestedStyles[i]]; - - // Replace any instances already present with a re-opening code - // otherwise only the part of the string until said closing code - // will be colored, and the rest will simply be 'plain'. - str = code.open + str.replace(code.closeRe, code.open) + code.close; - } - - // Reset the original 'dim' if we changed it to work around the Windows dimmed gray issue. - ansiStyles.dim.open = originalDim; - - return str; -} - -function init() { - var ret = {}; - - Object.keys(styles).forEach(function (name) { - ret[name] = { - get: function () { - return build.call(this, [name]); - } - }; - }); - - return ret; -} - -defineProps(Chalk.prototype, init()); - -var index$6 = new Chalk(); -var styles_1 = ansiStyles; -var hasColor = hasAnsi; -var stripColor = stripAnsi; -var supportsColor_1 = supportsColor; - -index$6.styles = styles_1; -index$6.hasColor = hasColor; -index$6.stripColor = stripColor; -index$6.supportsColor = supportsColor_1; - -var index$2 = createCommonjsModule(function (module, exports) { -"use strict"; - -exports.__esModule = true; - -exports.default = function (rawLines, lineNumber, colNumber) { - var opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; - - colNumber = Math.max(colNumber, 0); - - var highlighted = opts.highlightCode && _chalk2.default.supportsColor || opts.forceColor; - var chalk = _chalk2.default; - if (opts.forceColor) { - chalk = new _chalk2.default.constructor({ enabled: true }); - } - var maybeHighlight = function maybeHighlight(chalkFn, string) { - return highlighted ? chalkFn(string) : string; - }; - var defs = getDefs(chalk); - if (highlighted) rawLines = highlight(defs, rawLines); - - var linesAbove = opts.linesAbove || 2; - var linesBelow = opts.linesBelow || 3; - - var lines = rawLines.split(NEWLINE); - var start = Math.max(lineNumber - (linesAbove + 1), 0); - var end = Math.min(lines.length, lineNumber + linesBelow); - - if (!lineNumber && !colNumber) { - start = 0; - end = lines.length; - } - - var numberMaxWidth = String(end).length; - - var frame = lines.slice(start, end).map(function (line, index) { - var number = start + 1 + index; - var paddedNumber = (" " + number).slice(-numberMaxWidth); - var gutter = " " + paddedNumber + " | "; - if (number === lineNumber) { - var markerLine = ""; - if (colNumber) { - var markerSpacing = line.slice(0, colNumber - 1).replace(/[^\t]/g, " "); - markerLine = ["\n ", maybeHighlight(defs.gutter, gutter.replace(/\d/g, " ")), markerSpacing, maybeHighlight(defs.marker, "^")].join(""); - } - return [maybeHighlight(defs.marker, ">"), maybeHighlight(defs.gutter, gutter), line, markerLine].join(""); - } else { - return " " + maybeHighlight(defs.gutter, gutter) + line; - } - }).join("\n"); - - if (highlighted) { - return chalk.reset(frame); - } else { - return frame; - } -}; - -var _jsTokens = index$4; - -var _jsTokens2 = _interopRequireDefault(_jsTokens); - -var _esutils = utils; - -var _esutils2 = _interopRequireDefault(_esutils); - -var _chalk = index$6; - -var _chalk2 = _interopRequireDefault(_chalk); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function getDefs(chalk) { - return { - keyword: chalk.cyan, - capitalized: chalk.yellow, - jsx_tag: chalk.yellow, - punctuator: chalk.yellow, - - number: chalk.magenta, - string: chalk.green, - regex: chalk.magenta, - comment: chalk.grey, - invalid: chalk.white.bgRed.bold, - gutter: chalk.grey, - marker: chalk.red.bold - }; -} - -var NEWLINE = /\r\n|[\n\r\u2028\u2029]/; - -var JSX_TAG = /^[a-z][\w-]*$/i; - -var BRACKET = /^[()\[\]{}]$/; - -function getTokenType(match) { - var _match$slice = match.slice(-2), - offset = _match$slice[0], - text = _match$slice[1]; - - var token = (0, _jsTokens.matchToToken)(match); - - if (token.type === "name") { - if (_esutils2.default.keyword.isReservedWordES6(token.value)) { - return "keyword"; - } - - if (JSX_TAG.test(token.value) && (text[offset - 1] === "<" || text.substr(offset - 2, 2) == " 0) { - throw new Error('Invalid string. Length must be a multiple of 4') - } - - // the number of equal signs (place holders) - // if there are two placeholders, than the two characters before it - // represent one byte - // if there is only one, then the three characters before it represent 2 bytes - // this is just a cheap hack to not do indexOf twice - placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0; - - // base64 is 4/3 + up to two characters of the original data - arr = new Arr(len * 3 / 4 - placeHolders); - - // if there are placeholders, only get up to the last complete 4 chars - l = placeHolders > 0 ? len - 4 : len; - - var L = 0; - - for (i = 0, j = 0; i < l; i += 4, j += 3) { - tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]; - arr[L++] = (tmp >> 16) & 0xFF; - arr[L++] = (tmp >> 8) & 0xFF; - arr[L++] = tmp & 0xFF; - } - - if (placeHolders === 2) { - tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4); - arr[L++] = tmp & 0xFF; - } else if (placeHolders === 1) { - tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2); - arr[L++] = (tmp >> 8) & 0xFF; - arr[L++] = tmp & 0xFF; - } - - return arr -} - -function tripletToBase64 (num) { - return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F] -} - -function encodeChunk (uint8, start, end) { - var tmp; - var output = []; - for (var i = start; i < end; i += 3) { - tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]); - output.push(tripletToBase64(tmp)); - } - return output.join('') -} - -function fromByteArray (uint8) { - if (!inited) { - init$1(); - } - var tmp; - var len = uint8.length; - var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes - var output = ''; - var parts = []; - var maxChunkLength = 16383; // must be multiple of 3 - - // go through the array every three bytes, we'll deal with trailing stuff later - for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { - parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))); - } - - // pad the end with zeros, but make sure to not forget the extra bytes - if (extraBytes === 1) { - tmp = uint8[len - 1]; - output += lookup[tmp >> 2]; - output += lookup[(tmp << 4) & 0x3F]; - output += '=='; - } else if (extraBytes === 2) { - tmp = (uint8[len - 2] << 8) + (uint8[len - 1]); - output += lookup[tmp >> 10]; - output += lookup[(tmp >> 4) & 0x3F]; - output += lookup[(tmp << 2) & 0x3F]; - output += '='; - } - - parts.push(output); - - return parts.join('') -} - -function read (buffer, offset, isLE, mLen, nBytes) { - var e, m; - var eLen = nBytes * 8 - mLen - 1; - var eMax = (1 << eLen) - 1; - var eBias = eMax >> 1; - var nBits = -7; - var i = isLE ? (nBytes - 1) : 0; - var d = isLE ? -1 : 1; - var s = buffer[offset + i]; - - i += d; - - e = s & ((1 << (-nBits)) - 1); - s >>= (-nBits); - nBits += eLen; - for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} - - m = e & ((1 << (-nBits)) - 1); - e >>= (-nBits); - nBits += mLen; - for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} - - if (e === 0) { - e = 1 - eBias; - } else if (e === eMax) { - return m ? NaN : ((s ? -1 : 1) * Infinity) - } else { - m = m + Math.pow(2, mLen); - e = e - eBias; - } - return (s ? -1 : 1) * m * Math.pow(2, e - mLen) -} - -function write (buffer, value, offset, isLE, mLen, nBytes) { - var e, m, c; - var eLen = nBytes * 8 - mLen - 1; - var eMax = (1 << eLen) - 1; - var eBias = eMax >> 1; - var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0); - var i = isLE ? 0 : (nBytes - 1); - var d = isLE ? 1 : -1; - var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0; - - value = Math.abs(value); - - if (isNaN(value) || value === Infinity) { - m = isNaN(value) ? 1 : 0; - e = eMax; - } else { - e = Math.floor(Math.log(value) / Math.LN2); - if (value * (c = Math.pow(2, -e)) < 1) { - e--; - c *= 2; - } - if (e + eBias >= 1) { - value += rt / c; - } else { - value += rt * Math.pow(2, 1 - eBias); - } - if (value * c >= 2) { - e++; - c /= 2; - } - - if (e + eBias >= eMax) { - m = 0; - e = eMax; - } else if (e + eBias >= 1) { - m = (value * c - 1) * Math.pow(2, mLen); - e = e + eBias; - } else { - m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); - e = 0; - } - } - - for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} - - e = (e << mLen) | m; - eLen += mLen; - for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} - - buffer[offset + i - d] |= s * 128; -} - -var toString = {}.toString; - -var isArray$1 = Array.isArray || function (arr) { - return toString.call(arr) == '[object Array]'; -}; - -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ -/* eslint-disable no-proto */ - - -var INSPECT_MAX_BYTES = 50; - -/** - * If `Buffer.TYPED_ARRAY_SUPPORT`: - * === true Use Uint8Array implementation (fastest) - * === false Use Object implementation (most compatible, even IE6) - * - * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, - * Opera 11.6+, iOS 4.2+. - * - * Due to various browser bugs, sometimes the Object implementation will be used even - * when the browser supports typed arrays. - * - * Note: - * - * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, - * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. - * - * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. - * - * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of - * incorrect length in some situations. - - * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they - * get the Object implementation, which is slower but behaves correctly. - */ -Buffer.TYPED_ARRAY_SUPPORT = global$1.TYPED_ARRAY_SUPPORT !== undefined - ? global$1.TYPED_ARRAY_SUPPORT - : true; - -function kMaxLength () { - return Buffer.TYPED_ARRAY_SUPPORT - ? 0x7fffffff - : 0x3fffffff -} - -function createBuffer (that, length) { - if (kMaxLength() < length) { - throw new RangeError('Invalid typed array length') - } - if (Buffer.TYPED_ARRAY_SUPPORT) { - // Return an augmented `Uint8Array` instance, for best performance - that = new Uint8Array(length); - that.__proto__ = Buffer.prototype; - } else { - // Fallback: Return an object instance of the Buffer class - if (that === null) { - that = new Buffer(length); - } - that.length = length; - } - - return that -} - -/** - * The Buffer constructor returns instances of `Uint8Array` that have their - * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of - * `Uint8Array`, so the returned instances will have all the node `Buffer` methods - * and the `Uint8Array` methods. Square bracket notation works as expected -- it - * returns a single octet. - * - * The `Uint8Array` prototype remains unmodified. - */ - -function Buffer (arg, encodingOrOffset, length) { - if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) { - return new Buffer(arg, encodingOrOffset, length) - } - - // Common case. - if (typeof arg === 'number') { - if (typeof encodingOrOffset === 'string') { - throw new Error( - 'If encoding is specified then the first argument must be a string' - ) - } - return allocUnsafe(this, arg) - } - return from(this, arg, encodingOrOffset, length) -} - -Buffer.poolSize = 8192; // not used by this implementation - -// TODO: Legacy, not needed anymore. Remove in next major version. -Buffer._augment = function (arr) { - arr.__proto__ = Buffer.prototype; - return arr -}; - -function from (that, value, encodingOrOffset, length) { - if (typeof value === 'number') { - throw new TypeError('"value" argument must not be a number') - } - - if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { - return fromArrayBuffer(that, value, encodingOrOffset, length) - } - - if (typeof value === 'string') { - return fromString(that, value, encodingOrOffset) - } - - return fromObject(that, value) -} - -/** - * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError - * if value is a number. - * Buffer.from(str[, encoding]) - * Buffer.from(array) - * Buffer.from(buffer) - * Buffer.from(arrayBuffer[, byteOffset[, length]]) - **/ -Buffer.from = function (value, encodingOrOffset, length) { - return from(null, value, encodingOrOffset, length) -}; - -if (Buffer.TYPED_ARRAY_SUPPORT) { - Buffer.prototype.__proto__ = Uint8Array.prototype; - Buffer.__proto__ = Uint8Array; - if (typeof Symbol !== 'undefined' && Symbol.species && - Buffer[Symbol.species] === Buffer) { - // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 - // Object.defineProperty(Buffer, Symbol.species, { - // value: null, - // configurable: true - // }) - } -} - -function assertSize (size) { - if (typeof size !== 'number') { - throw new TypeError('"size" argument must be a number') - } else if (size < 0) { - throw new RangeError('"size" argument must not be negative') - } -} - -function alloc (that, size, fill, encoding) { - assertSize(size); - if (size <= 0) { - return createBuffer(that, size) - } - if (fill !== undefined) { - // Only pay attention to encoding if it's a string. This - // prevents accidentally sending in a number that would - // be interpretted as a start offset. - return typeof encoding === 'string' - ? createBuffer(that, size).fill(fill, encoding) - : createBuffer(that, size).fill(fill) - } - return createBuffer(that, size) -} - -/** - * Creates a new filled Buffer instance. - * alloc(size[, fill[, encoding]]) - **/ -Buffer.alloc = function (size, fill, encoding) { - return alloc(null, size, fill, encoding) -}; - -function allocUnsafe (that, size) { - assertSize(size); - that = createBuffer(that, size < 0 ? 0 : checked(size) | 0); - if (!Buffer.TYPED_ARRAY_SUPPORT) { - for (var i = 0; i < size; ++i) { - that[i] = 0; - } - } - return that -} - -/** - * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. - * */ -Buffer.allocUnsafe = function (size) { - return allocUnsafe(null, size) -}; -/** - * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. - */ -Buffer.allocUnsafeSlow = function (size) { - return allocUnsafe(null, size) -}; - -function fromString (that, string, encoding) { - if (typeof encoding !== 'string' || encoding === '') { - encoding = 'utf8'; - } - - if (!Buffer.isEncoding(encoding)) { - throw new TypeError('"encoding" must be a valid string encoding') - } - - var length = byteLength(string, encoding) | 0; - that = createBuffer(that, length); - - var actual = that.write(string, encoding); - - if (actual !== length) { - // Writing a hex string, for example, that contains invalid characters will - // cause everything after the first invalid character to be ignored. (e.g. - // 'abxxcd' will be treated as 'ab') - that = that.slice(0, actual); - } - - return that -} - -function fromArrayLike (that, array) { - var length = array.length < 0 ? 0 : checked(array.length) | 0; - that = createBuffer(that, length); - for (var i = 0; i < length; i += 1) { - that[i] = array[i] & 255; - } - return that -} - -function fromArrayBuffer (that, array, byteOffset, length) { - array.byteLength; // this throws if `array` is not a valid ArrayBuffer - - if (byteOffset < 0 || array.byteLength < byteOffset) { - throw new RangeError('\'offset\' is out of bounds') - } - - if (array.byteLength < byteOffset + (length || 0)) { - throw new RangeError('\'length\' is out of bounds') - } - - if (byteOffset === undefined && length === undefined) { - array = new Uint8Array(array); - } else if (length === undefined) { - array = new Uint8Array(array, byteOffset); - } else { - array = new Uint8Array(array, byteOffset, length); - } - - if (Buffer.TYPED_ARRAY_SUPPORT) { - // Return an augmented `Uint8Array` instance, for best performance - that = array; - that.__proto__ = Buffer.prototype; - } else { - // Fallback: Return an object instance of the Buffer class - that = fromArrayLike(that, array); - } - return that -} - -function fromObject (that, obj) { - if (internalIsBuffer(obj)) { - var len = checked(obj.length) | 0; - that = createBuffer(that, len); - - if (that.length === 0) { - return that - } - - obj.copy(that, 0, 0, len); - return that - } - - if (obj) { - if ((typeof ArrayBuffer !== 'undefined' && - obj.buffer instanceof ArrayBuffer) || 'length' in obj) { - if (typeof obj.length !== 'number' || isnan(obj.length)) { - return createBuffer(that, 0) - } - return fromArrayLike(that, obj) - } - - if (obj.type === 'Buffer' && isArray$1(obj.data)) { - return fromArrayLike(that, obj.data) - } - } - - throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.') -} - -function checked (length) { - // Note: cannot use `length < kMaxLength()` here because that fails when - // length is NaN (which is otherwise coerced to zero.) - if (length >= kMaxLength()) { - throw new RangeError('Attempt to allocate Buffer larger than maximum ' + - 'size: 0x' + kMaxLength().toString(16) + ' bytes') - } - return length | 0 -} - - -Buffer.isBuffer = isBuffer; -function internalIsBuffer (b) { - return !!(b != null && b._isBuffer) -} - -Buffer.compare = function compare (a, b) { - if (!internalIsBuffer(a) || !internalIsBuffer(b)) { - throw new TypeError('Arguments must be Buffers') - } - - if (a === b) return 0 - - var x = a.length; - var y = b.length; - - for (var i = 0, len = Math.min(x, y); i < len; ++i) { - if (a[i] !== b[i]) { - x = a[i]; - y = b[i]; - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -}; - -Buffer.isEncoding = function isEncoding (encoding) { - switch (String(encoding).toLowerCase()) { - case 'hex': - case 'utf8': - case 'utf-8': - case 'ascii': - case 'latin1': - case 'binary': - case 'base64': - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return true - default: - return false - } -}; - -Buffer.concat = function concat (list, length) { - if (!isArray$1(list)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - - if (list.length === 0) { - return Buffer.alloc(0) - } - - var i; - if (length === undefined) { - length = 0; - for (i = 0; i < list.length; ++i) { - length += list[i].length; - } - } - - var buffer = Buffer.allocUnsafe(length); - var pos = 0; - for (i = 0; i < list.length; ++i) { - var buf = list[i]; - if (!internalIsBuffer(buf)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - buf.copy(buffer, pos); - pos += buf.length; - } - return buffer -}; - -function byteLength (string, encoding) { - if (internalIsBuffer(string)) { - return string.length - } - if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && - (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { - return string.byteLength - } - if (typeof string !== 'string') { - string = '' + string; - } - - var len = string.length; - if (len === 0) return 0 - - // Use a for loop to avoid recursion - var loweredCase = false; - for (;;) { - switch (encoding) { - case 'ascii': - case 'latin1': - case 'binary': - return len - case 'utf8': - case 'utf-8': - case undefined: - return utf8ToBytes(string).length - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return len * 2 - case 'hex': - return len >>> 1 - case 'base64': - return base64ToBytes(string).length - default: - if (loweredCase) return utf8ToBytes(string).length // assume utf8 - encoding = ('' + encoding).toLowerCase(); - loweredCase = true; - } - } -} -Buffer.byteLength = byteLength; - -function slowToString (encoding, start, end) { - var loweredCase = false; - - // No need to verify that "this.length <= MAX_UINT32" since it's a read-only - // property of a typed array. - - // This behaves neither like String nor Uint8Array in that we set start/end - // to their upper/lower bounds if the value passed is out of range. - // undefined is handled specially as per ECMA-262 6th Edition, - // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. - if (start === undefined || start < 0) { - start = 0; - } - // Return early if start > this.length. Done here to prevent potential uint32 - // coercion fail below. - if (start > this.length) { - return '' - } - - if (end === undefined || end > this.length) { - end = this.length; - } - - if (end <= 0) { - return '' - } - - // Force coersion to uint32. This will also coerce falsey/NaN values to 0. - end >>>= 0; - start >>>= 0; - - if (end <= start) { - return '' - } - - if (!encoding) encoding = 'utf8'; - - while (true) { - switch (encoding) { - case 'hex': - return hexSlice(this, start, end) - - case 'utf8': - case 'utf-8': - return utf8Slice(this, start, end) - - case 'ascii': - return asciiSlice(this, start, end) - - case 'latin1': - case 'binary': - return latin1Slice(this, start, end) - - case 'base64': - return base64Slice(this, start, end) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return utf16leSlice(this, start, end) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = (encoding + '').toLowerCase(); - loweredCase = true; - } - } -} - -// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect -// Buffer instances. -Buffer.prototype._isBuffer = true; - -function swap (b, n, m) { - var i = b[n]; - b[n] = b[m]; - b[m] = i; -} - -Buffer.prototype.swap16 = function swap16 () { - var len = this.length; - if (len % 2 !== 0) { - throw new RangeError('Buffer size must be a multiple of 16-bits') - } - for (var i = 0; i < len; i += 2) { - swap(this, i, i + 1); - } - return this -}; - -Buffer.prototype.swap32 = function swap32 () { - var len = this.length; - if (len % 4 !== 0) { - throw new RangeError('Buffer size must be a multiple of 32-bits') - } - for (var i = 0; i < len; i += 4) { - swap(this, i, i + 3); - swap(this, i + 1, i + 2); - } - return this -}; - -Buffer.prototype.swap64 = function swap64 () { - var len = this.length; - if (len % 8 !== 0) { - throw new RangeError('Buffer size must be a multiple of 64-bits') - } - for (var i = 0; i < len; i += 8) { - swap(this, i, i + 7); - swap(this, i + 1, i + 6); - swap(this, i + 2, i + 5); - swap(this, i + 3, i + 4); - } - return this -}; - -Buffer.prototype.toString = function toString () { - var length = this.length | 0; - if (length === 0) return '' - if (arguments.length === 0) return utf8Slice(this, 0, length) - return slowToString.apply(this, arguments) -}; - -Buffer.prototype.equals = function equals (b) { - if (!internalIsBuffer(b)) throw new TypeError('Argument must be a Buffer') - if (this === b) return true - return Buffer.compare(this, b) === 0 -}; - -Buffer.prototype.inspect = function inspect () { - var str = ''; - var max = INSPECT_MAX_BYTES; - if (this.length > 0) { - str = this.toString('hex', 0, max).match(/.{2}/g).join(' '); - if (this.length > max) str += ' ... '; - } - return '' -}; - -Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { - if (!internalIsBuffer(target)) { - throw new TypeError('Argument must be a Buffer') - } - - if (start === undefined) { - start = 0; - } - if (end === undefined) { - end = target ? target.length : 0; - } - if (thisStart === undefined) { - thisStart = 0; - } - if (thisEnd === undefined) { - thisEnd = this.length; - } - - if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { - throw new RangeError('out of range index') - } - - if (thisStart >= thisEnd && start >= end) { - return 0 - } - if (thisStart >= thisEnd) { - return -1 - } - if (start >= end) { - return 1 - } - - start >>>= 0; - end >>>= 0; - thisStart >>>= 0; - thisEnd >>>= 0; - - if (this === target) return 0 - - var x = thisEnd - thisStart; - var y = end - start; - var len = Math.min(x, y); - - var thisCopy = this.slice(thisStart, thisEnd); - var targetCopy = target.slice(start, end); - - for (var i = 0; i < len; ++i) { - if (thisCopy[i] !== targetCopy[i]) { - x = thisCopy[i]; - y = targetCopy[i]; - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -}; - -// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, -// OR the last index of `val` in `buffer` at offset <= `byteOffset`. -// -// Arguments: -// - buffer - a Buffer to search -// - val - a string, Buffer, or number -// - byteOffset - an index into `buffer`; will be clamped to an int32 -// - encoding - an optional encoding, relevant is val is a string -// - dir - true for indexOf, false for lastIndexOf -function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { - // Empty buffer means no match - if (buffer.length === 0) return -1 - - // Normalize byteOffset - if (typeof byteOffset === 'string') { - encoding = byteOffset; - byteOffset = 0; - } else if (byteOffset > 0x7fffffff) { - byteOffset = 0x7fffffff; - } else if (byteOffset < -0x80000000) { - byteOffset = -0x80000000; - } - byteOffset = +byteOffset; // Coerce to Number. - if (isNaN(byteOffset)) { - // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer - byteOffset = dir ? 0 : (buffer.length - 1); - } - - // Normalize byteOffset: negative offsets start from the end of the buffer - if (byteOffset < 0) byteOffset = buffer.length + byteOffset; - if (byteOffset >= buffer.length) { - if (dir) return -1 - else byteOffset = buffer.length - 1; - } else if (byteOffset < 0) { - if (dir) byteOffset = 0; - else return -1 - } - - // Normalize val - if (typeof val === 'string') { - val = Buffer.from(val, encoding); - } - - // Finally, search either indexOf (if dir is true) or lastIndexOf - if (internalIsBuffer(val)) { - // Special case: looking for empty string/buffer always fails - if (val.length === 0) { - return -1 - } - return arrayIndexOf(buffer, val, byteOffset, encoding, dir) - } else if (typeof val === 'number') { - val = val & 0xFF; // Search for a byte value [0-255] - if (Buffer.TYPED_ARRAY_SUPPORT && - typeof Uint8Array.prototype.indexOf === 'function') { - if (dir) { - return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) - } else { - return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) - } - } - return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) - } - - throw new TypeError('val must be string, number or Buffer') -} - -function arrayIndexOf (arr, val, byteOffset, encoding, dir) { - var indexSize = 1; - var arrLength = arr.length; - var valLength = val.length; - - if (encoding !== undefined) { - encoding = String(encoding).toLowerCase(); - if (encoding === 'ucs2' || encoding === 'ucs-2' || - encoding === 'utf16le' || encoding === 'utf-16le') { - if (arr.length < 2 || val.length < 2) { - return -1 - } - indexSize = 2; - arrLength /= 2; - valLength /= 2; - byteOffset /= 2; - } - } - - function read$$1 (buf, i) { - if (indexSize === 1) { - return buf[i] - } else { - return buf.readUInt16BE(i * indexSize) - } - } - - var i; - if (dir) { - var foundIndex = -1; - for (i = byteOffset; i < arrLength; i++) { - if (read$$1(arr, i) === read$$1(val, foundIndex === -1 ? 0 : i - foundIndex)) { - if (foundIndex === -1) foundIndex = i; - if (i - foundIndex + 1 === valLength) return foundIndex * indexSize - } else { - if (foundIndex !== -1) i -= i - foundIndex; - foundIndex = -1; - } - } - } else { - if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength; - for (i = byteOffset; i >= 0; i--) { - var found = true; - for (var j = 0; j < valLength; j++) { - if (read$$1(arr, i + j) !== read$$1(val, j)) { - found = false; - break - } - } - if (found) return i - } - } - - return -1 -} - -Buffer.prototype.includes = function includes (val, byteOffset, encoding) { - return this.indexOf(val, byteOffset, encoding) !== -1 -}; - -Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, true) -}; - -Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, false) -}; - -function hexWrite (buf, string, offset, length) { - offset = Number(offset) || 0; - var remaining = buf.length - offset; - if (!length) { - length = remaining; - } else { - length = Number(length); - if (length > remaining) { - length = remaining; - } - } - - // must be an even number of digits - var strLen = string.length; - if (strLen % 2 !== 0) throw new TypeError('Invalid hex string') - - if (length > strLen / 2) { - length = strLen / 2; - } - for (var i = 0; i < length; ++i) { - var parsed = parseInt(string.substr(i * 2, 2), 16); - if (isNaN(parsed)) return i - buf[offset + i] = parsed; - } - return i -} - -function utf8Write (buf, string, offset, length) { - return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) -} - -function asciiWrite (buf, string, offset, length) { - return blitBuffer(asciiToBytes(string), buf, offset, length) -} - -function latin1Write (buf, string, offset, length) { - return asciiWrite(buf, string, offset, length) -} - -function base64Write (buf, string, offset, length) { - return blitBuffer(base64ToBytes(string), buf, offset, length) -} - -function ucs2Write (buf, string, offset, length) { - return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) -} - -Buffer.prototype.write = function write$$1 (string, offset, length, encoding) { - // Buffer#write(string) - if (offset === undefined) { - encoding = 'utf8'; - length = this.length; - offset = 0; - // Buffer#write(string, encoding) - } else if (length === undefined && typeof offset === 'string') { - encoding = offset; - length = this.length; - offset = 0; - // Buffer#write(string, offset[, length][, encoding]) - } else if (isFinite(offset)) { - offset = offset | 0; - if (isFinite(length)) { - length = length | 0; - if (encoding === undefined) encoding = 'utf8'; - } else { - encoding = length; - length = undefined; - } - // legacy write(string, encoding, offset, length) - remove in v0.13 - } else { - throw new Error( - 'Buffer.write(string, encoding, offset[, length]) is no longer supported' - ) - } - - var remaining = this.length - offset; - if (length === undefined || length > remaining) length = remaining; - - if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { - throw new RangeError('Attempt to write outside buffer bounds') - } - - if (!encoding) encoding = 'utf8'; - - var loweredCase = false; - for (;;) { - switch (encoding) { - case 'hex': - return hexWrite(this, string, offset, length) - - case 'utf8': - case 'utf-8': - return utf8Write(this, string, offset, length) - - case 'ascii': - return asciiWrite(this, string, offset, length) - - case 'latin1': - case 'binary': - return latin1Write(this, string, offset, length) - - case 'base64': - // Warning: maxLength not taken into account in base64Write - return base64Write(this, string, offset, length) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return ucs2Write(this, string, offset, length) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = ('' + encoding).toLowerCase(); - loweredCase = true; - } - } -}; - -Buffer.prototype.toJSON = function toJSON () { - return { - type: 'Buffer', - data: Array.prototype.slice.call(this._arr || this, 0) - } -}; - -function base64Slice (buf, start, end) { - if (start === 0 && end === buf.length) { - return fromByteArray(buf) - } else { - return fromByteArray(buf.slice(start, end)) - } -} - -function utf8Slice (buf, start, end) { - end = Math.min(buf.length, end); - var res = []; - - var i = start; - while (i < end) { - var firstByte = buf[i]; - var codePoint = null; - var bytesPerSequence = (firstByte > 0xEF) ? 4 - : (firstByte > 0xDF) ? 3 - : (firstByte > 0xBF) ? 2 - : 1; - - if (i + bytesPerSequence <= end) { - var secondByte, thirdByte, fourthByte, tempCodePoint; - - switch (bytesPerSequence) { - case 1: - if (firstByte < 0x80) { - codePoint = firstByte; - } - break - case 2: - secondByte = buf[i + 1]; - if ((secondByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F); - if (tempCodePoint > 0x7F) { - codePoint = tempCodePoint; - } - } - break - case 3: - secondByte = buf[i + 1]; - thirdByte = buf[i + 2]; - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F); - if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { - codePoint = tempCodePoint; - } - } - break - case 4: - secondByte = buf[i + 1]; - thirdByte = buf[i + 2]; - fourthByte = buf[i + 3]; - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F); - if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { - codePoint = tempCodePoint; - } - } - } - } - - if (codePoint === null) { - // we did not generate a valid codePoint so insert a - // replacement char (U+FFFD) and advance only 1 byte - codePoint = 0xFFFD; - bytesPerSequence = 1; - } else if (codePoint > 0xFFFF) { - // encode to utf16 (surrogate pair dance) - codePoint -= 0x10000; - res.push(codePoint >>> 10 & 0x3FF | 0xD800); - codePoint = 0xDC00 | codePoint & 0x3FF; - } - - res.push(codePoint); - i += bytesPerSequence; - } - - return decodeCodePointsArray(res) -} - -// Based on http://stackoverflow.com/a/22747272/680742, the browser with -// the lowest limit is Chrome, with 0x10000 args. -// We go 1 magnitude less, for safety -var MAX_ARGUMENTS_LENGTH = 0x1000; - -function decodeCodePointsArray (codePoints) { - var len = codePoints.length; - if (len <= MAX_ARGUMENTS_LENGTH) { - return String.fromCharCode.apply(String, codePoints) // avoid extra slice() - } - - // Decode in chunks to avoid "call stack size exceeded". - var res = ''; - var i = 0; - while (i < len) { - res += String.fromCharCode.apply( - String, - codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) - ); - } - return res -} - -function asciiSlice (buf, start, end) { - var ret = ''; - end = Math.min(buf.length, end); - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i] & 0x7F); - } - return ret -} - -function latin1Slice (buf, start, end) { - var ret = ''; - end = Math.min(buf.length, end); - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i]); - } - return ret -} - -function hexSlice (buf, start, end) { - var len = buf.length; - - if (!start || start < 0) start = 0; - if (!end || end < 0 || end > len) end = len; - - var out = ''; - for (var i = start; i < end; ++i) { - out += toHex(buf[i]); - } - return out -} - -function utf16leSlice (buf, start, end) { - var bytes = buf.slice(start, end); - var res = ''; - for (var i = 0; i < bytes.length; i += 2) { - res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256); - } - return res -} - -Buffer.prototype.slice = function slice (start, end) { - var len = this.length; - start = ~~start; - end = end === undefined ? len : ~~end; - - if (start < 0) { - start += len; - if (start < 0) start = 0; - } else if (start > len) { - start = len; - } - - if (end < 0) { - end += len; - if (end < 0) end = 0; - } else if (end > len) { - end = len; - } - - if (end < start) end = start; - - var newBuf; - if (Buffer.TYPED_ARRAY_SUPPORT) { - newBuf = this.subarray(start, end); - newBuf.__proto__ = Buffer.prototype; - } else { - var sliceLen = end - start; - newBuf = new Buffer(sliceLen, undefined); - for (var i = 0; i < sliceLen; ++i) { - newBuf[i] = this[i + start]; - } - } - - return newBuf -}; - -/* - * Need to make sure that buffer isn't trying to write out of bounds. - */ -function checkOffset (offset, ext, length) { - if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') - if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') -} - -Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { - offset = offset | 0; - byteLength = byteLength | 0; - if (!noAssert) checkOffset(offset, byteLength, this.length); - - var val = this[offset]; - var mul = 1; - var i = 0; - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul; - } - - return val -}; - -Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { - offset = offset | 0; - byteLength = byteLength | 0; - if (!noAssert) { - checkOffset(offset, byteLength, this.length); - } - - var val = this[offset + --byteLength]; - var mul = 1; - while (byteLength > 0 && (mul *= 0x100)) { - val += this[offset + --byteLength] * mul; - } - - return val -}; - -Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { - if (!noAssert) checkOffset(offset, 1, this.length); - return this[offset] -}; - -Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length); - return this[offset] | (this[offset + 1] << 8) -}; - -Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length); - return (this[offset] << 8) | this[offset + 1] -}; - -Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length); - - return ((this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16)) + - (this[offset + 3] * 0x1000000) -}; - -Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length); - - return (this[offset] * 0x1000000) + - ((this[offset + 1] << 16) | - (this[offset + 2] << 8) | - this[offset + 3]) -}; - -Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { - offset = offset | 0; - byteLength = byteLength | 0; - if (!noAssert) checkOffset(offset, byteLength, this.length); - - var val = this[offset]; - var mul = 1; - var i = 0; - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul; - } - mul *= 0x80; - - if (val >= mul) val -= Math.pow(2, 8 * byteLength); - - return val -}; - -Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { - offset = offset | 0; - byteLength = byteLength | 0; - if (!noAssert) checkOffset(offset, byteLength, this.length); - - var i = byteLength; - var mul = 1; - var val = this[offset + --i]; - while (i > 0 && (mul *= 0x100)) { - val += this[offset + --i] * mul; - } - mul *= 0x80; - - if (val >= mul) val -= Math.pow(2, 8 * byteLength); - - return val -}; - -Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { - if (!noAssert) checkOffset(offset, 1, this.length); - if (!(this[offset] & 0x80)) return (this[offset]) - return ((0xff - this[offset] + 1) * -1) -}; - -Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length); - var val = this[offset] | (this[offset + 1] << 8); - return (val & 0x8000) ? val | 0xFFFF0000 : val -}; - -Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length); - var val = this[offset + 1] | (this[offset] << 8); - return (val & 0x8000) ? val | 0xFFFF0000 : val -}; - -Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length); - - return (this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16) | - (this[offset + 3] << 24) -}; - -Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length); - - return (this[offset] << 24) | - (this[offset + 1] << 16) | - (this[offset + 2] << 8) | - (this[offset + 3]) -}; - -Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length); - return read(this, offset, true, 23, 4) -}; - -Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length); - return read(this, offset, false, 23, 4) -}; - -Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 8, this.length); - return read(this, offset, true, 52, 8) -}; - -Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 8, this.length); - return read(this, offset, false, 52, 8) -}; - -function checkInt (buf, value, offset, ext, max, min) { - if (!internalIsBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') - if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') - if (offset + ext > buf.length) throw new RangeError('Index out of range') -} - -Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { - value = +value; - offset = offset | 0; - byteLength = byteLength | 0; - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1; - checkInt(this, value, offset, byteLength, maxBytes, 0); - } - - var mul = 1; - var i = 0; - this[offset] = value & 0xFF; - while (++i < byteLength && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF; - } - - return offset + byteLength -}; - -Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { - value = +value; - offset = offset | 0; - byteLength = byteLength | 0; - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1; - checkInt(this, value, offset, byteLength, maxBytes, 0); - } - - var i = byteLength - 1; - var mul = 1; - this[offset + i] = value & 0xFF; - while (--i >= 0 && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF; - } - - return offset + byteLength -}; - -Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0); - if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value); - this[offset] = (value & 0xff); - return offset + 1 -}; - -function objectWriteUInt16 (buf, value, offset, littleEndian) { - if (value < 0) value = 0xffff + value + 1; - for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { - buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> - (littleEndian ? i : 1 - i) * 8; - } -} - -Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value & 0xff); - this[offset + 1] = (value >>> 8); - } else { - objectWriteUInt16(this, value, offset, true); - } - return offset + 2 -}; - -Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 8); - this[offset + 1] = (value & 0xff); - } else { - objectWriteUInt16(this, value, offset, false); - } - return offset + 2 -}; - -function objectWriteUInt32 (buf, value, offset, littleEndian) { - if (value < 0) value = 0xffffffff + value + 1; - for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { - buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff; - } -} - -Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset + 3] = (value >>> 24); - this[offset + 2] = (value >>> 16); - this[offset + 1] = (value >>> 8); - this[offset] = (value & 0xff); - } else { - objectWriteUInt32(this, value, offset, true); - } - return offset + 4 -}; - -Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 24); - this[offset + 1] = (value >>> 16); - this[offset + 2] = (value >>> 8); - this[offset + 3] = (value & 0xff); - } else { - objectWriteUInt32(this, value, offset, false); - } - return offset + 4 -}; - -Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) { - var limit = Math.pow(2, 8 * byteLength - 1); - - checkInt(this, value, offset, byteLength, limit - 1, -limit); - } - - var i = 0; - var mul = 1; - var sub = 0; - this[offset] = value & 0xFF; - while (++i < byteLength && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { - sub = 1; - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; - } - - return offset + byteLength -}; - -Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) { - var limit = Math.pow(2, 8 * byteLength - 1); - - checkInt(this, value, offset, byteLength, limit - 1, -limit); - } - - var i = byteLength - 1; - var mul = 1; - var sub = 0; - this[offset + i] = value & 0xFF; - while (--i >= 0 && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { - sub = 1; - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF; - } - - return offset + byteLength -}; - -Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80); - if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value); - if (value < 0) value = 0xff + value + 1; - this[offset] = (value & 0xff); - return offset + 1 -}; - -Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value & 0xff); - this[offset + 1] = (value >>> 8); - } else { - objectWriteUInt16(this, value, offset, true); - } - return offset + 2 -}; - -Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 8); - this[offset + 1] = (value & 0xff); - } else { - objectWriteUInt16(this, value, offset, false); - } - return offset + 2 -}; - -Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value & 0xff); - this[offset + 1] = (value >>> 8); - this[offset + 2] = (value >>> 16); - this[offset + 3] = (value >>> 24); - } else { - objectWriteUInt32(this, value, offset, true); - } - return offset + 4 -}; - -Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { - value = +value; - offset = offset | 0; - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); - if (value < 0) value = 0xffffffff + value + 1; - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 24); - this[offset + 1] = (value >>> 16); - this[offset + 2] = (value >>> 8); - this[offset + 3] = (value & 0xff); - } else { - objectWriteUInt32(this, value, offset, false); - } - return offset + 4 -}; - -function checkIEEE754 (buf, value, offset, ext, max, min) { - if (offset + ext > buf.length) throw new RangeError('Index out of range') - if (offset < 0) throw new RangeError('Index out of range') -} - -function writeFloat (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38); - } - write(buf, value, offset, littleEndian, 23, 4); - return offset + 4 -} - -Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { - return writeFloat(this, value, offset, true, noAssert) -}; - -Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { - return writeFloat(this, value, offset, false, noAssert) -}; - -function writeDouble (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308); - } - write(buf, value, offset, littleEndian, 52, 8); - return offset + 8 -} - -Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { - return writeDouble(this, value, offset, true, noAssert) -}; - -Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { - return writeDouble(this, value, offset, false, noAssert) -}; - -// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) -Buffer.prototype.copy = function copy (target, targetStart, start, end) { - if (!start) start = 0; - if (!end && end !== 0) end = this.length; - if (targetStart >= target.length) targetStart = target.length; - if (!targetStart) targetStart = 0; - if (end > 0 && end < start) end = start; - - // Copy 0 bytes; we're done - if (end === start) return 0 - if (target.length === 0 || this.length === 0) return 0 - - // Fatal error conditions - if (targetStart < 0) { - throw new RangeError('targetStart out of bounds') - } - if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') - if (end < 0) throw new RangeError('sourceEnd out of bounds') - - // Are we oob? - if (end > this.length) end = this.length; - if (target.length - targetStart < end - start) { - end = target.length - targetStart + start; - } - - var len = end - start; - var i; - - if (this === target && start < targetStart && targetStart < end) { - // descending copy from end - for (i = len - 1; i >= 0; --i) { - target[i + targetStart] = this[i + start]; - } - } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { - // ascending copy from start - for (i = 0; i < len; ++i) { - target[i + targetStart] = this[i + start]; - } - } else { - Uint8Array.prototype.set.call( - target, - this.subarray(start, start + len), - targetStart - ); - } - - return len -}; - -// Usage: -// buffer.fill(number[, offset[, end]]) -// buffer.fill(buffer[, offset[, end]]) -// buffer.fill(string[, offset[, end]][, encoding]) -Buffer.prototype.fill = function fill (val, start, end, encoding) { - // Handle string cases: - if (typeof val === 'string') { - if (typeof start === 'string') { - encoding = start; - start = 0; - end = this.length; - } else if (typeof end === 'string') { - encoding = end; - end = this.length; - } - if (val.length === 1) { - var code = val.charCodeAt(0); - if (code < 256) { - val = code; - } - } - if (encoding !== undefined && typeof encoding !== 'string') { - throw new TypeError('encoding must be a string') - } - if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding) - } - } else if (typeof val === 'number') { - val = val & 255; - } - - // Invalid ranges are not set to a default, so can range check early. - if (start < 0 || this.length < start || this.length < end) { - throw new RangeError('Out of range index') - } - - if (end <= start) { - return this - } - - start = start >>> 0; - end = end === undefined ? this.length : end >>> 0; - - if (!val) val = 0; - - var i; - if (typeof val === 'number') { - for (i = start; i < end; ++i) { - this[i] = val; - } - } else { - var bytes = internalIsBuffer(val) - ? val - : utf8ToBytes(new Buffer(val, encoding).toString()); - var len = bytes.length; - for (i = 0; i < end - start; ++i) { - this[i + start] = bytes[i % len]; - } - } - - return this -}; - -// HELPER FUNCTIONS -// ================ - -var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g; - -function base64clean (str) { - // Node strips out invalid characters like \n and \t from the string, base64-js does not - str = stringtrim(str).replace(INVALID_BASE64_RE, ''); - // Node converts strings with length < 2 to '' - if (str.length < 2) return '' - // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not - while (str.length % 4 !== 0) { - str = str + '='; - } - return str -} - -function stringtrim (str) { - if (str.trim) return str.trim() - return str.replace(/^\s+|\s+$/g, '') -} - -function toHex (n) { - if (n < 16) return '0' + n.toString(16) - return n.toString(16) -} - -function utf8ToBytes (string, units) { - units = units || Infinity; - var codePoint; - var length = string.length; - var leadSurrogate = null; - var bytes = []; - - for (var i = 0; i < length; ++i) { - codePoint = string.charCodeAt(i); - - // is surrogate component - if (codePoint > 0xD7FF && codePoint < 0xE000) { - // last char was a lead - if (!leadSurrogate) { - // no lead yet - if (codePoint > 0xDBFF) { - // unexpected trail - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - continue - } else if (i + 1 === length) { - // unpaired lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - continue - } - - // valid lead - leadSurrogate = codePoint; - - continue - } - - // 2 leads in a row - if (codePoint < 0xDC00) { - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - leadSurrogate = codePoint; - continue - } - - // valid surrogate pair - codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000; - } else if (leadSurrogate) { - // valid bmp char, but last char was a lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); - } - - leadSurrogate = null; - - // encode utf8 - if (codePoint < 0x80) { - if ((units -= 1) < 0) break - bytes.push(codePoint); - } else if (codePoint < 0x800) { - if ((units -= 2) < 0) break - bytes.push( - codePoint >> 0x6 | 0xC0, - codePoint & 0x3F | 0x80 - ); - } else if (codePoint < 0x10000) { - if ((units -= 3) < 0) break - bytes.push( - codePoint >> 0xC | 0xE0, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ); - } else if (codePoint < 0x110000) { - if ((units -= 4) < 0) break - bytes.push( - codePoint >> 0x12 | 0xF0, - codePoint >> 0xC & 0x3F | 0x80, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ); - } else { - throw new Error('Invalid code point') - } - } - - return bytes -} - -function asciiToBytes (str) { - var byteArray = []; - for (var i = 0; i < str.length; ++i) { - // Node's code seems to be doing this and not & 0x7F.. - byteArray.push(str.charCodeAt(i) & 0xFF); - } - return byteArray -} - -function utf16leToBytes (str, units) { - var c, hi, lo; - var byteArray = []; - for (var i = 0; i < str.length; ++i) { - if ((units -= 2) < 0) break - - c = str.charCodeAt(i); - hi = c >> 8; - lo = c % 256; - byteArray.push(lo); - byteArray.push(hi); - } - - return byteArray -} - - -function base64ToBytes (str) { - return toByteArray(base64clean(str)) -} - -function blitBuffer (src, dst, offset, length) { - for (var i = 0; i < length; ++i) { - if ((i + offset >= dst.length) || (i >= src.length)) break - dst[i + offset] = src[i]; - } - return i -} - -function isnan (val) { - return val !== val // eslint-disable-line no-self-compare -} - - -// the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence -// The _isBuffer check is for Safari 5-7 support, because it's missing -// Object.prototype.constructor. Remove this eventually -function isBuffer(obj) { - return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj)) -} - -function isFastBuffer (obj) { - return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) -} - -// For Node v0.10 support. Remove this eventually. -function isSlowBuffer (obj) { - return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0)) -} - -var inherits; -if (typeof Object.create === 'function'){ - inherits = function inherits(ctor, superCtor) { - // implementation from standard node.js 'util' module - ctor.super_ = superCtor; - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - }; -} else { - inherits = function inherits(ctor, superCtor) { - ctor.super_ = superCtor; - var TempCtor = function () {}; - TempCtor.prototype = superCtor.prototype; - ctor.prototype = new TempCtor(); - ctor.prototype.constructor = ctor; - }; -} -var inherits$1 = inherits; - -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - - - -// Mark that a method should not be used. -// Returns a modified function which warns once by default. -// If --no-deprecation is set, then it is a no-op. - - - - - - -/** - * Echos the value of a value. Trys to print the value out - * in the best way possible given the different types. - * - * @param {Object} obj The object to print out. - * @param {Object} opts Optional options object that alters the output. - */ -/* legacy: obj, showHidden, depth, colors*/ -function inspect$1(obj, opts) { - // default options - var ctx = { - seen: [], - stylize: stylizeNoColor - }; - // legacy... - if (arguments.length >= 3) ctx.depth = arguments[2]; - if (arguments.length >= 4) ctx.colors = arguments[3]; - if (isBoolean(opts)) { - // legacy... - ctx.showHidden = opts; - } else if (opts) { - // got an "options" object - _extend(ctx, opts); - } - // set default options - if (isUndefined(ctx.showHidden)) ctx.showHidden = false; - if (isUndefined(ctx.depth)) ctx.depth = 2; - if (isUndefined(ctx.colors)) ctx.colors = false; - if (isUndefined(ctx.customInspect)) ctx.customInspect = true; - if (ctx.colors) ctx.stylize = stylizeWithColor; - return formatValue(ctx, obj, ctx.depth); -} - -// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics -inspect$1.colors = { - 'bold' : [1, 22], - 'italic' : [3, 23], - 'underline' : [4, 24], - 'inverse' : [7, 27], - 'white' : [37, 39], - 'grey' : [90, 39], - 'black' : [30, 39], - 'blue' : [34, 39], - 'cyan' : [36, 39], - 'green' : [32, 39], - 'magenta' : [35, 39], - 'red' : [31, 39], - 'yellow' : [33, 39] -}; - -// Don't use 'blue' not visible on cmd.exe -inspect$1.styles = { - 'special': 'cyan', - 'number': 'yellow', - 'boolean': 'yellow', - 'undefined': 'grey', - 'null': 'bold', - 'string': 'green', - 'date': 'magenta', - // "name": intentionally not styling - 'regexp': 'red' -}; - - -function stylizeWithColor(str, styleType) { - var style = inspect$1.styles[styleType]; - - if (style) { - return '\u001b[' + inspect$1.colors[style][0] + 'm' + str + - '\u001b[' + inspect$1.colors[style][1] + 'm'; - } else { - return str; - } -} - - -function stylizeNoColor(str, styleType) { - return str; -} - - -function arrayToHash(array) { - var hash = {}; - - array.forEach(function(val, idx) { - hash[val] = true; - }); - - return hash; -} - - -function formatValue(ctx, value, recurseTimes) { - // Provide a hook for user-specified inspect functions. - // Check that value is an object with an inspect function on it - if (ctx.customInspect && - value && - isFunction(value.inspect) && - // Filter out the util module, it's inspect function is special - value.inspect !== inspect$1 && - // Also filter out any prototype objects using the circular check. - !(value.constructor && value.constructor.prototype === value)) { - var ret = value.inspect(recurseTimes, ctx); - if (!isString(ret)) { - ret = formatValue(ctx, ret, recurseTimes); - } - return ret; - } - - // Primitive types cannot have properties - var primitive = formatPrimitive(ctx, value); - if (primitive) { - return primitive; - } - - // Look up the keys of the object. - var keys = Object.keys(value); - var visibleKeys = arrayToHash(keys); - - if (ctx.showHidden) { - keys = Object.getOwnPropertyNames(value); - } - - // IE doesn't make error fields non-enumerable - // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx - if (isError(value) - && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { - return formatError(value); - } - - // Some type of object without properties can be shortcutted. - if (keys.length === 0) { - if (isFunction(value)) { - var name = value.name ? ': ' + value.name : ''; - return ctx.stylize('[Function' + name + ']', 'special'); - } - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } - if (isDate(value)) { - return ctx.stylize(Date.prototype.toString.call(value), 'date'); - } - if (isError(value)) { - return formatError(value); - } - } - - var base = '', array = false, braces = ['{', '}']; - - // Make Array say that they are Array - if (isArray$2(value)) { - array = true; - braces = ['[', ']']; - } - - // Make functions say that they are functions - if (isFunction(value)) { - var n = value.name ? ': ' + value.name : ''; - base = ' [Function' + n + ']'; - } - - // Make RegExps say that they are RegExps - if (isRegExp(value)) { - base = ' ' + RegExp.prototype.toString.call(value); - } - - // Make dates with properties first say the date - if (isDate(value)) { - base = ' ' + Date.prototype.toUTCString.call(value); - } - - // Make error with message first say the error - if (isError(value)) { - base = ' ' + formatError(value); - } - - if (keys.length === 0 && (!array || value.length == 0)) { - return braces[0] + base + braces[1]; - } - - if (recurseTimes < 0) { - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } else { - return ctx.stylize('[Object]', 'special'); - } - } - - ctx.seen.push(value); - - var output; - if (array) { - output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); - } else { - output = keys.map(function(key) { - return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); - }); - } - - ctx.seen.pop(); - - return reduceToSingleString(output, base, braces); -} - - -function formatPrimitive(ctx, value) { - if (isUndefined(value)) - return ctx.stylize('undefined', 'undefined'); - if (isString(value)) { - var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') - .replace(/'/g, "\\'") - .replace(/\\"/g, '"') + '\''; - return ctx.stylize(simple, 'string'); - } - if (isNumber(value)) - return ctx.stylize('' + value, 'number'); - if (isBoolean(value)) - return ctx.stylize('' + value, 'boolean'); - // For some reason typeof null is "object", so special case here. - if (isNull(value)) - return ctx.stylize('null', 'null'); -} - - -function formatError(value) { - return '[' + Error.prototype.toString.call(value) + ']'; -} - - -function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { - var output = []; - for (var i = 0, l = value.length; i < l; ++i) { - if (hasOwnProperty$1(value, String(i))) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, - String(i), true)); - } else { - output.push(''); - } - } - keys.forEach(function(key) { - if (!key.match(/^\d+$/)) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, - key, true)); - } - }); - return output; -} - - -function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { - var name, str, desc; - desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; - if (desc.get) { - if (desc.set) { - str = ctx.stylize('[Getter/Setter]', 'special'); - } else { - str = ctx.stylize('[Getter]', 'special'); - } - } else { - if (desc.set) { - str = ctx.stylize('[Setter]', 'special'); - } - } - if (!hasOwnProperty$1(visibleKeys, key)) { - name = '[' + key + ']'; - } - if (!str) { - if (ctx.seen.indexOf(desc.value) < 0) { - if (isNull(recurseTimes)) { - str = formatValue(ctx, desc.value, null); - } else { - str = formatValue(ctx, desc.value, recurseTimes - 1); - } - if (str.indexOf('\n') > -1) { - if (array) { - str = str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n').substr(2); - } else { - str = '\n' + str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n'); - } - } - } else { - str = ctx.stylize('[Circular]', 'special'); - } - } - if (isUndefined(name)) { - if (array && key.match(/^\d+$/)) { - return str; - } - name = JSON.stringify('' + key); - if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { - name = name.substr(1, name.length - 2); - name = ctx.stylize(name, 'name'); - } else { - name = name.replace(/'/g, "\\'") - .replace(/\\"/g, '"') - .replace(/(^"|"$)/g, "'"); - name = ctx.stylize(name, 'string'); - } - } - - return name + ': ' + str; -} - - -function reduceToSingleString(output, base, braces) { - var numLinesEst = 0; - var length = output.reduce(function(prev, cur) { - numLinesEst++; - if (cur.indexOf('\n') >= 0) numLinesEst++; - return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; - }, 0); - - if (length > 60) { - return braces[0] + - (base === '' ? '' : base + '\n ') + - ' ' + - output.join(',\n ') + - ' ' + - braces[1]; - } - - return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; -} - - -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. -function isArray$2(ar) { - return Array.isArray(ar); -} - -function isBoolean(arg) { - return typeof arg === 'boolean'; -} - -function isNull(arg) { - return arg === null; -} - - - -function isNumber(arg) { - return typeof arg === 'number'; -} - -function isString(arg) { - return typeof arg === 'string'; -} - - - -function isUndefined(arg) { - return arg === void 0; -} - -function isRegExp(re) { - return isObject$1(re) && objectToString(re) === '[object RegExp]'; -} - -function isObject$1(arg) { - return typeof arg === 'object' && arg !== null; -} - -function isDate(d) { - return isObject$1(d) && objectToString(d) === '[object Date]'; -} - -function isError(e) { - return isObject$1(e) && - (objectToString(e) === '[object Error]' || e instanceof Error); -} - -function isFunction(arg) { - return typeof arg === 'function'; -} - -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} - - - -function objectToString(o) { - return Object.prototype.toString.call(o); -} - - -// log is just a thin wrapper to console.log that prepends a timestamp - - - -/** - * Inherit the prototype methods from one constructor into another. - * - * The Function.prototype.inherits from lang.js rewritten as a standalone - * function (not on Function.prototype). NOTE: If this file is to be loaded - * during bootstrapping this function needs to be rewritten using some native - * functions as prototype setup using normal JavaScript does not work as - * expected during bootstrapping (see mirror.js in r114903). - * - * @param {function} ctor Constructor function which needs to inherit the - * prototype. - * @param {function} superCtor Constructor function to inherit prototype from. - */ -function _extend(origin, add) { - // Don't do anything if add isn't an object - if (!add || !isObject$1(add)) return origin; - - var keys = Object.keys(add); - var i = keys.length; - while (i--) { - origin[keys[i]] = add[keys[i]]; - } - return origin; -} - -function hasOwnProperty$1(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); -} - -function compare(a, b) { - if (a === b) { - return 0; - } - - var x = a.length; - var y = b.length; - - for (var i = 0, len = Math.min(x, y); i < len; ++i) { - if (a[i] !== b[i]) { - x = a[i]; - y = b[i]; - break; - } - } - - if (x < y) { - return -1; - } - if (y < x) { - return 1; - } - return 0; -} -var hasOwn = Object.prototype.hasOwnProperty; - -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) { - if (hasOwn.call(obj, key)) keys.push(key); - } - return keys; -}; -// based on node assert, original notice: - -// http://wiki.commonjs.org/wiki/Unit_Testing/1.0 -// -// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8! -// -// Originally from narwhal.js (http://narwhaljs.org) -// Copyright (c) 2009 Thomas Robinson <280north.com> -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the 'Software'), to -// deal in the Software without restriction, including without limitation the -// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -// sell copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -var pSlice = Array.prototype.slice; -var _functionsHaveNames; -function functionsHaveNames() { - if (typeof _functionsHaveNames !== 'undefined') { - return _functionsHaveNames; - } - return _functionsHaveNames = (function () { - return function foo() {}.name === 'foo'; - }()); -} -function pToString (obj) { - return Object.prototype.toString.call(obj); -} -function isView(arrbuf) { - if (isBuffer(arrbuf)) { - return false; - } - if (typeof global$1.ArrayBuffer !== 'function') { - return false; - } - if (typeof ArrayBuffer.isView === 'function') { - return ArrayBuffer.isView(arrbuf); - } - if (!arrbuf) { - return false; - } - if (arrbuf instanceof DataView) { - return true; - } - if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) { - return true; - } - return false; -} -// 1. The assert module provides functions that throw -// AssertionError's when particular conditions are not met. The -// assert module must conform to the following interface. - -function assert$1(value, message) { - if (!value) fail(value, true, message, '==', ok); -} -// 2. The AssertionError is defined in assert. -// new assert.AssertionError({ message: message, -// actual: actual, -// expected: expected }) - -var regex = /\s*function\s+([^\(\s]*)\s*/; -// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js -function getName(func) { - if (!isFunction(func)) { - return; - } - if (functionsHaveNames()) { - return func.name; - } - var str = func.toString(); - var match = str.match(regex); - return match && match[1]; -} -assert$1.AssertionError = AssertionError; -function AssertionError(options) { - this.name = 'AssertionError'; - this.actual = options.actual; - this.expected = options.expected; - this.operator = options.operator; - if (options.message) { - this.message = options.message; - this.generatedMessage = false; - } else { - this.message = getMessage(this); - this.generatedMessage = true; - } - var stackStartFunction = options.stackStartFunction || fail; - if (Error.captureStackTrace) { - Error.captureStackTrace(this, stackStartFunction); - } else { - // non v8 browsers so we can have a stacktrace - var err = new Error(); - if (err.stack) { - var out = err.stack; - - // try to strip useless frames - var fn_name = getName(stackStartFunction); - var idx = out.indexOf('\n' + fn_name); - if (idx >= 0) { - // once we have located the function frame - // we need to strip out everything before it (and its line) - var next_line = out.indexOf('\n', idx + 1); - out = out.substring(next_line + 1); - } - - this.stack = out; - } - } -} - -// assert.AssertionError instanceof Error -inherits$1(AssertionError, Error); - -function truncate(s, n) { - if (typeof s === 'string') { - return s.length < n ? s : s.slice(0, n); - } else { - return s; - } -} -function inspect$$1(something) { - if (functionsHaveNames() || !isFunction(something)) { - return inspect$1(something); - } - var rawname = getName(something); - var name = rawname ? ': ' + rawname : ''; - return '[Function' + name + ']'; -} -function getMessage(self) { - return truncate(inspect$$1(self.actual), 128) + ' ' + - self.operator + ' ' + - truncate(inspect$$1(self.expected), 128); -} - -// At present only the three keys mentioned above are used and -// understood by the spec. Implementations or sub modules can pass -// other keys to the AssertionError's constructor - they will be -// ignored. - -// 3. All of the following functions must throw an AssertionError -// when a corresponding condition is not met, with a message that -// may be undefined if not provided. All assertion methods provide -// both the actual and expected values to the assertion error for -// display purposes. - -function fail(actual, expected, message, operator, stackStartFunction) { - throw new AssertionError({ - message: message, - actual: actual, - expected: expected, - operator: operator, - stackStartFunction: stackStartFunction - }); -} - -// EXTENSION! allows for well behaved errors defined elsewhere. -assert$1.fail = fail; - -// 4. Pure assertion tests whether a value is truthy, as determined -// by !!guard. -// assert.ok(guard, message_opt); -// This statement is equivalent to assert.equal(true, !!guard, -// message_opt);. To test strictly for the value true, use -// assert.strictEqual(true, guard, message_opt);. - -function ok(value, message) { - if (!value) fail(value, true, message, '==', ok); -} -assert$1.ok = ok; -// 5. The equality assertion tests shallow, coercive equality with -// ==. -// assert.equal(actual, expected, message_opt); -assert$1.equal = equal; -function equal(actual, expected, message) { - if (actual != expected) fail(actual, expected, message, '==', equal); -} - -// 6. The non-equality assertion tests for whether two objects are not equal -// with != assert.notEqual(actual, expected, message_opt); -assert$1.notEqual = notEqual; -function notEqual(actual, expected, message) { - if (actual == expected) { - fail(actual, expected, message, '!=', notEqual); - } -} - -// 7. The equivalence assertion tests a deep equality relation. -// assert.deepEqual(actual, expected, message_opt); -assert$1.deepEqual = deepEqual; -function deepEqual(actual, expected, message) { - if (!_deepEqual(actual, expected, false)) { - fail(actual, expected, message, 'deepEqual', deepEqual); - } -} -assert$1.deepStrictEqual = deepStrictEqual; -function deepStrictEqual(actual, expected, message) { - if (!_deepEqual(actual, expected, true)) { - fail(actual, expected, message, 'deepStrictEqual', deepStrictEqual); - } -} - -function _deepEqual(actual, expected, strict, memos) { - // 7.1. All identical values are equivalent, as determined by ===. - if (actual === expected) { - return true; - } else if (isBuffer(actual) && isBuffer(expected)) { - return compare(actual, expected) === 0; - - // 7.2. If the expected value is a Date object, the actual value is - // equivalent if it is also a Date object that refers to the same time. - } else if (isDate(actual) && isDate(expected)) { - return actual.getTime() === expected.getTime(); - - // 7.3 If the expected value is a RegExp object, the actual value is - // equivalent if it is also a RegExp object with the same source and - // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`). - } else if (isRegExp(actual) && isRegExp(expected)) { - return actual.source === expected.source && - actual.global === expected.global && - actual.multiline === expected.multiline && - actual.lastIndex === expected.lastIndex && - actual.ignoreCase === expected.ignoreCase; - - // 7.4. Other pairs that do not both pass typeof value == 'object', - // equivalence is determined by ==. - } else if ((actual === null || typeof actual !== 'object') && - (expected === null || typeof expected !== 'object')) { - return strict ? actual === expected : actual == expected; - - // If both values are instances of typed arrays, wrap their underlying - // ArrayBuffers in a Buffer each to increase performance - // This optimization requires the arrays to have the same type as checked by - // Object.prototype.toString (aka pToString). Never perform binary - // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their - // bit patterns are not identical. - } else if (isView(actual) && isView(expected) && - pToString(actual) === pToString(expected) && - !(actual instanceof Float32Array || - actual instanceof Float64Array)) { - return compare(new Uint8Array(actual.buffer), - new Uint8Array(expected.buffer)) === 0; - - // 7.5 For all other Object pairs, including Array objects, equivalence is - // determined by having the same number of owned properties (as verified - // with Object.prototype.hasOwnProperty.call), the same set of keys - // (although not necessarily the same order), equivalent values for every - // corresponding key, and an identical 'prototype' property. Note: this - // accounts for both named and indexed properties on Arrays. - } else if (isBuffer(actual) !== isBuffer(expected)) { - return false; - } else { - memos = memos || {actual: [], expected: []}; - - var actualIndex = memos.actual.indexOf(actual); - if (actualIndex !== -1) { - if (actualIndex === memos.expected.indexOf(expected)) { - return true; - } - } - - memos.actual.push(actual); - memos.expected.push(expected); - - return objEquiv(actual, expected, strict, memos); - } -} - -function isArguments(object) { - return Object.prototype.toString.call(object) == '[object Arguments]'; -} - -function objEquiv(a, b, strict, actualVisitedObjects) { - if (a === null || a === undefined || b === null || b === undefined) - return false; - // if one is a primitive, the other must be same - if (isPrimitive(a) || isPrimitive(b)) - return a === b; - if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b)) - return false; - var aIsArgs = isArguments(a); - var bIsArgs = isArguments(b); - if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs)) - return false; - if (aIsArgs) { - a = pSlice.call(a); - b = pSlice.call(b); - return _deepEqual(a, b, strict); - } - var ka = objectKeys(a); - var kb = objectKeys(b); - var key, i; - // having the same number of owned properties (keys incorporates - // hasOwnProperty) - if (ka.length !== kb.length) - return false; - //the same set of keys (although not necessarily the same order), - ka.sort(); - kb.sort(); - //~~~cheap key test - for (i = ka.length - 1; i >= 0; i--) { - if (ka[i] !== kb[i]) - return false; - } - //equivalent values for every corresponding key, and - //~~~possibly expensive deep test - for (i = ka.length - 1; i >= 0; i--) { - key = ka[i]; - if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects)) - return false; - } - return true; -} - -// 8. The non-equivalence assertion tests for any deep inequality. -// assert.notDeepEqual(actual, expected, message_opt); -assert$1.notDeepEqual = notDeepEqual; -function notDeepEqual(actual, expected, message) { - if (_deepEqual(actual, expected, false)) { - fail(actual, expected, message, 'notDeepEqual', notDeepEqual); - } -} - -assert$1.notDeepStrictEqual = notDeepStrictEqual; -function notDeepStrictEqual(actual, expected, message) { - if (_deepEqual(actual, expected, true)) { - fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual); - } -} - - -// 9. The strict equality assertion tests strict equality, as determined by ===. -// assert.strictEqual(actual, expected, message_opt); -assert$1.strictEqual = strictEqual; -function strictEqual(actual, expected, message) { - if (actual !== expected) { - fail(actual, expected, message, '===', strictEqual); - } -} - -// 10. The strict non-equality assertion tests for strict inequality, as -// determined by !==. assert.notStrictEqual(actual, expected, message_opt); -assert$1.notStrictEqual = notStrictEqual; -function notStrictEqual(actual, expected, message) { - if (actual === expected) { - fail(actual, expected, message, '!==', notStrictEqual); - } -} - -function expectedException(actual, expected) { - if (!actual || !expected) { - return false; - } - - if (Object.prototype.toString.call(expected) == '[object RegExp]') { - return expected.test(actual); - } - - try { - if (actual instanceof expected) { - return true; - } - } catch (e) { - // Ignore. The instanceof check doesn't work for arrow functions. - } - - if (Error.isPrototypeOf(expected)) { - return false; - } - - return expected.call({}, actual) === true; -} - -function _tryBlock(block) { - var error; - try { - block(); - } catch (e) { - error = e; - } - return error; -} - -function _throws(shouldThrow, block, expected, message) { - var actual; - - if (typeof block !== 'function') { - throw new TypeError('"block" argument must be a function'); - } - - if (typeof expected === 'string') { - message = expected; - expected = null; - } - - actual = _tryBlock(block); - - message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + - (message ? ' ' + message : '.'); - - if (shouldThrow && !actual) { - fail(actual, expected, 'Missing expected exception' + message); - } - - var userProvidedMessage = typeof message === 'string'; - var isUnwantedException = !shouldThrow && isError(actual); - var isUnexpectedException = !shouldThrow && actual && !expected; - - if ((isUnwantedException && - userProvidedMessage && - expectedException(actual, expected)) || - isUnexpectedException) { - fail(actual, expected, 'Got unwanted exception' + message); - } - - if ((shouldThrow && actual && expected && - !expectedException(actual, expected)) || (!shouldThrow && actual)) { - throw actual; - } -} - -// 11. Expected to throw an error: -// assert.throws(block, Error_opt, message_opt); -assert$1.throws = throws; -function throws(block, /*optional*/error, /*optional*/message) { - _throws(true, block, error, message); -} - -// EXTENSION! This is annoying to write outside this module. -assert$1.doesNotThrow = doesNotThrow; -function doesNotThrow(block, /*optional*/error, /*optional*/message) { - _throws(false, block, error, message); -} - -assert$1.ifError = ifError; -function ifError(err) { - if (err) throw err; -} - - -var assert$3 = Object.freeze({ - default: assert$1, - AssertionError: AssertionError, - fail: fail, - ok: ok, - assert: ok, - equal: equal, - notEqual: notEqual, - deepEqual: deepEqual, - deepStrictEqual: deepStrictEqual, - notDeepEqual: notDeepEqual, - notDeepStrictEqual: notDeepStrictEqual, - strictEqual: strictEqual, - notStrictEqual: notStrictEqual, - throws: throws, - doesNotThrow: doesNotThrow, - ifError: ifError -}); - -var Ap = Array.prototype; -var slice = Ap.slice; -var Op = Object.prototype; -var objToStr = Op.toString; -var funObjStr = objToStr.call(function(){}); -var strObjStr = objToStr.call(""); -var hasOwn$1 = Op.hasOwnProperty; - -var types$1 = function () { - - var exports = {}; - - // A type is an object with a .check method that takes a value and returns - // true or false according to whether the value matches the type. - - function Type(check, name) { - var self = this; - if (!(self instanceof Type)) { - throw new Error("Type constructor cannot be invoked without 'new'"); - } - - // Unfortunately we can't elegantly reuse isFunction and isString, - // here, because this code is executed while defining those types. - if (objToStr.call(check) !== funObjStr) { - throw new Error(check + " is not a function"); - } - - // The `name` parameter can be either a function or a string. - var nameObjStr = objToStr.call(name); - if (!(nameObjStr === funObjStr || - nameObjStr === strObjStr)) { - throw new Error(name + " is neither a function nor a string"); - } - - Object.defineProperties(self, { - name: {value: name}, - check: { - value: function (value, deep) { - var result = check.call(self, value, deep); - if (!result && deep && objToStr.call(deep) === funObjStr) - deep(self, value); - return result; - } - } - }); - } - - var Tp = Type.prototype; - - // Throughout this file we use Object.defineProperty to prevent - // redefinition of exported properties. - exports.Type = Type; - - // Like .check, except that failure triggers an AssertionError. - Tp.assert = function (value, deep) { - if (!this.check(value, deep)) { - var str = shallowStringify(value); - throw new Error(str + " does not match type " + this); - } - return true; - }; - - function shallowStringify(value) { - if (isObject.check(value)) - return "{" + Object.keys(value).map(function (key) { - return key + ": " + value[key]; - }).join(", ") + "}"; - - if (isArray.check(value)) - return "[" + value.map(shallowStringify).join(", ") + "]"; - - return JSON.stringify(value); - } - - Tp.toString = function () { - var name = this.name; - - if (isString.check(name)) - return name; - - if (isFunction.check(name)) - return name.call(this) + ""; - - return name + " type"; - }; - - var builtInCtorFns = []; - var builtInCtorTypes = []; - var builtInTypes = {}; - exports.builtInTypes = builtInTypes; - - function defBuiltInType(example, name) { - var objStr = objToStr.call(example); - - var type = new Type(function (value) { - return objToStr.call(value) === objStr; - }, name); - - builtInTypes[name] = type; - - if (example && typeof example.constructor === "function") { - builtInCtorFns.push(example.constructor); - builtInCtorTypes.push(type); - } - - return type; - } - - // These types check the underlying [[Class]] attribute of the given - // value, rather than using the problematic typeof operator. Note however - // that no subtyping is considered; so, for instance, isObject.check - // returns false for [], /./, new Date, and null. - var isString = defBuiltInType("truthy", "string"); - var isFunction = defBuiltInType(function () {}, "function"); - var isArray = defBuiltInType([], "array"); - var isObject = defBuiltInType({}, "object"); - var isRegExp = defBuiltInType(/./, "RegExp"); - var isDate = defBuiltInType(new Date, "Date"); - var isNumber = defBuiltInType(3, "number"); - var isBoolean = defBuiltInType(true, "boolean"); - var isNull = defBuiltInType(null, "null"); - var isUndefined = defBuiltInType(void 0, "undefined"); - - // There are a number of idiomatic ways of expressing types, so this - // function serves to coerce them all to actual Type objects. Note that - // providing the name argument is not necessary in most cases. - function toType(from, name) { - // The toType function should of course be idempotent. - if (from instanceof Type) - return from; - - // The Def type is used as a helper for constructing compound - // interface types for AST nodes. - if (from instanceof Def) - return from.type; - - // Support [ElemType] syntax. - if (isArray.check(from)) - return Type.fromArray(from); - - // Support { someField: FieldType, ... } syntax. - if (isObject.check(from)) - return Type.fromObject(from); - - if (isFunction.check(from)) { - var bicfIndex = builtInCtorFns.indexOf(from); - if (bicfIndex >= 0) { - return builtInCtorTypes[bicfIndex]; - } - - // If isFunction.check(from), and from is not a built-in - // constructor, assume from is a binary predicate function we can - // use to define the type. - return new Type(from, name); - } - - // As a last resort, toType returns a type that matches any value that - // is === from. This is primarily useful for literal values like - // toType(null), but it has the additional advantage of allowing - // toType to be a total function. - return new Type(function (value) { - return value === from; - }, isUndefined.check(name) ? function () { - return from + ""; - } : name); - } - - // Returns a type that matches the given value iff any of type1, type2, - // etc. match the value. - Type.or = function (/* type1, type2, ... */) { - var types = []; - var len = arguments.length; - for (var i = 0; i < len; ++i) - types.push(toType(arguments[i])); - - return new Type(function (value, deep) { - for (var i = 0; i < len; ++i) - if (types[i].check(value, deep)) - return true; - return false; - }, function () { - return types.join(" | "); - }); - }; - - Type.fromArray = function (arr) { - if (!isArray.check(arr)) { - throw new Error(""); - } - if (arr.length !== 1) { - throw new Error("only one element type is permitted for typed arrays"); - } - return toType(arr[0]).arrayOf(); - }; - - Tp.arrayOf = function () { - var elemType = this; - return new Type(function (value, deep) { - return isArray.check(value) && value.every(function (elem) { - return elemType.check(elem, deep); - }); - }, function () { - return "[" + elemType + "]"; - }); - }; - - Type.fromObject = function (obj) { - var fields = Object.keys(obj).map(function (name) { - return new Field(name, obj[name]); - }); - - return new Type(function (value, deep) { - return isObject.check(value) && fields.every(function (field) { - return field.type.check(value[field.name], deep); - }); - }, function () { - return "{ " + fields.join(", ") + " }"; - }); - }; - - function Field(name, type, defaultFn, hidden) { - var self = this; - - if (!(self instanceof Field)) { - throw new Error("Field constructor cannot be invoked without 'new'"); - } - isString.assert(name); - - type = toType(type); - - var properties = { - name: {value: name}, - type: {value: type}, - hidden: {value: !!hidden} - }; - - if (isFunction.check(defaultFn)) { - properties.defaultFn = {value: defaultFn}; - } - - Object.defineProperties(self, properties); - } - - var Fp = Field.prototype; - - Fp.toString = function () { - return JSON.stringify(this.name) + ": " + this.type; - }; - - Fp.getValue = function (obj) { - var value = obj[this.name]; - - if (!isUndefined.check(value)) - return value; - - if (this.defaultFn) - value = this.defaultFn.call(obj); - - return value; - }; - - // Define a type whose name is registered in a namespace (the defCache) so - // that future definitions will return the same type given the same name. - // In particular, this system allows for circular and forward definitions. - // The Def object d returned from Type.def may be used to configure the - // type d.type by calling methods such as d.bases, d.build, and d.field. - Type.def = function (typeName) { - isString.assert(typeName); - return hasOwn$1.call(defCache, typeName) - ? defCache[typeName] - : defCache[typeName] = new Def(typeName); - }; - - // In order to return the same Def instance every time Type.def is called - // with a particular name, those instances need to be stored in a cache. - var defCache = Object.create(null); - - function Def(typeName) { - var self = this; - if (!(self instanceof Def)) { - throw new Error("Def constructor cannot be invoked without 'new'"); - } - - Object.defineProperties(self, { - typeName: {value: typeName}, - baseNames: {value: []}, - ownFields: {value: Object.create(null)}, - - // These two are populated during finalization. - allSupertypes: {value: Object.create(null)}, // Includes own typeName. - supertypeList: {value: []}, // Linear inheritance hierarchy. - allFields: {value: Object.create(null)}, // Includes inherited fields. - fieldNames: {value: []}, // Non-hidden keys of allFields. - - type: { - value: new Type(function (value, deep) { - return self.check(value, deep); - }, typeName) - } - }); - } - - Def.fromValue = function (value) { - if (value && typeof value === "object") { - var type = value.type; - if (typeof type === "string" && - hasOwn$1.call(defCache, type)) { - var d = defCache[type]; - if (d.finalized) { - return d; - } - } - } - - return null; - }; - - var Dp = Def.prototype; - - Dp.isSupertypeOf = function (that) { - if (that instanceof Def) { - if (this.finalized !== true || - that.finalized !== true) { - throw new Error(""); - } - return hasOwn$1.call(that.allSupertypes, this.typeName); - } else { - throw new Error(that + " is not a Def"); - } - }; - - // Note that the list returned by this function is a copy of the internal - // supertypeList, *without* the typeName itself as the first element. - exports.getSupertypeNames = function (typeName) { - if (!hasOwn$1.call(defCache, typeName)) { - throw new Error(""); - } - var d = defCache[typeName]; - if (d.finalized !== true) { - throw new Error(""); - } - return d.supertypeList.slice(1); - }; - - // Returns an object mapping from every known type in the defCache to the - // most specific supertype whose name is an own property of the candidates - // object. - exports.computeSupertypeLookupTable = function (candidates) { - var table = {}; - var typeNames = Object.keys(defCache); - var typeNameCount = typeNames.length; - - for (var i = 0; i < typeNameCount; ++i) { - var typeName = typeNames[i]; - var d = defCache[typeName]; - if (d.finalized !== true) { - throw new Error("" + typeName); - } - for (var j = 0; j < d.supertypeList.length; ++j) { - var superTypeName = d.supertypeList[j]; - if (hasOwn$1.call(candidates, superTypeName)) { - table[typeName] = superTypeName; - break; - } - } - } - - return table; - }; - - Dp.checkAllFields = function (value, deep) { - var allFields = this.allFields; - if (this.finalized !== true) { - throw new Error("" + this.typeName); - } - - function checkFieldByName(name) { - var field = allFields[name]; - var type = field.type; - var child = field.getValue(value); - return type.check(child, deep); - } - - return isObject.check(value) - && Object.keys(allFields).every(checkFieldByName); - }; - - Dp.check = function (value, deep) { - if (this.finalized !== true) { - throw new Error( - "prematurely checking unfinalized type " + this.typeName - ); - } - - // A Def type can only match an object value. - if (!isObject.check(value)) - return false; - - var vDef = Def.fromValue(value); - if (!vDef) { - // If we couldn't infer the Def associated with the given value, - // and we expected it to be a SourceLocation or a Position, it was - // probably just missing a "type" field (because Esprima does not - // assign a type property to such nodes). Be optimistic and let - // this.checkAllFields make the final decision. - if (this.typeName === "SourceLocation" || - this.typeName === "Position") { - return this.checkAllFields(value, deep); - } - - // Calling this.checkAllFields for any other type of node is both - // bad for performance and way too forgiving. - return false; - } - - // If checking deeply and vDef === this, then we only need to call - // checkAllFields once. Calling checkAllFields is too strict when deep - // is false, because then we only care about this.isSupertypeOf(vDef). - if (deep && vDef === this) - return this.checkAllFields(value, deep); - - // In most cases we rely exclusively on isSupertypeOf to make O(1) - // subtyping determinations. This suffices in most situations outside - // of unit tests, since interface conformance is checked whenever new - // instances are created using builder functions. - if (!this.isSupertypeOf(vDef)) - return false; - - // The exception is when deep is true; then, we recursively check all - // fields. - if (!deep) - return true; - - // Use the more specific Def (vDef) to perform the deep check, but - // shallow-check fields defined by the less specific Def (this). - return vDef.checkAllFields(value, deep) - && this.checkAllFields(value, false); - }; - - Dp.bases = function () { - var args = slice.call(arguments); - var bases = this.baseNames; - - if (this.finalized) { - if (args.length !== bases.length) { - throw new Error(""); - } - for (var i = 0; i < args.length; i++) { - if (args[i] !== bases[i]) { - throw new Error(""); - } - } - return this; - } - - args.forEach(function (baseName) { - isString.assert(baseName); - - // This indexOf lookup may be O(n), but the typical number of base - // names is very small, and indexOf is a native Array method. - if (bases.indexOf(baseName) < 0) - bases.push(baseName); - }); - - return this; // For chaining. - }; - - // False by default until .build(...) is called on an instance. - Object.defineProperty(Dp, "buildable", {value: false}); - - var builders = {}; - exports.builders = builders; - - // This object is used as prototype for any node created by a builder. - var nodePrototype = {}; - - // Call this function to define a new method to be shared by all AST - // nodes. The replaced method (if any) is returned for easy wrapping. - exports.defineMethod = function (name, func) { - var old = nodePrototype[name]; - - // Pass undefined as func to delete nodePrototype[name]. - if (isUndefined.check(func)) { - delete nodePrototype[name]; - - } else { - isFunction.assert(func); - - Object.defineProperty(nodePrototype, name, { - enumerable: true, // For discoverability. - configurable: true, // For delete proto[name]. - value: func - }); - } - - return old; - }; - - var isArrayOfString = isString.arrayOf(); - - // Calling the .build method of a Def simultaneously marks the type as - // buildable (by defining builders[getBuilderName(typeName)]) and - // specifies the order of arguments that should be passed to the builder - // function to create an instance of the type. - Dp.build = function (/* param1, param2, ... */) { - var self = this; - - var newBuildParams = slice.call(arguments); - isArrayOfString.assert(newBuildParams); - - // Calling Def.prototype.build multiple times has the effect of merely - // redefining this property. - Object.defineProperty(self, "buildParams", { - value: newBuildParams, - writable: false, - enumerable: false, - configurable: true - }); - - if (self.buildable) { - // If this Def is already buildable, update self.buildParams and - // continue using the old builder function. - return self; - } - - // Every buildable type will have its "type" field filled in - // automatically. This includes types that are not subtypes of Node, - // like SourceLocation, but that seems harmless (TODO?). - self.field("type", String, function () { return self.typeName }); - - // Override Dp.buildable for this Def instance. - Object.defineProperty(self, "buildable", {value: true}); - - Object.defineProperty(builders, getBuilderName(self.typeName), { - enumerable: true, - - value: function () { - var args = arguments; - var argc = args.length; - var built = Object.create(nodePrototype); - - if (!self.finalized) { - throw new Error( - "attempting to instantiate unfinalized type " + - self.typeName - ); - } - - function add(param, i) { - if (hasOwn$1.call(built, param)) - return; - - var all = self.allFields; - if (!hasOwn$1.call(all, param)) { - throw new Error("" + param); - } - - var field = all[param]; - var type = field.type; - var value; - - if (isNumber.check(i) && i < argc) { - value = args[i]; - } else if (field.defaultFn) { - // Expose the partially-built object to the default - // function as its `this` object. - value = field.defaultFn.call(built); - } else { - var message = "no value or default function given for field " + - JSON.stringify(param) + " of " + self.typeName + "(" + - self.buildParams.map(function (name) { - return all[name]; - }).join(", ") + ")"; - throw new Error(message); - } - - if (!type.check(value)) { - throw new Error( - shallowStringify(value) + - " does not match field " + field + - " of type " + self.typeName - ); - } - - // TODO Could attach getters and setters here to enforce - // dynamic type safety. - built[param] = value; - } - - self.buildParams.forEach(function (param, i) { - add(param, i); - }); - - Object.keys(self.allFields).forEach(function (param) { - add(param); // Use the default value. - }); - - // Make sure that the "type" field was filled automatically. - if (built.type !== self.typeName) { - throw new Error(""); - } - - return built; - } - }); - - return self; // For chaining. - }; - - function getBuilderName(typeName) { - return typeName.replace(/^[A-Z]+/, function (upperCasePrefix) { - var len = upperCasePrefix.length; - switch (len) { - case 0: return ""; - // If there's only one initial capital letter, just lower-case it. - case 1: return upperCasePrefix.toLowerCase(); - default: - // If there's more than one initial capital letter, lower-case - // all but the last one, so that XMLDefaultDeclaration (for - // example) becomes xmlDefaultDeclaration. - return upperCasePrefix.slice( - 0, len - 1).toLowerCase() + - upperCasePrefix.charAt(len - 1); - } - }); - } - exports.getBuilderName = getBuilderName; - - function getStatementBuilderName(typeName) { - typeName = getBuilderName(typeName); - return typeName.replace(/(Expression)?$/, "Statement"); - } - exports.getStatementBuilderName = getStatementBuilderName; - - // The reason fields are specified using .field(...) instead of an object - // literal syntax is somewhat subtle: the object literal syntax would - // support only one key and one value, but with .field(...) we can pass - // any number of arguments to specify the field. - Dp.field = function (name, type, defaultFn, hidden) { - if (this.finalized) { - console.error("Ignoring attempt to redefine field " + - JSON.stringify(name) + " of finalized type " + - JSON.stringify(this.typeName)); - return this; - } - this.ownFields[name] = new Field(name, type, defaultFn, hidden); - return this; // For chaining. - }; - - var namedTypes = {}; - exports.namedTypes = namedTypes; - - // Like Object.keys, but aware of what fields each AST type should have. - function getFieldNames(object) { - var d = Def.fromValue(object); - if (d) { - return d.fieldNames.slice(0); - } - - if ("type" in object) { - throw new Error( - "did not recognize object of type " + - JSON.stringify(object.type) - ); - } - - return Object.keys(object); - } - exports.getFieldNames = getFieldNames; - - // Get the value of an object property, taking object.type and default - // functions into account. - function getFieldValue(object, fieldName) { - var d = Def.fromValue(object); - if (d) { - var field = d.allFields[fieldName]; - if (field) { - return field.getValue(object); - } - } - - return object && object[fieldName]; - } - exports.getFieldValue = getFieldValue; - - // Iterate over all defined fields of an object, including those missing - // or undefined, passing each field name and effective value (as returned - // by getFieldValue) to the callback. If the object has no corresponding - // Def, the callback will never be called. - exports.eachField = function (object, callback, context) { - getFieldNames(object).forEach(function (name) { - callback.call(this, name, getFieldValue(object, name)); - }, context); - }; - - // Similar to eachField, except that iteration stops as soon as the - // callback returns a truthy value. Like Array.prototype.some, the final - // result is either true or false to indicates whether the callback - // returned true for any element or not. - exports.someField = function (object, callback, context) { - return getFieldNames(object).some(function (name) { - return callback.call(this, name, getFieldValue(object, name)); - }, context); - }; - - // This property will be overridden as true by individual Def instances - // when they are finalized. - Object.defineProperty(Dp, "finalized", {value: false}); - - Dp.finalize = function () { - var self = this; - - // It's not an error to finalize a type more than once, but only the - // first call to .finalize does anything. - if (!self.finalized) { - var allFields = self.allFields; - var allSupertypes = self.allSupertypes; - - self.baseNames.forEach(function (name) { - var def = defCache[name]; - if (def instanceof Def) { - def.finalize(); - extend(allFields, def.allFields); - extend(allSupertypes, def.allSupertypes); - } else { - var message = "unknown supertype name " + - JSON.stringify(name) + - " for subtype " + - JSON.stringify(self.typeName); - throw new Error(message); - } - }); - - // TODO Warn if fields are overridden with incompatible types. - extend(allFields, self.ownFields); - allSupertypes[self.typeName] = self; - - self.fieldNames.length = 0; - for (var fieldName in allFields) { - if (hasOwn$1.call(allFields, fieldName) && - !allFields[fieldName].hidden) { - self.fieldNames.push(fieldName); - } - } - - // Types are exported only once they have been finalized. - Object.defineProperty(namedTypes, self.typeName, { - enumerable: true, - value: self.type - }); - - Object.defineProperty(self, "finalized", {value: true}); - - // A linearization of the inheritance hierarchy. - populateSupertypeList(self.typeName, self.supertypeList); - - if (self.buildable && self.supertypeList.lastIndexOf("Expression") >= 0) { - wrapExpressionBuilderWithStatement(self.typeName); - } - } - }; - - // Adds an additional builder for Expression subtypes - // that wraps the built Expression in an ExpressionStatements. - function wrapExpressionBuilderWithStatement(typeName) { - var wrapperName = getStatementBuilderName(typeName); - - // skip if the builder already exists - if (builders[wrapperName]) return; - - // the builder function to wrap with builders.ExpressionStatement - var wrapped = builders[getBuilderName(typeName)]; - - // skip if there is nothing to wrap - if (!wrapped) return; - - builders[wrapperName] = function () { - return builders.expressionStatement(wrapped.apply(builders, arguments)); - }; - } - - function populateSupertypeList(typeName, list) { - list.length = 0; - list.push(typeName); - - var lastSeen = Object.create(null); - - for (var pos = 0; pos < list.length; ++pos) { - typeName = list[pos]; - var d = defCache[typeName]; - if (d.finalized !== true) { - throw new Error(""); - } - - // If we saw typeName earlier in the breadth-first traversal, - // delete the last-seen occurrence. - if (hasOwn$1.call(lastSeen, typeName)) { - delete list[lastSeen[typeName]]; - } - - // Record the new index of the last-seen occurrence of typeName. - lastSeen[typeName] = pos; - - // Enqueue the base names of this type. - list.push.apply(list, d.baseNames); - } - - // Compaction loop to remove array holes. - for (var to = 0, from = to, len = list.length; from < len; ++from) { - if (hasOwn$1.call(list, from)) { - list[to++] = list[from]; - } - } - - list.length = to; - } - - function extend(into, from) { - Object.keys(from).forEach(function (name) { - into[name] = from[name]; - }); - - return into; - } - - exports.finalize = function () { - Object.keys(defCache).forEach(function (name) { - defCache[name].finalize(); - }); - }; - - return exports; -}; - -var equiv = function (fork) { - var types = fork.use(types$1); - var getFieldNames = types.getFieldNames; - var getFieldValue = types.getFieldValue; - var isArray = types.builtInTypes.array; - var isObject = types.builtInTypes.object; - var isDate = types.builtInTypes.Date; - var isRegExp = types.builtInTypes.RegExp; - var hasOwn = Object.prototype.hasOwnProperty; - - function astNodesAreEquivalent(a, b, problemPath) { - if (isArray.check(problemPath)) { - problemPath.length = 0; - } else { - problemPath = null; - } - - return areEquivalent(a, b, problemPath); - } - - astNodesAreEquivalent.assert = function (a, b) { - var problemPath = []; - if (!astNodesAreEquivalent(a, b, problemPath)) { - if (problemPath.length === 0) { - if (a !== b) { - throw new Error("Nodes must be equal"); - } - } else { - throw new Error( - "Nodes differ in the following path: " + - problemPath.map(subscriptForProperty).join("") - ); - } - } - }; - - function subscriptForProperty(property) { - if (/[_$a-z][_$a-z0-9]*/i.test(property)) { - return "." + property; - } - return "[" + JSON.stringify(property) + "]"; - } - - function areEquivalent(a, b, problemPath) { - if (a === b) { - return true; - } - - if (isArray.check(a)) { - return arraysAreEquivalent(a, b, problemPath); - } - - if (isObject.check(a)) { - return objectsAreEquivalent(a, b, problemPath); - } - - if (isDate.check(a)) { - return isDate.check(b) && (+a === +b); - } - - if (isRegExp.check(a)) { - return isRegExp.check(b) && ( - a.source === b.source && - a.global === b.global && - a.multiline === b.multiline && - a.ignoreCase === b.ignoreCase - ); - } - - return a == b; - } - - function arraysAreEquivalent(a, b, problemPath) { - isArray.assert(a); - var aLength = a.length; - - if (!isArray.check(b) || b.length !== aLength) { - if (problemPath) { - problemPath.push("length"); - } - return false; - } - - for (var i = 0; i < aLength; ++i) { - if (problemPath) { - problemPath.push(i); - } - - if (i in a !== i in b) { - return false; - } - - if (!areEquivalent(a[i], b[i], problemPath)) { - return false; - } - - if (problemPath) { - var problemPathTail = problemPath.pop(); - if (problemPathTail !== i) { - throw new Error("" + problemPathTail); - } - } - } - - return true; - } - - function objectsAreEquivalent(a, b, problemPath) { - isObject.assert(a); - if (!isObject.check(b)) { - return false; - } - - // Fast path for a common property of AST nodes. - if (a.type !== b.type) { - if (problemPath) { - problemPath.push("type"); - } - return false; - } - - var aNames = getFieldNames(a); - var aNameCount = aNames.length; - - var bNames = getFieldNames(b); - var bNameCount = bNames.length; - - if (aNameCount === bNameCount) { - for (var i = 0; i < aNameCount; ++i) { - var name = aNames[i]; - var aChild = getFieldValue(a, name); - var bChild = getFieldValue(b, name); - - if (problemPath) { - problemPath.push(name); - } - - if (!areEquivalent(aChild, bChild, problemPath)) { - return false; - } - - if (problemPath) { - var problemPathTail = problemPath.pop(); - if (problemPathTail !== name) { - throw new Error("" + problemPathTail); - } - } - } - - return true; - } - - if (!problemPath) { - return false; - } - - // Since aNameCount !== bNameCount, we need to find some name that's - // missing in aNames but present in bNames, or vice-versa. - - var seenNames = Object.create(null); - - for (i = 0; i < aNameCount; ++i) { - seenNames[aNames[i]] = true; - } - - for (i = 0; i < bNameCount; ++i) { - name = bNames[i]; - - if (!hasOwn.call(seenNames, name)) { - problemPath.push(name); - return false; - } - - delete seenNames[name]; - } - - for (name in seenNames) { - problemPath.push(name); - break; - } - - return false; - } - - return astNodesAreEquivalent; -}; - -var Op$1 = Object.prototype; -var hasOwn$2 = Op$1.hasOwnProperty; - -var path = function (fork) { - var types = fork.use(types$1); - var isArray = types.builtInTypes.array; - var isNumber = types.builtInTypes.number; - - function Path(value, parentPath, name) { - if (!(this instanceof Path)) { - throw new Error("Path constructor cannot be invoked without 'new'"); - } - - if (parentPath) { - if (!(parentPath instanceof Path)) { - throw new Error(""); - } - } else { - parentPath = null; - name = null; - } - - // The value encapsulated by this Path, generally equal to - // parentPath.value[name] if we have a parentPath. - this.value = value; - - // The immediate parent Path of this Path. - this.parentPath = parentPath; - - // The name of the property of parentPath.value through which this - // Path's value was reached. - this.name = name; - - // Calling path.get("child") multiple times always returns the same - // child Path object, for both performance and consistency reasons. - this.__childCache = null; - } - - var Pp = Path.prototype; - - function getChildCache(path) { - // Lazily create the child cache. This also cheapens cache - // invalidation, since you can just reset path.__childCache to null. - return path.__childCache || (path.__childCache = Object.create(null)); - } - - function getChildPath(path, name) { - var cache = getChildCache(path); - var actualChildValue = path.getValueProperty(name); - var childPath = cache[name]; - if (!hasOwn$2.call(cache, name) || - // Ensure consistency between cache and reality. - childPath.value !== actualChildValue) { - childPath = cache[name] = new path.constructor( - actualChildValue, path, name - ); - } - return childPath; - } - -// This method is designed to be overridden by subclasses that need to -// handle missing properties, etc. - Pp.getValueProperty = function getValueProperty(name) { - return this.value[name]; - }; - - Pp.get = function get(name) { - var path = this; - var names = arguments; - var count = names.length; - - for (var i = 0; i < count; ++i) { - path = getChildPath(path, names[i]); - } - - return path; - }; - - Pp.each = function each(callback, context) { - var childPaths = []; - var len = this.value.length; - var i = 0; - - // Collect all the original child paths before invoking the callback. - for (var i = 0; i < len; ++i) { - if (hasOwn$2.call(this.value, i)) { - childPaths[i] = this.get(i); - } - } - - // Invoke the callback on just the original child paths, regardless of - // any modifications made to the array by the callback. I chose these - // semantics over cleverly invoking the callback on new elements because - // this way is much easier to reason about. - context = context || this; - for (i = 0; i < len; ++i) { - if (hasOwn$2.call(childPaths, i)) { - callback.call(context, childPaths[i]); - } - } - }; - - Pp.map = function map(callback, context) { - var result = []; - - this.each(function (childPath) { - result.push(callback.call(this, childPath)); - }, context); - - return result; - }; - - Pp.filter = function filter(callback, context) { - var result = []; - - this.each(function (childPath) { - if (callback.call(this, childPath)) { - result.push(childPath); - } - }, context); - - return result; - }; - - function emptyMoves() {} - function getMoves(path, offset, start, end) { - isArray.assert(path.value); - - if (offset === 0) { - return emptyMoves; - } - - var length = path.value.length; - if (length < 1) { - return emptyMoves; - } - - var argc = arguments.length; - if (argc === 2) { - start = 0; - end = length; - } else if (argc === 3) { - start = Math.max(start, 0); - end = length; - } else { - start = Math.max(start, 0); - end = Math.min(end, length); - } - - isNumber.assert(start); - isNumber.assert(end); - - var moves = Object.create(null); - var cache = getChildCache(path); - - for (var i = start; i < end; ++i) { - if (hasOwn$2.call(path.value, i)) { - var childPath = path.get(i); - if (childPath.name !== i) { - throw new Error(""); - } - var newIndex = i + offset; - childPath.name = newIndex; - moves[newIndex] = childPath; - delete cache[i]; - } - } - - delete cache.length; - - return function () { - for (var newIndex in moves) { - var childPath = moves[newIndex]; - if (childPath.name !== +newIndex) { - throw new Error(""); - } - cache[newIndex] = childPath; - path.value[newIndex] = childPath.value; - } - }; - } - - Pp.shift = function shift() { - var move = getMoves(this, -1); - var result = this.value.shift(); - move(); - return result; - }; - - Pp.unshift = function unshift(node) { - var move = getMoves(this, arguments.length); - var result = this.value.unshift.apply(this.value, arguments); - move(); - return result; - }; - - Pp.push = function push(node) { - isArray.assert(this.value); - delete getChildCache(this).length; - return this.value.push.apply(this.value, arguments); - }; - - Pp.pop = function pop() { - isArray.assert(this.value); - var cache = getChildCache(this); - delete cache[this.value.length - 1]; - delete cache.length; - return this.value.pop(); - }; - - Pp.insertAt = function insertAt(index, node) { - var argc = arguments.length; - var move = getMoves(this, argc - 1, index); - if (move === emptyMoves) { - return this; - } - - index = Math.max(index, 0); - - for (var i = 1; i < argc; ++i) { - this.value[index + i - 1] = arguments[i]; - } - - move(); - - return this; - }; - - Pp.insertBefore = function insertBefore(node) { - var pp = this.parentPath; - var argc = arguments.length; - var insertAtArgs = [this.name]; - for (var i = 0; i < argc; ++i) { - insertAtArgs.push(arguments[i]); - } - return pp.insertAt.apply(pp, insertAtArgs); - }; - - Pp.insertAfter = function insertAfter(node) { - var pp = this.parentPath; - var argc = arguments.length; - var insertAtArgs = [this.name + 1]; - for (var i = 0; i < argc; ++i) { - insertAtArgs.push(arguments[i]); - } - return pp.insertAt.apply(pp, insertAtArgs); - }; - - function repairRelationshipWithParent(path) { - if (!(path instanceof Path)) { - throw new Error(""); - } - - var pp = path.parentPath; - if (!pp) { - // Orphan paths have no relationship to repair. - return path; - } - - var parentValue = pp.value; - var parentCache = getChildCache(pp); - - // Make sure parentCache[path.name] is populated. - if (parentValue[path.name] === path.value) { - parentCache[path.name] = path; - } else if (isArray.check(parentValue)) { - // Something caused path.name to become out of date, so attempt to - // recover by searching for path.value in parentValue. - var i = parentValue.indexOf(path.value); - if (i >= 0) { - parentCache[path.name = i] = path; - } - } else { - // If path.value disagrees with parentValue[path.name], and - // path.name is not an array index, let path.value become the new - // parentValue[path.name] and update parentCache accordingly. - parentValue[path.name] = path.value; - parentCache[path.name] = path; - } - - if (parentValue[path.name] !== path.value) { - throw new Error(""); - } - if (path.parentPath.get(path.name) !== path) { - throw new Error(""); - } - - return path; - } - - Pp.replace = function replace(replacement) { - var results = []; - var parentValue = this.parentPath.value; - var parentCache = getChildCache(this.parentPath); - var count = arguments.length; - - repairRelationshipWithParent(this); - - if (isArray.check(parentValue)) { - var originalLength = parentValue.length; - var move = getMoves(this.parentPath, count - 1, this.name + 1); - - var spliceArgs = [this.name, 1]; - for (var i = 0; i < count; ++i) { - spliceArgs.push(arguments[i]); - } - - var splicedOut = parentValue.splice.apply(parentValue, spliceArgs); - - if (splicedOut[0] !== this.value) { - throw new Error(""); - } - if (parentValue.length !== (originalLength - 1 + count)) { - throw new Error(""); - } - - move(); - - if (count === 0) { - delete this.value; - delete parentCache[this.name]; - this.__childCache = null; - - } else { - if (parentValue[this.name] !== replacement) { - throw new Error(""); - } - - if (this.value !== replacement) { - this.value = replacement; - this.__childCache = null; - } - - for (i = 0; i < count; ++i) { - results.push(this.parentPath.get(this.name + i)); - } - - if (results[0] !== this) { - throw new Error(""); - } - } - - } else if (count === 1) { - if (this.value !== replacement) { - this.__childCache = null; - } - this.value = parentValue[this.name] = replacement; - results.push(this); - - } else if (count === 0) { - delete parentValue[this.name]; - delete this.value; - this.__childCache = null; - - // Leave this path cached as parentCache[this.name], even though - // it no longer has a value defined. - - } else { - throw new Error("Could not replace path"); - } - - return results; - }; - - return Path; -}; - -var hasOwn$3 = Object.prototype.hasOwnProperty; - -var scope = function (fork) { - var types = fork.use(types$1); - var Type = types.Type; - var namedTypes = types.namedTypes; - var Node = namedTypes.Node; - var Expression = namedTypes.Expression; - var isArray = types.builtInTypes.array; - var b = types.builders; - - function Scope(path, parentScope) { - if (!(this instanceof Scope)) { - throw new Error("Scope constructor cannot be invoked without 'new'"); - } - if (!(path instanceof fork.use(nodePath))) { - throw new Error(""); - } - ScopeType.assert(path.value); - - var depth; - - if (parentScope) { - if (!(parentScope instanceof Scope)) { - throw new Error(""); - } - depth = parentScope.depth + 1; - } else { - parentScope = null; - depth = 0; - } - - Object.defineProperties(this, { - path: { value: path }, - node: { value: path.value }, - isGlobal: { value: !parentScope, enumerable: true }, - depth: { value: depth }, - parent: { value: parentScope }, - bindings: { value: {} }, - types: { value: {} }, - }); - } - - var scopeTypes = [ - // Program nodes introduce global scopes. - namedTypes.Program, - - // Function is the supertype of FunctionExpression, - // FunctionDeclaration, ArrowExpression, etc. - namedTypes.Function, - - // In case you didn't know, the caught parameter shadows any variable - // of the same name in an outer scope. - namedTypes.CatchClause - ]; - - var ScopeType = Type.or.apply(Type, scopeTypes); - - Scope.isEstablishedBy = function(node) { - return ScopeType.check(node); - }; - - var Sp = Scope.prototype; - -// Will be overridden after an instance lazily calls scanScope. - Sp.didScan = false; - - Sp.declares = function(name) { - this.scan(); - return hasOwn$3.call(this.bindings, name); - }; - - Sp.declaresType = function(name) { - this.scan(); - return hasOwn$3.call(this.types, name); - }; - - Sp.declareTemporary = function(prefix) { - if (prefix) { - if (!/^[a-z$_]/i.test(prefix)) { - throw new Error(""); - } - } else { - prefix = "t$"; - } - - // Include this.depth in the name to make sure the name does not - // collide with any variables in nested/enclosing scopes. - prefix += this.depth.toString(36) + "$"; - - this.scan(); - - var index = 0; - while (this.declares(prefix + index)) { - ++index; - } - - var name = prefix + index; - return this.bindings[name] = types.builders.identifier(name); - }; - - Sp.injectTemporary = function(identifier, init) { - identifier || (identifier = this.declareTemporary()); - - var bodyPath = this.path.get("body"); - if (namedTypes.BlockStatement.check(bodyPath.value)) { - bodyPath = bodyPath.get("body"); - } - - bodyPath.unshift( - b.variableDeclaration( - "var", - [b.variableDeclarator(identifier, init || null)] - ) - ); - - return identifier; - }; - - Sp.scan = function(force) { - if (force || !this.didScan) { - for (var name in this.bindings) { - // Empty out this.bindings, just in cases. - delete this.bindings[name]; - } - scanScope(this.path, this.bindings, this.types); - this.didScan = true; - } - }; - - Sp.getBindings = function () { - this.scan(); - return this.bindings; - }; - - Sp.getTypes = function () { - this.scan(); - return this.types; - }; - - function scanScope(path, bindings, scopeTypes) { - var node = path.value; - ScopeType.assert(node); - - if (namedTypes.CatchClause.check(node)) { - // A catch clause establishes a new scope but the only variable - // bound in that scope is the catch parameter. Any other - // declarations create bindings in the outer scope. - addPattern(path.get("param"), bindings); - - } else { - recursiveScanScope(path, bindings, scopeTypes); - } - } - - function recursiveScanScope(path, bindings, scopeTypes) { - var node = path.value; - - if (path.parent && - namedTypes.FunctionExpression.check(path.parent.node) && - path.parent.node.id) { - addPattern(path.parent.get("id"), bindings); - } - - if (!node) { - // None of the remaining cases matter if node is falsy. - - } else if (isArray.check(node)) { - path.each(function(childPath) { - recursiveScanChild(childPath, bindings, scopeTypes); - }); - - } else if (namedTypes.Function.check(node)) { - path.get("params").each(function(paramPath) { - addPattern(paramPath, bindings); - }); - - recursiveScanChild(path.get("body"), bindings, scopeTypes); - - } else if (namedTypes.TypeAlias && namedTypes.TypeAlias.check(node)) { - addTypePattern(path.get("id"), scopeTypes); - - } else if (namedTypes.VariableDeclarator.check(node)) { - addPattern(path.get("id"), bindings); - recursiveScanChild(path.get("init"), bindings, scopeTypes); - - } else if (node.type === "ImportSpecifier" || - node.type === "ImportNamespaceSpecifier" || - node.type === "ImportDefaultSpecifier") { - addPattern( - // Esprima used to use the .name field to refer to the local - // binding identifier for ImportSpecifier nodes, but .id for - // ImportNamespaceSpecifier and ImportDefaultSpecifier nodes. - // ESTree/Acorn/ESpree use .local for all three node types. - path.get(node.local ? "local" : - node.name ? "name" : "id"), - bindings - ); - - } else if (Node.check(node) && !Expression.check(node)) { - types.eachField(node, function(name, child) { - var childPath = path.get(name); - if (!pathHasValue(childPath, child)) { - throw new Error(""); - } - recursiveScanChild(childPath, bindings, scopeTypes); - }); - } - } - - function pathHasValue(path, value) { - if (path.value === value) { - return true; - } - - // Empty arrays are probably produced by defaults.emptyArray, in which - // case is makes sense to regard them as equivalent, if not ===. - if (Array.isArray(path.value) && - path.value.length === 0 && - Array.isArray(value) && - value.length === 0) { - return true; - } - - return false; - } - - function recursiveScanChild(path, bindings, scopeTypes) { - var node = path.value; - - if (!node || Expression.check(node)) { - // Ignore falsy values and Expressions. - - } else if (namedTypes.FunctionDeclaration.check(node) && - node.id !== null) { - addPattern(path.get("id"), bindings); - - } else if (namedTypes.ClassDeclaration && - namedTypes.ClassDeclaration.check(node)) { - addPattern(path.get("id"), bindings); - - } else if (ScopeType.check(node)) { - if (namedTypes.CatchClause.check(node)) { - var catchParamName = node.param.name; - var hadBinding = hasOwn$3.call(bindings, catchParamName); - - // Any declarations that occur inside the catch body that do - // not have the same name as the catch parameter should count - // as bindings in the outer scope. - recursiveScanScope(path.get("body"), bindings, scopeTypes); - - // If a new binding matching the catch parameter name was - // created while scanning the catch body, ignore it because it - // actually refers to the catch parameter and not the outer - // scope that we're currently scanning. - if (!hadBinding) { - delete bindings[catchParamName]; - } - } - - } else { - recursiveScanScope(path, bindings, scopeTypes); - } - } - - function addPattern(patternPath, bindings) { - var pattern = patternPath.value; - namedTypes.Pattern.assert(pattern); - - if (namedTypes.Identifier.check(pattern)) { - if (hasOwn$3.call(bindings, pattern.name)) { - bindings[pattern.name].push(patternPath); - } else { - bindings[pattern.name] = [patternPath]; - } - - } else if (namedTypes.ObjectPattern && - namedTypes.ObjectPattern.check(pattern)) { - patternPath.get('properties').each(function(propertyPath) { - var property = propertyPath.value; - if (namedTypes.Pattern.check(property)) { - addPattern(propertyPath, bindings); - } else if (namedTypes.Property.check(property)) { - addPattern(propertyPath.get('value'), bindings); - } else if (namedTypes.SpreadProperty && - namedTypes.SpreadProperty.check(property)) { - addPattern(propertyPath.get('argument'), bindings); - } - }); - - } else if (namedTypes.ArrayPattern && - namedTypes.ArrayPattern.check(pattern)) { - patternPath.get('elements').each(function(elementPath) { - var element = elementPath.value; - if (namedTypes.Pattern.check(element)) { - addPattern(elementPath, bindings); - } else if (namedTypes.SpreadElement && - namedTypes.SpreadElement.check(element)) { - addPattern(elementPath.get("argument"), bindings); - } - }); - - } else if (namedTypes.PropertyPattern && - namedTypes.PropertyPattern.check(pattern)) { - addPattern(patternPath.get('pattern'), bindings); - - } else if ((namedTypes.SpreadElementPattern && - namedTypes.SpreadElementPattern.check(pattern)) || - (namedTypes.SpreadPropertyPattern && - namedTypes.SpreadPropertyPattern.check(pattern))) { - addPattern(patternPath.get('argument'), bindings); - } - } - - function addTypePattern(patternPath, types) { - var pattern = patternPath.value; - namedTypes.Pattern.assert(pattern); - - if (namedTypes.Identifier.check(pattern)) { - if (hasOwn$3.call(types, pattern.name)) { - types[pattern.name].push(patternPath); - } else { - types[pattern.name] = [patternPath]; - } - - } - } - - Sp.lookup = function(name) { - for (var scope = this; scope; scope = scope.parent) - if (scope.declares(name)) - break; - return scope; - }; - - Sp.lookupType = function(name) { - for (var scope = this; scope; scope = scope.parent) - if (scope.declaresType(name)) - break; - return scope; - }; - - Sp.getGlobalScope = function() { - var scope = this; - while (!scope.isGlobal) - scope = scope.parent; - return scope; - }; - - return Scope; -}; - -var nodePath = function (fork) { - var types = fork.use(types$1); - var n = types.namedTypes; - var b = types.builders; - var isNumber = types.builtInTypes.number; - var isArray = types.builtInTypes.array; - var Path = fork.use(path); - var Scope = fork.use(scope); - - function NodePath(value, parentPath, name) { - if (!(this instanceof NodePath)) { - throw new Error("NodePath constructor cannot be invoked without 'new'"); - } - Path.call(this, value, parentPath, name); - } - - var NPp = NodePath.prototype = Object.create(Path.prototype, { - constructor: { - value: NodePath, - enumerable: false, - writable: true, - configurable: true - } - }); - - Object.defineProperties(NPp, { - node: { - get: function () { - Object.defineProperty(this, "node", { - configurable: true, // Enable deletion. - value: this._computeNode() - }); - - return this.node; - } - }, - - parent: { - get: function () { - Object.defineProperty(this, "parent", { - configurable: true, // Enable deletion. - value: this._computeParent() - }); - - return this.parent; - } - }, - - scope: { - get: function () { - Object.defineProperty(this, "scope", { - configurable: true, // Enable deletion. - value: this._computeScope() - }); - - return this.scope; - } - } - }); - - NPp.replace = function () { - delete this.node; - delete this.parent; - delete this.scope; - return Path.prototype.replace.apply(this, arguments); - }; - - NPp.prune = function () { - var remainingNodePath = this.parent; - - this.replace(); - - return cleanUpNodesAfterPrune(remainingNodePath); - }; - - // The value of the first ancestor Path whose value is a Node. - NPp._computeNode = function () { - var value = this.value; - if (n.Node.check(value)) { - return value; - } - - var pp = this.parentPath; - return pp && pp.node || null; - }; - - // The first ancestor Path whose value is a Node distinct from this.node. - NPp._computeParent = function () { - var value = this.value; - var pp = this.parentPath; - - if (!n.Node.check(value)) { - while (pp && !n.Node.check(pp.value)) { - pp = pp.parentPath; - } - - if (pp) { - pp = pp.parentPath; - } - } - - while (pp && !n.Node.check(pp.value)) { - pp = pp.parentPath; - } - - return pp || null; - }; - - // The closest enclosing scope that governs this node. - NPp._computeScope = function () { - var value = this.value; - var pp = this.parentPath; - var scope$$1 = pp && pp.scope; - - if (n.Node.check(value) && - Scope.isEstablishedBy(value)) { - scope$$1 = new Scope(this, scope$$1); - } - - return scope$$1 || null; - }; - - NPp.getValueProperty = function (name) { - return types.getFieldValue(this.value, name); - }; - - /** - * Determine whether this.node needs to be wrapped in parentheses in order - * for a parser to reproduce the same local AST structure. - * - * For instance, in the expression `(1 + 2) * 3`, the BinaryExpression - * whose operator is "+" needs parentheses, because `1 + 2 * 3` would - * parse differently. - * - * If assumeExpressionContext === true, we don't worry about edge cases - * like an anonymous FunctionExpression appearing lexically first in its - * enclosing statement and thus needing parentheses to avoid being parsed - * as a FunctionDeclaration with a missing name. - */ - NPp.needsParens = function (assumeExpressionContext) { - var pp = this.parentPath; - if (!pp) { - return false; - } - - var node = this.value; - - // Only expressions need parentheses. - if (!n.Expression.check(node)) { - return false; - } - - // Identifiers never need parentheses. - if (node.type === "Identifier") { - return false; - } - - while (!n.Node.check(pp.value)) { - pp = pp.parentPath; - if (!pp) { - return false; - } - } - - var parent = pp.value; - - switch (node.type) { - case "UnaryExpression": - case "SpreadElement": - case "SpreadProperty": - return parent.type === "MemberExpression" - && this.name === "object" - && parent.object === node; - - case "BinaryExpression": - case "LogicalExpression": - switch (parent.type) { - case "CallExpression": - return this.name === "callee" - && parent.callee === node; - - case "UnaryExpression": - case "SpreadElement": - case "SpreadProperty": - return true; - - case "MemberExpression": - return this.name === "object" - && parent.object === node; - - case "BinaryExpression": - case "LogicalExpression": - var po = parent.operator; - var pp = PRECEDENCE[po]; - var no = node.operator; - var np = PRECEDENCE[no]; - - if (pp > np) { - return true; - } - - if (pp === np && this.name === "right") { - if (parent.right !== node) { - throw new Error("Nodes must be equal"); - } - return true; - } - - default: - return false; - } - - case "SequenceExpression": - switch (parent.type) { - case "ForStatement": - // Although parentheses wouldn't hurt around sequence - // expressions in the head of for loops, traditional style - // dictates that e.g. i++, j++ should not be wrapped with - // parentheses. - return false; - - case "ExpressionStatement": - return this.name !== "expression"; - - default: - // Otherwise err on the side of overparenthesization, adding - // explicit exceptions above if this proves overzealous. - return true; - } - - case "YieldExpression": - switch (parent.type) { - case "BinaryExpression": - case "LogicalExpression": - case "UnaryExpression": - case "SpreadElement": - case "SpreadProperty": - case "CallExpression": - case "MemberExpression": - case "NewExpression": - case "ConditionalExpression": - case "YieldExpression": - return true; - - default: - return false; - } - - case "Literal": - return parent.type === "MemberExpression" - && isNumber.check(node.value) - && this.name === "object" - && parent.object === node; - - case "AssignmentExpression": - case "ConditionalExpression": - switch (parent.type) { - case "UnaryExpression": - case "SpreadElement": - case "SpreadProperty": - case "BinaryExpression": - case "LogicalExpression": - return true; - - case "CallExpression": - return this.name === "callee" - && parent.callee === node; - - case "ConditionalExpression": - return this.name === "test" - && parent.test === node; - - case "MemberExpression": - return this.name === "object" - && parent.object === node; - - default: - return false; - } - - default: - if (parent.type === "NewExpression" && - this.name === "callee" && - parent.callee === node) { - return containsCallExpression(node); - } - } - - if (assumeExpressionContext !== true && - !this.canBeFirstInStatement() && - this.firstInStatement()) - return true; - - return false; - }; - - function isBinary(node) { - return n.BinaryExpression.check(node) - || n.LogicalExpression.check(node); - } - - var PRECEDENCE = {}; - [["||"], - ["&&"], - ["|"], - ["^"], - ["&"], - ["==", "===", "!=", "!=="], - ["<", ">", "<=", ">=", "in", "instanceof"], - [">>", "<<", ">>>"], - ["+", "-"], - ["*", "/", "%"] - ].forEach(function (tier, i) { - tier.forEach(function (op) { - PRECEDENCE[op] = i; - }); - }); - - function containsCallExpression(node) { - if (n.CallExpression.check(node)) { - return true; - } - - if (isArray.check(node)) { - return node.some(containsCallExpression); - } - - if (n.Node.check(node)) { - return types.someField(node, function (name, child) { - return containsCallExpression(child); - }); - } - - return false; - } - - NPp.canBeFirstInStatement = function () { - var node = this.node; - return !n.FunctionExpression.check(node) - && !n.ObjectExpression.check(node); - }; - - NPp.firstInStatement = function () { - return firstInStatement(this); - }; - - function firstInStatement(path$$1) { - for (var node, parent; path$$1.parent; path$$1 = path$$1.parent) { - node = path$$1.node; - parent = path$$1.parent.node; - - if (n.BlockStatement.check(parent) && - path$$1.parent.name === "body" && - path$$1.name === 0) { - if (parent.body[0] !== node) { - throw new Error("Nodes must be equal"); - } - return true; - } - - if (n.ExpressionStatement.check(parent) && - path$$1.name === "expression") { - if (parent.expression !== node) { - throw new Error("Nodes must be equal"); - } - return true; - } - - if (n.SequenceExpression.check(parent) && - path$$1.parent.name === "expressions" && - path$$1.name === 0) { - if (parent.expressions[0] !== node) { - throw new Error("Nodes must be equal"); - } - continue; - } - - if (n.CallExpression.check(parent) && - path$$1.name === "callee") { - if (parent.callee !== node) { - throw new Error("Nodes must be equal"); - } - continue; - } - - if (n.MemberExpression.check(parent) && - path$$1.name === "object") { - if (parent.object !== node) { - throw new Error("Nodes must be equal"); - } - continue; - } - - if (n.ConditionalExpression.check(parent) && - path$$1.name === "test") { - if (parent.test !== node) { - throw new Error("Nodes must be equal"); - } - continue; - } - - if (isBinary(parent) && - path$$1.name === "left") { - if (parent.left !== node) { - throw new Error("Nodes must be equal"); - } - continue; - } - - if (n.UnaryExpression.check(parent) && - !parent.prefix && - path$$1.name === "argument") { - if (parent.argument !== node) { - throw new Error("Nodes must be equal"); - } - continue; - } - - return false; - } - - return true; - } - - /** - * Pruning certain nodes will result in empty or incomplete nodes, here we clean those nodes up. - */ - function cleanUpNodesAfterPrune(remainingNodePath) { - if (n.VariableDeclaration.check(remainingNodePath.node)) { - var declarations = remainingNodePath.get('declarations').value; - if (!declarations || declarations.length === 0) { - return remainingNodePath.prune(); - } - } else if (n.ExpressionStatement.check(remainingNodePath.node)) { - if (!remainingNodePath.get('expression').value) { - return remainingNodePath.prune(); - } - } else if (n.IfStatement.check(remainingNodePath.node)) { - cleanUpIfStatementAfterPrune(remainingNodePath); - } - - return remainingNodePath; - } - - function cleanUpIfStatementAfterPrune(ifStatement) { - var testExpression = ifStatement.get('test').value; - var alternate = ifStatement.get('alternate').value; - var consequent = ifStatement.get('consequent').value; - - if (!consequent && !alternate) { - var testExpressionStatement = b.expressionStatement(testExpression); - - ifStatement.replace(testExpressionStatement); - } else if (!consequent && alternate) { - var negatedTestExpression = b.unaryExpression('!', testExpression, true); - - if (n.UnaryExpression.check(testExpression) && testExpression.operator === '!') { - negatedTestExpression = testExpression.argument; - } - - ifStatement.get("test").replace(negatedTestExpression); - ifStatement.get("consequent").replace(alternate); - ifStatement.get("alternate").replace(); - } - } - - return NodePath; -}; - -var hasOwn$4 = Object.prototype.hasOwnProperty; - -var pathVisitor = function (fork) { - var types = fork.use(types$1); - var NodePath = fork.use(nodePath); - var Printable = types.namedTypes.Printable; - var isArray = types.builtInTypes.array; - var isObject = types.builtInTypes.object; - var isFunction = types.builtInTypes.function; - var undefined; - - function PathVisitor() { - if (!(this instanceof PathVisitor)) { - throw new Error( - "PathVisitor constructor cannot be invoked without 'new'" - ); - } - - // Permanent state. - this._reusableContextStack = []; - - this._methodNameTable = computeMethodNameTable(this); - this._shouldVisitComments = - hasOwn$4.call(this._methodNameTable, "Block") || - hasOwn$4.call(this._methodNameTable, "Line"); - - this.Context = makeContextConstructor(this); - - // State reset every time PathVisitor.prototype.visit is called. - this._visiting = false; - this._changeReported = false; - } - - function computeMethodNameTable(visitor) { - var typeNames = Object.create(null); - - for (var methodName in visitor) { - if (/^visit[A-Z]/.test(methodName)) { - typeNames[methodName.slice("visit".length)] = true; - } - } - - var supertypeTable = types.computeSupertypeLookupTable(typeNames); - var methodNameTable = Object.create(null); - - var typeNames = Object.keys(supertypeTable); - var typeNameCount = typeNames.length; - for (var i = 0; i < typeNameCount; ++i) { - var typeName = typeNames[i]; - methodName = "visit" + supertypeTable[typeName]; - if (isFunction.check(visitor[methodName])) { - methodNameTable[typeName] = methodName; - } - } - - return methodNameTable; - } - - PathVisitor.fromMethodsObject = function fromMethodsObject(methods) { - if (methods instanceof PathVisitor) { - return methods; - } - - if (!isObject.check(methods)) { - // An empty visitor? - return new PathVisitor; - } - - function Visitor() { - if (!(this instanceof Visitor)) { - throw new Error( - "Visitor constructor cannot be invoked without 'new'" - ); - } - PathVisitor.call(this); - } - - var Vp = Visitor.prototype = Object.create(PVp); - Vp.constructor = Visitor; - - extend(Vp, methods); - extend(Visitor, PathVisitor); - - isFunction.assert(Visitor.fromMethodsObject); - isFunction.assert(Visitor.visit); - - return new Visitor; - }; - - function extend(target, source) { - for (var property in source) { - if (hasOwn$4.call(source, property)) { - target[property] = source[property]; - } - } - - return target; - } - - PathVisitor.visit = function visit(node, methods) { - return PathVisitor.fromMethodsObject(methods).visit(node); - }; - - var PVp = PathVisitor.prototype; - - PVp.visit = function () { - if (this._visiting) { - throw new Error( - "Recursively calling visitor.visit(path) resets visitor state. " + - "Try this.visit(path) or this.traverse(path) instead." - ); - } - - // Private state that needs to be reset before every traversal. - this._visiting = true; - this._changeReported = false; - this._abortRequested = false; - - var argc = arguments.length; - var args = new Array(argc); - for (var i = 0; i < argc; ++i) { - args[i] = arguments[i]; - } - - if (!(args[0] instanceof NodePath)) { - args[0] = new NodePath({root: args[0]}).get("root"); - } - - // Called with the same arguments as .visit. - this.reset.apply(this, args); - - try { - var root = this.visitWithoutReset(args[0]); - var didNotThrow = true; - } finally { - this._visiting = false; - - if (!didNotThrow && this._abortRequested) { - // If this.visitWithoutReset threw an exception and - // this._abortRequested was set to true, return the root of - // the AST instead of letting the exception propagate, so that - // client code does not have to provide a try-catch block to - // intercept the AbortRequest exception. Other kinds of - // exceptions will propagate without being intercepted and - // rethrown by a catch block, so their stacks will accurately - // reflect the original throwing context. - return args[0].value; - } - } - - return root; - }; - - PVp.AbortRequest = function AbortRequest() {}; - PVp.abort = function () { - var visitor = this; - visitor._abortRequested = true; - var request = new visitor.AbortRequest(); - - // If you decide to catch this exception and stop it from propagating, - // make sure to call its cancel method to avoid silencing other - // exceptions that might be thrown later in the traversal. - request.cancel = function () { - visitor._abortRequested = false; - }; - - throw request; - }; - - PVp.reset = function (path/*, additional arguments */) { - // Empty stub; may be reassigned or overridden by subclasses. - }; - - PVp.visitWithoutReset = function (path) { - if (this instanceof this.Context) { - // Since this.Context.prototype === this, there's a chance we - // might accidentally call context.visitWithoutReset. If that - // happens, re-invoke the method against context.visitor. - return this.visitor.visitWithoutReset(path); - } - - if (!(path instanceof NodePath)) { - throw new Error(""); - } - - var value = path.value; - - var methodName = value && - typeof value === "object" && - typeof value.type === "string" && - this._methodNameTable[value.type]; - - if (methodName) { - var context = this.acquireContext(path); - try { - return context.invokeVisitorMethod(methodName); - } finally { - this.releaseContext(context); - } - - } else { - // If there was no visitor method to call, visit the children of - // this node generically. - return visitChildren(path, this); - } - }; - - function visitChildren(path, visitor) { - if (!(path instanceof NodePath)) { - throw new Error(""); - } - if (!(visitor instanceof PathVisitor)) { - throw new Error(""); - } - - var value = path.value; - - if (isArray.check(value)) { - path.each(visitor.visitWithoutReset, visitor); - } else if (!isObject.check(value)) { - // No children to visit. - } else { - var childNames = types.getFieldNames(value); - - // The .comments field of the Node type is hidden, so we only - // visit it if the visitor defines visitBlock or visitLine, and - // value.comments is defined. - if (visitor._shouldVisitComments && - value.comments && - childNames.indexOf("comments") < 0) { - childNames.push("comments"); - } - - var childCount = childNames.length; - var childPaths = []; - - for (var i = 0; i < childCount; ++i) { - var childName = childNames[i]; - if (!hasOwn$4.call(value, childName)) { - value[childName] = types.getFieldValue(value, childName); - } - childPaths.push(path.get(childName)); - } - - for (var i = 0; i < childCount; ++i) { - visitor.visitWithoutReset(childPaths[i]); - } - } - - return path.value; - } - - PVp.acquireContext = function (path) { - if (this._reusableContextStack.length === 0) { - return new this.Context(path); - } - return this._reusableContextStack.pop().reset(path); - }; - - PVp.releaseContext = function (context) { - if (!(context instanceof this.Context)) { - throw new Error(""); - } - this._reusableContextStack.push(context); - context.currentPath = null; - }; - - PVp.reportChanged = function () { - this._changeReported = true; - }; - - PVp.wasChangeReported = function () { - return this._changeReported; - }; - - function makeContextConstructor(visitor) { - function Context(path) { - if (!(this instanceof Context)) { - throw new Error(""); - } - if (!(this instanceof PathVisitor)) { - throw new Error(""); - } - if (!(path instanceof NodePath)) { - throw new Error(""); - } - - Object.defineProperty(this, "visitor", { - value: visitor, - writable: false, - enumerable: true, - configurable: false - }); - - this.currentPath = path; - this.needToCallTraverse = true; - - Object.seal(this); - } - - if (!(visitor instanceof PathVisitor)) { - throw new Error(""); - } - - // Note that the visitor object is the prototype of Context.prototype, - // so all visitor methods are inherited by context objects. - var Cp = Context.prototype = Object.create(visitor); - - Cp.constructor = Context; - extend(Cp, sharedContextProtoMethods); - - return Context; - } - -// Every PathVisitor has a different this.Context constructor and -// this.Context.prototype object, but those prototypes can all use the -// same reset, invokeVisitorMethod, and traverse function objects. - var sharedContextProtoMethods = Object.create(null); - - sharedContextProtoMethods.reset = - function reset(path) { - if (!(this instanceof this.Context)) { - throw new Error(""); - } - if (!(path instanceof NodePath)) { - throw new Error(""); - } - - this.currentPath = path; - this.needToCallTraverse = true; - - return this; - }; - - sharedContextProtoMethods.invokeVisitorMethod = - function invokeVisitorMethod(methodName) { - if (!(this instanceof this.Context)) { - throw new Error(""); - } - if (!(this.currentPath instanceof NodePath)) { - throw new Error(""); - } - - var result = this.visitor[methodName].call(this, this.currentPath); - - if (result === false) { - // Visitor methods return false to indicate that they have handled - // their own traversal needs, and we should not complain if - // this.needToCallTraverse is still true. - this.needToCallTraverse = false; - - } else if (result !== undefined) { - // Any other non-undefined value returned from the visitor method - // is interpreted as a replacement value. - this.currentPath = this.currentPath.replace(result)[0]; - - if (this.needToCallTraverse) { - // If this.traverse still hasn't been called, visit the - // children of the replacement node. - this.traverse(this.currentPath); - } - } - - if (this.needToCallTraverse !== false) { - throw new Error( - "Must either call this.traverse or return false in " + methodName - ); - } - - var path = this.currentPath; - return path && path.value; - }; - - sharedContextProtoMethods.traverse = - function traverse(path, newVisitor) { - if (!(this instanceof this.Context)) { - throw new Error(""); - } - if (!(path instanceof NodePath)) { - throw new Error(""); - } - if (!(this.currentPath instanceof NodePath)) { - throw new Error(""); - } - - this.needToCallTraverse = false; - - return visitChildren(path, PathVisitor.fromMethodsObject( - newVisitor || this.visitor - )); - }; - - sharedContextProtoMethods.visit = - function visit(path, newVisitor) { - if (!(this instanceof this.Context)) { - throw new Error(""); - } - if (!(path instanceof NodePath)) { - throw new Error(""); - } - if (!(this.currentPath instanceof NodePath)) { - throw new Error(""); - } - - this.needToCallTraverse = false; - - return PathVisitor.fromMethodsObject( - newVisitor || this.visitor - ).visitWithoutReset(path); - }; - - sharedContextProtoMethods.reportChanged = function reportChanged() { - this.visitor.reportChanged(); - }; - - sharedContextProtoMethods.abort = function abort() { - this.needToCallTraverse = false; - this.visitor.abort(); - }; - - return PathVisitor; -}; - -var fork = function (defs) { - var used = []; - var usedResult = []; - var fork = {}; - - function use(plugin) { - var idx = used.indexOf(plugin); - if (idx === -1) { - idx = used.length; - used.push(plugin); - usedResult[idx] = plugin(fork); - } - return usedResult[idx]; - } - - fork.use = use; - - var types = use(types$1); - - defs.forEach(use); - - types.finalize(); - - var exports = { - Type: types.Type, - builtInTypes: types.builtInTypes, - namedTypes: types.namedTypes, - builders: types.builders, - defineMethod: types.defineMethod, - getFieldNames: types.getFieldNames, - getFieldValue: types.getFieldValue, - eachField: types.eachField, - someField: types.someField, - getSupertypeNames: types.getSupertypeNames, - astNodesAreEquivalent: use(equiv), - finalize: types.finalize, - Path: use(path), - NodePath: use(nodePath), - PathVisitor: use(pathVisitor), - use: use - }; - - exports.visit = exports.PathVisitor.visit; - - return exports; -}; - -var shared = function (fork) { - var exports = {}; - var types = fork.use(types$1); - var Type = types.Type; - var builtin = types.builtInTypes; - var isNumber = builtin.number; - - // An example of constructing a new type with arbitrary constraints from - // an existing type. - exports.geq = function (than) { - return new Type(function (value) { - return isNumber.check(value) && value >= than; - }, isNumber + " >= " + than); - }; - - // Default value-returning functions that may optionally be passed as a - // third argument to Def.prototype.field. - exports.defaults = { - // Functions were used because (among other reasons) that's the most - // elegant way to allow for the emptyArray one always to give a new - // array instance. - "null": function () { return null }, - "emptyArray": function () { return [] }, - "false": function () { return false }, - "true": function () { return true }, - "undefined": function () {} - }; - - var naiveIsPrimitive = Type.or( - builtin.string, - builtin.number, - builtin.boolean, - builtin.null, - builtin.undefined - ); - - exports.isPrimitive = new Type(function (value) { - if (value === null) - return true; - var type = typeof value; - return !(type === "object" || - type === "function"); - }, naiveIsPrimitive.toString()); - - return exports; -}; - -var core = function (fork) { - var types = fork.use(types$1); - var Type = types.Type; - var def = Type.def; - var or = Type.or; - var shared$$1 = fork.use(shared); - var defaults = shared$$1.defaults; - var geq = shared$$1.geq; - - // Abstract supertype of all syntactic entities that are allowed to have a - // .loc field. - def("Printable") - .field("loc", or( - def("SourceLocation"), - null - ), defaults["null"], true); - - def("Node") - .bases("Printable") - .field("type", String) - .field("comments", or( - [def("Comment")], - null - ), defaults["null"], true); - - def("SourceLocation") - .build("start", "end", "source") - .field("start", def("Position")) - .field("end", def("Position")) - .field("source", or(String, null), defaults["null"]); - - def("Position") - .build("line", "column") - .field("line", geq(1)) - .field("column", geq(0)); - - def("File") - .bases("Node") - .build("program", "name") - .field("program", def("Program")) - .field("name", or(String, null), defaults["null"]); - - def("Program") - .bases("Node") - .build("body") - .field("body", [def("Statement")]); - - def("Function") - .bases("Node") - .field("id", or(def("Identifier"), null), defaults["null"]) - .field("params", [def("Pattern")]) - .field("body", def("BlockStatement")); - - def("Statement").bases("Node"); - -// The empty .build() here means that an EmptyStatement can be constructed -// (i.e. it's not abstract) but that it needs no arguments. - def("EmptyStatement").bases("Statement").build(); - - def("BlockStatement") - .bases("Statement") - .build("body") - .field("body", [def("Statement")]); - - // TODO Figure out how to silently coerce Expressions to - // ExpressionStatements where a Statement was expected. - def("ExpressionStatement") - .bases("Statement") - .build("expression") - .field("expression", def("Expression")); - - def("IfStatement") - .bases("Statement") - .build("test", "consequent", "alternate") - .field("test", def("Expression")) - .field("consequent", def("Statement")) - .field("alternate", or(def("Statement"), null), defaults["null"]); - - def("LabeledStatement") - .bases("Statement") - .build("label", "body") - .field("label", def("Identifier")) - .field("body", def("Statement")); - - def("BreakStatement") - .bases("Statement") - .build("label") - .field("label", or(def("Identifier"), null), defaults["null"]); - - def("ContinueStatement") - .bases("Statement") - .build("label") - .field("label", or(def("Identifier"), null), defaults["null"]); - - def("WithStatement") - .bases("Statement") - .build("object", "body") - .field("object", def("Expression")) - .field("body", def("Statement")); - - def("SwitchStatement") - .bases("Statement") - .build("discriminant", "cases", "lexical") - .field("discriminant", def("Expression")) - .field("cases", [def("SwitchCase")]) - .field("lexical", Boolean, defaults["false"]); - - def("ReturnStatement") - .bases("Statement") - .build("argument") - .field("argument", or(def("Expression"), null)); - - def("ThrowStatement") - .bases("Statement") - .build("argument") - .field("argument", def("Expression")); - - def("TryStatement") - .bases("Statement") - .build("block", "handler", "finalizer") - .field("block", def("BlockStatement")) - .field("handler", or(def("CatchClause"), null), function () { - return this.handlers && this.handlers[0] || null; - }) - .field("handlers", [def("CatchClause")], function () { - return this.handler ? [this.handler] : []; - }, true) // Indicates this field is hidden from eachField iteration. - .field("guardedHandlers", [def("CatchClause")], defaults.emptyArray) - .field("finalizer", or(def("BlockStatement"), null), defaults["null"]); - - def("CatchClause") - .bases("Node") - .build("param", "guard", "body") - .field("param", def("Pattern")) - .field("guard", or(def("Expression"), null), defaults["null"]) - .field("body", def("BlockStatement")); - - def("WhileStatement") - .bases("Statement") - .build("test", "body") - .field("test", def("Expression")) - .field("body", def("Statement")); - - def("DoWhileStatement") - .bases("Statement") - .build("body", "test") - .field("body", def("Statement")) - .field("test", def("Expression")); - - def("ForStatement") - .bases("Statement") - .build("init", "test", "update", "body") - .field("init", or( - def("VariableDeclaration"), - def("Expression"), - null)) - .field("test", or(def("Expression"), null)) - .field("update", or(def("Expression"), null)) - .field("body", def("Statement")); - - def("ForInStatement") - .bases("Statement") - .build("left", "right", "body") - .field("left", or( - def("VariableDeclaration"), - def("Expression"))) - .field("right", def("Expression")) - .field("body", def("Statement")); - - def("DebuggerStatement").bases("Statement").build(); - - def("Declaration").bases("Statement"); - - def("FunctionDeclaration") - .bases("Function", "Declaration") - .build("id", "params", "body") - .field("id", def("Identifier")); - - def("FunctionExpression") - .bases("Function", "Expression") - .build("id", "params", "body"); - - def("VariableDeclaration") - .bases("Declaration") - .build("kind", "declarations") - .field("kind", or("var", "let", "const")) - .field("declarations", [def("VariableDeclarator")]); - - def("VariableDeclarator") - .bases("Node") - .build("id", "init") - .field("id", def("Pattern")) - .field("init", or(def("Expression"), null)); - - // TODO Are all Expressions really Patterns? - def("Expression").bases("Node", "Pattern"); - - def("ThisExpression").bases("Expression").build(); - - def("ArrayExpression") - .bases("Expression") - .build("elements") - .field("elements", [or(def("Expression"), null)]); - - def("ObjectExpression") - .bases("Expression") - .build("properties") - .field("properties", [def("Property")]); - - // TODO Not in the Mozilla Parser API, but used by Esprima. - def("Property") - .bases("Node") // Want to be able to visit Property Nodes. - .build("kind", "key", "value") - .field("kind", or("init", "get", "set")) - .field("key", or(def("Literal"), def("Identifier"))) - .field("value", def("Expression")); - - def("SequenceExpression") - .bases("Expression") - .build("expressions") - .field("expressions", [def("Expression")]); - - var UnaryOperator = or( - "-", "+", "!", "~", - "typeof", "void", "delete"); - - def("UnaryExpression") - .bases("Expression") - .build("operator", "argument", "prefix") - .field("operator", UnaryOperator) - .field("argument", def("Expression")) - // Esprima doesn't bother with this field, presumably because it's - // always true for unary operators. - .field("prefix", Boolean, defaults["true"]); - - var BinaryOperator = or( - "==", "!=", "===", "!==", - "<", "<=", ">", ">=", - "<<", ">>", ">>>", - "+", "-", "*", "/", "%", - "&", // TODO Missing from the Parser API. - "|", "^", "in", - "instanceof", ".."); - - def("BinaryExpression") - .bases("Expression") - .build("operator", "left", "right") - .field("operator", BinaryOperator) - .field("left", def("Expression")) - .field("right", def("Expression")); - - var AssignmentOperator = or( - "=", "+=", "-=", "*=", "/=", "%=", - "<<=", ">>=", ">>>=", - "|=", "^=", "&="); - - def("AssignmentExpression") - .bases("Expression") - .build("operator", "left", "right") - .field("operator", AssignmentOperator) - .field("left", def("Pattern")) - .field("right", def("Expression")); - - var UpdateOperator = or("++", "--"); - - def("UpdateExpression") - .bases("Expression") - .build("operator", "argument", "prefix") - .field("operator", UpdateOperator) - .field("argument", def("Expression")) - .field("prefix", Boolean); - - var LogicalOperator = or("||", "&&"); - - def("LogicalExpression") - .bases("Expression") - .build("operator", "left", "right") - .field("operator", LogicalOperator) - .field("left", def("Expression")) - .field("right", def("Expression")); - - def("ConditionalExpression") - .bases("Expression") - .build("test", "consequent", "alternate") - .field("test", def("Expression")) - .field("consequent", def("Expression")) - .field("alternate", def("Expression")); - - def("NewExpression") - .bases("Expression") - .build("callee", "arguments") - .field("callee", def("Expression")) - // The Mozilla Parser API gives this type as [or(def("Expression"), - // null)], but null values don't really make sense at the call site. - // TODO Report this nonsense. - .field("arguments", [def("Expression")]); - - def("CallExpression") - .bases("Expression") - .build("callee", "arguments") - .field("callee", def("Expression")) - // See comment for NewExpression above. - .field("arguments", [def("Expression")]); - - def("MemberExpression") - .bases("Expression") - .build("object", "property", "computed") - .field("object", def("Expression")) - .field("property", or(def("Identifier"), def("Expression"))) - .field("computed", Boolean, function () { - var type = this.property.type; - if (type === 'Literal' || - type === 'MemberExpression' || - type === 'BinaryExpression') { - return true; - } - return false; - }); - - def("Pattern").bases("Node"); - - def("SwitchCase") - .bases("Node") - .build("test", "consequent") - .field("test", or(def("Expression"), null)) - .field("consequent", [def("Statement")]); - - def("Identifier") - // But aren't Expressions and Patterns already Nodes? TODO Report this. - .bases("Node", "Expression", "Pattern") - .build("name") - .field("name", String); - - def("Literal") - // But aren't Expressions already Nodes? TODO Report this. - .bases("Node", "Expression") - .build("value") - .field("value", or(String, Boolean, null, Number, RegExp)) - .field("regex", or({ - pattern: String, - flags: String - }, null), function () { - if (this.value instanceof RegExp) { - var flags = ""; - - if (this.value.ignoreCase) flags += "i"; - if (this.value.multiline) flags += "m"; - if (this.value.global) flags += "g"; - - return { - pattern: this.value.source, - flags: flags - }; - } - - return null; - }); - - // Abstract (non-buildable) comment supertype. Not a Node. - def("Comment") - .bases("Printable") - .field("value", String) - // A .leading comment comes before the node, whereas a .trailing - // comment comes after it. These two fields should not both be true, - // but they might both be false when the comment falls inside a node - // and the node has no children for the comment to lead or trail, - // e.g. { /*dangling*/ }. - .field("leading", Boolean, defaults["true"]) - .field("trailing", Boolean, defaults["false"]); -}; - -var es6 = function (fork) { - fork.use(core); - var types = fork.use(types$1); - var def = types.Type.def; - var or = types.Type.or; - var defaults = fork.use(shared).defaults; - - def("Function") - .field("generator", Boolean, defaults["false"]) - .field("expression", Boolean, defaults["false"]) - .field("defaults", [or(def("Expression"), null)], defaults.emptyArray) - // TODO This could be represented as a RestElement in .params. - .field("rest", or(def("Identifier"), null), defaults["null"]); - - // The ESTree way of representing a ...rest parameter. - def("RestElement") - .bases("Pattern") - .build("argument") - .field("argument", def("Pattern")); - - def("SpreadElementPattern") - .bases("Pattern") - .build("argument") - .field("argument", def("Pattern")); - - def("FunctionDeclaration") - .build("id", "params", "body", "generator", "expression"); - - def("FunctionExpression") - .build("id", "params", "body", "generator", "expression"); - - // The Parser API calls this ArrowExpression, but Esprima and all other - // actual parsers use ArrowFunctionExpression. - def("ArrowFunctionExpression") - .bases("Function", "Expression") - .build("params", "body", "expression") - // The forced null value here is compatible with the overridden - // definition of the "id" field in the Function interface. - .field("id", null, defaults["null"]) - // Arrow function bodies are allowed to be expressions. - .field("body", or(def("BlockStatement"), def("Expression"))) - // The current spec forbids arrow generators, so I have taken the - // liberty of enforcing that. TODO Report this. - .field("generator", false, defaults["false"]); - - def("YieldExpression") - .bases("Expression") - .build("argument", "delegate") - .field("argument", or(def("Expression"), null)) - .field("delegate", Boolean, defaults["false"]); - - def("GeneratorExpression") - .bases("Expression") - .build("body", "blocks", "filter") - .field("body", def("Expression")) - .field("blocks", [def("ComprehensionBlock")]) - .field("filter", or(def("Expression"), null)); - - def("ComprehensionExpression") - .bases("Expression") - .build("body", "blocks", "filter") - .field("body", def("Expression")) - .field("blocks", [def("ComprehensionBlock")]) - .field("filter", or(def("Expression"), null)); - - def("ComprehensionBlock") - .bases("Node") - .build("left", "right", "each") - .field("left", def("Pattern")) - .field("right", def("Expression")) - .field("each", Boolean); - - def("Property") - .field("key", or(def("Literal"), def("Identifier"), def("Expression"))) - .field("value", or(def("Expression"), def("Pattern"))) - .field("method", Boolean, defaults["false"]) - .field("shorthand", Boolean, defaults["false"]) - .field("computed", Boolean, defaults["false"]); - - def("PropertyPattern") - .bases("Pattern") - .build("key", "pattern") - .field("key", or(def("Literal"), def("Identifier"), def("Expression"))) - .field("pattern", def("Pattern")) - .field("computed", Boolean, defaults["false"]); - - def("ObjectPattern") - .bases("Pattern") - .build("properties") - .field("properties", [or(def("PropertyPattern"), def("Property"))]); - - def("ArrayPattern") - .bases("Pattern") - .build("elements") - .field("elements", [or(def("Pattern"), null)]); - - def("MethodDefinition") - .bases("Declaration") - .build("kind", "key", "value", "static") - .field("kind", or("constructor", "method", "get", "set")) - .field("key", or(def("Literal"), def("Identifier"), def("Expression"))) - .field("value", def("Function")) - .field("computed", Boolean, defaults["false"]) - .field("static", Boolean, defaults["false"]); - - def("SpreadElement") - .bases("Node") - .build("argument") - .field("argument", def("Expression")); - - def("ArrayExpression") - .field("elements", [or( - def("Expression"), - def("SpreadElement"), - def("RestElement"), - null - )]); - - def("NewExpression") - .field("arguments", [or(def("Expression"), def("SpreadElement"))]); - - def("CallExpression") - .field("arguments", [or(def("Expression"), def("SpreadElement"))]); - - // Note: this node type is *not* an AssignmentExpression with a Pattern on - // the left-hand side! The existing AssignmentExpression type already - // supports destructuring assignments. AssignmentPattern nodes may appear - // wherever a Pattern is allowed, and the right-hand side represents a - // default value to be destructured against the left-hand side, if no - // value is otherwise provided. For example: default parameter values. - def("AssignmentPattern") - .bases("Pattern") - .build("left", "right") - .field("left", def("Pattern")) - .field("right", def("Expression")); - - var ClassBodyElement = or( - def("MethodDefinition"), - def("VariableDeclarator"), - def("ClassPropertyDefinition"), - def("ClassProperty") - ); - - def("ClassProperty") - .bases("Declaration") - .build("key") - .field("key", or(def("Literal"), def("Identifier"), def("Expression"))) - .field("computed", Boolean, defaults["false"]); - - def("ClassPropertyDefinition") // static property - .bases("Declaration") - .build("definition") - // Yes, Virginia, circular definitions are permitted. - .field("definition", ClassBodyElement); - - def("ClassBody") - .bases("Declaration") - .build("body") - .field("body", [ClassBodyElement]); - - def("ClassDeclaration") - .bases("Declaration") - .build("id", "body", "superClass") - .field("id", or(def("Identifier"), null)) - .field("body", def("ClassBody")) - .field("superClass", or(def("Expression"), null), defaults["null"]); - - def("ClassExpression") - .bases("Expression") - .build("id", "body", "superClass") - .field("id", or(def("Identifier"), null), defaults["null"]) - .field("body", def("ClassBody")) - .field("superClass", or(def("Expression"), null), defaults["null"]) - .field("implements", [def("ClassImplements")], defaults.emptyArray); - - def("ClassImplements") - .bases("Node") - .build("id") - .field("id", def("Identifier")) - .field("superClass", or(def("Expression"), null), defaults["null"]); - - // Specifier and ModuleSpecifier are abstract non-standard types - // introduced for definitional convenience. - def("Specifier").bases("Node"); - - // This supertype is shared/abused by both def/babel.js and - // def/esprima.js. In the future, it will be possible to load only one set - // of definitions appropriate for a given parser, but until then we must - // rely on default functions to reconcile the conflicting AST formats. - def("ModuleSpecifier") - .bases("Specifier") - // This local field is used by Babel/Acorn. It should not technically - // be optional in the Babel/Acorn AST format, but it must be optional - // in the Esprima AST format. - .field("local", or(def("Identifier"), null), defaults["null"]) - // The id and name fields are used by Esprima. The id field should not - // technically be optional in the Esprima AST format, but it must be - // optional in the Babel/Acorn AST format. - .field("id", or(def("Identifier"), null), defaults["null"]) - .field("name", or(def("Identifier"), null), defaults["null"]); - - def("TaggedTemplateExpression") - .bases("Expression") - .build("tag", "quasi") - .field("tag", def("Expression")) - .field("quasi", def("TemplateLiteral")); - - def("TemplateLiteral") - .bases("Expression") - .build("quasis", "expressions") - .field("quasis", [def("TemplateElement")]) - .field("expressions", [def("Expression")]); - - def("TemplateElement") - .bases("Node") - .build("value", "tail") - .field("value", {"cooked": String, "raw": String}) - .field("tail", Boolean); -}; - -var es7 = function (fork) { - fork.use(es6); - - var types = fork.use(types$1); - var def = types.Type.def; - var or = types.Type.or; - var builtin = types.builtInTypes; - var defaults = fork.use(shared).defaults; - - def("Function") - .field("async", Boolean, defaults["false"]); - - def("SpreadProperty") - .bases("Node") - .build("argument") - .field("argument", def("Expression")); - - def("ObjectExpression") - .field("properties", [or(def("Property"), def("SpreadProperty"))]); - - def("SpreadPropertyPattern") - .bases("Pattern") - .build("argument") - .field("argument", def("Pattern")); - - def("ObjectPattern") - .field("properties", [or( - def("Property"), - def("PropertyPattern"), - def("SpreadPropertyPattern") - )]); - - def("AwaitExpression") - .bases("Expression") - .build("argument", "all") - .field("argument", or(def("Expression"), null)) - .field("all", Boolean, defaults["false"]); -}; - -var mozilla = function (fork) { - fork.use(core); - var types = fork.use(types$1); - var def = types.Type.def; - var or = types.Type.or; - var shared$$1 = fork.use(shared); - var geq = shared$$1.geq; - var defaults = shared$$1.defaults; - - def("Function") - // SpiderMonkey allows expression closures: function(x) x+1 - .field("body", or(def("BlockStatement"), def("Expression"))); - - def("ForInStatement") - .build("left", "right", "body", "each") - .field("each", Boolean, defaults["false"]); - - def("ForOfStatement") - .bases("Statement") - .build("left", "right", "body") - .field("left", or( - def("VariableDeclaration"), - def("Expression"))) - .field("right", def("Expression")) - .field("body", def("Statement")); - - def("LetStatement") - .bases("Statement") - .build("head", "body") - // TODO Deviating from the spec by reusing VariableDeclarator here. - .field("head", [def("VariableDeclarator")]) - .field("body", def("Statement")); - - def("LetExpression") - .bases("Expression") - .build("head", "body") - // TODO Deviating from the spec by reusing VariableDeclarator here. - .field("head", [def("VariableDeclarator")]) - .field("body", def("Expression")); - - def("GraphExpression") - .bases("Expression") - .build("index", "expression") - .field("index", geq(0)) - .field("expression", def("Literal")); - - def("GraphIndexExpression") - .bases("Expression") - .build("index") - .field("index", geq(0)); -}; - -var e4x = function (fork) { - fork.use(core); - var types = fork.use(types$1); - var def = types.Type.def; - var or = types.Type.or; - - // Note that none of these types are buildable because the Mozilla Parser - // API doesn't specify any builder functions, and nobody uses E4X anymore. - - def("XMLDefaultDeclaration") - .bases("Declaration") - .field("namespace", def("Expression")); - - def("XMLAnyName").bases("Expression"); - - def("XMLQualifiedIdentifier") - .bases("Expression") - .field("left", or(def("Identifier"), def("XMLAnyName"))) - .field("right", or(def("Identifier"), def("Expression"))) - .field("computed", Boolean); - - def("XMLFunctionQualifiedIdentifier") - .bases("Expression") - .field("right", or(def("Identifier"), def("Expression"))) - .field("computed", Boolean); - - def("XMLAttributeSelector") - .bases("Expression") - .field("attribute", def("Expression")); - - def("XMLFilterExpression") - .bases("Expression") - .field("left", def("Expression")) - .field("right", def("Expression")); - - def("XMLElement") - .bases("XML", "Expression") - .field("contents", [def("XML")]); - - def("XMLList") - .bases("XML", "Expression") - .field("contents", [def("XML")]); - - def("XML").bases("Node"); - - def("XMLEscape") - .bases("XML") - .field("expression", def("Expression")); - - def("XMLText") - .bases("XML") - .field("text", String); - - def("XMLStartTag") - .bases("XML") - .field("contents", [def("XML")]); - - def("XMLEndTag") - .bases("XML") - .field("contents", [def("XML")]); - - def("XMLPointTag") - .bases("XML") - .field("contents", [def("XML")]); - - def("XMLName") - .bases("XML") - .field("contents", or(String, [def("XML")])); - - def("XMLAttribute") - .bases("XML") - .field("value", String); - - def("XMLCdata") - .bases("XML") - .field("contents", String); - - def("XMLComment") - .bases("XML") - .field("contents", String); - - def("XMLProcessingInstruction") - .bases("XML") - .field("target", String) - .field("contents", or(String, null)); -}; - -var jsx = function (fork) { - fork.use(es7); - - var types = fork.use(types$1); - var def = types.Type.def; - var or = types.Type.or; - var defaults = fork.use(shared).defaults; - - def("JSXAttribute") - .bases("Node") - .build("name", "value") - .field("name", or(def("JSXIdentifier"), def("JSXNamespacedName"))) - .field("value", or( - def("Literal"), // attr="value" - def("JSXExpressionContainer"), // attr={value} - null // attr= or just attr - ), defaults["null"]); - - def("JSXIdentifier") - .bases("Identifier") - .build("name") - .field("name", String); - - def("JSXNamespacedName") - .bases("Node") - .build("namespace", "name") - .field("namespace", def("JSXIdentifier")) - .field("name", def("JSXIdentifier")); - - def("JSXMemberExpression") - .bases("MemberExpression") - .build("object", "property") - .field("object", or(def("JSXIdentifier"), def("JSXMemberExpression"))) - .field("property", def("JSXIdentifier")) - .field("computed", Boolean, defaults.false); - - var JSXElementName = or( - def("JSXIdentifier"), - def("JSXNamespacedName"), - def("JSXMemberExpression") - ); - - def("JSXSpreadAttribute") - .bases("Node") - .build("argument") - .field("argument", def("Expression")); - - var JSXAttributes = [or( - def("JSXAttribute"), - def("JSXSpreadAttribute") - )]; - - def("JSXExpressionContainer") - .bases("Expression") - .build("expression") - .field("expression", def("Expression")); - - def("JSXElement") - .bases("Expression") - .build("openingElement", "closingElement", "children") - .field("openingElement", def("JSXOpeningElement")) - .field("closingElement", or(def("JSXClosingElement"), null), defaults["null"]) - .field("children", [or( - def("JSXElement"), - def("JSXExpressionContainer"), - def("JSXText"), - def("Literal") // TODO Esprima should return JSXText instead. - )], defaults.emptyArray) - .field("name", JSXElementName, function () { - // Little-known fact: the `this` object inside a default function - // is none other than the partially-built object itself, and any - // fields initialized directly from builder function arguments - // (like openingElement, closingElement, and children) are - // guaranteed to be available. - return this.openingElement.name; - }, true) // hidden from traversal - .field("selfClosing", Boolean, function () { - return this.openingElement.selfClosing; - }, true) // hidden from traversal - .field("attributes", JSXAttributes, function () { - return this.openingElement.attributes; - }, true); // hidden from traversal - - def("JSXOpeningElement") - .bases("Node") // TODO Does this make sense? Can't really be an JSXElement. - .build("name", "attributes", "selfClosing") - .field("name", JSXElementName) - .field("attributes", JSXAttributes, defaults.emptyArray) - .field("selfClosing", Boolean, defaults["false"]); - - def("JSXClosingElement") - .bases("Node") // TODO Same concern. - .build("name") - .field("name", JSXElementName); - - def("JSXText") - .bases("Literal") - .build("value") - .field("value", String); - - def("JSXEmptyExpression").bases("Expression").build(); - - // This PR has caused many people issues, but supporting it seems like a - // good idea anyway: https://github.com/babel/babel/pull/4988 - def("JSXSpreadChild") - .bases("Expression") - .build("expression") - .field("expression", def("Expression")); -}; - -var flow = function (fork) { - fork.use(es7); - - var types = fork.use(types$1); - var def = types.Type.def; - var or = types.Type.or; - var defaults = fork.use(shared).defaults; - - // Type Annotations - def("Type").bases("Node"); - - def("AnyTypeAnnotation") - .bases("Type") - .build(); - - def("EmptyTypeAnnotation") - .bases("Type") - .build(); - - def("MixedTypeAnnotation") - .bases("Type") - .build(); - - def("VoidTypeAnnotation") - .bases("Type") - .build(); - - def("NumberTypeAnnotation") - .bases("Type") - .build(); - - def("NumberLiteralTypeAnnotation") - .bases("Type") - .build("value", "raw") - .field("value", Number) - .field("raw", String); - - // Babylon 6 differs in AST from Flow - // same as NumberLiteralTypeAnnotation - def("NumericLiteralTypeAnnotation") - .bases("Type") - .build("value", "raw") - .field("value", Number) - .field("raw", String); - - def("StringTypeAnnotation") - .bases("Type") - .build(); - - def("StringLiteralTypeAnnotation") - .bases("Type") - .build("value", "raw") - .field("value", String) - .field("raw", String); - - def("BooleanTypeAnnotation") - .bases("Type") - .build(); - - def("BooleanLiteralTypeAnnotation") - .bases("Type") - .build("value", "raw") - .field("value", Boolean) - .field("raw", String); - - def("TypeAnnotation") - .bases("Node") - .build("typeAnnotation") - .field("typeAnnotation", def("Type")); - - def("NullableTypeAnnotation") - .bases("Type") - .build("typeAnnotation") - .field("typeAnnotation", def("Type")); - - def("NullLiteralTypeAnnotation") - .bases("Type") - .build(); - - def("NullTypeAnnotation") - .bases("Type") - .build(); - - def("ThisTypeAnnotation") - .bases("Type") - .build(); - - def("ExistsTypeAnnotation") - .bases("Type") - .build(); - - def("ExistentialTypeParam") - .bases("Type") - .build(); - - def("FunctionTypeAnnotation") - .bases("Type") - .build("params", "returnType", "rest", "typeParameters") - .field("params", [def("FunctionTypeParam")]) - .field("returnType", def("Type")) - .field("rest", or(def("FunctionTypeParam"), null)) - .field("typeParameters", or(def("TypeParameterDeclaration"), null)); - - def("FunctionTypeParam") - .bases("Node") - .build("name", "typeAnnotation", "optional") - .field("name", def("Identifier")) - .field("typeAnnotation", def("Type")) - .field("optional", Boolean); - - def("ArrayTypeAnnotation") - .bases("Type") - .build("elementType") - .field("elementType", def("Type")); - - def("ObjectTypeAnnotation") - .bases("Type") - .build("properties", "indexers", "callProperties") - .field("properties", [def("ObjectTypeProperty")]) - .field("indexers", [def("ObjectTypeIndexer")], defaults.emptyArray) - .field("callProperties", - [def("ObjectTypeCallProperty")], - defaults.emptyArray) - .field("exact", Boolean, defaults["false"]); - - def("ObjectTypeProperty") - .bases("Node") - .build("key", "value", "optional") - .field("key", or(def("Literal"), def("Identifier"))) - .field("value", def("Type")) - .field("optional", Boolean) - .field("variance", - or("plus", "minus", null), - defaults["null"]); - - def("ObjectTypeIndexer") - .bases("Node") - .build("id", "key", "value") - .field("id", def("Identifier")) - .field("key", def("Type")) - .field("value", def("Type")) - .field("variance", - or("plus", "minus", null), - defaults["null"]); - - def("ObjectTypeCallProperty") - .bases("Node") - .build("value") - .field("value", def("FunctionTypeAnnotation")) - .field("static", Boolean, defaults["false"]); - - def("QualifiedTypeIdentifier") - .bases("Node") - .build("qualification", "id") - .field("qualification", - or(def("Identifier"), - def("QualifiedTypeIdentifier"))) - .field("id", def("Identifier")); - - def("GenericTypeAnnotation") - .bases("Type") - .build("id", "typeParameters") - .field("id", or(def("Identifier"), def("QualifiedTypeIdentifier"))) - .field("typeParameters", or(def("TypeParameterInstantiation"), null)); - - def("MemberTypeAnnotation") - .bases("Type") - .build("object", "property") - .field("object", def("Identifier")) - .field("property", - or(def("MemberTypeAnnotation"), - def("GenericTypeAnnotation"))); - - def("UnionTypeAnnotation") - .bases("Type") - .build("types") - .field("types", [def("Type")]); - - def("IntersectionTypeAnnotation") - .bases("Type") - .build("types") - .field("types", [def("Type")]); - - def("TypeofTypeAnnotation") - .bases("Type") - .build("argument") - .field("argument", def("Type")); - - def("Identifier") - .field("typeAnnotation", or(def("TypeAnnotation"), null), defaults["null"]); - - def("ObjectPattern") - .field("typeAnnotation", or(def("TypeAnnotation"), null), defaults["null"]); - - def("TypeParameterDeclaration") - .bases("Node") - .build("params") - .field("params", [def("TypeParameter")]); - - def("TypeParameterInstantiation") - .bases("Node") - .build("params") - .field("params", [def("Type")]); - - def("TypeParameter") - .bases("Type") - .build("name", "variance", "bound") - .field("name", String) - .field("variance", - or("plus", "minus", null), - defaults["null"]) - .field("bound", - or(def("TypeAnnotation"), null), - defaults["null"]); - - def("Function") - .field("returnType", - or(def("TypeAnnotation"), null), - defaults["null"]) - .field("typeParameters", - or(def("TypeParameterDeclaration"), null), - defaults["null"]); - - def("ClassProperty") - .build("key", "value", "typeAnnotation", "static") - .field("value", or(def("Expression"), null)) - .field("typeAnnotation", or(def("TypeAnnotation"), null)) - .field("static", Boolean, defaults["false"]) - .field("variance", - or("plus", "minus", null), - defaults["null"]); - - def("ClassImplements") - .field("typeParameters", - or(def("TypeParameterInstantiation"), null), - defaults["null"]); - - def("InterfaceDeclaration") - .bases("Declaration") - .build("id", "body", "extends") - .field("id", def("Identifier")) - .field("typeParameters", - or(def("TypeParameterDeclaration"), null), - defaults["null"]) - .field("body", def("ObjectTypeAnnotation")) - .field("extends", [def("InterfaceExtends")]); - - def("DeclareInterface") - .bases("InterfaceDeclaration") - .build("id", "body", "extends"); - - def("InterfaceExtends") - .bases("Node") - .build("id") - .field("id", def("Identifier")) - .field("typeParameters", or(def("TypeParameterInstantiation"), null)); - - def("TypeAlias") - .bases("Declaration") - .build("id", "typeParameters", "right") - .field("id", def("Identifier")) - .field("typeParameters", or(def("TypeParameterDeclaration"), null)) - .field("right", def("Type")); - - def("DeclareTypeAlias") - .bases("TypeAlias") - .build("id", "typeParameters", "right"); - - def("TypeCastExpression") - .bases("Expression") - .build("expression", "typeAnnotation") - .field("expression", def("Expression")) - .field("typeAnnotation", def("TypeAnnotation")); - - def("TupleTypeAnnotation") - .bases("Type") - .build("types") - .field("types", [def("Type")]); - - def("DeclareVariable") - .bases("Statement") - .build("id") - .field("id", def("Identifier")); - - def("DeclareFunction") - .bases("Statement") - .build("id") - .field("id", def("Identifier")); - - def("DeclareClass") - .bases("InterfaceDeclaration") - .build("id"); - - def("DeclareModule") - .bases("Statement") - .build("id", "body") - .field("id", or(def("Identifier"), def("Literal"))) - .field("body", def("BlockStatement")); - - def("DeclareModuleExports") - .bases("Statement") - .build("typeAnnotation") - .field("typeAnnotation", def("Type")); - - def("DeclareExportDeclaration") - .bases("Declaration") - .build("default", "declaration", "specifiers", "source") - .field("default", Boolean) - .field("declaration", or( - def("DeclareVariable"), - def("DeclareFunction"), - def("DeclareClass"), - def("Type"), // Implies default. - null - )) - .field("specifiers", [or( - def("ExportSpecifier"), - def("ExportBatchSpecifier") - )], defaults.emptyArray) - .field("source", or( - def("Literal"), - null - ), defaults["null"]); - - def("DeclareExportAllDeclaration") - .bases("Declaration") - .build("source") - .field("source", or( - def("Literal"), - null - ), defaults["null"]); -}; - -var esprima = function (fork) { - fork.use(es7); - - var types = fork.use(types$1); - var defaults = fork.use(shared).defaults; - var def = types.Type.def; - var or = types.Type.or; - - def("VariableDeclaration") - .field("declarations", [or( - def("VariableDeclarator"), - def("Identifier") // Esprima deviation. - )]); - - def("Property") - .field("value", or( - def("Expression"), - def("Pattern") // Esprima deviation. - )); - - def("ArrayPattern") - .field("elements", [or( - def("Pattern"), - def("SpreadElement"), - null - )]); - - def("ObjectPattern") - .field("properties", [or( - def("Property"), - def("PropertyPattern"), - def("SpreadPropertyPattern"), - def("SpreadProperty") // Used by Esprima. - )]); - -// Like ModuleSpecifier, except type:"ExportSpecifier" and buildable. -// export {} [from ...]; - def("ExportSpecifier") - .bases("ModuleSpecifier") - .build("id", "name"); - -// export <*> from ...; - def("ExportBatchSpecifier") - .bases("Specifier") - .build(); - -// Like ModuleSpecifier, except type:"ImportSpecifier" and buildable. -// import {} from ...; - def("ImportSpecifier") - .bases("ModuleSpecifier") - .build("id", "name"); - -// import <* as id> from ...; - def("ImportNamespaceSpecifier") - .bases("ModuleSpecifier") - .build("id"); - -// import from ...; - def("ImportDefaultSpecifier") - .bases("ModuleSpecifier") - .build("id"); - - def("ExportDeclaration") - .bases("Declaration") - .build("default", "declaration", "specifiers", "source") - .field("default", Boolean) - .field("declaration", or( - def("Declaration"), - def("Expression"), // Implies default. - null - )) - .field("specifiers", [or( - def("ExportSpecifier"), - def("ExportBatchSpecifier") - )], defaults.emptyArray) - .field("source", or( - def("Literal"), - null - ), defaults["null"]); - - def("ImportDeclaration") - .bases("Declaration") - .build("specifiers", "source", "importKind") - .field("specifiers", [or( - def("ImportSpecifier"), - def("ImportNamespaceSpecifier"), - def("ImportDefaultSpecifier") - )], defaults.emptyArray) - .field("source", def("Literal")) - .field("importKind", or( - "value", - "type" - ), function() { - return "value"; - }); - - def("Block") - .bases("Comment") - .build("value", /*optional:*/ "leading", "trailing"); - - def("Line") - .bases("Comment") - .build("value", /*optional:*/ "leading", "trailing"); -}; - -var babel = function (fork) { - fork.use(es7); - - var types = fork.use(types$1); - var defaults = fork.use(shared).defaults; - var def = types.Type.def; - var or = types.Type.or; - - def("Noop") - .bases("Node") - .build(); - - def("DoExpression") - .bases("Expression") - .build("body") - .field("body", [def("Statement")]); - - def("Super") - .bases("Expression") - .build(); - - def("BindExpression") - .bases("Expression") - .build("object", "callee") - .field("object", or(def("Expression"), null)) - .field("callee", def("Expression")); - - def("Decorator") - .bases("Node") - .build("expression") - .field("expression", def("Expression")); - - def("Property") - .field("decorators", - or([def("Decorator")], null), - defaults["null"]); - - def("MethodDefinition") - .field("decorators", - or([def("Decorator")], null), - defaults["null"]); - - def("MetaProperty") - .bases("Expression") - .build("meta", "property") - .field("meta", def("Identifier")) - .field("property", def("Identifier")); - - def("ParenthesizedExpression") - .bases("Expression") - .build("expression") - .field("expression", def("Expression")); - - def("ImportSpecifier") - .bases("ModuleSpecifier") - .build("imported", "local") - .field("imported", def("Identifier")); - - def("ImportDefaultSpecifier") - .bases("ModuleSpecifier") - .build("local"); - - def("ImportNamespaceSpecifier") - .bases("ModuleSpecifier") - .build("local"); - - def("ExportDefaultDeclaration") - .bases("Declaration") - .build("declaration") - .field("declaration", or(def("Declaration"), def("Expression"))); - - def("ExportNamedDeclaration") - .bases("Declaration") - .build("declaration", "specifiers", "source") - .field("declaration", or(def("Declaration"), null)) - .field("specifiers", [def("ExportSpecifier")], defaults.emptyArray) - .field("source", or(def("Literal"), null), defaults["null"]); - - def("ExportSpecifier") - .bases("ModuleSpecifier") - .build("local", "exported") - .field("exported", def("Identifier")); - - def("ExportNamespaceSpecifier") - .bases("Specifier") - .build("exported") - .field("exported", def("Identifier")); - - def("ExportDefaultSpecifier") - .bases("Specifier") - .build("exported") - .field("exported", def("Identifier")); - - def("ExportAllDeclaration") - .bases("Declaration") - .build("exported", "source") - .field("exported", or(def("Identifier"), null)) - .field("source", def("Literal")); - - def("CommentBlock") - .bases("Comment") - .build("value", /*optional:*/ "leading", "trailing"); - - def("CommentLine") - .bases("Comment") - .build("value", /*optional:*/ "leading", "trailing"); -}; - -var babel6 = function (fork) { - fork.use(babel); - fork.use(flow); - - // var types = fork.types; - var types = fork.use(types$1); - // var defaults = fork.shared.defaults; - var defaults = fork.use(shared).defaults; - var def = types.Type.def; - var or = types.Type.or; - - def("Directive") - .bases("Node") - .build("value") - .field("value", def("DirectiveLiteral")); - - def("DirectiveLiteral") - .bases("Node", "Expression") - .build("value") - .field("value", String, defaults["use strict"]); - - def("BlockStatement") - .bases("Statement") - .build("body") - .field("body", [def("Statement")]) - .field("directives", [def("Directive")], defaults.emptyArray); - - def("Program") - .bases("Node") - .build("body") - .field("body", [def("Statement")]) - .field("directives", [def("Directive")], defaults.emptyArray); - - // Split Literal - def("StringLiteral") - .bases("Literal") - .build("value") - .field("value", String); - - def("NumericLiteral") - .bases("Literal") - .build("value") - .field("value", Number); - - def("NullLiteral") - .bases("Literal") - .build() - .field("value", null, defaults["null"]); - - def("BooleanLiteral") - .bases("Literal") - .build("value") - .field("value", Boolean); - - def("RegExpLiteral") - .bases("Literal") - .build("pattern", "flags") - .field("pattern", String) - .field("flags", String) - .field("value", RegExp, function () { - return new RegExp(this.pattern, this.flags); - }); - - var ObjectExpressionProperty = or( - def("Property"), - def("ObjectMethod"), - def("ObjectProperty"), - def("SpreadProperty") - ); - - // Split Property -> ObjectProperty and ObjectMethod - def("ObjectExpression") - .bases("Expression") - .build("properties") - .field("properties", [ObjectExpressionProperty]); - - // ObjectMethod hoist .value properties to own properties - def("ObjectMethod") - .bases("Node", "Function") - .build("kind", "key", "params", "body", "computed") - .field("kind", or("method", "get", "set")) - .field("key", or(def("Literal"), def("Identifier"), def("Expression"))) - .field("params", [def("Pattern")]) - .field("body", def("BlockStatement")) - .field("computed", Boolean, defaults["false"]) - .field("generator", Boolean, defaults["false"]) - .field("async", Boolean, defaults["false"]) - .field("decorators", - or([def("Decorator")], null), - defaults["null"]); - - def("ObjectProperty") - .bases("Node") - .build("key", "value") - .field("key", or(def("Literal"), def("Identifier"), def("Expression"))) - .field("value", or(def("Expression"), def("Pattern"))) - .field("computed", Boolean, defaults["false"]); - - var ClassBodyElement = or( - def("MethodDefinition"), - def("VariableDeclarator"), - def("ClassPropertyDefinition"), - def("ClassProperty"), - def("ClassMethod") - ); - - // MethodDefinition -> ClassMethod - def("ClassBody") - .bases("Declaration") - .build("body") - .field("body", [ClassBodyElement]); - - def("ClassMethod") - .bases("Declaration", "Function") - .build("kind", "key", "params", "body", "computed", "static") - .field("kind", or("get", "set", "method", "constructor")) - .field("key", or(def("Literal"), def("Identifier"), def("Expression"))) - .field("params", [def("Pattern")]) - .field("body", def("BlockStatement")) - .field("computed", Boolean, defaults["false"]) - .field("static", Boolean, defaults["false"]) - .field("generator", Boolean, defaults["false"]) - .field("async", Boolean, defaults["false"]) - .field("decorators", - or([def("Decorator")], null), - defaults["null"]); - - var ObjectPatternProperty = or( - def("Property"), - def("PropertyPattern"), - def("SpreadPropertyPattern"), - def("SpreadProperty"), // Used by Esprima - def("ObjectProperty"), // Babel 6 - def("RestProperty") // Babel 6 - ); - - // Split into RestProperty and SpreadProperty - def("ObjectPattern") - .bases("Pattern") - .build("properties") - .field("properties", [ObjectPatternProperty]) - .field("decorators", - or([def("Decorator")], null), - defaults["null"]); - - def("SpreadProperty") - .bases("Node") - .build("argument") - .field("argument", def("Expression")); - - def("RestProperty") - .bases("Node") - .build("argument") - .field("argument", def("Expression")); - - def("ForAwaitStatement") - .bases("Statement") - .build("left", "right", "body") - .field("left", or( - def("VariableDeclaration"), - def("Expression"))) - .field("right", def("Expression")) - .field("body", def("Statement")); - - // The callee node of a dynamic import(...) expression. - def("Import") - .bases("Expression") - .build(); -}; - -var typescriptAstNodes = function(fork) { - fork.use(es7); - - var types = fork.use(types$1); - var def = types.Type.def; - var or = types.Type.or; - var defaults = fork.use(shared).defaults; - - // Ambient - def("TSAmbientVariableDefinition").bases("VariableDeclaration"); - - def("TSInterfaceDeclaration") - .bases("Declaration") - .build("name", "typeParameters", "members") - .field("name", def("Identifier")) - .field( - "typeParameters", - or(def("TypeParameterDeclaration"), null), - defaults["null"] - ) - .field("members", [def("TSSignature")]); - // .field("body", def("ObjectTypeAnnotation")) - // .field("extends", [def("InterfaceExtends")]); - - def("TSKeyword").bases("Node"); - - def("TSType").bases("Node"); - - def("TypeElement").bases("Node"); - - def("TSSignature") - .bases("TypeElement") - .build("typeParameters", "parameters", "typeAnnotation") - .field( - "typeParameters", - or(def("TypeParameterDeclaration"), null), - defaults["null"] - ) - .field("parameters", [def("Identifier")]) - .field("typeAnnotation", def("TSType")); - - def("TSAnyKeyword").bases("TSKeyword"); - - def("TSBooleanKeyword").bases("TSKeyword"); - - def("TSNeverKeyword").bases("TSKeyword"); - - def("TSNumberKeyword").bases("TSKeyword"); - - def("TSObjectKeyword").bases("TSKeyword"); - - def("TSReadonlyKeyword").bases("TSKeyword"); - - def("TSStringKeyword").bases("TSKeyword"); - - def("TSSymbolKeyword").bases("TSKeyword"); - - def("TSUndefinedKeyword").bases("TSKeyword"); - - def("TSVoidKeyword").bases("TSKeyword"); - - // Types - def("TSConstructorType").bases("TSType"); - - def("TSFunctionType").bases("TSType"); - - def("TSIntersectionType") - .bases("TSType") - .build("types") - .field("types", [def("TSType")]); - - def("TSParenthesizedType").bases("TSType"); - - def("TSThisType").bases("TSType"); - - def("TSUnionType") - .bases("TSType") - .build("types") - .field("types", [def("TSType")]); - - def("TSTypeLiteral") - .bases("TSType") - .build("members") - .field("members", [def("TSSignature")]); - - def("TSTypeOperator").bases("TSType"); - - def("TSTypeReference") - .bases("TSType") - .build("typeName", "typeParameters") - .field("typeName", def("Identifier")) - .field("typeParameters", def("TSType")); - - def("TSFirstTypeNode") - .bases("Node") - .build("id", "typeAnnotation") - .field("id", def("Identifier")) - .field("typeAnnotation", def("TSType")); - - // Signatures - def("TSCallSignature") - .bases("TSSignature") - .build("typeParameters", "parameters", "typeAnnotation"); - - def("TSConstructSignature") - .bases("TSSignature") - .build("typeParameters", "parameters", "typeAnnotation"); - - def("TSIndexSignature") - .bases("TSSignature") - .build("typeParameters", "parameters", "typeAnnotation"); - - def("TSMethodSignature") - .bases("TSSignature") - .build("name", "typeParameters", "parameters", "typeAnnotation") - .field("name", def("Identifier")); - - def("TSPropertySignature") - .bases("TSSignature") - .build("name", "typeAnnotation", "initializer") - .field("name", def("Identifier")) - .field("typeAnnotation", def("TSType")) - .field("initializer", def("Expression")); - - def("TSAsExpression").bases("Expression"); - - def("TSNamespaceExportDeclaration") - .bases("Declaration") - // needs more like `modefiers` and `decorators` - .build("name"); - - def("TSEnumDeclaration") - .bases("Declaration") - .build("name", "members") - .field("name", def("Identifier")); - - def("TSEnumMember").build("name").field("name", def("Identifier")); - - def("TSImportEqualsDeclaration") - .build("name", "moduleReference") - .field("name", def("Identifier")) - .field("moduleReference", def("TSExternalModuleReference")); - - def("TSImportEqualsDeclaration") - .build("expression") - .field("expression", def("Literal")); - - def("TSInterfaceDeclaration") - .build("name", "members") - .field("name", def("Identifier")) - .field("members", [def("TSMethodSignature")]); - - def("TSModuleDeclaration") - .build("modifiers", "name", "body") - .bases("Node") - .field("name", or(def("Identifier"), def("Literal"))); - - def("TSDeclareKeyword").build(); - - def("TSModuleBlock").build("body"); - - def("TSAbstractMethodDefinition").build().bases("Node"); - - def("TSAbstractClassProperty").build("key", "value").bases("Node"); - - def("TSAbstractClassDeclaration").build().bases("Node"); -}; - -var astTypes = fork([ - // This core module of AST types captures ES5 as it is parsed today by - // git://github.com/ariya/esprima.git#master. - core, - - // Feel free to add to or remove from this list of extension modules to - // configure the precise type hierarchy that you need. - es6, - es7, - mozilla, - e4x, - jsx, - flow, - esprima, - babel, - babel6, - typescriptAstNodes -]); - -function assertDoc(val) { - if ( - !(typeof val === "string" || (val != null && typeof val.type === "string")) - ) { - throw new Error( - "Value " + JSON.stringify(val) + " is not a valid document" - ); - } -} - -function concat$1(parts) { - parts.forEach(assertDoc); - - // We cannot do this until we change `printJSXElement` to not - // access the internals of a document directly. - // if(parts.length === 1) { - // // If it's a single document, no need to concat it. - // return parts[0]; - // } - return { type: "concat", parts }; -} - -function indent$1(contents) { - assertDoc(contents); - - return { type: "indent", contents }; -} - -function align(n, contents) { - assertDoc(contents); - - return { type: "align", contents, n }; -} - -function group(contents, opts) { - opts = opts || {}; - - assertDoc(contents); - - return { - type: "group", - contents: contents, - break: !!opts.shouldBreak, - expandedStates: opts.expandedStates - }; -} - -function conditionalGroup(states, opts) { - return group( - states[0], - Object.assign(opts || {}, { expandedStates: states }) - ); -} - -function ifBreak(breakContents, flatContents) { - if (breakContents) { - assertDoc(breakContents); - } - if (flatContents) { - assertDoc(flatContents); - } - - return { type: "if-break", breakContents, flatContents }; -} - -function lineSuffix$1(contents) { - assertDoc(contents); - return { type: "line-suffix", contents }; -} - -const lineSuffixBoundary = { type: "line-suffix-boundary" }; -const breakParent$1 = { type: "break-parent" }; -const line = { type: "line" }; -const softline = { type: "line", soft: true }; -const hardline$1 = concat$1([{ type: "line", hard: true }, breakParent$1]); -const literalline = concat$1([ - { type: "line", hard: true, literal: true }, - breakParent$1 -]); - -function join$1(sep, arr) { - var res = []; - - for (var i = 0; i < arr.length; i++) { - if (i !== 0) { - res.push(sep); - } - - res.push(arr[i]); - } - - return concat$1(res); -} - -var docBuilders$1 = { - concat: concat$1, - join: join$1, - line, - softline, - hardline: hardline$1, - literalline, - group, - conditionalGroup, - lineSuffix: lineSuffix$1, - lineSuffixBoundary, - breakParent: breakParent$1, - ifBreak, - indent: indent$1, - align -}; - -function isExportDeclaration(node) { - if (node) - switch (node.type) { - case "ExportDeclaration": - case "ExportDefaultDeclaration": - case "ExportDefaultSpecifier": - case "DeclareExportDeclaration": - case "ExportNamedDeclaration": - case "ExportAllDeclaration": - return true; - } - - return false; -} - -function getParentExportDeclaration(path) { - var parentNode = path.getParentNode(); - if (path.getName() === "declaration" && isExportDeclaration(parentNode)) { - return parentNode; - } - - return null; -} - -function getPenultimate(arr) { - if (arr.length > 1) { - return arr[arr.length - 2]; - } - return null; -} - -function getLast(arr) { - if (arr.length > 0) { - return arr[arr.length - 1]; - } - return null; -} - -function skip(chars) { - return (text, index, opts) => { - const backwards = opts && opts.backwards; - - // Allow `skip` functions to be threaded together without having - // to check for failures (did someone say monads?). - if (index === false) { - return false; - } - - const length = text.length; - let cursor = index; - while (cursor >= 0 && cursor < length) { - const c = text.charAt(cursor); - if (chars instanceof RegExp) { - if (!chars.test(c)) { - return cursor; - } - } else if (chars.indexOf(c) === -1) { - return cursor; - } - - backwards ? cursor-- : cursor++; - } - - if (cursor === -1 || cursor === length) { - // If we reached the beginning or end of the file, return the - // out-of-bounds cursor. It's up to the caller to handle this - // correctly. We don't want to indicate `false` though if it - // actually skipped valid characters. - return cursor; - } - return false; - }; -} - -const skipWhitespace = skip(/\s/); -const skipSpaces = skip(" \t"); -const skipToLineEnd = skip(",; \t"); -const skipEverythingButNewLine = skip(/[^\r\n]/); - -function skipInlineComment(text, index) { - if (index === false) { - return false; - } - - if (text.charAt(index) === "/" && text.charAt(index + 1) === "*") { - for (var i = index + 2; i < text.length; ++i) { - if (text.charAt(i) === "*" && text.charAt(i + 1) === "/") { - return i + 2; - } - } - } - return index; -} - -function skipTrailingComment(text, index) { - if (index === false) { - return false; - } - - if (text.charAt(index) === "/" && text.charAt(index + 1) === "/") { - return skipEverythingButNewLine(text, index); - } - return index; -} - -// This one doesn't use the above helper function because it wants to -// test \r\n in order and `skip` doesn't support ordering and we only -// want to skip one newline. It's simple to implement. -function skipNewline(text, index, opts) { - const backwards = opts && opts.backwards; - if (index === false) { - return false; - } - - const atIndex = text.charAt(index); - if (backwards) { - if (text.charAt(index - 1) === "\r" && atIndex === "\n") { - return index - 2; - } - if ( - atIndex === "\n" || - atIndex === "\r" || - atIndex === "\u2028" || - atIndex === "\u2029" - ) { - return index - 1; - } - } else { - if (atIndex === "\r" && text.charAt(index + 1) === "\n") { - return index + 2; - } - if ( - atIndex === "\n" || - atIndex === "\r" || - atIndex === "\u2028" || - atIndex === "\u2029" - ) { - return index + 1; - } - } - - return index; -} - -function hasNewline(text, index, opts) { - opts = opts || {}; - const idx = skipSpaces(text, opts.backwards ? index - 1 : index, opts); - const idx2 = skipNewline(text, idx, opts); - return idx !== idx2; -} - -function hasNewlineInRange(text, start, end) { - for (var i = start; i < end; ++i) { - if (text.charAt(i) === "\n") { - return true; - } - } - return false; -} - -// Note: this function doesn't ignore leading comments unlike isNextLineEmpty -function isPreviousLineEmpty(text, node) { - let idx = locStart$1(node) - 1; - idx = skipSpaces(text, idx, { backwards: true }); - idx = skipNewline(text, idx, { backwards: true }); - idx = skipSpaces(text, idx, { backwards: true }); - const idx2 = skipNewline(text, idx, { backwards: true }); - return idx !== idx2; -} - -function isNextLineEmpty(text, node) { - let oldIdx = null; - let idx = locEnd$1(node); - while (idx !== oldIdx) { - // We need to skip all the potential trailing inline comments - oldIdx = idx; - idx = skipToLineEnd(text, idx); - idx = skipInlineComment(text, idx); - idx = skipSpaces(text, idx); - } - idx = skipTrailingComment(text, idx); - idx = skipNewline(text, idx); - return hasNewline(text, idx); -} - -function getNextNonSpaceNonCommentCharacter$1(text, node) { - let oldIdx = null; - let idx = locEnd$1(node); - while (idx !== oldIdx) { - oldIdx = idx; - idx = skipSpaces(text, idx); - idx = skipInlineComment(text, idx); - idx = skipTrailingComment(text, idx); - idx = skipNewline(text, idx); - } - return text.charAt(idx); -} - -function hasSpaces(text, index, opts) { - opts = opts || {}; - const idx = skipSpaces(text, opts.backwards ? index - 1 : index, opts); - return idx !== index; -} - -function locStart$1(node) { - if (node.range) { - return node.range[0]; - } - return node.start; -} - -function locEnd$1(node) { - if (node.range) { - return node.range[1]; - } - return node.end; -} - -function setLocStart(node, index) { - if (node.range) { - node.range[0] = index; - } else { - node.start = index; - } -} - -function setLocEnd(node, index) { - if (node.range) { - node.range[1] = index; - } else { - node.end = index; - } -} - -// http://stackoverflow.com/a/7124052 -function htmlEscapeInsideAngleBracket(str) { - return str.replace(//g, ">"); - // Intentionally disable the following since it is safe inside of a - // angle bracket context - // .replace(/&/g, '&') - // .replace(/"/g, '"') - // .replace(/'/g, ''') -} - -var PRECEDENCE = {}; -[ - ["||"], - ["&&"], - ["|"], - ["^"], - ["&"], - ["==", "===", "!=", "!=="], - ["<", ">", "<=", ">=", "in", "instanceof"], - [">>", "<<", ">>>"], - ["+", "-"], - ["*", "/", "%"], - ["**"] -].forEach(function(tier, i) { - tier.forEach(function(op) { - PRECEDENCE[op] = i; - }); -}); - -function getPrecedence(op) { - return PRECEDENCE[op]; -} - - -// Tests if an expression starts with `{`, or (if forbidFunctionAndClass holds) `function` or `class`. -// Will be overzealous if there's already necessary grouping parentheses. -function startsWithNoLookaheadToken(node, forbidFunctionAndClass) { - node = getLeftMost(node); - switch (node.type) { - case "FunctionExpression": - case "ClassExpression": - return forbidFunctionAndClass; - case "ObjectExpression": - return true; - case "MemberExpression": - return startsWithNoLookaheadToken(node.object, forbidFunctionAndClass); - case "TaggedTemplateExpression": - if (node.tag.type === "FunctionExpression") { - // IIFEs are always already parenthesized - return false; - } - return startsWithNoLookaheadToken(node.tag, forbidFunctionAndClass); - case "CallExpression": - if (node.callee.type === "FunctionExpression") { - // IIFEs are always already parenthesized - return false; - } - return startsWithNoLookaheadToken(node.callee, forbidFunctionAndClass); - case "ConditionalExpression": - return startsWithNoLookaheadToken(node.test, forbidFunctionAndClass); - case "UpdateExpression": - return ( - !node.prefix && - startsWithNoLookaheadToken(node.argument, forbidFunctionAndClass) - ); - case "BindExpression": - return ( - node.object && - startsWithNoLookaheadToken(node.object, forbidFunctionAndClass) - ); - case "SequenceExpression": - return startsWithNoLookaheadToken( - node.expressions[0], - forbidFunctionAndClass - ); - default: - return false; - } -} - -function getLeftMost(node) { - if (node.left) { - return getLeftMost(node.left); - } else { - return node; - } -} - -var util$2 = { - getPrecedence, - isExportDeclaration, - getParentExportDeclaration, - getPenultimate, - getLast, - getNextNonSpaceNonCommentCharacter: getNextNonSpaceNonCommentCharacter$1, - skipWhitespace, - skipSpaces, - skipNewline, - isNextLineEmpty, - isPreviousLineEmpty, - hasNewline, - hasNewlineInRange, - hasSpaces, - locStart: locStart$1, - locEnd: locEnd$1, - setLocStart, - setLocEnd, - htmlEscapeInsideAngleBracket, - startsWithNoLookaheadToken -}; - -var require$$0$11 = ( assert$3 && assert$3['default'] ) || assert$3; - -var assert = require$$0$11; -var types = astTypes; -var n = types.namedTypes; -var isArray = types.builtInTypes.array; -var isObject = types.builtInTypes.object; -var docBuilders = docBuilders$1; -var concat = docBuilders.concat; -var hardline = docBuilders.hardline; -var breakParent = docBuilders.breakParent; -var indent = docBuilders.indent; -var lineSuffix = docBuilders.lineSuffix; -var join = docBuilders.join; -var util = util$2; -var childNodesCacheKey = Symbol("child-nodes"); -var locStart = util.locStart; -var locEnd = util.locEnd; -var getNextNonSpaceNonCommentCharacter = - util.getNextNonSpaceNonCommentCharacter; - -// TODO Move a non-caching implementation of this function into ast-types, -// and implement a caching wrapper function here. -function getSortedChildNodes(node, text, resultArray) { - if (!node) { - return; - } - - if (resultArray) { - if (n.Node.check(node) && node.type !== "EmptyStatement") { - // This reverse insertion sort almost always takes constant - // time because we almost always (maybe always?) append the - // nodes in order anyway. - for (var i = resultArray.length - 1; i >= 0; --i) { - if ( - locStart(resultArray[i]) <= locStart(node) && - locEnd(resultArray[i]) <= locEnd(node) - ) { - break; - } - } - resultArray.splice(i + 1, 0, node); - return; - } - } else if (node[childNodesCacheKey]) { - return node[childNodesCacheKey]; - } - - var names; - if (isArray.check(node)) { - names = Object.keys(node); - } else if (isObject.check(node)) { - names = types.getFieldNames(node); - } else { - return; - } - - if (!resultArray) { - Object.defineProperty(node, childNodesCacheKey, { - value: (resultArray = []), - enumerable: false - }); - } - - for (var i = 0, nameCount = names.length; i < nameCount; ++i) { - getSortedChildNodes(node[names[i]], text, resultArray); - } - - return resultArray; -} - -// As efficiently as possible, decorate the comment object with -// .precedingNode, .enclosingNode, and/or .followingNode properties, at -// least one of which is guaranteed to be defined. -function decorateComment(node, comment, text) { - var childNodes = getSortedChildNodes(node, text); - var precedingNode, followingNode; - // Time to dust off the old binary search robes and wizard hat. - var left = 0, right = childNodes.length; - while (left < right) { - var middle = (left + right) >> 1; - var child = childNodes[middle]; - - if ( - locStart(child) - locStart(comment) <= 0 && - locEnd(comment) - locEnd(child) <= 0 - ) { - // The comment is completely contained by this child node. - comment.enclosingNode = child; - - decorateComment(child, comment, text); - return; // Abandon the binary search at this level. - } - - if (locEnd(child) - locStart(comment) <= 0) { - // This child node falls completely before the comment. - // Because we will never consider this node or any nodes - // before it again, this node must be the closest preceding - // node we have encountered so far. - precedingNode = child; - left = middle + 1; - continue; - } - - if (locEnd(comment) - locStart(child) <= 0) { - // This child node falls completely after the comment. - // Because we will never consider this node or any nodes after - // it again, this node must be the closest following node we - // have encountered so far. - followingNode = child; - right = middle; - continue; - } - - throw new Error("Comment location overlaps with node location"); - } - - if (precedingNode) { - comment.precedingNode = precedingNode; - } - - if (followingNode) { - comment.followingNode = followingNode; - } -} - -function attach(comments, ast, text) { - if (!isArray.check(comments)) { - return; - } - - var tiesToBreak = []; - - comments.forEach((comment, i) => { - decorateComment(ast, comment, text); - - const precedingNode = comment.precedingNode; - const enclosingNode = comment.enclosingNode; - const followingNode = comment.followingNode; - - const isLastComment = comments.length - 1 === i; - - if (util.hasNewline(text, locStart(comment), { backwards: true })) { - // If a comment exists on its own line, prefer a leading comment. - // We also need to check if it's the first line of the file. - if ( - handleLastFunctionArgComments( - text, - precedingNode, - enclosingNode, - followingNode, - comment - ) || - handleMemberExpressionComments(enclosingNode, followingNode, comment) || - handleIfStatementComments( - text, - precedingNode, - enclosingNode, - followingNode, - comment - ) || - handleTryStatementComments(enclosingNode, followingNode, comment) || - handleClassComments(enclosingNode, comment) || - handleImportSpecifierComments(enclosingNode, comment) || - handleObjectPropertyComments(enclosingNode, comment) || - handleForComments(enclosingNode, precedingNode, comment) || - handleUnionTypeComments( - precedingNode, - enclosingNode, - followingNode, - comment - ) || - handleOnlyComments(enclosingNode, ast, comment, isLastComment) || - handleImportDeclarationComments( - enclosingNode, - precedingNode, - comment - ) || - handleAssignmentPatternComments(enclosingNode, comment) - ) { - // We're good - } else if (followingNode) { - // Always a leading comment. - addLeadingComment(followingNode, comment); - } else if (precedingNode) { - addTrailingComment(precedingNode, comment); - } else if (enclosingNode) { - addDanglingComment(enclosingNode, comment); - } else { - // There are no nodes, let's attach it to the root of the ast - addDanglingComment(ast, comment); - } - } else if (util.hasNewline(text, locEnd(comment))) { - if ( - handleLastFunctionArgComments( - text, - precedingNode, - enclosingNode, - followingNode, - comment - ) || - handleConditionalExpressionComments( - enclosingNode, - precedingNode, - followingNode, - comment, - text - ) || - handleImportSpecifierComments(enclosingNode, comment) || - handleTemplateLiteralComments(enclosingNode, comment) || - handleIfStatementComments( - text, - precedingNode, - enclosingNode, - followingNode, - comment - ) || - handleClassComments(enclosingNode, comment) || - handleLabeledStatementComments(enclosingNode, comment) || - handleCallExpressionComments(precedingNode, enclosingNode, comment) || - handlePropertyComments(enclosingNode, comment) || - handleExportNamedDeclarationComments(enclosingNode, comment) || - handleOnlyComments(enclosingNode, ast, comment, isLastComment) || - handleClassMethodComments(enclosingNode, comment) || - handleTypeAliasComments(enclosingNode, followingNode, comment) || - handleVariableDeclaratorComments(enclosingNode, followingNode, comment) - ) { - // We're good - } else if (precedingNode) { - // There is content before this comment on the same line, but - // none after it, so prefer a trailing comment of the previous node. - addTrailingComment(precedingNode, comment); - } else if (followingNode) { - addLeadingComment(followingNode, comment); - } else if (enclosingNode) { - addDanglingComment(enclosingNode, comment); - } else { - // There are no nodes, let's attach it to the root of the ast - addDanglingComment(ast, comment); - } - } else { - if ( - handleIfStatementComments( - text, - precedingNode, - enclosingNode, - followingNode, - comment - ) || - handleObjectPropertyAssignment(enclosingNode, precedingNode, comment) || - handleTemplateLiteralComments(enclosingNode, comment) || - handleCommentInEmptyParens(text, enclosingNode, comment) || - handleOnlyComments(enclosingNode, ast, comment, isLastComment) - ) { - // We're good - } else if (precedingNode && followingNode) { - // Otherwise, text exists both before and after the comment on - // the same line. If there is both a preceding and following - // node, use a tie-breaking algorithm to determine if it should - // be attached to the next or previous node. In the last case, - // simply attach the right node; - const tieCount = tiesToBreak.length; - if (tieCount > 0) { - var lastTie = tiesToBreak[tieCount - 1]; - if (lastTie.followingNode !== comment.followingNode) { - breakTies(tiesToBreak, text); - } - } - tiesToBreak.push(comment); - } else if (precedingNode) { - addTrailingComment(precedingNode, comment); - } else if (followingNode) { - addLeadingComment(followingNode, comment); - } else if (enclosingNode) { - addDanglingComment(enclosingNode, comment); - } else { - // There are no nodes, let's attach it to the root of the ast - addDanglingComment(ast, comment); - } - } - }); - - breakTies(tiesToBreak, text); - - comments.forEach(function(comment) { - // These node references were useful for breaking ties, but we - // don't need them anymore, and they create cycles in the AST that - // may lead to infinite recursion if we don't delete them here. - delete comment.precedingNode; - delete comment.enclosingNode; - delete comment.followingNode; - }); -} - -function breakTies(tiesToBreak, text) { - var tieCount = tiesToBreak.length; - if (tieCount === 0) { - return; - } - - var precedingNode = tiesToBreak[0].precedingNode; - var followingNode = tiesToBreak[0].followingNode; - var gapEndPos = locStart(followingNode); - - // Iterate backwards through tiesToBreak, examining the gaps - // between the tied comments. In order to qualify as leading, a - // comment must be separated from followingNode by an unbroken series of - // whitespace-only gaps (or other comments). - for ( - var indexOfFirstLeadingComment = tieCount; - indexOfFirstLeadingComment > 0; - --indexOfFirstLeadingComment - ) { - var comment = tiesToBreak[indexOfFirstLeadingComment - 1]; - assert.strictEqual(comment.precedingNode, precedingNode); - assert.strictEqual(comment.followingNode, followingNode); - - var gap = text.slice(locEnd(comment), gapEndPos); - if (/\S/.test(gap)) { - // The gap string contained something other than whitespace. - break; - } - - gapEndPos = locStart(comment); - } - - tiesToBreak.forEach(function(comment, i) { - if (i < indexOfFirstLeadingComment) { - addTrailingComment(precedingNode, comment); - } else { - addLeadingComment(followingNode, comment); - } - }); - - tiesToBreak.length = 0; -} - -function addCommentHelper(node, comment) { - var comments = node.comments || (node.comments = []); - comments.push(comment); - comment.printed = false; -} - -function addLeadingComment(node, comment) { - comment.leading = true; - comment.trailing = false; - addCommentHelper(node, comment); -} - -function addDanglingComment(node, comment) { - comment.leading = false; - comment.trailing = false; - addCommentHelper(node, comment); -} - -function addTrailingComment(node, comment) { - comment.leading = false; - comment.trailing = true; - addCommentHelper(node, comment); -} - -function addBlockStatementFirstComment(node, comment) { - const body = node.body.filter(n => n.type !== "EmptyStatement"); - if (body.length === 0) { - addDanglingComment(node, comment); - } else { - addLeadingComment(body[0], comment); - } -} - -function addBlockOrNotComment(node, comment) { - if (node.type === "BlockStatement") { - addBlockStatementFirstComment(node, comment); - } else { - addLeadingComment(node, comment); - } -} - -// There are often comments before the else clause of if statements like -// -// if (1) { ... } -// // comment -// else { ... } -// -// They are being attached as leading comments of the BlockExpression which -// is not well printed. What we want is to instead move the comment inside -// of the block and make it leadingComment of the first element of the block -// or dangling comment of the block if there is nothing inside -// -// if (1) { ... } -// else { -// // comment -// ... -// } -function handleIfStatementComments( - text, - precedingNode, - enclosingNode, - followingNode, - comment -) { - if ( - !enclosingNode || enclosingNode.type !== "IfStatement" || !followingNode - ) { - return false; - } - - // We unfortunately have no way using the AST or location of nodes to know - // if the comment is positioned before or after the condition parenthesis: - // if (a /* comment */) {} - // if (a) /* comment */ {} - // The only workaround I found is to look at the next character to see if - // it is a ). - if (getNextNonSpaceNonCommentCharacter(text, comment) === ")") { - addTrailingComment(precedingNode, comment); - return true; - } - - if (followingNode.type === "BlockStatement") { - addBlockStatementFirstComment(followingNode, comment); - return true; - } - - if (followingNode.type === "IfStatement") { - addBlockOrNotComment(followingNode.consequent, comment); - return true; - } - - return false; -} - -// Same as IfStatement but for TryStatement -function handleTryStatementComments(enclosingNode, followingNode, comment) { - if ( - !enclosingNode || enclosingNode.type !== "TryStatement" || !followingNode - ) { - return false; - } - - if (followingNode.type === "BlockStatement") { - addBlockStatementFirstComment(followingNode, comment); - return true; - } - - if (followingNode.type === "TryStatement") { - addBlockOrNotComment(followingNode.finalizer, comment); - return true; - } - - if (followingNode.type === "CatchClause") { - addBlockOrNotComment(followingNode.body, comment); - return true; - } - - return false; -} - -function handleMemberExpressionComments(enclosingNode, followingNode, comment) { - if ( - enclosingNode && - enclosingNode.type === "MemberExpression" && - followingNode && - followingNode.type === "Identifier" - ) { - addLeadingComment(enclosingNode, comment); - return true; - } - - return false; -} - -function handleConditionalExpressionComments( - enclosingNode, - precedingNode, - followingNode, - comment, - text -) { - const isSameLineAsPrecedingNode = - precedingNode && - !util.hasNewlineInRange(text, locEnd(precedingNode), locStart(comment)); - - if ( - (!precedingNode || !isSameLineAsPrecedingNode) && - enclosingNode && - enclosingNode.type === "ConditionalExpression" && - followingNode - ) { - addLeadingComment(followingNode, comment); - return true; - } - return false; -} - -function handleObjectPropertyAssignment(enclosingNode, precedingNode, comment) { - if ( - enclosingNode && - (enclosingNode.type === "ObjectProperty" || - enclosingNode.type === "Property") && - enclosingNode.shorthand && - enclosingNode.key === precedingNode && - enclosingNode.value.type === "AssignmentPattern" - ) { - addTrailingComment(enclosingNode.value.left, comment); - return true; - } - return false; -} - -function handleTemplateLiteralComments(enclosingNode, comment) { - if (enclosingNode && enclosingNode.type === "TemplateLiteral") { - const expressionIndex = findExpressionIndexForComment( - enclosingNode.quasis, - comment - ); - // Enforce all comments to be leading block comments. - comment.type = "CommentBlock"; - addLeadingComment(enclosingNode.expressions[expressionIndex], comment); - return true; - } - return false; -} - -function handleCommentInEmptyParens(text, enclosingNode, comment) { - if (getNextNonSpaceNonCommentCharacter(text, comment) !== ")") { - return false; - } - - // Only add dangling comments to fix the case when no params are present, - // i.e. a function without any argument. - if ( - enclosingNode && - (((enclosingNode.type === "FunctionDeclaration" || - enclosingNode.type === "FunctionExpression" || - enclosingNode.type === "ArrowFunctionExpression" || - enclosingNode.type === "ClassMethod" || - enclosingNode.type === "ObjectMethod") && - enclosingNode.params.length === 0) || - (enclosingNode.type === "CallExpression" && - enclosingNode.arguments.length === 0)) - ) { - addDanglingComment(enclosingNode, comment); - return true; - } - if ( - enclosingNode && - (enclosingNode.type === "MethodDefinition" && - enclosingNode.value.params.length === 0) - ) { - addDanglingComment(enclosingNode.value, comment); - return true; - } - return false; -} - -function handleLastFunctionArgComments( - text, - precedingNode, - enclosingNode, - followingNode, - comment -) { - // Type definitions functions - if ( - precedingNode && - precedingNode.type === "FunctionTypeParam" && - enclosingNode && - enclosingNode.type === "FunctionTypeAnnotation" && - followingNode && - followingNode.type !== "FunctionTypeParam" - ) { - addTrailingComment(precedingNode, comment); - return true; - } - - // Real functions - if ( - precedingNode && - (precedingNode.type === "Identifier" || - precedingNode.type === "AssignmentPattern") && - enclosingNode && - (enclosingNode.type === "ArrowFunctionExpression" || - enclosingNode.type === "FunctionExpression" || - enclosingNode.type === "FunctionDeclaration" || - enclosingNode.type === "ObjectMethod" || - enclosingNode.type === "ClassMethod") && - getNextNonSpaceNonCommentCharacter(text, comment) === ")" - ) { - addTrailingComment(precedingNode, comment); - return true; - } - return false; -} - -function handleClassComments(enclosingNode, comment) { - if ( - enclosingNode && - (enclosingNode.type === "ClassDeclaration" || - enclosingNode.type === "ClassExpression") - ) { - addLeadingComment(enclosingNode, comment); - return true; - } - return false; -} - -function handleImportSpecifierComments(enclosingNode, comment) { - if (enclosingNode && enclosingNode.type === "ImportSpecifier") { - addLeadingComment(enclosingNode, comment); - return true; - } - return false; -} - -function handleObjectPropertyComments(enclosingNode, comment) { - if (enclosingNode && enclosingNode.type === "ObjectProperty") { - addLeadingComment(enclosingNode, comment); - return true; - } - return false; -} - -function handleLabeledStatementComments(enclosingNode, comment) { - if (enclosingNode && enclosingNode.type === "LabeledStatement") { - addLeadingComment(enclosingNode, comment); - return true; - } - return false; -} - -function handleCallExpressionComments(precedingNode, enclosingNode, comment) { - if ( - enclosingNode && - enclosingNode.type === "CallExpression" && - precedingNode && - enclosingNode.callee === precedingNode && - enclosingNode.arguments.length > 0 - ) { - addLeadingComment(enclosingNode.arguments[0], comment); - return true; - } - return false; -} - -function handleUnionTypeComments( - precedingNode, - enclosingNode, - followingNode, - comment -) { - if (enclosingNode && enclosingNode.type === "UnionTypeAnnotation") { - addTrailingComment(precedingNode, comment); - return true; - } - return false; -} - -function handlePropertyComments(enclosingNode, comment) { - if ( - enclosingNode && - (enclosingNode.type === "Property" || - enclosingNode.type === "ObjectProperty") - ) { - addLeadingComment(enclosingNode, comment); - return true; - } - return false; -} - -function handleExportNamedDeclarationComments(enclosingNode, comment) { - if (enclosingNode && enclosingNode.type === "ExportNamedDeclaration") { - addLeadingComment(enclosingNode, comment); - return true; - } - return false; -} - -function handleOnlyComments(enclosingNode, ast, comment, isLastComment) { - // With Flow the enclosingNode is undefined so use the AST instead. - if (ast && ast.body && ast.body.length === 0) { - if (isLastComment) { - addDanglingComment(ast, comment); - } else { - addLeadingComment(ast, comment); - } - return true; - } else if ( - enclosingNode && - enclosingNode.type === "Program" && - enclosingNode.body.length === 0 && - enclosingNode.directives && - enclosingNode.directives.length === 0 - ) { - if (isLastComment) { - addDanglingComment(enclosingNode, comment); - } else { - addLeadingComment(enclosingNode, comment); - } - return true; - } - return false; -} - -function handleForComments(enclosingNode, precedingNode, comment) { - if ( - enclosingNode && - (enclosingNode.type === "ForInStatement" || - enclosingNode.type === "ForOfStatement") - ) { - addLeadingComment(enclosingNode, comment); - return true; - } - return false; -} - -function handleImportDeclarationComments( - enclosingNode, - precedingNode, - comment -) { - if ( - precedingNode && - enclosingNode && - enclosingNode.type === "ImportDeclaration" && - comment.type !== "CommentBlock" && - comment.type !== "Block" - ) { - addTrailingComment(precedingNode, comment); - return true; - } - return false; -} - -function handleAssignmentPatternComments(enclosingNode, comment) { - if (enclosingNode && enclosingNode.type === "AssignmentPattern") { - addLeadingComment(enclosingNode, comment); - return true; - } - return false; -} - -function handleClassMethodComments(enclosingNode, comment) { - if (enclosingNode && enclosingNode.type === "ClassMethod") { - addTrailingComment(enclosingNode, comment); - return true; - } - return false; -} - -function handleTypeAliasComments(enclosingNode, followingNode, comment) { - if (enclosingNode && enclosingNode.type === "TypeAlias") { - addLeadingComment(enclosingNode, comment); - return true; - } - return false; -} - -function handleVariableDeclaratorComments( - enclosingNode, - followingNode, - comment -) { - if ( - enclosingNode && - enclosingNode.type === "VariableDeclarator" && - followingNode && - (followingNode.type === "ObjectExpression" || - followingNode.type === "ArrayExpression") - ) { - addLeadingComment(followingNode, comment); - return true; - } - return false; -} - -function printComment(commentPath) { - const comment = commentPath.getValue(); - comment.printed = true; - - switch (comment.type) { - case "CommentBlock": - case "Block": - return "/*" + comment.value + "*/"; - case "CommentLine": - case "Line": - return "//" + comment.value; - default: - throw new Error("Not a comment: " + JSON.stringify(comment)); - } -} - -function findExpressionIndexForComment(quasis, comment) { - const startPos = locStart(comment) - 1; - - for (let i = 1; i < quasis.length; ++i) { - if (startPos < getQuasiRange(quasis[i]).start) { - return i - 1; - } - } - - // We haven't found it, it probably means that some of the locations are off. - // Let's just return the first one. - return 0; -} - -function getQuasiRange(expr) { - if (expr.start !== undefined) { - // Babylon - return { start: expr.start, end: expr.end }; - } - // Flow - return { start: expr.range[0], end: expr.range[1] }; -} - -function printLeadingComment(commentPath, print, options) { - const comment = commentPath.getValue(); - const contents = printComment(commentPath); - const isBlock = comment.type === "Block" || comment.type === "CommentBlock"; - - // Leading block comments should see if they need to stay on the - // same line or not. - if (isBlock) { - return concat([ - contents, - util.hasNewline(options.originalText, locEnd(comment)) ? hardline : " " - ]); - } - - return concat([contents, hardline]); -} - -function printTrailingComment(commentPath, print, options) { - const comment = commentPath.getValue(); - const contents = printComment(commentPath); - const isBlock = comment.type === "Block" || comment.type === "CommentBlock"; - - if ( - util.hasNewline(options.originalText, locStart(comment), { - backwards: true - }) - ) { - // This allows comments at the end of nested structures: - // { - // x: 1, - // y: 2 - // // A comment - // } - // Those kinds of comments are almost always leading comments, but - // here it doesn't go "outside" the block and turns it into a - // trailing comment for `2`. We can simulate the above by checking - // if this a comment on its own line; normal trailing comments are - // always at the end of another expression. - - const isLineBeforeEmpty = util.isPreviousLineEmpty( - options.originalText, - comment - ); - - return lineSuffix( - concat([hardline, isLineBeforeEmpty ? hardline : "", contents]) - ); - } else if (isBlock) { - // Trailing block comments never need a newline - return concat([" ", contents]); - } - - return concat([lineSuffix(" " + contents), !isBlock ? breakParent : ""]); -} - -function printDanglingComments(path, options, sameIndent) { - const parts = []; - const node = path.getValue(); - - if (!node || !node.comments) { - return ""; - } - - path.each(commentPath => { - const comment = commentPath.getValue(); - if (!comment.leading && !comment.trailing) { - parts.push(printComment(commentPath)); - } - }, "comments"); - - if (parts.length === 0) { - return ""; - } - - if (sameIndent) { - return join(hardline, parts); - } - return indent(concat([hardline, join(hardline, parts)])); -} - -function printComments(path, print, options, needsSemi) { - var value = path.getValue(); - var parent = path.getParentNode(); - var printed = print(path); - var comments = n.Node.check(value) && types.getFieldValue(value, "comments"); - - if (!comments || comments.length === 0) { - return printed; - } - - var leadingParts = []; - var trailingParts = [needsSemi ? ";" : "", printed]; - - path.each(function(commentPath) { - var comment = commentPath.getValue(); - var leading = types.getFieldValue(comment, "leading"); - var trailing = types.getFieldValue(comment, "trailing"); - - if (leading) { - leadingParts.push(printLeadingComment(commentPath, print, options)); - - const text = options.originalText; - if (util.hasNewline(text, util.skipNewline(text, util.locEnd(comment)))) { - leadingParts.push(hardline); - } - } else if (trailing) { - trailingParts.push( - printTrailingComment(commentPath, print, options, parent) - ); - } - }, "comments"); - - return concat(leadingParts.concat(trailingParts)); -} - -var comments$1 = { attach, printComments, printDanglingComments }; - -var name = "prettier"; -var version$2 = "1.3.1"; -var description = "Prettier is an opinionated JavaScript formatter"; -var bin = {"prettier":"./bin/prettier.js"}; -var repository = "prettier/prettier"; -var author = "James Long"; -var license = "MIT"; -var main = "./index.js"; -var dependencies = {"ast-types":"0.9.8","babel-code-frame":"6.22.0","babylon":"7.0.0-beta.8","chalk":"1.1.3","esutils":"2.0.2","flow-parser":"0.45.0","get-stdin":"5.0.1","glob":"7.1.1","jest-validate":"19.0.0","minimist":"1.2.0"}; -var devDependencies = {"diff":"3.2.0","jest":"19.0.1","mkdirp":"^0.5.1","rimraf":"^2.6.1","rollup":"0.41.1","rollup-plugin-commonjs":"7.0.0","rollup-plugin-json":"2.1.0","rollup-plugin-node-builtins":"2.0.0","rollup-plugin-node-globals":"1.1.0","rollup-plugin-node-resolve":"2.0.0","typescript":"2.3.2","typescript-eslint-parser":"git://github.com/eslint/typescript-eslint-parser.git#a294afa8158c9c088521eed72b6745eed302361c"}; -var scripts = {"test":"jest","format":"./bin/prettier.js --write","format:single":"npm run format -- src/printer.js","format:all":"npm run format -- index.js src/*.js bin/*.js","build:docs":"rollup -c docs/rollup.config.js"}; -var jest = {"setupFiles":["/tests_config/run_spec.js"],"snapshotSerializers":["/tests_config/raw-serializer.js"],"testRegex":"jsfmt\\.spec\\.js$","testPathIgnorePatterns":["tests/new_react","tests/more_react"]}; -var _package = { - name: name, - version: version$2, - description: description, - bin: bin, - repository: repository, - author: author, - license: license, - main: main, - dependencies: dependencies, - devDependencies: devDependencies, - scripts: scripts, - jest: jest -}; - -var _package$1 = Object.freeze({ - name: name, - version: version$2, - description: description, - bin: bin, - repository: repository, - author: author, - license: license, - main: main, - dependencies: dependencies, - devDependencies: devDependencies, - scripts: scripts, - jest: jest, - default: _package -}); - -var assert$5 = require$$0$11; -var types$4 = astTypes; -var util$5 = util$2; -var n$1 = types$4.namedTypes; -var isArray$3 = types$4.builtInTypes.array; -var isNumber$1 = types$4.builtInTypes.number; -var startsWithNoLookaheadToken$1 = util$5.startsWithNoLookaheadToken; - -function FastPath$1(value) { - assert$5.ok(this instanceof FastPath$1); - this.stack = [value]; -} - -var FPp = FastPath$1.prototype; - -// Static convenience function for coercing a value to a FastPath. -FastPath$1.from = function(obj) { - if (obj instanceof FastPath$1) { - // Return a defensive copy of any existing FastPath instances. - return obj.copy(); - } - - if (obj instanceof types$4.NodePath) { - // For backwards compatibility, unroll NodePath instances into - // lightweight FastPath [..., name, value] stacks. - var copy = Object.create(FastPath$1.prototype); - var stack = [obj.value]; - for (var pp; (pp = obj.parentPath); obj = pp) - stack.push(obj.name, pp.value); - copy.stack = stack.reverse(); - return copy; - } - - // Otherwise use obj as the value of the new FastPath instance. - return new FastPath$1(obj); -}; - -FPp.copy = function copy() { - var copy = Object.create(FastPath$1.prototype); - copy.stack = this.stack.slice(0); - return copy; -}; - -// The name of the current property is always the penultimate element of -// this.stack, and always a String. -FPp.getName = function getName() { - var s = this.stack; - var len = s.length; - if (len > 1) { - return s[len - 2]; - } - // Since the name is always a string, null is a safe sentinel value to - // return if we do not know the name of the (root) value. - return null; -}; - -// The value of the current property is always the final element of -// this.stack. -FPp.getValue = function getValue() { - var s = this.stack; - return s[s.length - 1]; -}; - -function getNodeHelper(path, count) { - var s = path.stack; - - for (var i = s.length - 1; i >= 0; i -= 2) { - var value = s[i]; - - if ((n$1.Node.check(value)) && --count < 0) { - return value; - } - } - - return null; -} - -FPp.getNode = function getNode(count) { - return getNodeHelper(this, ~~count); -}; - -FPp.getParentNode = function getParentNode(count) { - return getNodeHelper(this, ~~count + 1); -}; - -FPp.isLast = function isLast() { - var s = this.stack; - if (this.getParentNode()) { - var idx = s[s.length - 2]; - // The name of this node should be an index - assert$5.ok(typeof idx === "number"); - - const arr = s[s.length - 3]; - // We should have an array as a parent node - assert$5.ok(Array.isArray(arr)); - - return idx === arr.length - 1; - } - return false; -}; - -// Temporarily push properties named by string arguments given after the -// callback function onto this.stack, then call the callback with a -// reference to this (modified) FastPath object. Note that the stack will -// be restored to its original state after the callback is finished, so it -// is probably a mistake to retain a reference to the path. -FPp.call = function call(callback /*, name1, name2, ... */) { - var s = this.stack; - var origLen = s.length; - var value = s[origLen - 1]; - var argc = arguments.length; - for (var i = 1; i < argc; ++i) { - var name = arguments[i]; - value = value[name]; - s.push(name, value); - } - var result = callback(this); - s.length = origLen; - return result; -}; - -// Similar to FastPath.prototype.call, except that the value obtained by -// accessing this.getValue()[name1][name2]... should be array-like. The -// callback will be called with a reference to this path object for each -// element of the array. -FPp.each = function each(callback /*, name1, name2, ... */) { - var s = this.stack; - var origLen = s.length; - var value = s[origLen - 1]; - var argc = arguments.length; - - for (var i = 1; i < argc; ++i) { - var name = arguments[i]; - value = value[name]; - s.push(name, value); - } - - for (var i = 0; i < value.length; ++i) { - if (i in value) { - s.push(i, value[i]); - // If the callback needs to know the value of i, call - // path.getName(), assuming path is the parameter name. - callback(this); - s.length -= 2; - } - } - - s.length = origLen; -}; - -// Similar to FastPath.prototype.each, except that the results of the -// callback function invocations are stored in an array and returned at -// the end of the iteration. -FPp.map = function map(callback /*, name1, name2, ... */) { - var s = this.stack; - var origLen = s.length; - var value = s[origLen - 1]; - var argc = arguments.length; - - for (var i = 1; i < argc; ++i) { - var name = arguments[i]; - value = value[name]; - s.push(name, value); - } - - var result = new Array(value.length); - - for (var i = 0; i < value.length; ++i) { - if (i in value) { - s.push(i, value[i]); - result[i] = callback(this, i); - s.length -= 2; - } - } - - s.length = origLen; - - return result; -}; - -// Inspired by require("ast-types").NodePath.prototype.needsParens, but -// more efficient because we're iterating backwards through a stack. -FPp.needsParens = function() { - var parent = this.getParentNode(); - if (!parent) { - return false; - } - - var name = this.getName(); - var node = this.getNode(); - - // If the value of this path is some child of a Node and not a Node - // itself, then it doesn't need parentheses. Only Node objects (in - // fact, only Expression nodes) need parentheses. - if (this.getValue() !== node) { - return false; - } - - // Only statements don't need parentheses. - if (n$1.Statement.check(node)) { - return false; - } - - // Identifiers never need parentheses. - if (node.type === "Identifier") { - return false; - } - - if (parent.type === "ParenthesizedExpression") { - return false; - } - - // Add parens around the extends clause of a class. It is needed for almost - // all expressions. - if ( - (parent.type === "ClassDeclaration" || parent.type === "ClassExpression") && - parent.superClass === node && - (node.type === "ArrowFunctionExpression" || - node.type === "AssignmentExpression" || - node.type === "AwaitExpression" || - node.type === "BinaryExpression" || - node.type === "ConditionalExpression" || - node.type === "LogicalExpression" || - node.type === "NewExpression" || - node.type === "ObjectExpression" || - node.type === "ParenthesizedExpression" || - node.type === "SequenceExpression" || - node.type === "TaggedTemplateExpression" || - node.type === "UnaryExpression" || - node.type === "UpdateExpression" || - node.type === "YieldExpression") - ) { - return true; - } - - if ( - (parent.type === "ArrowFunctionExpression" && - parent.body === node && - startsWithNoLookaheadToken$1(node, /* forbidFunctionAndClass */ false)) || - (parent.type === "ExpressionStatement" && - startsWithNoLookaheadToken$1(node, /* forbidFunctionAndClass */ true)) - ) { - return true; - } - - switch (node.type) { - case "CallExpression": - if (parent.type === "NewExpression" && parent.callee === node) { - return true; - } - return false; - - case "SpreadElement": - case "SpreadProperty": - return ( - parent.type === "MemberExpression" && - name === "object" && - parent.object === node - ); - - case "UpdateExpression": - if (parent.type === "UnaryExpression") { - return ( - node.prefix && - ((node.operator === "++" && parent.operator === "+") || - (node.operator === "--" && parent.operator === "-")) - ); - } - // else fall through - case "UnaryExpression": - switch (parent.type) { - case "UnaryExpression": - return ( - node.operator === parent.operator && - (node.operator === "+" || node.operator === "-") - ); - - case "MemberExpression": - return name === "object" && parent.object === node; - - case "TaggedTemplateExpression": - return true; - - case "NewExpression": - case "CallExpression": - return name === "callee" && parent.callee === node; - - case "BinaryExpression": - return parent.operator === "**" && name === "left"; - - default: - return false; - } - - case "BinaryExpression": - const isLeftOfAForStatement = node => { - let i = 0; - while (node) { - let parent = this.getParentNode(i++); - if (!parent) { - return false; - } - if (parent.type === "ForStatement" && parent.init === node) { - return true; - } - node = parent; - } - return false; - }; - if (node.operator === "in" && isLeftOfAForStatement(node)) { - return true; - } - // else fall through - case "LogicalExpression": - switch (parent.type) { - case "CallExpression": - case "NewExpression": - return name === "callee" && parent.callee === node; - - case "TaggedTemplateExpression": - case "UnaryExpression": - case "SpreadElement": - case "SpreadProperty": - return true; - - case "MemberExpression": - return name === "object" && parent.object === node; - - case "BinaryExpression": - case "LogicalExpression": - var po = parent.operator; - var pp = util$5.getPrecedence(po); - var no = node.operator; - var np = util$5.getPrecedence(no); - - if (po === "||" && no === "&&") { - return true; - } - - if (pp > np) { - return true; - } - - if (no === "**" && po === "**") { - return name === "left"; - } - - if (pp === np && name === "right") { - assert$5.strictEqual(parent.right, node); - return true; - } - - // Add parenthesis when working with binary operators - // It's not stricly needed but helps with code understanding - if (["|", "^", "&", ">>", "<<", ">>>"].indexOf(po) !== -1) { - return true; - } - - default: - return false; - } - - case "SequenceExpression": - switch (parent.type) { - case "ReturnStatement": - return false; - - case "ForStatement": - // Although parentheses wouldn't hurt around sequence - // expressions in the head of for loops, traditional style - // dictates that e.g. i++, j++ should not be wrapped with - // parentheses. - return false; - - case "ExpressionStatement": - return name !== "expression"; - - default: - // Otherwise err on the side of overparenthesization, adding - // explicit exceptions above if this proves overzealous. - return true; - } - - case "YieldExpression": - if (parent.type === "UnaryExpression") { - return true; - } - // else fall through - case "AwaitExpression": - switch (parent.type) { - case "TaggedTemplateExpression": - case "BinaryExpression": - case "LogicalExpression": - case "SpreadElement": - case "SpreadProperty": - case "NewExpression": - case "MemberExpression": - return true; - - case "CallExpression": - return parent.callee === node; - - case "ConditionalExpression": - return parent.test === node; - - default: - return false; - } - - case "ArrayTypeAnnotation": - return parent.type === "NullableTypeAnnotation"; - - case "IntersectionTypeAnnotation": - case "UnionTypeAnnotation": - return ( - parent.type === "ArrayTypeAnnotation" || - parent.type === "NullableTypeAnnotation" || - parent.type === "IntersectionTypeAnnotation" || - parent.type === "UnionTypeAnnotation" - ); - - case "NullableTypeAnnotation": - return parent.type === "ArrayTypeAnnotation"; - - case "FunctionTypeAnnotation": - return ( - parent.type === "UnionTypeAnnotation" || - parent.type === "IntersectionTypeAnnotation" - ); - - case "NumericLiteral": - case "Literal": - return ( - parent.type === "MemberExpression" && - isNumber$1.check(node.value) && - name === "object" && - parent.object === node - ); - - case "AssignmentExpression": - if (parent.type === "ArrowFunctionExpression" && parent.body === node) { - return true; - } else if ( - parent.type === "ForStatement" && - (parent.init === node || parent.update === node) - ) { - return false; - } else if (parent.type === "ExpressionStatement") { - return node.left.type === "ObjectPattern"; - } else if (parent.type === "AssignmentExpression") { - return false; - } - return true; - - case "ConditionalExpression": - switch (parent.type) { - case "TaggedTemplateExpression": - case "UnaryExpression": - case "SpreadElement": - case "SpreadProperty": - case "BinaryExpression": - case "LogicalExpression": - case "ExportDefaultDeclaration": - case "AwaitExpression": - case "JSXSpreadAttribute": - return true; - - case "NewExpression": - case "CallExpression": - return name === "callee" && parent.callee === node; - - case "ConditionalExpression": - return name === "test" && parent.test === node; - - case "MemberExpression": - return name === "object" && parent.object === node; - - default: - return false; - } - - case "FunctionExpression": - switch (parent.type) { - case "CallExpression": - return name === "callee"; // Not strictly necessary, but it's clearer to the reader if IIFEs are wrapped in parentheses. - case "TaggedTemplateExpression": - return true; // This is basically a kind of IIFE. - case "ExportDefaultDeclaration": - return true; - default: - return false; - } - - case "ArrowFunctionExpression": - switch (parent.type) { - case "CallExpression": - return name === "callee"; - - case "NewExpression": - return name === "callee"; - - case "MemberExpression": - return name === "object"; - - case "BindExpression": - case "TaggedTemplateExpression": - case "UnaryExpression": - case "LogicalExpression": - case "BinaryExpression": - return true; - - case "ConditionalExpression": - return name === "test"; - - default: - return false; - } - - case "ClassExpression": - return parent.type === "ExportDefaultDeclaration"; - - case "StringLiteral": - return parent.type === "ExpressionStatement"; // To avoid becoming a directive - } - - if ( - parent.type === "NewExpression" && - name === "callee" && - parent.callee === node - ) { - return containsCallExpression(node); - } - - return false; -}; - -function containsCallExpression(node) { - if (n$1.CallExpression.check(node)) { - return true; - } - - if (isArray$3.check(node)) { - return node.some(containsCallExpression); - } - - if (n$1.Node.check(node)) { - return types$4.someField(node, function(name, child) { - return containsCallExpression(child); - }); - } - - return false; -} - -var fastPath = FastPath$1; - -function traverseDoc(doc, onEnter, onExit, shouldTraverseConditionalGroups) { - function traverseDocRec(doc) { - var shouldRecurse = true; - if (onEnter) { - if (onEnter(doc) === false) { - shouldRecurse = false; - } - } - - if (shouldRecurse) { - if (doc.type === "concat") { - for (var i = 0; i < doc.parts.length; i++) { - traverseDocRec(doc.parts[i]); - } - } else if (doc.type === "if-break") { - if (doc.breakContents) { - traverseDocRec(doc.breakContents); - } - if (doc.flatContents) { - traverseDocRec(doc.flatContents); - } - } else if (doc.type === "group" && doc.expandedStates) { - if (shouldTraverseConditionalGroups) { - doc.expandedStates.forEach(traverseDocRec); - } else { - traverseDocRec(doc.contents); - } - } else if (doc.contents) { - traverseDocRec(doc.contents); - } - } - - if (onExit) { - onExit(doc); - } - } - - traverseDocRec(doc); -} - -function mapDoc(doc, func) { - doc = func(doc); - - if (doc.type === "concat") { - return Object.assign({}, doc, { - parts: doc.parts.map(d => mapDoc(d, func)) - }); - } else if (doc.type === "if-break") { - return Object.assign({}, doc, { - breakContents: doc.breakContents && mapDoc(doc.breakContents, func), - flatContents: doc.flatContents && mapDoc(doc.flatContents, func) - }); - } else if (doc.contents) { - return Object.assign({}, doc, { contents: mapDoc(doc.contents, func) }); - } else { - return doc; - } -} - -function findInDoc(doc, fn, defaultValue) { - var result = defaultValue; - var hasStopped = false; - traverseDoc(doc, function(doc) { - var maybeResult = fn(doc); - if (maybeResult !== undefined) { - hasStopped = true; - result = maybeResult; - } - if (hasStopped) { - return false; - } - }); - return result; -} - -function isEmpty$1(n) { - return typeof n === "string" && n.length === 0; -} - -function isLineNext$1(doc) { - return findInDoc( - doc, - doc => { - if (typeof doc === "string") { - return false; - } - if (doc.type === "line") { - return true; - } - }, - false - ); -} - -function willBreak$1(doc) { - return findInDoc( - doc, - doc => { - if (doc.type === "group" && doc.break) { - return true; - } - if (doc.type === "line" && doc.hard) { - return true; - } - if (doc.type === "break-parent") { - return true; - } - }, - false - ); -} - -function breakParentGroup(groupStack) { - if (groupStack.length > 0) { - const parentGroup = groupStack[groupStack.length - 1]; - // Breaks are not propagated through conditional groups because - // the user is expected to manually handle what breaks. - if (!parentGroup.expandedStates) { - parentGroup.break = true; - } - } - return null; -} - -function propagateBreaks(doc) { - var alreadyVisited = new Map(); - const groupStack = []; - traverseDoc( - doc, - doc => { - if (doc.type === "break-parent") { - breakParentGroup(groupStack); - } - if (doc.type === "group") { - groupStack.push(doc); - if (alreadyVisited.has(doc)) { - return false; - } - alreadyVisited.set(doc, true); - } - }, - doc => { - if (doc.type === "group") { - const group = groupStack.pop(); - if (group.break) { - breakParentGroup(groupStack); - } - } - }, - /* shouldTraverseConditionalGroups */ true - ); -} - -var docUtils$1 = { - isEmpty: isEmpty$1, - willBreak: willBreak$1, - isLineNext: isLineNext$1, - traverseDoc, - mapDoc, - propagateBreaks -}; - -var assert$4 = require$$0$11; -var comments$3 = comments$1; -var FastPath = fastPath; -var util$4 = util$2; -var isIdentifierName = utils.keyword.isIdentifierNameES6; - -var docBuilders$3 = docBuilders$1; -var concat$2 = docBuilders$3.concat; -var join$2 = docBuilders$3.join; -var line$1 = docBuilders$3.line; -var hardline$2 = docBuilders$3.hardline; -var softline$1 = docBuilders$3.softline; -var literalline$1 = docBuilders$3.literalline; -var group$1 = docBuilders$3.group; -var indent$2 = docBuilders$3.indent; -var align$1 = docBuilders$3.align; -var conditionalGroup$1 = docBuilders$3.conditionalGroup; -var ifBreak$1 = docBuilders$3.ifBreak; -var breakParent$2 = docBuilders$3.breakParent; -var lineSuffixBoundary$1 = docBuilders$3.lineSuffixBoundary; - -var docUtils = docUtils$1; -var willBreak = docUtils.willBreak; -var isLineNext = docUtils.isLineNext; -var isEmpty = docUtils.isEmpty; - -var types$3 = astTypes; -var namedTypes = types$3.namedTypes; -var isString$1 = types$3.builtInTypes.string; - -function shouldPrintComma(options, level) { - level = level || "es5"; - - switch (options.trailingComma) { - case "all": - if (level === "all") { - return true; - } - case "es5": - if (level === "es5") { - return true; - } - case "none": - default: - return false; - } -} - -function genericPrint(path, options, printPath, args) { - assert$4.ok(path instanceof FastPath); - - var node = path.getValue(); - - // Escape hatch - if ( - node && - node.comments && - node.comments.length > 0 && - node.comments.some(comment => comment.value.trim() === "prettier-ignore") - ) { - return options.originalText.slice(util$4.locStart(node), util$4.locEnd(node)); - } - - var parts = []; - var needsParens = false; - var linesWithoutParens = genericPrintNoParens(path, options, printPath, args); - - if (!node || isEmpty(linesWithoutParens)) { - return linesWithoutParens; - } - - if ( - node.decorators && - node.decorators.length > 0 && - // If the parent node is an export declaration, it will be - // responsible for printing node.decorators. - !util$4.getParentExportDeclaration(path) - ) { - const separator = node.decorators.length === 1 && - (node.decorators[0].expression.type === "Identifier" || - node.decorators[0].expression.type === "MemberExpression") - ? " " - : hardline$2; - path.each(function(decoratorPath) { - parts.push(printPath(decoratorPath), separator); - }, "decorators"); - } else if ( - util$4.isExportDeclaration(node) && - node.declaration && - node.declaration.decorators - ) { - // Export declarations are responsible for printing any decorators - // that logically apply to node.declaration. - path.each( - function(decoratorPath) { - parts.push(printPath(decoratorPath), line$1); - }, - "declaration", - "decorators" - ); - } else { - // Nodes with decorators can't have parentheses, so we can avoid - // computing path.needsParens() except in this case. - needsParens = path.needsParens(); - } - - if (node.type) { - // HACK: ASI prevention in no-semi mode relies on knowledge of whether - // or not a paren has been inserted (see `exprNeedsASIProtection()`). - // For now, we're just passing that information by mutating the AST here, - // but it would be nice to find a cleaner way to do this. - node.needsParens = needsParens; - } - - if (needsParens) { - parts.unshift("("); - } - - parts.push(linesWithoutParens); - - if (needsParens) { - parts.push(")"); - } - - return concat$2(parts); -} - -function genericPrintNoParens(path, options, print, args) { - var n = path.getValue(); - const semi = options.semi ? ";" : ""; - - if (!n) { - return ""; - } - - if (typeof n === "string") { - return n; - } - - // TODO: Investigate types that return not printable. - // This assert isn't very useful though. - // namedTypes.Printable.assert(n); - - var parts = []; - switch (n.type) { - case "File": - return path.call(print, "program"); - case "Program": - // Babel 6 - if (n.directives) { - path.each(function(childPath) { - parts.push(print(childPath), semi, hardline$2); - if ( - util$4.isNextLineEmpty(options.originalText, childPath.getValue()) - ) { - parts.push(hardline$2); - } - }, "directives"); - } - - parts.push( - path.call(function(bodyPath) { - return printStatementSequence(bodyPath, options, print); - }, "body") - ); - - parts.push( - comments$3.printDanglingComments(path, options, /* sameIndent */ true) - ); - - // Only force a trailing newline if there were any contents. - if (n.body.length || n.comments) { - parts.push(hardline$2); - } - - return concat$2(parts); - // Babel extension. - case "Noop": - case "EmptyStatement": - return ""; - case "ExpressionStatement": - return concat$2([path.call(print, "expression"), semi]); // Babel extension. - case "ParenthesizedExpression": - return concat$2(["(", path.call(print, "expression"), ")"]); - case "AssignmentExpression": - return printAssignment( - n.left, - path.call(print, "left"), - n.operator, - n.right, - path.call(print, "right"), - options - ); - case "BinaryExpression": - case "LogicalExpression": { - const parent = path.getParentNode(); - const isInsideParenthesis = - n !== parent.body && - (parent.type === "IfStatement" || - parent.type === "WhileStatement" || - parent.type === "DoStatement"); - - const parts = printBinaryishExpressions( - path, - print, - options, - /* isNested */ false, - isInsideParenthesis - ); - - // if ( - // this.hasPlugin("dynamicImports") && this.lookahead().type === tt.parenLeft - // ) { - // - // looks super weird, we want to break the children if the parent breaks - // - // if ( - // this.hasPlugin("dynamicImports") && - // this.lookahead().type === tt.parenLeft - // ) { - if (isInsideParenthesis) { - return concat$2(parts); - } - - // Avoid indenting sub-expressions in assignment/return/etc statements. - if ( - parent.type === "AssignmentExpression" || - parent.type === "VariableDeclarator" || - shouldInlineLogicalExpression(n) || - parent.type === "ReturnStatement" || - (n === parent.body && parent.type === "ArrowFunctionExpression") || - (n !== parent.body && parent.type === "ForStatement") - ) { - return group$1(concat$2(parts)); - } - - const rest = concat$2(parts.slice(1)); - - return group$1( - concat$2([ - // Don't include the initial expression in the indentation - // level. The first item is guaranteed to be the first - // left-most expression. - parts.length > 0 ? parts[0] : "", - indent$2(rest) - ]) - ); - } - case "AssignmentPattern": - return concat$2([ - path.call(print, "left"), - " = ", - path.call(print, "right") - ]); - case "MemberExpression": { - const parent = path.getParentNode(); - let firstNonMemberParent; - let i = 0; - do { - firstNonMemberParent = path.getParentNode(i); - i++; - } while ( - firstNonMemberParent && - firstNonMemberParent.type === "MemberExpression" - ); - - const shouldInline = - firstNonMemberParent && ( - (firstNonMemberParent.type === "VariableDeclarator" && - firstNonMemberParent.id.type !== "Identifier") || - (firstNonMemberParent.type === "AssignmentExpression" && - firstNonMemberParent.left.type !== "Identifier")) || - n.computed || - (n.object.type === "Identifier" && - n.property.type === "Identifier" && - parent.type !== "MemberExpression"); - - return concat$2([ - path.call(print, "object"), - shouldInline - ? printMemberLookup(path, options, print) - : group$1( - indent$2( - concat$2([softline$1, printMemberLookup(path, options, print)]) - ) - ) - ]); - } - case "MetaProperty": - return concat$2([ - path.call(print, "meta"), - ".", - path.call(print, "property") - ]); - case "BindExpression": - if (n.object) { - parts.push(path.call(print, "object")); - } - - parts.push("::", path.call(print, "callee")); - - return concat$2(parts); - case "Path": - return join$2(".", n.body); - case "Identifier": - var parentNode = path.getParentNode(); - var isFunctionDeclarationIdentifier = - parentNode.type === 'DeclareFunction' && - parentNode.id === n; - - return concat$2([ - n.name, - n.optional ? "?" : "", - (n.typeAnnotation && !isFunctionDeclarationIdentifier) ? ": " : "", - path.call(print, "typeAnnotation") - ]); - case "SpreadElement": - case "SpreadElementPattern": - // Babel 6 for ObjectPattern - case "RestProperty": - case "SpreadProperty": - case "SpreadPropertyPattern": - case "RestElement": - case "ObjectTypeSpreadProperty": - return concat$2([ - "...", - path.call(print, "argument"), - n.typeAnnotation ? ": " : "", - path.call(print, "typeAnnotation") - ]); - case "FunctionDeclaration": - case "FunctionExpression": - if (isNodeStartingWithDeclare(n, options)) { - parts.push("declare "); - } - parts.push(printFunctionDeclaration(path, print, options)); - return concat$2(parts); - case "ArrowFunctionExpression": { - if (n.async) parts.push("async "); - - if (n.typeParameters) { - parts.push(path.call(print, "typeParameters")); - } - - if (canPrintParamsWithoutParens(n)) { - parts.push(path.call(print, "params", 0)); - } else { - parts.push( - group$1( - concat$2([ - printFunctionParams( - path, - print, - options, - args && (args.expandLastArg || args.expandFirstArg) - ), - printReturnType(path, print) - ]) - ) - ); - } - - parts.push(" =>"); - - const body = path.call(print, "body"); - const collapsed = concat$2([concat$2(parts), " ", body]); - - // We want to always keep these types of nodes on the same line - // as the arrow. - if ( - n.body.type === "ArrayExpression" || - n.body.type === "ObjectExpression" || - n.body.type === "JSXElement" || - n.body.type === "BlockStatement" || - isTemplateOnItsOwnLine(n.body, options.originalText) || - n.body.type === "ArrowFunctionExpression" - ) { - return group$1(collapsed); - } - - // if the arrow function is expanded as last argument, we are adding a - // level of indentation and need to add a softline to align the closing ) - // with the opening (. - const shouldAddSoftLine = args && args.expandLastArg; - - // In order to avoid confusion between - // a => a ? a : a - // a <= a ? a : a - const shouldAddParens = - n.body.type === "ConditionalExpression" && - !util$4.startsWithNoLookaheadToken( - n.body, - /* forbidFunctionAndClass */ false - ); - - return group$1( - concat$2([ - concat$2(parts), - group$1( - concat$2([ - indent$2( - concat$2([ - line$1, - shouldAddParens ? ifBreak$1("", "(") : "", - body, - shouldAddParens ? ifBreak$1("", ")") : "" - ]) - ), - shouldAddSoftLine - ? concat$2([ - ifBreak$1(shouldPrintComma(options, "all") ? "," : ""), - softline$1 - ]) - : "" - ]) - ) - ]) - ); - } - case "MethodDefinition": - case "TSAbstractMethodDefinition": - if (n.static) { - parts.push("static "); - } - if (n.accessibility) { - parts.push(n.accessibility + " "); - } - if (n.type === "TSAbstractMethodDefinition") { - parts.push("abstract "); - } - - parts.push(printMethod(path, options, print)); - - return concat$2(parts); - case "YieldExpression": - parts.push("yield"); - - if (n.delegate) parts.push("*"); - - if (n.argument) parts.push(" ", path.call(print, "argument")); - - return concat$2(parts); - case "AwaitExpression": - parts.push("await"); - - if (n.all) parts.push("*"); - - if (n.argument) parts.push(" ", path.call(print, "argument")); - - return concat$2(parts); - case "ModuleDeclaration": - parts.push("module", path.call(print, "id")); - - if (n.source) { - assert$4.ok(!n.body); - - parts.push("from", path.call(print, "source")); - } else { - parts.push(path.call(print, "body")); - } - - return join$2(" ", parts); - case "ImportSpecifier": - if (n.imported) { - if (n.importKind) { - parts.push(path.call(print, "importKind"), " "); - } - - parts.push(path.call(print, "imported")); - - if (n.local && n.local.name !== n.imported.name) { - parts.push(" as ", path.call(print, "local")); - } - } else if (n.id) { - parts.push(path.call(print, "id")); - - if (n.name) { - parts.push(" as ", path.call(print, "name")); - } - } - - return concat$2(parts); - case "ExportSpecifier": - if (n.local) { - parts.push(path.call(print, "local")); - - if (n.exported && n.exported.name !== n.local.name) { - parts.push(" as ", path.call(print, "exported")); - } - } else if (n.id) { - parts.push(path.call(print, "id")); - - if (n.name) { - parts.push(" as ", path.call(print, "name")); - } - } - - return concat$2(parts); - case "ExportBatchSpecifier": - return "*"; - case "ImportNamespaceSpecifier": - parts.push("* as "); - - if (n.local) { - parts.push(path.call(print, "local")); - } else if (n.id) { - parts.push(path.call(print, "id")); - } - - return concat$2(parts); - case "ImportDefaultSpecifier": - if (n.local) { - return path.call(print, "local"); - } - - return path.call(print, "id"); - case "ExportDeclaration": - case "ExportDefaultDeclaration": - case "ExportNamedDeclaration": - return printExportDeclaration(path, options, print); - case "ExportAllDeclaration": - parts.push("export *"); - - if (n.exported) { - parts.push(" as ", path.call(print, "exported")); - } - - parts.push(" from ", path.call(print, "source"), semi); - - return concat$2(parts); - case "ExportNamespaceSpecifier": - case "ExportDefaultSpecifier": - return path.call(print, "exported"); - case "ImportDeclaration": - parts.push("import "); - - const fromParts = []; - - if (n.importKind && n.importKind !== "value") { - parts.push(n.importKind + " "); - } - - var standalones = []; - var grouped = []; - if (n.specifiers && n.specifiers.length > 0) { - path.each(function(specifierPath) { - var value = specifierPath.getValue(); - if ( - namedTypes.ImportDefaultSpecifier.check(value) || - namedTypes.ImportNamespaceSpecifier.check(value) - ) { - standalones.push(print(specifierPath)); - } else { - grouped.push(print(specifierPath)); - } - }, "specifiers"); - - if (standalones.length > 0) { - parts.push(join$2(", ", standalones)); - } - - if (standalones.length > 0 && grouped.length > 0) { - parts.push(", "); - } - - if (grouped.length > 0) { - parts.push( - group$1( - concat$2([ - "{", - indent$2( - concat$2([ - options.bracketSpacing ? line$1 : softline$1, - join$2(concat$2([",", line$1]), grouped) - ]) - ), - ifBreak$1(shouldPrintComma(options) ? "," : ""), - options.bracketSpacing ? line$1 : softline$1, - "}" - ]) - ) - ); - } - - fromParts.push(grouped.length === 0 ? line$1 : " ", "from "); - } else if (n.importKind && n.importKind === "type") { - parts.push("{} from "); - } - - fromParts.push(path.call(print, "source"), semi); - - // If there's a very long import, break the following way: - // - // import veryLong - // from 'verylong' - // - // In case there are grouped elements, they will already break the way - // we want and this break would take precedence instead. - if (grouped.length === 0) { - return group$1(concat$2([concat$2(parts), indent$2(concat$2(fromParts))])); - } - - return concat$2([concat$2(parts), concat$2(fromParts)]); - - case "Import": { - return "import"; - } - case "BlockStatement": { - var naked = path.call(function(bodyPath) { - return printStatementSequence(bodyPath, options, print); - }, "body"); - - const hasContent = n.body.find(node => node.type !== "EmptyStatement"); - const hasDirectives = n.directives && n.directives.length > 0; - - var parent = path.getParentNode(); - const parentParent = path.getParentNode(1); - if ( - !hasContent && - !hasDirectives && - !n.comments && - (parent.type === "ArrowFunctionExpression" || - parent.type === "FunctionExpression" || - parent.type === "FunctionDeclaration" || - parent.type === "ObjectMethod" || - parent.type === "ClassMethod" || - (parent.type === "CatchClause" && !parentParent.finalizer)) - ) { - return "{}"; - } - - parts.push("{"); - - // Babel 6 - if (hasDirectives) { - path.each(function(childPath) { - parts.push(indent$2(concat$2([hardline$2, print(childPath), semi]))); - }, "directives"); - } - - if (hasContent) { - parts.push(indent$2(concat$2([hardline$2, naked]))); - } - - parts.push(comments$3.printDanglingComments(path, options)); - parts.push(hardline$2, "}"); - - return concat$2(parts); - } - case "ReturnStatement": - parts.push("return"); - - if (n.argument) { - if (returnArgumentHasLeadingComment(options, n.argument)) { - parts.push( - concat$2([ - " (", - indent$2(concat$2([softline$1, path.call(print, "argument")])), - line$1, - ")" - ]) - ); - } else if ( - n.argument.type === "LogicalExpression" || - n.argument.type === "BinaryExpression" - ) { - parts.push( - group$1( - concat$2([ - ifBreak$1(" (", " "), - indent$2(concat$2([softline$1, path.call(print, "argument")])), - softline$1, - ifBreak$1(")") - ]) - ) - ); - } else { - parts.push(" ", path.call(print, "argument")); - } - } - - if (hasDanglingComments(n)) { - parts.push( - " ", - comments$3.printDanglingComments(path, options, /* sameIndent */ true) - ); - } - - parts.push(semi); - - return concat$2(parts); - case "CallExpression": { - if ( - // We want to keep require calls as a unit - (n.callee.type === "Identifier" && n.callee.name === "require") || - // Template literals as single arguments - (n.arguments.length === 1 && - isTemplateOnItsOwnLine(n.arguments[0], options.originalText)) || - // Keep test declarations on a single line - // e.g. `it('long name', () => {` - (n.callee.type === "Identifier" && - (n.callee.name === "it" || - n.callee.name === "test" || - n.callee.name === "describe") && - n.arguments.length === 2 && - (n.arguments[0].type === "StringLiteral" || - n.arguments[0].type === "TemplateLiteral" || - (n.arguments[0].type === "Literal" && - typeof n.arguments[0].value === "string")) && - (n.arguments[1].type === "FunctionExpression" || - n.arguments[1].type === "ArrowFunctionExpression") && - n.arguments[1].params.length <= 1) - ) { - return concat$2([ - path.call(print, "callee"), - path.call(print, "typeParameters"), - concat$2(["(", join$2(", ", path.map(print, "arguments")), ")"]) - ]); - } - - // We detect calls on member lookups and possibly print them in a - // special chain format. See `printMemberChain` for more info. - if (n.callee.type === "MemberExpression") { - return printMemberChain(path, options, print); - } - - return concat$2([ - path.call(print, "callee"), - path.call(print, "typeParameters"), - printArgumentsList(path, options, print) - ]); - } - - case "ObjectExpression": - case "ObjectPattern": - case "ObjectTypeAnnotation": - case "TSInterfaceDeclaration": - case "TSTypeLiteral": { - var isTypeAnnotation = n.type === "ObjectTypeAnnotation"; - var isTypeScriptTypeAnnotaion = n.type === "TSTypeLiteral"; - var isTypeScriptInterfaceDeclaration = n.type === "TSInterfaceDeclaration"; - var isTypeScriptType = isTypeScriptTypeAnnotaion || isTypeScriptInterfaceDeclaration; - // Leave this here because we *might* want to make this - // configurable later -- flow accepts ";" for type separators, - // typescript accepts ";" and newlines - var separator = isTypeAnnotation ? "," : ","; - var fields = []; - var leftBrace = n.exact ? "{|" : "{"; - var rightBrace = n.exact ? "|}" : "}"; - var parent = path.getParentNode(0); - var parentIsUnionTypeAnnotation = parent.type === "UnionTypeAnnotation"; - var propertiesField = isTypeScriptType - ? "members" - : "properties"; - var prefix = ""; - - if (isTypeAnnotation) { - fields.push("indexers", "callProperties"); - } - - if (isTypeScriptInterfaceDeclaration) { - prefix = concat$2([ - "interface ", - path.call(print, "name"), - " " - ]); - } - - fields.push(propertiesField); - - // Unfortunately, things are grouped together in the ast can be - // interleaved in the source code. So we need to reorder them before - // printing them. - const propsAndLoc = []; - fields.forEach(function(field) { - path.each(function(childPath) { - const node = childPath.getValue(); - propsAndLoc.push({ - node: node, - printed: print(childPath), - loc: util$4.locStart(node) - }); - }, field); - }); - - let separatorParts = []; - const props = propsAndLoc - .sort((a, b) => a.loc - b.loc) - .map(prop => { - const result = concat$2(separatorParts.concat(group$1(prop.printed))); - separatorParts = [separator, line$1]; - if ( - util$4.isNextLineEmpty(options.originalText, prop.node) - ) { - separatorParts.push(hardline$2); - } - return result; - }); - - const lastElem = util$4.getLast(n[propertiesField]); - - const canHaveTrailingComma = !( - lastElem && - (lastElem.type === "RestProperty" || lastElem.type === "RestElement") - ); - - let content; - if (props.length === 0 && !n.typeAnnotation) { - if (!hasDanglingComments(n)) { - return concat$2([leftBrace, rightBrace]); - } - - content = group$1( - concat$2([ - prefix, - leftBrace, - comments$3.printDanglingComments(path, options), - softline$1, - rightBrace - ]) - ); - } else { - content = concat$2([ - prefix, - leftBrace, - indent$2( - align$1( - parentIsUnionTypeAnnotation ? 2 : 0, - concat$2([ - options.bracketSpacing ? line$1 : softline$1, - concat$2(props) - ]) - ) - ), - ifBreak$1( - canHaveTrailingComma && shouldPrintComma(options) ? "," : "" - ), - align$1( - parentIsUnionTypeAnnotation ? 2 : 0, - concat$2([options.bracketSpacing ? line$1 : softline$1, rightBrace]) - ), - n.typeAnnotation ? ": " : "", - path.call(print, "typeAnnotation") - ]); - } - - // If we inline the object as first argument of the parent, we don't want - // to create another group so that the object breaks before the return - // type - const parentParentParent = path.getParentNode(2); - if ( - (n.type === "ObjectPattern" && - parent && - shouldHugArguments(parent) && - parent.params[0] === n) || - (n.type === "ObjectTypeAnnotation" && - parentParentParent && - shouldHugArguments(parentParentParent) && - parentParentParent.params[0].typeAnnotation.typeAnnotation === n) - ) { - return content; - } - - const shouldBreak = - n.type !== "ObjectPattern" && - util$4.hasNewlineInRange( - options.originalText, - util$4.locStart(n), - util$4.locEnd(n) - ); - - return group$1(content, { shouldBreak }); - } - case "PropertyPattern": - return concat$2([ - path.call(print, "key"), - ": ", - path.call(print, "pattern") - ]); - // Babel 6 - case "ObjectProperty": // Non-standard AST node type. - case "Property": - if (n.method || n.kind === "get" || n.kind === "set") { - return printMethod(path, options, print); - } - - if (n.shorthand) { - parts.push(path.call(print, "value")); - } else { - if (n.computed) { - parts.push("[", path.call(print, "key"), "]"); - } else { - parts.push(printPropertyKey(path, options, print)); - } - parts.push(concat$2([": ", path.call(print, "value")])); - } - - return concat$2(parts); // Babel 6 - case "ClassMethod": - if (n.static) { - parts.push("static "); - } - - parts = parts.concat(printObjectMethod(path, options, print)); - - return concat$2(parts); // Babel 6 - case "ObjectMethod": - return printObjectMethod(path, options, print); - case "Decorator": - return concat$2(["@", path.call(print, "expression")]); - case "ArrayExpression": - case "ArrayPattern": - if (n.elements.length === 0) { - if (!hasDanglingComments(n)) { - parts.push("[]"); - } else { - parts.push( - group$1( - concat$2([ - "[", - comments$3.printDanglingComments(path, options), - softline$1, - "]" - ]) - ) - ); - } - } else { - const lastElem = util$4.getLast(n.elements); - const canHaveTrailingComma = !(lastElem && - lastElem.type === "RestElement"); - - // JavaScript allows you to have empty elements in an array which - // changes its length based on the number of commas. The algorithm - // is that if the last argument is null, we need to force insert - // a comma to ensure JavaScript recognizes it. - // [,].length === 1 - // [1,].length === 1 - // [1,,].length === 2 - // - // Note that util.getLast returns null if the array is empty, but - // we already check for an empty array just above so we are safe - const needsForcedTrailingComma = - canHaveTrailingComma && lastElem === null; - - parts.push( - group$1( - concat$2([ - "[", - indent$2( - concat$2([ - softline$1, - printArrayItems(path, options, "elements", print) - ]) - ), - needsForcedTrailingComma ? "," : "", - ifBreak$1( - canHaveTrailingComma && - !needsForcedTrailingComma && - shouldPrintComma(options) - ? "," - : "" - ), - comments$3.printDanglingComments( - path, - options, - /* sameIndent */ true - ), - softline$1, - "]" - ]) - ) - ); - } - - if (n.typeAnnotation) parts.push(": ", path.call(print, "typeAnnotation")); - - return concat$2(parts); - case "SequenceExpression": - return join$2(", ", path.map(print, "expressions")); - case "ThisExpression": - return "this"; - case "Super": - return "super"; - // Babel 6 Literal split - case "NullLiteral": - return "null"; - // Babel 6 Literal split - case "RegExpLiteral": - return printRegex(n); - // Babel 6 Literal split - case "NumericLiteral": - return printNumber(n.extra.raw); - // Babel 6 Literal split - case "BooleanLiteral": - // Babel 6 Literal split - case "StringLiteral": - case "Literal": - if (typeof n.value === "number") return printNumber(n.raw); - if (n.regex) return printRegex(n.regex); - if (typeof n.value !== "string") return "" + n.value; - - return nodeStr(n, options); // Babel 6 - case "Directive": - return path.call(print, "value"); // Babel 6 - case "DirectiveLiteral": - return nodeStr(n, options); - case "ModuleSpecifier": - if (n.local) { - throw new Error("The ESTree ModuleSpecifier type should be abstract"); - } - - // The Esprima ModuleSpecifier type is just a string-valued - // Literal identifying the imported-from module. - return nodeStr(n, options); - case "UnaryExpression": - parts.push(n.operator); - - if (/[a-z]$/.test(n.operator)) parts.push(" "); - - parts.push(path.call(print, "argument")); - - return concat$2(parts); - case "UpdateExpression": - parts.push(path.call(print, "argument"), n.operator); - - if (n.prefix) parts.reverse(); - - return concat$2(parts); - case "ConditionalExpression": - return group$1( - concat$2([ - path.call(print, "test"), - indent$2( - concat$2([ - line$1, - "? ", - n.consequent.type === "ConditionalExpression" ? ifBreak$1("", "(") : "", - align$1(2, path.call(print, "consequent")), - n.consequent.type === "ConditionalExpression" ? ifBreak$1("", ")") : "", - line$1, - ": ", - align$1(2, path.call(print, "alternate")) - ]) - ) - ]) - ); - case "NewExpression": - parts.push("new ", path.call(print, "callee")); - - if (n.typeParameters) { - parts.push(path.call(print, "typeParameters")); - } - - var args = n.arguments; - - if (args) { - parts.push(printArgumentsList(path, options, print)); - } - - return concat$2(parts); - case "VariableDeclaration": - var printed = path.map(function(childPath) { - return print(childPath); - }, "declarations"); - - parts = [ - isNodeStartingWithDeclare(n, options) ? "declare " : "", - n.kind, - " ", - printed[0], - indent$2(concat$2(printed.slice(1).map(p => concat$2([",", line$1, p])))) - ]; - - // We generally want to terminate all variable declarations with a - // semicolon, except when they in the () part of for loops. - var parentNode = path.getParentNode(); - - var isParentForLoop = - namedTypes.ForStatement.check(parentNode) || - namedTypes.ForInStatement.check(parentNode) || - (namedTypes.ForOfStatement && - namedTypes.ForOfStatement.check(parentNode)) || - (namedTypes.ForAwaitStatement && - namedTypes.ForAwaitStatement.check(parentNode)); - - if (!(isParentForLoop && parentNode.body !== n)) { - parts.push(semi); - } - - return group$1(concat$2(parts)); - case "VariableDeclarator": - return printAssignment( - n.id, - concat$2([path.call(print, "id"), path.call(print, "typeParameters")]), - "=", - n.init, - n.init && path.call(print, "init"), - options - ); - case "WithStatement": - return concat$2([ - "with (", - path.call(print, "object"), - ")", - adjustClause(n.body, path.call(print, "body")) - ]); - case "IfStatement": - const con = adjustClause(n.consequent, path.call(print, "consequent")); - const opening = group$1( - concat$2([ - "if (", - group$1( - concat$2([ - indent$2(concat$2([softline$1, path.call(print, "test")])), - softline$1 - ]) - ), - ")", - con - ]) - ); - - parts.push(opening); - - if (n.alternate) { - if (n.consequent.type === "BlockStatement") { - parts.push(" else"); - } else { - parts.push(hardline$2, "else"); - } - - parts.push( - group$1( - adjustClause( - n.alternate, - path.call(print, "alternate"), - n.alternate.type === "IfStatement" - ) - ) - ); - } - - return concat$2(parts); - case "ForStatement": { - const body = adjustClause(n.body, path.call(print, "body")); - - // We want to keep dangling comments above the loop to stay consistent. - // Any comment positioned between the for statement and the parentheses - // is going to be printed before the statement. - const dangling = comments$3.printDanglingComments( - path, - options, - /* sameLine */ true - ); - const printedComments = dangling ? concat$2([dangling, softline$1]) : ""; - - if (!n.init && !n.test && !n.update) { - return concat$2([printedComments, "for (;;)", body]); - } - - return concat$2([ - printedComments, - "for (", - group$1( - concat$2([ - indent$2( - concat$2([ - softline$1, - path.call(print, "init"), - ";", - line$1, - path.call(print, "test"), - ";", - line$1, - path.call(print, "update") - ]) - ), - softline$1 - ]) - ), - ")", - body - ]); - } - case "WhileStatement": - return concat$2([ - "while (", - group$1( - concat$2([ - indent$2(concat$2([softline$1, path.call(print, "test")])), - softline$1 - ]) - ), - ")", - adjustClause(n.body, path.call(print, "body")) - ]); - case "ForInStatement": - // Note: esprima can't actually parse "for each (". - return concat$2([ - n.each ? "for each (" : "for (", - path.call(print, "left"), - " in ", - path.call(print, "right"), - ")", - adjustClause(n.body, path.call(print, "body")) - ]); - - case "ForOfStatement": - case "ForAwaitStatement": - // Babylon 7 removed ForAwaitStatement in favor of ForOfStatement - // with `"await": true`: - // https://github.com/estree/estree/pull/138 - const isAwait = n.type === "ForAwaitStatement" || n.await; - - return concat$2([ - "for", - isAwait ? " await" : "", - " (", - path.call(print, "left"), - " of ", - path.call(print, "right"), - ")", - adjustClause(n.body, path.call(print, "body")) - ]); - - case "DoWhileStatement": - var clause = adjustClause(n.body, path.call(print, "body")); - var doBody = concat$2(["do", clause]); - var parts = [doBody]; - - if (n.body.type === "BlockStatement") { - parts.push(" "); - } else { - parts.push(hardline$2); - } - parts.push("while ("); - - parts.push(group$1( - concat$2([ - indent$2(softline$1), path.call(print, "test"), - softline$1 - ]) - ), ")", semi); - - return concat$2(parts); - case "DoExpression": - return concat$2(["do ", path.call(print, "body")]); - case "BreakStatement": - parts.push("break"); - - if (n.label) parts.push(" ", path.call(print, "label")); - - parts.push(semi); - - return concat$2(parts); - case "ContinueStatement": - parts.push("continue"); - - if (n.label) parts.push(" ", path.call(print, "label")); - - parts.push(semi); - - return concat$2(parts); - case "LabeledStatement": - if (n.body.type === "EmptyStatement") { - return concat$2([path.call(print, "label"), ":;"]); - } - - return concat$2([ - path.call(print, "label"), - ": ", - path.call(print, "body") - ]); - case "TryStatement": - parts.push("try ", path.call(print, "block")); - - if (n.handler) { - parts.push(" ", path.call(print, "handler")); - } else if (n.handlers) { - path.each(function(handlerPath) { - parts.push(" ", print(handlerPath)); - }, "handlers"); - } - - if (n.finalizer) { - parts.push(" finally ", path.call(print, "finalizer")); - } - - return concat$2(parts); - case "CatchClause": - parts.push("catch (", path.call(print, "param")); - - if (n.guard) - // Note: esprima does not recognize conditional catch clauses. - parts.push(" if ", path.call(print, "guard")); - - parts.push(") ", path.call(print, "body")); - - return concat$2(parts); - case "ThrowStatement": - return concat$2(["throw ", path.call(print, "argument"), semi]); - // Note: ignoring n.lexical because it has no printing consequences. - case "SwitchStatement": - return concat$2([ - "switch (", - path.call(print, "discriminant"), - ") {", - n.cases.length > 0 - ? indent$2(concat$2([hardline$2, join$2(hardline$2, path.map(print, "cases"))])) - : "", - hardline$2, - "}" - ]); - case "SwitchCase": - if (n.test) parts.push("case ", path.call(print, "test"), ":"); - else parts.push("default:"); - - const isFirstCase = path.getNode() === path.getParentNode().cases[0]; - - if ( - !isFirstCase && - util$4.isPreviousLineEmpty(options.originalText, path.getValue()) - ) { - parts.unshift(hardline$2); - } - - if (n.consequent.find(node => node.type !== "EmptyStatement")) { - const cons = path.call(consequentPath => { - return join$2( - hardline$2, - consequentPath - .map((p, i) => { - if (n.consequent[i].type === "EmptyStatement") { - return null; - } - const shouldAddLine = - i !== n.consequent.length - 1 && - util$4.isNextLineEmpty(options.originalText, p.getValue()); - return concat$2([print(p), shouldAddLine ? hardline$2 : ""]); - }) - .filter(e => e !== null) - ); - }, "consequent"); - parts.push( - n.consequent.length === 1 && n.consequent[0].type === "BlockStatement" - ? concat$2([" ", cons]) - : indent$2(concat$2([hardline$2, cons])) - ); - } - - return concat$2(parts); - // JSX extensions below. - case "DebuggerStatement": - return concat$2(["debugger", semi]); - case "JSXAttribute": - parts.push(path.call(print, "name")); - - if (n.value) { - let res; - if ( - (n.value.type === "StringLiteral" || n.value.type === "Literal") && - typeof n.value.value === "string" - ) { - const value = n.value.extra ? n.value.extra.raw : n.value.raw; - res = - '"' + - value.slice(1, value.length - 1).replace(/"/g, """) + - '"'; - } else { - res = path.call(print, "value"); - } - parts.push("=", res); - } - - return concat$2(parts); - case "JSXIdentifier": - return "" + n.name; - case "JSXNamespacedName": - return join$2(":", [ - path.call(print, "namespace"), - path.call(print, "name") - ]); - case "JSXMemberExpression": - return join$2(".", [ - path.call(print, "object"), - path.call(print, "property") - ]); - case "JSXSpreadAttribute": - return concat$2(["{...", path.call(print, "argument"), "}"]); - case "JSXExpressionContainer": { - const parent = path.getParentNode(0); - - const shouldInline = - n.expression.type === "ArrayExpression" || - n.expression.type === "ObjectExpression" || - n.expression.type === "ArrowFunctionExpression" || - n.expression.type === "CallExpression" || - n.expression.type === "FunctionExpression" || - n.expression.type === "JSXEmptyExpression" || - n.expression.type === "TemplateLiteral" || - n.expression.type === "TaggedTemplateExpression" || - (parent.type === "JSXElement" && - (n.expression.type === "ConditionalExpression" || - isBinaryish(n.expression))); - - if (shouldInline) { - return group$1( - concat$2(["{", path.call(print, "expression"), lineSuffixBoundary$1, "}"]) - ); - } - - return group$1( - concat$2([ - "{", - indent$2(concat$2([softline$1, path.call(print, "expression")])), - softline$1, - lineSuffixBoundary$1, - "}" - ]) - ); - } - case "JSXElement": { - const elem = printJSXElement(path, options, print); - return maybeWrapJSXElementInParens(path, elem, options); - } - case "JSXOpeningElement": { - const n = path.getValue(); - - // don't break up opening elements with a single long text attribute - if ( - n.attributes.length === 1 && - n.attributes[0].value && - (n.attributes[0].value.type === "Literal" || - n.attributes[0].value.type === "StringLiteral") && - typeof n.attributes[0].value.value === "string" - ) { - return group$1( - concat$2([ - "<", - path.call(print, "name"), - " ", - concat$2(path.map(print, "attributes")), - n.selfClosing ? " />" : ">" - ]) - ); - } - - return group$1( - concat$2([ - "<", - path.call(print, "name"), - concat$2([ - indent$2( - concat$2( - path.map(attr => concat$2([line$1, print(attr)]), "attributes") - ) - ), - n.selfClosing ? line$1 : options.jsxBracketSameLine ? ">" : softline$1 - ]), - n.selfClosing ? "/>" : options.jsxBracketSameLine ? "" : ">" - ]) - ); - } - case "JSXClosingElement": - return concat$2([""]); - case "JSXText": - throw new Error("JSXTest should be handled by JSXElement"); - case "JSXEmptyExpression": - const requiresHardline = n.comments && n.comments.some( - comment => comment.type === "Line" || comment.type === "CommentLine" - ); - - return concat$2([ - comments$3.printDanglingComments( - path, - options, - /* sameIndent */ !requiresHardline - ), - requiresHardline ? hardline$2 : "" - ]); - case "TypeAnnotatedIdentifier": - return concat$2([ - path.call(print, "annotation"), - " ", - path.call(print, "identifier") - ]); - case "ClassBody": - if (!n.comments && n.body.length === 0) { - return "{}"; - } - - return concat$2([ - "{", - n.body.length > 0 - ? indent$2( - concat$2([ - hardline$2, - path.call(function(bodyPath) { - return printStatementSequence(bodyPath, options, print); - }, "body") - ]) - ) - : comments$3.printDanglingComments(path, options), - hardline$2, - "}" - ]); - case "ClassPropertyDefinition": - parts.push("static ", path.call(print, "definition")); - - if (!namedTypes.MethodDefinition.check(n.definition)) parts.push(semi); - - return concat$2(parts); - case "ClassProperty": - case "TSAbstractClassProperty": - if (n.static) parts.push("static "); - - var variance = getFlowVariance(n, options); - if (variance) parts.push(variance); - - if (n.accessibility) parts.push(n.accessibility + " "); - - if (n.type === "TSAbstractClassProperty") parts.push("abstract "); - - if (n.computed) { - parts.push("[", path.call(print, "key"), "]"); - } else { - parts.push(printPropertyKey(path, options, print)); - } - - if (n.typeAnnotation) parts.push(": ", path.call(print, "typeAnnotation")); - - if (n.value) parts.push(" = ", path.call(print, "value")); - - parts.push(semi); - - return concat$2(parts); - case "ClassDeclaration": - case "ClassExpression": - case "TSAbstractClassDeclaration": - if (isNodeStartingWithDeclare(n, options)) { - parts.push("declare "); - } - parts.push(concat$2(printClass(path, options, print))); - return concat$2(parts); - case "TemplateElement": - return join$2(literalline$1, n.value.raw.split(/\r?\n/g)); - case "TemplateLiteral": - var expressions = path.map(print, "expressions"); - - parts.push("`"); - - path.each(function(childPath) { - var i = childPath.getName(); - - parts.push(print(childPath)); - - if (i < expressions.length) { - // For a template literal of the following form: - // `someQuery { - // ${call({ - // a, - // b, - // })} - // }` - // the expression is on its own line (there is a \n in the previous - // quasi literal), therefore we want to indent the JavaScript - // expression inside at the beginning of ${ instead of the beginning - // of the `. - let size = 0; - const value = childPath.getValue().value.raw; - const index = value.lastIndexOf('\n'); - const tabWidth = options.tabWidth; - if (index !== -1) { - for (let i = index + 1; i < value.length; ++i) { - if (value[i] === '\t') { - // Tabs behave in a way that they are aligned to the nearest - // multiple of tabWidth: - // 0 -> 4, 1 -> 4, 2 -> 4, 3 -> 4 - // 4 -> 8, 5 -> 8, 6 -> 8, 7 -> 8 ... - size = size + tabWidth - size % tabWidth; - } else { - size++; - } - } - } - - let aligned = removeLines(expressions[i]); - if (size > 0) { - // Use indent to add tabs for all the levels of tabs we need - for (var i = 0; i < Math.floor(size / tabWidth); ++i) { - aligned = indent$2(aligned); - } - // Use align for all the spaces that are needed - aligned = align$1(size % tabWidth, aligned); - // size is absolute from 0 and not relative to the current - // indentation, so we use -Infinity to reset the indentation to 0 - aligned = align$1(-Infinity, aligned); - } - - parts.push( - "${", - aligned, - lineSuffixBoundary$1, - "}" - ); - } - }, "quasis"); - - parts.push("`"); - - return concat$2(parts); - // These types are unprintable because they serve as abstract - // supertypes for other (printable) types. - case "TaggedTemplateExpression": - return concat$2([path.call(print, "tag"), path.call(print, "quasi")]); - case "Node": - case "Printable": - case "SourceLocation": - case "Position": - case "Statement": - case "Function": - case "Pattern": - case "Expression": - case "Declaration": - case "Specifier": - case "NamedSpecifier": - // Supertype of Block and Line. - case "Comment": - // Flow - case "MemberTypeAnnotation": // Flow - case "Type": - throw new Error("unprintable type: " + JSON.stringify(n.type)); - // Type Annotations for Facebook Flow, typically stripped out or - // transformed away before printing. - case "TypeAnnotation": - if (n.typeAnnotation) { - return path.call(print, 'typeAnnotation') - } - - return ""; - case "TSTupleType": - case "TupleTypeAnnotation": - let typesField = n.type === "TSTupleType" ? "elementTypes" : "types"; - return group$1( - concat$2([ - "[", - indent$2( - concat$2([ - softline$1, - printArrayItems(path, options, typesField, print) - ]) - ), - ifBreak$1(shouldPrintComma(options) ? "," : ""), - comments$3.printDanglingComments(path, options, /* sameIndent */ true), - softline$1, - "]" - ]) - ); - - case "ExistsTypeAnnotation": - return "*"; - case "EmptyTypeAnnotation": - return "empty"; - case "AnyTypeAnnotation": - return "any"; - case "MixedTypeAnnotation": - return "mixed"; - case "ArrayTypeAnnotation": - return concat$2([path.call(print, "elementType"), "[]"]); - case "BooleanTypeAnnotation": - return "boolean"; - case "BooleanLiteralTypeAnnotation": - return "" + n.value; - case "DeclareClass": - return printFlowDeclaration(path, printClass(path, options, print)); - case "DeclareFunction": - // For TypeScript the DeclareFunction node shares the AST - // structure with FunctionDeclaration - if (n.params) { - return concat$2([ - "declare ", - printFunctionDeclaration(path, print, options) - ]); - } - return printFlowDeclaration(path, [ - "function ", - path.call(print, "id"), - n.predicate ? " " : "", - path.call(print, "predicate"), - semi - ]); - case "DeclareModule": - return printFlowDeclaration(path, [ - "module ", - path.call(print, "id"), - " ", - path.call(print, "body") - ]); - case "DeclareModuleExports": - return printFlowDeclaration(path, [ - "module.exports", - ": ", - path.call(print, "typeAnnotation"), - semi - ]); - case "DeclareVariable": - return printFlowDeclaration(path, ["var ", path.call(print, "id"), semi]); - case "DeclareExportAllDeclaration": - return concat$2(["declare export * from ", path.call(print, "source")]); - case "DeclareExportDeclaration": - return concat$2(["declare ", printExportDeclaration(path, options, print)]); - case "FunctionTypeAnnotation": - case "TSFunctionType": - // FunctionTypeAnnotation is ambiguous: - // declare function foo(a: B): void; OR - // var A: (a: B) => void; - var parent = path.getParentNode(0); - var parentParent = path.getParentNode(1); - var isArrowFunctionTypeAnnotation = - n.type === "TSFunctionType" || - !((!getFlowVariance(parent, options) && - !parent.optional && - namedTypes.ObjectTypeProperty.check(parent)) || - namedTypes.ObjectTypeCallProperty.check(parent) || - namedTypes.DeclareFunction.check(path.getParentNode(2))); - - var needsColon = - isArrowFunctionTypeAnnotation && - namedTypes.TypeAnnotation.check(parent); - - // Sadly we can't put it inside of FastPath::needsColon because we are - // printing ":" as part of the expression and it would put parenthesis - // around :( - const needsParens = - needsColon && - isArrowFunctionTypeAnnotation && - parent.type === "TypeAnnotation" && - parentParent.type === "ArrowFunctionExpression"; - - if (isObjectTypePropertyAFunction(parent)) { - isArrowFunctionTypeAnnotation = true; - needsColon = true; - } - - if (needsParens) { - parts.push("("); - } - - // With TypeScript `typeParameters` is an array of `TSTypeParameter` and - // with flow they are one `TypeParameterDeclaration` node. - if (n.type === 'TSFunctionType' && n.typeParameters) { - parts.push( - "<", - join$2(", ", path.map(print, "typeParameters")), - ">" - ); - } else { - parts.push(path.call(print, "typeParameters")); - } - - parts.push(printFunctionParams(path, print, options)); - - // The returnType is not wrapped in a TypeAnnotation, so the colon - // needs to be added separately. - if (n.returnType || n.predicate || n.typeAnnotation) { - parts.push( - isArrowFunctionTypeAnnotation ? " => " : ": ", - path.call(print, "returnType"), - path.call(print, "predicate"), - path.call(print, "typeAnnotation") - ); - } - if (needsParens) { - parts.push(")"); - } - - return group$1(concat$2(parts)); - case "FunctionTypeParam": - return concat$2([ - path.call(print, "name"), - n.optional ? "?" : "", - n.name ? ": " : "", - path.call(print, "typeAnnotation") - ]); - case "GenericTypeAnnotation": - return concat$2([ - path.call(print, "id"), - path.call(print, "typeParameters") - ]); - case "DeclareInterface": - case "InterfaceDeclaration": { - if ( - n.type === "DeclareInterface" || - isNodeStartingWithDeclare(n, options) - ) { - parts.push("declare "); - } - - parts.push( - "interface ", - path.call(print, "id"), - path.call(print, "typeParameters") - ); - - if (n["extends"].length > 0) { - parts.push( - group$1( - indent$2( - concat$2([line$1, "extends ", join$2(", ", path.map(print, "extends"))]) - ) - ) - ); - } - - parts.push(" "); - parts.push(path.call(print, "body")); - - return group$1(concat$2(parts)); - } - case "ClassImplements": - case "InterfaceExtends": - return concat$2([ - path.call(print, "id"), - path.call(print, "typeParameters") - ]); - case "TSIntersectionType": - case "IntersectionTypeAnnotation": { - const types = path.map(print, "types"); - const result = []; - for (let i = 0; i < types.length; ++i) { - if (i === 0) { - result.push(types[i]); - } else if ( - n.types[i - 1].type !== "ObjectTypeAnnotation" && - n.types[i].type !== "ObjectTypeAnnotation" - ) { - // If no object is involved, go to the next line if it breaks - result.push(indent$2(concat$2([" &", line$1, types[i]]))); - } else { - // If you go from object to non-object or vis-versa, then inline it - result.push(" & ", i > 1 ? indent$2(types[i]) : types[i]); - } - } - return group$1(concat$2(result)); - } - case "TSUnionType": - case "UnionTypeAnnotation": { - // single-line variation - // A | B | C - - // multi-line variation - // | A - // | B - // | C - - const parent = path.getParentNode(); - // If there's a leading comment, the parent is doing the indentation - const shouldIndent = !(parent.type === "TypeAlias" && - hasLeadingOwnLineComment(options.originalText, n)); - - //const token = isIntersection ? "&" : "|"; - const code = concat$2([ - ifBreak$1(concat$2([shouldIndent ? line$1 : "", "| "])), - join$2(concat$2([line$1, "| "]), path.map(print, "types")) - ]); - - return group$1(shouldIndent ? indent$2(code) : code); - } - case "NullableTypeAnnotation": - return concat$2(["?", path.call(print, "typeAnnotation")]); - case "NullLiteralTypeAnnotation": - return "null"; - case "ThisTypeAnnotation": - return "this"; - case "NumberTypeAnnotation": - return "number"; - case "ObjectTypeCallProperty": - if (n.static) { - parts.push("static "); - } - - parts.push(path.call(print, "value")); - - return concat$2(parts); - case "ObjectTypeIndexer": - var variance = getFlowVariance(n, options); - return concat$2([ - variance || "", - "[", - path.call(print, "id"), - n.id ? ": " : "", - path.call(print, "key"), - "]: ", - path.call(print, "value") - ]); - case "ObjectTypeProperty": - var variance = getFlowVariance(n, options); - // TODO: This is a bad hack and we need a better way to know - // when to emit an arrow function or not. - var isFunctionNotation = util$4.locStart(n) === util$4.locStart(n.value); - var isGetterOrSetter = n.kind === "get" || n.kind === "set"; - - return concat$2([ - n.static ? "static " : "", - variance || "", - path.call(print, "key"), - n.optional ? "?" : "", - (isFunctionNotation && !isGetterOrSetter) ? "" : ": ", - path.call(print, "value") - ]); - case "QualifiedTypeIdentifier": - return concat$2([ - path.call(print, "qualification"), - ".", - path.call(print, "id") - ]); - case "StringLiteralTypeAnnotation": - return nodeStr(n, options); - case "NumberLiteralTypeAnnotation": - assert$4.strictEqual(typeof n.value, "number"); - - if (n.extra != null) { - return printNumber(n.extra.raw); - } else { - return printNumber(n.raw); - } - case "StringTypeAnnotation": - return "string"; - case "DeclareTypeAlias": - case "TypeAlias": { - if ( - n.type === "DeclareTypeAlias" || - isNodeStartingWithDeclare(n, options) - ) { - parts.push("declare "); - } - - const canBreak = ( - n.right.type === "StringLiteralTypeAnnotation" - ); - - const printed = printAssignmentRight( - n.right, - path.call(print, "right"), - canBreak, - options - ); - - parts.push( - "type ", - path.call(print, "id"), - path.call(print, "typeParameters"), - " =", - printed, - semi - ); - - return group$1(concat$2(parts)); - } - case "TypeCastExpression": - return concat$2([ - "(", - path.call(print, "expression"), - ": ", - path.call(print, "typeAnnotation"), - ")" - ]); - case "TypeParameterDeclaration": - case "TypeParameterInstantiation": { - const shouldInline = - n.params.length === 1 && - (n.params[0].type === "ObjectTypeAnnotation" || - n.params[0].type === "NullableTypeAnnotation"); - - if (shouldInline) { - return concat$2(["<", join$2(", ", path.map(print, "params")), ">"]); - } - - return group$1( - concat$2([ - "<", - indent$2( - concat$2([ - softline$1, - join$2(concat$2([",", line$1]), path.map(print, "params")) - ]) - ), - ifBreak$1(shouldPrintComma(options, "all") ? "," : ""), - softline$1, - ">" - ]) - ); - } - case "TypeParameter": - var variance = getFlowVariance(n, options); - - if (variance) { - parts.push(variance); - } - - parts.push(path.call(print, "name")); - - if (n.bound) { - parts.push(": "); - parts.push(path.call(print, "bound")); - } - - if (n.constraint) { - parts.push(" extends ", path.call(print, "constraint")); - } - - if (n["default"]) { - parts.push(" = ", path.call(print, "default")); - } - - return concat$2(parts); - case "TypeofTypeAnnotation": - return concat$2(["typeof ", path.call(print, "argument")]); - case "VoidTypeAnnotation": - return "void"; - case "NullTypeAnnotation": - return "null"; - case "InferredPredicate": - return "%checks"; - // Unhandled types below. If encountered, nodes of these types should - // be either left alone or desugared into AST types that are fully - // supported by the pretty-printer. - case "DeclaredPredicate": - return concat$2(["%checks(", path.call(print, "value"), ")"]); - case "TSAnyKeyword": - return "any"; - case "TSBooleanKeyword": - return "boolean"; - case "TSNumberKeyword": - return "number"; - case "TSObjectKeyword": - return "object"; - case "TSStringKeyword": - return "string"; - case "TSVoidKeyword": - return "void"; - case "TSAsExpression": - return concat$2([ - path.call(print, "expression"), - " as ", - path.call(print, "typeAnnotation") - ]); - case "TSArrayType": - return concat$2([path.call(print, "elementType"), "[]"]); - case "TSPropertySignature": - parts.push(path.call(print, "name")); - parts.push(": "); - parts.push(path.call(print, "typeAnnotation")); - - return concat$2(parts); - case "TSParameterProperty": - if (n.accessibility) { - parts.push(n.accessibility + " "); - } - if (n.isReadonly) { - parts.push("readonly "); - } - - parts.push(path.call(print, "parameter")); - - return concat$2(parts); - case "TSTypeReference": - parts.push(path.call(print, "typeName")); - - if (n.typeArguments) { - parts.push( - "<", - join$2(", ", path.map(print, "typeArguments")), - ">" - ); - } - - return concat$2(parts); - case "TSCallSignature": - return concat$2([ - "(", - join$2(", ", path.map(print, "parameters")), - "): ", - path.call(print, "typeAnnotation") - ]); - case "TSConstructSignature": - return concat$2([ - "new (", - join$2(", ", path.map(print, "parameters")), - "): ", - path.call(print, "typeAnnotation") - ]); - case "TSTypeQuery": - return concat$2(["typeof ", path.call(print, "exprName")]); - case "TSParenthesizedType": - return concat$2(["(", path.call(print, "typeAnnotation"), ")"]); - case "TSIndexSignature": - return concat$2([ - "[", - // This should only contain a single element, however TypeScript parses - // it using parseDelimitedList that uses commas as delimiter. - join$2(", ", path.map(print, "parameters")), - "]: ", - path.call(print, "typeAnnotation") - ]); - case "TSFirstTypeNode": - return concat$2([n.parameterName.name, " is ", path.call(print, "typeAnnotation")]) - case "TSNeverKeyword": - return "never"; - case "TSUndefinedKeyword": - return "undefined"; - case "TSSymbolKeyword": - return "symbol"; - case "TSNonNullExpression": - return concat$2([path.call(print, "expression"), "!"]); - case "TSThisType": - return "this"; - case "TSLastTypeNode": - return path.call(print, "literal") - case "TSIndexedAccessType": - return concat$2([ - path.call(print, "objectType"), - "[", - path.call(print, "indexType"), - "]" - ]) - case "TSConstructorType": - return concat$2([ - "new(", - join$2(", ", path.map(print, "parameters")), - ") => ", - path.call(print, "typeAnnotation"), - ]) - case "TSTypeOperator": - return concat$2([ - "keyof ", - path.call(print, "typeAnnotation") - ]) - case "TSMappedType": - return concat$2([ - "{", - options.bracketSpacing ? line$1 : softline$1, - "[", - path.call(print, "typeParameter"), - "]: ", - path.call(print, "typeAnnotation"), - options.bracketSpacing ? line$1 : softline$1, - "}" - ]) - case "TSTypeParameter": - parts.push(path.call(print, "name")); - - if (n.constraint) { - parts.push( - " in ", - path.call(print, "constraint") - ); - } - - return concat$2(parts) - case "TSMethodSignature": - parts.push( - path.call(print, 'name'), - "(", - join$2(", ", path.map(print, "parameters")), - ")" - ); - - if (n.typeAnnotation) { - parts.push( - ": ", - path.call(print, "typeAnnotation") - ); - } - return concat$2(parts) - case "TSNamespaceExportDeclaration": - if (n.declaration) { - parts.push( - "export ", - path.call(print, "declaration") - ); - } else { - parts.push( - "export as namespace ", - path.call(print, "name") - ); - - if (options.semi) { - parts.push(";"); - } - } - - return concat$2(parts) - case "TSEnumDeclaration": - parts.push( - "enum ", - path.call(print, "name"), - " " - ); - - if (n.members.length === 0) { - parts.push( - group$1( - concat$2([ - "{", - comments$3.printDanglingComments(path, options), - softline$1, - "}" - ]) - ) - ); - } else { - parts.push( - group$1( - concat$2([ - "{", - options.bracketSpacing ? line$1 : softline$1, - indent$2( - concat$2([ - softline$1, - printArrayItems(path, options, "members", print) - ]) - ), - comments$3.printDanglingComments( - path, - options, - /* sameIndent */ true - ), - softline$1, - options.bracketSpacing ? line$1 : softline$1, - "}" - ]) - ) - ); - } - - return concat$2(parts); - case "TSEnumMember": - return path.call(print, "name") - case "TSImportEqualsDeclaration": - parts.push( - "import ", - path.call(print, "name"), - " = ", - path.call(print, "moduleReference") - ); - - if (options.semi) { - parts.push(";"); - } - - return concat$2(parts) - case "TSExternalModuleReference": - return concat$2([ - "require(", - path.call(print, "expression"), - ")" - ]) - case "TSModuleDeclaration": - if (n.modifiers) { - parts.push( - join$2(" ", path.map(print, "modifiers")), - " " - ); - } - parts.push( - "module ", - path.call(print, "name"), - " {", - path.call(print, "body"), - "}" - ); - - return concat$2(parts) - case "TSDeclareKeyword": - return "declare" - case "TSModuleBlock": - return concat$2(path.map(print, "body")) - // TODO - case "ClassHeritage": - // TODO - case "ComprehensionBlock": - // TODO - case "ComprehensionExpression": - // TODO - case "Glob": - // TODO - case "GeneratorExpression": - // TODO - case "LetStatement": - // TODO - case "LetExpression": - // TODO - case "GraphExpression": - // TODO - // XML types that nobody cares about or needs to print. - case "GraphIndexExpression": - case "XMLDefaultDeclaration": - case "XMLAnyName": - case "XMLQualifiedIdentifier": - case "XMLFunctionQualifiedIdentifier": - case "XMLAttributeSelector": - case "XMLFilterExpression": - case "XML": - case "XMLElement": - case "XMLList": - case "XMLEscape": - case "XMLText": - case "XMLStartTag": - case "XMLEndTag": - case "XMLPointTag": - case "XMLName": - case "XMLAttribute": - case "XMLCdata": - case "XMLComment": - case "XMLProcessingInstruction": - default: - throw new Error("unknown type: " + JSON.stringify(n.type)); - } -} - -function printStatementSequence(path, options, print) { - let printed = []; - - const bodyNode = path.getNode(); - const isClass = bodyNode.type === "ClassBody"; - - path.map((stmtPath, i) => { - var stmt = stmtPath.getValue(); - - // Just in case the AST has been modified to contain falsy - // "statements," it's safer simply to skip them. - if (!stmt) { - return; - } - - // Skip printing EmptyStatement nodes to avoid leaving stray - // semicolons lying around. - if (stmt.type === "EmptyStatement") { - return; - } - - const stmtPrinted = print(stmtPath); - const text = options.originalText; - const parts = []; - - // in no-semi mode, prepend statement with semicolon if it might break ASI - if (!options.semi && !isClass && stmtNeedsASIProtection(stmtPath)) { - if ( - stmt.comments && - stmt.comments.some(comment => comment.leading) - ) { - // Note: stmtNeedsASIProtection requires stmtPath to already be printed - // as it reads needsParens which is mutated on the instance - parts.push(print(stmtPath, { needsSemi: true })); - } else { - parts.push(";", stmtPrinted); - } - } else { - parts.push(stmtPrinted); - } - - if (!options.semi && isClass) { - if (classPropMayCauseASIProblems(stmtPath)) { - parts.push(";"); - } else if (stmt.type === "ClassProperty") { - const nextChild = bodyNode.body[i + 1]; - if (classChildNeedsASIProtection(nextChild)) { - parts.push(";"); - } - } - } - - if (util$4.isNextLineEmpty(text, stmt) && !isLastStatement(stmtPath)) { - parts.push(hardline$2); - } - - printed.push(concat$2(parts)); - }); - - return join$2(hardline$2, printed); -} - -function printPropertyKey(path, options, print) { - const node = path.getNode(); - const key = node.key; - - if ( - (key.type === "StringLiteral" || - (key.type === "Literal" && typeof key.value === "string")) && - isIdentifierName(key.value) && - !node.computed - ) { - // 'a' -> a - return path.call( - keyPath => comments$3.printComments(keyPath, () => key.value, options), - "key" - ); - } - return path.call(print, "key"); -} - -function printMethod(path, options, print) { - var node = path.getNode(); - var semi = options.semi ? ";" : ""; - var kind = node.kind; - var parts = []; - - if (node.type === "ObjectMethod" || node.type === "ClassMethod") { - node.value = node; - } else { - namedTypes.FunctionExpression.assert(node.value); - } - - if (node.value.async) { - parts.push("async "); - } - - if (!kind || kind === "init" || kind === "method" || kind === "constructor") { - if (node.value.generator) { - parts.push("*"); - } - } else { - assert$4.ok(kind === "get" || kind === "set"); - - parts.push(kind, " "); - } - - var key = printPropertyKey(path, options, print); - - if (node.computed) { - key = concat$2(["[", key, "]"]); - } - - parts.push( - key, - path.call(print, "value", "typeParameters"), - group$1( - concat$2([ - path.call(function(valuePath) { - return printFunctionParams(valuePath, print, options); - }, "value"), - path.call(p => printReturnType(p, print), "value") - ]) - ) - ); - - if (!node.value.body || node.value.body.length === 0) { - parts.push(semi); - } else { - parts.push(" ", path.call(print, "value", "body")); - } - - return concat$2(parts); -} - -function couldGroupArg(arg) { - return ( - (arg.type === "ObjectExpression" && arg.properties.length > 0) || - (arg.type === "ArrayExpression" && arg.elements.length > 0) || - arg.type === "FunctionExpression" || - (arg.type === "ArrowFunctionExpression" && - (arg.body.type === "BlockStatement" || - arg.body.type === "ArrowFunctionExpression" || - arg.body.type === "ObjectExpression" || - arg.body.type === "ArrayExpression" || - arg.body.type === "CallExpression" || - arg.body.type === "JSXElement")) - ); -} - -function shouldGroupLastArg(args) { - const lastArg = util$4.getLast(args); - const penultimateArg = util$4.getPenultimate(args); - return ( - (!lastArg.comments || !lastArg.comments.length) && - couldGroupArg(lastArg) && - // If the last two arguments are of the same type, - // disable last element expansion. - (!penultimateArg || penultimateArg.type !== lastArg.type) - ); -} - -function shouldGroupFirstArg(args) { - if (args.length !== 2) { - return false; - } - - const firstArg = args[0]; - const secondArg = args[1]; - return ( - (!firstArg.comments || !firstArg.comments.length) && - (firstArg.type === "FunctionExpression" || - (firstArg.type === "ArrowFunctionExpression" && - firstArg.body.type === "BlockStatement")) && - !couldGroupArg(secondArg) - ); -} - -function printArgumentsList(path, options, print) { - var printed = path.map(print, "arguments"); - - if (printed.length === 0) { - return concat$2([ - "(", - comments$3.printDanglingComments(path, options, /* sameIndent */ true), - ")" - ]); - } - - const args = path.getValue().arguments; - // This is just an optimization; I think we could return the - // conditional group for all function calls, but it's more expensive - // so only do it for specific forms. - const shouldGroupFirst = shouldGroupFirstArg(args); - const shouldGroupLast = shouldGroupLastArg(args); - if (shouldGroupFirst || shouldGroupLast) { - const shouldBreak = shouldGroupFirst - ? printed.slice(1).some(willBreak) - : printed.slice(0, -1).some(willBreak); - - // We want to print the last argument with a special flag - let printedExpanded; - let i = 0; - path.each(function(argPath) { - if (shouldGroupFirst && i === 0) { - printedExpanded = - [argPath.call(p => print(p, { expandFirstArg: true }))] - .concat(printed.slice(1)); - } - if (shouldGroupLast && i === args.length - 1) { - printedExpanded = printed - .slice(0, -1) - .concat(argPath.call(p => print(p, { expandLastArg: true }))); - } - i++; - }, "arguments"); - - return concat$2([ - printed.some(willBreak) ? breakParent$2 : "", - conditionalGroup$1( - [ - concat$2(["(", join$2(concat$2([", "]), printedExpanded), ")"]), - shouldGroupFirst - ? concat$2([ - "(", - group$1(printedExpanded[0], { shouldBreak: true }), - printed.length > 1 ? ", " : "", - join$2(concat$2([",", line$1]), printed.slice(1)), - ")" - ]) - : concat$2([ - "(", - join$2(concat$2([",", line$1]), printed.slice(0, -1)), - printed.length > 1 ? ", " : "", - group$1(util$4.getLast(printedExpanded), { - shouldBreak: true - }), - ")" - ]), - group$1( - concat$2([ - "(", - indent$2(concat$2([line$1, join$2(concat$2([",", line$1]), printed)])), - shouldPrintComma(options, "all") ? "," : "", - line$1, - ")" - ]), - { shouldBreak: true } - ) - ], - { shouldBreak } - ) - ]); - } - - return group$1( - concat$2([ - "(", - indent$2(concat$2([softline$1, join$2(concat$2([",", line$1]), printed)])), - ifBreak$1(shouldPrintComma(options, "all") ? "," : ""), - softline$1, - ")" - ]), - { shouldBreak: printed.some(willBreak) } - ); -} - -function printFunctionParams(path, print, options, expandArg) { - var fun = path.getValue(); - // namedTypes.Function.assert(fun); - var paramsField = fun.type === "TSFunctionType" ? "parameters" : "params"; - var printed = path.map(print, paramsField); - - if (fun.defaults) { - path.each(function(defExprPath) { - var i = defExprPath.getName(); - var p = printed[i]; - - if (p && defExprPath.getValue()) { - printed[i] = concat$2([p, " = ", print(defExprPath)]); - } - }, "defaults"); - } - - if (fun.rest) { - printed.push(concat$2(["...", path.call(print, "rest")])); - } - - if (printed.length === 0) { - return concat$2([ - "(", - comments$3.printDanglingComments(path, options, /* sameIndent */ true), - ")" - ]); - } - - const lastParam = util$4.getLast(fun[paramsField]); - - // If the parent is a call with the first/last argument expansion and this is the - // params of the first/last argument, we dont want the arguments to break and instead - // want the whole expression to be on a new line. - // - // Good: Bad: - // verylongcall( verylongcall(( - // (a, b) => { a, - // } b, - // }) ) => { - // }) - if (expandArg) { - return group$1(concat$2(["(", join$2(", ", printed.map(removeLines)), ")"])); - } - - // Single object destructuring should hug - // - // function({ - // a, - // b, - // c - // }) {} - if (shouldHugArguments(fun)) { - return concat$2(["(", join$2(", ", printed), ")"]); - } - - const parent = path.getParentNode(); - - const flowTypeAnnotations = [ - "AnyTypeAnnotation", - "NullLiteralTypeAnnotation", - "GenericTypeAnnotation", - "ThisTypeAnnotation", - "NumberTypeAnnotation", - "VoidTypeAnnotation", - "NullTypeAnnotation", - "EmptyTypeAnnotation", - "MixedTypeAnnotation", - "BooleanTypeAnnotation", - "BooleanLiteralTypeAnnotation", - "StringTypeAnnotation" - ]; - - const isFlowShorthandWithOneArg = - (isObjectTypePropertyAFunction(parent) || - isTypeAnnotationAFunction(parent) || - parent.type === "TypeAlias" || - parent.type === "UnionTypeAnnotation" || - parent.type === "IntersectionTypeAnnotation" || - (parent.type === "FunctionTypeAnnotation" && - parent.returnType === fun)) && - fun[paramsField].length === 1 && - fun[paramsField][0].name === null && - fun[paramsField][0].typeAnnotation && - flowTypeAnnotations.indexOf(fun[paramsField][0].typeAnnotation.type) !== -1 && - !fun.rest; - - if (isFlowShorthandWithOneArg) { - return concat$2(printed); - } - - const canHaveTrailingComma = - !(lastParam && lastParam.type === "RestElement") && - !fun.rest; - - return concat$2([ - "(", - indent$2(concat$2([softline$1, join$2(concat$2([",", line$1]), printed)])), - ifBreak$1( - canHaveTrailingComma && shouldPrintComma(options, "all") ? "," : "" - ), - softline$1, - ")" - ]); -} - -function canPrintParamsWithoutParens(node) { - return ( - node.params.length === 1 && - !node.rest && - node.params[0].type === "Identifier" && - !node.params[0].typeAnnotation && - !node.params[0].comments && - !node.params[0].optional && - !node.predicate && - !node.returnType - ); -} - -function printFunctionDeclaration(path, print, options) { - var n = path.getValue(); - var parts = []; - - if (n.async) parts.push("async "); - - parts.push("function"); - - if (n.generator) parts.push("*"); - - if (n.id) { - parts.push(" ", path.call(print, "id")); - } - - parts.push( - path.call(print, "typeParameters"), - group$1( - concat$2([ - printFunctionParams(path, print, options), - printReturnType(path, print) - ]) - ), - " ", - path.call(print, "body") - ); - - return concat$2(parts); -} - -function printObjectMethod(path, options, print) { - var objMethod = path.getValue(); - var parts = []; - - if (objMethod.async) parts.push("async "); - - if (objMethod.generator) parts.push("*"); - - if ( - objMethod.method || objMethod.kind === "get" || objMethod.kind === "set" - ) { - return printMethod(path, options, print); - } - - var key = printPropertyKey(path, options, print); - - if (objMethod.computed) { - parts.push("[", key, "]"); - } else { - parts.push(key); - } - - if (objMethod.typeParameters) { - parts.push(path.call(print, "typeParameters")); - } - - parts.push( - group$1( - concat$2([ - printFunctionParams(path, print, options), - printReturnType(path, print) - ]) - ), - " ", - path.call(print, "body") - ); - - return concat$2(parts); -} - -function printReturnType(path, print) { - const n = path.getValue(); - const parts = [path.call(print, "returnType")]; - - // prepend colon to TypeScript type annotation - if (n.returnType && n.returnType.typeAnnotation) { - parts.unshift(": "); - } - - if (n.predicate) { - // The return type will already add the colon, but otherwise we - // need to do it ourselves - parts.push(n.returnType ? " " : ": ", path.call(print, "predicate")); - } - - return concat$2(parts); -} - -function printExportDeclaration(path, options, print) { - const decl = path.getValue(); - const semi = options.semi ? ";" : ""; - let parts = ["export "]; - - namedTypes.Declaration.assert(decl); - - if (decl["default"] || decl.type === "ExportDefaultDeclaration") { - parts.push("default "); - } - - parts.push( - comments$3.printDanglingComments(path, options, /* sameIndent */ true) - ); - - if (decl.declaration) { - parts.push(path.call(print, "declaration")); - - if ( - decl.type === "ExportDefaultDeclaration" && - (decl.declaration.type !== "ClassDeclaration" && - decl.declaration.type !== "FunctionDeclaration") - ) { - parts.push(semi); - } - } else { - if (decl.specifiers && decl.specifiers.length > 0) { - if ( - decl.specifiers.length === 1 && - decl.specifiers[0].type === "ExportBatchSpecifier" - ) { - parts.push("*"); - } else { - let specifiers = []; - let defaultSpecifiers = []; - let namespaceSpecifiers = []; - - path.map(specifierPath => { - const specifierType = path.getValue().type; - if (specifierType === "ExportSpecifier") { - specifiers.push(print(specifierPath)); - } else if (specifierType === "ExportDefaultSpecifier") { - defaultSpecifiers.push(print(specifierPath)); - } else if (specifierType === "ExportNamespaceSpecifier") { - namespaceSpecifiers.push(concat$2(["* as ", print(specifierPath)])); - } - }, "specifiers"); - - const isNamespaceFollowed = - namespaceSpecifiers.length !== 0 && - (specifiers.length !== 0 || defaultSpecifiers.length !== 0); - const isDefaultFollowed = - defaultSpecifiers.length !== 0 && specifiers.length !== 0; - - parts.push( - decl.exportKind === "type" ? "type " : "", - concat$2(namespaceSpecifiers), - concat$2([isNamespaceFollowed ? ", " : ""]), - concat$2(defaultSpecifiers), - concat$2([isDefaultFollowed ? ", " : ""]), - specifiers.length !== 0 - ? group$1( - concat$2([ - "{", - indent$2( - concat$2([ - options.bracketSpacing ? line$1 : softline$1, - join$2(concat$2([",", line$1]), specifiers) - ]) - ), - ifBreak$1(shouldPrintComma(options) ? "," : ""), - options.bracketSpacing ? line$1 : softline$1, - "}" - ]) - ) - : "" - ); - } - } else { - parts.push("{}"); - } - - if (decl.source) { - parts.push(" from ", path.call(print, "source")); - } - - parts.push(semi); - } - - return concat$2(parts); -} - -function printFlowDeclaration(path, parts) { - var parentExportDecl = util$4.getParentExportDeclaration(path); - - if (parentExportDecl) { - assert$4.strictEqual(parentExportDecl.type, "DeclareExportDeclaration"); - } else { - // If the parent node has type DeclareExportDeclaration, then it - // will be responsible for printing the "declare" token. Otherwise - // it needs to be printed with this non-exported declaration node. - parts.unshift("declare "); - } - - return concat$2(parts); -} - -function getFlowVariance(path) { - if (!path.variance) { - return null; - } - - // Babylon 7.0 currently uses variance node type, and flow should - // follow suit soon: - // https://github.com/babel/babel/issues/4722 - const variance = path.variance.kind || path.variance; - - switch (variance) { - case "plus": - return "+"; - - case "minus": - return "-"; - - default: - return variance; - } -} - -function printClass(path, options, print) { - const n = path.getValue(); - const parts = []; - - if (n.accessibility) { - parts.push(n.accessibility + " "); - } - if (n.type === "TSAbstractClassDeclaration") { - parts.push("abstract "); - } - - parts.push("class"); - - if (n.id) { - parts.push(" ", path.call(print, "id"), path.call(print, "typeParameters")); - } - - const partsGroup = []; - if (n.superClass) { - partsGroup.push( - line$1, - "extends ", - path.call(print, "superClass"), - path.call(print, "superTypeParameters") - ); - } else if (n.extends && n.extends.length > 0) { - partsGroup.push(line$1, "extends ", join$2(", ", path.map(print, "extends"))); - } - - if (n["implements"] && n["implements"].length > 0) { - partsGroup.push( - line$1, - "implements ", - join$2(", ", path.map(print, "implements")) - ); - } - - if (partsGroup.length > 0) { - parts.push(group$1(indent$2(concat$2(partsGroup)))); - } - - parts.push(" ", path.call(print, "body")); - - return parts; -} - -function printMemberLookup(path, options, print) { - const property = path.call(print, "property"); - const n = path.getValue(); - - if (!n.computed) { - return concat$2([".", property]); - } - - if ( - (n.property.type === "Literal" && typeof n.property.value === "number") || - n.property.type === "NumericLiteral" - ) { - return concat$2(["[", property, "]"]); - } - - return group$1( - concat$2([ - "[", - indent$2(concat$2([softline$1, property])), - softline$1, - "]" - ]) - ); -} - -// We detect calls on member expressions specially to format a -// comman pattern better. The pattern we are looking for is this: -// -// arr -// .map(x => x + 1) -// .filter(x => x > 10) -// .some(x => x % 2) -// -// The way it is structured in the AST is via a nested sequence of -// MemberExpression and CallExpression. We need to traverse the AST -// and make groups out of it to print it in the desired way. -function printMemberChain(path, options, print) { - // The first phase is to linearize the AST by traversing it down. - // - // a().b() - // has the following AST structure: - // CallExpression(MemberExpression(CallExpression(Identifier))) - // and we transform it into - // [Identifier, CallExpression, MemberExpression, CallExpression] - const printedNodes = []; - - function rec(path) { - const node = path.getValue(); - if (node.type === "CallExpression") { - printedNodes.unshift({ - node: node, - printed: comments$3.printComments( - path, - () => printArgumentsList(path, options, print), - options - ) - }); - path.call(callee => rec(callee), "callee"); - } else if (node.type === "MemberExpression") { - printedNodes.unshift({ - node: node, - printed: comments$3.printComments( - path, - () => printMemberLookup(path, options, print), - options - ) - }); - path.call(object => rec(object), "object"); - } else { - printedNodes.unshift({ - node: node, - printed: path.call(print) - }); - } - } - // Note: the comments of the root node have already been printed, so we - // need to extract this first call without printing them as they would - // if handled inside of the recursive call. - printedNodes.unshift({ - node: path.getValue(), - printed: printArgumentsList(path, options, print) - }); - path.call(callee => rec(callee), "callee"); - - // Once we have a linear list of printed nodes, we want to create groups out - // of it. - // - // a().b.c().d().e - // will be grouped as - // [ - // [Identifier, CallExpression], - // [MemberExpression, MemberExpression, CallExpression], - // [MemberExpression, CallExpression], - // [MemberExpression], - // ] - // so that we can print it as - // a() - // .b.c() - // .d() - // .e - - // The first group is the first node followed by - // - as many CallExpression as possible - // < fn()()() >.something() - // - then, as many MemberExpression as possible but the last one - // < this.items >.something() - var groups = []; - var currentGroup = [printedNodes[0]]; - var i = 1; - for (; i < printedNodes.length; ++i) { - if (printedNodes[i].node.type === "CallExpression") { - currentGroup.push(printedNodes[i]); - } else { - break; - } - } - for (; i + 1 < printedNodes.length; ++i) { - if ( - printedNodes[i].node.type === "MemberExpression" && - printedNodes[i + 1].node.type === "MemberExpression" - ) { - currentGroup.push(printedNodes[i]); - } else { - break; - } - } - groups.push(currentGroup); - currentGroup = []; - - // Then, each following group is a sequence of MemberExpression followed by - // a sequence of CallExpression. To compute it, we keep adding things to the - // group until we has seen a CallExpression in the past and reach a - // MemberExpression - var hasSeenCallExpression = false; - for (; i < printedNodes.length; ++i) { - if ( - hasSeenCallExpression && printedNodes[i].node.type === "MemberExpression" - ) { - // [0] should be appended at the end of the group instead of the - // beginning of the next one - if (printedNodes[i].node.computed) { - currentGroup.push(printedNodes[i]); - continue; - } - - groups.push(currentGroup); - currentGroup = []; - hasSeenCallExpression = false; - } - - if (printedNodes[i].node.type === "CallExpression") { - hasSeenCallExpression = true; - } - currentGroup.push(printedNodes[i]); - } - if (currentGroup.length > 0) { - groups.push(currentGroup); - } - - // There are cases like Object.keys(), Observable.of(), _.values() where - // they are the subject of all the chained calls and therefore should - // be kept on the same line: - // - // Object.keys(items) - // .filter(x => x) - // .map(x => x) - // - // In order to detect those cases, we use an heuristic: if the first - // node is just an identifier with the name starting with a capital - // letter, just a sequence of _$ or this. The rationale is that they are - // likely to be factories. - const shouldMerge = - groups.length >= 2 && - !groups[1][0].node.comments && - groups[0].length === 1 && - (groups[0][0].node.type === "ThisExpression" || - (groups[0][0].node.type === "Identifier" && - groups[0][0].node.name.match(/(^[A-Z])|^[_$]+$/))); - - function printGroup(printedGroup) { - return concat$2(printedGroup.map(tuple => tuple.printed)); - } - - function printIndentedGroup(groups) { - return indent$2( - group$1(concat$2([hardline$2, join$2(hardline$2, groups.map(printGroup))])) - ); - } - - const printedGroups = groups.map(printGroup); - const oneLine = concat$2(printedGroups); - const hasComment = - (groups.length >= 2 && groups[1][0].node.comments) || - (groups.length >= 3 && groups[2][0].node.comments); - - // If we only have a single `.`, we shouldn't do anything fancy and just - // render everything concatenated together. - if ( - groups.length <= (shouldMerge ? 3 : 2) && - !hasComment && - // (a || b).map() should be break before .map() instead of || - groups[0][0].node.type !== "LogicalExpression" - ) { - return group$1(oneLine); - } - - const expanded = concat$2([ - printGroup(groups[0]), - shouldMerge ? concat$2(groups.slice(1, 2).map(printGroup)) : "", - printIndentedGroup(groups.slice(shouldMerge ? 2 : 1)) - ]); - - // If there's a comment, we don't want to print in one line. - if (hasComment) { - return group$1(expanded); - } - - // If any group but the last one has a hard line, we want to force expand - // it. If the last group is a function it's okay to inline if it fits. - if (printedGroups.slice(0, -1).some(willBreak)) { - return group$1(expanded); - } - - return concat$2([ - // We only need to check `oneLine` because if `expanded` is chosen - // that means that the parent group has already been broken - // naturally - willBreak(oneLine) ? breakParent$2 : "", - conditionalGroup$1([oneLine, expanded]) - ]); -} - -function isEmptyJSXElement(node) { - if (node.children.length === 0) return true; - if (node.children.length > 1) return false; - - // if there is one child but it's just a newline, treat as empty - const value = node.children[0].value; - if (!/\S/.test(value) && /\n/.test(value)) { - return true; - } else { - return false; - } -} - -// JSX Children are strange, mostly for two reasons: -// 1. JSX reads newlines into string values, instead of skipping them like JS -// 2. up to one whitespace between elements within a line is significant, -// but not between lines. -// -// So for one thing, '\n' needs to be parsed out of string literals -// and turned into hardlines (with string boundaries otherwise using softline) -// -// For another, leading, trailing, and lone whitespace all need to -// turn themselves into the rather ugly `{' '}` when breaking. -function printJSXChildren(path, options, print, jsxWhitespace) { - const n = path.getValue(); - const children = []; - - // using `map` instead of `each` because it provides `i` - path.map(function(childPath, i) { - const child = childPath.getValue(); - const isLiteral = namedTypes.Literal.check(child); - - if (isLiteral && typeof child.value === "string") { - // There's a bug in the flow parser where it doesn't unescape the - // value field. To workaround this, we can use rawValue which is - // correctly escaped (since it parsed). - // We really want to use value and re-escape it ourself when possible - // though. - const partiallyEscapedValue = options.parser === "flow" - ? child.raw - : util$4.htmlEscapeInsideAngleBracket(child.value); - const value = partiallyEscapedValue.replace(/\u00a0/g, " "); - - if (/\S/.test(value)) { - // treat each line of text as its own entity - value.split(/(\r?\n\s*)/).forEach(line => { - const newlines = line.match(/\n/g); - if (newlines) { - children.push(hardline$2); - - // allow one extra newline - if (newlines.length > 1) { - children.push(hardline$2); - } - return; - } - - const beginSpace = /^\s+/.test(line); - if (beginSpace) { - children.push(jsxWhitespace); - children.push(softline$1); - } - - const stripped = line.replace(/^\s+|\s+$/g, ""); - if (stripped) { - children.push(stripped); - } - - const endSpace = /\s+$/.test(line); - if (endSpace) { - children.push(softline$1); - children.push(jsxWhitespace); - } - }); - - if (!isLineNext(util$4.getLast(children))) { - children.push(softline$1); - } - } else if (/\n/.test(value)) { - children.push(hardline$2); - - // allow one extra newline - if (value.match(/\n/g).length > 1) { - children.push(hardline$2); - } - } else if (/\s/.test(value)) { - // whitespace-only without newlines, - // eg; a single space separating two elements - children.push(jsxWhitespace); - children.push(softline$1); - } - } else { - children.push(print(childPath)); - - // add a line unless it's followed by a JSX newline - let next = n.children[i + 1]; - if (!(next && /^\s*\n/.test(next.value))) { - children.push(softline$1); - } - } - }, "children"); - - return children; -} - -// JSX expands children from the inside-out, instead of the outside-in. -// This is both to break children before attributes, -// and to ensure that when children break, their parents do as well. -// -// Any element that is written without any newlines and fits on a single line -// is left that way. -// Not only that, any user-written-line containing multiple JSX siblings -// should also be kept on one line if possible, -// so each user-written-line is wrapped in its own group. -// -// Elements that contain newlines or don't fit on a single line (recursively) -// are fully-split, using hardline and shouldBreak: true. -// -// To support that case properly, all leading and trailing spaces -// are stripped from the list of children, and replaced with a single hardline. -function printJSXElement(path, options, print) { - const n = path.getValue(); - - // Turn
into
- if (isEmptyJSXElement(n)) { - n.openingElement.selfClosing = true; - delete n.closingElement; - } - - const openingLines = path.call(print, "openingElement"); - const closingLines = path.call(print, "closingElement"); - - if ( - n.children.length === 1 && - n.children[0].type === "JSXExpressionContainer" && - (n.children[0].expression.type === "TemplateLiteral" || - n.children[0].expression.type === "TaggedTemplateExpression") - ) { - return concat$2([ - openingLines, - concat$2(path.map(print, "children")), - closingLines - ]); - } - - // If no children, just print the opening element - if (n.openingElement.selfClosing) { - assert$4.ok(!n.closingElement); - return openingLines; - } - // Record any breaks. Should never go from true to false, only false to true. - let forcedBreak = willBreak(openingLines); - - const jsxWhitespace = options.singleQuote - ? ifBreak$1("{' '}", " ") - : ifBreak$1('{" "}', " "); - const children = printJSXChildren(path, options, print, jsxWhitespace); - - // Trim trailing lines, recording if there was a hardline - let numTrailingHard = 0; - while (children.length && isLineNext(util$4.getLast(children))) { - if (willBreak(util$4.getLast(children))) { - ++numTrailingHard; - forcedBreak = true; - } - children.pop(); - } - // allow one extra newline - if (numTrailingHard > 1) { - children.push(hardline$2); - } - - // Trim leading lines, recording if there was a hardline - let numLeadingHard = 0; - while (children.length && isLineNext(children[0])) { - if (willBreak(children[0])) { - ++numLeadingHard; - forcedBreak = true; - } - children.shift(); - } - // allow one extra newline - if (numLeadingHard > 1) { - children.unshift(hardline$2); - } - - // Group by line, recording if there was a hardline. - let groups = [[]]; // Initialize the first line's group - children.forEach((child, i) => { - // leading and trailing JSX whitespace don't go into a group - if (child === jsxWhitespace) { - if (i === 0) { - groups.unshift(child); - return; - } else if (i === children.length - 1) { - groups.push(child); - return; - } - } - - let prev = children[i - 1]; - if (prev && willBreak(prev)) { - forcedBreak = true; - - // On a new line, so create a new group and put this element in it. - groups.push([child]); - } else { - // Not on a newline, so add this element to the current group. - util$4.getLast(groups).push(child); - } - - // Ensure we record hardline of last element. - if (!forcedBreak && i === children.length - 1) { - if (willBreak(child)) forcedBreak = true; - } - }); - - const childrenGroupedByLine = [ - hardline$2, - // Conditional groups suppress break propagation; we want to output - // hard lines without breaking up the entire jsx element. - // Note that leading and trailing JSX Whitespace don't go into a group. - concat$2( - groups.map( - contents => - (Array.isArray(contents) - ? conditionalGroup$1([concat$2(contents)]) - : contents) - ) - ) - ]; - - const multiLineElem = group$1( - concat$2([ - openingLines, - indent$2(group$1(concat$2(childrenGroupedByLine), { shouldBreak: true })), - hardline$2, - closingLines - ]) - ); - - if (forcedBreak) { - return multiLineElem; - } - - return conditionalGroup$1([ - group$1(concat$2([openingLines, concat$2(children), closingLines])), - multiLineElem - ]); -} - -function maybeWrapJSXElementInParens(path, elem) { - const parent = path.getParentNode(); - if (!parent) return elem; - - const NO_WRAP_PARENTS = { - ArrayExpression: true, - JSXElement: true, - JSXExpressionContainer: true, - ExpressionStatement: true, - CallExpression: true, - ConditionalExpression: true, - LogicalExpression: true - }; - if (NO_WRAP_PARENTS[parent.type]) { - return elem; - } - - return group$1( - concat$2([ - ifBreak$1("("), - indent$2(concat$2([softline$1, elem])), - softline$1, - ifBreak$1(")") - ]) - ); -} - -function isBinaryish(node) { - return node.type === "BinaryExpression" || node.type === "LogicalExpression"; -} - -function shouldInlineLogicalExpression(node) { - return ( - node.type === "LogicalExpression" && - (node.right.type === "ObjectExpression" || - node.right.type === "ArrayExpression") - ); -} - -// For binary expressions to be consistent, we need to group -// subsequent operators with the same precedence level under a single -// group. Otherwise they will be nested such that some of them break -// onto new lines but not all. Operators with the same precedence -// level should either all break or not. Because we group them by -// precedence level and the AST is structured based on precedence -// level, things are naturally broken up correctly, i.e. `&&` is -// broken before `+`. -function printBinaryishExpressions(path, print, options, isNested, isInsideParenthesis) { - let parts = []; - let node = path.getValue(); - - // We treat BinaryExpression and LogicalExpression nodes the same. - if (isBinaryish(node)) { - // Put all operators with the same precedence level in the same - // group. The reason we only need to do this with the `left` - // expression is because given an expression like `1 + 2 - 3`, it - // is always parsed like `((1 + 2) - 3)`, meaning the `left` side - // is where the rest of the expression will exist. Binary - // expressions on the right side mean they have a difference - // precedence level and should be treated as a separate group, so - // print them normally. (This doesn't hold for the `**` operator, - // which is unique in that it is right-associative.) - if ( - util$4.getPrecedence(node.left.operator) === - util$4.getPrecedence(node.operator) && node.operator !== "**" - ) { - // Flatten them out by recursively calling this function. - parts = parts.concat( - path.call( - left => - printBinaryishExpressions( - left, - print, - options, - /* isNested */ true, - isInsideParenthesis - ), - "left" - ) - ); - } else { - parts.push(path.call(print, "left")); - } - - const right = concat$2([ - node.operator, - shouldInlineLogicalExpression(node) ? " " : line$1, - path.call(print, "right") - ]); - - // If there's only a single binary expression, we want to create a group - // in order to avoid having a small right part like -1 be on its own line. - const parent = path.getParentNode(); - const shouldGroup = - !(isInsideParenthesis && node.type === "LogicalExpression") && - parent.type !== node.type && - node.left.type !== node.type && - node.right.type !== node.type; - - parts.push(" ", shouldGroup ? group$1(right) : right); - - // The root comments are already printed, but we need to manually print - // the other ones since we don't call the normal print on BinaryExpression, - // only for the left and right parts - if (isNested && node.comments) { - parts = comments$3.printComments(path, () => concat$2(parts), options); - } - } else { - // Our stopping case. Simply print the node normally. - parts.push(path.call(print)); - } - - return parts; -} - -function printAssignmentRight(rightNode, printedRight, canBreak, options) { - if (hasLeadingOwnLineComment(options.originalText, rightNode)) { - return indent$2(concat$2([hardline$2, printedRight])); - } - - if (canBreak) { - return indent$2(concat$2([line$1, printedRight])); - } - - return concat$2([" ", printedRight]); -} - -function printAssignment( - leftNode, - printedLeft, - operator, - rightNode, - printedRight, - options -) { - if (!rightNode) { - return printedLeft; - } - - const canBreak = ( - (isBinaryish(rightNode) && !shouldInlineLogicalExpression(rightNode)) || - (leftNode.type === "Identifier" || leftNode.type === "MemberExpression") && - (rightNode.type === "StringLiteral" || - (rightNode.type === "Literal" && typeof rightNode.value === "string") || - isMemberExpressionChain(rightNode)) - ); - - const printed = printAssignmentRight( - rightNode, - printedRight, - canBreak, - options - ); - - return group$1(concat$2([printedLeft, " ", operator, printed])); -} - -function adjustClause(node, clause, forceSpace) { - if (node.type === "EmptyStatement") { - return ";"; - } - - if (node.type === "BlockStatement" || forceSpace) { - return concat$2([" ", clause]); - } - - return indent$2(concat$2([line$1, clause])); -} - -function nodeStr(node, options) { - const str = node.value; - isString$1.assert(str); - - const raw = node.extra ? node.extra.raw : node.raw; - // `rawContent` is the string exactly like it appeared in the input source - // code, with its enclosing quote. - const rawContent = raw.slice(1, -1); - - const double = { quote: '"', regex: /"/g }; - const single = { quote: "'", regex: /'/g }; - - const preferred = options.singleQuote ? single : double; - const alternate = preferred === single ? double : single; - - let shouldUseAlternateQuote = false; - - // If `rawContent` contains at least one of the quote preferred for enclosing - // the string, we might want to enclose with the alternate quote instead, to - // minimize the number of escaped quotes. - if (rawContent.includes(preferred.quote)) { - const numPreferredQuotes = (rawContent.match(preferred.regex) || []).length; - const numAlternateQuotes = (rawContent.match(alternate.regex) || []).length; - - shouldUseAlternateQuote = numPreferredQuotes > numAlternateQuotes; - } - - const enclosingQuote = shouldUseAlternateQuote - ? alternate.quote - : preferred.quote; - - // It might sound unnecessary to use `makeString` even if `node.raw` already - // is enclosed with `enclosingQuote`, but it isn't. `node.raw` could contain - // unnecessary escapes (such as in `"\'"`). Always using `makeString` makes - // sure that we consistently output the minimum amount of escaped quotes. - return makeString(rawContent, enclosingQuote); -} - -function makeString(rawContent, enclosingQuote) { - const otherQuote = enclosingQuote === '"' ? "'" : '"'; - - // Matches _any_ escape and unescaped quotes (both single and double). - const regex = /\\([\s\S])|(['"])/g; - - // Escape and unescape single and double quotes as needed to be able to - // enclose `rawContent` with `enclosingQuote`. - const newContent = rawContent.replace(regex, (match, escaped, quote) => { - // If we matched an escape, and the escaped character is a quote of the - // other type than we intend to enclose the string with, there's no need for - // it to be escaped, so return it _without_ the backslash. - if (escaped === otherQuote) { - return escaped; - } - - // If we matched an unescaped quote and it is of the _same_ type as we - // intend to enclose the string with, it must be escaped, so return it with - // a backslash. - if (quote === enclosingQuote) { - return "\\" + quote; - } - - // Otherwise return the escape or unescaped quote as-is. - return match; - }); - - return enclosingQuote + newContent + enclosingQuote; -} - -function printRegex(node) { - const flags = node.flags.split('').sort().join(''); - return `/${node.pattern}/${flags}`; -} - -function printNumber(rawNumber) { - return ( - rawNumber - .toLowerCase() - // Remove unnecessary plus and zeroes from scientific notation. - .replace(/^([\d.]+e)(?:\+|(-))?0*(\d)/, "$1$2$3") - // Remove unnecessary scientific notation (1e0). - .replace(/^([\d.]+)e[+-]?0+$/, "$1") - // Make sure numbers always start with a digit. - .replace(/^\./, "0.") - // Remove trailing dot. - .replace(/\.(?=e|$)/, "") - ); -} - -function isLastStatement(path) { - const parent = path.getParentNode(); - const node = path.getValue(); - const body = parent.body.filter(stmt => stmt.type !== "EmptyStatement"); - return body && body[body.length - 1] === node; -} - -function hasLeadingOwnLineComment(text, node) { - const res = - node.comments && - node.comments.some( - comment => comment.leading && util$4.hasNewline(text, util$4.locEnd(comment)) - ); - return res; -} - -function hasNakedLeftSide(node) { - return ( - node.type === "AssignmentExpression" || - node.type === "BinaryExpression" || - node.type === "LogicalExpression" || - node.type === "ConditionalExpression" || - node.type === "CallExpression" || - node.type === "MemberExpression" || - node.type === "SequenceExpression" || - node.type === "TaggedTemplateExpression" || - (node.type === "UpdateExpression" && !node.prefix) - ); -} - -function getLeftSide(node) { - if (node.expressions) { - return node.expressions[0]; - } - return node.left || node.test || node.callee || node.object || node.tag || node.argument; -} - -function exprNeedsASIProtection(node) { - // HACK: node.needsParens is added in `genericPrint()` for the sole purpose - // of being used here. It'd be preferable to find a cleaner way to do this. - const maybeASIProblem = - node.needsParens || - node.type === "ParenthesizedExpression" || - node.type === "TypeCastExpression" || - (node.type === "ArrowFunctionExpression" && - !canPrintParamsWithoutParens(node)) || - node.type === "ArrayExpression" || - node.type === "ArrayPattern" || - (node.type === "UnaryExpression" && - node.prefix && - (node.operator === "+" || node.operator === "-")) || - node.type === "TemplateLiteral" || - node.type === "TemplateElement" || - node.type === "JSXElement" || - node.type === "BindExpression" || - node.type === "RegExpLiteral" || - (node.type === "Literal" && node.pattern) || - (node.type === "Literal" && node.regex); - - if (maybeASIProblem) { - return true; - } - - if (!hasNakedLeftSide(node)) { - return false; - } - - return exprNeedsASIProtection(getLeftSide(node)); -} - -function stmtNeedsASIProtection(path) { - if (!path) return false; - const node = path.getNode(); - - if (node.type !== "ExpressionStatement") { - return false; - } - - return exprNeedsASIProtection(node.expression); -} - -function classPropMayCauseASIProblems(path) { - const node = path.getNode(); - - if (node.type !== "ClassProperty") { - return false; - } - - const name = node.key && node.key.name; - if (!name) { - return false; - } - - // this isn't actually possible yet with most parsers available today - // so isn't properly tested yet. - if (name === "static" || name === "get" || name === "set") { - return true; - } -} - -function classChildNeedsASIProtection(node) { - if (!node) return; - - switch (node.type) { - case "ClassProperty": - case "TSAbstractClassProperty": - return node.computed; - // flow - case "MethodDefinition": - // typescript - case "TSAbstractMethodDefinition": - // babylon - case "ClassMethod": { - const isAsync = node.value ? node.value.async : node.async; - const isGenerator = node.value ? node.value.generator : node.generator; - if ( - isAsync || node.static || node.kind === "get" || node.kind === "set" - ) { - return false; - } - if (node.computed || isGenerator) { - return true; - } - } - - default: - return false; - } -} - -// This recurses the return argument, looking for the first token -// (the leftmost leaf node) and, if it (or its parents) has any -// leadingComments, returns true (so it can be wrapped in parens). -function returnArgumentHasLeadingComment(options, argument) { - if (hasLeadingOwnLineComment(options.originalText, argument)) { - return true; - } - - if (hasNakedLeftSide(argument)) { - let leftMost = argument; - let newLeftMost; - while ((newLeftMost = getLeftSide(leftMost))) { - leftMost = newLeftMost; - - if (hasLeadingOwnLineComment(options.originalText, leftMost)) { - return true; - } - } - } - - return false; -} - -function isMemberExpressionChain(node) { - if (node.type !== "MemberExpression") { - return false; - } - if (node.object.type === "Identifier") { - return true; - } - return isMemberExpressionChain(node.object); -} - -// Hack to differentiate between the following two which have the same ast -// type T = { method: () => void }; -// type T = { method(): void }; -function isObjectTypePropertyAFunction(node) { - return ( - node.type === "ObjectTypeProperty" && - node.value.type === "FunctionTypeAnnotation" && - !node.static && - util$4.locStart(node.key) !== util$4.locStart(node.value) - ); -} - -// Hack to differentiate between the following two which have the same ast -// declare function f(a): void; -// var f: (a) => void; -function isTypeAnnotationAFunction(node) { - return ( - node.type === "TypeAnnotation" && - node.typeAnnotation.type === "FunctionTypeAnnotation" && - !node.static && - util$4.locStart(node) !== util$4.locStart(node.typeAnnotation) - ); -} - -function isNodeStartingWithDeclare(node, options) { - if (!(options.parser === "flow" || options.parser === "typescript")) { - return false; - } - return ( - options.originalText.slice(0, util$4.locStart(node)).match(/declare\s*$/) || - options.originalText - .slice(node.range[0], node.range[1]) - .startsWith("declare ") - ); -} - -function shouldHugArguments(fun) { - return ( - fun && - fun.params && - fun.params.length === 1 && - !fun.params[0].comments && - (fun.params[0].type === "ObjectPattern" || - (fun.params[0].type === "Identifier" && - fun.params[0].typeAnnotation && - fun.params[0].typeAnnotation.type === "TypeAnnotation" && - fun.params[0].typeAnnotation.typeAnnotation.type === "ObjectTypeAnnotation") || - fun.params[0].type === "FunctionTypeParam" && - fun.params[0].typeAnnotation.type === "ObjectTypeAnnotation") && - !fun.rest - ); -} - -function templateLiteralHasNewLines(template) { - return template.quasis.some(quasi => quasi.value.raw.includes('\n')); -} - -function isTemplateOnItsOwnLine(n, text) { - return ( - (n.type === "TemplateLiteral" && templateLiteralHasNewLines(n) || - n.type === "TaggedTemplateExpression" && templateLiteralHasNewLines(n.quasi)) && - !util$4.hasNewline( - text, - util$4.locStart(n), - {backwards: true} - ) - ); -} - -function printArrayItems(path, options, printPath, print) { - const printedElements = []; - let separatorParts = []; - - path.each(function(childPath) { - printedElements.push(concat$2(separatorParts)); - printedElements.push(group$1(print(childPath))); - - separatorParts = [",", line$1]; - if ( - childPath.getValue() && - util$4.isNextLineEmpty(options.originalText, childPath.getValue()) - ) { - separatorParts.push(softline$1); - } - }, printPath); - - return concat$2(printedElements); -} - -function hasDanglingComments(node) { - return node.comments && - node.comments.some(comment => !comment.leading && !comment.trailing); -} - -function removeLines(doc) { - // Force this doc into flat mode by statically converting all - // lines into spaces (or soft lines into nothing). Hard lines - // should still output because there's too great of a chance - // of breaking existing assumptions otherwise. - return docUtils.mapDoc(doc, d => { - if (d.type === "line" && !d.hard) { - return d.soft ? "" : " "; - } else if (d.type === "if-break") { - return d.flatContents || ""; - } - return d; - }); -} - -function printAstToDoc$1(ast, options) { - function printGenerically(path, args) { - return comments$3.printComments( - path, - p => genericPrint(p, options, printGenerically, args), - options, - args && args.needsSemi - ); - } - - const doc = printGenerically(FastPath.from(ast)); - docUtils.propagateBreaks(doc); - return doc; -} - -var printer = { printAstToDoc: printAstToDoc$1 }; - -const MODE_BREAK = 1; -const MODE_FLAT = 2; - -function rootIndent() { - return { - indent: 0, - align: { - spaces: 0, - tabs: 0 - } - }; -} - -function makeIndent(ind) { - return { - indent: ind.indent + 1, - align: ind.align - }; -} - -function makeAlign(ind, n) { - if (n === -Infinity) { - return { - indent: 0, - align: { - spaces: 0, - tabs: 0 - } - }; - } - - return { - indent: ind.indent, - align: { - spaces: ind.align.spaces + n, - tabs: ind.align.tabs + (n ? 1 : 0) - } - }; -} - -function fits(next, restCommands, width) { - let restIdx = restCommands.length; - const cmds = [next]; - while (width >= 0) { - if (cmds.length === 0) { - if (restIdx === 0) { - return true; - } else { - cmds.push(restCommands[restIdx - 1]); - - restIdx--; - - continue; - } - } - - const x = cmds.pop(); - const ind = x[0]; - const mode = x[1]; - const doc = x[2]; - - if (typeof doc === "string") { - width -= doc.length; - } else { - switch (doc.type) { - case "concat": - for (var i = doc.parts.length - 1; i >= 0; i--) { - cmds.push([ind, mode, doc.parts[i]]); - } - - break; - case "indent": - cmds.push([makeIndent(ind), mode, doc.contents]); - - break; - case "align": - cmds.push([makeAlign(ind, doc.n), mode, doc.contents]); - - break; - case "group": - cmds.push([ind, doc.break ? MODE_BREAK : mode, doc.contents]); - - break; - case "if-break": - if (mode === MODE_BREAK) { - if (doc.breakContents) { - cmds.push([ind, mode, doc.breakContents]); - } - } - if (mode === MODE_FLAT) { - if (doc.flatContents) { - cmds.push([ind, mode, doc.flatContents]); - } - } - - break; - case "line": - switch (mode) { - // fallthrough - case MODE_FLAT: - if (!doc.hard) { - if (!doc.soft) { - width -= 1; - } - - break; - } - - case MODE_BREAK: - return true; - } - break; - } - } - } - return false; -} - -function printDocToString$1(doc, options) { - let width = options.printWidth; - let newLine = options.newLine || "\n"; - let pos = 0; - // cmds is basically a stack. We've turned a recursive call into a - // while loop which is much faster. The while loop below adds new - // cmds to the array instead of recursively calling `print`. - let cmds = [[rootIndent(), MODE_BREAK, doc]]; - let out = []; - let shouldRemeasure = false; - let lineSuffix = []; - - while (cmds.length !== 0) { - const x = cmds.pop(); - const ind = x[0]; - const mode = x[1]; - const doc = x[2]; - - if (typeof doc === "string") { - out.push(doc); - - pos += doc.length; - } else { - switch (doc.type) { - case "concat": - for (var i = doc.parts.length - 1; i >= 0; i--) { - cmds.push([ind, mode, doc.parts[i]]); - } - - break; - case "indent": - cmds.push([makeIndent(ind), mode, doc.contents]); - - break; - case "align": - cmds.push([makeAlign(ind, doc.n), mode, doc.contents]); - - break; - case "group": - switch (mode) { - // fallthrough - case MODE_FLAT: - if (!shouldRemeasure) { - cmds.push([ - ind, - doc.break ? MODE_BREAK : MODE_FLAT, - doc.contents - ]); - - break; - } - - case MODE_BREAK: - shouldRemeasure = false; - - const next = [ind, MODE_FLAT, doc.contents]; - let rem = width - pos; - - if (!doc.break && fits(next, cmds, rem)) { - cmds.push(next); - } else { - // Expanded states are a rare case where a document - // can manually provide multiple representations of - // itself. It provides an array of documents - // going from the least expanded (most flattened) - // representation first to the most expanded. If a - // group has these, we need to manually go through - // these states and find the first one that fits. - if (doc.expandedStates) { - const mostExpanded = - doc.expandedStates[doc.expandedStates.length - 1]; - - if (doc.break) { - cmds.push([ind, MODE_BREAK, mostExpanded]); - - break; - } else { - for (var i = 1; i < doc.expandedStates.length + 1; i++) { - if (i >= doc.expandedStates.length) { - cmds.push([ind, MODE_BREAK, mostExpanded]); - - break; - } else { - const state = doc.expandedStates[i]; - const cmd = [ind, MODE_FLAT, state]; - - if (fits(cmd, cmds, rem)) { - cmds.push(cmd); - - break; - } - } - } - } - } else { - cmds.push([ind, MODE_BREAK, doc.contents]); - } - } - - break; - } - break; - case "if-break": - if (mode === MODE_BREAK) { - if (doc.breakContents) { - cmds.push([ind, mode, doc.breakContents]); - } - } - if (mode === MODE_FLAT) { - if (doc.flatContents) { - cmds.push([ind, mode, doc.flatContents]); - } - } - - break; - case "line-suffix": - lineSuffix.push([ind, mode, doc.contents]); - break; - case "line-suffix-boundary": - if (lineSuffix.length > 0) { - cmds.push([ind, mode, { type: "line", hard: true }]); - } - break; - case "line": - switch (mode) { - // fallthrough - case MODE_FLAT: - if (!doc.hard) { - if (!doc.soft) { - out.push(" "); - - pos += 1; - } - - break; - } else { - // This line was forced into the output even if we - // were in flattened mode, so we need to tell the next - // group that no matter what, it needs to remeasure - // because the previous measurement didn't accurately - // capture the entire expression (this is necessary - // for nested groups) - shouldRemeasure = true; - } - - case MODE_BREAK: - if (lineSuffix.length) { - cmds.push([ind, mode, doc]); - [].push.apply(cmds, lineSuffix.reverse()); - lineSuffix = []; - break; - } - - if (doc.literal) { - out.push(newLine); - pos = 0; - } else { - if (out.length > 0) { - // Trim whitespace at the end of line - while ( - out.length > 0 && - out[out.length - 1].match(/^[^\S\n]*$/) - ) { - out.pop(); - } - - out[out.length - 1] = out[out.length - 1].replace( - /[^\S\n]*$/, - "" - ); - } - - let length = ind.indent * options.tabWidth + ind.align.spaces; - let indentString = options.useTabs - ? "\t".repeat(ind.indent + ind.align.tabs) - : " ".repeat(length); - out.push(newLine + indentString); - pos = length; - } - break; - } - break; - default: - } - } - } - return out.join(""); -} - -var docPrinter = { printDocToString: printDocToString$1 }; - -var index$28 = { - "aliceblue": [240, 248, 255], - "antiquewhite": [250, 235, 215], - "aqua": [0, 255, 255], - "aquamarine": [127, 255, 212], - "azure": [240, 255, 255], - "beige": [245, 245, 220], - "bisque": [255, 228, 196], - "black": [0, 0, 0], - "blanchedalmond": [255, 235, 205], - "blue": [0, 0, 255], - "blueviolet": [138, 43, 226], - "brown": [165, 42, 42], - "burlywood": [222, 184, 135], - "cadetblue": [95, 158, 160], - "chartreuse": [127, 255, 0], - "chocolate": [210, 105, 30], - "coral": [255, 127, 80], - "cornflowerblue": [100, 149, 237], - "cornsilk": [255, 248, 220], - "crimson": [220, 20, 60], - "cyan": [0, 255, 255], - "darkblue": [0, 0, 139], - "darkcyan": [0, 139, 139], - "darkgoldenrod": [184, 134, 11], - "darkgray": [169, 169, 169], - "darkgreen": [0, 100, 0], - "darkgrey": [169, 169, 169], - "darkkhaki": [189, 183, 107], - "darkmagenta": [139, 0, 139], - "darkolivegreen": [85, 107, 47], - "darkorange": [255, 140, 0], - "darkorchid": [153, 50, 204], - "darkred": [139, 0, 0], - "darksalmon": [233, 150, 122], - "darkseagreen": [143, 188, 143], - "darkslateblue": [72, 61, 139], - "darkslategray": [47, 79, 79], - "darkslategrey": [47, 79, 79], - "darkturquoise": [0, 206, 209], - "darkviolet": [148, 0, 211], - "deeppink": [255, 20, 147], - "deepskyblue": [0, 191, 255], - "dimgray": [105, 105, 105], - "dimgrey": [105, 105, 105], - "dodgerblue": [30, 144, 255], - "firebrick": [178, 34, 34], - "floralwhite": [255, 250, 240], - "forestgreen": [34, 139, 34], - "fuchsia": [255, 0, 255], - "gainsboro": [220, 220, 220], - "ghostwhite": [248, 248, 255], - "gold": [255, 215, 0], - "goldenrod": [218, 165, 32], - "gray": [128, 128, 128], - "green": [0, 128, 0], - "greenyellow": [173, 255, 47], - "grey": [128, 128, 128], - "honeydew": [240, 255, 240], - "hotpink": [255, 105, 180], - "indianred": [205, 92, 92], - "indigo": [75, 0, 130], - "ivory": [255, 255, 240], - "khaki": [240, 230, 140], - "lavender": [230, 230, 250], - "lavenderblush": [255, 240, 245], - "lawngreen": [124, 252, 0], - "lemonchiffon": [255, 250, 205], - "lightblue": [173, 216, 230], - "lightcoral": [240, 128, 128], - "lightcyan": [224, 255, 255], - "lightgoldenrodyellow": [250, 250, 210], - "lightgray": [211, 211, 211], - "lightgreen": [144, 238, 144], - "lightgrey": [211, 211, 211], - "lightpink": [255, 182, 193], - "lightsalmon": [255, 160, 122], - "lightseagreen": [32, 178, 170], - "lightskyblue": [135, 206, 250], - "lightslategray": [119, 136, 153], - "lightslategrey": [119, 136, 153], - "lightsteelblue": [176, 196, 222], - "lightyellow": [255, 255, 224], - "lime": [0, 255, 0], - "limegreen": [50, 205, 50], - "linen": [250, 240, 230], - "magenta": [255, 0, 255], - "maroon": [128, 0, 0], - "mediumaquamarine": [102, 205, 170], - "mediumblue": [0, 0, 205], - "mediumorchid": [186, 85, 211], - "mediumpurple": [147, 112, 219], - "mediumseagreen": [60, 179, 113], - "mediumslateblue": [123, 104, 238], - "mediumspringgreen": [0, 250, 154], - "mediumturquoise": [72, 209, 204], - "mediumvioletred": [199, 21, 133], - "midnightblue": [25, 25, 112], - "mintcream": [245, 255, 250], - "mistyrose": [255, 228, 225], - "moccasin": [255, 228, 181], - "navajowhite": [255, 222, 173], - "navy": [0, 0, 128], - "oldlace": [253, 245, 230], - "olive": [128, 128, 0], - "olivedrab": [107, 142, 35], - "orange": [255, 165, 0], - "orangered": [255, 69, 0], - "orchid": [218, 112, 214], - "palegoldenrod": [238, 232, 170], - "palegreen": [152, 251, 152], - "paleturquoise": [175, 238, 238], - "palevioletred": [219, 112, 147], - "papayawhip": [255, 239, 213], - "peachpuff": [255, 218, 185], - "peru": [205, 133, 63], - "pink": [255, 192, 203], - "plum": [221, 160, 221], - "powderblue": [176, 224, 230], - "purple": [128, 0, 128], - "rebeccapurple": [102, 51, 153], - "red": [255, 0, 0], - "rosybrown": [188, 143, 143], - "royalblue": [65, 105, 225], - "saddlebrown": [139, 69, 19], - "salmon": [250, 128, 114], - "sandybrown": [244, 164, 96], - "seagreen": [46, 139, 87], - "seashell": [255, 245, 238], - "sienna": [160, 82, 45], - "silver": [192, 192, 192], - "skyblue": [135, 206, 235], - "slateblue": [106, 90, 205], - "slategray": [112, 128, 144], - "slategrey": [112, 128, 144], - "snow": [255, 250, 250], - "springgreen": [0, 255, 127], - "steelblue": [70, 130, 180], - "tan": [210, 180, 140], - "teal": [0, 128, 128], - "thistle": [216, 191, 216], - "tomato": [255, 99, 71], - "turquoise": [64, 224, 208], - "violet": [238, 130, 238], - "wheat": [245, 222, 179], - "white": [255, 255, 255], - "whitesmoke": [245, 245, 245], - "yellow": [255, 255, 0], - "yellowgreen": [154, 205, 50] -}; - -var conversions$1 = createCommonjsModule(function (module) { -/* MIT license */ -var cssKeywords = index$28; - -// NOTE: conversions should only return primitive values (i.e. arrays, or -// values that give correct `typeof` results). -// do not use box values types (i.e. Number(), String(), etc.) - -var reverseKeywords = {}; -for (var key in cssKeywords) { - if (cssKeywords.hasOwnProperty(key)) { - reverseKeywords[cssKeywords[key]] = key; - } -} - -var convert = module.exports = { - rgb: {channels: 3, labels: 'rgb'}, - hsl: {channels: 3, labels: 'hsl'}, - hsv: {channels: 3, labels: 'hsv'}, - hwb: {channels: 3, labels: 'hwb'}, - cmyk: {channels: 4, labels: 'cmyk'}, - xyz: {channels: 3, labels: 'xyz'}, - lab: {channels: 3, labels: 'lab'}, - lch: {channels: 3, labels: 'lch'}, - hex: {channels: 1, labels: ['hex']}, - keyword: {channels: 1, labels: ['keyword']}, - ansi16: {channels: 1, labels: ['ansi16']}, - ansi256: {channels: 1, labels: ['ansi256']}, - hcg: {channels: 3, labels: ['h', 'c', 'g']}, - apple: {channels: 3, labels: ['r16', 'g16', 'b16']}, - gray: {channels: 1, labels: ['gray']} -}; - -// hide .channels and .labels properties -for (var model in convert) { - if (convert.hasOwnProperty(model)) { - if (!('channels' in convert[model])) { - throw new Error('missing channels property: ' + model); - } - - if (!('labels' in convert[model])) { - throw new Error('missing channel labels property: ' + model); - } - - if (convert[model].labels.length !== convert[model].channels) { - throw new Error('channel and label counts mismatch: ' + model); - } - - var channels = convert[model].channels; - var labels = convert[model].labels; - delete convert[model].channels; - delete convert[model].labels; - Object.defineProperty(convert[model], 'channels', {value: channels}); - Object.defineProperty(convert[model], 'labels', {value: labels}); - } -} - -convert.rgb.hsl = function (rgb) { - var r = rgb[0] / 255; - var g = rgb[1] / 255; - var b = rgb[2] / 255; - var min = Math.min(r, g, b); - var max = Math.max(r, g, b); - var delta = max - min; - var h; - var s; - var l; - - if (max === min) { - h = 0; - } else if (r === max) { - h = (g - b) / delta; - } else if (g === max) { - h = 2 + (b - r) / delta; - } else if (b === max) { - h = 4 + (r - g) / delta; - } - - h = Math.min(h * 60, 360); - - if (h < 0) { - h += 360; - } - - l = (min + max) / 2; - - if (max === min) { - s = 0; - } else if (l <= 0.5) { - s = delta / (max + min); - } else { - s = delta / (2 - max - min); - } - - return [h, s * 100, l * 100]; -}; - -convert.rgb.hsv = function (rgb) { - var r = rgb[0]; - var g = rgb[1]; - var b = rgb[2]; - var min = Math.min(r, g, b); - var max = Math.max(r, g, b); - var delta = max - min; - var h; - var s; - var v; - - if (max === 0) { - s = 0; - } else { - s = (delta / max * 1000) / 10; - } - - if (max === min) { - h = 0; - } else if (r === max) { - h = (g - b) / delta; - } else if (g === max) { - h = 2 + (b - r) / delta; - } else if (b === max) { - h = 4 + (r - g) / delta; - } - - h = Math.min(h * 60, 360); - - if (h < 0) { - h += 360; - } - - v = ((max / 255) * 1000) / 10; - - return [h, s, v]; -}; - -convert.rgb.hwb = function (rgb) { - var r = rgb[0]; - var g = rgb[1]; - var b = rgb[2]; - var h = convert.rgb.hsl(rgb)[0]; - var w = 1 / 255 * Math.min(r, Math.min(g, b)); - - b = 1 - 1 / 255 * Math.max(r, Math.max(g, b)); - - return [h, w * 100, b * 100]; -}; - -convert.rgb.cmyk = function (rgb) { - var r = rgb[0] / 255; - var g = rgb[1] / 255; - var b = rgb[2] / 255; - var c; - var m; - var y; - var k; - - k = Math.min(1 - r, 1 - g, 1 - b); - c = (1 - r - k) / (1 - k) || 0; - m = (1 - g - k) / (1 - k) || 0; - y = (1 - b - k) / (1 - k) || 0; - - return [c * 100, m * 100, y * 100, k * 100]; -}; - -/** - * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance - * */ -function comparativeDistance(x, y) { - return ( - Math.pow(x[0] - y[0], 2) + - Math.pow(x[1] - y[1], 2) + - Math.pow(x[2] - y[2], 2) - ); -} - -convert.rgb.keyword = function (rgb) { - var reversed = reverseKeywords[rgb]; - if (reversed) { - return reversed; - } - - var currentClosestDistance = Infinity; - var currentClosestKeyword; - - for (var keyword in cssKeywords) { - if (cssKeywords.hasOwnProperty(keyword)) { - var value = cssKeywords[keyword]; - - // Compute comparative distance - var distance = comparativeDistance(rgb, value); - - // Check if its less, if so set as closest - if (distance < currentClosestDistance) { - currentClosestDistance = distance; - currentClosestKeyword = keyword; - } - } - } - - return currentClosestKeyword; -}; - -convert.keyword.rgb = function (keyword) { - return cssKeywords[keyword]; -}; - -convert.rgb.xyz = function (rgb) { - var r = rgb[0] / 255; - var g = rgb[1] / 255; - var b = rgb[2] / 255; - - // assume sRGB - r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92); - g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92); - b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92); - - var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805); - var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722); - var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505); - - return [x * 100, y * 100, z * 100]; -}; - -convert.rgb.lab = function (rgb) { - var xyz = convert.rgb.xyz(rgb); - var x = xyz[0]; - var y = xyz[1]; - var z = xyz[2]; - var l; - var a; - var b; - - x /= 95.047; - y /= 100; - z /= 108.883; - - x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116); - y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116); - z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116); - - l = (116 * y) - 16; - a = 500 * (x - y); - b = 200 * (y - z); - - return [l, a, b]; -}; - -convert.hsl.rgb = function (hsl) { - var h = hsl[0] / 360; - var s = hsl[1] / 100; - var l = hsl[2] / 100; - var t1; - var t2; - var t3; - var rgb; - var val; - - if (s === 0) { - val = l * 255; - return [val, val, val]; - } - - if (l < 0.5) { - t2 = l * (1 + s); - } else { - t2 = l + s - l * s; - } - - t1 = 2 * l - t2; - - rgb = [0, 0, 0]; - for (var i = 0; i < 3; i++) { - t3 = h + 1 / 3 * -(i - 1); - if (t3 < 0) { - t3++; - } - if (t3 > 1) { - t3--; - } - - if (6 * t3 < 1) { - val = t1 + (t2 - t1) * 6 * t3; - } else if (2 * t3 < 1) { - val = t2; - } else if (3 * t3 < 2) { - val = t1 + (t2 - t1) * (2 / 3 - t3) * 6; - } else { - val = t1; - } - - rgb[i] = val * 255; - } - - return rgb; -}; - -convert.hsl.hsv = function (hsl) { - var h = hsl[0]; - var s = hsl[1] / 100; - var l = hsl[2] / 100; - var smin = s; - var lmin = Math.max(l, 0.01); - var sv; - var v; - - l *= 2; - s *= (l <= 1) ? l : 2 - l; - smin *= lmin <= 1 ? lmin : 2 - lmin; - v = (l + s) / 2; - sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s); - - return [h, sv * 100, v * 100]; -}; - -convert.hsv.rgb = function (hsv) { - var h = hsv[0] / 60; - var s = hsv[1] / 100; - var v = hsv[2] / 100; - var hi = Math.floor(h) % 6; - - var f = h - Math.floor(h); - var p = 255 * v * (1 - s); - var q = 255 * v * (1 - (s * f)); - var t = 255 * v * (1 - (s * (1 - f))); - v *= 255; - - switch (hi) { - case 0: - return [v, t, p]; - case 1: - return [q, v, p]; - case 2: - return [p, v, t]; - case 3: - return [p, q, v]; - case 4: - return [t, p, v]; - case 5: - return [v, p, q]; - } -}; - -convert.hsv.hsl = function (hsv) { - var h = hsv[0]; - var s = hsv[1] / 100; - var v = hsv[2] / 100; - var vmin = Math.max(v, 0.01); - var lmin; - var sl; - var l; - - l = (2 - s) * v; - lmin = (2 - s) * vmin; - sl = s * vmin; - sl /= (lmin <= 1) ? lmin : 2 - lmin; - sl = sl || 0; - l /= 2; - - return [h, sl * 100, l * 100]; -}; - -// http://dev.w3.org/csswg/css-color/#hwb-to-rgb -convert.hwb.rgb = function (hwb) { - var h = hwb[0] / 360; - var wh = hwb[1] / 100; - var bl = hwb[2] / 100; - var ratio = wh + bl; - var i; - var v; - var f; - var n; - - // wh + bl cant be > 1 - if (ratio > 1) { - wh /= ratio; - bl /= ratio; - } - - i = Math.floor(6 * h); - v = 1 - bl; - f = 6 * h - i; - - if ((i & 0x01) !== 0) { - f = 1 - f; - } - - n = wh + f * (v - wh); // linear interpolation - - var r; - var g; - var b; - switch (i) { - default: - case 6: - case 0: r = v; g = n; b = wh; break; - case 1: r = n; g = v; b = wh; break; - case 2: r = wh; g = v; b = n; break; - case 3: r = wh; g = n; b = v; break; - case 4: r = n; g = wh; b = v; break; - case 5: r = v; g = wh; b = n; break; - } - - return [r * 255, g * 255, b * 255]; -}; - -convert.cmyk.rgb = function (cmyk) { - var c = cmyk[0] / 100; - var m = cmyk[1] / 100; - var y = cmyk[2] / 100; - var k = cmyk[3] / 100; - var r; - var g; - var b; - - r = 1 - Math.min(1, c * (1 - k) + k); - g = 1 - Math.min(1, m * (1 - k) + k); - b = 1 - Math.min(1, y * (1 - k) + k); - - return [r * 255, g * 255, b * 255]; -}; - -convert.xyz.rgb = function (xyz) { - var x = xyz[0] / 100; - var y = xyz[1] / 100; - var z = xyz[2] / 100; - var r; - var g; - var b; - - r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986); - g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415); - b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570); - - // assume sRGB - r = r > 0.0031308 - ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055) - : r * 12.92; - - g = g > 0.0031308 - ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055) - : g * 12.92; - - b = b > 0.0031308 - ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055) - : b * 12.92; - - r = Math.min(Math.max(0, r), 1); - g = Math.min(Math.max(0, g), 1); - b = Math.min(Math.max(0, b), 1); - - return [r * 255, g * 255, b * 255]; -}; - -convert.xyz.lab = function (xyz) { - var x = xyz[0]; - var y = xyz[1]; - var z = xyz[2]; - var l; - var a; - var b; - - x /= 95.047; - y /= 100; - z /= 108.883; - - x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116); - y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116); - z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116); - - l = (116 * y) - 16; - a = 500 * (x - y); - b = 200 * (y - z); - - return [l, a, b]; -}; - -convert.lab.xyz = function (lab) { - var l = lab[0]; - var a = lab[1]; - var b = lab[2]; - var x; - var y; - var z; - - y = (l + 16) / 116; - x = a / 500 + y; - z = y - b / 200; - - var y2 = Math.pow(y, 3); - var x2 = Math.pow(x, 3); - var z2 = Math.pow(z, 3); - y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787; - x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787; - z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787; - - x *= 95.047; - y *= 100; - z *= 108.883; - - return [x, y, z]; -}; - -convert.lab.lch = function (lab) { - var l = lab[0]; - var a = lab[1]; - var b = lab[2]; - var hr; - var h; - var c; - - hr = Math.atan2(b, a); - h = hr * 360 / 2 / Math.PI; - - if (h < 0) { - h += 360; - } - - c = Math.sqrt(a * a + b * b); - - return [l, c, h]; -}; - -convert.lch.lab = function (lch) { - var l = lch[0]; - var c = lch[1]; - var h = lch[2]; - var a; - var b; - var hr; - - hr = h / 360 * 2 * Math.PI; - a = c * Math.cos(hr); - b = c * Math.sin(hr); - - return [l, a, b]; -}; - -convert.rgb.ansi16 = function (args) { - var r = args[0]; - var g = args[1]; - var b = args[2]; - var value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization - - value = Math.round(value / 50); - - if (value === 0) { - return 30; - } - - var ansi = 30 - + ((Math.round(b / 255) << 2) - | (Math.round(g / 255) << 1) - | Math.round(r / 255)); - - if (value === 2) { - ansi += 60; - } - - return ansi; -}; - -convert.hsv.ansi16 = function (args) { - // optimization here; we already know the value and don't need to get - // it converted for us. - return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]); -}; - -convert.rgb.ansi256 = function (args) { - var r = args[0]; - var g = args[1]; - var b = args[2]; - - // we use the extended greyscale palette here, with the exception of - // black and white. normal palette only has 4 greyscale shades. - if (r === g && g === b) { - if (r < 8) { - return 16; - } - - if (r > 248) { - return 231; - } - - return Math.round(((r - 8) / 247) * 24) + 232; - } - - var ansi = 16 - + (36 * Math.round(r / 255 * 5)) - + (6 * Math.round(g / 255 * 5)) - + Math.round(b / 255 * 5); - - return ansi; -}; - -convert.ansi16.rgb = function (args) { - var color = args % 10; - - // handle greyscale - if (color === 0 || color === 7) { - if (args > 50) { - color += 3.5; - } - - color = color / 10.5 * 255; - - return [color, color, color]; - } - - var mult = (~~(args > 50) + 1) * 0.5; - var r = ((color & 1) * mult) * 255; - var g = (((color >> 1) & 1) * mult) * 255; - var b = (((color >> 2) & 1) * mult) * 255; - - return [r, g, b]; -}; - -convert.ansi256.rgb = function (args) { - // handle greyscale - if (args >= 232) { - var c = (args - 232) * 10 + 8; - return [c, c, c]; - } - - args -= 16; - - var rem; - var r = Math.floor(args / 36) / 5 * 255; - var g = Math.floor((rem = args % 36) / 6) / 5 * 255; - var b = (rem % 6) / 5 * 255; - - return [r, g, b]; -}; - -convert.rgb.hex = function (args) { - var integer = ((Math.round(args[0]) & 0xFF) << 16) - + ((Math.round(args[1]) & 0xFF) << 8) - + (Math.round(args[2]) & 0xFF); - - var string = integer.toString(16).toUpperCase(); - return '000000'.substring(string.length) + string; -}; - -convert.hex.rgb = function (args) { - var match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i); - if (!match) { - return [0, 0, 0]; - } - - var colorString = match[0]; - - if (match[0].length === 3) { - colorString = colorString.split('').map(function (char) { - return char + char; - }).join(''); - } - - var integer = parseInt(colorString, 16); - var r = (integer >> 16) & 0xFF; - var g = (integer >> 8) & 0xFF; - var b = integer & 0xFF; - - return [r, g, b]; -}; - -convert.rgb.hcg = function (rgb) { - var r = rgb[0] / 255; - var g = rgb[1] / 255; - var b = rgb[2] / 255; - var max = Math.max(Math.max(r, g), b); - var min = Math.min(Math.min(r, g), b); - var chroma = (max - min); - var grayscale; - var hue; - - if (chroma < 1) { - grayscale = min / (1 - chroma); - } else { - grayscale = 0; - } - - if (chroma <= 0) { - hue = 0; - } else - if (max === r) { - hue = ((g - b) / chroma) % 6; - } else - if (max === g) { - hue = 2 + (b - r) / chroma; - } else { - hue = 4 + (r - g) / chroma + 4; - } - - hue /= 6; - hue %= 1; - - return [hue * 360, chroma * 100, grayscale * 100]; -}; - -convert.hsl.hcg = function (hsl) { - var s = hsl[1] / 100; - var l = hsl[2] / 100; - var c = 1; - var f = 0; - - if (l < 0.5) { - c = 2.0 * s * l; - } else { - c = 2.0 * s * (1.0 - l); - } - - if (c < 1.0) { - f = (l - 0.5 * c) / (1.0 - c); - } - - return [hsl[0], c * 100, f * 100]; -}; - -convert.hsv.hcg = function (hsv) { - var s = hsv[1] / 100; - var v = hsv[2] / 100; - - var c = s * v; - var f = 0; - - if (c < 1.0) { - f = (v - c) / (1 - c); - } - - return [hsv[0], c * 100, f * 100]; -}; - -convert.hcg.rgb = function (hcg) { - var h = hcg[0] / 360; - var c = hcg[1] / 100; - var g = hcg[2] / 100; - - if (c === 0.0) { - return [g * 255, g * 255, g * 255]; - } - - var pure = [0, 0, 0]; - var hi = (h % 1) * 6; - var v = hi % 1; - var w = 1 - v; - var mg = 0; - - switch (Math.floor(hi)) { - case 0: - pure[0] = 1; pure[1] = v; pure[2] = 0; break; - case 1: - pure[0] = w; pure[1] = 1; pure[2] = 0; break; - case 2: - pure[0] = 0; pure[1] = 1; pure[2] = v; break; - case 3: - pure[0] = 0; pure[1] = w; pure[2] = 1; break; - case 4: - pure[0] = v; pure[1] = 0; pure[2] = 1; break; - default: - pure[0] = 1; pure[1] = 0; pure[2] = w; - } - - mg = (1.0 - c) * g; - - return [ - (c * pure[0] + mg) * 255, - (c * pure[1] + mg) * 255, - (c * pure[2] + mg) * 255 - ]; -}; - -convert.hcg.hsv = function (hcg) { - var c = hcg[1] / 100; - var g = hcg[2] / 100; - - var v = c + g * (1.0 - c); - var f = 0; - - if (v > 0.0) { - f = c / v; - } - - return [hcg[0], f * 100, v * 100]; -}; - -convert.hcg.hsl = function (hcg) { - var c = hcg[1] / 100; - var g = hcg[2] / 100; - - var l = g * (1.0 - c) + 0.5 * c; - var s = 0; - - if (l > 0.0 && l < 0.5) { - s = c / (2 * l); - } else - if (l >= 0.5 && l < 1.0) { - s = c / (2 * (1 - l)); - } - - return [hcg[0], s * 100, l * 100]; -}; - -convert.hcg.hwb = function (hcg) { - var c = hcg[1] / 100; - var g = hcg[2] / 100; - var v = c + g * (1.0 - c); - return [hcg[0], (v - c) * 100, (1 - v) * 100]; -}; - -convert.hwb.hcg = function (hwb) { - var w = hwb[1] / 100; - var b = hwb[2] / 100; - var v = 1 - b; - var c = v - w; - var g = 0; - - if (c < 1) { - g = (v - c) / (1 - c); - } - - return [hwb[0], c * 100, g * 100]; -}; - -convert.apple.rgb = function (apple) { - return [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255]; -}; - -convert.rgb.apple = function (rgb) { - return [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535]; -}; - -convert.gray.rgb = function (args) { - return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255]; -}; - -convert.gray.hsl = convert.gray.hsv = function (args) { - return [0, 0, args[0]]; -}; - -convert.gray.hwb = function (gray) { - return [0, 100, gray[0]]; -}; - -convert.gray.cmyk = function (gray) { - return [0, 0, 0, gray[0]]; -}; - -convert.gray.lab = function (gray) { - return [gray[0], 0, 0]; -}; - -convert.gray.hex = function (gray) { - var val = Math.round(gray[0] / 100 * 255) & 0xFF; - var integer = (val << 16) + (val << 8) + val; - - var string = integer.toString(16).toUpperCase(); - return '000000'.substring(string.length) + string; -}; - -convert.rgb.gray = function (rgb) { - var val = (rgb[0] + rgb[1] + rgb[2]) / 3; - return [val / 255 * 100]; -}; -}); - -var conversions$3 = conversions$1; - -/* - this function routes a model to all other models. - - all functions that are routed have a property `.conversion` attached - to the returned synthetic function. This property is an array - of strings, each with the steps in between the 'from' and 'to' - color models (inclusive). - - conversions that are not possible simply are not included. -*/ - -// https://jsperf.com/object-keys-vs-for-in-with-closure/3 -var models$1 = Object.keys(conversions$3); - -function buildGraph() { - var graph = {}; - - for (var len = models$1.length, i = 0; i < len; i++) { - graph[models$1[i]] = { - // http://jsperf.com/1-vs-infinity - // micro-opt, but this is simple. - distance: -1, - parent: null - }; - } - - return graph; -} - -// https://en.wikipedia.org/wiki/Breadth-first_search -function deriveBFS(fromModel) { - var graph = buildGraph(); - var queue = [fromModel]; // unshift -> queue -> pop - - graph[fromModel].distance = 0; - - while (queue.length) { - var current = queue.pop(); - var adjacents = Object.keys(conversions$3[current]); - - for (var len = adjacents.length, i = 0; i < len; i++) { - var adjacent = adjacents[i]; - var node = graph[adjacent]; - - if (node.distance === -1) { - node.distance = graph[current].distance + 1; - node.parent = current; - queue.unshift(adjacent); - } - } - } - - return graph; -} - -function link(from, to) { - return function (args) { - return to(from(args)); - }; -} - -function wrapConversion(toModel, graph) { - var path = [graph[toModel].parent, toModel]; - var fn = conversions$3[graph[toModel].parent][toModel]; - - var cur = graph[toModel].parent; - while (graph[cur].parent) { - path.unshift(graph[cur].parent); - fn = link(conversions$3[graph[cur].parent][cur], fn); - cur = graph[cur].parent; - } - - fn.conversion = path; - return fn; -} - -var route$1 = function (fromModel) { - var graph = deriveBFS(fromModel); - var conversion = {}; - - var models = Object.keys(graph); - for (var len = models.length, i = 0; i < len; i++) { - var toModel = models[i]; - var node = graph[toModel]; - - if (node.parent === null) { - // no possible conversion, or this node is the source model. - continue; - } - - conversion[toModel] = wrapConversion(toModel, graph); - } - - return conversion; -}; - -var conversions = conversions$1; -var route = route$1; - -var convert = {}; - -var models = Object.keys(conversions); - -function wrapRaw(fn) { - var wrappedFn = function (args) { - if (args === undefined || args === null) { - return args; - } - - if (arguments.length > 1) { - args = Array.prototype.slice.call(arguments); - } - - return fn(args); - }; - - // preserve .conversion property if there is one - if ('conversion' in fn) { - wrappedFn.conversion = fn.conversion; - } - - return wrappedFn; -} - -function wrapRounded(fn) { - var wrappedFn = function (args) { - if (args === undefined || args === null) { - return args; - } - - if (arguments.length > 1) { - args = Array.prototype.slice.call(arguments); - } - - var result = fn(args); - - // we're assuming the result is an array here. - // see notice in conversions.js; don't use box types - // in conversion functions. - if (typeof result === 'object') { - for (var len = result.length, i = 0; i < len; i++) { - result[i] = Math.round(result[i]); - } - } - - return result; - }; - - // preserve .conversion property if there is one - if ('conversion' in fn) { - wrappedFn.conversion = fn.conversion; - } - - return wrappedFn; -} - -models.forEach(function (fromModel) { - convert[fromModel] = {}; - - Object.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels}); - Object.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels}); - - var routes = route(fromModel); - var routeModels = Object.keys(routes); - - routeModels.forEach(function (toModel) { - var fn = routes[toModel]; - - convert[fromModel][toModel] = wrapRounded(fn); - convert[fromModel][toModel].raw = wrapRaw(fn); - }); -}); - -var index$26 = convert; - -var index$24 = createCommonjsModule(function (module) { -'use strict'; -const colorConvert = index$26; - -const wrapAnsi16 = (fn, offset) => function () { - const code = fn.apply(colorConvert, arguments); - return `\u001B[${code + offset}m`; -}; - -const wrapAnsi256 = (fn, offset) => function () { - const code = fn.apply(colorConvert, arguments); - return `\u001B[${38 + offset};5;${code}m`; -}; - -const wrapAnsi16m = (fn, offset) => function () { - const rgb = fn.apply(colorConvert, arguments); - return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`; -}; - -function assembleStyles() { - const styles = { - modifier: { - reset: [0, 0], - // 21 isn't widely supported and 22 does the same thing - bold: [1, 22], - dim: [2, 22], - italic: [3, 23], - underline: [4, 24], - inverse: [7, 27], - hidden: [8, 28], - strikethrough: [9, 29] - }, - color: { - black: [30, 39], - red: [31, 39], - green: [32, 39], - yellow: [33, 39], - blue: [34, 39], - magenta: [35, 39], - cyan: [36, 39], - white: [37, 39], - gray: [90, 39] - }, - bgColor: { - bgBlack: [40, 49], - bgRed: [41, 49], - bgGreen: [42, 49], - bgYellow: [43, 49], - bgBlue: [44, 49], - bgMagenta: [45, 49], - bgCyan: [46, 49], - bgWhite: [47, 49] - } - }; - - // fix humans - styles.color.grey = styles.color.gray; - - Object.keys(styles).forEach(groupName => { - const group = styles[groupName]; - - Object.keys(group).forEach(styleName => { - const style = group[styleName]; - - styles[styleName] = group[styleName] = { - open: `\u001B[${style[0]}m`, - close: `\u001B[${style[1]}m` - }; - }); - - Object.defineProperty(styles, groupName, { - value: group, - enumerable: false - }); - }); - - const rgb2rgb = (r, g, b) => [r, g, b]; - - styles.color.close = '\u001B[39m'; - styles.bgColor.close = '\u001B[49m'; - - styles.color.ansi = {}; - styles.color.ansi256 = {}; - styles.color.ansi16m = { - rgb: wrapAnsi16m(rgb2rgb, 0) - }; - - styles.bgColor.ansi = {}; - styles.bgColor.ansi256 = {}; - styles.bgColor.ansi16m = { - rgb: wrapAnsi16m(rgb2rgb, 10) - }; - - for (const key of Object.keys(colorConvert)) { - if (typeof colorConvert[key] !== 'object') { - continue; - } - - const suite = colorConvert[key]; - - if ('ansi16' in suite) { - styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0); - styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10); - } - - if ('ansi256' in suite) { - styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0); - styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10); - } - - if ('rgb' in suite) { - styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0); - styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10); - } - } - - return styles; -} - -Object.defineProperty(module, 'exports', { - enumerable: true, - get: assembleStyles -}); -}); - -const style = index$24; - -const toString$1 = Object.prototype.toString; -const toISOString = Date.prototype.toISOString; -const errorToString = Error.prototype.toString; -const regExpToString = RegExp.prototype.toString; -const symbolToString = Symbol.prototype.toString; - -const SYMBOL_REGEXP = /^Symbol\((.*)\)(.*)$/; -const NEWLINE_REGEXP = /\n/ig; - -const getSymbols = Object.getOwnPropertySymbols || (obj => []); - -function isToStringedArrayType(toStringed) { - return ( - toStringed === '[object Array]' || - toStringed === '[object ArrayBuffer]' || - toStringed === '[object DataView]' || - toStringed === '[object Float32Array]' || - toStringed === '[object Float64Array]' || - toStringed === '[object Int8Array]' || - toStringed === '[object Int16Array]' || - toStringed === '[object Int32Array]' || - toStringed === '[object Uint8Array]' || - toStringed === '[object Uint8ClampedArray]' || - toStringed === '[object Uint16Array]' || - toStringed === '[object Uint32Array]'); - -} - -function printNumber$1(val) { - if (val != +val) { - return 'NaN'; - } - const isNegativeZero = val === 0 && 1 / val < 0; - return isNegativeZero ? '-0' : '' + val; -} - -function printFunction(val, printFunctionName) { - if (!printFunctionName) { - return '[Function]'; - } else if (val.name === '') { - return '[Function anonymous]'; - } else { - return '[Function ' + val.name + ']'; - } -} - -function printSymbol(val) { - return symbolToString.call(val).replace(SYMBOL_REGEXP, 'Symbol($1)'); -} - -function printError(val) { - return '[' + errorToString.call(val) + ']'; -} - -function printBasicValue(val, printFunctionName, escapeRegex) { - if (val === true || val === false) { - return '' + val; - } - if (val === undefined) { - return 'undefined'; - } - if (val === null) { - return 'null'; - } - - const typeOf = typeof val; - - if (typeOf === 'number') { - return printNumber$1(val); - } - if (typeOf === 'string') { - return '"' + val.replace(/"|\\/g, '\\$&') + '"'; - } - if (typeOf === 'function') { - return printFunction(val, printFunctionName); - } - if (typeOf === 'symbol') { - return printSymbol(val); - } - - const toStringed = toString$1.call(val); - - if (toStringed === '[object WeakMap]') { - return 'WeakMap {}'; - } - if (toStringed === '[object WeakSet]') { - return 'WeakSet {}'; - } - if (toStringed === '[object Function]' || toStringed === '[object GeneratorFunction]') { - return printFunction(val, printFunctionName); - } - if (toStringed === '[object Symbol]') { - return printSymbol(val); - } - if (toStringed === '[object Date]') { - return toISOString.call(val); - } - if (toStringed === '[object Error]') { - return printError(val); - } - if (toStringed === '[object RegExp]') { - if (escapeRegex) { - // https://github.com/benjamingr/RegExp.escape/blob/master/polyfill.js - return regExpToString.call(val).replace(/[\\^$*+?.()|[\]{}]/g, '\\$&'); - } - return regExpToString.call(val); - } - if (toStringed === '[object Arguments]' && val.length === 0) { - return 'Arguments []'; - } - if (isToStringedArrayType(toStringed) && val.length === 0) { - return val.constructor.name + ' []'; - } - - if (val instanceof Error) { - return printError(val); - } - - return false; -} - -function printList(list, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors) { - let body = ''; - - if (list.length) { - body += edgeSpacing; - - const innerIndent = prevIndent + indent; - - for (let i = 0; i < list.length; i++) { - body += innerIndent + print(list[i], indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); - - if (i < list.length - 1) { - body += ',' + spacing; - } - } - - body += (min ? '' : ',') + edgeSpacing + prevIndent; - } - - return '[' + body + ']'; -} - -function printArguments(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors) { - return (min ? '' : 'Arguments ') + printList(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); -} - -function printArray(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors) { - return (min ? '' : val.constructor.name + ' ') + printList(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); -} - -function printMap(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors) { - let result = 'Map {'; - const iterator = val.entries(); - let current = iterator.next(); - - if (!current.done) { - result += edgeSpacing; - - const innerIndent = prevIndent + indent; - - while (!current.done) { - const key = print(current.value[0], indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); - const value = print(current.value[1], indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); - - result += innerIndent + key + ' => ' + value; - - current = iterator.next(); - - if (!current.done) { - result += ',' + spacing; - } - } - - result += (min ? '' : ',') + edgeSpacing + prevIndent; - } - - return result + '}'; -} - -function printObject(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors) { - const constructor = min ? '' : val.constructor ? val.constructor.name + ' ' : 'Object '; - let result = constructor + '{'; - let keys = Object.keys(val).sort(); - const symbols = getSymbols(val); - - if (symbols.length) { - keys = keys. - filter(key => !(typeof key === 'symbol' || toString$1.call(key) === '[object Symbol]')). - concat(symbols); - } - - if (keys.length) { - result += edgeSpacing; - - const innerIndent = prevIndent + indent; - - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const name = print(key, indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); - const value = print(val[key], indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); - - result += innerIndent + name + ': ' + value; - - if (i < keys.length - 1) { - result += ',' + spacing; - } - } - - result += (min ? '' : ',') + edgeSpacing + prevIndent; - } - - return result + '}'; -} - -function printSet(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors) { - let result = 'Set {'; - const iterator = val.entries(); - let current = iterator.next(); - - if (!current.done) { - result += edgeSpacing; - - const innerIndent = prevIndent + indent; - - while (!current.done) { - result += innerIndent + print(current.value[1], indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); - - current = iterator.next(); - - if (!current.done) { - result += ',' + spacing; - } - } - - result += (min ? '' : ',') + edgeSpacing + prevIndent; - } - - return result + '}'; -} - -function printComplexValue(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors) { - refs = refs.slice(); - if (refs.indexOf(val) > -1) { - return '[Circular]'; - } else { - refs.push(val); - } - - currentDepth++; - - const hitMaxDepth = currentDepth > maxDepth; - - if (callToJSON && !hitMaxDepth && val.toJSON && typeof val.toJSON === 'function') { - return print(val.toJSON(), indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); - } - - const toStringed = toString$1.call(val); - if (toStringed === '[object Arguments]') { - return hitMaxDepth ? '[Arguments]' : printArguments(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); - } else if (isToStringedArrayType(toStringed)) { - return hitMaxDepth ? '[Array]' : printArray(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); - } else if (toStringed === '[object Map]') { - return hitMaxDepth ? '[Map]' : printMap(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); - } else if (toStringed === '[object Set]') { - return hitMaxDepth ? '[Set]' : printSet(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); - } - - return hitMaxDepth ? '[Object]' : printObject(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); -} - -function printPlugin(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors) { - let match = false; - let plugin; - - for (let p = 0; p < plugins.length; p++) { - plugin = plugins[p]; - - if (plugin.test(val)) { - match = true; - break; - } - } - - if (!match) { - return false; - } - - function boundPrint(val) { - return print(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); - } - - function boundIndent(str) { - const indentation = prevIndent + indent; - return indentation + str.replace(NEWLINE_REGEXP, '\n' + indentation); - } - - const opts = { - edgeSpacing, - min, - spacing }; - - return plugin.print(val, boundPrint, boundIndent, opts, colors); -} - -function print(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors) { - const basic = printBasicValue(val, printFunctionName, escapeRegex); - if (basic) { - return basic; - } - - const plugin = printPlugin(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); - if (plugin) { - return plugin; - } - - return printComplexValue(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min, callToJSON, printFunctionName, escapeRegex, colors); -} - -const DEFAULTS = { - callToJSON: true, - escapeRegex: false, - highlight: false, - indent: 2, - maxDepth: Infinity, - min: false, - plugins: [], - printFunctionName: true, - theme: { - content: 'reset', - prop: 'yellow', - tag: 'cyan', - value: 'green' } }; - - - -function validateOptions(opts) { - Object.keys(opts).forEach(key => { - if (!DEFAULTS.hasOwnProperty(key)) { - throw new Error('prettyFormat: Invalid option: ' + key); - } - }); - - if (opts.min && opts.indent !== undefined && opts.indent !== 0) { - throw new Error('prettyFormat: Cannot run with min option and indent'); - } -} - -function normalizeOptions$1(opts) { - const result = {}; - - Object.keys(DEFAULTS).forEach(key => - result[key] = opts.hasOwnProperty(key) ? opts[key] : DEFAULTS[key]); - - - if (result.min) { - result.indent = 0; - } - - return result; -} - -function createIndent(indent) { - return new Array(indent + 1).join(' '); -} - -function prettyFormat(val, opts) { - if (!opts) { - opts = DEFAULTS; - } else { - validateOptions(opts); - opts = normalizeOptions$1(opts); - } - - const colors = {}; - Object.keys(opts.theme).forEach(key => { - if (opts.highlight) { - colors[key] = style[opts.theme[key]]; - } else { - colors[key] = { close: '', open: '' }; - } - }); - - let indent; - let refs; - const prevIndent = ''; - const currentDepth = 0; - const spacing = opts.min ? ' ' : '\n'; - const edgeSpacing = opts.min ? '' : '\n'; - - if (opts && opts.plugins.length) { - indent = createIndent(opts.indent); - refs = []; - const pluginsResult = printPlugin(val, indent, prevIndent, spacing, edgeSpacing, refs, opts.maxDepth, currentDepth, opts.plugins, opts.min, opts.callToJSON, opts.printFunctionName, opts.escapeRegex, colors); - if (pluginsResult) { - return pluginsResult; - } - } - - const basicResult = printBasicValue(val, opts.printFunctionName, opts.escapeRegex); - if (basicResult) { - return basicResult; - } - - if (!indent) { - indent = createIndent(opts.indent); - } - if (!refs) { - refs = []; - } - return printComplexValue(val, indent, prevIndent, spacing, edgeSpacing, refs, opts.maxDepth, currentDepth, opts.plugins, opts.min, opts.callToJSON, opts.printFunctionName, opts.escapeRegex, colors); -} - -var index$22 = prettyFormat; - -/* eslint-disable no-nested-ternary */ -var arr = []; -var charCodeCache = []; - -var index$30 = function (a, b) { - if (a === b) { - return 0; - } - - var aLen = a.length; - var bLen = b.length; - - if (aLen === 0) { - return bLen; - } - - if (bLen === 0) { - return aLen; - } - - var bCharCode; - var ret; - var tmp; - var tmp2; - var i = 0; - var j = 0; - - while (i < aLen) { - charCodeCache[i] = a.charCodeAt(i); - arr[i] = ++i; - } - - while (j < bLen) { - bCharCode = b.charCodeAt(j); - tmp = j++; - ret = j; - - for (i = 0; i < aLen; i++) { - tmp2 = bCharCode === charCodeCache[i] ? tmp : tmp + 1; - tmp = arr[i]; - ret = arr[i] = tmp > ret ? tmp2 > ret ? ret + 1 : tmp2 : tmp2 > tmp ? tmp + 1 : tmp2; - } - } - - return ret; -}; - -const chalk$1 = index$6; -const BULLET = chalk$1.bold('\u25cf'); -const DEPRECATION = `${BULLET} Deprecation Warning`; -const ERROR$1 = `${BULLET} Validation Error`; -const WARNING = `${BULLET} Validation Warning`; - -const format$3 = value => -typeof value === 'function' ? -value.toString() : -index$22(value, { min: true }); - -class ValidationError$1 extends Error { - - - - constructor(name, message, comment) { - super(); - comment = comment ? '\n\n' + comment : '\n'; - this.name = ''; - this.message = chalk$1.red(chalk$1.bold(name) + ':\n\n' + message + comment); - Error.captureStackTrace(this, () => {}); - }} - - -const logValidationWarning = ( -name, -message, -comment) => -{ - comment = comment ? '\n\n' + comment : '\n'; - console.warn(chalk$1.yellow(chalk$1.bold(name) + ':\n\n' + message + comment)); -}; - -const createDidYouMeanMessage = ( -unrecognized, -allowedOptions) => -{ - const leven = index$30; - const suggestion = allowedOptions.find(option => { - const steps = leven(option, unrecognized); - return steps < 3; - }); - - return suggestion ? - `Did you mean ${chalk$1.bold(format$3(suggestion))}?` : - ''; -}; - -var utils$2 = { - DEPRECATION, - ERROR: ERROR$1, - ValidationError: ValidationError$1, - WARNING, - createDidYouMeanMessage, - format: format$3, - logValidationWarning }; - -/** - * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - */ - -const asymmetricMatcher = Symbol.for('jest.asymmetricMatcher'); -const SPACE = ' '; - -class ArrayContaining extends Array {} -class ObjectContaining extends Object {} - -const printAsymmetricMatcher = ( -val, -print, -indent, -opts, -colors) => -{ - const stringedValue = val.toString(); - - if (stringedValue === 'ArrayContaining') { - const array = ArrayContaining.from(val.sample); - return opts.spacing === SPACE ? - stringedValue + SPACE + print(array) : - print(array); - } - - if (stringedValue === 'ObjectContaining') { - const object = Object.assign(new ObjectContaining(), val.sample); - return opts.spacing === SPACE ? - stringedValue + SPACE + print(object) : - print(object); - } - - if (stringedValue === 'StringMatching') { - return stringedValue + SPACE + print(val.sample); - } - - if (stringedValue === 'StringContaining') { - return stringedValue + SPACE + print(val.sample); - } - - return val.toAsymmetricMatcher(); -}; - -var AsymmetricMatcher = { - print: printAsymmetricMatcher, - test: object => object && object.$$typeof === asymmetricMatcher }; - -const chalk$2 = index$6; -const prettyFormat$1 = index$22; -const AsymmetricMatcherPlugin = AsymmetricMatcher; - -const PLUGINS = [AsymmetricMatcherPlugin]; - - - - - - - - - - - - - - - -const EXPECTED_COLOR = chalk$2.green; -const EXPECTED_BG = chalk$2.bgGreen; -const RECEIVED_COLOR = chalk$2.red; -const RECEIVED_BG = chalk$2.bgRed; - -const NUMBERS = [ -'zero', -'one', -'two', -'three', -'four', -'five', -'six', -'seven', -'eight', -'nine', -'ten', -'eleven', -'twelve', -'thirteen']; - - -// get the type of a value with handling the edge cases like `typeof []` -// and `typeof null` -const getType$1 = value => { - if (typeof value === 'undefined') { - return 'undefined'; - } else if (value === null) { - return 'null'; - } else if (Array.isArray(value)) { - return 'array'; - } else if (typeof value === 'boolean') { - return 'boolean'; - } else if (typeof value === 'function') { - return 'function'; - } else if (typeof value === 'number') { - return 'number'; - } else if (typeof value === 'string') { - return 'string'; - } else if (typeof value === 'object') { - if (value.constructor === RegExp) { - return 'regexp'; - } else if (value.constructor === Map) { - return 'map'; - } else if (value.constructor === Set) { - return 'set'; - } - return 'object'; - // $FlowFixMe https://github.com/facebook/flow/issues/1015 - } else if (typeof value === 'symbol') { - return 'symbol'; - } - - throw new Error(`value of unknown type: ${value}`); -}; - -const stringify = function (object) {let maxDepth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10; - const MAX_LENGTH = 10000; - let result; - - try { - result = prettyFormat$1(object, { - maxDepth, - min: true, - plugins: PLUGINS }); - - } catch (e) { - result = prettyFormat$1(object, { - callToJSON: false, - maxDepth, - min: true, - plugins: PLUGINS }); - - } - - return result.length >= MAX_LENGTH && maxDepth > 1 ? - stringify(object, Math.floor(maxDepth / 2)) : - result; -}; - -const highlightTrailingWhitespace = (text, bgColor) => -text.replace(/\s+$/gm, bgColor('$&')); - -const printReceived = object => highlightTrailingWhitespace( -RECEIVED_COLOR(stringify(object)), -RECEIVED_BG); - -const printExpected = value => highlightTrailingWhitespace( -EXPECTED_COLOR(stringify(value)), -EXPECTED_BG); - - -const printWithType = ( -name, -received, -print) => -{ - const type = getType$1(received); - return ( - name + ':' + ( - type !== 'null' && type !== 'undefined' ? - '\n ' + type + ': ' : - ' ') + - print(received)); - -}; - -const ensureNoExpected = (expected, matcherName) => { - matcherName || (matcherName = 'This'); - if (typeof expected !== 'undefined') { - throw new Error( - matcherHint('[.not]' + matcherName, undefined, '') + '\n\n' + - 'Matcher does not accept any arguments.\n' + - printWithType('Got', expected, printExpected)); - - } -}; - -const ensureActualIsNumber = (actual, matcherName) => { - matcherName || (matcherName = 'This matcher'); - if (typeof actual !== 'number') { - throw new Error( - matcherHint('[.not]' + matcherName) + '\n\n' + - `Actual value must be a number.\n` + - printWithType('Received', actual, printReceived)); - - } -}; - -const ensureExpectedIsNumber = (expected, matcherName) => { - matcherName || (matcherName = 'This matcher'); - if (typeof expected !== 'number') { - throw new Error( - matcherHint('[.not]' + matcherName) + '\n\n' + - `Expected value must be a number.\n` + - printWithType('Got', expected, printExpected)); - - } -}; - -const ensureNumbers = (actual, expected, matcherName) => { - ensureActualIsNumber(actual, matcherName); - ensureExpectedIsNumber(expected, matcherName); -}; - -const pluralize = -(word, count) => -(NUMBERS[count] || count) + ' ' + word + (count === 1 ? '' : 's'); - -const matcherHint = function ( -matcherName) - - - - - - -{let received = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'received';let expected = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'expected';let options = arguments[3]; - const secondArgument = options && options.secondArgument; - const isDirectExpectCall = options && options.isDirectExpectCall; - return ( - chalk$2.dim('expect' + (isDirectExpectCall ? '' : '(')) + - RECEIVED_COLOR(received) + - chalk$2.dim((isDirectExpectCall ? '' : ')') + matcherName + '(') + - EXPECTED_COLOR(expected) + ( - secondArgument ? `, ${EXPECTED_COLOR(secondArgument)}` : '') + - chalk$2.dim(')')); - -}; - -var index$32 = { - EXPECTED_BG, - EXPECTED_COLOR, - RECEIVED_BG, - RECEIVED_COLOR, - ensureActualIsNumber, - ensureExpectedIsNumber, - ensureNoExpected, - ensureNumbers, - getType: getType$1, - highlightTrailingWhitespace, - matcherHint, - pluralize, - printExpected, - printReceived, - printWithType, - stringify }; - -const chalk = index$6;var _require = -utils$2;const format$2 = _require.format; const ValidationError = _require.ValidationError; const ERROR = _require.ERROR;var _require2 = -index$32;const getType = _require2.getType; - -const errorMessage = ( -option, -received, -defaultValue, -options) => -{ - const message = - ` Option ${chalk.bold(`"${option}"`)} must be of type: - ${chalk.bold.green(getType(defaultValue))} - but instead received: - ${chalk.bold.red(getType(received))} - - Example: - { - ${chalk.bold(`"${option}"`)}: ${chalk.bold(format$2(defaultValue))} - }`; - - const comment = options.comment; - const name = options.title && options.title.error || ERROR; - - throw new ValidationError(name, message, comment); -}; - -var errors = { - ValidationError, - errorMessage }; - -var _require$2 = - - - -utils$2;const logValidationWarning$1 = _require$2.logValidationWarning; const DEPRECATION$2 = _require$2.DEPRECATION; - -const deprecationMessage = (message, options) => { - const comment = options.comment; - const name = options.title && options.title.deprecation || DEPRECATION$2; - - logValidationWarning$1(name, message, comment); -}; - -const deprecationWarning$1 = ( -config, -option, -deprecatedOptions, -options) => -{ - if (option in deprecatedOptions) { - deprecationMessage(deprecatedOptions[option](config), options); - - return true; - } - - return false; -}; - -var deprecated = { - deprecationWarning: deprecationWarning$1 }; - -const chalk$3 = index$6;var _require$3 = - - - - - -utils$2;const format$4 = _require$3.format; const logValidationWarning$2 = _require$3.logValidationWarning; const createDidYouMeanMessage$1 = _require$3.createDidYouMeanMessage; const WARNING$2 = _require$3.WARNING; - -const unknownOptionWarning$1 = ( -config, -exampleConfig, -option, -options) => -{ - const didYouMean = - createDidYouMeanMessage$1(option, Object.keys(exampleConfig)); - /* eslint-disable max-len */ - const message = - ` Unknown option ${chalk$3.bold(`"${option}"`)} with value ${chalk$3.bold(format$4(config[option]))} was found.` + ( - didYouMean && ` ${didYouMean}`) + - `\n This is probably a typing mistake. Fixing it will remove this message.`; - /* eslint-enable max-len */ - - const comment = options.comment; - const name = options.title && options.title.warning || WARNING$2; - - logValidationWarning$2(name, message, comment); -}; - -var warnings = { - unknownOptionWarning: unknownOptionWarning$1 }; - -/** - * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * - */ - -const config$1 = { - comment: ' A comment', - condition: (option, validOption) => true, - deprecate: (config, option, deprecatedOptions, options) => false, - deprecatedConfig: { - key: config => {} }, - - error: (option, received, defaultValue, options) => {}, - exampleConfig: { key: 'value', test: 'case' }, - title: { - deprecation: 'Deprecation Warning', - error: 'Validation Error', - warning: 'Validation Warning' }, - - unknown: (config, option, options) => {} }; - - -var exampleConfig$2 = config$1; - -/** - * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * - */ - -const toString$2 = Object.prototype.toString; - -const validationCondition$1 = ( -option, -validOption) => -{ - return ( - option === null || - option === undefined || - toString$2.call(option) === toString$2.call(validOption)); - -}; - -var condition = validationCondition$1; - -var _require$1 = - - - -deprecated;const deprecationWarning = _require$1.deprecationWarning;var _require2$1 = -warnings;const unknownOptionWarning = _require2$1.unknownOptionWarning;var _require3 = -errors;const errorMessage$1 = _require3.errorMessage; -const exampleConfig$1 = exampleConfig$2; -const validationCondition = condition;var _require4 = -utils$2;const ERROR$2 = _require4.ERROR; const DEPRECATION$1 = _require4.DEPRECATION; const WARNING$1 = _require4.WARNING; - -var defaultConfig$1 = { - comment: '', - condition: validationCondition, - deprecate: deprecationWarning, - deprecatedConfig: {}, - error: errorMessage$1, - exampleConfig: exampleConfig$1, - title: { - deprecation: DEPRECATION$1, - error: ERROR$2, - warning: WARNING$1 }, - - unknown: unknownOptionWarning }; - -const defaultConfig = defaultConfig$1; - -const _validate = (config, options) => { - let hasDeprecationWarnings = false; - - for (const key in config) { - if ( - options.deprecatedConfig && - key in options.deprecatedConfig && - typeof options.deprecate === 'function') - { - const isDeprecatedKey = options.deprecate( - config, - key, - options.deprecatedConfig, - options); - - - hasDeprecationWarnings = hasDeprecationWarnings || isDeprecatedKey; - } else if (hasOwnProperty.call(options.exampleConfig, key)) { - if ( - typeof options.condition === 'function' && - typeof options.error === 'function' && - !options.condition(config[key], options.exampleConfig[key])) - { - options.error(key, config[key], options.exampleConfig[key], options); - } - } else { - options.unknown && - options.unknown(config, options.exampleConfig, key, options); - } - } - - return { hasDeprecationWarnings }; -}; - -const validate$1 = (config, options) => { - _validate(options, defaultConfig); // validate against jest-validate config - - const defaultedOptions = Object.assign( - {}, - defaultConfig, - options, - { title: Object.assign({}, defaultConfig.title, options.title) });var _validate2 = - - - _validate(config, defaultedOptions);const hasDeprecationWarnings = _validate2.hasDeprecationWarnings; - - return { - hasDeprecationWarnings, - isValid: true }; - -}; - -var validate_1 = validate$1; - -var index$20 = { - ValidationError: errors.ValidationError, - createDidYouMeanMessage: utils$2.createDidYouMeanMessage, - format: utils$2.format, - logValidationWarning: utils$2.logValidationWarning, - validate: validate_1 }; - -const deprecated$2 = { - useFlowParser: config => - ` The ${'"useFlowParser"'} option is deprecated. Use ${'"parser"'} instead. - - Prettier now treats your configuration as: - { - ${'"parser"'}: ${config.useFlowParser ? '"flow"' : '"babylon"'} - }` -}; - -var deprecated_1 = deprecated$2; - -var validate = index$20.validate; -var deprecatedConfig = deprecated_1; - -var defaults = { - useTabs: false, - tabWidth: 2, - printWidth: 80, - singleQuote: false, - trailingComma: "none", - bracketSpacing: true, - jsxBracketSameLine: false, - parser: "babylon", - semi: true -}; - -var exampleConfig = Object.assign({}, defaults, { - filename: "testFilename", - printWidth: 80, - originalText: "text" -}); - -// Copy options and fill in default values. -function normalize(options) { - const normalized = Object.assign({}, options || {}); - - if (typeof normalized.trailingComma === "boolean") { - // Support a deprecated boolean type for the trailing comma config - // for a few versions. This code can be removed later. - normalized.trailingComma = "es5"; - - console.warn( - "Warning: `trailingComma` without any argument is deprecated. " + - 'Specify "none", "es5", or "all".' - ); - } - - validate(normalized, { exampleConfig, deprecatedConfig }); - - // For backward compatibility. Deprecated in 0.0.10 - if ("useFlowParser" in normalized) { - normalized.parser = normalized.useFlowParser ? "flow" : "babylon"; - delete normalized.useFlowParser; - } - - Object.keys(defaults).forEach(k => { - if (normalized[k] == null) { - normalized[k] = defaults[k]; - } - }); - - return normalized; -} - -var options = { normalize }; - -var flow_parser = createCommonjsModule(function (module, exports) { -// Generated by js_of_ocaml 2.8.1 -(function(hO){"use strict";var -oh=254,mv=43595,hM=42237,cI=43123,rk="Identifier",az=16777215,kl=43347,hL=126467,fZ=12287,mK="variance",jV=12335,cH=65370,hK=8202,fY=65007,cF=119969,cG=43071,r5=115,n6="consequent",jU=512,ek=64279,ej=8485,ei=66204,fX=120539,eh=64297,kJ="params",I=128,eg=8488,jT=68102,cE=42999,me=-43,ef=12589,oo="constructor",cD=126503,rB="yield",mu=68096,qO=-53,qP="fd ",ee=120744,fW=126560,rj=1023,fV=177972,jS=44015,qN="var",ed=65855,hJ=43776,r4=197,lh="0o",jn=43215,ec=12592,og=">",hI=12336,eb=42124,cC=120512,of="decorators",hH=8489,fU=66334,cB=68115,fT=64324,hG=67592,cA=126529,cz=43784,d$=119807,ea=8304,hF=120137,mt=69807,oe="method",md=69926,cy=65595,hC=126578,hD=64322,hE=11735,fS=178205,fR=8487,rA="Popping lex mode from empty stack",m3=43249,hB=120771,hA=67589,on=-80,d_=119972,m2="e",rz=247,om="src/parser/statement_parser.ml",d9=8239,n5=109,d8=65598,mJ=69687,fQ=94031,hy=67669,hz=43583,fP=8348,r3="Invalid binary/octal ",mc=43019,cx=42239,ry="Out_of_memory",hx=78894,cw=11687,fO=43798,ln=101,cv=40959,fM=42922,fN=8454,rx="index out of bounds",r2="package",hw=126589,cu=12438,m1=12442,qM=214,fL=120654,jR=119361,hv=67637,jQ=69743,kP="type",d7=11679,fK=119892,ct=42894,d6=11311,fJ=126521,lp=1024,cr=119993,cs=11710,cq=8543,hu=8484,r1="module",jP=43135,cp=126634,mb=43334,jO=43263,d5=67593,ol=113,r0="infinity",co=120144,ri="private",jN=70105,kk=119364,ht=11359,hs=8516,il=8254,cn=11559,fI=126551,jM=68151,rh="Property",hr=42888,ox=55296,ms="implements",cm=43255,jm=8399,kI="src/parser/type_parser.ml",ow=103,jl="raw",hq=8468,cl=65470,qL="alternate",hp=11686,mH=43712,mI=43009,fH=43470,rg=223,iX=".",ae=65535,fG=8469,kO="kind",d4=8521,jL=69631,ho=120085,iW=11743,fF=126559,fE=120655,m0=69890,jK=65023,ck=66256,d3=65479,cj=42622,ci=11310,d2=11711,fD=8305,fC=119967,jJ=68159,rf="mixins",rZ="expected *",fB=64433,ov=256,d1=42774,fA=11564,ch=68437,hn=67871,dZ=126496,d0=120145,kH="expression",re=65520,iV=66045,ai="value",rd=191,fz=12348,qK=56320,cg=119964,fy=126554,jI=119140,cf=43792,dY=68405,hm=126557,rY="Assert_failure",iU=119162,ce=67861,n4=114,fx=43807,cd=19967,dX=65663,dW=65574,n3="null",cc=64111,dV=66378,lg=123,rc="filter",rX=239,qJ="expressions",dU=11703,jk="get",mZ=69762,ok="<",rb="exported",hk=68447,hl=11630,dT=11519,cb=44031,dS=69839,fw=8286,hj=64310,hi=120084,b$=120126,ca=8335,dR=126519,rV="src/parser/expression_parser.ml",rW="(global)",ma=11502,jj=69941,dQ=42511,kj=44025,b_=126534,kG=120,mG=94032,hh=126555,b8=67646,b9=65629,jH=65076,hg=126535,ji=69881,rw="empty",b6=120134,b7=12343,fv=70084,hf=69864,dP=12703,iT=68107,b3=126520,b4=126468,b5=43519,jh=65342,dO=43615,jg=120831,jG=42654,fu=42899,b2=43359,qI="Division_by_zero",dN=119981,ft=43738,he=65140,b1=67638,ra=112,fs=68351,dM=68119,hd=43388,dL=126538,ki=70015,b0=8449,hc=120779,bZ=12686,hb=126504,rU="%d",ha=68191,mY=70018,qH=57343,fr=67591,l$="'",dK=55291,fq=11727,fp=11557,dJ=119980,mF=43014,ik=8188,kh=43599,bY=67967,bX=8319,lm="from",g$=42785,ou=789,iS=11775,g_=126502,fo=65279,kg=-48,kF="set",g9=63743,od=2048,mX=64286,ij="right",bV=120093,bW=8486,n2=-66,aj="body",bU=43743,g8=12799,rS=234,rT=227,dI=119965,q$="Invalid number ",fn=126563,g7=64296,rR=957,iR=43766,jf=8275,rQ="Lookahead.peek failed",qG=2147483647,fm=11670,fl=43815,qF=65536,oc="properties",qE="\\\\",bT=120004,dH=8238,kf=8417,dG=126591,mr="arguments",fk=11719,g6=66517,bS=126500,dF=126571,mq=246,fi=65497,fj=120571,h8="static",ot="declaration",dE=12730,g5=120597,fh=64262,jF=8420,g4=77823,lf="init",ke=66044,dD=74751,dC=195101,fg=66207,at=122,ff=126602,kd=69818,je=8276,q_="Stack_overflow",fe=11742,g3=126539,kc=8432,dB=120132,rv=950,dA=120687,g2=64311,l_=43713,iQ=119148,g1=126564,dz=120745,rP="Not_found",dy=126590,iP=44010,bR=131071,ob=-46,g0=8467,iO=43759,q9="CallExpression",fd=126583,gZ=74850,jd=43047,fa=126530,fb=40908,fc=12543,jE=69951,l9=42655,bQ=65489,bO=66503,bP=11695,gY=13311,jc=106,q8="superClass",bM=64321,bN=11567,e$=43638,q7="const",aT="typeParameters",ru="delete",os=124,bL=65615,qD="blocks",oa="false",gX=11718,gW=126556,bK=11623,kE="test",e_=64847,kb=43456,bJ=110593,dx=12538,gV=8507,le=":",af=-36,bI=55238,dw=12292,kM=192,gT=120487,gU=64967,bH=173782,jb=65074,gS=43741,bG=120074,rt="minus",bF=12548,qC=245,dv=8191,ka=71359,ja=43643,mE=42537,lk="computed",gQ=126579,j$=43391,gR=11558,bE=126523,e9=64217,ar="id",hW="as",n1="true",du=65381,gP=194559,kD=104,O=108,e8=119996,gO=66559,q6="Invalid_argument",gM=64913,gN=12448,dt=126552,mD=70066,e7=55242,j_=120781,bD=12352,bC=12295,n0=65599,ds=43714,q5="%ni",ll=-45,gL=65908,rO=-42,rN="&",l8=43560,bB=120485,rs="\\",gK=65575,or="label",dq=65495,dr=64466,iN=43204,mp=64285,gJ=67644,qB="shorthand",bA=68147,dp=67897,bz=8526,dn=12539,aL="0",e5=120712,e6=43641,by=126522,Y=248,bx=8450,bw=119974,jD=119170,rr="Sys_blocked_io",gI=67643,q4="superTypeParameters",mW=43187,j9=12440,bv=8471,dm=65473,gH=68095,l7=43013,bu=126553,ii=107,iM=65305,mo=43754,e4=110591,gG=67640,dl=64284,bt=64317,qA="protected",e3=126515,nZ=1114111,rq=-97,nY=-69,mn=43018,e2=11631,mC=44002,qz="%u",lj=105,oq="object",kC=110,dk=66499,e1=65312,dh=126633,di=120003,dj=65786,i$=66719,dg=8511,rM=57344,df=11492,e0=65487,jB=119145,jC=71351,gF=11726,l6="returnType",bs=126540,q3=-24,h6="-",ih=8205,ld="async",gE=126543,br=126550,nX=" : file already exists",j8="left",bq=120596,i_=11646,de=64325,eZ=66511,gD=120121,mm=43137,q2="Invalid legacy octal ",eY=12288,kN="typeof",l5=43697,bp=66175,qy=-60,eX=126628,j7=224,qx="public",i9=69702,i8=94078,q1="enum",dd=42895,rL="in",i7=8416,jA=917999,gC=42911,lo=250,dc=120770,db=126463,j6=43309,bo=42559,iL=119179,rp="interface",gB=66512,bn=126588,gA=68415,iK=102,mB=43010,iJ=69871,c$=55203,da=11507,eW=55215,bm=120629,j5=44013,l4="default",eV=119976,w="",nW="exportKind",q0="instanceof",l3=43586,aa=100,aG="argument",c9=126566,c_=126558,gz=119995,rK=-17,c8="src/parser/ast.ml",jz=68100,gy=126537,qw="Match_failure",eU=43790,ml=68111,eT=8505,qZ=1e3,c7=120686,jy="+",l2=42735,bk=120127,bl=65613,jx=65100,iI=69759,j4=43609,eS=65500,ro="%li",l1=42527,eR=65548,mk=71338,i6=42611,eQ=120713,E=127,bj=11694,nV=111,j3=69940,gx=64318,n$="void",eP=8584,qY="let",gw=120538,c6=120070,n_="nan",gv=126601,j2=43597,qv="\r\n",c5=68220,i5=8412,eO=42191,gu=94020,eN=177983,bi=126547,c4=11565,li="/",eL=126619,eM=65019,jw=42621,c3=120092,oj="property",c2=67839,gs=120122,gt=42890,c1=43761,jv=8256,ju=43231,jt=44011,gr=11498,iH=65103,i4=65039,gq=64274,mA=11647,mV=43273,iG=70095,n9="function",eK=43258,bh=126562,kL=6158,rn="jsError",bg=71295,c0=65344,l0=43642,mj=42606,eI=126544,eJ=64109,U="unreachable",eH=64829,qX="End_of_file",cZ=11702,eG=73727,bf=68466,qV="new",qW="Failure",mi=43764,mU="local",eF=12783,eE=11358,gp=65141,cY=65481,iF=68154,cX=12341,go=65278,gn=19893,iE=119172,eD=68031,js=43574,cW=43259,ag="camlinternalFormat.ml",qU="elements",mT=43711,qu=-34,rI="each",rJ="Sys_error",lZ=43301,mh=43442,i3=68158,eC=126584,mz=1073741823,gm=126570,j1=65295,lY=12329,cV=11263,qT=218,h5="int_of_string",rm="Unix",mS=43702,mR=43704,be=43822,lc="operator",h4="name",eB=119970,eA=65547,gl=126514,gk=65276,bd=126498,n8="callee",ez=120076,lX=43395,ey=119893,j0=917759,gj=66431,rH="*-/",lW=43709,mP=94098,gi=126546,mQ="predicate",bc=64911,nU="types",my=11505,jr=43481,jY=119154,jZ=240,iD=8203,jq=42737,gh=126624,bb=8525,lb="0x",ex=68116,mO="optional",i2=69887,cU=68029,lV=70080,nT="\n",cT=126499,ew=92728,nS=32768,gg=43311,rl=125,rG="%Li",ab=255,qS="loc",gf=120069,ba=126627,ev=8457,i1=68099,ge=119994,a$=93951,mg=69634,eu=64319,kK="source",iC=65055,i0=65062,gd=65135,a_=66303,gc=12447,gb=126536,iB=119209,nR="generator",cS=120133,et=8287,f_=74606,f$=67583,ga=66351,a9=66717,f9=64255,a8=8477,mf=-79,jp=119213,f8=8318,mx=43587,cR=65597,cQ=68023,es=68680,a7=65594,f7=43814,lU=43042,f6=120628,mN=43696,f5=12320,a6=66463,a5=42783,mw=43700,jX=43225,er=42508,a4=64316,qR="prefix",f4=43967,cP=120570,jo=66729,f3=42539,eq=8483,f1=126548,jW=69733,f2=8455,cO=68607,iA=65343,rF=252,cN=126495,kB="key",h7=" ",mM=43695,rD="RestElement",rE="Undefined_recursive_module",lT=43471,f0=11734,a3=68120,cM=43647,iZ=94094,n7=116,cL=92159,iY=42607,hX="typeAnnotation",a2=66461,cK=173823,ep=42647,cJ=120513,oi="specifiers",mL="Set.bal",qQ="%i",eo=126651,qt=-61,iz=71369,em=94111,en=43782,op="extends",rC="importKind",el=65338;function -so(b,a){throw[0,b,a]}var -ac=[0];function -Vc(b,c){function -f(a){so(ac.Undefined_recursive_module,b);}function -e(b,c,a){if(typeof -b==="number")switch(b){case -0:c[a]={fun:f};break;case -1:c[a]=[mq,f];break;default:c[a]=[];}else -switch(b[0]){case -0:c[a]=[0];for(var -d=1;d=1;a--)e[c+a]=d[b+a];return 0}function -r8(e,f,d){var -a=new -Array(d+1);a[0]=0;for(var -b=1,c=f+1;b<=d;b++,c++)a[b]=e[c];return a}function -nd(d,e,c){var -b=new -Array(c);for(var -a=0;a=a.l||a.t==2&&c>=a.c.length)){a.c=d.t==4?oF(d.c,e,c):e==0&&d.c.length==c?d.c:d.c.substr(e,c);a.t=a.c.length==a.l?0:2;}else -if(a.t==2&&f==a.c.length){a.c+=d.t==4?oF(d.c,e,c):e==0&&d.c.length==c?d.c:d.c.substr(e,c);a.t=a.c.length==a.l?0:2;}else{if(a.t!=4)m5(a);var -g=d.c,h=a.c;if(d.t==4)for(var -b=0;b>=1;if(b==0)return c;a+=a;d++;if(d==9)a.slice(0,1);}}function -h9(a){if(a.t==2)a.c+=kS(a.l-a.c.length,"\0");else -a.c=oF(a.c,0,a.c.length);a.t=0;}function -se(a){if(a.length<24){for(var -b=0;bE)return false;return true}else -return!/[^\x00-\x7f]/.test(a)}function -V4(e){for(var -j=w,c=w,g,f,h,a,b=0,i=e.length;bjU){c.substr(0,1);j+=c;c=w;j+=e.slice(b,d);}else -c+=e.slice(b,d);if(d==i)break;b=d;}a=1;if(++b=55295&&anZ)a=3;}}}}}if(a<4){b-=a;c+="\ufffd";}else -if(a>ae)c+=String.fromCharCode(55232+(a>>10),qK+(a&rj));else -c+=String.fromCharCode(a);if(c.length>lp){c.substr(0,1);j+=c;c=w;}}return j+c}function -V3(a){switch(a.t){case -9:return a.c;default:h9(a);case -0:if(se(a.c)){a.t=9;return a.c}a.t=8;case -8:return V4(a.c)}}function -aH(c,a,b){this.t=c;this.c=a;this.l=b;}aH.prototype.toString=function(){return V3(this)};function -a(a){return new -aH(0,a,a.length)}function -oE(c,b){so(c,a(b));}function -kn(a){oE(ac.Invalid_argument,a);}function -Vf(){kn(rx);}function -J(a,b){if(b>>>0>=a.length-1)Vf();return a}function -Vg(a){if(isFinite(a)){if(Math.abs(a)>=2.22507385850720138e-308)return 0;if(a!=0)return 1;return 2}return isNaN(a)?4:3}function -Vw(a,b){var -c=a[3]<<16,d=b[3]<<16;if(c>d)return 1;if(cb[2])return 1;if(a[2]b[1])return 1;if(a[1]b.c?1:0}function -kQ(a,b,h){var -d=[];for(;;){if(!(h&&a===b))if(a -instanceof -aH)if(b -instanceof -aH){if(a!==b){var -c=D(a,b);if(c!=0)return c}}else -return 1;else -if(a -instanceof -Array&&a[0]===(a[0]|0)){var -e=a[0];if(e===oh)e=0;if(e===lo){a=a[1];continue}else -if(b -instanceof -Array&&b[0]===(b[0]|0)){var -f=b[0];if(f===oh)f=0;if(f===lo){b=b[1];continue}else -if(e!=f)return e1)d.push(a,b,1);}}else -return 1}else -if(b -instanceof -aH||b -instanceof -Array&&b[0]===(b[0]|0))return-1;else -if(typeof -a!="number"&&a&&a.compare)return a.compare(b,h);else -if(typeof -a==n9)kn("equal: functional value");else{if(ab)return 1;if(a!=b){if(!h)return NaN;if(a==a)return 1;if(b==b)return-1}}if(d.length==0)return 0;var -g=d.pop();b=d.pop();a=d.pop();if(g+10)if(c==0&&(b>=a.l||a.t==2&&b>=a.c.length))if(d==0){a.c=w;a.t=2;}else{a.c=kS(b,String.fromCharCode(d));a.t=b==a.l?0:2;}else{if(a.t!=4)m5(a);for(b+=c;c0&&b===b)return b;a=a.replace(/_/g,w);b=+a;if(a.length>0&&b===b||/^[+-]?nan$/i.test(a))return b;var -c=/^ *([+-]?)0x([0-9a-f]+)\.?([0-9a-f]*)p([+-]?[0-9]+)/i.exec(a);if(c){var -d=c[3].replace(/0+$/,w),f=parseInt(c[1]+c[2]+d,16),e=(c[4]|0)-4*d.length;b=f*Math.pow(2,e);return b}if(/^\+?inf(inity)?$/i.test(a))return Infinity;if(/^-inf(inity)?$/i.test(a))return-Infinity;hY("float_of_string");}function -oD(d){d=m4(d);var -e=d.length;if(e>31)kn("format_int: format too long");var -a={justify:jy,signstyle:h6,filler:h7,alternate:false,base:0,signedconv:false,width:0,uppercase:false,sign:1,prec:-1,conv:"f"};for(var -c=0;c=0&&b<=9){a.width=a.width*10+b;c++;}c--;break;case".":a.prec=0;c++;while(b=d.charCodeAt(c)-48,b>=0&&b<=9){a.prec=a.prec*10+b;c++;}c--;case"d":case"i":a.signedconv=true;case"u":a.base=10;break;case"x":a.base=16;break;case"X":a.base=16;a.uppercase=true;break;case"o":a.base=8;break;case"e":case"f":case"g":a.signedconv=true;a.conv=b;break;case"E":case"F":case"G":a.signedconv=true;a.uppercase=true;a.conv=b.toLowerCase();break}}return a}function -oy(b,f){if(b.uppercase)f=f.toUpperCase();var -e=f.length;if(b.signedconv&&(b.sign<0||b.signstyle!=h6))e++;if(b.alternate){if(b.base==8)e+=1;if(b.base==16)e+=2;}var -c=w;if(b.justify==jy&&b.filler==h7)for(var -d=e;d=1e+21||c.toFixed(0).length>d){var -b=h-1;while(a.charAt(b)==aL)b--;if(a.charAt(b)==iX)b--;a=a.slice(0,b+1)+a.slice(h);b=a.length;if(a.charAt(b-3)==m2)a=a.slice(0,b-1)+aL+a.slice(b-1);break}else{var -f=d;if(g<0){f-=g+1;a=c.toFixed(f);}else -while(a=c.toFixed(f),a.length>d+1)f--;if(f){var -b=a.length-1;while(a.charAt(b)==aL)b--;if(a.charAt(b)==iX)b--;a=a.slice(0,b+1);}}break}return oy(e,a)}function -m6(e,c){if(m4(e)==rU)return a(w+c);var -b=oD(e);if(c<0)if(b.signedconv){b.sign=-1;c=-c;}else -c>>>=0;var -d=c.toString(b.base);if(b.prec>=0){b.filler=h7;var -f=b.prec-d.length;if(f>0)d=kS(f,aL)+d;}return oy(b,d)}var -VS=0;function -aA(){return VS++}function -r_(a,b){return+(kQ(a,b,false)>=0)}if(!Math.imul)Math.imul=function(b,a){a|=0;return((b>>16)*a<<16)+(b&ae)*a|0};var -lr=Math.imul;function -hZ(b,a){a=lr(a,3432918353|0);a=a<<15|a>>>32-15;a=lr(a,461845907);b^=a;b=b<<13|b>>>32-13;return(b+(b<<2)|0)+(3864292196|0)|0}function -Vp(b,a){var -d=a[1]|a[2]<<24,c=a[2]>>>8|a[3]<<16;b=hZ(b,c^d);return b}var -V9=Math.log2&&Math.log2(1.12355820928894744e+307)==1020;function -V8(a){if(V9)return Math.floor(Math.log2(a));var -b=0;if(a==0)return-Infinity;if(a>=1)while(a>=2){a/=2;b++;}else -while(a<1){a*=2;b--;}return b}function -r$(a){if(!isFinite(a)){if(isNaN(a))return[ab,1,0,re];return a>0?[ab,0,0,32752]:[ab,0,0,re]}var -f=a==0&&1/a==-Infinity?nS:a>=0?0:nS;if(f)a=-a;var -b=V8(a)+rj;if(b<=0){b=0;a/=Math.pow(2,-1026);}else{a/=Math.pow(2,b-1027);if(a<16){a*=2;b-=1;}if(b==0)a/=2;}var -d=Math.pow(2,24),c=a|0;a=(a-c)*d;var -e=a|0;a=(a-e)*d;var -g=a|0;c=c&15|f|b<<4;return[ab,g,e,c]}function -Vo(a,e){var -b=r$(e),d=b[1]|b[2]<<24,c=b[2]>>>8|b[3]<<16;a=hZ(a,d);a=hZ(a,c);return a}function -Vr(d,b){var -e=b.length,a,c;for(a=0;a+4<=e;a+=4){c=b[a]|b[a+1]<<8|b[a+2]<<16|b[a+3]<<24;d=hZ(d,c);}c=0;switch(e&3){case -3:c=b[a+2]<<16;case -2:c|=b[a+1]<<8;case -1:c|=b[a];d=hZ(d,c);}d^=e;return d}function -Vs(d,b){var -e=b.length,a,c;for(a=0;a+4<=e;a+=4){c=b.charCodeAt(a)|b.charCodeAt(a+1)<<8|b.charCodeAt(a+2)<<16|b.charCodeAt(a+3)<<24;d=hZ(d,c);}c=0;switch(e&3){case -3:c=b.charCodeAt(a+2)<<16;case -2:c|=b.charCodeAt(a+1)<<8;case -1:c|=b.charCodeAt(a);d=hZ(d,c);}d^=e;return d}function -Vq(a,b){switch(b.t&6){default:h9(b);case -0:a=Vs(a,b.c);break;case -2:a=Vr(a,b.c);}return a}function -Vn(a){a^=a>>>16;a=lr(a,2246822507|0);a^=a>>>13;a=lr(a,3266489909|0);a^=a>>>16;return a}var -r6=ov;function -Vm(j,k,m,l){var -f,g,h,d,c,b,a,e,i;d=k;if(d<0||d>r6)d=r6;c=j;b=m;f=[l];g=0;h=1;while(g0){a=f[g++];if(a -instanceof -Array&&a[0]===(a[0]|0))switch(a[0]){case -248:b=hZ(b,a[2]);c--;break;case -250:f[--g]=a[1];break;case -255:b=Vp(b,a);c--;break;default:var -n=a.length-1<<10|a[0];b=hZ(b,n);for(e=1,i=a.length;e=d)break;f[h++]=a[e];}break}else -if(a -instanceof -aH){b=Vq(b,a);c--;}else -if(a===(a|0)){b=hZ(b,a+a+1);c--;}else -if(a===+a){b=Vo(b,a);c--;}}b=Vn(b);return b&mz}function -VD(a){return[a[3]>>8,a[3]&ab,a[2]>>16,a[2]>>8&ab,a[2]&ab,a[1]>>16,a[1]>>8&ab,a[1]&ab]}function -Vt(d,g,a){var -c=0;function -f(a){g--;if(d<0||g<0)return;if(a -instanceof -Array&&a[0]===(a[0]|0))switch(a[0]){case -248:d--;c=c*n0+a[2]|0;break;case -250:g++;f(a);break;case -255:d--;c=c*n0+a[1]+(a[2]<<24)|0;break;default:d--;c=c*19+a[0]|0;for(var -b=a.length-1;b>0;b--)f(a[b]);}else -if(a -instanceof -aH){d--;switch(a.t&6){default:h9(a);case -0:for(var -i=a.c,e=a.l,b=0;b=0;b--)c=c*19+j[b]|0;}}f(a);return c&mz}function -V5(e){for(var -f=w,b=f,a,h,c=0,g=e.length;cjU){b.substr(0,1);f+=b;b=w;f+=e.slice(c,d);}else -b+=e.slice(c,d);if(d==g)break;c=d;}if(a>6);b+=String.fromCharCode(I|a&63);}else -if(a=qH)b+=String.fromCharCode(j7|a>>12,I|a>>6&63,I|a&63);else -if(a>=56319||c+1==g||(h=e.charCodeAt(c+1))qH)b+="\xef\xbf\xbd";else{c++;a=(a<<10)+h-56613888;b+=String.fromCharCode(jZ|a>>18,I|a>>12&63,I|a>>6&63,I|a&63);}if(b.length>lp){b.substr(0,1);f+=b;b=w;}}return f+b}function -ip(a){var -b=9;if(!se(a))b=8,a=V5(a);return new -aH(b,a,a.length)}function -Vu(a,c,k){if(!isFinite(a)){if(isNaN(a))return ip(n_);return ip(a>0?r0:"-infinity")}var -i=a==0&&1/a==-Infinity?1:a>=0?0:1;if(i)a=-a;var -d=0;if(a==0);else -if(a<1)while(a<1&&d>-1022){a*=2;d--;}else -while(a>=2){a/=2;d++;}var -j=d<0?w:jy,e=w;if(i)e=h6;else -switch(k){case -43:e=jy;break;case -32:e=h7;break;default:break}if(c>=0&&c<13){var -g=Math.pow(2,c*4);a=Math.round(a*g)/g;}var -b=a.toString(16);if(c>=0){var -h=b.indexOf(iX);if(h<0)b+=iX+kS(c,aL);else{var -f=h+1+c;if(b.length>24&az,a>>31&ae]}function -sj(d){var -c=d.length,b=new -Array(c);for(var -a=0;a>24),e=a[3]-b[3]+(d>>24);return[ab,c&az,d&az,e&ae]}function -oA(a,b){if(a[3]>b[3])return 1;if(a[3]b[2])return 1;if(a[2]b[1])return 1;if(a[1]>23;a[2]=(a[2]<<1|a[1]>>23)&az;a[1]=a[1]<<1&az;}function -VA(a){a[1]=(a[1]>>>1|a[2]<<23)&az;a[2]=(a[2]>>>1|a[3]<<23)&az;a[3]=a[3]>>>1;}function -sd(e,f){var -c=0,b=sj(e),a=sj(f),d=[ab,0,0,0];while(oA(b,a)>0){c++;sa(a);}while(c>=0){c--;sa(d);if(oA(b,a)>=0){d[1]++;b=VC(b,a);}VA(a);}return[0,d,b]}function -VE(a){return a[1]|a[2]<<24}function -Vy(a){return a[3]<<16<0}function -sb(a){var -b=-a[1],c=-a[2]+(b>>24),d=-a[3]+(c>>24);return[ab,b&az,c&az,d&ae]}function -Vx(g,c){var -a=oD(g);if(a.signedconv&&Vy(c)){a.sign=-1;c=sb(c);}var -b=w,h=m7(a.base),f="0123456789abcdef";do{var -e=sd(c,h);c=e[1];b=f.charAt(VE(e[2]))+b;}while(!Vz(c));if(a.prec>=0){a.filler=h7;var -d=a.prec-b.length;if(d>0)b=kS(d,aL)+b;}return oy(a,b)}function -p(a){return a.l}function -aJ(a,b){switch(a.t&6){default:if(b>=a.c.length)return 0;case -0:return a.c.charCodeAt(b);case -4:return a.c[b]}}function -Vv(a,b){var -c=a[1]+b[1],d=a[2]+b[2]+(c>>24),e=a[3]+b[3]+(d>>24);return[ab,c&az,d&az,e&ae]}var -sc=Math.pow(2,-24);function -VB(a,b){var -c=a[1]*b[1],d=(c*sc|0)+a[2]*b[1]+a[1]*b[2],e=(d*sc|0)+a[3]*b[1]+a[2]*b[2]+a[1]*b[3];return[ab,c&az,d&az,e&ae]}function -oB(a,b){return oA(a,b)<0}function -sl(c){var -a=0,d=p(c),b=10,e=d>0&&aJ(c,0)==45?(a++,-1):1;if(a+1=48&&a<=57)return a-48;if(a>=65&&a<=90)return a-55;if(a>=97&&a<=at)return a-87;return-1}function -m8(f){var -e=sl(f),d=e[0],i=e[1],g=e[2],h=m7(g),j=sd([ab,az,268435455,ae],h)[1],c=aJ(f,d),a=na(c);if(a<0||a>=g)hY(h5);var -b=m7(a);for(;;){d++;c=aJ(f,d);if(c==95)continue;a=na(c);if(a<0||a>=g)break;if(oB(j,b))hY(h5);a=m7(a);b=Vv(VB(h,b),a);if(oB(b,a))hY(h5);}if(d!=p(f))hY(h5);if(e[2]==10&&oB([ab,0,0,nS],b))hY(h5);if(i<0)b=sb(b);return b}function -m9(a){return(a[3]<<16)*Math.pow(2,32)+a[2]*Math.pow(2,24)+a[1]}function -h_(f){var -h=sl(f),c=h[0],i=h[1],d=h[2],g=p(f),j=-1>>>0,e=c=d)hY(h5);var -a=b;for(c++;c=d)break;a=d*a+b;if(a>j)hY(h5);}if(c!=g)hY(h5);a=i*a;if(d==10&&(a|0)!=a)hY(h5);return a|0}function -VG(a){return nd(a,1,a.length-1)}function -VH(a){return!!a}function -VI(a){return a.toString()}function -VJ(b){var -c={};for(var -a=1;a=0;a--){var -d=c[a];b=[0,d,b];}return b}function -iq(a,d){var -a=a+1|0,b=new -Array(a);b[0]=0;for(var -c=1;c>>32-b,c)}function -g(c,b,d,e,h,f,g){return a(b&d|~b&e,c,b,h,f,g)}function -h(d,b,e,c,h,f,g){return a(b&c|e&~c,d,b,h,f,g)}function -i(c,b,d,e,h,f,g){return a(b^d^e,c,b,h,f,g)}function -j(c,b,d,e,h,f,g){return a(d^(b|~e),c,b,h,f,g)}function -k(f,n){var -e=n;f[e>>2]|=I<<8*(e&3);for(e=(e&~3)+8;(e&63)<60;e+=4)f[(e>>2)-1]=0;f[(e>>2)-1]=n<<3;f[e>>2]=n>>29&536870911;var -k=[1732584193,4023233417,2562383102,271733878];for(e=0;e>8*m&ab;return o}return function(h,g,f){var -e=[];switch(h.t&6){default:h9(h);case -0:var -d=h.c;for(var -a=0;a>2]=d.charCodeAt(b)|d.charCodeAt(b+1)<<8|d.charCodeAt(b+2)<<16|d.charCodeAt(b+3)<<24;}for(;a>2]|=d.charCodeAt(a+g)<<8*(a&3);break;case -4:var -c=h.c;for(var -a=0;a>2]=c[b]|c[b+1]<<8|c[b+2]<<16|c[b+3]<<24;}for(;a>2]|=c[a+g]<<8*(a&3);}return sr(k(e,f))}}();function -hN(a){oE(ac.Sys_error,a);}function -oC(a){if(!a.opened)hN("Cannot flush a closed channel");if(a.buffer==w)return 0;if(a.output)switch(a.output.length){case -2:a.output(a,a.buffer);break;default:a.output(a.buffer);}a.buffer=w;return 0}var -ss=0;function -V$(){return new -Date().getTime()/qZ}function -oG(){return Math.floor(V$())}function -im(b){this.data=b;this.inode=ss++;var -a=oG();this.atime=a;this.mtime=a;this.ctime=a;}im.prototype={truncate:function(){this.data=ah(0);this.modified();},modified:function(){var -a=oG();this.atime=a;this.mtime=a;}};var -Vh=li;function -km(){this.content={};this.inode=ss++;var -a=oG();this.atime=a;this.mtime=a;this.ctime=a;}km.prototype={exists:function(a){return this.content[a]?1:0},mk:function(b,a){this.content[b]=a;},get:function(a){return this.content[a]},list:function(){var -a=[];for(var -b -in -this.content)a.push(b);return a},remove:function(a){delete -this.content[a];}};var -nb=new -km();nb.mk(w,new -km());function -lt(c,d,a){if(ac.fds===undefined)ac.fds=new -Array();a=a?a:{};var -b={};b.file=d;b.offset=a.append?p(d.data):0;b.flags=a;ac.fds[c]=b;ac.fd_last_idx=c;return c}lt(0,new -im(ah(0)));lt(1,new -im(ah(0)));lt(2,new -im(ah(0)));function -VN(b){var -a=ac.fds[b];if(a.flags.wronly)hN(qP+b+" is writeonly");return{file:a.file,offset:a.offset,fd:b,opened:true,refill:null}}function -V6(a){var -b=hO;if(b.process&&b.process.stdout&&b.process.stdout.write)b.process.stderr.write(a);else{if(a.charCodeAt(a.length-1)==10)a=a.substr(0,a.length-1);var -c=b.console;c&&c.error&&c.error(a);}}function -V7(a){var -b=hO;if(b.process&&b.process.stdout&&b.process.stdout.write)b.process.stdout.write(a);else{if(a.charCodeAt(a.length-1)==10)a=a.substr(0,a.length-1);var -c=b.console;c&&c.log&&c.log(a);}}var -m$=new -Array();function -VW(b,h){var -g=a(h),c=p(g),f=p(b.file.data),e=b.offset;if(e+c>=f){var -d=ah(e+c);aI(b.file.data,0,d,0,f);aI(g,0,d,e,c);b.file.data=d;}b.offset+=c;b.file.modified();return 0}function -sg(a){var -b;switch(a){case -1:b=V7;break;case -2:b=V6;break;default:b=VW;}var -d=ac.fds[a];if(d.flags.rdonly)hN(qP+a+" is readonly");var -c={file:d.file,offset:d.offset,fd:a,opened:true,buffer:w,output:b};m$[c.fd]=c;return c}function -VO(){var -a=0;for(var -b -in -m$)if(m$[b].opened)a=[0,m$[b],a];return a}function -VP(a,d,g,f){if(!a.opened)hN("Cannot output to a closed channel");var -c;if(g==0&&p(d)==f)c=d;else{c=ah(f);aI(d,g,c,0,f);}var -b=c.toString(),e=b.lastIndexOf("\n");if(e<0)a.buffer+=b;else{a.buffer+=b.substr(0,e+1);oC(a);a.buffer+=b.substr(e+1);}return 0}function -sm(a){throw a}function -VU(){sm(ac.Division_by_zero);}function -sh(b,a){if(a==0)VU();return b%a}function -kR(a,b){return+(kQ(a,b,false)!=0)}function -VR(b,a){b[0]=a;return 0}function -sk(a){return a -instanceof -Array?a[0]:a -instanceof -aH?rF:qZ}function -aU(c,b,a){ac[c+1]=b;if(a)ac[a]=b;}var -si={};function -VV(a,b){si[m4(a)]=b;return 0}function -ak(a,b){a.t&6&&h9(a);b.t&6&&h9(b);return a.c==b.c?1:0}function -sq(){kn(rx);}function -n(b,a){if(a>>>0>=b.l)sq();return aJ(b,a)}function -c(a,b){return 1-ak(a,b)}function -Z(a,c,b){b&=ab;if(a.t!=4){if(c==a.c.length){a.c+=String.fromCharCode(b);if(c+1==a.l)a.t=0;return 0}m5(a);}a.c[c]=b;return 0}function -ls(b,a,c){if(a>>>0>=b.l)sq();return Z(b,a,c)}function -VX(){return qG/4|0}function -VY(){return 0}function -V0(){return[0,a(rm),32,0]}function -VT(){sm(ac.Not_found);}function -nc(c){var -a=hO,b=c.toString();if(a.process&&a.process.env&&a.process.env[b]!=undefined)return ip(a.process.env[b]);VT();}function -V2(){var -a=new -Date()^4294967295*Math.random();return[0,a]}function -sp(a){return a}function -VQ(a){return si[a]}function -X(a){if(a -instanceof -Array)return a;if(hO.RangeError&&a -instanceof -hO.RangeError&&a.message&&a.message.match(/maximum call stack/i))return sp(ac.Stack_overflow);if(hO.InternalError&&a -instanceof -hO.InternalError&&a.message&&a.message.match(/too much recursion/i))return sp(ac.Stack_overflow);if(a -instanceof -hO.Error)return[0,VQ(rn),a];return[0,ac.Failure,ip(String(a))]}function -b(a,b){return a.length==1?a(b):io(a,[b])}function -f(a,b,c){return a.length==2?a(b,c):io(a,[b,c])}function -v(a,b,c,d){return a.length==3?a(b,c,d):io(a,[b,c,d])}function -iy(a,b,c,d,e){return a.length==4?a(b,c,d,e):io(a,[b,c,d,e])}function -ig(a,b,c,d,e,f){return a.length==5?a(b,c,d,e,f):io(a,[b,c,d,e,f])}var -h0=[Y,a(qW),-3],oH=[Y,a(q6),-4],al=[Y,a(rP),-7],z=[Y,a(rY),-11],pk=[0,0,[0,0,0,0],[0,0,0,0]],nw=[0,0,0],ny=a("\x01\x02"),nz=a("\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01"),nF=[0,0,0,0,0,1,0],qh=[0,0,0],qi=[0,1];aU(11,[Y,a(rE),-12],rE);aU(10,z,rY);aU(9,[Y,a(rr),-10],rr);aU(8,[Y,a(q_),-9],q_);aU(7,[Y,a(qw),-8],qw);aU(6,al,rP);aU(5,[Y,a(qI),-6],qI);aU(4,[Y,a(qX),-5],qX);aU(3,oH,q6);aU(2,h0,qW);aU(1,[Y,a(rJ),-2],rJ);aU(0,[Y,a(ry),-1],ry);var -sy=a("output_substring"),su=a(n1),sv=a(oa),sC=[0,a("list.ml"),rT,11],sB=a("hd"),sE=a(qE),sF=a("\\'"),sG=a("\\b"),sH=a("\\t"),sI=a("\\n"),sJ=a("\\r"),sD=a("Char.chr"),sP=a("String.contains_from / Bytes.contains_from"),sM=a("String.blit / Bytes.blit_string"),sL=a("Bytes.blit"),sK=a("String.sub / Bytes.sub"),sR=a(w),sU=a("Array.blit"),sT=a("Array.init"),sZ=a("Set.remove_min_elt"),s0=[0,0,0,0],s1=[0,0,0],s2=[0,a("set.ml"),389,18],sV=a(mL),sW=a(mL),sX=a(mL),sY=a(mL),s3=a("CamlinternalLazy.Undefined"),s8=a("Buffer.add_substring/add_subbytes"),s7=a("Buffer.add: cannot grow buffer"),tf=a("%c"),tg=a("%s"),th=a(qQ),ti=a(ro),tj=a(q5),tk=a(rG),tl=a("%f"),tm=a("%B"),tn=a("%{"),to=a("%}"),tp=a("%("),tq=a("%)"),tr=a("%a"),ts=a("%t"),tt=a("%?"),tu=a("%r"),tv=a("%_r"),tw=[0,a(ag),845,23],tH=[0,a(ag),809,21],tz=[0,a(ag),810,21],tI=[0,a(ag),813,21],tA=[0,a(ag),814,21],tJ=[0,a(ag),817,19],tB=[0,a(ag),818,19],tK=[0,a(ag),821,22],tC=[0,a(ag),822,22],tL=[0,a(ag),826,30],tD=[0,a(ag),827,30],tF=[0,a(ag),831,26],tx=[0,a(ag),832,26],tG=[0,a(ag),841,28],ty=[0,a(ag),842,28],tE=[0,a(ag),846,23],uN=a(qz),uL=[0,a(ag),1520,4],uM=a("Printf: bad conversion %["),uO=[0,a(ag),1588,39],uP=[0,a(ag),1611,31],uQ=[0,a(ag),1612,31],uR=a("Printf: bad conversion %_"),uS=a("@{"),uT=a("@["),uJ=a(n_),uK=a(iX),uH=a("neg_infinity"),uI=a(r0),uC=a("%.12g"),up=a("%nd"),uq=a("%+nd"),ur=a("% nd"),us=a(q5),ut=a("%+ni"),uu=a("% ni"),uv=a("%nx"),uw=a("%#nx"),ux=a("%nX"),uy=a("%#nX"),uz=a("%no"),uA=a("%#no"),uB=a("%nu"),uc=a("%ld"),ud=a("%+ld"),ue=a("% ld"),uf=a(ro),ug=a("%+li"),uh=a("% li"),ui=a("%lx"),uj=a("%#lx"),uk=a("%lX"),ul=a("%#lX"),um=a("%lo"),un=a("%#lo"),uo=a("%lu"),t1=a("%Ld"),t2=a("%+Ld"),t3=a("% Ld"),t4=a(rG),t5=a("%+Li"),t6=a("% Li"),t7=a("%Lx"),t8=a("%#Lx"),t9=a("%LX"),t_=a("%#LX"),t$=a("%Lo"),ua=a("%#Lo"),ub=a("%Lu"),tO=a(rU),tP=a("%+d"),tQ=a("% d"),tR=a(qQ),tS=a("%+i"),tT=a("% i"),tU=a("%x"),tV=a("%#x"),tW=a("%X"),tX=a("%#X"),tY=a("%o"),tZ=a("%#o"),t0=a(qz),s9=a("@]"),s_=a("@}"),s$=a("@?"),ta=a("@\n"),tb=a("@."),tc=a("@@"),td=a("@%"),te=a("@"),tM=a("CamlinternalFormat.Type_mismatch"),uU=a("x"),Va=a("OCAMLRUNPARAM"),U_=a("CAMLRUNPARAM"),uV=a(w),va=[3,0,3],vb=a(iX),u8=a(og),u9=a(">="),zl=a(">>>="),zm=a("|="),zn=a("^="),zo=a("&="),y$=a(ij),za=a(j8),zb=a(lc),zc=a("AssignmentExpression"),zp=a("=="),zu=a("!="),zv=a("==="),zw=a("!=="),zx=a(ok),zy=a("<="),zz=a(og),zA=a(">="),zB=a("<<"),zC=a(">>"),zD=a(">>>"),zE=a(jy),zF=a(h6),zG=a("*"),zH=a("**"),zI=a(li),zJ=a("%"),zK=a("|"),zL=a("^"),zM=a(rN),zN=a(rL),zO=a(q0),zq=a(ij),zr=a(j8),zs=a(lc),zt=a("BinaryExpression"),zP=a(mr),zQ=a(n8),zR=a(q9),zS=a(rc),zT=a(qD),zU=a("ComprehensionExpression"),zV=a(qL),zW=a(n6),zX=a(kE),zY=a("ConditionalExpression"),zZ=a(rc),z0=a(qD),z1=a("GeneratorExpression"),z2=a(mr),z3=a("Import"),z4=a(n8),z5=a(q9),z$=a("&&"),z6=a("||"),z7=a(ij),z8=a(j8),z9=a(lc),z_=a("LogicalExpression"),Aa=a(lk),Ab=a(oj),Ac=a(oq),Ad=a("MemberExpression"),Ae=a(oj),Af=a("meta"),Ag=a("MetaProperty"),Ah=a(mr),Ai=a(n8),Aj=a("NewExpression"),Ak=a(oc),Al=a("ObjectExpression"),Am=a(qJ),An=a("SequenceExpression"),Ao=a(hX),Ap=a(kH),Aq=a("TypeCastExpression"),Ar=a(aG),As=a("AwaitExpression"),At=a(h6),Ay=a(jy),Az=a("!"),AA=a("~"),AB=a(kN),AC=a(n$),AD=a(ru),AE=a("matched above"),Au=a(aG),Av=a(qR),Aw=a(lc),Ax=a("UnaryExpression"),AK=a("--"),AF=a("++"),AG=a(qR),AH=a(aG),AI=a(lc),AJ=a("UpdateExpression"),AL=a("delegate"),AM=a(aG),AN=a("YieldExpression"),AO=a(aT),AP=a(l6),AQ=a(kH),AR=a(mQ),AS=a(nR),AT=a(ld),AU=a(aj),AV=a(kJ),AW=a(ar),AX=a("FunctionDeclaration"),AY=a(aT),AZ=a(l6),A0=a(kH),A1=a(mQ),A2=a(nR),A3=a(ld),A4=a(aj),A5=a(kJ),A6=a(ar),A7=a("FunctionExpression"),A8=a(mO),A9=a(hX),A_=a(h4),A$=a(rk),Ba=a(mO),Bb=a(hX),Bc=a(h4),Bd=a(rk),Be=a(n6),Bf=a(kE),Bg=a("SwitchCase"),Bh=a(aj),Bi=a("param"),Bj=a("CatchClause"),Bk=a(aj),Bl=a("BlockStatement"),Bm=a(ar),Bn=a("DeclareVariable"),Bo=a(mQ),Bp=a(ar),Bq=a("DeclareFunction"),Br=a(op),Bs=a(aj),Bt=a(aT),Bu=a(ar),Bv=a("DeclareClass"),Bx=a(ai),Bw=a(kP),By=a(rb),Bz=a("ExportNamespaceSpecifier"),BA=a(ij),BB=a(aT),BC=a(ar),BD=a("TypeAlias"),BE=a(of),BF=a(ms),BG=a(q4),BH=a(aT),BI=a(q8),BJ=a(aj),BK=a(ar),BL=a("ClassDeclaration"),BM=a(of),BN=a(ms),BO=a(q4),BP=a(aT),BQ=a(q8),BR=a(aj),BS=a(ar),BT=a("ClassExpression"),BU=a(aT),BV=a(ar),BW=a("ClassImplements"),BX=a(aj),BY=a("ClassBody"),BZ=a(oo),B7=a(oe),B8=a(jk),B9=a(kF),B0=a(of),B1=a(lk),B2=a(h8),B3=a(kO),B4=a(ai),B5=a(kB),B6=a("MethodDefinition"),B_=a(mK),B$=a(h8),Ca=a(lk),Cb=a(hX),Cc=a(ai),Cd=a(kB),Ce=a("ClassProperty"),Cf=a(op),Cg=a(aj),Ch=a(aT),Ci=a(ar),Cj=a("InterfaceDeclaration"),Ck=a(aT),Cl=a(ar),Cm=a("InterfaceExtends"),Cn=a(hX),Co=a(oc),Cp=a("ObjectPattern"),Cq=a(hX),Cr=a(qU),Cs=a("ArrayPattern"),Ct=a(ij),Cu=a(j8),Cv=a("AssignmentPattern"),Cw=a(aG),Cx=a(rD),Cy=a(aG),Cz=a(rD),CA=a(lf),CI=a(jk),CJ=a(kF),CB=a(lk),CC=a(qB),CD=a(oe),CE=a(kO),CF=a(ai),CG=a(kB),CH=a(rh),CK=a(aG),CL=a("SpreadProperty"),CM=a(lk),CN=a(qB),CO=a(oe),CP=a(lf),CQ=a(kO),CR=a(ai),CS=a(kB),CT=a(rh),CU=a(aG),CV=a("RestProperty"),CW=a(aG),CX=a("SpreadElement"),CY=a(rI),CZ=a(ij),C0=a(j8),C1=a("ComprehensionBlock"),C5=a("flags"),C6=a("pattern"),C7=a("regex"),C8=a(jl),C9=a(ai),C2=a(jl),C3=a(ai),C4=a("Literal"),C_=a(qJ),C$=a("quasis"),Da=a("TemplateLiteral"),Db=a("cooked"),Dc=a(jl),Dd=a("tail"),De=a(ai),Df=a("TemplateElement"),Dg=a("quasi"),Dh=a("tag"),Di=a("TaggedTemplateExpression"),Dj=a(qN),Dn=a(qY),Do=a(q7),Dk=a(kO),Dl=a("declarations"),Dm=a("VariableDeclaration"),Dp=a(lf),Dq=a(ar),Dr=a("VariableDeclarator"),Dt=a(rt),Ds=a("plus"),Du=a("AnyTypeAnnotation"),Dv=a("MixedTypeAnnotation"),Dw=a("EmptyTypeAnnotation"),Dx=a("VoidTypeAnnotation"),Dy=a("NullLiteralTypeAnnotation"),Dz=a("NumberTypeAnnotation"),DA=a("StringTypeAnnotation"),DB=a("BooleanTypeAnnotation"),DC=a(hX),DD=a("NullableTypeAnnotation"),DE=a(aT),DF=a("rest"),DG=a(l6),DH=a(kJ),DI=a("FunctionTypeAnnotation"),DJ=a(mO),DK=a(hX),DL=a(h4),DM=a("FunctionTypeParam"),DN=[0,0,0,0],DO=a("callProperties"),DP=a("indexers"),DQ=a(oc),DR=a("exact"),DS=a("ObjectTypeAnnotation"),D3=a("There should not be computed object type property keys"),DT=a(lf),D1=a(jk),D2=a(kF),DU=a(kO),DV=a(mK),DW=a(h8),DX=a(mO),DY=a(ai),DZ=a(kB),D0=a("ObjectTypeProperty"),D4=a(aG),D5=a("ObjectTypeSpreadProperty"),D6=a(mK),D7=a(h8),D8=a(ai),D9=a(kB),D_=a(ar),D$=a("ObjectTypeIndexer"),Ea=a(h8),Eb=a(ai),Ec=a("ObjectTypeCallProperty"),Ed=a("elementType"),Ee=a("ArrayTypeAnnotation"),Ef=a(ar),Eg=a("qualification"),Eh=a("QualifiedTypeIdentifier"),Ei=a(aT),Ej=a(ar),Ek=a("GenericTypeAnnotation"),El=a(nU),Em=a("UnionTypeAnnotation"),En=a(nU),Eo=a("IntersectionTypeAnnotation"),Ep=a(aG),Eq=a("TypeofTypeAnnotation"),Er=a(nU),Es=a("TupleTypeAnnotation"),Et=a(jl),Eu=a(ai),Ev=a("StringLiteralTypeAnnotation"),Ew=a(jl),Ex=a(ai),Ey=a("NumberLiteralTypeAnnotation"),Ez=a(jl),EA=a(ai),EB=a("BooleanLiteralTypeAnnotation"),EC=a("ExistsTypeAnnotation"),ED=a(hX),EE=a("TypeAnnotation"),EF=a(kJ),EG=a("TypeParameterDeclaration"),EH=a(l4),EI=a(mK),EJ=a("bound"),EK=a(h4),EL=a("TypeParameter"),EM=a(kJ),EN=a("TypeParameterInstantiation"),EO=a("children"),EP=a("closingElement"),EQ=a("openingElement"),ER=a("JSXElement"),ES=a("selfClosing"),ET=a("attributes"),EU=a(h4),EV=a("JSXOpeningElement"),EW=a(h4),EX=a("JSXClosingElement"),EY=a(ai),EZ=a(h4),E0=a("JSXAttribute"),E1=a(aG),E2=a("JSXSpreadAttribute"),E5=a("JSXEmptyExpression"),E3=a(kH),E4=a("JSXExpressionContainer"),E6=a(jl),E7=a(ai),E8=a("JSXText"),E9=a(oj),E_=a(oq),E$=a("JSXMemberExpression"),Fa=a(h4),Fb=a("namespace"),Fc=a("JSXNamespacedName"),Fd=a(h4),Fe=a("JSXIdentifier"),Ff=a(rb),Fg=a(mU),Fh=a("ExportSpecifier"),Fi=a(mU),Fj=a("ImportDefaultSpecifier"),Fk=a(mU),Fl=a("ImportNamespaceSpecifier"),Fm=a(kP),Fr=a(kN),Fn=a(rC),Fo=a(mU),Fp=a("imported"),Fq=a("ImportSpecifier"),Fs=a("Block"),Fu=a("Line"),Ft=a(ai),Fv=a(ai),Fw=a("DeclaredPredicate"),Fx=a("InferredPredicate"),xx=a("message"),xy=a(qS),xu=a("range"),xv=a(qS),xw=a(kP),xq=a(rW),xr=a("end"),xs=a("start"),xt=a(kK),xo=a("column"),xp=a("line"),Fz=[0,1,0],FA=a("T_IDENTIFIER"),FB=a("T_LCURLY"),FC=a("T_RCURLY"),FD=a("T_LCURLYBAR"),FE=a("T_RCURLYBAR"),FF=a("T_LPAREN"),FG=a("T_RPAREN"),FH=a("T_LBRACKET"),FI=a("T_RBRACKET"),FJ=a("T_SEMICOLON"),FK=a("T_COMMA"),FL=a("T_PERIOD"),FM=a("T_ARROW"),FN=a("T_ELLIPSIS"),FO=a("T_AT"),FP=a("T_FUNCTION"),FQ=a("T_IF"),FR=a("T_IN"),FS=a("T_INSTANCEOF"),FT=a("T_RETURN"),FU=a("T_SWITCH"),FV=a("T_THIS"),FW=a("T_THROW"),FX=a("T_TRY"),FY=a("T_VAR"),FZ=a("T_WHILE"),F0=a("T_WITH"),F1=a("T_CONST"),F2=a("T_LET"),F3=a("T_NULL"),F4=a("T_FALSE"),F5=a("T_TRUE"),F6=a("T_BREAK"),F7=a("T_CASE"),F8=a("T_CATCH"),F9=a("T_CONTINUE"),F_=a("T_DEFAULT"),F$=a("T_DO"),Ga=a("T_FINALLY"),Gb=a("T_FOR"),Gc=a("T_CLASS"),Gd=a("T_EXTENDS"),Ge=a("T_STATIC"),Gf=a("T_ELSE"),Gg=a("T_NEW"),Gh=a("T_DELETE"),Gi=a("T_TYPEOF"),Gj=a("T_VOID"),Gk=a("T_ENUM"),Gl=a("T_EXPORT"),Gm=a("T_IMPORT"),Gn=a("T_SUPER"),Go=a("T_IMPLEMENTS"),Gp=a("T_INTERFACE"),Gq=a("T_PACKAGE"),Gr=a("T_PRIVATE"),Gs=a("T_PROTECTED"),Gt=a("T_PUBLIC"),Gu=a("T_YIELD"),Gv=a("T_DEBUGGER"),Gw=a("T_DECLARE"),Gx=a("T_TYPE"),Gy=a("T_OF"),Gz=a("T_ASYNC"),GA=a("T_AWAIT"),GB=a("T_CHECKS"),GC=a("T_RSHIFT3_ASSIGN"),GD=a("T_RSHIFT_ASSIGN"),GE=a("T_LSHIFT_ASSIGN"),GF=a("T_BIT_XOR_ASSIGN"),GG=a("T_BIT_OR_ASSIGN"),GH=a("T_BIT_AND_ASSIGN"),GI=a("T_MOD_ASSIGN"),GJ=a("T_DIV_ASSIGN"),GK=a("T_MULT_ASSIGN"),GL=a("T_EXP_ASSIGN"),GM=a("T_MINUS_ASSIGN"),GN=a("T_PLUS_ASSIGN"),GO=a("T_ASSIGN"),GP=a("T_PLING"),GQ=a("T_COLON"),GR=a("T_OR"),GS=a("T_AND"),GT=a("T_BIT_OR"),GU=a("T_BIT_XOR"),GV=a("T_BIT_AND"),GW=a("T_EQUAL"),GX=a("T_NOT_EQUAL"),GY=a("T_STRICT_EQUAL"),GZ=a("T_STRICT_NOT_EQUAL"),G0=a("T_LESS_THAN_EQUAL"),G1=a("T_GREATER_THAN_EQUAL"),G2=a("T_LESS_THAN"),G3=a("T_GREATER_THAN"),G4=a("T_LSHIFT"),G5=a("T_RSHIFT"),G6=a("T_RSHIFT3"),G7=a("T_PLUS"),G8=a("T_MINUS"),G9=a("T_DIV"),G_=a("T_MULT"),G$=a("T_EXP"),Ha=a("T_MOD"),Hb=a("T_NOT"),Hc=a("T_BIT_NOT"),Hd=a("T_INCR"),He=a("T_DECR"),Hf=a("T_ERROR"),Hg=a("T_EOF"),Hh=a("T_JSX_IDENTIFIER"),Hi=a("T_ANY_TYPE"),Hj=a("T_MIXED_TYPE"),Hk=a("T_EMPTY_TYPE"),Hl=a("T_BOOLEAN_TYPE"),Hm=a("T_NUMBER_TYPE"),Hn=a("T_STRING_TYPE"),Ho=a("T_VOID_TYPE"),Hp=a("T_NUMBER"),Hq=a("T_STRING"),Hr=a("T_TEMPLATE_PART"),Hs=a("T_REGEXP"),Ht=a("T_JSX_TEXT"),Hu=a("T_NUMBER_SINGLETON_TYPE"),I6=a(U),I5=[0,3],I4=a(U),I3=[0,3],I1=a(U),I0=[0,3],IY=a(U),IX=[0,1],IV=a(U),IU=[0,2],IS=a(U),IR=[0,0],IN=a(U),IO=a(le),IP=a(le),IQ=a(rZ),IT=[0,0],IW=[0,2],IZ=[0,1],I2=[0,3],Jg=a(U),Jf=a(U),Jd=a(U),Jc=[5,3,ou],Jb=a(U),Ja=a(U),I$=a(U),I7=a(U),I8=a(le),I9=a(le),I_=a(rZ),Je=[5,3,ou],Jh=a(U),Ji=a(rs),Jj=a(U),Jk=a(rs),Jl=a(aL),Jm=a(lh),Jn=a(lh),Jo=a(lh),Jp=a(lb),Jq=a(lb),Jr=a(rH),Js=a("*/"),Jt=a(rH),Ju=a(U),Jv=a(U),Jw=a(U),Jx=a(w),Jy=a(w),Jz=a(w),JA=a(w),JB=a(U),JC=a(qE),JD=a(U),JE=a(l$),JF=a(U),JG=a(U),JH=a(l$),JI=a('"'),JJ=a(ok),JK=a("{"),JL=a(lb),JM=a("iexcl"),NM=a("aelig"),PK=a("Nu"),QK=a("Eacute"),Re=a("Atilde"),Ru=a("'int'"),Rv=a("AElig"),Rw=a("Aacute"),Rx=a("Acirc"),Ry=a("Agrave"),Rz=a("Alpha"),RA=a("Aring"),RB=[0,r4],RC=[0,913],RD=[0,kM],RE=[0,194],RF=[0,193],RG=[0,198],RH=[0,8747],Rf=a("Auml"),Rg=a("Beta"),Rh=a("Ccedil"),Ri=a("Chi"),Rj=a("Dagger"),Rk=a("Delta"),Rl=a("ETH"),Rm=[0,208],Rn=[0,916],Ro=[0,8225],Rp=[0,935],Rq=[0,199],Rr=[0,914],Rs=[0,196],Rt=[0,195],QL=a("Icirc"),Q1=a("Ecirc"),Q2=a("Egrave"),Q3=a("Epsilon"),Q4=a("Eta"),Q5=a("Euml"),Q6=a("Gamma"),Q7=a("Iacute"),Q8=[0,205],Q9=[0,915],Q_=[0,203],Q$=[0,919],Ra=[0,917],Rb=[0,200],Rc=[0,202],QM=a("Igrave"),QN=a("Iota"),QO=a("Iuml"),QP=a("Kappa"),QQ=a("Lambda"),QR=a("Mu"),QS=a("Ntilde"),QT=[0,209],QU=[0,924],QV=[0,923],QW=[0,922],QX=[0,207],QY=[0,921],QZ=[0,204],Q0=[0,206],Rd=[0,201],PL=a("Sigma"),Qf=a("Otilde"),Qv=a("OElig"),Qw=a("Oacute"),Qx=a("Ocirc"),Qy=a("Ograve"),Qz=a("Omega"),QA=a("Omicron"),QB=a("Oslash"),QC=[0,216],QD=[0,927],QE=[0,937],QF=[0,210],QG=[0,212],QH=[0,211],QI=[0,338],Qg=a("Ouml"),Qh=a("Phi"),Qi=a("Pi"),Qj=a("Prime"),Qk=a("Psi"),Ql=a("Rho"),Qm=a("Scaron"),Qn=[0,352],Qo=[0,929],Qp=[0,936],Qq=[0,8243],Qr=[0,928],Qs=[0,934],Qt=[0,qM],Qu=[0,213],PM=a("Uuml"),P2=a("THORN"),P3=a("Tau"),P4=a("Theta"),P5=a("Uacute"),P6=a("Ucirc"),P7=a("Ugrave"),P8=a("Upsilon"),P9=[0,933],P_=[0,217],P$=[0,219],Qa=[0,qT],Qb=[0,920],Qc=[0,932],Qd=[0,222],PN=a("Xi"),PO=a("Yacute"),PP=a("Yuml"),PQ=a("Zeta"),PR=a("aacute"),PS=a("acirc"),PT=a("acute"),PU=[0,180],PV=[0,226],PW=[0,225],PX=[0,918],PY=[0,376],PZ=[0,221],P0=[0,926],P1=[0,220],Qe=[0,931],QJ=[0,925],NN=a("delta"),OL=a("cap"),Pf=a("aring"),Pv=a("agrave"),Pw=a("alefsym"),Px=a("alpha"),Py=a("amp"),Pz=a("and"),PA=a("ang"),PB=a("apos"),PC=[0,39],PD=[0,8736],PE=[0,8743],PF=[0,38],PG=[0,945],PH=[0,8501],PI=[0,j7],Pg=a("asymp"),Ph=a("atilde"),Pi=a("auml"),Pj=a("bdquo"),Pk=a("beta"),Pl=a("brvbar"),Pm=a("bull"),Pn=[0,8226],Po=[0,166],Pp=[0,946],Pq=[0,8222],Pr=[0,228],Ps=[0,rT],Pt=[0,8776],Pu=[0,229],OM=a("copy"),O2=a("ccedil"),O3=a("cedil"),O4=a("cent"),O5=a("chi"),O6=a("circ"),O7=a("clubs"),O8=a("cong"),O9=[0,8773],O_=[0,9827],O$=[0,710],Pa=[0,967],Pb=[0,162],Pc=[0,184],Pd=[0,231],ON=a("crarr"),OO=a("cup"),OP=a("curren"),OQ=a("dArr"),OR=a("dagger"),OS=a("darr"),OT=a("deg"),OU=[0,176],OV=[0,8595],OW=[0,8224],OX=[0,8659],OY=[0,164],OZ=[0,8746],O0=[0,8629],O1=[0,169],Pe=[0,8745],NO=a("fnof"),Og=a("ensp"),Ow=a("diams"),Ox=a("divide"),Oy=a("eacute"),Oz=a("ecirc"),OA=a("egrave"),OB=a(rw),OC=a("emsp"),OD=[0,8195],OE=[0,8709],OF=[0,232],OG=[0,rS],OH=[0,233],OI=[0,rz],OJ=[0,9830],Oh=a("epsilon"),Oi=a("equiv"),Oj=a("eta"),Ok=a("eth"),Ol=a("euml"),Om=a("euro"),On=a("exist"),Oo=[0,8707],Op=[0,8364],Oq=[0,235],Or=[0,jZ],Os=[0,951],Ot=[0,8801],Ou=[0,949],Ov=[0,8194],NP=a("gt"),N3=a("forall"),N4=a("frac12"),N5=a("frac14"),N6=a("frac34"),N7=a("frasl"),N8=a("gamma"),N9=a("ge"),N_=[0,8805],N$=[0,947],Oa=[0,8260],Ob=[0,190],Oc=[0,188],Od=[0,189],Oe=[0,8704],NQ=a("hArr"),NR=a("harr"),NS=a("hearts"),NT=a("hellip"),NU=a("iacute"),NV=a("icirc"),NW=[0,238],NX=[0,237],NY=[0,8230],NZ=[0,9829],N0=[0,8596],N1=[0,8660],N2=[0,62],Of=[0,402],OK=[0,948],PJ=[0,230],JN=a("prime"),LN=a("ndash"),MN=a("le"),Nh=a("kappa"),Nx=a("igrave"),Ny=a("image"),Nz=a("infin"),NA=a("iota"),NB=a("iquest"),NC=a("isin"),ND=a("iuml"),NE=[0,rX],NF=[0,8712],NG=[0,rd],NH=[0,953],NI=[0,8734],NJ=[0,8465],NK=[0,236],Ni=a("lArr"),Nj=a("lambda"),Nk=a("lang"),Nl=a("laquo"),Nm=a("larr"),Nn=a("lceil"),No=a("ldquo"),Np=[0,8220],Nq=[0,8968],Nr=[0,8592],Ns=[0,171],Nt=[0,10216],Nu=[0,955],Nv=[0,8656],Nw=[0,954],MO=a("macr"),M4=a("lfloor"),M5=a("lowast"),M6=a("loz"),M7=a("lrm"),M8=a("lsaquo"),M9=a("lsquo"),M_=a("lt"),M$=[0,60],Na=[0,8216],Nb=[0,8249],Nc=[0,8206],Nd=[0,9674],Ne=[0,8727],Nf=[0,8970],MP=a("mdash"),MQ=a("micro"),MR=a("middot"),MS=a(rt),MT=a("mu"),MU=a("nabla"),MV=a("nbsp"),MW=[0,160],MX=[0,8711],MY=[0,956],MZ=[0,8722],M0=[0,183],M1=[0,181],M2=[0,8212],M3=[0,175],Ng=[0,8804],LO=a("or"),Mi=a("oacute"),My=a("ne"),Mz=a("ni"),MA=a("not"),MB=a("notin"),MC=a("nsub"),MD=a("ntilde"),ME=a("nu"),MF=[0,rR],MG=[0,241],MH=[0,8836],MI=[0,8713],MJ=[0,172],MK=[0,8715],ML=[0,8800],Mj=a("ocirc"),Mk=a("oelig"),Ml=a("ograve"),Mm=a("oline"),Mn=a("omega"),Mo=a("omicron"),Mp=a("oplus"),Mq=[0,8853],Mr=[0,959],Ms=[0,969],Mt=[0,il],Mu=[0,242],Mv=[0,339],Mw=[0,244],Mx=[0,243],LP=a("part"),L5=a("ordf"),L6=a("ordm"),L7=a("oslash"),L8=a("otilde"),L9=a("otimes"),L_=a("ouml"),L$=a("para"),Ma=[0,182],Mb=[0,mq],Mc=[0,8855],Md=[0,qC],Me=[0,Y],Mf=[0,186],Mg=[0,170],LQ=a("permil"),LR=a("perp"),LS=a("phi"),LT=a("pi"),LU=a("piv"),LV=a("plusmn"),LW=a("pound"),LX=[0,163],LY=[0,177],LZ=[0,982],L0=[0,960],L1=[0,966],L2=[0,8869],L3=[0,8240],L4=[0,8706],Mh=[0,8744],MM=[0,8211],JO=a("sup1"),KO=a("rlm"),Li=a("raquo"),Ly=a("prod"),Lz=a("prop"),LA=a("psi"),LB=a("quot"),LC=a("rArr"),LD=a("radic"),LE=a("rang"),LF=[0,10217],LG=[0,8730],LH=[0,8658],LI=[0,34],LJ=[0,968],LK=[0,8733],LL=[0,8719],Lj=a("rarr"),Lk=a("rceil"),Ll=a("rdquo"),Lm=a("real"),Ln=a("reg"),Lo=a("rfloor"),Lp=a("rho"),Lq=[0,961],Lr=[0,8971],Ls=[0,174],Lt=[0,8476],Lu=[0,8221],Lv=[0,8969],Lw=[0,8594],Lx=[0,187],KP=a("sigma"),K5=a("rsaquo"),K6=a("rsquo"),K7=a("sbquo"),K8=a("scaron"),K9=a("sdot"),K_=a("sect"),K$=a("shy"),La=[0,173],Lb=[0,167],Lc=[0,8901],Ld=[0,353],Le=[0,8218],Lf=[0,8217],Lg=[0,8250],KQ=a("sigmaf"),KR=a("sim"),KS=a("spades"),KT=a("sub"),KU=a("sube"),KV=a("sum"),KW=a("sup"),KX=[0,8835],KY=[0,8721],KZ=[0,8838],K0=[0,8834],K1=[0,9824],K2=[0,8764],K3=[0,962],K4=[0,963],Lh=[0,8207],JP=a("uarr"),Kj=a("thetasym"),Kz=a("sup2"),KA=a("sup3"),KB=a("supe"),KC=a("szlig"),KD=a("tau"),KE=a("there4"),KF=a("theta"),KG=[0,952],KH=[0,8756],KI=[0,964],KJ=[0,rg],KK=[0,8839],KL=[0,179],KM=[0,178],Kk=a("thinsp"),Kl=a("thorn"),Km=a("tilde"),Kn=a("times"),Ko=a("trade"),Kp=a("uArr"),Kq=a("uacute"),Kr=[0,lo],Ks=[0,8657],Kt=[0,8482],Ku=[0,215],Kv=[0,732],Kw=[0,oh],Kx=[0,8201],Ky=[0,977],JQ=a("xi"),J6=a("ucirc"),J7=a("ugrave"),J8=a("uml"),J9=a("upsih"),J_=a("upsilon"),J$=a("uuml"),Ka=a("weierp"),Kb=[0,8472],Kc=[0,rF],Kd=[0,965],Ke=[0,978],Kf=[0,168],Kg=[0,249],Kh=[0,251],JR=a("yacute"),JS=a("yen"),JT=a("yuml"),JU=a("zeta"),JV=a("zwj"),JW=a("zwnj"),JZ=[0,8204],J0=[0,ih],J1=[0,rv],J2=[0,ab],J3=[0,165],J4=[0,253],J5=[0,958],Ki=[0,8593],KN=[0,185],LM=[0,8242],NL=[0,161],JX=a(";"),JY=a(rN),RI=a(U),RJ=a("}"),RK=[0,a(w),a(w),a(w)],RL=a(U),RM=a("${"),RN=a(qv),RO=a(qv),RP=a(nT),IH=a(lh),IG=a(q2),II=a(q$),IF=a(r3),IC=[0,0],IE=[0,a("src/parser/lexer.ml"),rS,4],IA=a(w),Iu=[1,a("ILLEGAL")],Is=a(li),It=a(li),Hv=a("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02"),Hw=a("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x03\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x04"),Hx=a("\x01\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03"),Hy=a("\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x02\x02\x04\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x05\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x06\x02\x02\x02\x07"),Hz=a("\x01\0\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\x03"),HA=a("\x01\x02\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\x02\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02"),HB=a("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01"),HC=a("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x02\0\0\0\0\0\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01"),HD=a("\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x02\x02\x04\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x05\x06\x06\x06\x06\x06\x06\x06\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\b\x02\x02\x02\t\x02\x02\x02\x02\x02\x02\x02\n\x02\x02\x02\x0b\x02\f\r\x0e\x02\x0f"),HE=a("\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02"),HF=a("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x03\x02\x02\x04\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x05\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x06\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"),HG=a("\x01\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02"),HH=a("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x02"),HI=a("\x01\0\0\0\0\0\0\x02\0\x02\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"),HJ=a("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02"),HK=a("\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x04"),HL=a("\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x02\x02\x04\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x05\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x06"),HM=a("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x03"),HN=a("\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x02\x02\x04\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x05\x02\x02\x02\x06\x05\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x05\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x05"),HO=a("\x01\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\x01\x01\x01\x01\x03\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\0\x01\x01\x01\x01\x03\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"),HP=a("\x01\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"),HQ=a("\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x02\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"),HR=a("\x01\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x01\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"),HS=a("\x01\0\0\0\0\0\0\0\0\0\x02\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\x01\x01\x01\x01\x04\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\0\x01\x01\x01\x01\x04\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"),HT=a("\x01\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\0\x02\x02\x02\x02\x02\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"),HU=a("\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"),HV=a("\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"),HW=a("\x01\0\0\0\0\0\0\0\0\0\x02\0\x03\x03\x03\x03\x03\x03\x03\x03\x04\x04\0\0\0\0\0\0\0\x01\x05\x01\x01\x06\x01\x01\x01\x01\x01\x01\x01\x01\x01\x07\x01\x01\x01\x01\x01\x01\x01\x01\b\x01\x01\0\0\0\0\x01\0\x01\x05\x01\x01\x06\x01\x01\x01\x01\x01\x01\x01\x01\x01\x07\x01\x01\x01\x01\x01\x01\x01\x01\b\x01\x01"),HX=a("\x01\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"),HY=a("\x01\0\0\0\0\0\0\0\0\0\x02\0\x03\x03\x03\x03\x03\x03\x03\x03\x04\x04\0\0\0\0\0\0\0\x01\x01\x01\x01\x05\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\0\x01\x01\x01\x01\x05\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"),HZ=a("\x01\0\x01\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02"),H0=a('\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x04\x03\x03\x05\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x06\x07\b\t\n\x0b\x07\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x18\x19\x1a\x1b\x1c\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x1d\x1e\x1f \t!\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t"#$%\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\x02\x02\x02\x02\t\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\t\x02\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\x02\t\t\x02\x02\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\t\x02\t\t\t\x02\t\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\t\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\x02\x02\x02\x02\x02\x02\x02\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\x02\x02\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\x02\x02\x02\x02\t\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\x02\x02\x02\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\x02\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\x02\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\x02\x02\t\t\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\t\t\t\t\t\t\t\x02\t\x02\x02\x02\t\t\t\t\x02\x02\x02\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\x02\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\x02\x02\x02\x02\t\t\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\t\t\t\t\t\t\t\x02\t\t\x02\t\t\x02\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\x02\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\x02\t\t\t\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\t\t\t\t\t\t\t\x02\t\t\x02\t\t\t\t\t\x02\x02\x02\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\x02\x02\t\t\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\t\t\t\t\t\t\t\x02\t\t\x02\t\t\t\t\t\x02\x02\x02\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\x02\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\x02\t\t\t\t\t\t\x02\x02\x02\t\t\t\x02\t\t\t\t\x02\x02\x02\t\t\x02\t\x02\t\t\x02\x02\x02\t\t\x02\x02\x02\t\t\t\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\x02\t\t\t\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\t\t\t\t\t\t\t\t\t\t\x02\t\t\t\t\t\x02\x02\x02\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\x02\x02\x02\x02\x02\x02\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\x02\t\t\t\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\t\t\t\t\t\t\t\t\t\t\x02\t\t\t\t\t\x02\x02\x02\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\x02\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\x02\t\t\t\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\t\t\t\t\t\t\t\t\t\x02\t\x02\x02\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\x02\t\x02\x02\t\t\x02\t\x02\x02\t\x02\x02\x02\x02\x02\x02\t\t\t\t\x02\t\t\t\t\t\t\t\x02\t\t\t\x02\t\x02\t\x02\x02\t\t\x02\t\t\t\t\x02\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\x02\x02\t\t\t\t\t\x02\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\x02\x02\x02\x02\t\t\t\t\x02\x02\x02\t\x02\x02\x02\t\t\x02\x02\x02\x02\x02\x02\x02\t\t\t\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\t\x02\x02\x02\x02\x02\t\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\t\t\t\t\x02\x02\t\t\t\t\t\t\t\x02\t\x02\t\t\t\t\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\t\t\t\t\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\t\t\t\t\x02\x02\t\t\t\t\t\t\t\x02\t\x02\t\t\t\t\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\t\t\t\t\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x03\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\x02\x02\x02\x02\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\t\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\x02\t\t\t\t\x02\x02\x02\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\t\t\t\t\t\t\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\t\t\t\t\t\t\x02\x02\t\t\t\t\t\t\t\t\x02\t\x02\t\x02\t\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\t\t\t\t\t\t\t\x02\t\x02\x02\x02\t\t\t\x02\t\t\t\t\t\t\t\x02\x02\x02\t\t\t\t\x02\x02\t\t\t\t\t\t\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\t\t\t\x02\t\t\t\t\t\t\t\x02\x02\x02'),H1=a("\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x04\x03\x03\x05\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x02\x06\x02\x07\x02\x02\x06\x02\x02\x02\x02\x02\x02\b\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\n\x02\x0b\f\r\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x0e\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x07\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x02\x07\x07\x02\x02\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x07\x07\x07\x02\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x02\x02\x02\x02\x02\x02\x02\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x02\x07\x02\x02\x02\x07\x07\x07\x07\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x02\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x02\x07\x07\x02\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x02\x07\x07\x07\x07\x07\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x02\x07\x07\x07\x07\x07\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x02\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x07\x07\x07\x07\x07\x07\x02\x02\x02\x07\x07\x07\x02\x07\x07\x07\x07\x02\x02\x02\x07\x07\x02\x07\x02\x07\x07\x02\x02\x02\x07\x07\x02\x02\x02\x07\x07\x07\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x02\x02\x02\x02\x02\x02\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x02\x02\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x02\x07\x02\x02\x07\x07\x02\x07\x02\x02\x07\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x02\x07\x02\x07\x02\x02\x07\x07\x02\x07\x07\x07\x07\x02\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x07\x07\x07\x07\x07\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x07\x07\x07\x07\x02\x02\x02\x07\x02\x02\x02\x07\x07\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x02\x02\x02\x02\x02\x07\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x07\x02\x07\x02\x07\x07\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x07\x02\x07\x02\x07\x07\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x03\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x02\x07\x07\x07\x07\x02\x02\x02\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x02\x07\x02\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x02\x07\x02\x02\x02\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x07\x07\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02"),H2=a("\x01\0\0\0\0\x02"),H3=a("\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x02\x02\x04"),H4=a("\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x04\x03\x03\x05\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x02\x06\x02\x07\b\t\x06\n\x0b\f\r\x0e\x0f\x10\x11\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x16\x17\x18\x19\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x1a\x02\x1b\x02\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x1c\x07\x07\x07\x07\x07\x07\x1d\x1e\x1f\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x07\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x02\x07\x07\x02\x02\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x07\x07\x07\x02\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x02\x02\x02\x02\x02\x02\x02\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x02\x07\x02\x02\x02\x07\x07\x07\x07\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x02\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x02\x07\x07\x02\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x02\x07\x07\x07\x07\x07\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x02\x07\x07\x07\x07\x07\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x02\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x07\x07\x07\x07\x07\x07\x02\x02\x02\x07\x07\x07\x02\x07\x07\x07\x07\x02\x02\x02\x07\x07\x02\x07\x02\x07\x07\x02\x02\x02\x07\x07\x02\x02\x02\x07\x07\x07\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x02\x02\x02\x02\x02\x02\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x02\x02\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x02\x07\x02\x02\x07\x07\x02\x07\x02\x02\x07\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x02\x07\x02\x07\x02\x02\x07\x07\x02\x07\x07\x07\x07\x02\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x07\x07\x07\x07\x07\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x07\x07\x07\x07\x02\x02\x02\x07\x02\x02\x02\x07\x07\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x02\x02\x02\x02\x02\x07\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x07\x02\x07\x02\x07\x07\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x07\x02\x07\x02\x07\x07\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x03\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x02\x07\x07\x07\x07\x02\x02\x02\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x02\x07\x02\x07\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x02\x07\x02\x02\x02\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x07\x07\x07\x07\x02\x02\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02\x02\x02\x07\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\x02\x02\x02"),H5=a("\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x04\x03\x03\x05\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x06\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02"),H6=a("\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\0\x01\x01\0\0\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\0\x01\x01\x01\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\x01\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\x01\x01\x01\x01\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\x01\x01\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\0\0\0\x01\x01\0\x01\0\x01\x01\0\0\0\x01\x01\0\0\0\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\0\0\x01\x01\0\x01\0\0\x01\0\0\0\0\0\0\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\0\x01\0\0\x01\x01\0\x01\x01\x01\x01\0\x01\x01\0\0\0\0\0\0\0\0\0\x01\0\0\x01\x01\x01\x01\x01\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\0\0\0\x01\0\0\0\x01\x01\0\0\0\0\0\0\0\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\0\0\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\0\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01"),H7=a("\x01\0\0\x02"),H8=a("\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\x01\0\x01\0\0\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\0\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\0\x01\x01\0\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\x01\x01\0\x01\x01\0\0\x01\0\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\0\0\x01\x01\x01\0\0\0\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\0\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\0\0\0\x01\x01\0\x01\0\x01\x01\0\0\0\x01\x01\0\0\0\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\x01\0\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\0\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\0\0\x01\x01\0\x01\0\0\x01\0\0\0\0\0\0\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\0\x01\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\0\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\0\x01\0\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\0\0\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\0\0\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01"),H9=a("\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\x01\0\x01\0\0\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\0\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\0\x01\x01\0\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\x01\x01\0\x01\x01\0\0\x01\0\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\0\0\x01\x01\x01\0\0\0\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\0\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\0\0\0\x01\x01\0\x01\0\x01\x01\0\0\0\x01\x01\0\0\0\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\x01\0\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\0\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\0\0\x01\x01\0\x01\0\0\x01\0\0\0\0\0\0\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\0\x01\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\0\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\0\x01\0\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\0\0\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\0\0\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01"),H_=a("\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\x01\0\x01\0\0\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\0\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\0\x01\x01\0\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\x01\x01\0\x01\x01\0\0\x01\0\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\0\0\x01\x01\x01\0\0\0\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\0\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\0\0\0\x01\x01\0\x01\0\x01\x01\0\0\0\x01\x01\0\0\0\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\x01\0\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\0\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\0\0\x01\x01\0\x01\0\0\x01\0\0\0\0\0\0\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\0\x01\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\0\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\0\x01\0\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\0\0\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\0\0\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01"),H$=a("\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\x01\0\x01\0\0\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\0\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\0\x01\x01\0\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\x01\x01\0\x01\x01\0\0\x01\0\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\0\0\x01\x01\x01\0\0\0\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\0\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\0\0\0\x01\x01\0\x01\0\x01\x01\0\0\0\x01\x01\0\0\0\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\x01\0\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\0\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\0\0\x01\x01\0\x01\0\0\x01\0\0\0\0\0\0\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\0\x01\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\0\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\0\x01\0\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\0\0\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\0\0\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01"),Ia=a("\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\0\x01\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\x01\0\x01\0\0\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\0\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\0\x01\x01\0\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\x01\x01\0\x01\x01\0\0\x01\0\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\0\0\x01\x01\x01\0\0\0\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\0\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\0\0\0\x01\x01\0\x01\0\x01\x01\0\0\0\x01\x01\0\0\0\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\x01\0\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\0\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\0\0\x01\x01\0\x01\0\0\x01\0\0\0\0\0\0\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\0\x01\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\0\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\0\x01\0\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\0\0\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\0\0\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01"),Ib=a("\x01\0\x02"),Ic=a("\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\0\x01\x01\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\x01\0\x01\0\0\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\0\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\0\x01\x01\0\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\x01\x01\0\x01\x01\0\0\x01\0\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\0\0\x01\x01\x01\0\0\0\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\0\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\0\0\0\x01\x01\0\x01\0\x01\x01\0\0\0\x01\x01\0\0\0\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\x01\0\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\0\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\0\0\x01\x01\0\x01\0\0\x01\0\0\0\0\0\0\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\0\x01\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\0\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\0\x01\0\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\0\0\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\0\0\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01"),Id=a("\x01\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01"),Ie=a("\x01\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01"),If=a("\x01\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01"),Ig=a("\x01\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01"),Ih=a("\x01\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01"),Ii=a("\x01\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\x03\x04\x04\x04\x04\x04\x04\x04\x04\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01"),Ij=a("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02"),Ik=a("\x01\0\0\0\0\0\0\0\0\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\x01\0\x01\0\0\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\0\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\0\x01\x01\0\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\x01\x01\0\x01\x01\0\0\x01\0\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\0\0\x01\x01\x01\0\0\0\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\0\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\0\0\0\x01\x01\0\x01\0\x01\x01\0\0\0\x01\x01\0\0\0\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\x01\0\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\0\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\0\0\x01\x01\0\x01\0\0\x01\0\0\0\0\0\0\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\0\x01\0\0\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\0\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\0\x01\0\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\0\0\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\0\0\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01"),Il=a("\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x04\x02\x02\x02\x02\x04\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x05"),Im=a("\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x02\x02\x04\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x05\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x06\x07"),In=a("\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02"),Io=a("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02"),Ip=a("\x01\x02\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03"),Iq=a("\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02"),Ir=a("\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02"),Iv=a("Lexer.FloatOfString.No_good"),IJ=sf([[0,a(n9),15],[0,a("if"),16],[0,a(rL),17],[0,a(q0),18],[0,a("return"),19],[0,a("switch"),20],[0,a("this"),21],[0,a("throw"),22],[0,a("try"),23],[0,a(qN),24],[0,a("while"),25],[0,a("with"),26],[0,a(q7),27],[0,a(qY),28],[0,a(n3),29],[0,a(oa),30],[0,a(n1),31],[0,a("break"),32],[0,a("case"),33],[0,a("catch"),34],[0,a("continue"),35],[0,a(l4),36],[0,a("do"),37],[0,a("finally"),38],[0,a("for"),39],[0,a("class"),40],[0,a(op),41],[0,a(h8),42],[0,a("else"),43],[0,a(qV),44],[0,a(ru),45],[0,a(kN),46],[0,a(n$),47],[0,a(q1),48],[0,a("export"),49],[0,a("import"),50],[0,a("super"),51],[0,a(ms),52],[0,a(rp),53],[0,a(r2),54],[0,a(ri),55],[0,a(qA),56],[0,a(qx),57],[0,a(rB),58],[0,a("debugger"),59],[0,a("declare"),60],[0,a(kP),61],[0,a("of"),62],[0,a(ld),63],[0,a("await"),64]]),IK=sf([[0,a(h8),42],[0,a(kN),46],[0,a("any"),kC],[0,a("mixed"),nV],[0,a(rw),ra],[0,a("bool"),ol],[0,a("boolean"),ol],[0,a(n1),31],[0,a(oa),30],[0,a("number"),n4],[0,a("string"),r5],[0,a(n$),n7],[0,a(n3),29]]),R8=a(rA),R7=a(rA),R5=a(mr),R6=a("eval"),RX=a(ms),RY=a(rp),RZ=a(r2),R0=a(ri),R1=a(qA),R2=a(qx),R3=a(h8),R4=a(rB),RW=a(q1),RV=[0,a("src/parser/parser_env.ml"),289,2],RT=a(w),RU=[0,0,0],RR=a(rQ),RQ=a(rQ),R9=a("Parser_env.Try.Rollback"),Sb=[0,a("did not consume any tokens")],SA=[0,1],SB=[0,0,0],Sv=[0,a(kI),494,6],Sz=a(h8),Sw=a(jk),Sx=a(kF),Sy=a(jk),Su=[0,1],St=[0,[0,0,0]],Ss=[0,1],Sr=[0,1],Sq=[0,1],Sj=[0,0],Sk=[0,1],Sl=[0,2],Sm=[0,7],Sn=[0,5],So=[0,6],Sp=[0,3],Si=[0,4],Sh=[0,a(kI),jc,17],Sg=[0,a(kI),85,17],Sf=[0,a(kI),63,11],Se=[0,a(kI),67,11],Sd=[0,a(kI),45,14],SD=[0,31],SC=[0,31],Tz=[0,1],TA=[0,29],Ty=[0,a(rV),833,13],Tw=[0,a(rV),735,17],Tx=[0,[0,a(w),a(w)],1],Tv=a(n3),Tt=a(lh),Ts=a(q2),Tu=a(q$),Tr=a(r3),Tq=[0,31],To=a(qV),Tp=a("target"),Tn=[0,1],Tm=[0,0],Tl=[0,1],Tk=[0,0],Tc=[0,1],Td=[0,0],Te=[0,2],Tf=[0,3],Tg=[0,7],Th=[0,6],Ti=[0,4],Tj=[0,5],SS=[0,[0,17,[0,2]]],ST=[0,[0,18,[0,3]]],SU=[0,[0,19,[0,4]]],SV=[0,[0,0,[0,5]]],SW=[0,[0,1,[0,5]]],SX=[0,[0,2,[0,5]]],SY=[0,[0,3,[0,5]]],SZ=[0,[0,5,[0,6]]],S0=[0,[0,7,[0,6]]],S1=[0,[0,4,[0,6]]],S2=[0,[0,6,[0,6]]],S3=[0,[0,8,[0,7]]],S4=[0,[0,9,[0,7]]],S5=[0,[0,10,[0,7]]],S6=[0,[0,11,[0,8]]],S7=[0,[0,12,[0,8]]],S8=[0,[0,15,[0,9]]],S9=[0,[0,13,[0,9]]],S_=[0,[0,14,[1,10]]],S$=[0,[0,16,[0,9]]],Tb=[0,[0,21,[0,6]]],Ta=[0,[0,20,[0,6]]],SF=[0,9],SG=[0,8],SH=[0,7],SI=[0,11],SJ=[0,10],SK=[0,12],SL=[0,6],SM=[0,5],SN=[0,3],SO=[0,4],SP=[0,2],SQ=[0,1],SR=[0,0],SE=a(ld),TE=a(le),TF=a(iX),TC=a(w),TD=[0,a(w)],TI=a(oo),TJ=a(oo),TK=[0,1],TL=[0,1],TM=[0,1],TN=[0,1],TO=a(jk),TP=a(kF),TG=a(jk),TH=a(kF),Uo=a(kP),Up=[0,0],Ut=a(kN),Uu=[0,1],Uq=a(hW),Ur=a(hW),Us=a(hW),Uw=a(lm),Uv=a(hW),Un=a(lm),Uk=a(hW),Ul=a(hW),Uj=a(lm),Um=[0,a(om),1137,15],Ub=a("other than an interface declaration!"),Uc=a("Internal Flow Error! Parsed `export interface` into something "),Ud=[0,1],Ue=[0,1],Uf=a("other than a type alias!"),Ug=a("Internal Flow Error! Parsed `export type` into something "),T_=a(hW),T$=a(hW),Ui=a(l4),Ua=a(lm),Uh=a("Internal Flow Error! Unexpected export statement declaration!"),T8=a(hW),T9=a(hW),T7=a(lm),T3=[0,1],T4=a(r1),T5=[0,1],T6=a(r1),T2=a("exports"),T1=[0,1],T0=[0,1],TY=a(rf),TZ=a(rf),TX=[0,1],TW=[0,1],TV=a("Label"),TU=[0,27],TT=[0,0,0],TR=[0,a(om),r4,20],TS=[0,a(om),qM,20],TQ=a("Parser error: No such thing as an expression pattern!"),UQ=[0,1],UO=a("use strict"),UP=[0,0,0],UM=a(nT),UN=a("Nooo: "),Ux=[0,[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],Uy=[0,a("src/parser/parser_flow.ml"),37,28],UR=[0,[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],U3=[0,0],U2=a(" errors");function -V(a){if(typeof -a==="number")return 0;else -switch(a[0]){case -0:return[0,V(a[1])];case -1:return[1,V(a[1])];case -2:return[2,V(a[1])];case -3:return[3,V(a[1])];case -4:return[4,V(a[1])];case -5:return[5,V(a[1])];case -6:return[6,V(a[1])];case -7:return[7,V(a[1])];case -8:var -c=a[1];return[8,c,V(a[2])];case -9:var -b=a[1];return[9,b,b,V(a[3])];case -10:return[10,V(a[1])];case -11:return[11,V(a[1])];case -12:return[12,V(a[1])];case -13:return[13,V(a[1])];default:return[14,V(a[1])]}}function -as(a,b){if(typeof -a==="number")return b;else -switch(a[0]){case -0:return[0,as(a[1],b)];case -1:return[1,as(a[1],b)];case -2:return[2,as(a[1],b)];case -3:return[3,as(a[1],b)];case -4:return[4,as(a[1],b)];case -5:return[5,as(a[1],b)];case -6:return[6,as(a[1],b)];case -7:return[7,as(a[1],b)];case -8:var -c=a[1];return[8,c,as(a[2],b)];case -9:var -d=a[2],e=a[1];return[9,e,d,as(a[3],b)];case -10:return[10,as(a[1],b)];case -11:return[11,as(a[1],b)];case -12:return[12,as(a[1],b)];case -13:return[13,as(a[1],b)];default:return[14,as(a[1],b)]}}function -Q(a,b){if(typeof -a==="number")return b;else -switch(a[0]){case -0:return[0,Q(a[1],b)];case -1:return[1,Q(a[1],b)];case -2:var -c=a[1];return[2,c,Q(a[2],b)];case -3:var -d=a[1];return[3,d,Q(a[2],b)];case -4:var -e=a[3],f=a[2],g=a[1];return[4,g,f,e,Q(a[4],b)];case -5:var -h=a[3],i=a[2],j=a[1];return[5,j,i,h,Q(a[4],b)];case -6:var -k=a[3],l=a[2],m=a[1];return[6,m,l,k,Q(a[4],b)];case -7:var -n=a[3],o=a[2],p=a[1];return[7,p,o,n,Q(a[4],b)];case -8:var -q=a[3],r=a[2],s=a[1];return[8,s,r,q,Q(a[4],b)];case -9:return[9,Q(a[1],b)];case -10:return[10,Q(a[1],b)];case -11:var -t=a[1];return[11,t,Q(a[2],b)];case -12:var -u=a[1];return[12,u,Q(a[2],b)];case -13:var -v=a[2],w=a[1];return[13,w,v,Q(a[3],b)];case -14:var -x=a[2],y=a[1];return[14,y,x,Q(a[3],b)];case -15:return[15,Q(a[1],b)];case -16:return[16,Q(a[1],b)];case -17:var -z=a[1];return[17,z,Q(a[2],b)];case -18:var -A=a[1];return[18,A,Q(a[2],b)];case -19:return[19,Q(a[1],b)];case -20:var -B=a[2],C=a[1];return[20,C,B,Q(a[3],b)];case -21:var -D=a[1];return[21,D,Q(a[2],b)];case -22:return[22,Q(a[1],b)];case -23:var -E=a[1];return[23,E,Q(a[2],b)];default:var -F=a[2],G=a[1];return[24,G,F,Q(a[3],b)]}}function -u(a){throw[0,h0,a]}function -au(a){throw[0,oH,a]}aA(0);function -oI(b,a){return r_(b,a)?b:a}function -ne(a){return 0<=a?a:-a|0}var -st=qG;function -s(d,c){var -a=p(d),e=p(c),b=ah(a+e|0);aI(d,0,b,0,a);aI(c,0,b,a,e);return b}function -lu(a,b){if(a){var -c=a[1];return[0,c,lu(a[2],b)]}return b}VN(0);var -sw=sg(1),sx=sg(2),nf=[0,function(b){function -a(b){var -a=b;for(;;){if(a){var -c=a[2],d=a[1];try{oC(d);}catch(a){}var -a=c;continue}return 0}}return a(VO(0))}];function -sz(a){var -c=nf[1];nf[1]=function(d){b(a,0);return b(c,0)};return 0}function -sA(a){return b(nf[1],0)}function -ng(c){var -b=0,a=c;for(;;){if(a){var -b=b+1|0,a=a[2];continue}return b}}function -ir(a){return a?a[1]:u(sB)}function -kT(d,c){var -a=d,b=c;for(;;){if(a){var -e=[0,a[1],b],a=a[2],b=e;continue}return b}}function -q(a){return kT(a,0)}function -is(c,a){if(a){var -d=a[2],e=b(c,a[1]);return[0,e,is(c,d)]}return 0}function -W(d,c){var -a=c;for(;;){if(a){var -e=a[2];b(d,a[1]);var -a=e;continue}return 0}}function -aM(e,d,c){var -b=d,a=c;for(;;){if(a){var -g=a[2],b=f(e,b,a[1]),a=g;continue}return b}}function -oJ(d,c){var -b=d,a=c;for(;;){if(0===b)return a;if(a){var -b=b-1|0,a=a[2];continue}throw[0,z,sC]}}function -K(a){if(0<=a)if(!(ab>1,D=oJ(n,g),E=t(n,g),i=E,h=t(j-n|0,D),e=0;for(;;){if(i){if(h){var -p=h[2],q=h[1],r=i[2],l=i[1],s=f(b,l,q);if(0===s){var -i=r,h=p,e=[0,l,e];continue}if(0>1,D=oJ(o,g),E=m(o,g),i=E,h=m(j-o|0,D),e=0;for(;;){if(i){if(h){var -q=h[2],r=h[1],s=i[2],l=i[1],t=f(b,l,r);if(0===t){var -i=s,h=q,e=[0,l,e];continue}if(0<=t){var -h=q,e=[0,r,e];continue}var -i=s,e=[0,l,e];continue}return kT(i,e)}return kT(h,e)}},q=ng(d),s=2<=q?m(q,d):d,j=function(b,a){if(!(3>>0))switch(b){case -0:return[0,0,a];case -1:if(a)return[0,[0,0,a[1],0,1],a[2]];break;case -2:if(a){var -e=a[2];if(e)return[0,[0,[0,0,a[1],0,1],e[1],0,2],e[2]]}break;default:if(a){var -f=a[2];if(f){var -g=f[2];if(g)return[0,[0,[0,0,a[1],0,1],f[1],[0,0,g[1],0,1],2],g[2]]}}}var -h=b/2|0,i=j(h,a),d=i[2],l=i[1];if(d){var -m=d[1],k=j((b-h|0)-1|0,d[2]),n=k[2];return[0,c(l,m,k[1]),n]}throw[0,z,s2]};return j(ng(s),s)[1]}var -u=p[1];return a(u,a(r,a(o,a(i,g(e)))))}return a(r,a(o,a(i,g(e))))}return a(o,a(i,g(e)))}return a(i,g(e))}return g(e)}return y}]}aA(0);var -s4=[Y,s3,aA(0)];function -s5(a){throw s4}function -s6(a){var -d=a[1];a[1]=s5;try{var -c=b(d,0);a[1]=c;VR(a,lo);return c}catch(b){b=X(b);a[1]=function(a){throw b};throw b}}aA(0);aA(0);function -F(a){var -b=1<=a?a:1,c=kU>>0?1:0:65<=d?0:1;else{if(32===d)var -f=1;else -if(43<=d)switch(d+me|0){case -5:if(a<(c+2|0))if(1>>0)if(93<=r)var -s=0,l=0;else -var -l=1;else -if(56<(r-1|0)>>>0)var -s=1,l=0;else -var -l=1;if(l){var -j=j+1|0;continue}}else -var -s=11<=g?13===g?1:0:8<=g?1:0;var -x=s?1:1;}if(x){var -a=[0,0],v=p(d)-1|0,A=0;if(!(v<0)){var -i=A;for(;;){var -f=aJ(d,i);if(32<=f){var -o=f+qu|0;if(58>>0)if(93<=o)var -m=0,n=0;else -var -n=1;else -if(56<(o-1|0)>>>0)var -m=1,n=0;else -var -n=1;if(n)var -q=1,m=2;}else -var -m=11<=f?13===f?1:0:8<=f?1:0;switch(m){case -0:var -q=4;break;case -1:var -q=2;break}a[1]=a[1]+q|0;var -D=i+1|0;if(v!==i){var -i=D;continue}break}}if(a[1]===p(d)){var -t=p(d),u=ah(t);aI(d,0,u,0,t);var -k=u;}else{var -b=ah(a[1]);a[1]=0;var -w=p(d)-1|0,B=0;if(!(w<0)){var -h=B;for(;;){var -c=aJ(d,h);if(35<=c)var -e=92===c?1:E<=c?0:2;else -if(32<=c)var -e=34<=c?1:2;else -if(14<=c)var -e=0;else -switch(c){case -8:Z(b,a[1],92);a[1]++;Z(b,a[1],98);var -e=3;break;case -9:Z(b,a[1],92);a[1]++;Z(b,a[1],n7);var -e=3;break;case -10:Z(b,a[1],92);a[1]++;Z(b,a[1],kC);var -e=3;break;case -13:Z(b,a[1],92);a[1]++;Z(b,a[1],n4);var -e=3;break;default:var -e=0;}switch(e){case -0:Z(b,a[1],92);a[1]++;Z(b,a[1],48+(c/aa|0)|0);a[1]++;Z(b,a[1],48+((c/10|0)%10|0)|0);a[1]++;Z(b,a[1],48+(c%10|0)|0);break;case -1:Z(b,a[1],92);a[1]++;Z(b,a[1],c);break;case -2:Z(b,a[1],c);break}a[1]++;var -C=h+1|0;if(w!==h){var -h=C;continue}break}}var -k=b;}}else -var -k=d;var -y=p(k),z=it(y+2|0,34);aI(k,0,z,1,y);return z}}function -uD(c,b){switch(c){case -0:var -a=tO;break;case -1:var -a=tP;break;case -2:var -a=tQ;break;case -3:var -a=tR;break;case -4:var -a=tS;break;case -5:var -a=tT;break;case -6:var -a=tU;break;case -7:var -a=tV;break;case -8:var -a=tW;break;case -9:var -a=tX;break;case -10:var -a=tY;break;case -11:var -a=tZ;break;default:var -a=t0;}return m6(a,b)}function -uE(c,b){switch(c){case -0:var -a=uc;break;case -1:var -a=ud;break;case -2:var -a=ue;break;case -3:var -a=uf;break;case -4:var -a=ug;break;case -5:var -a=uh;break;case -6:var -a=ui;break;case -7:var -a=uj;break;case -8:var -a=uk;break;case -9:var -a=ul;break;case -10:var -a=um;break;case -11:var -a=un;break;default:var -a=uo;}return m6(a,b)}function -uF(c,b){switch(c){case -0:var -a=up;break;case -1:var -a=uq;break;case -2:var -a=ur;break;case -3:var -a=us;break;case -4:var -a=ut;break;case -5:var -a=uu;break;case -6:var -a=uv;break;case -7:var -a=uw;break;case -8:var -a=ux;break;case -9:var -a=uy;break;case -10:var -a=uz;break;case -11:var -a=uA;break;default:var -a=uB;}return m6(a,b)}function -uG(c,b){switch(c){case -0:var -a=t1;break;case -1:var -a=t2;break;case -2:var -a=t3;break;case -3:var -a=t4;break;case -4:var -a=t5;break;case -5:var -a=t6;break;case -6:var -a=t7;break;case -7:var -a=t8;break;case -8:var -a=t9;break;case -9:var -a=t_;break;case -10:var -a=t$;break;case -11:var -a=ua;break;default:var -a=ub;}return Vx(a,b)}function -h1(c,v,h){if(16<=c){if(17<=c)switch(c+rK|0){case -2:var -k=0;break;case -0:case -3:var -m=43,k=1;break;default:var -m=32,k=1;}else -var -k=0;if(!k)var -m=45;var -i=Vu(h,v,m);if(19<=c){var -l=p(i);if(0===l)return i;var -r=ah(l),t=l-1|0,A=0;if(!(t<0)){var -e=A;for(;;){var -g=aJ(i,e);if(97<=g)if(at>>0?55===o?1:0:21<(o-1|0)>>>0?1:0;if(!E){var -j=j+1|0;continue}var -z=1;}return z?f:s(f,uK)}}return f}function -C(v,e,u,t){var -d=v,c=u,a=t;for(;;)if(typeof -a==="number")return f(d,e,c);else -switch(a[0]){case -0:var -w=a[1];return function(a){return C(d,e,[5,c,a],w)};case -1:var -x=a[1];return function(g){var -a=oK(g),b=p(a),f=it(b+2|0,39);aI(a,0,f,1,b);return C(d,e,[4,c,f],x)};case -2:var -y=a[2],A=a[1];return oU(d,e,c,y,A,function(a){return a});case -3:return oU(d,e,c,a[2],a[1],tN);case -4:return lx(d,e,c,a[4],a[2],a[3],uD,a[1]);case -5:return lx(d,e,c,a[4],a[2],a[3],uE,a[1]);case -6:return lx(d,e,c,a[4],a[2],a[3],uF,a[1]);case -7:return lx(d,e,c,a[4],a[2],a[3],uG,a[1]);case -8:var -h=a[4],i=a[3],k=a[2],j=a[1];if(typeof -k==="number"){if(typeof -i==="number")return 0===i?function(a){return C(d,e,[4,c,h1(j,nm,a)],h)}:function(b,a){return C(d,e,[4,c,h1(j,b,a)],h)};var -Y=i[1];return function(a){return C(d,e,[4,c,h1(j,Y,a)],h)}}else{if(0===k[0]){var -n=k[2],o=k[1];if(typeof -i==="number")return 0===i?function(a){return C(d,e,[4,c,aC(o,n,h1(j,nm,a))],h)}:function(b,a){return C(d,e,[4,c,aC(o,n,h1(j,b,a))],h)};var -Z=i[1];return function(a){return C(d,e,[4,c,aC(o,n,h1(j,Z,a))],h)}}var -q=k[1];if(typeof -i==="number")return 0===i?function(b,a){return C(d,e,[4,c,aC(q,b,h1(j,nm,a))],h)}:function(f,b,a){return C(d,e,[4,c,aC(q,f,h1(j,b,a))],h)};var -_=i[1];return function(b,a){return C(d,e,[4,c,aC(q,b,h1(j,_,a))],h)}}case -9:var -B=a[1];return function(a){var -b=a?su:sv;return C(d,e,[4,c,b],B)};case -10:var -c=[7,c],a=a[1];continue;case -11:var -c=[2,c,a[1]],a=a[2];continue;case -12:var -c=[3,c,a[1]],a=a[2];continue;case -13:var -D=a[3],E=a[2],r=oR(16);nn(r,E);var -s=oT(r);return function(a){return C(d,e,[4,c,s],D)};case -14:var -F=a[3],G=a[2];return function(b){var -f=b[1],a=H(f,V($(G)));if(typeof -a[2]==="number")return C(d,e,c,Q(a[1],F));throw ao};case -15:var -I=a[1];return function(b,a){return C(d,e,[6,c,function(c){return f(b,c,a)}],I)};case -16:var -J=a[1];return function(a){return C(d,e,[6,c,a],J)};case -17:var -c=[0,c,a[1]],a=a[2];continue;case -18:var -m=a[1];if(0===m[0]){var -K=a[2],L=m[1][1],M=0,d=function(c,d,e){return function(b,a){return C(d,b,[1,c,[0,a]],e)}}(c,d,K),c=M,a=L;continue}var -N=a[2],O=m[1][1],P=0,d=function(c,d,e){return function(b,a){return C(d,b,[1,c,[1,a]],e)}}(c,d,N),c=P,a=O;continue;case -19:throw[0,z,uL];case -20:var -R=a[3],S=[8,c,uM];return function(a){return C(d,e,S,R)};case -21:var -T=a[2];return function(a){return C(d,e,[4,c,m6(uN,a)],T)};case -22:var -U=a[1];return function(a){return C(d,e,[5,c,a],U)};case -23:var -g=a[2],l=a[1];if(typeof -l==="number")switch(l){case -0:return aw(d,e,c,g);case -1:return aw(d,e,c,g);case -2:return aw(d,e,c,g);case -3:throw[0,z,uO];default:return aw(d,e,c,g)}else -switch(l[0]){case -0:return aw(d,e,c,g);case -1:return aw(d,e,c,g);case -2:return aw(d,e,c,g);case -3:return aw(d,e,c,g);case -4:return aw(d,e,c,g);case -5:return aw(d,e,c,g);case -6:return aw(d,e,c,g);case -7:return aw(d,e,c,g);case -8:return aD(d,e,c,l[2],g);case -9:return aw(d,e,c,g);default:return aw(d,e,c,g)}default:var -W=a[3],X=a[1];return oV(d,e,c,W,X,b(a[2],0))}}function -aD(e,d,c,a,b){if(typeof -a==="number")return aw(e,d,c,b);else -switch(a[0]){case -0:var -f=a[1];return function(a){return aD(e,d,c,f,b)};case -1:var -g=a[1];return function(a){return aD(e,d,c,g,b)};case -2:var -h=a[1];return function(a){return aD(e,d,c,h,b)};case -3:var -i=a[1];return function(a){return aD(e,d,c,i,b)};case -4:var -j=a[1];return function(a){return aD(e,d,c,j,b)};case -5:var -k=a[1];return function(a){return aD(e,d,c,k,b)};case -6:var -l=a[1];return function(a){return aD(e,d,c,l,b)};case -7:var -m=a[1];return function(a){return aD(e,d,c,m,b)};case -8:var -n=a[2];return function(a){return aD(e,d,c,n,b)};case -9:var -o=a[3],p=a[2],q=ad($(a[1]),p);return function(a){return aD(e,d,c,as(q,o),b)};case -10:var -r=a[1];return function(f,a){return aD(e,d,c,r,b)};case -11:var -s=a[1];return function(a){return aD(e,d,c,s,b)};case -12:var -t=a[1];return function(a){return aD(e,d,c,t,b)};case -13:throw[0,z,uP];default:throw[0,z,uQ]}}function -aw(d,c,b,a){return C(d,c,[8,b,uR],a)}function -oU(g,f,e,d,a,c){if(typeof -a==="number")return function(a){return C(g,f,[4,e,b(c,a)],d)};else{if(0===a[0]){var -h=a[2],i=a[1];return function(a){return C(g,f,[4,e,aC(i,h,b(c,a))],d)}}var -j=a[1];return function(h,a){return C(g,f,[4,e,aC(j,h,b(c,a))],d)}}}function -lx(h,g,e,d,i,c,b,a){if(typeof -i==="number"){if(typeof -c==="number")return 0===c?function(c){return C(h,g,[4,e,f(b,a,c)],d)}:function(i,c){return C(h,g,[4,e,kp(i,f(b,a,c))],d)};var -m=c[1];return function(c){return C(h,g,[4,e,kp(m,f(b,a,c))],d)}}else{if(0===i[0]){var -j=i[2],k=i[1];if(typeof -c==="number")return 0===c?function(c){return C(h,g,[4,e,aC(k,j,f(b,a,c))],d)}:function(i,c){return C(h,g,[4,e,aC(k,j,kp(i,f(b,a,c)))],d)};var -n=c[1];return function(c){return C(h,g,[4,e,aC(k,j,kp(n,f(b,a,c)))],d)}}var -l=i[1];if(typeof -c==="number")return 0===c?function(i,c){return C(h,g,[4,e,aC(l,i,f(b,a,c))],d)}:function(j,i,c){return C(h,g,[4,e,aC(l,j,kp(i,f(b,a,c)))],d)};var -o=c[1];return function(i,c){return C(h,g,[4,e,aC(l,i,kp(o,f(b,a,c)))],d)}}}function -oV(g,f,e,d,c,a){if(c){var -h=c[1];return function(c){return oV(g,f,e,d,h,b(a,c))}}return C(g,f,[4,e,a],d)}function -h$(c,h){var -a=h;for(;;)if(typeof -a==="number")return 0;else -switch(a[0]){case -0:var -e=a[2],i=a[1];if(typeof -e==="number")switch(e){case -0:var -d=s9;break;case -1:var -d=s_;break;case -2:var -d=s$;break;case -3:var -d=ta;break;case -4:var -d=tb;break;case -5:var -d=tc;break;default:var -d=td;}else -switch(e[0]){case -0:var -d=e[1];break;case -1:var -d=e[1];break;default:var -d=s(te,oO(1,e[1]));}h$(c,i);return o(c,d);case -1:var -f=a[2],g=a[1];if(0===f[0]){var -j=f[1];h$(c,g);o(c,uS);var -a=j;continue}var -k=f[1];h$(c,g);o(c,uT);var -a=k;continue;case -6:var -n=a[2];h$(c,a[1]);return o(c,b(n,0));case -7:var -a=a[1];continue;case -8:var -p=a[2];h$(c,a[1]);return au(p);case -2:case -4:var -l=a[2];h$(c,a[1]);return o(c,l);default:var -m=a[2];h$(c,a[1]);return A(c,m)}}function -oW(b){var -a=b[1];return C(function(c,b){var -a=F(64);h$(a,b);return _(a)},0,0,a)}var -oX=[0,0];function -oY(a){oX[1]=[0,a,oX[1]];return 0}try{var -Vb=nc(Va),o0=Vb;}catch(a){a=X(a);if(a!==al)throw a;try{var -U$=nc(U_),oZ=U$;}catch(a){a=X(a);if(a!==al)throw a;var -oZ=uV;}var -o0=oZ;}var -uW=sS(o0,82),ly=[mq,function(A){var -m=V2(0),c=[0,iq(55,0),0],i=0===m.length-1?[0,0]:m,j=i.length-1,b=0;for(;;){J(c[1],b)[b+1]=b;var -z=b+1|0;if(54!==b){var -b=z;continue}var -g=[0,uU],k=54+oI(55,j)|0,u=0;if(!(k<0)){var -d=u;for(;;){var -e=d%55|0,l=sh(d,j),v=J(i,l)[l+1],h=s(g[1],a(w+v));g[1]=VM(h,0,p(h));var -f=g[1],o=n(f,3)<<24,q=n(f,2)<<16,r=n(f,1)<<8,t=((n(f,0)+r|0)+q|0)+o|0,x=(J(c[1],e)[e+1]^t)&mz;J(c[1],e)[e+1]=x;var -y=d+1|0;if(k!==d){var -d=y;continue}break}}c[2]=0;return c}}];function -o1(h,k){var -l=h?h[1]:uW,b=16;for(;;){if(!(k<=b))if(!(nj<(b*2|0))){var -b=b*2|0;continue}if(l){var -i=sk(ly),a=lo===i?ly[1]:mq===i?s6(ly):ly;a[2]=(a[2]+1|0)%55|0;var -c=a[2],d=J(a[1],c)[c+1],e=(a[2]+24|0)%55|0,f=(J(a[1],e)[e+1]+(d^(d>>>25|0)&31)|0)&mz,g=a[2];J(a[1],g)[g+1]=f;var -j=f;}else -var -j=0;return[0,0,iq(b,0),j,b]}}function -np(a,b){return 3<=a.length-1?Vm(10,aa,a[3],b)&(a[2].length-1-1|0):sh(Vt(10,aa,b),a[2].length-1)}function -o2(a,l,p){var -c=np(a,l),q=[0,l,p,J(a[2],c)[c+1]];J(a[2],c)[c+1]=q;a[1]=a[1]+1|0;var -m=a[2].length-1<<1>>6|0)?1:0;if(r)var -s=r;else -var -C=2!==(o>>>6|0)?1:0,s=C||(2!==(q>>>6|0)?1:0);if(s)throw hQ;var -h=(c&7)<<18|(m&63)<<12|(o&63)<<6|q&63,d=1;}else -if(j7<=c){var -t=n(b,a+1|0),u=n(b,a+2|0),D=2!==(t>>>6|0)?1:0,E=D||(2!==(u>>>6|0)?1:0);if(E)throw hQ;var -i=(c&15)<<12|(t&63)<<6|u&63,v=ox<=i?1:0,F=v?i<=57088?1:0:v;if(F)throw hQ;var -h=i,d=1;}else{var -w=n(b,a+1|0);if(2!==(w>>>6|0))throw hQ;var -h=(c&31)<<6|w&63,d=1;}else -if(I<=c)var -d=0;else -var -h=c,d=1;if(d){J(k,g)[g+1]=h;var -z=n(b,a),a=a+J(kr,z)[z+1]|0,g=g+1|0,j=j-1|0;continue}throw hQ}var -l=k.length-1,B=1;return[0,vr,oQ(l,function(a){return J(k,a)[a+1]}),l,vq,vp,vo,vn,vm,B]}}throw hQ}var -x=n(b,e),y=J(kr,x)[x+1];if(0>>18|0));A(b,K(I|(a>>>12|0)&63));A(b,K(I|(a>>>6|0)&63));A(b,K(I|a&63));}else{var -e=ox<=a?1:0,h=e?a>>12|0));A(b,K(I|(a>>>6|0)&63));A(b,K(I|a&63));}else{A(b,K(kM|a>>>6|0));A(b,K(I|a&63));}else -A(b,K(a));var -c=c+1|0,d=d-1|0;continue}return _(b)}},t=function(a){return kX(a,0,a[5]-a[6]|0)},ph=hO,pi=undefined,vt=null,kY=function(a){return a!==pi?1:0},vu=ph.Array,pj=[Y,vv,aA(0)];vf(vw,[0,pj,{}]);(function(a){throw a});oY(function(a){return a[1]===pj?[0,ip(a[2].toString())]:0});oY(function(a){return a -instanceof -vu?0:[0,ip(a.toString())]});var -i=function(a,b){return[0,a[1],a[2],b[3]]},pl=function(a){return typeof -a==="number"?vx:a[1]},pm=function(a){if(typeof -a==="number")return 1;else -switch(a[0]){case -0:return 2;case -3:return 4;default:return 3}},pn=function(b,a){var -c=b[1]-a[1]|0;return 0===c?b[2]-a[2]|0:c},po=f(aN,vz,vy),pp=f(aN,vB,vA),pq=f(aN,vD,vC),pr=f(aN,vF,vE),ps=f(aN,vH,vG),pt=f(aN,vJ,vI),pu=f(aN,vL,vK),pv=f(aN,vN,vM),pw=f(aN,vP,vO),px=f(aN,vR,vQ),py=f(aN,vT,vS);v(aO,vU,po,po);v(aO,vV,pp,pp);v(aO,vW,pq,pq);v(aO,vX,pr,pr);v(aO,vY,ps,ps);v(aO,vZ,pt,pt);v(aO,v0,pu,pu);v(aO,v1,pv,pv);v(aO,v2,pw,pw);v(aO,v3,px,px);v(aO,v4,py,py);var -pz=[Y,v5,aA(0)],xn=function(c){function -g(d,a){var -e=ko(is(d,a));return b(c[4],e)}function -t(a){return b(c[5],a)}function -d(d,a){return a?b(d,a[1]):c[6]}function -I(a){var -d=[0,xo,t(a[2])],e=[0,[0,xp,t(a[1])],d];return b(c[3],e)}function -J(a){var -d=a[1];if(d)var -e=d[1],g=typeof -e==="number"?b(c[1],xq):b(c[1],e[1]),f=g;else -var -f=c[6];var -h=[0,xr,I(a[3])],i=[0,[0,xt,f],[0,xs,I(a[2])],h];return b(c[3],i)}function -a(k,d,a){var -i=t(d[3][3]),j=[0,t(d[2][3]),i],l=[0,xu,b(c[4],j)],m=[0,xv,J(d)],e=[0,[0,xw,b(c[1],k)],m,l],g=e.length-1;if(0===g)var -f=a.length-1,h=0===f?[0]:r8(a,0,f);else -var -h=0===a.length-1?r8(e,0,g):Vd(e,a);return b(c[3],h)}function -aa(a){return g(function(g){var -d=g[2];if(typeof -d==="number"){var -e=d;if(34<=e)switch(e){case -34:var -a=wD;break;case -35:var -a=wE;break;case -36:var -a=wF;break;case -37:var -a=wG;break;case -38:var -a=wH;break;case -39:var -a=wI;break;case -40:var -a=wJ;break;case -41:var -a=wK;break;case -42:var -a=wL;break;case -43:var -a=wM;break;case -44:var -a=wN;break;case -45:var -a=wO;break;case -46:var -a=s(wQ,wP);break;case -47:var -a=s(wS,wR);break;case -48:var -a=wT;break;case -49:var -a=wU;break;case -50:var -a=wV;break;case -51:var -a=wW;break;case -52:var -a=wX;break;case -53:var -a=wY;break;case -54:var -a=wZ;break;case -55:var -a=w0;break;case -56:var -a=w1;break;case -57:var -a=w2;break;case -58:var -a=w3;break;case -59:var -a=w4;break;case -60:var -a=w5;break;case -61:var -a=w6;break;case -62:var -a=w7;break;case -63:var -a=w8;break;case -64:var -a=s(w_,w9);break;case -65:var -a=w$;break;case -66:var -a=xa;break;default:var -a=xb;}else -switch(e){case -0:var -a=v6;break;case -1:var -a=v7;break;case -2:var -a=v8;break;case -3:var -a=v9;break;case -4:var -a=v_;break;case -5:var -a=v$;break;case -6:var -a=wa;break;case -7:var -a=wb;break;case -8:var -a=wc;break;case -9:var -a=wd;break;case -10:var -a=we;break;case -11:var -a=wf;break;case -12:var -a=wg;break;case -13:var -a=wh;break;case -14:var -a=wi;break;case -15:var -a=wj;break;case -16:var -a=wk;break;case -17:var -a=wl;break;case -18:var -a=wm;break;case -19:var -a=s(wo,wn);break;case -20:var -a=wp;break;case -21:var -a=wq;break;case -22:var -a=wr;break;case -23:var -a=ws;break;case -24:var -a=wt;break;case -25:var -a=wu;break;case -26:var -a=wv;break;case -27:var -a=ww;break;case -28:var -a=wx;break;case -29:var -a=wy;break;case -30:var -a=wz;break;case -31:var -a=wA;break;case -32:var -a=wB;break;default:var -a=wC;}}else -switch(d[0]){case -0:var -a=s(xc,d[1]);break;case -1:var -a=s(xd,d[1]);break;case -2:var -h=d[2],i=d[1],a=f(oW(xe),i,h);break;case -3:var -a=s(xg,s(d[1],xf));break;case -4:var -a=s(xi,s(d[1],xh));break;case -5:var -j=s(xk,s(d[2],xj)),a=s(d[1],j);break;case -6:var -a=s(xl,d[1]);break;default:var -k=d[1],a=b(oW(xm),k);}var -l=[0,xx,b(c[1],a)],m=[0,[0,xy,J(g[1])],l];return b(c[3],m)},a)}function -ab(b){var -c=[0,xz,g(ar,b[3])],d=[0,[0,xA,K(b[2])],c];return a(xB,b[1],d)}function -K(a){return g(l,a)}function -y(e){var -f=e[2];switch(f[2]){case -0:var -d=Dj;break;case -1:var -d=Dn;break;default:var -d=Do;}var -h=[0,Dk,b(c[1],d)],i=[0,[0,Dl,g(ah,f[1])],h];return a(Dm,e[1],i)}function -V(c){var -b=c[2],e=[0,Cf,g(L,b[4])],f=[0,Cg,G(b[3])],i=[0,Ch,d(p,b[2])],j=[0,[0,Ci,h(b[1])],i,f,e];return a(Cj,c[1],j)}function -S(c){var -b=c[2],e=[0,BA,k(b[3])],f=[0,BB,d(p,b[2])],g=[0,[0,BC,h(b[1])],f,e];return a(BD,c[1],g)}function -Q(c){var -b=c[2],e=[0,Br,g(L,b[4])],f=[0,Bs,G(b[3])],i=[0,Bt,d(p,b[2])],j=[0,[0,Bu,h(b[1])],i,f,e];return a(Bv,c[1],j)}function -P(c){var -b=c[2],e=i(b[1][1],b[2][1]),f=[0,Bo,d(B,b[3])],g=[0,[0,Bp,C(e,[0,b[1],[0,b[2]],0])],f];return a(Bq,c[1],g)}function -O(c){var -b=c[2],d=b[2],e=d?d[1][1]:b[1][1],f=i(b[1][1],e),g=[0,[0,Bm,C(f,[0,b[1],b[2],0])]];return a(Bn,c[1],g)}function -r(b){var -c=[0,[0,Bk,K(b[2][1])]];return a(Bl,b[1],c)}function -l(W){var -j=W[2],f=W[1];if(typeof -j==="number")return 0===j?a(xC,f,[0]):a(xD,f,[0]);else -switch(j[0]){case -0:return r([0,f,j[1]]);case -1:return a(xF,f,[0,[0,xE,d(h,j[1][1])]]);case -2:var -q=j[1],a3=[0,BE,g(e,q[7])],a4=[0,BF,g(T,q[6])],a5=[0,BG,d(w,q[5])],a6=[0,BH,d(p,q[4])],a7=[0,BI,d(e,q[3])],a8=[0,BJ,U(q[2])];return a(BL,f,[0,[0,BK,d(h,q[1])],a8,a7,a6,a5,a4,a3]);case -3:return a(xH,f,[0,[0,xG,d(h,j[1][1])]]);case -4:return Q([0,f,j[1]]);case -5:var -u=j[1],X=u[3];if(X){var -Y=X[1];if(0!==Y[0])if(!Y[2])return a(xO,f,[0,[0,xN,d(m,u[4])]])}var -Z=u[2];if(Z){var -s=Z[1];switch(s[0]){case -0:var -v=O(s[1]);break;case -1:var -v=P(s[1]);break;case -2:var -v=Q(s[1]);break;case -3:var -v=k(s[1]);break;case -4:var -v=S(s[1]);break;default:var -v=V(s[1]);}var -_=v;}else -var -_=c[6];var -ak=[0,xI,d(m,u[4])],al=[0,xJ,R(u[3])];return a(xM,f,[0,[0,xL,b(c[2],u[1])],[0,xK,_],al,ak]);case -6:return P([0,f,j[1]]);case -7:var -C=j[1],F=C[1],am=0===F[0]?h(F[1]):m(F[1]),an=0===C[3][0]?b(c[1],xP):b(c[1],xU);return a(xT,f,[0,[0,xS,am],[0,xR,r(C[2])],[0,xQ,an]]);case -8:return a(xW,f,[0,[0,xV,o(j[1])]]);case -9:return O([0,f,j[1]]);case -10:var -$=j[1],ao=[0,xX,e($[2])];return a(xZ,f,[0,[0,xY,l($[1])],ao]);case -11:var -aa=j[1],G=aa[1],ap=0===G[0]?l(G[1]):e(G[1]),aq=D(aa[2]);return a(x2,f,[0,[0,x1,ap],[0,x0,b(c[1],aq)]]);case -12:var -t=j[1],ab=t[2];if(ab){var -ac=ab[1];if(0!==ac[0])if(!ac[2]){var -av=D(t[4]),aw=[0,x8,b(c[1],av)];return a(x_,f,[0,[0,x9,d(m,t[3])],aw])}}var -ar=D(t[4]),as=[0,x3,b(c[1],ar)],at=[0,x4,d(m,t[3])],au=[0,x5,R(t[2])];return a(x7,f,[0,[0,x6,d(l,t[1])],au,at,as]);case -13:var -ad=j[1],ax=[0,x$,d(c[1],ad[2])];return a(yb,f,[0,[0,ya,e(ad[1])],ax]);case -14:var -x=j[1],ay=function(a){return 0===a[0]?y(a[1]):e(a[1])},az=[0,yc,l(x[4])],aA=[0,yd,d(e,x[3])],aB=[0,ye,d(e,x[2])];return a(yg,f,[0,[0,yf,d(ay,x[1])],aB,aA,az]);case -15:var -z=j[1],H=z[1],aC=0===H[0]?y(H[1]):e(H[1]),aD=[0,yh,b(c[2],z[4])],aE=[0,yi,l(z[3])];return a(yl,f,[0,[0,yk,aC],[0,yj,e(z[2])],aE,aD]);case -16:var -A=j[1],aF=A[4]?ym:yq,I=A[1],aG=0===I[0]?y(I[1]):e(I[1]),aH=[0,yn,l(A[3])];return a(aF,f,[0,[0,yp,aG],[0,yo,e(A[2])],aH]);case -17:var -n=j[1],N=n[3],aV=0===N[0]?r(N[1]):e(N[1]),aW=[0,AO,d(p,n[9])],aX=[0,AP,d(o,n[8])],aY=[0,AQ,b(c[2],n[7])],aZ=[0,AR,d(B,n[6])],a0=[0,AS,b(c[2],n[5])],a1=[0,AT,b(c[2],n[4])],a2=[0,AV,E(n[2])];return a(AX,f,[0,[0,AW,d(h,n[1])],a2,[0,AU,aV],a1,a0,aZ,aY,aX,aW]);case -18:var -J=j[1],aI=[0,yr,d(l,J[3])],aJ=[0,ys,l(J[2])];return a(yu,f,[0,[0,yt,e(J[1])],aJ,aI]);case -19:var -K=j[1],aK=K[3],aL=is(function(d){switch(d[0]){case -0:var -j=d[1],l=j[1],e=j[3],f=j[2],q=f?i(e[1],f[1][1]):e[1],r=f?f[1]:e;if(l)switch(l[1]){case -0:var -k=b(c[1],Fm),g=1;break;case -1:var -k=b(c[1],Fr),g=1;break;default:var -g=0;}else -var -g=0;if(!g)var -k=c[6];var -s=[0,Fo,h(r)];return a(Fq,q,[0,[0,Fp,h(e)],s,[0,Fn,k]]);case -1:var -m=d[1],o=[0,[0,Fi,h(m)]];return a(Fj,m[1],o);default:var -n=d[1],p=[0,[0,Fk,h(n[2])]];return a(Fl,n[1],p)}},aK);switch(K[1]){case -0:var -L=yv;break;case -1:var -L=yA;break;default:var -L=yB;}var -aM=[0,yw,b(c[1],L)],aN=[0,yx,m(K[2])],aO=ko(aL);return a(yz,f,[0,[0,yy,b(c[4],aO)],aN,aM]);case -20:return V([0,f,j[1]]);case -21:var -ae=j[1],aP=[0,yC,l(ae[2])];return a(yE,f,[0,[0,yD,h(ae[1])],aP]);case -22:return a(yG,f,[0,[0,yF,d(e,j[1][1])]]);case -23:var -af=j[1],aQ=[0,yH,g(ai,af[2])];return a(yJ,f,[0,[0,yI,e(af[1])],aQ]);case -24:return a(yL,f,[0,[0,yK,e(j[1][1])]]);case -25:var -M=j[1],aR=[0,yM,d(r,M[3])],aS=[0,yN,d(aj,M[2])];return a(yP,f,[0,[0,yO,r(M[1])],aS,aR]);case -26:return S([0,f,j[1]]);case -27:return y([0,f,j[1]]);case -28:var -ag=j[1],aT=[0,yQ,l(ag[2])];return a(yS,f,[0,[0,yR,e(ag[1])],aT]);default:var -ah=j[1],aU=[0,yT,l(ah[2])];return a(yV,f,[0,[0,yU,e(ah[1])],aU])}}function -X(h){var -e=h[2],j=[0,EO,g(ao,e[3])],k=[0,EP,d(an,e[2])],i=e[1],f=i[2],m=[0,ES,b(c[2],f[2])],n=[0,ET,g(am,f[3])],o=[0,[0,EU,Y(f[1])],n,m],l=[0,[0,EQ,a(EV,i[1],o)],k,j];return a(ER,h[1],l)}function -N(b){var -c=b[2],d=[0,C_,g(e,c[2])],f=[0,[0,C$,g(ag,c[1])],d];return a(Da,b[1],f)}function -m(g){var -h=g[2],i=h[2],d=h[1],j=g[1];if(typeof -d==="number")var -e=c[6];else -switch(d[0]){case -0:var -e=b(c[1],d[1]);break;case -1:var -e=b(c[2],d[1]);break;case -2:var -e=b(c[5],d[1]);break;default:var -m=d[1],e=v(c[7],j,m[1],m[2]);}if(typeof -d==="number")var -f=0;else -if(3===d[0])var -l=d[1],n=[0,C5,b(c[1],l[2])],o=[0,[0,C6,b(c[1],l[1])],n],p=[0,C7,b(c[3],o)],k=[0,[0,C9,e],[0,C8,b(c[1],i)],p],f=1;else -var -f=0;if(!f)var -k=[0,[0,C3,e],[0,C2,b(c[1],i)]];return a(C4,j,k)}function -h(d){var -e=[0,A8,b(c[2],0)],f=[0,A9,c[6]],g=[0,[0,A_,b(c[1],d[2])],f,e];return a(A$,d[1],g)}function -x(i){var -f=i[2],g=f[3],j=0===g[0]?r(g[1]):e(g[1]),k=[0,AY,d(p,f[9])],l=[0,AZ,d(o,f[8])],m=[0,A0,b(c[2],f[7])],n=[0,A1,d(B,f[6])],q=[0,A2,b(c[2],f[5])],s=[0,A3,b(c[2],f[4])],t=[0,A5,E(f[2])],u=[0,[0,A6,d(h,f[1])],t,[0,A4,j],s,q,n,m,l,k];return a(A7,i[1],u)}function -e(J){var -f=J[2],j=J[1];if(typeof -f==="number")return 0===f?a(yW,j,[0]):a(yX,j,[0]);else -switch(f[0]){case -0:var -Y=f[1][1];return a(yZ,j,[0,[0,yY,g(function(a){return d(F,a)},Y)]]);case -1:var -q=f[1],y=q[3],Z=0===y[0]?r(y[1]):e(y[1]),_=[0,y0,d(p,q[9])],$=[0,y1,d(o,q[8])],aa=[0,y2,b(c[2],q[7])],ab=[0,y3,d(B,q[6])],ac=[0,y4,b(c[2],q[5])],ad=[0,y5,b(c[2],q[4])],af=[0,y7,E(q[2])];return a(y9,j,[0,[0,y8,d(h,q[1])],af,[0,y6,Z],ad,ac,ab,aa,$,_]);case -2:var -z=f[1];switch(z[1]){case -0:var -l=y_;break;case -1:var -l=zd;break;case -2:var -l=ze;break;case -3:var -l=zf;break;case -4:var -l=zg;break;case -5:var -l=zh;break;case -6:var -l=zi;break;case -7:var -l=zj;break;case -8:var -l=zk;break;case -9:var -l=zl;break;case -10:var -l=zm;break;case -11:var -l=zn;break;default:var -l=zo;}var -ag=[0,y$,e(z[3])],ah=[0,za,n(z[2])];return a(zc,j,[0,[0,zb,b(c[1],l)],ah,ag]);case -3:var -A=f[1];switch(A[1]){case -0:var -k=zp;break;case -1:var -k=zu;break;case -2:var -k=zv;break;case -3:var -k=zw;break;case -4:var -k=zx;break;case -5:var -k=zy;break;case -6:var -k=zz;break;case -7:var -k=zA;break;case -8:var -k=zB;break;case -9:var -k=zC;break;case -10:var -k=zD;break;case -11:var -k=zE;break;case -12:var -k=zF;break;case -13:var -k=zG;break;case -14:var -k=zH;break;case -15:var -k=zI;break;case -16:var -k=zJ;break;case -17:var -k=zK;break;case -18:var -k=zL;break;case -19:var -k=zM;break;case -20:var -k=zN;break;default:var -k=zO;}var -ai=[0,zq,e(A[3])],aj=[0,zr,e(A[2])];return a(zt,j,[0,[0,zs,b(c[1],k)],aj,ai]);case -4:var -K=f[1],ak=[0,zP,g(F,K[2])];return a(zR,j,[0,[0,zQ,e(K[1])],ak]);case -5:var -t=f[1],aE=[0,BM,g(e,t[7])],aF=[0,BN,g(T,t[6])],aG=[0,BO,d(w,t[5])],aH=[0,BP,d(p,t[4])],aI=[0,BQ,d(e,t[3])],aJ=[0,BR,U(t[2])];return a(BT,j,[0,[0,BS,d(h,t[1])],aJ,aI,aH,aG,aF,aE]);case -6:var -L=f[1],al=[0,zS,d(e,L[2])];return a(zU,j,[0,[0,zT,g(M,L[1])],al]);case -7:var -C=f[1],am=[0,zV,e(C[3])],an=[0,zW,e(C[2])];return a(zY,j,[0,[0,zX,e(C[1])],an,am]);case -8:return x([0,j,f[1]]);case -9:var -O=f[1],ao=[0,zZ,d(e,O[2])];return a(z1,j,[0,[0,z0,g(M,O[1])],ao]);case -10:return h(f[1]);case -11:var -P=f[1],ap=[0,z2,g(e,[0,P,0])];return a(z5,j,[0,[0,z4,a(z3,i(j,P[1]),[0])],ap]);case -12:return X([0,j,f[1]]);case -13:return m([0,j,f[1]]);case -14:var -D=f[1],aq=0===D[1]?z6:z$,ar=[0,z7,e(D[3])],as=[0,z8,e(D[2])];return a(z_,j,[0,[0,z9,b(c[1],aq)],as,ar]);case -15:var -G=f[1],H=G[2],at=0===H[0]?h(H[1]):e(H[1]),au=[0,Aa,b(c[2],G[3])];return a(Ad,j,[0,[0,Ac,e(G[1])],[0,Ab,at],au]);case -16:var -Q=f[1],av=[0,Ae,h(Q[2])];return a(Ag,j,[0,[0,Af,h(Q[1])],av]);case -17:var -R=f[1],aw=[0,Ah,g(F,R[2])];return a(Aj,j,[0,[0,Ai,e(R[1])],aw]);case -18:return a(Al,j,[0,[0,Ak,g(ae,f[1][1])]]);case -19:return a(An,j,[0,[0,Am,g(e,f[1][1])]]);case -20:var -S=f[1],aK=[0,Dg,N(S[2])];return a(Di,j,[0,[0,Dh,e(S[1])],aK]);case -21:return N([0,j,f[1]]);case -22:var -V=f[1],ax=[0,Ao,o(V[2])];return a(Aq,j,[0,[0,Ap,e(V[1])],ax]);case -23:var -v=f[1];if(7<=v[1])return a(As,j,[0,[0,Ar,e(v[3])]]);switch(v[1]){case -0:var -s=At;break;case -1:var -s=Ay;break;case -2:var -s=Az;break;case -3:var -s=AA;break;case -4:var -s=AB;break;case -5:var -s=AC;break;case -6:var -s=AD;break;default:var -s=u(AE);}var -ay=[0,Au,e(v[3])],az=[0,Av,b(c[2],v[2])];return a(Ax,j,[0,[0,Aw,b(c[1],s)],az,ay]);case -24:var -I=f[1],aA=0===I[1]?AF:AK,aB=[0,AG,b(c[2],I[3])],aC=[0,AH,e(I[2])];return a(AJ,j,[0,[0,AI,b(c[1],aA)],aC,aB]);default:var -W=f[1],aD=[0,AL,b(c[2],W[2])];return a(AN,j,[0,[0,AM,d(e,W[1])],aD])}}function -C(f,e){var -g=[0,Ba,b(c[2],e[3])],h=[0,Bb,d(o,e[2])];return a(Bd,f,[0,[0,Bc,b(c[1],e[1][2])],h,g])}function -ai(b){var -c=b[2],f=[0,Be,g(l,c[2])],h=[0,[0,Bf,d(e,c[1])],f];return a(Bg,b[1],h)}function -aj(b){var -c=b[2],d=[0,Bh,r(c[2])],e=[0,[0,Bi,n(c[1])],d];return a(Bj,b[1],e)}function -D(a){return 0===a?Bw:Bx}function -R(e){if(e){var -d=e[1];if(0===d[0])return g(aq,d[1]);var -f=d[2];if(f){var -i=[0,[0,By,h(f[1])]],j=[0,a(Bz,d[1],i)];return b(c[4],j)}return b(c[4],[0])}return b(c[4],[0])}function -T(b){var -c=b[2],e=[0,BU,d(w,c[2])],f=[0,[0,BV,h(c[1])],e];return a(BW,b[1],f)}function -U(b){var -c=[0,[0,BX,g(ac,b[2][1])]];return a(BY,b[1],c)}function -ac(q){if(0===q[0]){var -r=q[1],f=r[2],j=f[2];switch(j[0]){case -0:var -k=[0,m(j[1]),0];break;case -1:var -k=[0,h(j[1]),0];break;default:var -k=[0,e(j[1]),1];}switch(f[1]){case -0:var -l=BZ;break;case -1:var -l=B7;break;case -2:var -l=B8;break;default:var -l=B9;}var -t=[0,B0,g(e,f[5])],u=[0,B1,b(c[2],k[2])],v=[0,B2,b(c[2],f[4])],w=[0,B3,b(c[1],l)],y=[0,B4,x(f[3])];return a(B6,r[1],[0,[0,B5,k[1]],y,w,v,u,t])}var -s=q[1],i=s[2],n=i[1];switch(n[0]){case -0:var -p=[0,m(n[1]),0];break;case -1:var -p=[0,h(n[1]),0];break;default:var -p=[0,e(n[1]),1];}var -A=[0,B_,d(z,i[5])],B=[0,B$,b(c[2],i[4])],C=[0,Ca,b(c[2],p[2])],D=[0,Cb,d(o,i[3])],E=[0,Cc,d(e,i[2])];return a(Ce,s[1],[0,[0,Cd,p[1]],E,D,C,B,A])}function -L(c){var -e=c[2],b=e[1],f=0===b[0]?h(b[1]):H(b[1]),g=[0,[0,Cl,f],[0,Ck,d(w,e[2])]];return a(Cm,c[1],g)}function -n(f){var -b=f[2],c=f[1];switch(b[0]){case -0:var -h=b[1],k=[0,Cn,d(o,h[2])];return a(Cp,c,[0,[0,Co,g(af,h[1])],k]);case -1:var -i=b[1],l=[0,Cq,d(o,i[2])],m=i[1];return a(Cs,c,[0,[0,Cr,g(function(a){return d(ad,a)},m)],l]);case -2:var -j=b[1],p=[0,Ct,e(j[2])];return a(Cv,c,[0,[0,Cu,n(j[1])],p]);case -3:return C(c,b[1]);default:return e(b[1])}}function -E(d){var -e=d[2],f=d[1];if(e){var -h=e[1],i=[0,[0,Cw,n(h[2][1])]],j=a(Cx,h[1],i),k=ko(q([0,j,q(is(n,f))]));return b(c[4],k)}return g(n,f)}function -ad(b){if(0===b[0])return n(b[1]);var -c=b[1],d=[0,[0,Cy,n(c[2][1])]];return a(Cz,c[1],d)}function -ae(k){if(0===k[0]){var -l=k[1],d=l[2],f=d[1];switch(f[0]){case -0:var -g=[0,m(f[1]),0];break;case -1:var -g=[0,h(f[1]),0];break;default:var -g=[0,e(f[1]),1];}var -i=d[2];switch(i[0]){case -0:var -j=[0,e(i[1]),CA];break;case -1:var -j=[0,x(i[1]),CI];break;default:var -j=[0,x(i[1]),CJ];}var -o=[0,CB,b(c[2],g[2])],p=[0,CC,b(c[2],d[4])],q=[0,CD,b(c[2],d[3])],r=[0,CE,b(c[1],j[2])];return a(CH,l[1],[0,[0,CG,g[1]],[0,CF,j[1]],r,q,p,o])}var -n=k[1],s=[0,[0,CK,e(n[2][1])]];return a(CL,n[1],s)}function -af(g){if(0===g[0]){var -j=g[1],i=j[2],d=i[1];switch(d[0]){case -0:var -f=[0,m(d[1]),0];break;case -1:var -f=[0,h(d[1]),0];break;default:var -f=[0,e(d[1]),1];}var -l=[0,CM,b(c[2],f[2])],o=[0,CN,b(c[2],i[3])],p=[0,CO,b(c[2],0)],q=[0,CQ,b(c[1],CP)],r=[0,CR,n(i[2])];return a(CT,j[1],[0,[0,CS,f[1]],r,q,p,o,l])}var -k=g[1],s=[0,[0,CU,n(k[2][1])]];return a(CV,k[1],s)}function -F(b){if(0===b[0])return e(b[1]);var -c=b[1],d=[0,[0,CW,e(c[2][1])]];return a(CX,c[1],d)}function -M(f){var -d=f[2],g=[0,CY,b(c[2],d[3])],h=[0,CZ,e(d[2])],i=[0,[0,C0,n(d[1])],h,g];return a(C1,f[1],i)}function -ag(e){var -d=e[2],f=[0,Db,b(c[1],d[1][2])],g=[0,[0,Dc,b(c[1],d[1][1])],f],h=b(c[3],g),i=[0,[0,De,h],[0,Dd,b(c[2],d[2])]];return a(Df,e[1],i)}function -ah(b){var -c=b[2],f=[0,Dp,d(e,c[2])],g=[0,[0,Dq,n(c[1])],f];return a(Dr,b[1],g)}function -z(a){return 0===a[2]?b(c[1],Ds):b(c[1],Dt)}function -G(f){var -g=f[2],i=g[2],e=aM(function(p,e){var -i=p[3],j=p[2],l=p[1];switch(e[0]){case -0:var -s=e[1],f=s[2],q=f[1];switch(q[0]){case -0:var -r=m(q[1]);break;case -1:var -r=h(q[1]);break;default:var -r=u(D3);}var -n=f[2];switch(n[0]){case -0:var -o=[0,k(n[1]),DT];break;case -1:var -x=n[1],o=[0,A([0,x[1],x[2]]),D1];break;default:var -y=n[1],o=[0,A([0,y[1],y[2]]),D2];}var -C=[0,DU,b(c[1],o[2])],D=[0,DV,d(z,f[6])],E=[0,DW,b(c[2],f[4])],F=[0,DX,b(c[2],f[3])];return[0,[0,a(D0,s[1],[0,[0,DZ,r],[0,DY,o[1]],F,E,D,C]),l],j,i];case -1:var -t=e[1],G=[0,[0,D4,k(t[2][1])]];return[0,[0,a(D5,t[1],G),l],j,i];case -2:var -v=e[1],g=v[2],H=[0,D6,d(z,g[5])],I=[0,D7,b(c[2],g[4])],J=[0,D8,k(g[3])],K=[0,D9,k(g[2])],L=[0,[0,D_,d(h,g[1])],K,J,I,H];return[0,l,[0,a(D$,v[1],L),j],i];default:var -w=e[1],B=w[2],M=[0,Ea,b(c[2],B[2])],N=[0,[0,Eb,A(B[1])],M];return[0,l,j,[0,a(Ec,w[1],N),i]]}},DN,i),j=ko(q(e[3])),l=[0,DO,b(c[4],j)],n=ko(q(e[2])),o=[0,DP,b(c[4],n)],p=ko(q(e[1])),r=[0,DQ,b(c[4],p)],s=[0,[0,DR,b(c[2],g[1])],r,o,l];return a(DS,f[1],s)}function -A(c){var -b=c[2],e=b[1],f=[0,DE,d(p,b[3])],h=[0,DF,d(ak,e[2])],i=[0,DG,k(b[2])],j=[0,[0,DH,g(W,e[1])],i,h,f];return a(DI,c[1],j)}function -k(j){var -f=j[2],e=j[1];if(typeof -f==="number")switch(f){case -0:return a(Du,e,[0]);case -1:return a(Dv,e,[0]);case -2:return a(Dw,e,[0]);case -3:return a(Dx,e,[0]);case -4:return a(Dy,e,[0]);case -5:return a(Dz,e,[0]);case -6:return a(DA,e,[0]);case -7:return a(DB,e,[0]);default:return a(EC,e,[0])}else -switch(f[0]){case -0:return a(DD,e,[0,[0,DC,k(f[1])]]);case -1:return A([0,e,f[1]]);case -2:return G([0,e,f[1]]);case -3:return a(Ee,e,[0,[0,Ed,k(f[1])]]);case -4:var -l=f[1],i=l[1],p=0===i[0]?h(i[1]):H(i[1]);return a(Ek,e,[0,[0,Ej,p],[0,Ei,d(w,l[2])]]);case -5:return a(Em,e,[0,[0,El,g(k,[0,f[1],[0,f[2],f[3]]])]]);case -6:return a(Eo,e,[0,[0,En,g(k,[0,f[1],[0,f[2],f[3]]])]]);case -7:return a(Eq,e,[0,[0,Ep,k(f[1])]]);case -8:return a(Es,e,[0,[0,Er,g(k,f[1])]]);case -9:var -m=f[1],q=[0,Et,b(c[1],m[2])];return a(Ev,e,[0,[0,Eu,b(c[1],m[1])],q]);case -10:var -n=f[1],r=[0,Ew,b(c[1],n[2])];return a(Ey,e,[0,[0,Ex,b(c[5],n[1])],r]);default:var -o=f[1],s=[0,Ez,b(c[1],o[2])];return a(EB,e,[0,[0,EA,b(c[2],o[1])],s])}}function -W(f){var -e=f[2],g=[0,DJ,b(c[2],e[3])],i=[0,DK,k(e[2])],j=[0,[0,DL,d(h,e[1])],i,g];return a(DM,f[1],j)}function -ak(a){return W(a[2][1])}function -H(c){var -d=c[2],b=d[1],e=0===b[0]?h(b[1]):H(b[1]),f=[0,[0,Eg,e],[0,Ef,h(d[2])]];return a(Eh,c[1],f)}function -o(b){var -c=[0,[0,ED,k(b[2])]];return a(EE,b[1],c)}function -p(b){var -c=[0,[0,EF,g(al,b[2][1])]];return a(EG,b[1],c)}function -al(f){var -e=f[2],g=[0,EH,d(k,e[4])],h=[0,EI,d(z,e[3])],i=[0,EJ,d(o,e[2])],j=[0,[0,EK,b(c[1],e[1])],i,h,g];return a(EL,f[1],j)}function -w(b){var -c=[0,[0,EM,g(k,b[2][1])]];return a(EN,b[1],c)}function -am(b){if(0===b[0]){var -f=b[1],h=f[2],c=h[1],i=0===c[0]?j(c[1]):$(c[1]),k=[0,[0,EZ,i],[0,EY,d(ap,h[2])]];return a(E0,f[1],k)}var -g=b[1],l=[0,[0,E1,e(g[2][1])]];return a(E2,g[1],l)}function -an(b){var -c=[0,[0,EW,Y(b[2][1])]];return a(EX,b[1],c)}function -Z(c){var -b=c[2][1],d=0===b[0]?e(b[1]):a(E5,b[1],[0]);return a(E4,c[1],[0,[0,E3,d]])}function -ao(f){var -d=f[2],e=f[1];switch(d[0]){case -0:return X([0,e,d[1]]);case -1:return Z([0,e,d[1]]);default:var -g=d[1],h=[0,E6,b(c[1],g[2])];return a(E8,e,[0,[0,E7,b(c[1],g[1])],h])}}function -j(d){var -e=[0,[0,Fd,b(c[1],d[2][1])]];return a(Fe,d[1],e)}function -$(b){var -c=b[2],d=[0,Fa,j(c[2])],e=[0,[0,Fb,j(c[1])],d];return a(Fc,b[1],e)}function -_(c){var -d=c[2],b=d[1],e=0===b[0]?j(b[1]):_(b[1]),f=[0,[0,E_,e],[0,E9,j(d[2])]];return a(E$,c[1],f)}function -Y(a){switch(a[0]){case -0:return j(a[1]);case -1:return $(a[1]);default:return _(a[1])}}function -ap(a){return 0===a[0]?m([0,a[1],a[2]]):Z([0,a[1],a[2]])}function -aq(c){var -b=c[2],d=b[2],e=d?h(d[1]):h(b[1]),f=[0,[0,Fg,h(b[1])],[0,Ff,e]];return a(Fh,c[1],f)}function -ar(e){var -d=e[2],f=0===d[0]?[0,Fs,d[1]]:[0,Fu,d[1]],g=[0,[0,Ft,b(c[1],f[2])]];return a(f[1],e[1],g)}function -B(b){var -c=b[2];if(c)var -f=Fw,d=[0,[0,Fv,e(c[1])]];else -var -f=Fx,d=[0];return a(f,b[1],d)}return[0,ab,e,aa]},Fy=function(c,b,a){return[0,c,b,Fz,0,a,nw]},pA=function(c,b){var -a=b.slice();a[2]=c;return a},nx=function(a){return a[3][1]},pB=function(a){return a[3][2]},lA=function(b,a){if(b!==a[4]){var -c=a.slice();c[4]=b;return c}return a},pC=function(a){return 35>>0))switch(d){case -0:return ic(a);case -1:break;default:var -b=ic(a);return[0,1,b[2],b[3],b[4],b[5]]}}return a},Iy=function(b){var -a=b[5];if(a)if(48===a[1]){var -c=a[2];if(c){var -d=c[1],e=88===d?0:kG===d?0:1;if(!e)return ic(ic(b))}}throw kv},Iz=function(a){var -b=sQ(IA,is(oK,a[5]));try{var -c=h_(b);}catch(a){a=X(a);if(a[1]===h0)throw kv;throw a}return[0,a[1],a[2],c,a[4],0]},IB=function(l){var -a=l;for(;;){var -j=a[5];if(j){var -b=j[1];if(81<=b){if(95===b){var -a=ic(a);continue}var -k=ra===b?1:0;}else{if(46===b){if(0===a[4]){var -c=ic(a),a=[0,c[1],c[2],c[3],IC,c[5]];continue}throw kv}var -k=80<=b?1:0;}if(k)return Iz(ic(a));if(48<=b)if(57>>6|0)&63),b],d=[0,K(I|(a>>>12|0)&63),c];return[0,K(jZ|a>>>18|0),d]}if(od<=a){var -e=[0,K(I|a&63),0],f=[0,K(I|(a>>>6|0)&63),e];return[0,K(j7|a>>>12|0),f]}if(I<=a){var -g=[0,K(I|a&63),0];return[0,K(kM|a>>>6|0),g]}return[0,K(a),0]},aZ=function(e,d){if(45===n(d,0))var -f=1,a=hP(d,1,p(d)-1|0);else -var -f=0,a=d;if(0===e)var -c=0;else -switch(e-1|0){case -0:var -g=1;try{var -k=m9(m8(s(IH,a)));}catch(d){g=0;d=X(d);if(d[1]!==h0)throw d;var -b=u(s(IG,a)),c=1;}if(g)var -b=k,c=1;break;case -2:var -h=1;try{var -l=p2(a);}catch(d){h=0;d=X(d);if(d[1]!==h0)throw d;var -b=u(s(II,a)),c=1;}if(h)var -b=l,c=1;break;default:var -c=0;}if(!c)try{var -j=m9(m8(a)),b=j;}catch(c){c=X(c);if(c[1]!==h0)throw c;var -b=u(s(IF,a));}var -i=f?-b:b;return[5,e,i]},aR=function(b,a,c){var -d=aY(b,r(b,a));lz(a);return f(c,d,a)},p3=o1(0,53),p4=o1(0,53);W(function(a){return o2(p3,a[1],a[2])},IJ);W(function(a){return o2(p4,a[1],a[2])},IK);var -IL=function(T,b){var -a=T;for(;;){var -d=function(a){for(;;){j(a,20);if(0===aq(g(a)))continue;return h(a)}},z=function(a){if(0===ax(g(a)))for(;;){j(a,19);var -b=ia(g(a));if(0===b)for(;;){j(a,18);if(0===aq(g(a)))continue;return h(a)}if(1===b)continue;return h(a)}return h(a)},f=function(d,e){return function(a){j(a,20);var -b=lM(g(a));if(2>>0)return h(a);switch(b){case -0:return d(a);case -1:return e(a);default:for(;;){j(a,19);var -c=ia(g(a));if(0===c)for(;;){j(a,18);if(0===aq(g(a)))continue;return h(a)}if(1===c)continue;return h(a)}}}}(d,z),y=function(c,d){return function(a){for(;;){j(a,21);var -b=pC(g(a));if(2>>0)return h(a);switch(b){case -0:return c(a);case -1:continue;default:return d(a)}}}}(d,f),A=function(c,d){return function(a){j(a,21);var -b=ia(g(a));return 0===b?d(a):1===b?c(a):h(a)}}(y,d),$=function(c,d,e){return function(a){for(;;){j(a,21);var -b=kt(g(a));if(3>>0)return h(a);switch(b){case -0:return c(a);case -1:return e(a);case -2:continue;default:return d(a)}}}}(d,f,A),B=function(a){for(;;){j(a,14);if(0===aq(g(a)))continue;return h(a)}},Z=function(d,e){return function(a){j(a,14);var -b=lM(g(a));if(2>>0)return h(a);switch(b){case -0:return e(a);case -1:return d(a);default:for(;;){j(a,14);var -c=ia(g(a));if(0===c)for(;;){j(a,14);if(0===aq(g(a)))continue;return h(a)}if(1===c)continue;return h(a)}}}}(z,B),Y=function(a){return 0===lD(g(a))?0===pR(g(a))?0===pO(g(a))?0===pG(g(a))?0===pH(g(a))?0===pQ(g(a))?0===lJ(g(a))?0===lD(g(a))?0===pX(g(a))?0===pJ(g(a))?0===nB(g(a))?4:h(a):h(a):h(a):h(a):h(a):h(a):h(a):h(a):h(a):h(a):h(a)},W=function(a){j(a,4);return 0===pZ(g(a))?4:h(a)},V=function(a){for(;;){j(a,22);if(0===kZ(g(a)))continue;return h(a)}},U=function(O,Y,d,P,Q,R,e,S,T,U){return function(c){var -a=g(c),o=dv>>0)return h(c);switch(o){case -0:return 76;case -1:return 77;case -2:j(c,2);if(0===hR(g(c)))for(;;){j(c,2);if(0===hR(g(c)))continue;return h(c)}return h(c);case -3:return 0;case -4:j(c,0);return 0===aK(g(c))?0:h(c);case -5:j(c,69);return 0===ib(g(c))?(j(c,42),0===ib(g(c))?38:h(c)):h(c);case -6:return 8;case -7:j(c,77);var -p=g(c),V=32>>0)return h(c);switch(r){case -0:j(c,64);return 0===ib(g(c))?54:h(c);case -1:return 5;default:return 53}case -14:j(c,61);var -i=g(c),s=42>>0)return h(c);switch(v){case -0:j(c,3);var -w=lG(g(c));if(2>>0)return h(c);switch(w){case -0:for(;;){var -x=lG(g(c));if(2>>0)return h(c);switch(x){case -0:continue;case -1:return Q(c);default:return R(c)}}case -1:return Q(c);default:return R(c)}case -1:return 6;default:return 73}case -19:j(c,21);var -y=nA(g(c));if(7>>0)return h(c);switch(y){case -0:return d(c);case -1:return e(c);case -2:for(;;){j(c,15);var -z=pW(g(c));if(4>>0)return h(c);switch(z){case -0:return S(c);case -1:return e(c);case -2:continue;case -3:for(;;){j(c,14);var -A=kt(g(c));if(3>>0)return h(c);switch(A){case -0:return S(c);case -1:return e(c);case -2:continue;default:return T(c)}}default:return T(c)}}case -3:return U(c);case -4:j(c,20);var -B=lL(g(c));if(0===B)return d(c);if(1===B)for(;;){j(c,11);var -C=lL(g(c));if(0===C)for(;;){j(c,10);if(0===aq(g(c)))continue;return h(c)}if(1===C)continue;return h(c)}return h(c);case -5:return P(c);case -6:j(c,20);var -D=lB(g(c));if(0===D)return d(c);if(1===D)for(;;){j(c,13);var -E=lB(g(c));if(0===E)for(;;){j(c,12);if(0===aq(g(c)))continue;return h(c)}if(1===E)continue;return h(c)}return h(c);default:j(c,20);var -F=lE(g(c));if(0===F)return d(c);if(1===F)for(;;){j(c,17);var -G=lE(g(c));if(0===G)for(;;){j(c,16);if(0===aq(g(c)))continue;return h(c)}if(1===G)continue;return h(c)}return h(c)}case -20:j(c,21);var -H=kt(g(c));if(3>>0)return h(c);switch(H){case -0:return d(c);case -1:return e(c);case -2:return U(c);default:return P(c)}case -21:return 33;case -22:return 31;case -23:j(c,59);var -l=g(c),I=59>>0)return u(IN);var -w=C;if(39<=w)switch(w){case -39:return[0,a,90];case -40:return[0,a,91];case -41:return[0,a,86];case -42:return[0,a,87];case -43:return[0,a,lj];case -44:return[0,a,jc];case -45:return[0,a,68];case -46:return[0,a,94];case -47:return[0,a,67];case -48:return[0,a,66];case -49:return[0,a,96];case -50:return[0,a,95];case -51:return[0,a,77];case -52:return[0,a,76];case -53:return[0,a,74];case -54:return[0,a,75];case -55:return[0,a,72];case -56:return[0,a,71];case -57:return[0,a,70];case -58:return[0,a,69];case -59:return[0,a,92];case -60:return[0,a,93];case -61:return[0,a,97];case -62:return[0,a,98];case -63:return[0,a,aa];case -64:return[0,a,ln];case -65:return[0,a,iK];case -66:return[0,a,83];case -67:return[0,a,85];case -68:return[0,a,84];case -69:return[0,a,ow];case -70:return[0,a,kD];case -71:return[0,a,78];case -72:return[0,a,12];case -73:return[0,a,73];case -74:return[0,a,99];case -75:return[0,a,14];case -76:var -av=a[4]?hS(a,r(a,b),4):a;return[0,av,O];default:return[0,aY(a,r(a,b)),ii]}switch(w){case -0:var -a=aP(a,b);continue;case -1:var -a=aY(a,r(a,b));continue;case -2:continue;case -3:var -ab=r(a,b),D=F(E),G=iw(a,D,b),a=aQ(G[1],ab,G[2],D,1);continue;case -4:var -k=t(b);if(a[5]){var -ac=a[4]?p1(a,r(a,b),k):a,H=lA(1,ac),I=nv(b);if(ak(kX(b,I-1|0,1),IO))if(c(kX(b,I-2|0,1),IP))return[0,H,80];var -a=H;continue}var -ad=r(a,b),l=F(E);o(l,hP(k,2,p(k)-2|0));var -J=iw(a,l,b),a=aQ(J[1],ad,J[2],l,1);continue;case -5:if(a[4]){var -a=lA(0,a);continue}lz(b);var -ag=function(a){return 0===pV(g(a))?0:h(a)};L(b);return 0===ag(b)?[0,a,aa]:u(IQ);case -6:var -ah=r(a,b),K=F(E),M=kw(a,K,b),a=aQ(M[1],ah,M[2],K,0);continue;case -7:if(0===pf(b)){var -a=kw(a,F(E),b)[1];continue}return[0,a,ii];case -8:var -N=t(b),ai=r(a,b),P=F(E),m=F(E);o(m,N);var -q=p5(a,N,P,m,0,b),aj=i(ai,q[2]),am=q[3],an=_(m),ao=[1,[0,aj,_(P),an,am]];return[0,q[1],ao];case -9:var -Q=F(E),R=F(E),s=F(E);o(s,t(b));var -v=p7(a,r(a,b),Q,R,s,b),ap=v[3],ar=_(s),as=_(R),at=[0,_(Q),as,ar];return[0,v[1],[2,[0,v[2],at,ap]]];case -10:return aR(a,b,function(c,a){L(a);if(0===lK(g(a)))if(0===pP(g(a)))if(0===lI(g(a)))for(;;){j(a,0);if(0===lI(g(a)))continue;var -b=h(a);break}else -var -b=h(a);else -var -b=h(a);else -var -b=h(a);return 0===b?[0,c,IR]:u(IS)});case -11:return[0,a,IT];case -12:return aR(a,b,function(c,a){L(a);if(0===lK(g(a)))if(0===pU(g(a)))if(0===aX(g(a)))for(;;){j(a,0);if(0===aX(g(a)))continue;var -b=h(a);break}else -var -b=h(a);else -var -b=h(a);else -var -b=h(a);return 0===b?[0,c,IU]:u(IV)});case -13:return[0,a,IW];case -14:return aR(a,b,function(c,a){L(a);if(0===lK(g(a)))if(0===aX(g(a)))for(;;){j(a,0);if(0===aX(g(a)))continue;var -b=h(a);break}else -var -b=h(a);else -var -b=h(a);return 0===b?[0,c,IX]:u(IY)});case -15:return[0,a,IZ];case -16:return aR(a,b,function(c,a){L(a);if(0===lK(g(a)))if(0===pL(g(a)))if(0===aW(g(a)))for(;;){j(a,0);if(0===aW(g(a)))continue;var -b=h(a);break}else -var -b=h(a);else -var -b=h(a);else -var -b=h(a);return 0===b?[0,c,I0]:u(I1)});case -18:return aR(a,b,function(k,a){function -e(a){for(;;){j(a,0);if(0===ax(g(a)))continue;return h(a)}}function -d(a){var -b=pI(g(a));return 0===b?0===ax(g(a))?e(a):h(a):1===b?e(a):h(a)}function -c(a){if(0===ax(g(a)))for(;;){var -b=pE(g(a));if(0===b)continue;return 1===b?d(a):h(a)}return h(a)}L(a);var -f=iv(g(a));if(0===f)var -b=c(a);else -if(1===f)for(;;){var -i=pT(g(a));if(2>>0)var -b=h(a);else -switch(i){case -0:var -b=c(a);break;case -1:continue;default:var -b=d(a);}break}else -var -b=h(a);return 0===b?[0,k,I3]:u(I4)});case -20:return aR(a,b,function(f,a){function -c(a){for(;;){j(a,0);if(0===ax(g(a)))continue;return h(a)}}L(a);var -d=iv(g(a));if(0===d)var -b=0===ax(g(a))?c(a):h(a);else -if(1===d)for(;;){j(a,0);var -e=iv(g(a));if(0===e){j(a,0);var -b=0===ax(g(a))?c(a):h(a);}else{if(1===e)continue;var -b=h(a);}break}else -var -b=h(a);return 0===b?[0,f,I5]:u(I6)});case -22:var -e=t(b);if(64===n(e,0))if(64===n(e,1))var -S=hP(e,2,p(e)-2|0),x=1;else -var -x=0;else -var -x=0;if(!x)var -S=e;try{var -au=[0,a,o3(p3,S)];return au}catch(b){b=X(b);if(b===al)return[0,a,0];throw b}case -23:return[0,a,1];case -24:return[0,a,2];case -25:return[0,a,5];case -26:return[0,a,6];case -27:return[0,a,7];case -28:return[0,a,8];case -29:return[0,a,13];case -30:return[0,a,11];case -31:return[0,a,9];case -32:return[0,a,10];case -33:return[0,a,80];case -34:return[0,a,79];case -35:return[0,a,82];case -36:return[0,a,81];case -37:return[0,a,88];case -38:return[0,a,89];default:return[0,a,I2]}}},IM=function(P,b){var -a=P;for(;;){var -W=function(a){return 0===lD(g(a))?0===pR(g(a))?0===pO(g(a))?0===pG(g(a))?0===pH(g(a))?0===pQ(g(a))?0===lJ(g(a))?0===lD(g(a))?0===pX(g(a))?0===pJ(g(a))?0===nB(g(a))?3:h(a):h(a):h(a):h(a):h(a):h(a):h(a):h(a):h(a):h(a):h(a)},V=function(a){j(a,3);return 0===pZ(g(a))?3:h(a)},d=function(a){for(;;){j(a,17);if(0===aq(g(a)))continue;return h(a)}},z=function(d){return function(a){j(a,17);var -b=lE(g(a));if(0===b)return d(a);if(1===b)for(;;){j(a,14);var -c=lE(g(a));if(0===c)for(;;){j(a,13);if(0===aq(g(a)))continue;return h(a)}if(1===c)continue;return h(a)}return h(a)}}(d),y=function(d){return function(a){j(a,17);var -b=lB(g(a));if(0===b)return d(a);if(1===b)for(;;){j(a,10);var -c=lB(g(a));if(0===c)for(;;){j(a,9);if(0===aq(g(a)))continue;return h(a)}if(1===c)continue;return h(a)}return h(a)}}(d),x=function(d){return function(a){j(a,17);var -b=lL(g(a));if(0===b)return d(a);if(1===b)for(;;){j(a,8);var -c=lL(g(a));if(0===c)for(;;){j(a,7);if(0===aq(g(a)))continue;return h(a)}if(1===c)continue;return h(a)}return h(a)}}(d),q=function(a){if(0===ax(g(a)))for(;;){j(a,16);var -b=ia(g(a));if(0===b)for(;;){j(a,15);if(0===aq(g(a)))continue;return h(a)}if(1===b)continue;return h(a)}return h(a)},e=function(d,e){return function(a){j(a,17);var -b=lM(g(a));if(2>>0)return h(a);switch(b){case -0:return d(a);case -1:return e(a);default:for(;;){j(a,16);var -c=ia(g(a));if(0===c)for(;;){j(a,15);if(0===aq(g(a)))continue;return h(a)}if(1===c)continue;return h(a)}}}}(d,q),k=function(c,d){return function(a){for(;;){j(a,18);var -b=pC(g(a));if(2>>0)return h(a);switch(b){case -0:return c(a);case -1:continue;default:return d(a)}}}}(d,e),f=function(c,d){return function(a){j(a,18);var -b=ia(g(a));return 0===b?d(a):1===b?c(a):h(a)}}(k,d),w=function(c,d,e){return function(a){for(;;){j(a,18);var -b=kt(g(a));if(3>>0)return h(a);switch(b){case -0:return c(a);case -1:return e(a);case -2:continue;default:return d(a)}}}}(d,e,f),v=function(a){for(;;){j(a,11);if(0===aq(g(a)))continue;return h(a)}},U=function(d,e){return function(a){j(a,11);var -b=lM(g(a));if(2>>0)return h(a);switch(b){case -0:return e(a);case -1:return d(a);default:for(;;){j(a,11);var -c=ia(g(a));if(0===c)for(;;){j(a,11);if(0===aq(g(a)))continue;return h(a)}if(1===c)continue;return h(a)}}}}(q,v),s=function(d,e,f){return function(a){for(;;){j(a,12);var -b=pW(g(a));if(4>>0)return h(a);switch(b){case -0:return e(a);case -1:return d(a);case -2:continue;case -3:for(;;){j(a,11);var -c=kt(g(a));if(3>>0)return h(a);switch(c){case -0:return e(a);case -1:return d(a);case -2:continue;default:return f(a)}}default:return f(a)}}}}(f,v,U),T=function(c,d,e,f,i,k,l,m){return function(a){j(a,18);var -b=nA(g(a));if(7>>0)return h(a);switch(b){case -0:return c(a);case -1:return e(a);case -2:return f(a);case -3:return i(a);case -4:return k(a);case -5:return d(a);case -6:return l(a);default:return m(a)}}}(d,e,f,s,w,x,y,z),S=function(b){return function(a){return 0===ax(g(a))?b(a):h(a)}}(k),R=function(a){for(;;){j(a,19);if(0===kZ(g(a)))continue;return h(a)}},Q=function(k,H,U,I,J,K,L,V,l,W,X,Y,M,N){return function(i){var -f=g(i),m=dv>>0)return h(i);switch(m){case -0:return 50;case -1:return 51;case -2:j(i,1);if(0===hR(g(i)))for(;;){j(i,1);if(0===hR(g(i)))continue;return h(i)}return h(i);case -3:return 0;case -4:j(i,0);return 0===aK(g(i))?0:h(i);case -5:return 6;case -6:j(i,19);return 0===kZ(g(i))?k(i):h(i);case -7:j(i,51);if(0===lJ(g(i))){var -o=g(i),O=ow>>0)return h(i);switch(r){case -0:for(;;){var -s=pS(g(i));if(3>>0)return h(i);switch(s){case -0:continue;case -1:return H(i);case -2:return K(i);default:return l(i)}}case -1:return H(i);case -2:return K(i);default:return l(i)}case -15:j(i,30);var -t=iv(g(i));return 0===t?0===pD(g(i))?29:h(i):1===t?U(i):h(i);case -16:j(i,51);var -u=lH(g(i));if(0===u){j(i,2);var -v=lG(g(i));if(2>>0)return h(i);switch(v){case -0:for(;;){var -w=lG(g(i));if(2>>0)return h(i);switch(w){case -0:continue;case -1:return M(i);default:return N(i)}}case -1:return M(i);default:return N(i)}}return 1===u?5:h(i);case -17:j(i,18);var -x=nA(g(i));if(7>>0)return h(i);switch(x){case -0:return I(i);case -1:return L(i);case -2:return V(i);case -3:return l(i);case -4:return W(i);case -5:return J(i);case -6:return X(i);default:return Y(i)}case -18:j(i,18);var -y=kt(g(i));if(3>>0)return h(i);switch(y){case -0:return I(i);case -1:return L(i);case -2:return l(i);default:return J(i)}case -19:return 33;case -20:return 31;case -21:return 37;case -22:j(i,39);var -z=g(i),R=61>>0)return u(I7);switch(A){case -0:var -a=aP(a,b);continue;case -1:continue;case -2:var -Y=r(a,b),B=F(E),C=iw(a,B,b),a=aQ(C[1],Y,C[2],B,1);continue;case -3:var -D=t(b);if(a[5]){var -Z=a[4]?p1(a,r(a,b),D):a,G=lA(1,Z),H=nv(b);if(ak(kX(b,H-1|0,1),I8))if(c(kX(b,H-2|0,1),I9))return[0,G,80];var -a=G;continue}var -$=r(a,b),l=F(E);o(l,D);var -I=iw(a,l,b),a=aQ(I[1],$,I[2],l,1);continue;case -4:if(a[4]){var -a=lA(0,a);continue}lz(b);var -ab=function(a){return 0===pV(g(a))?0:h(a)};L(b);return 0===ab(b)?[0,a,aa]:u(I_);case -5:var -ac=r(a,b),J=F(E),K=kw(a,J,b),a=aQ(K[1],ac,K[2],J,0);continue;case -6:var -M=t(b),ad=r(a,b),N=F(E),m=F(E);o(m,M);var -p=p5(a,M,N,m,0,b),ag=i(ad,p[2]),ah=p[3],ai=_(m),aj=[1,[0,ag,_(N),ai,ah]];return[0,p[1],aj];case -7:return aR(a,b,function(f,a){function -b(a){if(0===pP(g(a))){if(0===lI(g(a)))for(;;){j(a,0);if(0===lI(g(a)))continue;return h(a)}return h(a)}return h(a)}L(a);var -c=lC(g(a));if(0===c)for(;;){var -d=lF(g(a));if(0===d)continue;var -e=1===d?b(a):h(a);break}else -var -e=1===c?b(a):h(a);return 0===e?[0,f,aZ(0,t(a))]:u(I$)});case -8:return[0,a,aZ(0,t(b))];case -9:return aR(a,b,function(f,a){function -b(a){if(0===pU(g(a))){if(0===aX(g(a)))for(;;){j(a,0);if(0===aX(g(a)))continue;return h(a)}return h(a)}return h(a)}L(a);var -c=lC(g(a));if(0===c)for(;;){var -d=lF(g(a));if(0===d)continue;var -e=1===d?b(a):h(a);break}else -var -e=1===c?b(a):h(a);return 0===e?[0,f,aZ(2,t(a))]:u(Ja)});case -10:return[0,a,aZ(2,t(b))];case -11:return aR(a,b,function(f,a){function -b(a){if(0===aX(g(a)))for(;;){j(a,0);if(0===aX(g(a)))continue;return h(a)}return h(a)}L(a);var -c=lC(g(a));if(0===c)for(;;){var -d=lF(g(a));if(0===d)continue;var -e=1===d?b(a):h(a);break}else -var -e=1===c?b(a):h(a);return 0===e?[0,f,aZ(1,t(a))]:u(Jb)});case -12:return[0,a,aZ(1,t(b))];case -13:return aR(a,b,function(b,a){function -c(a){if(0===pL(g(a))){if(0===aW(g(a)))for(;;){j(a,0);if(0===aW(g(a)))continue;return h(a)}return h(a)}return h(a)}function -d(a){var -b=lC(g(a));if(0===b)for(;;){var -d=lF(g(a));if(0===d)continue;return 1===d?c(a):h(a)}return 1===b?c(a):h(a)}L(a);if(0===d(a)){var -e=t(a);try{var -f=[0,b,aZ(3,e)];return f}catch(c){c=X(c);if(lv)return[0,hS(b,r(b,a),59),Jc];throw c}}return u(Jd)});case -14:var -am=t(b);try{var -an=[0,a,aZ(3,am)];return an}catch(c){c=X(c);if(lv)return[0,hS(a,r(a,b),59),Je];throw c}case -15:return aR(a,b,function(m,b){function -f(a){for(;;){j(a,0);if(0===ax(g(a)))continue;return h(a)}}function -e(a){var -b=pI(g(a));return 0===b?0===ax(g(a))?f(a):h(a):1===b?f(a):h(a)}function -d(a){if(0===ax(g(a)))for(;;){var -b=pE(g(a));if(0===b)continue;return 1===b?e(a):h(a)}return h(a)}function -i(a){for(;;){var -b=pT(g(a));if(2>>0)return h(a);switch(b){case -0:return d(a);case -1:continue;default:return e(a)}}}L(b);var -k=pK(g(b));if(2>>0)var -c=h(b);else -switch(k){case -0:for(;;){var -a=g(b),l=8>>0)var -c=h(b);else -switch(l){case -0:continue;case -1:var -c=d(b);break;default:var -c=i(b);}break}break;case -1:var -c=d(b);break;default:var -c=i(b);}return 0===c?[0,m,aZ(3,t(b))]:u(Jf)});case -17:return aR(a,b,function(l,a){function -d(a){for(;;){j(a,0);if(0===ax(g(a)))continue;return h(a)}}L(a);var -e=pK(g(a));if(2>>0)var -c=h(a);else -switch(e){case -0:for(;;){var -b=g(a),f=8>>0)var -c=h(a);else -switch(k){case -1:var -c=3;break;case -3:var -c=0;break;case -4:var -c=1;break;default:var -c=2;}if(3>>0)return u(Jh);switch(c){case -0:var -i=t(a);o(d,i);if(ak(v,i))return[0,b,r(b,a),f];o(e,i);continue;case -1:o(d,Ji);var -l=p6(b,e,a),x=l[2],y=x||f;o(d,t(a));var -b=l[1],f=y;continue;case -2:var -m=t(a);o(d,m);var -p=aY(b,r(b,a));o(e,m);return[0,p,r(p,a),f];default:var -q=t(a);o(d,q);o(e,q);continue}}},p6=function(b,d,a){function -k(a){j(a,4);return 0===aX(g(a))?3:h(a)}L(a);var -l=g(a),m=kG>>0)var -c=h(a);else -switch(m){case -0:var -c=0;break;case -1:var -c=17;break;case -2:var -c=16;break;case -3:j(a,16);var -c=0===aK(g(a))?16:h(a);break;case -4:j(a,5);var -c=0===aX(g(a))?k(a):h(a);break;case -5:j(a,12);var -c=0===aX(g(a))?k(a):h(a);break;case -6:var -c=1;break;case -7:var -c=6;break;case -8:var -c=7;break;case -9:var -c=8;break;case -10:var -c=9;break;case -11:var -c=10;break;case -12:j(a,15);var -f=g(a),q=47>>0)return u(Jj);switch(c){case -0:return[0,b,0];case -1:o(d,Jk);return[0,b,0];case -2:var -z=hT(h_(s(Jl,t(a))));W(function(a){return A(d,a)},z);return[0,b,0];case -3:var -e=h_(s(Jm,t(a)));if(ov<=e){var -B=e&7,C=hT(e>>>3|0);W(function(a){return A(d,a)},C);A(d,K(48+B|0));}else{var -D=hT(e);W(function(a){return A(d,a)},D);}return[0,b,1];case -4:var -E=hT(h_(s(Jn,t(a))));W(function(a){return A(d,a)},E);return[0,b,1];case -5:A(d,K(0));return[0,b,0];case -6:A(d,K(8));return[0,b,0];case -7:A(d,K(12));return[0,b,0];case -8:A(d,K(10));return[0,b,0];case -9:A(d,K(13));return[0,b,0];case -10:A(d,K(9));return[0,b,0];case -11:A(d,K(11));return[0,b,0];case -12:var -F=hT(h_(s(Jo,t(a))));W(function(a){return A(d,a)},F);return[0,b,1];case -13:var -w=t(a),G=hT(h_(s(Jp,hP(w,1,p(w)-1|0))));W(function(a){return A(d,a)},G);return[0,b,0];case -14:var -x=t(a),y=h_(s(Jq,hP(x,2,p(x)-3|0))),H=nZ>>0)var -c=h(a);else -switch(i){case -0:var -c=3;break;case -1:var -c=0;break;case -2:j(a,0);var -c=0===aK(g(a))?0:h(a);break;default:j(a,3);var -f=g(a),k=44>>0){var -l=aY(b,r(b,a));return[0,l,r(l,a)]}switch(c){case -0:var -q=aP(b,a);o(d,t(a));var -b=q;continue;case -1:var -m=r(b,a),s=b[4]?hS(b,m,[2,Js,Jr]):b;return[0,s,m];case -2:if(b[4])return[0,b,r(b,a)];o(d,Jt);continue;default:o(d,t(a));continue}}},kw=function(c,l,a){for(;;){L(a);var -f=g(a),i=13>>0)var -b=h(a);else -switch(i){case -0:var -b=0;break;case -1:var -b=2;break;case -2:var -b=1;break;default:j(a,1);var -b=0===aK(g(a))?1:h(a);}if(2>>0)return u(Ju);switch(b){case -0:return[0,c,r(c,a)];case -1:var -d=r(c,a),e=d[3],m=aP(c,a),k=nv(a);return[0,m,[0,d[1],d[2],[0,e[1],e[2]-k|0,e[3]-k|0]]];default:o(l,t(a));continue}}},nD=function(bE,bD,ae,an,b){var -ad=bE;for(;;){L(b);var -aR=g(b),aS=lg>>0)var -e=h(b);else -switch(aS){case -0:var -e=1;break;case -1:var -e=6;break;case -2:var -e=2;break;case -3:j(b,2);var -e=0===aK(g(b))?2:h(b);break;case -4:var -e=0;break;default:j(b,6);var -ap=g(b),aT=34>>0)return u(JG);switch(e){case -0:var -ao=t(b);switch(bD){case -0:var -aO=c(ao,JH)?0:1;break;case -1:var -aO=c(ao,JI)?0:1;break;default:if(c(ao,JJ))if(c(ao,JK))var -aO=0,aQ=0;else -var -aQ=1;else -var -aQ=1;if(aQ){lz(b);return[0,ad,r(ad,b)]}}if(aO)return[0,ad,r(ad,b)];o(an,ao);o(ae,ao);continue;case -1:var -a6=aY(ad,r(ad,b));return[0,a6,r(a6,b)];case -2:var -a7=t(b);o(an,a7);o(ae,a7);var -ad=aP(ad,b);continue;case -3:var -av=t(b),bG=hP(av,3,p(av)-4|0);o(an,av);var -bH=hT(h_(s(JL,bG)));W(function(a){return A(ae,a)},bH);continue;case -4:var -aw=t(b),bI=hP(aw,2,p(aw)-3|0);o(an,aw);var -bJ=hT(h_(bI));W(function(a){return A(ae,a)},bJ);continue;case -5:var -ax=t(b),a=hP(ax,1,p(ax)-2|0);o(an,ax);var -a8=D(a,JM);if(0<=a8)if(0>>0)var -c=h(a);else -switch(p){case -0:var -c=0;break;case -1:var -c=6;break;case -2:var -c=5;break;case -3:j(a,5);var -c=0===aK(g(a))?4:h(a);break;case -4:j(a,6);var -q=g(a),y=at>>0)return u(RL);switch(c){case -0:var -s=aY(b,r(b,a));return[0,s,i(k,r(s,a)),1];case -1:A(d,96);return[0,b,i(k,r(b,a)),1];case -2:o(d,RM);return[0,b,i(k,r(b,a)),0];case -3:A(e,92);A(d,92);var -z=p6(b,f,a),v=t(a);o(e,v);o(d,v);var -b=z[1];continue;case -4:o(e,RN);o(d,RO);o(f,RP);var -b=aP(b,a);continue;case -5:var -w=t(a);o(e,w);o(d,w);A(f,10);var -b=aP(b,a);continue;default:var -l=t(a);o(e,l);o(d,l);o(f,l);continue}}},kx=lw([0,nh]),k0=function(a,b){return[0,[0],0,b,pA(a[2].slice(),a)]},nE=function(w,aT){var -aU=aT+1|0;if(w[1].length-1>>0)var -f=h(c);else -switch(as){case -0:var -f=0;break;case -1:var -f=14;break;case -2:j(c,2);if(0===hR(g(c)))for(;;){j(c,2);if(0===hR(g(c)))continue;var -f=h(c);break}else -var -f=h(c);break;case -3:var -f=1;break;case -4:j(c,1);var -f=0===aK(g(c))?1:h(c);break;case -5:var -f=13;break;case -6:j(c,12);if(0===pN(g(c)))for(;;){j(c,12);if(0===pN(g(c)))continue;var -f=h(c);break}else -var -f=h(c);break;case -7:var -f=10;break;case -8:j(c,6);var -at=lH(g(c)),f=0===at?4:1===at?3:h(c);break;case -9:var -f=9;break;case -10:var -f=5;break;case -11:var -f=11;break;case -12:var -f=7;break;default:var -f=8;}if(14>>0)var -v=u(JD);else -switch(f){case -0:var -v=[0,e,O];break;case -1:var -e=aP(e,c);continue;case -2:continue;case -3:var -a1=r(e,c),au=F(E),av=kw(e,au,c),e=aQ(av[1],a1,av[2],au,0);continue;case -4:var -c8=r(e,c),aw=F(E),ax=iw(e,aw,c),e=aQ(ax[1],c8,ax[2],aw,1);continue;case -5:var -v=[0,e,92];break;case -6:var -v=[0,e,99];break;case -7:var -v=[0,e,93];break;case -8:var -v=[0,e,1];break;case -9:var -v=[0,e,80];break;case -10:var -v=[0,e,11];break;case -11:var -v=[0,e,78];break;case -12:var -v=[0,e,n5];break;case -13:var -W=t(c),hN=r(e,c),ay=F(E),Q=F(E);o(Q,W);var -hO=ak(W,JE)?0:1,az=nD(e,hO,ay,Q,c);o(Q,W);var -hQ=_(ay),hT=_(Q),hU=[4,[0,i(hN,az[2]),hQ,hT]],v=[0,az[1],hU];break;default:var -v=[0,e,ii];}var -K=ku(v);break}break;case -3:var -aa=nu(k[2]),ab=p0(k,aa,aa),N=F(E),P=F(E),z=k[2];L(z);var -aA=g(z),aB=lg>>0)var -G=h(z);else -switch(aB){case -0:var -G=1;break;case -1:var -G=4;break;case -2:var -G=0;break;case -3:j(z,0);var -G=0===aK(g(z))?0:h(z);break;case -4:var -G=2;break;default:var -G=3;}if(4>>0)var -I=u(JF);else -switch(G){case -0:var -aC=t(z);o(P,aC);o(N,aC);var -aD=nD(aP(k,z),2,N,P,z),hV=_(N),hW=_(P),hX=[4,[0,i(ab,aD[2]),hV,hW]],I=[0,aD[1],hX];break;case -1:var -I=[0,k,O];break;case -2:var -I=[0,k,92];break;case -3:var -I=[0,k,1];break;default:var -aE=t(z);o(P,aE);o(N,aE);var -aF=nD(k,2,N,P,z),hY=_(N),hZ=_(P),h0=[4,[0,i(ab,aF[2]),hY,hZ]],I=[0,aF[1],h0];}var -K=ku([0,I[1],I[2]]);break;case -4:var -d=k[2],q=k;for(;;){L(d);var -s=g(d),aG=-1>>0)var -C=h(d);else -switch(aG){case -0:var -C=5;break;case -1:j(d,1);if(0===hR(g(d)))for(;;){j(d,1);if(0===hR(g(d)))continue;var -C=h(d);break}else -var -C=h(d);break;case -2:var -C=0;break;case -3:j(d,0);var -C=0===aK(g(d))?0:h(d);break;case -4:j(d,5);var -aH=lH(g(d)),C=0===aH?3:1===aH?2:h(d);break;default:var -C=4;}if(5>>0)var -Z=u(RI);else -switch(C){case -0:var -q=aP(q,d);continue;case -1:continue;case -2:var -h1=r(q,d),aI=F(E),aJ=kw(q,aI,d),q=aQ(aJ[1],h1,aJ[2],aI,0);continue;case -3:var -h2=r(q,d),aL=F(E),aM=iw(q,aL,d),q=aQ(aM[1],h2,aM[2],aL,1);continue;case -4:var -h3=r(q,d),aN=F(E),aO=F(E),X=F(E);o(X,RJ);var -Y=p7(q,h3,aN,aO,X,d),h4=Y[3],h5=_(X),h6=_(aO),h7=[0,_(aN),h6,h5],Z=[0,Y[1],[2,[0,Y[2],h7,h4]]];break;default:var -aR=aY(q,r(q,d)),Z=[0,aR,[2,[0,r(aR,d),RK,1]]];}var -K=ku(Z);break}break;default:var -b=k[2],l=k;for(;;){L(b);var -x=g(b),ac=dv>>0)var -B=h(b);else -switch(ac){case -0:var -B=0;break;case -1:var -B=6;break;case -2:j(b,2);if(0===hR(g(b)))for(;;){j(b,2);if(0===hR(g(b)))continue;var -B=h(b);break}else -var -B=h(b);break;case -3:var -B=1;break;case -4:j(b,1);var -B=0===aK(g(b))?1:h(b);break;default:j(b,5);var -ad=lH(g(b)),B=0===ad?4:1===ad?3:h(b);}if(6>>0)var -R=u(Jv);else -switch(B){case -0:var -R=[0,l,O];break;case -1:var -l=aP(l,b);continue;case -2:continue;case -3:var -aV=r(l,b),af=F(E),ag=kw(l,af,b),l=aQ(ag[1],aV,ag[2],af,0);continue;case -4:var -aW=r(l,b),ah=F(E),ai=iw(l,ah,b),l=aQ(ai[1],aW,ai[2],ah,1);continue;case -5:var -aX=r(l,b),D=F(E),y=l;a:for(;;){L(b);var -al=g(b),am=92>>0)var -m=h(b);else -switch(am){case -0:var -m=0;break;case -1:var -m=7;break;case -2:var -m=6;break;case -3:j(b,6);var -m=0===aK(g(b))?6:h(b);break;case -4:j(b,4);if(0===pM(g(b)))for(;;){j(b,3);if(0===pM(g(b)))continue;var -m=h(b);break}else -var -m=h(b);break;case -5:var -m=5;break;default:j(b,7);var -T=g(b),an=-1>>0)var -m=h(b);else -switch(an){case -0:var -m=2;break;case -1:var -m=1;break;default:j(b,1);var -m=0===aK(g(b))?1:h(b);}}if(7>>0)var -H=u(Jw);else -switch(m){case -0:var -H=[0,hS(y,r(y,b),14),Jx];break;case -1:var -H=[0,hS(y,r(y,b),14),Jy];break;case -3:var -ao=t(b),H=[0,y,hP(ao,1,p(ao)-1|0)];break;case -4:var -H=[0,y,Jz];break;case -5:A(D,91);for(;;){L(b);var -ap=g(b),aq=93>>0)var -M=h(b);else -switch(aq){case -0:var -M=0;break;case -1:var -M=4;break;case -2:j(b,4);var -V=g(b),ar=91>>0)var -U=u(JB);else -switch(M){case -0:var -U=y;break;case -1:o(D,JC);continue;case -2:A(D,92);A(D,93);continue;case -3:A(D,93);var -U=y;break;default:o(D,t(b));continue}var -y=U;continue a}case -6:var -H=[0,hS(y,r(y,b),14),JA];break;default:o(D,t(b));continue}var -aj=H[1],aZ=i(aX,r(aj,b)),a0=H[2],R=[0,aj,[3,[0,aZ,_(D),a0]]];break}break;default:var -R=[0,aY(l,r(l,b)),ii];}var -K=ku(R);break}}var -$=K[1],h8=pA($[2].slice(),$);w[4]=$;var -aS=w[2],h9=[0,[0,h8,K[2]]];J(w[1],aS)[aS+1]=h9;w[2]=w[2]+1|0;continue}return 0}},RS=function(c,a,b,i){var -j=c?c[1]:c,e=a?a[1]:a;try{var -m=0,n=pg(i),g=n,f=m;}catch(a){a=X(a);if(a!==hQ)throw a;var -k=[0,[0,[0,b,pk[2],pk[3]],67],0],g=pg(RT),f=k;}var -d=e?e[1]:nF,h=Fy(b,g,d[5]),l=[0,k0(h,0)];return[0,[0,f],[0,0],kx[1],[0,kx[1]],[0,0],d[6],0,0,0,0,0,0,0,0,0,1,0,0,0,[0,RU],[0,h],l,[0,j],d,b]},k1=function(a){return ir(a[20][1])},aE=function(a){return a[24][5]},x=function(a,c){var -d=c[2];a[1][1]=[0,[0,c[1],d],a[1][1]];var -b=a[19];return b?f(b[1],a,d):b},ky=function(a,c){var -b=c[2];if(f(kx[3],b,a[4][1]))return x(a,[0,c[1],[7,b]]);var -d=f(kx[4],b,a[4][1]);a[4][1]=d;return 0},k2=function(c,e){var -a=c?c[1]:0;if(a<2){var -d=e[22][1];nE(d,a);var -b=J(d[1],a)[a+1];return b?b[1][2]:u(RQ)}throw[0,z,RV]},id=function(c,b){var -a=b.slice();a[6]=c;return a},p8=function(c,b){var -a=b.slice();a[18]=c;return a},k3=function(c,b){var -a=b.slice();a[13]=c;return a},k4=function(c,b){var -a=b.slice();a[8]=c;return a},ie=function(c,b){var -a=b.slice();a[11]=c;return a},nG=function(c,b){var -a=b.slice();a[14]=c;return a},p9=function(c,b){var -a=b.slice();a[7]=c;return a},p_=function(c,b){var -a=b.slice();a[12]=c;return a},p$=function(c,b){var -a=b.slice();a[19]=[0,c];return a},qa=function(a){function -b(b){return x(a,b)}return function(a){return W(b,a)}},lN=function(a){return a[5][1]},qb=function(b){var -a=b.slice();a[19]=0;return a},qc=function(d,c,b){var -a=d.slice();a[3]=kx[1];a[8]=0;a[9]=0;a[10]=1;a[16]=b;a[17]=c;return a},lO=function(a){return c(a,RW)?0:1},k5=function(a){if(c(a,RX))if(c(a,RY))if(c(a,RZ))if(c(a,R0))if(c(a,R1))if(c(a,R2))if(c(a,R3))if(c(a,R4))return 0;return 1},ix=function(a){if(c(a,R5))if(c(a,R6))return 0;return 1},e=function(a,b){var -c=a?a[1]:0;return k2([0,c],b)[1]},M=function(a,b){var -c=a?a[1]:0;return k2([0,c],b)[3]},k=function(a,b){var -c=a?a[1]:0;return k2([0,c],b)[2]},qd=function(a,b){var -c=a?a[1]:0;return k2([0,c],b)[4]},kz=function(b){var -a=lN(b);if(a)var -d=a[1][2][1],c=d>>0){if(!(jc<(a+1|0)>>>0))return 1}else{var -d=6!==a?1:0;if(!d)return d}}return kz(b)},S=function(b,a){var -c=b?b[1]:0,d=9===e([0,c],a)?1:0,f=d?[0,k([0,c],a)]:d;return f},aS=function(d,c){var -f=d?d[1]:0,a=M([0,f],c),g=e([0,f],c);if(!k5(a))if(!ix(a))if(!lO(a)){if(typeof -g==="number"){var -b=g-1|0,h=58>>0?64<=b?0:1:27===b?1:0;if(h)return 1}return 0}return 1},lP=function(c,a){var -b=c?c[1]:0,d=15===e([0,b],a)?1:0;if(d)var -f=d;else -var -g=63===e([0,b],a)?1:0,f=g?15===e([0,b+1|0],a)?1:0:g;return f},nH=function(b,c){var -d=b?b[1]:0,a=e([0,d],c);if(typeof -a==="number"){var -f=14===a?1:40===a?1:0;if(f)return 1}return 0},y=function(a,b){return x(a,[0,k(0,a),b])},qe=function(c){var -a=c[1];if(typeof -a==="number")switch(a){case -0:return 2;case -108:return 4}else -switch(a[0]){case -0:return 0;case -1:case -4:return 1}var -b=c[2];return lO(b)?3:k5(b)?40:[1,b]},ap=function(a){var -c=qd(0,a);b(qa(a),c);var -d=M(0,a);return y(a,qe([0,e(0,a),d]))},nI=function(a){function -b(b){return x(a,[0,b[1],57])}return function(a){return W(b,a)}},aF=function(a,c){var -b=a[6];return b?y(a,c):b},hU=function(b,a){var -c=b[6];return c?x(b,[0,a[1],a[2]]):c},P=function(a){var -h=a[23][1];if(h){var -j=k(0,a),l=e(0,a),m=M(0,a),n=[0,j,l,k1(a),m];b(h[1],n);}var -g=a[22][1];nE(g,0);var -d=J(g[1],0)[1],o=d?d[1][1]:u(RR);a[21][1]=o;var -p=qd(0,a);b(qa(a),p);var -i=k2([0,0],a)[5];W(function(b){a[2][1]=[0,b,a[2][1]];return 0},i);var -q=[0,k(0,a)];a[5][1]=q;var -c=a[22][1];nE(c,0);if(1>>0))return f(J,a,b(o[14],a)[1]);return f(m,a,b(g,a))}l(h,function(a){return function(n){var -b=n;for(;;){var -c=e(0,a);if(typeof -c==="number"){var -f=c-6|0,o=7>>0?iK===f?1:0:5<(f-1|0)>>>0?1:0;if(o){var -g=13===c?1:0;if(g){var -l=k(0,a);d(a,13);var -h=ad(a),j=[0,[0,i(l,h[1]),[0,h]]];}else -var -j=g;return[0,q(b),j]}}var -m=[0,ad(a),b];if(6!==e(0,a))d(a,10);var -b=m;continue}}});l(n,function(a){d(a,5);var -b=f(h,a,0);d(a,6);return b});l(Z,function(a){d(a,5);var -i=nG(0,a),j=e(0,i);if(typeof -j==="number")if(13<=j){if(O===j)var -q=1;else -if(14<=j)var -k=0,q=0;else -var -q=1;if(q)var -c=[0,f(h,i,0)],k=1;}else -if(6===j)var -c=St,k=1;else -if(0===j)var -c=b(_,i),k=1;else -var -k=0;else -var -k=0;if(!k){if(b(I,j)){var -u=e(Ss,i);if(typeof -u==="number")if(1<(u+mf|0)>>>0)var -r=0;else -var -v=[0,f(h,i,0)],r=1;else -var -r=0;if(!r)var -v=[1,b(g,i)];var -w=v;}else -var -w=[1,b(g,i)];var -c=w;}if(0===c[0])var -s=c;else{var -o=c[1];if(a[14])var -t=c;else{var -p=e(0,a);if(typeof -p==="number")if(6===p)if(12===e(Sr,a))var -n=[0,f(h,a,[0,f(m,a,o),0])],l=1;else -var -n=[1,o],l=1;else -if(10===p){d(a,10);var -n=[0,f(h,a,[0,f(m,a,o),0])],l=1;}else -var -l=0;else -var -l=0;if(!l)var -n=c;var -t=n;}var -s=t;}d(a,6);return s});l(_,function(a){var -b=f(o[13],0,a),c=e(0,a);if(typeof -c==="number")if(!(1<(c+mf|0)>>>0)){var -d=f(J,a,b);ay(a,10);return[0,f(h,a,[0,d,0])]}return[1,f(w,a,f(C,a,f(F,a,f(j,a,f(ac,a,b)))))]});l($,function(a){var -d=k(0,a),c=b(Z,a);return 0===c[0]?iy(p,a,d,0,c[1]):c[1]});l(ab,function(a){var -c=k(0,a),d=f(t,0,a);return iy(p,a,c,d,b(n,a))});l(p,function(a,h,f,e){d(a,12);var -c=b(g,a);return[0,i(h,c[1]),[1,[0,e,c,f]]]});function -S(a,f,e){var -h=b(n,a);d(a,80);var -c=b(g,a);return[0,i(f,c[1]),[0,h,c,e]]}function -T(a,g,e,d){var -b=S(a,g,f(t,0,a)),c=[0,b[1],[1,b[2]]];return[0,[0,c[1],[0,d,[0,c],0,e,1,0]]]}function -U(a,j,h,f,e){if(1-aE(a))y(a,7);var -k=ay(a,79);d(a,80);var -c=b(g,a);return[0,[0,i(j,c[1]),[0,e,[0,c],k,h,0,f]]]}function -B(c,a){var -b=e(0,a);if(typeof -b==="number")if(!(11<=b))switch(b){case -2:if(!c)return 0;break;case -4:if(c)return 0;break;case -9:case -10:return P(a)}return ap(a)}function -u(b,a){return a?x(b,[0,a[1][1],5]):a}l(K,function(K,ap,ao,a){var -m=ap?3===e(0,a)?1:0:ap,aC=k(0,a),aD=m?3:1;d(a,aD);var -j=0;for(;;){if(K)if(ao)throw[0,z,Sv];var -h=k(0,a),p=K?ay(a,42):K,l=b(E,a),r=e(0,a);if(typeof -r==="number"){if(92===r)var -s=1;else{if(O===r)var -L=q(j),n=1;else -if(14<=r)var -s=0,n=0;else -switch(r){case -2:if(m)var -s=0,n=0;else -var -L=q(j),n=1;break;case -4:if(m)var -L=q(j),n=1;else -var -s=0,n=0;break;case -7:d(a,7);var -Z=80===e(Su,a)?1:0;if(Z){var -ax=b(o[14],a);d(a,80);var -_=[0,ax[1]];}else -var -_=Z;var -az=b(g,a);d(a,8);d(a,80);var -$=b(g,a),aA=[2,[0,i(h,$[1]),[0,_,az,$,p,l]]];B(m,a);var -j=[0,aA,j];continue;case -13:if(ao){u(a,l);P(a);var -an=b(g,a),aB=[1,[0,i(h,an[1]),[0,an]]];B(m,a);var -j=[0,aB,j];continue}var -s=0,n=0;break;case -5:var -s=1,n=0;break;default:var -s=0,n=0;}if(n){var -aE=k(0,a),aF=m?4:2;d(a,aF);return[0,i(aC,aE),[0,m,L]]}}if(s){u(a,l);var -aq=f(t,0,a),X=S(a,k(0,a),aq),ar=[3,[0,i(h,X[1]),[0,X,p]]];B(m,a);var -j=[0,ar,j];continue}}if(0===p)var -w=0;else -if(l)var -w=0;else -if(typeof -r==="number")if(80===r){hU(a,[0,h,40]);var -aj=[1,[0,h,Sz]],J=e(0,a),al=0;if(typeof -J==="number"){if(5===J)var -N=1;else -if(92===J)var -N=1;else -var -M=0,N=0;if(N){u(a,l);var -am=T(a,h,al,aj),M=1;}}else -var -M=0;if(!M)var -am=U(a,h,al,l,aj);var -ad=am,w=1;}else -var -w=0;else -var -w=0;if(!w){var -aa=function(a){a0(a,0);var -c=b(o[21],a);h2(a);return c},v=aa(a)[2];if(1===v[0]){var -H=v[1][2];if(c(H,Sw))if(c(H,Sx))var -Q=0,R=0;else -var -R=1;else -var -R=1;if(R){var -ae=e(0,a);if(typeof -ae==="number"){var -I=ae-6|0;if(85>>0)if(87<(I+1|0)>>>0)var -C=0,D=0;else{u(a,l);var -ai=T(a,h,p,v),D=1;}else -if(1<(I-73|0)>>>0)var -C=0,D=0;else -var -ai=U(a,h,p,l,v),D=1;if(D)var -ah=ai,C=1;}else -var -C=0;if(!C){var -af=aa(a),ag=ak(H,Sy);u(a,l);var -y=S(a,h,0),A=y[2][1],F=af[1];if(0===ag){var -Y=A[1];if(A[2])x(a,[0,F,63]);else{var -aG=Y?Y[2]?0:1:0;if(!aG)x(a,[0,F,63]);}}else{var -aH=A[1]?0:A[2]?0:1;if(!aH)x(a,[0,F,62]);}var -as=0,at=0,au=0,av=ag?[1,y]:[2,y],aw=[0,af[2],av,au,p,at,as],ah=[0,[0,i(h,y[1]),aw]];}var -ac=ah,Q=1;}}else -var -Q=0;if(!Q){var -G=e(0,a);if(typeof -G==="number"){if(5===G)var -W=1;else -if(92===G)var -W=1;else -var -V=0,W=0;if(W){u(a,l);var -ab=T(a,h,p,v),V=1;}}else -var -V=0;if(!V)var -ab=U(a,h,p,l,v);var -ac=ab;}var -ad=ac;}B(m,a);var -j=[0,ad,j];continue}});l(t,function(D,a){var -F=k(0,a),z=92===e(0,a)?1:0;if(z){if(1-aE(a))y(a,7);d(a,92);var -c=0,r=0;for(;;){var -C=b(E,a),s=v(o[15],a,0,29),t=s[2],u=s[1],w=e(0,a);if(0===D)var -h=0,f=0;else{if(typeof -w==="number")if(78===w){P(a);var -h=[0,b(g,a)],f=1,m=1;}else -var -m=0;else -var -m=0;if(!m){if(c)x(a,[0,u,58]);var -h=0,f=c;}}var -j=[0,[0,u,[0,t[1][2],t[2],C,h]],r],l=e(0,a);if(typeof -l==="number"){if(93===l)var -p=1;else -if(O===l)var -p=1;else -var -n=0,p=0;if(p)var -A=q(j),n=1;}else -var -n=0;if(!n){d(a,10);if(93!==e(0,a)){var -c=f,r=j;continue}var -A=q(j);}var -G=i(F,k(0,a));d(a,93);var -B=[0,[0,G,[0,A]]];break}}else -var -B=z;return B});l(L,function(a){var -p=k(0,a),l=92===e(0,a)?1:0;if(l){d(a,92);var -c=0;for(;;){var -f=e(0,a);if(typeof -f==="number"){if(93===f)var -j=1;else -if(O===f)var -j=1;else -var -h=0,j=0;if(j){var -n=q(c),r=i(p,k(0,a));d(a,93);var -m=[0,[0,r,[0,n]]],h=1;}}else -var -h=0;if(!h){var -o=[0,b(g,a),c];if(93!==e(0,a))d(a,10);var -c=o;continue}break}}else -var -m=l;return m});l(N,function(a){return f(Q,a,f(o[13],0,a))});l(Q,function(a,m){var -c=[0,m[1],[0,m]];for(;;){var -j=c[2],g=c[1];if(11===e(0,a)){d(a,11);var -k=f(o[13],0,a),l=i(g,k[1]),c=[0,l,[1,[0,l,[0,j,k]]]];continue}var -h=b(L,a),n=h?i(g,h[1][1]):g;return[0,n,[0,j,h]]}});l(ac,function(c,b){var -a=f(Q,c,b);return[0,a[1],[4,a[2]]]});l(R,function(a){var -c=e(0,a);if(typeof -c==="number")if(80===c)return[0,b(r,a)];return 0});function -V(l){var -a=nG(0,l),f=e(0,a);if(typeof -f==="number")if(65===f){var -c=k(0,a);d(a,65);if(5===e(0,a)){d(a,5);a0(a,0);var -h=b(o[8],a);h2(a);var -j=k(0,a);d(a,6);var -g=[0,i(c,j),[0,h]];}else -var -g=[0,c,0];return[0,g]}return 0}function -ae(a){var -c=e(0,a),f=e(SA,a);if(typeof -c==="number")if(80===c){if(typeof -f==="number")if(65===f){d(a,80);return[0,0,V(a)]}var -g=b(R,a);return[0,g,V(a)]}return SB}function -a(d,c){var -a=id(1,c);a0(a,1);var -e=b(d,a);h2(a);return e}function -af(b){return a(g,b)}var -ag=b(t,1);function -ah(b){return a(ag,b)}var -ai=b(t,0);function -aj(b){return a(ai,b)}function -al(b){return a(L,b)}function -am(c,b){return a(v(K,c,0,0),b)}function -an(b){return a(n,b)}function -ao(b){return a(r,b)}function -aq(b){return a(R,b)}function -ar(b){return a(V,b)}function -as(b){return a(ae,b)}return[0,af,aj,ah,al,function(b){return a(N,b)},am,an,ao,aq,ar,as]},nJ=lw([0,nh]),TB=function(p){function -t(a){a0(a,0);var -c=k(0,a);d(a,1);d(a,13);var -e=b(p[9],a),f=k(0,a);d(a,2);h2(a);return[0,i(c,f),[0,e]]}function -h(a){a0(a,0);var -c=k(0,a);d(a,1);if(2===e(0,a))var -g=k(0,a)[2],f=[1,[0,c[1],c[3],g]];else -var -f=[0,b(p[7],a)];var -h=k(0,a);d(a,2);h2(a);return[0,i(c,h),[0,f]]}function -g(a){var -b=k(0,a),c=M(0,a);d(a,n5);return[0,b,[0,c]]}function -m(a){var -b=g(a),f=e(0,a);if(typeof -f==="number"){if(11===f){d(a,11);var -k=g(a),c=[0,i(b[1],k[1]),[0,[0,b],k]];for(;;){var -h=e(0,a);if(typeof -h==="number")if(11===h){d(a,11);var -j=g(a),c=[0,i(c[1],j[1]),[0,[1,c],j]];continue}return[2,c]}}if(80===f){d(a,80);var -l=g(a);return[1,[0,i(b[1],l[1]),[0,b,l]]]}}return[0,b]}function -v(a){var -z=k(0,a),c=g(a);if(80===e(0,a)){d(a,80);var -p=g(a),q=i(c[1],p[1]),s=q,r=[1,[0,q,[0,c,p]]];}else -var -s=c[1],r=[0,c];if(78===e(0,a)){d(a,78);var -b=e(0,a);if(typeof -b==="number")if(1===b){var -u=h(a),v=u[2],m=u[1];if(0!==v[1][0])x(a,[0,m,41]);var -n=[0,m,[0,[1,m,v]]],f=0;}else -var -f=1;else -if(4===b[0]){var -o=b[1],w=o[1];d(a,b);var -n=[0,w,[0,[0,w,[0,[0,o[2]],o[3]]]]],f=0;}else -var -f=1;if(f){y(a,42);var -t=k(0,a),l=t,j=[0,[0,t,[0,TD,TC]]];}else -var -l=n[1],j=n[2];}else -var -l=s,j=0;return[0,i(z,l),[0,r,j]]}function -z(a,j){var -c=0,l=m(a);for(;;){var -b=e(0,a);if(typeof -b==="number"){if(94<=b)var -g=99===b?1:O===b?1:0;else{if(1===b){var -c=[0,[1,t(a)],c];continue}var -g=93<=b?1:0;}if(g){var -h=q(c),f=99===e(0,a)?1:0;if(f)d(a,99);var -n=k(0,a);d(a,93);h2(a);return[0,i(j,n),[0,l,f,h]]}}var -c=[0,[0,v(a)],c];continue}}function -A(a,j){d(a,99);var -l=m(a),n=k(0,a);d(a,93);var -c=a[20][1];if(c){var -e=c[2];if(e)var -f=e[2],b=1;else -var -b=0;}else -var -b=0;if(!b)var -f=u(R8);a[20][1]=f;var -g=k1(a),h=k0(a[21][1],g);a[22][1]=h;return[0,i(j,n),[0,l]]}var -n=function -b(a){return b.fun(a)},j=function -c(a,b){return c.fun(a,b)},o=function -b(a){return b.fun(a)};l(n,function(c){var -a=e(0,c);if(typeof -a==="number"){if(1===a){var -i=h(c);return[0,i[1],[1,i[2]]]}}else -if(4===a[0]){var -f=a[1];d(c,a);return[0,f[1],[2,[0,f[2],f[3]]]]}var -g=b(o,c);return[0,g[1],[0,g[2]]]});function -r(a){switch(a[0]){case -0:return a[1][2][1];case -1:var -c=a[1][2],e=s(TE,c[2][2][1]);return s(c[1][2][1],e);default:var -d=a[1][2],b=d[1],f=0===b[0]?b[1][2][1]:r([2,b[1]]);return s(f,s(TF,d[2][2][1]))}}l(j,function(a,H){var -h=z(a,H);if(h[2][2])var -C=0,m=0;else{a0(a,3);var -g=0;for(;;){var -p=e(0,a);if(typeof -p==="number"){if(92===p){a0(a,2);var -x=k(0,a);d(a,92);var -o=e(0,a);if(typeof -o==="number"){if(99===o)var -w=1;else -if(O===o)var -w=1;else -var -v=0,w=0;if(w)var -l=[0,A(a,x)],v=1;}else -var -v=0;if(!v)var -l=[1,f(j,a,x)];if(0!==l[0]){var -B=l[1],g=[0,[0,B[1],[0,B[2]]],g];continue}var -G=[0,l[1]],s=[0,q(g),G],u=1;}else -if(O===p){ap(a);var -s=[0,q(g),0],u=1;}else -var -t=0,u=0;if(u)var -C=s[1],m=s[2],t=1;}else -var -t=0;if(!t){var -g=[0,b(n,a),g];continue}break}}if(m){var -D=m[1],E=r(h[2][1]);if(c(r(D[2][1]),E))y(a,[6,E]);var -F=D[1];}else -var -F=h[1];return[0,i(h[1],F),[0,h,m,C]]});l(o,function(a){var -b=k(0,a);a0(a,2);d(a,92);return f(j,a,b)});return[0,t,h,g,m,v,z,A,n,j,o]},nK=lw([0,nh]),nL=lw([0,function(l,k){var -c=k[1],d=l[1],b=c[1],i=d[1];if(i)if(b){var -f=b[1],g=i[1],m=pm(f),h=pm(g)-m|0;if(0===h)var -n=pl(f),a=D(pl(g),n);else -var -a=h;}else -var -a=-1;else -var -a=b?1:0;if(0===a)var -j=pn(d[2],c[2]),e=0===j?pn(d[3],c[3]):j;else -var -e=a;return 0===e?lq(l[2],k[2]):e}]),m=f(aN,Uy,Ux),G=Sc(m),N=function(p){function -a(a,k){var -c=k;for(;;){var -b=c[2];switch(b[0]){case -0:return aM(w,a,b[1][1]);case -1:return aM(z,a,b[1][1]);case -2:var -c=b[1][1];continue;case -3:var -d=b[1][1],e=d[2],g=a[2],i=a[1];if(f(nJ[3],e,g))x(i,[0,d[1],30]);var -j=h([0,i,g],d),l=f(nJ[4],e,j[2]);return[0,j[1],l];default:x(a[1],[0,c[1],19]);return a}}}function -w(c,b){if(0===b[0]){var -d=b[1][2],e=d[1],f=1===e[0]?h(c,e[1]):c;return a(f,d[2])}return a(c,b[1][2][1])}function -z(b,d){if(d){var -c=d[1];return 0===c[0]?a(b,c[1]):a(b,c[1][2][1])}return b}function -h(d,c){var -a=c[2],e=c[1],b=d[1];if(ix(a))hU(b,[0,e,29]);var -f=lO(a),g=f||k5(a);if(g)hU(b,[0,e,40]);return[0,b,d[2]]}function -r(b,h,m,g,f){var -i=h||1-m;if(i){var -c=f[2],d=h?id(1-b[6],b):b;if(g){var -j=g[1],e=j[2],k=j[1];if(ix(e))hU(d,[0,k,31]);var -n=lO(e),o=n||k5(e);if(o)hU(d,[0,k,40]);}var -p=aM(a,[0,d,nJ[1]],f[1]),q=c?(a(p,c[1][2][1]),0):c,l=q;}else -var -l=i;return l}function -s(a){d(a,5);var -g=0;for(;;){var -h=e(0,a);if(typeof -h==="number"){var -j=h-6|0,u=7>>0?iK===j?1:0:5<(j-1|0)>>>0?1:0;if(u){var -n=13===h?1:0;if(n){var -s=k(0,a);d(a,13);var -o=f(m[19],a,29),p=[0,[0,i(s,o[1]),[0,o]]];}else -var -p=n;if(6!==e(0,a))y(a,48);var -t=[0,q(g),p];d(a,6);return t}}var -c=f(m[19],a,29);if(78===e(0,a)){d(a,78);var -l=b(m[9],a),r=[0,i(c[1],l[1]),[2,[0,c,l]]];}else -var -r=c;if(6!==e(0,a))d(a,10);var -g=[0,r,g];continue}}function -j(f,e,d){var -g=qc(f,e,d),a=b(m[17],g),c=a[1];return[0,c,[0,[0,c,a[2]]],a[3]]}function -A(i,d,c){var -a=i.slice();a[10]=1;var -f=e(0,a);if(typeof -f==="number")if(1===f){var -g=j(a,d,c);return[0,g[2],g[3]]}var -h=qc(a,d,c),k=b(m[9],h);return[0,[1,k],h[6]]}function -B(a,h,g){var -f=k(0,a),d=e(0,a);if(typeof -d==="number")if(97===d){P(a);var -b=[0,[0,f,0]],c=1;}else -if(98===d){P(a);var -b=[0,[0,f,1]],c=1;}else -var -c=0;else -var -c=0;if(!c)var -b=0;if(b){var -i=h?0:g?0:1;if(!i){x(a,[0,b[1][1],5]);return 0}}return b}function -t(a){return ay(a,aa)}function -u(a){return ay(a,63)}function -v(c){var -d=0===c[2]?1:0;if(d){var -a=c[1];for(;;){if(a){var -e=a[2],b=3===a[1][2][0]?1:0;if(b){var -a=e;continue}return b}return 1}}return d}function -C(a){var -A=k(0,a),q=u(a);d(a,15);var -w=t(a),B=a[7],l=e(0,a);if(0===B)var -c=0;else -if(typeof -l==="number")if(5===l)var -n=0,g=0,c=1;else -if(92===l)var -F=b(p[2],a),G=5===e(0,a)?0:[0,f(m[13],SD,a)],n=F,g=G,c=1;else -var -c=0;else -var -c=0;if(!c)var -C=[0,f(m[13],SC,a)],n=b(p[2],a),g=C;var -o=s(a),x=b(p[11],a),y=j(a,q,w),h=y[2],D=v(o);r(a,y[3],D,g,o);var -z=0===h[0]?[0,h[1][1],0]:[0,h[1][1],1],E=[17,[0,g,o,h,q,w,x[2],z[2],x[1],n]];return[0,i(A,z[1]),E]}function -l(a){var -l=0,k=0;for(;;){var -c=f(m[19],a,28);if(78===e(0,a)){d(a,78);var -g=[0,b(m[9],a)],j=0;}else -if(3===c[2][0])var -g=qh[1],j=qh[2];else -var -g=0,j=[0,[0,c[1],44],0];var -o=g?g[1][1]:c[1],h=[0,[0,i(c[1],o),[0,c,g]],l],n=lu(j,k);if(10===e(0,a)){d(a,10);var -l=h,k=n;continue}var -p=ir(h),r=q(h),s=ir(h),t=q(n);return[0,i(s[1],p[1]),r,t]}}function -c(e,c,a){var -f=k(0,a);d(a,e);var -b=l(a),g=b[3],h=[0,b[2],c];return[0,[0,i(f,b[1]),h],g]}var -D=0,E=24;function -g(a){return c(E,D,a)}function -n(e){var -a=c(27,2,k3(1,e)),b=a[1],d=b[2],f=d[1],g=a[2],h=q(aM(function(b,a){return a[2][2]?b:[0,[0,a[1],43],b]},g,f));return[0,[0,b[1],d],h]}function -o(a){return c(28,1,k3(1,a))}return[0,u,t,B,s,j,v,r,A,function(a){var -m=k(0,a),h=e(0,a);if(typeof -h==="number"){var -j=h+q3|0;if(4>>0)var -b=0;else{switch(j){case -0:var -f=g(a),c=1;break;case -3:var -f=n(a),c=1;break;case -4:var -f=o(a),c=1;break;default:var -b=0,c=0;}if(c)var -d=f,b=1;}}else -var -b=0;if(!b){ap(a);var -d=g(a);}var -l=d[1],p=d[2],q=[27,l[2]];return[0,[0,i(m,l[1]),q],p]},l,o,n,g,C]}(G),h3=function(h){var -g=function -b(a){return b.fun(a)},W=function -b(a){return b.fun(a)},B=function -b(a){return b.fun(a)},C=function -b(a){return b.fun(a)},Y=function -b(a){return b.fun(a)},D=function -b(a){return b.fun(a)},Z=function -b(a){return b.fun(a)},n=function -b(a){return b.fun(a)},E=function -b(a){return b.fun(a)},o=function -b(a){return b.fun(a)},$=function -b(a){return b.fun(a)},H=function -b(a){return b.fun(a)},ab=function -c(a,b){return c.fun(a,b)},j=function -d(a,b,c){return d.fun(a,b,c)},I=function -b(a){return b.fun(a)},J=function -b(a){return b.fun(a)},K=function -d(a,b,c){return d.fun(a,b,c)},L=function -b(a){return b.fun(a)},N=function -c(a,b){return c.fun(a,b)},Q=function -b(a){return b.fun(a)},ac=function -b(a){return b.fun(a)},R=function -c(a,b){return c.fun(a,b)},r=function -e(a,b,c,d){return e.fun(a,b,c,d)},ad=function -b(a){return b.fun(a)},U=function -b(a){return b.fun(a)},ae=function -b(a){return b.fun(a)},af=function -b(a){return b.fun(a)},t=function -c(a,b){return c.fun(a,b)},w=function -b(a){return b.fun(a)};function -V(a){var -c=b(D,a),e=b(Y,a);if(e){if(1-b(C,c))x(a,[0,c[1],15]);var -d=c[2],l=typeof -d==="number"?0:10===d[0]?ix(d[1][2])?(hU(a,[0,c[1],37]),1):0:0,h=f(m[20],a,c),j=b(g,a),k=i(h[1],j[1]);return[0,k,[2,[0,e[1],h,j]]]}return c}function -aj(b,a){throw k7}function -al(g){var -a=p$(aj,g),b=V(a),d=e(0,a);if(typeof -d==="number"){var -h=12===d?1:80===d?1:0;if(h)throw k7}if(aS(0,a)){var -f=b[2];if(typeof -f!=="number"&&10===f[0])if(!c(f[1][2],SE))if(!kz(a))throw k7;return b}return b}l(g,function(a){var -f=e(0,a),i=aS(0,a);if(typeof -f==="number"){var -d=f-6|0;if(85>>0)var -c=87<(d+1|0)>>>0?0:1;else -if(52===d){if(a[16])return b(W,a);var -c=0;}else -var -c=0;}else -var -c=0;if(!c)if(0===i)return V(a);var -g=qg(a,al);if(g)return g[1];var -h=qg(a,af);return h?h[1]:V(a)});l(W,function(a){var -f=k(0,a);d(a,58);if(1-a[16])y(a,25);var -h=ay(a,aa),n=9===e(0,a)?1:0,o=n||k6(a),p=1-o,j=h||p,c=j?[0,b(g,a)]:j;if(c)var -l=c[1][1];else{var -m=S(0,a),q=m?m[1]:f;T(a);var -l=q;}return[0,i(f,l),[25,[0,c,h]]]});l(B,function(b){var -a=b[2];if(typeof -a!=="number")switch(a[0]){case -10:case -15:case -16:return 1}return 0});l(C,function(b){var -a=b[2];if(typeof -a!=="number")switch(a[0]){case -0:case -10:case -15:case -16:case -18:return 1}return 0});l(Y,function(d){var -f=e(0,d);if(typeof -f==="number"){var -g=f+n2|0;if(12>>0)var -c=0;else{switch(g){case -0:var -a=SF;break;case -1:var -a=SG;break;case -2:var -a=SH;break;case -3:var -a=SI;break;case -4:var -a=SJ;break;case -5:var -a=SK;break;case -6:var -a=SL;break;case -7:var -a=SM;break;case -8:var -a=SN;break;case -9:var -a=SO;break;case -10:var -a=SP;break;case -11:var -a=SQ;break;default:var -a=SR;}var -b=a,c=1;}}else -var -c=0;if(!c)var -b=0;if(0!==b)P(d);return b});l(D,function(a){var -h=k(0,a),c=b(Z,a);if(79===e(0,a)){d(a,79);var -j=b(g,ie(0,a));d(a,80);var -f=a1(g,a),l=i(h,f[1]);return[0,l,[7,[0,c,j,f[2]]]]}return c});function -ag(d,c,b,a){return[0,a,[14,[0,b,d,c]]]}function -ah(a,k,j){var -c=k,b=j;for(;;){var -f=e(0,a);if(typeof -f==="number")if(82===f){d(a,82);var -g=a1(n,a),h=i(b,g[1]),c=ag(c,g[2],1,h),b=h;continue}return[0,b,c]}}l(Z,function(a){var -k=a1(n,a),l=ah(a,k[2],k[1]),b=l[2],c=l[1];for(;;){var -f=e(0,a);if(typeof -f==="number")if(81===f){d(a,81);var -g=a1(n,a),h=ah(a,g[2],g[1]),j=i(c,h[1]),b=ag(b,h[2],0,j),c=j;continue}return b}});function -ai(d,c,b,a){return[0,a,[3,[0,b,d,c]]]}l(n,function(d){var -w=0;b:for(;;){var -Q=k(0,d),H=0!==b(E,d)?1:0,l=b(o,ie(0,d)),I=lN(d),R=I?I[1]:l[1],z=i(Q,R);if(92===e(0,d))var -J=l[2],T=typeof -J==="number"?0:12===J[0]?(y(d,47),1):0;var -A=e(0,d);if(typeof -A==="number"){var -g=A+rK|0;if(1>>0)if(66<=g)switch(g+n2|0){case -0:var -c=SS,a=1;break;case -1:var -c=ST,a=1;break;case -2:var -c=SU,a=1;break;case -3:var -c=SV,a=1;break;case -4:var -c=SW,a=1;break;case -5:var -c=SX,a=1;break;case -6:var -c=SY,a=1;break;case -7:var -c=SZ,a=1;break;case -8:var -c=S0,a=1;break;case -9:var -c=S1,a=1;break;case -10:var -c=S2,a=1;break;case -11:var -c=S3,a=1;break;case -12:var -c=S4,a=1;break;case -13:var -c=S5,a=1;break;case -14:var -c=S6,a=1;break;case -15:var -c=S7,a=1;break;case -16:var -c=S8,a=1;break;case -17:var -c=S9,a=1;break;case -18:var -c=S_,a=1;break;case -19:var -c=S$,a=1;break;default:var -m=0,a=0;}else -var -m=0,a=0;else -if(0===g)if(d[11])var -c=0,a=1;else -var -c=Ta,a=1;else -var -c=Tb,a=1;if(a)var -h=c,m=1;}else -var -m=0;if(!m)var -h=0;if(0!==h)P(d);if(h){var -K=h[1],L=K[1],S=H?14===L?1:0:H;if(S)x(d,[0,z,16]);var -q=l,p=[0,L,K[2]],n=z,f=w;for(;;){var -r=p[2],B=p[1];if(f){var -s=f[1],C=s[2],t=C[2],M=0===t[0]?t[1]:t[1]-1|0;if(r[1]<=M){var -D=i(s[3],n),N=ai(s[1],q,C[1],D),q=N,p=[0,B,r],n=D,f=f[2];continue}}var -w=[0,[0,q,[0,B,r],n],f];continue b}}var -u=l,F=z,j=w;for(;;){if(j){var -v=j[1],G=i(v[3],F),O=j[2],u=ai(v[1],u,v[2][1],G),F=G,j=O;continue}return u}}});l(E,function(b){var -a=e(0,b);if(typeof -a==="number")if(48<=a){if(97<=a){if(!(lj<=a))switch(a+rq|0){case -0:return Tc;case -1:return Td;case -6:return Te;case -7:return Tf}}else -if(64===a)if(b[17])return Tg}else -if(45<=a)switch(a+ll|0){case -0:return Th;case -1:return Ti;default:return Tj}return 0});l(o,function(a){var -j=k(0,a),l=b(E,a);if(l){var -m=l[1];P(a);var -n=a1(o,a),p=n[2],q=i(j,n[1]);if(6===m)var -r=p[2],u=typeof -r==="number"?0:10===r[0]?(hU(a,[0,q,33]),1):0;else -var -u=0;return[0,q,[23,[0,m,1,p]]]}var -g=e(0,a);if(typeof -g==="number")if(lj===g)var -c=Tk,f=1;else -if(jc===g)var -c=Tl,f=1;else -var -f=0;else -var -f=0;if(!f)var -c=0;if(c){P(a);var -s=a1(o,a),d=s[2];if(1-b(B,d))x(a,[0,d[1],15]);var -h=d[2],v=typeof -h==="number"?0:10===h[0]?ix(h[1][2])?(aF(a,39),1):0:0,t=[24,[0,c[1],d,1]];return[0,i(j,s[1]),t]}return b($,a)});l($,function(a){var -c=b(H,a);if(kz(a))return c;var -g=e(0,a);if(typeof -g==="number")if(lj===g)var -d=Tm,f=1;else -if(jc===g)var -d=Tn,f=1;else -var -f=0;else -var -f=0;if(!f)var -d=0;if(d){if(1-b(B,c))x(a,[0,c[1],15]);var -h=c[2],m=typeof -h==="number"?0:10===h[0]?ix(h[1][2])?(aF(a,38),1):0:0,j=k(0,a);P(a);var -l=[24,[0,d[1],c,0]];return[0,i(c[1],j),l]}return c});l(H,function(d){var -g=k(0,d),a=d.slice(),l=1-d[15];a[15]=0;var -h=e(0,a);if(typeof -h==="number")if(44===h)if(l)var -i=b(I,a),c=1;else -var -c=0;else -if(50===h)var -i=f(ab,a,g),c=1;else -var -c=0;else -var -c=0;if(!c)var -i=lP(0,a)?b(L,a):b(Q,a);return v(j,a,g,v(K,a,g,i))});l(ab,function(a,e){d(a,50);d(a,5);var -c=b(g,ie(0,a));d(a,6);return[0,i(e,c[1]),[11,c]]});l(j,function(a,c,f){var -g=e(0,a);if(typeof -g==="number")switch(g){case -5:if(!a[12]){var -h=b(J,a),n=i(c,h[1]);return v(j,a,c,[0,n,[4,[0,f,h[2]]]])}break;case -7:d(a,7);var -o=b(m[7],a),p=i(c,k(0,a));d(a,8);return v(j,a,c,[0,p,[15,[0,f,[1,o],1]]]);case -11:d(a,11);var -l=b(w,a)[1];return v(j,a,c,[0,i(c,l[1]),[15,[0,f,[0,l],0]]])}else -if(2===g[0])return v(j,a,c,iy(r,a,c,f,g[1]));return f});l(I,function(a){var -c=k(0,a);d(a,44);if(a[10])if(11===e(0,a)){d(a,11);var -o=[0,c,To];if(ak(M(0,a),Tp)){var -p=f(m[13],0,a);return[0,i(c,p[1]),[16,[0,o,p]]]}ap(a);P(a);return[0,c,[10,o]]}var -q=k(0,a),s=e(0,a);if(typeof -s==="number")if(44===s)var -t=b(I,a),j=1;else -var -j=0;else -var -j=0;if(!j)var -t=lP(0,a)?b(L,a):b(Q,a);var -u=v(K,p_(1,a),q,t),g=e(0,a);if(typeof -g==="number")var -l=0;else -if(2===g[0])var -h=iy(r,a,q,u,g[1]),l=1;else -var -l=0;if(!l)var -h=u;var -w=e(0,a);if(typeof -w==="number")if(5===w)var -x=b(J,a),z=x[1],y=x[2],n=1;else -var -n=0;else -var -n=0;if(!n)var -z=h[1],y=0;return[0,i(c,z),[17,[0,h,y]]]});l(J,function(a){var -r=k(0,a);d(a,5);var -c=0;for(;;){var -f=e(0,a);if(typeof -f==="number"){var -t=6===f?1:O===f?1:0;if(t){var -o=q(c),s=k(0,a);d(a,6);return[0,i(r,s),o]}}var -j=e(0,a);if(typeof -j==="number")if(13===j){var -n=k(0,a);d(a,13);var -l=b(g,a),m=[1,[0,i(n,l[1]),[0,l]]],h=1;}else -var -h=0;else -var -h=0;if(!h)var -m=[0,b(g,a)];var -p=[0,m,c];if(6!==e(0,a))d(a,10);var -c=p;continue}});l(K,function(a,c,f){var -g=e(0,a);if(typeof -g==="number")switch(g){case -7:d(a,7);var -l=p_(0,a),n=b(m[7],l),o=k(0,a);d(a,8);return v(j,a,c,[0,i(c,o),[15,[0,f,[1,n],1]]]);case -11:d(a,11);var -h=b(w,a)[1];return v(j,a,c,[0,i(c,h[1]),[15,[0,f,[0,h],0]]])}else -if(2===g[0])return v(j,a,c,iy(r,a,c,f,g[1]));return f});l(L,function(a){var -w=k(0,a),n=b(h[1],a);d(a,15);var -o=b(h[2],a);if(5===e(0,a))var -c=0,p=0;else{var -s=e(0,a);if(typeof -s==="number"){var -t=92!==s?1:0;if(t)var -l=0;else -var -u=t,l=1;}else -var -l=0;if(!l)var -u=[0,f(m[13],Tq,a)];var -c=u,p=b(G[2],a);}var -g=b(h[4],a),q=b(G[11],a),j=v(h[5],a,n,o),r=j[2],x=b(h[6],g);ig(h[7],a,j[3],x,c,g);var -y=0===r[0]?0:1,z=[8,[0,c,g,r,n,o,q[2],y,q[1],p]];return[0,i(w,j[1]),z]});l(N,function(e,f){var -a=M(0,e);if(0===f)var -c=0;else -switch(f-1|0){case -0:aF(e,32);var -h=1;try{var -k=m9(m8(s(Tt,a)));}catch(d){h=0;d=X(d);if(d[1]!==h0)throw d;var -b=u(s(Ts,a)),c=1;}if(h)var -b=k,c=1;break;case -2:var -i=1;try{var -l=p2(a);}catch(d){i=0;d=X(d);if(lv){y(e,59);var -g=ou;}else{if(d[1]!==h0)throw d;var -g=u(s(Tu,a));}var -b=g,c=1;}if(i)var -b=l,c=1;break;default:var -c=0;}if(!c)try{var -j=m9(m8(a)),b=j;}catch(c){c=X(c);if(c[1]!==h0)throw c;var -b=u(s(Tr,a));}d(e,[0,f]);return b});l(Q,function(a){var -g=k(0,a),c=e(0,a);if(typeof -c==="number")switch(c){case -1:return b(ac,a);case -5:return b(ad,a);case -7:var -j=b(U,a);return[0,j[1],[0,j[2]]];case -21:d(a,21);return[0,g,1];case -29:var -s=M(0,a);d(a,29);return[0,g,[13,[0,0,s]]];case -40:return b(m[23],a);case -51:var -u=k(0,a);d(a,51);return[0,u,0];case -92:var -l=b(m[18],a);return[0,l[1],[12,l[2]]];case -30:case -31:var -t=M(0,a);d(a,c);return[0,g,[13,[0,[1,31===c?1:0],t]]];case -73:case -99:return b(ae,a)}else -switch(c[0]){case -0:var -v=M(0,a);return[0,g,[13,[0,[2,f(N,a,c[1])],v]]];case -1:var -h=c[1],n=h[4],o=h[3],p=h[2],q=h[1];if(n)aF(a,32);d(a,[1,[0,q,p,o,n]]);return[0,q,[13,[0,[0,p],o]]];case -2:var -r=f(R,a,c[1]);return[0,r[1],[21,r[2]]]}if(aS(0,a)){var -i=f(m[13],0,a);return[0,i[1],[10,i]]}ap(a);if(ii===c)P(a);return[0,g,[13,[0,0,Tv]]]});l(ac,function(c){var -a=b(m[11],c);return[0,a[1],[18,a[2]]]});l(R,function(a,c){var -x=c[3],y=c[2],n=c[1];d(a,[2,c]);var -A=[0,n,[0,[0,y[2],y[1]],x]];if(x)var -D=n,C=[0,A,0],B=0;else{var -g=[0,A,0],r=0;for(;;){var -h=b(m[7],a),j=[0,h,r],s=e(0,a);if(typeof -s==="number")if(2===s){a0(a,4);var -k=e(0,a);if(typeof -k==="number")var -p=1;else -if(2===k[0]){var -l=k[1],t=l[3],u=l[2];P(a);var -v=l[1],E=[0,[0,u[2],u[1]],t];h2(a);var -w=[0,[0,v,E],g];if(!t){var -g=w,r=j;continue}var -F=q(j),f=[0,v,q(w),F],o=1,p=0;}else -var -p=1;if(p)throw[0,z,Tw]}else -var -o=0;else -var -o=0;if(!o){ap(a);var -G=[0,h[1],Tx],H=q(j),I=q([0,G,g]),f=[0,h[1],I,H];}var -D=f[1],C=f[2],B=f[3];break}}return[0,i(n,D),[0,C,B]]});l(r,function(e,d,c,b){var -a=f(R,e,b);return[0,i(d,a[1]),[20,[0,c,a]]]});l(ad,function(a){d(a,5);var -c=b(g,a),j=e(0,a);if(typeof -j==="number")if(10===j)var -k=f(t,a,[0,c,0]),h=1;else -if(80===j)var -l=b(G[8],a),k=[0,i(c[1],l[1]),[22,[0,c,l]]],h=1;else -var -h=0;else -var -h=0;if(!h)var -k=c;d(a,6);return k});l(U,function(a){var -p=k(0,a);d(a,7);var -c=0;for(;;){var -f=e(0,a);if(typeof -f==="number"){if(14<=f)var -h=O===f?1:0;else -if(8<=f)switch(f-8|0){case -2:d(a,10);var -c=[0,0,c];continue;case -5:var -n=k(0,a);d(a,13);var -j=b(g,a),o=[1,[0,i(n,j[1]),[0,j]]];if(8!==e(0,a))d(a,10);var -c=[0,[0,o],c];continue;case -0:var -h=1;break;default:var -h=0;}else -var -h=0;if(h){var -l=q(c),r=k(0,a);d(a,8);return[0,i(p,r),[0,l]]}}var -m=[0,b(g,a)];if(8!==e(0,a))d(a,10);var -c=[0,[0,m],c];continue}});l(ae,function(a){a0(a,5);var -i=k(0,a),d=e(0,a);if(typeof -d!=="number"&&3===d[0]){var -f=d[1],j=M(0,a);P(a);var -b=f[3],l=f[2];h2(a);var -g=F(p(b));oP(function(a){var -b=a-103|0;if(!(18>>0))switch(b){case -0:case -2:case -6:case -14:case -18:return A(g,a)}return 0},b);var -h=_(g);if(c(h,b))y(a,[3,b]);return[0,i,[13,[0,[3,[0,l,h]],j]]]}throw[0,z,Ty]});function -am(d,b){if(typeof -b==="number"){var -a=b-29|0,c=16>>0?19===a?1:0:14<(a-1|0)>>>0?1:0;if(c)return 0}throw k7}l(af,function(C){var -a=p$(am,C),D=k(0,a),n=12!==e(Tz,a)?1:0,o=n?b(h[1],a):n,p=b(G[2],a);if(aS(0,a))if(0===p)var -q=f(m[13],TA,a),r=q[1],c=[0,[0,[0,r,[3,[0,[0,r,q[2]],0,0]]],0],0],t=0,s=0,j=1;else -var -j=0;else -var -j=0;if(!j)var -J=b(h[4],a),K=nG(1,a),B=b(G[11],K),c=J,t=B[1],s=B[2];if(c[2])var -l=0;else -if(c[1])var -g=a,l=1;else -var -l=0;if(!l)var -g=qb(a);var -u=kz(g),E=u?12===e(0,g)?1:0:u;if(E)y(g,45);d(g,12);var -w=qb(g),F=h[8],x=a1(function(a){return v(F,a,o,0)},w),z=x[2],A=z[1],H=b(h[6],c);ig(h[7],w,z[2],H,0,c);var -I=0===A[0]?0:1;return[0,i(D,x[1]),[1,[0,0,c,A,o,0,s,I,t,p]]]});l(t,function(a,c){var -h=e(0,a);if(typeof -h==="number")if(10===h){d(a,10);return f(t,a,[0,b(g,a),c])}var -k=ir(c),j=q(c),l=ir(j);return[0,i(l[1],k[1]),[19,[0,j]]]});l(w,function(c){var -a=e(0,c),g=M(0,c),h=k(0,c);if(typeof -a==="number"){var -j=60<=a?64<=a?0:1:0===a?1:0;if(j)return[0,f(m[13],0,c),0]}if(typeof -a==="number"){if(65<=a)if(kC===a)var -b=1;else -if(ol<=a)var -b=1;else -var -d=0,b=0;else -if(60<=a)if(64<=a)var -b=1;else -var -d=0,b=0;else -if(15<=a)var -b=1;else -var -d=0,b=0;if(b)var -i=[0,[0,h,qe([0,a,g])]],d=1;}else -var -d=0;if(!d){ap(c);var -i=0;}P(c);return[0,[0,h,g],i]});return[0,U,g,D,w,C,H,N,t]}(N),kA=function(h){function -o(a){var -f=a[24][3];if(f){var -c=0;for(;;){var -d=e(0,a);if(typeof -d==="number")if(14===d){P(a);var -c=[0,b(h[6],a),c];continue}return q(c)}}return f}function -p(a){var -c=e(0,a);if(typeof -c==="number"){if(7===c){var -r=k(0,a);d(a,7);var -s=ie(0,a),t=b(m[9],s),u=k(0,a);d(a,8);return[0,i(r,u),[2,t]]}}else -switch(c[0]){case -0:var -v=M(0,a),n=k(0,a);return[0,n,[0,[0,n,[0,[2,f(h[7],a,c[1])],v]]]];case -1:var -g=c[1],o=g[4],p=g[3],q=g[2],j=g[1];if(o)aF(a,32);d(a,[1,[0,j,q,p,o]]);return[0,j,[0,[0,j,[0,[0,q],p]]]]}var -l=b(h[4],a)[1];return[0,l[1],[1,l]]}function -r(a,n){var -g=b(N[2],a),h=p(a),e=h[1],o=k(0,a),c=b(N[4],a),f=0,q=0;if(0===n){var -j=c[1];if(c[2])x(a,[0,e,63]);else{var -u=j?j[2]?0:1:0;if(!u)x(a,[0,e,63]);}}else{var -w=c[1]?0:c[2]?0:1;if(!w)x(a,[0,e,62]);}var -r=b(G[9],a),l=v(N[5],a,f,g),d=l[2],s=b(N[6],c);ig(N[7],a,l[3],s,0,c);var -m=0===d[0]?[0,d[1][1],0]:[0,d[1][1],1],t=i(o,m[1]);return[0,h[2],[0,t,[0,0,c,d,f,g,0,m[2],r,q]]]}var -w=function -b(a){return b.fun(a)},C=function -c(a,b){return c.fun(a,b)},D=function -c(a,b){return c.fun(a,b)},s=function -f(a,b,c,d,e){return f.fun(a,b,c,d,e)},g=function -c(a,b){return c.fun(a,b)};l(w,function(a){var -g=k(0,a);if(13===e(0,a)){d(a,13);var -E=b(m[9],a);return[1,[0,i(g,E[1]),[0,E]]]}var -y=qi?qi[1]:0,z=aS([0,y],a);if(z)var -A=z,v=0;else{var -B=e([0,y],a);if(typeof -B==="number")var -w=1;else -if(1>>0)if(nY<=r)var -j=0,l=0;else -switch(r+80|0){case -2:case -5:case -10:var -l=1;break;default:var -j=0,l=0;}else -if(10<(r-1|0)>>>0)var -l=1;else -var -j=0,l=0;if(l)var -L=ig(s,a,g,q,0,0),j=1;}else -var -j=0;if(!j)var -L=f(D,a,g);var -M=L,x=1;}else{var -O=e(0,a);if(typeof -O==="number"){var -t=O+on|0;if(12>>0)if(nY<=t)var -n=0,o=0;else -switch(t+80|0){case -2:case -5:case -10:var -o=1;break;default:var -n=0,o=0;}else -if(10<(t-1|0)>>>0)var -o=1;else -var -n=0,o=0;if(o)var -P=ig(s,a,g,q,0,0),n=1;}else -var -n=0;if(!n)var -P=f(C,a,g);var -M=P,x=1;}if(x)var -I=M,h=1;}else -var -h=0;}else -var -h=0;else -var -h=0;if(!h)var -I=ig(s,a,g,H[2],F,G);return[0,I]});l(C,function(e,d){var -a=r(e,1),b=a[2],c=b[1],f=[0,a[1],[1,[0,c,b[2]]],0,0];return[0,i(d,c),f]});l(D,function(e,d){var -a=r(e,0),b=a[2],c=b[1],f=[0,a[1],[2,[0,c,b[2]]],0,0];return[0,i(d,c),f]});l(s,function(h,g,c,s,r){var -f=a1(function(a){var -g=e(0,a);if(typeof -g==="number"){if(92===g)var -h=1;else -if(11<=g)var -h=0;else -switch(g){case -5:var -h=1;break;case -2:case -10:var -B=0,C=1;switch(c[0]){case -0:var -n=c[1],l=[0,n[1],[13,n[2]]];break;case -1:var -o=c[1],l=[0,o[1],[10,o]];break;default:var -l=c[1];}return[0,l,C,B];default:var -h=0;}if(h){var -t=k(0,a),u=b(G[2],a),j=b(N[4],a),w=b(G[9],a),p=v(N[5],a,s,r),f=p[2],x=b(N[6],j);ig(N[7],a,p[3],x,0,j);var -z=1,A=0,q=0===f[0]?[0,f[1][1],0]:[0,f[1][1],1],y=i(t,q[1]);return[0,[0,y,[8,[0,0,j,f,s,r,0,q[2],w,u]]],A,z]}}d(a,80);return[0,b(m[9],a),0,0]},h),a=f[2],j=[0,c,[0,a[1]],a[3],a[2]];return[0,i(g,f[1]),j]});l(g,function(a,h){var -c=e(0,a);if(typeof -c==="number"){var -j=2===c?1:O===c?1:0;if(j)return q(h)}var -i=b(w,a);if(2!==e(0,a))d(a,10);return f(g,a,[0,i,h])});var -j=function -b(a){return b.fun(a)},n=function -c(a,b){return c.fun(a,b)},z=function -b(a){return b.fun(a)},A=function -b(a){return b.fun(a)};function -a(a){var -b=k(0,a);d(a,1);var -c=f(g,a,0),e=k(0,a);d(a,2);return[0,i(b,e),[0,c]]}l(j,function(a){if(41===e(0,a)){d(a,41);var -c=a.slice();c[16]=0;var -l=b(h[6],c),i=[0,l],g=b(G[4],a);}else -var -i=0,g=0;var -j=52===e(0,a)?1:0;if(j){if(1-aE(a))y(a,11);d(a,52);var -k=f(n,a,0);}else -var -k=j;return[0,b(z,a),i,g,k]});l(n,function(a,k){var -c=f(m[13],0,a),g=b(G[4],a),l=g?i(c[1],g[1][1]):c[1],h=[0,[0,l,[0,c,g]],k],j=e(0,a);if(typeof -j==="number")if(10===j){d(a,10);return f(n,a,h)}return q(h)});l(z,function(a){var -j=k(0,a);d(a,1);var -c=0;for(;;){var -g=e(0,a);if(typeof -g==="number"){var -f=g-3|0;if(kD>>0){if(!(jc<(f+1|0)>>>0)){var -h=q(c),l=k(0,a);d(a,2);return[0,i(j,l),[0,h]]}}else -if(6===f){d(a,9);continue}}var -c=[0,b(A,a),c];continue}});function -t(b,a){return a?x(b,[0,a[1][1],5]):a}function -u(a,w,F,j,p,o,f,u){for(;;){var -x=e(0,a);if(typeof -x==="number"){var -q=x-78|0;if(2>>0)var -E=nY===q?0:1;else{if(1===q){ap(a);P(a);continue}var -E=0;}if(!E)if(!p)if(!o){var -C=a1(function(a){var -l=b(G[9],a),g=a[24],h=78===e(0,a)?1:0;if(h){var -i=f?g[2]:f;if(i)var -c=i;else -var -k=1-f,c=k?g[1]:k;var -j=c?(d(a,78),[0,b(m[7],a)]):c;}else -var -j=h;if(!ay(a,9)){var -n=7===e(0,a)?1:0,o=n||(5===e(0,a)?1:0);if(o)ap(a);}return[0,l,j]},a),D=C[2],O=i(w,C[1]);return[1,[0,O,[0,j,D[2],D[1],f,u]]]}}t(a,u);var -H=k(0,a),I=b(G[2],a),r=b(N[4],a),J=b(G[9],a),y=v(N[5],a,p,o),l=y[2],K=b(N[6],r);ig(N[7],a,y[3],K,0,r);var -z=0===l[0]?[0,l[1][1],0]:[0,l[1][1],1],A=z[1],L=i(H,A),M=[0,L,[0,0,r,l,p,o,0,z[2],J,I]];if(0===f){switch(j[0]){case -0:var -s=j[1][2][1];if(typeof -s==="number")var -n=1;else -if(0===s[0])if(c(s[1],TI))var -g=0,h=0,n=0;else -var -h=1,n=0;else -var -n=1;if(n)var -g=0,h=0;break;case -1:if(c(j[1][2],TJ))var -g=0,h=0;else -var -h=1;break;default:var -g=0,h=0;}if(h)var -B=0,g=1;}else -var -g=0;if(!g)var -B=1;return[0,[0,i(w,A),[0,B,j,M,f,F]]]}}l(A,function(a){var -l=k(0,a),m=o(a),B=5!==e(TK,a)?1:0;if(B)var -C=92!==e(TL,a)?1:0,g=C?ay(a,42):C;else -var -g=B;var -D=5!==e(TM,a)?1:0;if(D)var -E=80!==e(TN,a)?1:0,h=E?b(N[1],a):E;else -var -h=D;var -s=b(N[2],a),j=v(N[3],a,h,s);if(0===s)if(j)var -n=b(N[2],a),w=1;else -var -w=0;else -var -w=0;if(!w)var -n=s;var -F=p(a);if(0===h)if(0===n){var -q=F[2];if(1===q[0]){var -G=q[1][2];if(!c(G,TO)){var -f=e(0,a);if(typeof -f==="number"){var -K=78<=f?81<=f?92===f?1:0:79===f?0:1:5===f?1:9===f?1:0;if(K)return u(a,l,m,q,h,n,g,j)}t(a,j);var -x=r(a,1),y=x[2],H=[0,2,x[1],y,g,m];return[0,[0,i(l,y[1]),H]]}if(!c(G,TP)){var -d=e(0,a);if(typeof -d==="number"){var -J=78<=d?81<=d?92===d?1:0:79===d?0:1:5===d?1:9===d?1:0;if(J)return u(a,l,m,q,h,n,g,j)}t(a,j);var -z=r(a,0),A=z[2],I=[0,3,z[1],A,g,m];return[0,[0,i(l,A[1]),I]]}}}return u(a,l,m,F[2],h,n,g,j)});function -B(q,p){var -a=id(1,q),r=k(0,a),s=lu(p,o(a));d(a,40);var -g=k3(1,a),t=a[7],u=aS(0,g);if(0===t)var -e=0;else{var -n=0!==u?1:0;if(n)var -e=0;else -var -h=n,e=1;}if(!e)var -h=[0,f(m[13],0,g)];var -v=b(G[3],a),c=b(j,a),l=c[1],w=i(r,l[1]);return[0,w,[2,[0,h,l,c[2],v,c[3],c[4],s]]]}return[0,p,a,B,function(a){var -s=k(0,a),t=o(a);d(a,40);var -n=e(0,a);if(typeof -n==="number"){var -l=n-1|0;if(40>>0)if(91===l)var -h=1;else -var -g=0,h=0;else -if(38<(l-1|0)>>>0)var -h=1;else -var -g=0,h=0;if(h)var -q=0,p=0,g=1;}else -var -g=0;if(!g)var -v=[0,f(m[13],0,a)],q=v,p=b(G[3],a);var -c=b(j,a),r=c[1],u=i(s,r[1]);return[0,u,[5,[0,q,r,c[2],p,c[3],c[4],t]]]},o]}(h3),R=function(aG){var -g=function -b(a){return b.fun(a)},h=function -b(a){return b.fun(a)},L=function -b(a){return b.fun(a)},Q=function -b(a){return b.fun(a)},R=function -b(a){return b.fun(a)},U=function -b(a){return b.fun(a)},V=function -b(a){return b.fun(a)},X=function -b(a){return b.fun(a)},Y=function -b(a){return b.fun(a)},Z=function -b(a){return b.fun(a)},_=function -b(a){return b.fun(a)},$=function -b(a){return b.fun(a)},ab=function -b(a){return b.fun(a)},ac=function -b(a){return b.fun(a)},ad=function -b(a){return b.fun(a)},ae=function -b(a){return b.fun(a)},af=function -b(a){return b.fun(a)},a=function -b(a){return b.fun(a)},C=function -b(a){return b.fun(a)},r=function -b(a){return b.fun(a)},D=function -b(a){return b.fun(a)},t=function -b(a){return b.fun(a)},o=function -c(a,b){return c.fun(a,b)},ag=function -c(a,b){return c.fun(a,b)},w=function -c(a,b){return c.fun(a,b)},E=function -c(a,b){return c.fun(a,b)},F=function -c(a,b){return c.fun(a,b)},H=function -c(a,b){return c.fun(a,b)},ah=function -c(a,b){return c.fun(a,b)},ai=function -c(a,b){return c.fun(a,b)},I=function -c(a,b){return c.fun(a,b)},j=function -b(a){return b.fun(a)},n=function -b(a){return b.fun(a)},A=function -d(a,b,c){return d.fun(a,b,c)},aj=function -c(a,b){return c.fun(a,b)},J=function -c(a,b){return c.fun(a,b)},B=function -b(a){return b.fun(a)};function -K(b,d){var -c=d;for(;;){var -a=c[2];switch(a[0]){case -0:var -e=a[1][1];return aM(function(b,a){var -c=0===a[0]?a[1][2][2]:a[1][2][1];return K(b,c)},b,e);case -1:var -f=a[1][1];return aM(function(c,b){if(b){var -a=b[1],d=0===a[0]?a[1]:a[1][2][1];return K(c,d)}return c},b,f);case -2:var -c=a[1][1];continue;case -3:return[0,a[1][1],b];default:return u(TQ)}}}l(g,function(a){var -b=k(0,a);d(a,9);return[0,b,1]});l(h,function(a){var -g=k(0,a);d(a,32);if(9===e(0,a))var -c=0;else -if(k6(a))var -c=0;else{var -o=f(m[13],0,a),p=o[2];if(1-f(nK[3],p,a[3]))y(a,[4,p]);var -b=[0,o],c=1;}if(!c)var -b=0;var -h=S(0,a),q=h?h[1]:b?b[1][1]:g,j=i(g,q),l=0===b?1:0;if(l)var -r=a[8],s=r||a[9],n=1-s;else -var -n=l;if(n)x(a,[0,j,23]);T(a);return[0,j,[1,[0,b]]]});l(L,function(a){var -g=k(0,a);d(a,35);if(9===e(0,a))var -c=0;else -if(k6(a))var -c=0;else{var -l=f(m[13],0,a),n=l[2];if(1-f(nK[3],n,a[3]))y(a,[4,n]);var -b=[0,l],c=1;}if(!c)var -b=0;var -h=S(0,a),o=h?h[1]:b?b[1][1]:g,j=i(g,o);if(1-a[8])x(a,[0,j,22]);T(a);return[0,j,[3,[0,b]]]});l(Q,function(a){var -b=k(0,a);d(a,59);var -c=S(0,a),e=c?c[1]:b;T(a);return[0,i(b,e),0]});l(R,function(a){var -f=k(0,a);d(a,37);var -g=k4(1,a),h=b(m[2],g);d(a,25);d(a,5);var -j=b(m[7],a),l=k(0,a);d(a,6);var -c=S(0,a),n=c?c[1]:l;if(9===e(0,a))T(a);return[0,i(f,n),[10,[0,h,j]]]});function -al(c,a,f){if(f){var -d=f[1];if(0===d[0]){var -g=d[1],e=g[2][1];if(e)if(!e[1][2][2]){var -h=e[2];if(!h)return h}return x(c,[0,g[1],a])}var -i=d[1],j=i[1],k=1-b(m[24],[0,j,i[2]]);return k?x(c,[0,j,a]):k}return y(c,a)}l(U,function(a){var -l=k(0,a);d(a,39);var -t=a[17],u=t?ay(a,64):t;d(a,5);var -g=e(0,a);if(typeof -g==="number")if(24<=g)if(29<=g)var -f=0;else{switch(g+q3|0){case -0:var -S=ie(1,a),G=b(N[13],S),h=[0,[0,[0,G[1]]],G[2]],j=1;break;case -3:var -T=ie(1,a),H=b(N[12],T),h=[0,[0,[0,H[1]]],H[2]],j=1;break;case -4:var -U=ie(1,a),I=b(N[11],U),h=[0,[0,[0,I[1]]],I[2]],j=1;break;default:var -f=0,j=0;}if(j)var -c=h[1],n=h[2],f=1;}else -if(9===g)var -c=0,n=0,f=1;else -var -f=0;else -var -f=0;if(!f)var -J=k3(1,ie(1,a)),c=[0,[1,b(m[7],J)]],n=0;var -o=e(0,a);if(62!==o)if(!u){if(typeof -o==="number")if(17===o){al(a,17,c);if(c){var -q=c[1],O=0===q[0]?[0,q[1]]:[1,q[1]];d(a,17);var -P=b(m[7],a);d(a,6);var -Q=k4(1,a),w=b(m[2],Q);return[0,i(l,w[1]),[15,[0,O,P,w,0]]]}throw[0,z,TS]}W(function(b){return x(a,b)},n);d(a,9);var -y=e(0,a);if(typeof -y==="number"){var -A=9!==y?1:0;if(A)var -r=0;else -var -B=A,r=1;}else -var -r=0;if(!r)var -B=[0,b(m[7],a)];d(a,9);var -C=e(0,a);if(typeof -C==="number"){var -D=6!==C?1:0;if(D)var -s=0;else -var -E=D,s=1;}else -var -s=0;if(!s)var -E=[0,b(m[7],a)];d(a,6);var -R=k4(1,a),F=b(m[2],R);return[0,i(l,F[1]),[14,[0,c,B,E,F]]]}al(a,18,c);if(c){var -p=c[1],K=0===p[0]?[0,p[1]]:[1,p[1]];d(a,62);var -L=b(m[9],a);d(a,6);var -M=k4(1,a),v=b(m[2],M);return[0,i(l,v[1]),[16,[0,K,L,v,u]]]}throw[0,z,TR]});l(V,function(a){var -h=k(0,a);d(a,16);d(a,5);var -j=b(m[7],a);d(a,6);e(0,a);var -f=lP(0,a)?(aF(a,46),b(N[14],a)):b(m[2],a),g=43===e(0,a)?1:0,c=g?(d(a,43),[0,b(m[2],a)]):g,l=c?c[1][1]:f[1];return[0,i(h,l),[18,[0,j,f,c]]]});l(X,function(a){if(1-a[10])y(a,24);var -g=k(0,a);d(a,19);if(9===e(0,a))var -f=0;else -if(k6(a))var -f=0;else -var -c=[0,b(m[7],a)],f=1;if(!f)var -c=0;var -h=S(0,a),j=h?h[1]:c?c[1][1]:g;T(a);return[0,i(g,j),[22,[0,c]]]});l(Y,function(a){var -A=k(0,a);d(a,20);d(a,5);var -B=b(m[7],a);d(a,6);d(a,1);var -c=TT;for(;;){var -n=c[2],o=c[1],g=e(0,a);if(typeof -g==="number"){var -D=2===g?1:O===g?1:0;if(D){var -t=q(n),C=k(0,a);d(a,2);return[0,i(A,C),[23,[0,B,t]]]}}var -u=k(0,a),p=e(0,a);if(typeof -p==="number")if(36===p){if(o)y(a,20);d(a,36);var -h=0,j=1;}else -var -j=0;else -var -j=0;if(!j){d(a,33);var -h=[0,b(m[7],a)];}var -v=o||(0===h?1:0),w=k(0,a);d(a,80);var -x=function(b){if(typeof -b==="number"){var -a=b-2|0,c=31>>0?34===a?1:0:29<(a-1|0)>>>0?1:0;if(c)return 1}return 0},l=a.slice();l[9]=1;var -r=f(m[4],x,l),s=q(r),z=s?s[1][1]:w,c=[0,v,[0,[0,i(u,z),[0,h,r]],n]];continue}});l(Z,function(a){var -c=k(0,a);d(a,22);if(kz(a))x(a,[0,c,12]);var -e=b(m[7],a),f=S(0,a),g=f?f[1]:e[1];T(a);return[0,i(c,g),[24,[0,e]]]});l(_,function(a){var -r=k(0,a);d(a,23);var -h=b(m[16],a),n=e(0,a);if(typeof -n==="number")if(34===n){var -s=k(0,a);d(a,34);d(a,5);var -o=f(m[13],TU,a),t=[0,o[1],[3,[0,o,0,0]]];d(a,6);var -p=b(m[16],a),c=[0,[0,i(s,p[1]),[0,t,p]]],j=1;}else -var -j=0;else -var -j=0;if(!j)var -c=0;var -q=e(0,a);if(typeof -q==="number")if(38===q){d(a,38);var -g=[0,b(m[16],a)],l=1;}else -var -l=0;else -var -l=0;if(!l)var -g=0;var -u=g?g[1][1]:c?c[1][1]:(x(a,[0,h[1],21]),h[1]);return[0,i(r,u),[25,[0,h,c,g]]]});l($,function(a){var -c=b(N[9],a),d=c[1],e=d[1],f=S(0,a),g=f?f[1]:e;T(a);var -h=c[2];W(function(b){return x(a,b)},h);var -j=d[2];return[0,i(e,g),j]});l(ab,function(a){var -f=k(0,a);d(a,28);var -g=k3(1,a),c=b(N[10],g),h=[27,[0,c[2],1]],e=S(0,a),j=e?e[1]:c[1];T(a);var -l=c[3];W(function(b){return x(a,b)},l);return[0,i(f,j),h]});l(ac,function(a){var -e=k(0,a);d(a,25);d(a,5);var -f=b(m[7],a);d(a,6);var -g=k4(1,a),c=b(m[2],g);return[0,i(e,c[1]),[28,[0,f,c]]]});l(ad,function(a){var -f=k(0,a);d(a,26);d(a,5);var -g=b(m[7],a);d(a,6);var -c=b(m[2],a),e=i(f,c[1]);hU(a,[0,e,26]);return[0,e,[29,[0,g,c]]]});l(ae,function(c){var -a=b(m[16],c);return[0,a[1],[0,a[2]]]});l(af,function(a){var -c=b(m[7],a),k=e(0,a),g=c[2],l=c[1];if(typeof -g!=="number"&&10===g[0])if(typeof -k==="number")if(80===k){var -o=g[1],h=o[2];d(a,80);if(f(nK[3],h,a[3]))x(a,[0,l,[5,TV,h]]);var -j=a.slice();j[3]=f(kx[4],h,a[3]);var -p=b(m[2],j);return[0,i(l,p[1]),[21,[0,o,p]]]}var -n=S(0,a),q=n?n[1]:c[1];T(a);return[0,i(c[1],q),[13,[0,c,0]]]});l(a,function(a){var -e=a1(m[7],a),f=e[2],g=e[1],h=S(0,a),r=h?i(g,h[1]):g;T(a);var -j=a[18];if(j){var -c=f[2];if(typeof -c==="number")var -b=0;else -if(13===c[0]){var -n=c[1],o=n[1];if(typeof -o==="number")var -d=1;else -if(0===o[0])var -q=n[2],k=[0,hP(q,1,p(q)-2|0)],b=1,d=0;else -var -d=1;if(d)var -b=0;}else -var -b=0;if(!b)var -k=0;var -l=k;}else -var -l=j;return[0,r,[13,[0,f,l]]]});l(C,function(a){var -g=k(0,a);if(1-aE(a))y(a,6);d(a,61);a0(a,1);var -h=f(m[13],0,a),j=b(G[3],a);d(a,78);var -c=b(G[1],a),e=S(0,a),l=e?e[1]:c[1];T(a);h2(a);return[0,i(g,l),[0,h,j,c]]});l(r,function(a){if(aS(TW,a)){var -c=b(C,a);return[0,c[1],[26,c[2]]]}return b(m[2],a)});l(D,function(a){var -o=k(0,a);if(1-aE(a))y(a,11);d(a,53);var -p=f(m[13],0,a),r=b(G[3],a),j=41===e(0,a)?1:0;if(j){d(a,41);var -c=0;for(;;){var -g=[0,b(G[5],a),c],h=e(0,a);if(typeof -h==="number")if(10===h){d(a,10);var -c=g;continue}var -l=q(g);break}}else -var -l=j;var -n=f(G[6],1,a);return[0,i(o,n[1]),[0,p,r,n,l,0]]});l(t,function(c){if(aS(TX,c)){var -d=b(D,c);return[0,d[1],[20,d[2]]]}return b(a,c)});function -am(a,h){var -c=h;for(;;){var -f=[0,b(G[5],a),c],g=e(0,a);if(typeof -g==="number")if(10===g){d(a,10);var -c=f;continue}return q(f)}}l(o,function(k,j){var -a=id(1,k);d(a,40);var -l=f(m[13],0,a),n=b(G[3],a),c=41===e(0,a)?1:0,o=c?(d(a,41),am(a,0)):c,g=ak(M(0,a),TY),p=g?(hV(a,TZ),am(a,0)):g,h=f(G[6],1,a);return[0,i(j,h[1]),[0,l,n,h,o,p]]});l(ag,function(c,b){var -a=f(o,c,b);return[0,a[1],[4,a[2]]]});l(w,function(a,l){d(a,15);var -e=f(m[13],0,a),n=k(0,a),o=b(G[2],a),p=b(G[7],a);d(a,80);var -g=b(G[1],a),c=g[1],q=b(G[10],a),h=[0,i(n,c),[1,[0,p,g,o]]],r=[0,h[1],h],s=e[2],t=[0,i(e[1],c),s],j=S(0,a),u=j?j[1]:c;T(a);return[0,i(l,u),[0,t,r,q]]});l(E,function(c,b){var -a=f(w,c,b);return[0,a[1],[6,a[2]]]});l(F,function(a,f){d(a,24);var -b=v(m[15],a,T0,28),c=b[2],e=S(0,a),g=e?e[1]:b[1],h=i(f,g);T(a);return[0,h,[0,c[1],c[2]]]});l(H,function(c,b){var -a=f(F,c,b);return[0,a[1],[9,a[2]]]});l(ah,function(a,G){var -p=e(0,a);if(typeof -p==="number")var -r=0;else -if(1===p[0]){var -j=p[1],B=j[4],C=j[3],D=j[2],E=j[1];if(B)aF(a,32);d(a,[1,[0,E,D,C,B]]);var -x=[1,[0,E,[0,[0,D],C]]],r=1;}else -var -r=0;if(!r)var -x=[0,f(m[13],0,a)];var -H=k(0,a);d(a,1);var -c=0,l=0;for(;;){var -n=e(0,a);if(typeof -n==="number"){var -K=2===n?1:O===n?1:0;if(K){var -F=q(l);d(a,2);var -z=[0,i(H,k(0,a)),[0,F]],A=i(G,z[1]),J=c?c[1]:[0,A];return[0,A,[7,[0,x,z,J]]]}}var -o=f(I,T1,a),g=o[2],t=o[1];if(c)if(0===c[1][0])if(typeof -g==="number")var -b=0;else -switch(g[0]){case -5:var -u=g[1][2],L=u?3>>0)var -g=0;else -switch(ah){case -22:d(a,36);ky(a,[0,i(c,k(0,a)),Ui]);var -ai=e(0,a);if(typeof -ai==="number")if(15===ai)var -aj=b(N[14],a),G=aj[1],F=[0,aj],J=1;else -var -J=0;else -var -J=0;if(!J)if(nH(0,a))var -al=f(aG[3],a,Q),G=al[1],F=[0,al];else{var -am=b(m[9],a),an=S(0,a),aF=an?an[1]:am[1];T(a);var -G=aF,F=[1,am];}return[0,i(c,G),[11,[0,F,1]]];case -0:case -1:case -10:case -13:case -14:case -26:var -g=1;break;default:var -g=0;}}if(g){var -z=f(m[3],[0,Q],a),o=z[2],E=z[1];if(typeof -o==="number")var -h=0;else -switch(o[0]){case -2:var -ae=o[1][1];if(ae)var -af=ae[1],h=2;else{x(a,[0,E,55]);var -B=0,h=1;}break;case -17:var -ag=o[1][1];if(ag)var -af=ag[1],h=2;else{x(a,[0,E,56]);var -B=0,h=1;}break;case -27:var -aC=o[1][1],aD=0,B=aM(function(b,a){return aM(K,b,[0,a[2][1],0])},aD,aC),h=1;break;default:var -h=0;}switch(h){case -0:var -B=u(Uh),L=0;break;case -1:var -L=0;break;default:var -ad=[0,[0,E,b(n,af)],0],L=1;}if(!L)var -ad=B;W(function(b){return ky(a,b)},ad);return[0,i(c,z[1]),[12,[0,[0,z],0,0,1]]]}}var -X=e(0,a);if(typeof -X==="number")if(61===X){P(a);var -Y=0,O=1;}else -var -O=0;else -var -O=0;if(!O)var -Y=1;d(a,1);var -Z=v(A,a,0,0),au=[0,[0,Z[1]]],av=k(0,a);d(a,2);if(ak(M(0,a),Ua))var -p=[0,b(j,a)];else{var -ax=Z[2];W(function(b){return x(a,b)},ax);var -p=0;}var -_=S(0,a),aw=_?_[1]:p?p[1][1]:av;T(a);return[0,i(c,aw),[12,[0,0,au,p,Y]]]});l(J,function(r,l){var -J=r?r[1]:r;if(1-aE(l))y(l,8);var -c=k(0,l);d(l,60);var -a=p9(1,id(1,l));d(a,49);var -h=e(0,a);if(typeof -h==="number")if(54<=h){if(61===h){if(J){var -K=b(C,a),L=K[1],ad=i(c,L);return[0,ad,[5,[0,0,[0,[4,[0,L,K[2]]]],0,0]]]}}else -if(aa===h){var -ai=k(0,a);d(a,aa);var -aj=a[24][4],P=ak(M(0,a),Uk),al=P?(hV(a,Ul),aj?[0,f(m[13],0,a)]:(y(a,8),0)):P,Q=b(j,a),R=S(0,a),am=[0,[1,ai,al]],an=R?R[1]:Q[1];T(a);return[0,i(c,an),[5,[0,0,0,am,[0,Q]]]]}}else -if(41<=h){if(53<=h)if(J){var -U=b(D,a),V=U[1],ao=i(c,V);return[0,ao,[5,[0,0,[0,[5,[0,V,U[2]]]],0,0]]]}}else -if(15<=h)switch(h-15|0){case -21:d(a,36);var -B=e(0,a);if(typeof -B==="number")if(15===B)var -_=f(w,a,c),H=_[1],E=[0,[1,_]],q=1;else -if(40===B)var -$=f(o,a,c),H=$[1],E=[0,[2,$]],q=1;else -var -q=0;else -var -q=0;if(!q){var -ab=b(G[1],a),ac=S(0,a),ap=ac?ac[1]:ab[1];T(a);var -H=ap,E=[0,[3,ab]];}return[0,i(c,H),[5,[0,1,E,0,0]]];case -0:case -9:case -12:case -13:case -25:var -g=e(0,a);if(typeof -g==="number"){if(25<=g)if(29<=g)if(40===g)var -X=f(o,a,c),u=X[1],t=[0,[2,X]],n=2;else -var -n=0;else -var -n=27<=g?1:0;else -if(15===g)var -Z=f(w,a,c),u=Z[1],t=[0,[1,Z]],n=2;else -var -n=24<=g?1:0;switch(n){case -0:var -I=0;break;case -1:var -aq=typeof -g==="number"?27===g?(y(a,51),1):28===g?(y(a,50),1):0:0,Y=f(F,a,c),u=Y[1],t=[0,[0,Y]],I=1;break;default:var -I=1;}if(I)return[0,i(c,u),[5,[0,0,t,0,0]]]}throw[0,z,Um]}var -s=e(0,a),ar=typeof -s==="number"?53===s?(y(a,53),1):61===s?(y(a,52),1):0:0;d(a,1);var -N=v(A,a,0,0),ae=[0,[0,N[1]]],af=k(0,a);d(a,2);if(ak(M(0,a),Uj))var -p=[0,b(j,a)];else{var -ah=N[2];W(function(b){return x(a,b)},ah);var -p=0;}var -O=S(0,a),ag=O?O[1]:p?p[1][1]:af;T(a);return[0,i(c,ag),[5,[0,0,0,ae,p]]]});function -an(a){hV(a,Un);var -c=e(0,a);if(typeof -c!=="number"&&1===c[0]){var -b=c[1],g=b[4],h=b[3],i=b[2],j=b[1];if(g)aF(a,32);d(a,[1,[0,j,i,h,g]]);return[0,j,[0,[0,i],h]]}var -f=M(0,a),l=[0,k(0,a),[0,[0,f],f]];ap(a);return l}function -ao(a,A){var -H=k(0,a),B=e(0,a);if(typeof -B==="number")if(aa===B){d(a,aa);hV(a,Uv);var -C=f(m[13],0,a);return[0,[2,[0,i(H,C[1]),C]],0]}d(a,1);var -l=0,j=0;for(;;){var -D=l?l[1]:1,n=e(0,a);if(typeof -n==="number"){var -I=2===n?1:O===n?1:0;if(I){var -E=q(j);d(a,2);return E}}if(1-D)x(a,[0,k(0,a),66]);var -s=b(m[14],a),t=s[2],c=s[1],u=c[2];if(ak(u,Uo))var -h=1,g=Up;else -if(ak(u,Ut))var -h=1,g=Uu;else -var -h=0,g=0;if(ak(M(0,a),Uq)){var -F=f(m[13],0,a);if(h)if(aS(0,a))var -p=0;else{if(A)x(a,[0,c[1],65]);var -v=[0,[0,g,0,F]],p=1;}else -var -p=0;if(!p)var -v=[0,[0,0,[0,f(m[13],0,a)],c]];var -o=v;}else{if(h)if(aS(0,a)){if(A)x(a,[0,c[1],65]);var -w=b(m[14],a),y=w[2];if(y)x(a,y[1]);var -z=ak(M(0,a),Ur),G=z?(hV(a,Us),[0,f(m[13],0,a)]):z,o=[0,[0,g,G,w[1]]],r=1;}else -var -r=0;else -var -r=0;if(!r){if(t)x(a,t[1]);var -o=[0,[0,0,0,c]];}}var -l=[0,ay(a,10)],j=[0,o,j];continue}}l(B,function(J){var -a=id(1,J),p=k(0,a);d(a,50);var -q=e(0,a);if(typeof -q==="number")if(46===q){if(1-aE(a))y(a,9);d(a,46);var -b=1,h=0,n=1;}else -if(61===q){if(1-aE(a))y(a,9);var -b=0,h=[0,f(m[13],0,a)],n=1;}else -var -n=0;else -var -n=0;if(!n)var -b=2,h=0;var -v=2!==b?1:0,j=e(0,a),K=aS(0,a);if(typeof -j==="number")var -t=10===j?1:0;else -if(1===j[0]){if(2===b){var -l=j[1],F=l[4],G=l[3],H=l[2],s=l[1];if(F)aF(a,32);d(a,[1,[0,s,H,G,F]]);var -I=S(0,a),R=[0,s,[0,[0,H],G]],U=I?I[1]:s;T(a);return[0,i(p,U),[19,[0,b,R,0]]]}var -t=0;}else -var -t=0;if(!t)if(0===K){var -L=ao(a,v),w=an(a),x=S(0,a),N=x?x[1]:w[1];T(a);return[0,i(p,N),[19,[0,b,w,L]]]}var -r=e(0,a),O=M(0,a);if(h)if(typeof -r==="number"){var -P=h[1];if(10===r)var -o=1;else -if(0===r)if(c(O,Uw))var -g=0,o=0;else -var -o=1;else -var -g=0,o=0;if(o)var -A=2,z=[1,P],g=1;}else -var -g=0;else -var -g=0;if(!g)var -A=b,z=[1,f(m[13],0,a)];var -B=e(0,a);if(typeof -B==="number")if(10===B){d(a,10);var -C=ao(a,v),u=1;}else -var -u=0;else -var -u=0;if(!u)var -C=0;var -D=an(a),E=S(0,a),Q=E?E[1]:D[1];T(a);return[0,i(p,Q),[19,[0,A,D,[0,z,C]]]]});return[0,U,V,ab,_,ac,ad,ae,h,L,Q,I,J,R,g,aj,a,B,t,af,X,Y,Z,r,$]}(kA),qj=function(F){function -h(g,a){var -b=a[2][1],c=[0,[0,is(function(h){if(0===h[0]){var -i=h[1],b=i[2],c=b[2],a=b[1];switch(a[0]){case -0:var -d=[0,a[1]];break;case -1:var -d=[1,a[1]];break;default:var -d=[2,a[1]];}if(0===c[0])var -j=f(m[20],g,c[1]);else{var -k=c[1],e=k[1];x(g,[0,e,2]);var -j=[0,e,[4,[0,e,[8,k[2]]]]];}return[0,[0,i[1],[0,d,j,b[4]]]]}var -l=h[1],n=[0,f(m[20],g,l[2][1])];return[1,[0,l[1],n]]},b),0]];return[0,a[1],c]}function -j(e,a){var -b=a[2][1],c=[1,[0,is(function(b){if(b){var -a=b[1];if(0===a[0]){var -c=a[1];return[0,[0,f(m[20],e,[0,c[1],c[2]])]]}var -d=a[1],g=[0,f(m[20],e,d[2][1])];return[0,[1,[0,d[1],g]]]}return b},b),0]];return[0,a[1],c]}function -a(e,d){var -a=d[2],b=d[1];if(typeof -a!=="number")switch(a[0]){case -0:return j(e,[0,b,a[1]]);case -2:var -c=a[1];if(0===c[1])return[0,b,[2,[0,c[2],c[3]]]];break;case -10:return[0,b,[3,[0,a[1],0,0]]];case -18:return h(e,[0,b,a[1]])}return[0,b,[4,[0,b,a]]]}function -l(t){return function(a){var -I=k(0,a);d(a,1);var -n=0;for(;;){var -o=e(0,a);if(typeof -o==="number"){var -K=2===o?1:O===o?1:0;if(K){var -H=q(n),J=k(0,a);d(a,2);if(80===e(0,a))var -C=b(F[8],a),E=C[1],D=[0,C];else -var -E=J,D=0;return[0,i(I,E),[0,[0,H,D]]]}}var -u=k(0,a);if(ay(a,13))var -v=g(a,t),p=[0,[1,[0,i(u,v[1]),[0,v]]]];else{var -h=b(m[21],a)[2];switch(h[0]){case -0:var -c=[0,h[1]];break;case -1:var -c=[1,h[1]];break;default:var -c=[2,h[1]];}var -w=e(0,a);if(typeof -w==="number")if(80===w){d(a,80);var -f=[0,[0,g(a,t),0]],r=1;}else -var -r=0;else -var -r=0;if(!r)if(1===c[0])var -B=c[1],f=[0,[0,[0,B[1],[3,[0,B,0,0]]],1]];else{ap(a);var -f=0;}if(f){var -x=f[1],j=x[1],y=e(0,a);if(typeof -y==="number")if(78===y){d(a,78);var -z=b(m[9],a),l=[0,i(j[1],z[1]),[2,[0,j,z]]],s=1;}else -var -s=0;else -var -s=0;if(!s)var -l=j;var -G=i(u,l[1]),A=[0,[0,[0,G,[0,c,l,x[2]]]]];}else -var -A=f;var -p=A;}if(p){if(2!==e(0,a))d(a,10);var -n=[0,p[1],n];continue}continue}}}function -n(n){return function(a){var -z=k(0,a);d(a,7);var -c=0;for(;;){var -f=e(0,a);if(typeof -f==="number"){if(14<=f)var -h=O===f?1:0;else -if(8<=f)switch(f-8|0){case -2:d(a,10);var -c=[0,0,c];continue;case -5:var -y=k(0,a);d(a,13);var -s=g(a,n),c=[0,[0,[1,[0,i(y,s[1]),[0,s]]]],c];continue;case -0:var -h=1;break;default:var -h=0;}else -var -h=0;if(h){var -w=q(c),A=k(0,a);d(a,8);if(80===e(0,a))var -t=b(F[8],a),v=t[1],u=[0,t];else -var -v=A,u=0;return[0,i(z,v),[1,[0,w,u]]]}}var -j=g(a,n),o=e(0,a);if(typeof -o==="number")if(78===o){d(a,78);var -p=b(m[7],a),r=[0,i(j[1],p[1]),[2,[0,j,p]]],l=1;}else -var -l=0;else -var -l=0;if(!l)var -r=j;var -x=[0,r];if(8!==e(0,a))d(a,10);var -c=[0,[0,x],c];continue}}}function -g(a,c){var -d=e(0,a);if(typeof -d==="number"){if(1===d)return b(l(c),a);if(7===d)return b(n(c),a)}var -f=v(m[15],a,0,c);return[0,f[1],[3,f[2]]]}return[0,h,j,a,l,n,g]}(G),qk=function -b(a){return b.fun(a)},nM=function -d(a,b,c){return d.fun(a,b,c)},nN=function -b(a){return b.fun(a)},ql=function -c(a,b){return c.fun(a,b)},nO=function -c(a,b){return c.fun(a,b)},nP=function -c(a,b){return c.fun(a,b)},lQ=function -c(a,b){return c.fun(a,b)},k8=function -c(a,b){return c.fun(a,b)},lR=function -b(a){return b.fun(a)},qm=function -b(a){return b.fun(a)},nQ=function -c(a,b){return c.fun(a,b)},qn=function -d(a,b,c){return d.fun(a,b,c)},qo=function -b(a){return b.fun(a)},qp=function -b(a){return b.fun(a)},Uz=TB(m),qq=kA[3],UA=h3[3],UB=h3[2],UC=h3[6],UD=kA[2],UE=kA[1],UF=kA[4],UG=h3[1],UH=h3[5],UI=h3[4],UJ=Uz[10],UK=qj[6],UL=qj[3];l(qk,function(a){var -b=f(ql,a,function(a){return 0}),e=k(0,a);d(a,O);if(b)var -g=ir(q(b))[1],c=i(ir(b)[1],g);else -var -c=e;return[0,c,b,q(a[2][1])]});l(nM,function(w,v,t){var -a=p8(1,w),h=UP;for(;;){var -f=h[2],c=h[1],d=e(0,a);if(typeof -d==="number")if(O===d)var -g=[0,a,c,f],j=1;else -var -j=0;else -var -j=0;if(!j)if(b(v,d))var -g=[0,a,c,f];else{if(typeof -d==="number")var -k=0;else -if(1===d[0]){var -l=b(t,a),m=[0,l,f],i=l[2];if(typeof -i!=="number"&&13===i[0]){var -n=i[1][2];if(n){var -p=a[6],r=p||ak(n[1],UO),a=id(r,a),h=[0,[0,d,c],m];continue}}var -g=[0,a,c,m],k=1;}else -var -k=0;if(!k)var -g=[0,a,c,f];}var -o=p8(0,a),x=q(c);W(function(b){if(typeof -b!=="number"&&1===b[0]){var -d=b[1],e=d[4];return e?hU(o,[0,d[1],32]):e}if(typeof -b==="number"){var -c=b;if(59<=c)switch(c){case -59:var -a=Gv;break;case -60:var -a=Gw;break;case -61:var -a=Gx;break;case -62:var -a=Gy;break;case -63:var -a=Gz;break;case -64:var -a=GA;break;case -65:var -a=GB;break;case -66:var -a=GC;break;case -67:var -a=GD;break;case -68:var -a=GE;break;case -69:var -a=GF;break;case -70:var -a=GG;break;case -71:var -a=GH;break;case -72:var -a=GI;break;case -73:var -a=GJ;break;case -74:var -a=GK;break;case -75:var -a=GL;break;case -76:var -a=GM;break;case -77:var -a=GN;break;case -78:var -a=GO;break;case -79:var -a=GP;break;case -80:var -a=GQ;break;case -81:var -a=GR;break;case -82:var -a=GS;break;case -83:var -a=GT;break;case -84:var -a=GU;break;case -85:var -a=GV;break;case -86:var -a=GW;break;case -87:var -a=GX;break;case -88:var -a=GY;break;case -89:var -a=GZ;break;case -90:var -a=G0;break;case -91:var -a=G1;break;case -92:var -a=G2;break;case -93:var -a=G3;break;case -94:var -a=G4;break;case -95:var -a=G5;break;case -96:var -a=G6;break;case -97:var -a=G7;break;case -98:var -a=G8;break;case -99:var -a=G9;break;case -100:var -a=G_;break;case -101:var -a=G$;break;case -102:var -a=Ha;break;case -103:var -a=Hb;break;case -104:var -a=Hc;break;case -105:var -a=Hd;break;case -106:var -a=He;break;case -107:var -a=Hf;break;case -108:var -a=Hg;break;case -109:var -a=Hh;break;case -110:var -a=Hi;break;case -111:var -a=Hj;break;case -112:var -a=Hk;break;case -113:var -a=Hl;break;case -114:var -a=Hm;break;case -115:var -a=Hn;break;default:var -a=Ho;}else -switch(c){case -0:var -a=FA;break;case -1:var -a=FB;break;case -2:var -a=FC;break;case -3:var -a=FD;break;case -4:var -a=FE;break;case -5:var -a=FF;break;case -6:var -a=FG;break;case -7:var -a=FH;break;case -8:var -a=FI;break;case -9:var -a=FJ;break;case -10:var -a=FK;break;case -11:var -a=FL;break;case -12:var -a=FM;break;case -13:var -a=FN;break;case -14:var -a=FO;break;case -15:var -a=FP;break;case -16:var -a=FQ;break;case -17:var -a=FR;break;case -18:var -a=FS;break;case -19:var -a=FT;break;case -20:var -a=FU;break;case -21:var -a=FV;break;case -22:var -a=FW;break;case -23:var -a=FX;break;case -24:var -a=FY;break;case -25:var -a=FZ;break;case -26:var -a=F0;break;case -27:var -a=F1;break;case -28:var -a=F2;break;case -29:var -a=F3;break;case -30:var -a=F4;break;case -31:var -a=F5;break;case -32:var -a=F6;break;case -33:var -a=F7;break;case -34:var -a=F8;break;case -35:var -a=F9;break;case -36:var -a=F_;break;case -37:var -a=F$;break;case -38:var -a=Ga;break;case -39:var -a=Gb;break;case -40:var -a=Gc;break;case -41:var -a=Gd;break;case -42:var -a=Ge;break;case -43:var -a=Gf;break;case -44:var -a=Gg;break;case -45:var -a=Gh;break;case -46:var -a=Gi;break;case -47:var -a=Gj;break;case -48:var -a=Gk;break;case -49:var -a=Gl;break;case -50:var -a=Gm;break;case -51:var -a=Gn;break;case -52:var -a=Go;break;case -53:var -a=Gp;break;case -54:var -a=Gq;break;case -55:var -a=Gr;break;case -56:var -a=Gs;break;case -57:var -a=Gt;break;default:var -a=Gu;}}else -switch(b[0]){case -0:var -a=Hp;break;case -1:var -a=Hq;break;case -2:var -a=Hr;break;case -3:var -a=Hs;break;case -4:var -a=Ht;break;default:var -a=Hu;}return u(s(UN,s(a,UM)))},x);return[0,o,g[3]]}});l(nN,function(a){var -c=b(kA[5],a),d=e(0,a);if(typeof -d==="number"){var -g=d-49|0;if(!(11>>0))switch(g){case -0:return f(R[15],a,c);case -1:b(nI(a),c);return b(R[17],a);case -11:if(49===e(UQ,a)){b(nI(a),c);return f(R[12],0,a)}break}}return f(k8,[0,c],a)});l(ql,function(c,a){var -b=v(nM,c,a,nN),d=f(nO,a,b[1]),e=b[2];return aM(function(b,a){return[0,a,b]},d,e)});l(nO,function(f,d){var -a=0;for(;;){var -c=e(0,d);if(typeof -c==="number")if(O===c)return q(a);if(b(f,c))return q(a);var -a=[0,b(nN,d),a];continue}});l(nP,function(a,d){var -b=v(nM,d,a,function(a){return f(k8,0,a)}),c=b[1],e=f(lQ,a,c),g=b[2],h=aM(function(b,a){return[0,a,b]},e,g);return[0,h,c[6]]});l(lQ,function(g,d){var -a=0;for(;;){var -c=e(0,d);if(typeof -c==="number")if(O===c)return q(a);if(b(g,c))return q(a);var -a=[0,f(k8,0,d),a];continue}});l(k8,function(d,a){var -g=d?d[1]:d;if(1-nH(0,a))b(nI(a),g);var -c=e(0,a);if(typeof -c==="number"){if(27===c)return b(R[24],a);if(28===c)return b(R[3],a)}if(lP(0,a))return b(N[14],a);if(nH(0,a))return f(qq,a,g);if(typeof -c==="number"){var -h=c+qO|0;if(!(8>>0))switch(h){case -0:return b(R[18],a);case -7:return f(R[11],0,a);case -8:return b(R[23],a)}}return b(lR,a)});l(lR,function(a){var -c=e(0,a);if(typeof -c==="number"){if(O===c){ap(a);return[0,k(0,a),1]}if(!(60<=c))switch(c){case -1:return b(R[7],a);case -9:return b(R[14],a);case -16:return b(R[2],a);case -19:return b(R[20],a);case -20:return b(R[21],a);case -22:return b(R[22],a);case -23:return b(R[4],a);case -24:return b(R[24],a);case -25:return b(R[5],a);case -26:return b(R[6],a);case -32:return b(R[8],a);case -35:return b(R[9],a);case -37:return b(R[13],a);case -39:return b(R[1],a);case -59:return b(R[10],a)}}if(aS(0,a))return b(R[19],a);if(typeof -c==="number"){if(80===c)var -d=1;else -if(51<=c)var -d=0;else -switch(c){case -43:return b(R[2],a);case -2:case -6:case -8:case -10:case -11:case -12:case -13:case -17:case -18:case -33:case -34:case -36:case -38:case -41:case -42:case -49:case -50:var -d=1;break;default:var -d=0;}if(d){ap(a);P(a);return b(lR,a)}}return b(R[16],a)});l(qm,function(a){var -c=b(h3[2],a),d=e(0,a);if(typeof -d==="number")if(10===d)return f(h3[8],a,[0,c,0]);return c});l(nQ,function(g,a){var -h=k(0,a),c=M(0,a),b=e(0,a);if(typeof -b==="number")if(28===b){if(a[6])aF(a,40);else -if(a[13])y(a,[1,c]);P(a);var -f=1;}else -var -f=0;else -var -f=0;if(!f)if(k5(c)){aF(a,40);P(a);}else{var -i=typeof -b==="number"?4<(b+qy|0)>>>0?0:(d(a,b),1):0;if(!i)d(a,0);}var -j=g?ix(c)?(hU(a,[0,h,g[1]]),1):0:0;return[0,h,c]});l(qn,function(c,a,k){var -l=a?a[1]:a;return a1(function(a){var -c=1-l,i=f(nQ,[0,k],a),g=c?79===e(0,a)?1:0:c;if(g){if(1-aE(a))y(a,7);d(a,79);}var -h=80===e(0,a)?1:0,j=h?[0,b(G[8],a)]:h;return[0,i,j,g]},c)});l(qo,function(a){var -b=k(0,a);d(a,1);var -c=f(lQ,function(a){return 2===a?1:0},a),e=k(0,a);d(a,2);return[0,i(b,e),[0,c]]});l(qp,function(a){var -c=k(0,a);d(a,1);var -b=f(nP,function(a){return 2===a?1:0},a),e=k(0,a);d(a,2);var -g=b[2],h=[0,b[1]];return[0,i(c,e),h,g]});v(aO,UR,m,[0,qk,lR,k8,lQ,nP,nO,qm,UA,UB,UC,UD,UG,nQ,UI,qn,qo,qp,UJ,UK,UL,UE,qq,UF,UH]);var -lS=[0,0],US=function(i,d,c,s){var -j=i?i[1]:1,t=d?d[1]:d,u=c?c[1]:c,e=[0,u],g=[0,t],v=0,p=g?g[1]:g,r=e?e[1]:e,h=RS([0,p],[0,r],v,s),n=b(m[1],h),k=q(h[1][1]),l=[0,nL[1],0],a=q(aM(function(c,a){var -d=c[2],b=c[1];return f(nL[3],a,b)?[0,b,d]:[0,f(nL[4],a,b),[0,a,d]]},l,k)[2]),o=j?0!==a?1:0:j;if(o)throw[0,pz,a];return[0,n,a]},UT=VI,UU=VH,UV=VJ,UW=VG,UX=function(a){return a},UY=function(d,c,a){try{var -e=new -RegExp(c.toString(),a.toString()),b=e;}catch(c){lS[1]=[0,[0,d,13],lS[1]];var -b=new -RegExp(w,a.toString());}return b},UZ=function(b){var -a=new -Function(m2,"throw e;");return a.call(a,b)},U0=function(a){var -f=a.esproposal_decorators;if(kY(f)){var -g=nF.slice();g[3]=f|0;var -b=g;}else -var -b=nF;var -h=a.esproposal_class_instance_fields;if(kY(h)){var -i=b.slice();i[1]=h|0;var -c=i;}else -var -c=b;var -j=a.esproposal_class_static_fields;if(kY(j)){var -k=c.slice();k[2]=j|0;var -d=k;}else -var -d=c;var -l=a.esproposal_export_star_as;if(kY(l)){var -m=d.slice();m[4]=l|0;var -e=m;}else -var -e=d;var -n=a.types;if(kY(n)){var -o=e.slice();o[5]=n|0;return o}return e},U1=function(h,c){var -i=r9(c,pi)?{}:c,j=ip(h),k=[0,U0(i)];try{var -e=US(U3,0,[0,k],j);lS[1]=0;var -f=xn([0,UT,UU,UV,UW,UX,vt,UY]),g=b(f[1],e[1]),l=lu(e[2],lS[1]);g.errors=b(f[3],l);return g}catch(b){b=X(b);if(b[1]===pz){var -d=new -Error(s(a(w+ng(b[2])),U2).toString());d.name="Parse Error";UZ(d);return{}}throw b}};var qr; - -var -qr=exports;qr.parse=U1;sA(0);return}}}}}(function(){return this}())); -}); - -var index$34 = createCommonjsModule(function (module, exports) { -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -/* eslint max-len: 0 */ - -// This is a trick taken from Esprima. It turns out that, on -// non-Chrome browsers, to check whether a string is in a set, a -// predicate containing a big ugly `switch` statement is faster than -// a regular expression, and on Chrome the two are about on par. -// This function uses `eval` (non-lexical) to produce such a -// predicate from a space-separated string of words. -// -// It starts by sorting the words by length. - -function makePredicate(words) { - words = words.split(" "); - return function (str) { - return words.indexOf(str) >= 0; - }; -} - -// Reserved word lists for various dialects of the language - -var reservedWords = { - 6: makePredicate("enum await"), - strict: makePredicate("implements interface let package private protected public static yield"), - strictBind: makePredicate("eval arguments") -}; - -// And the keywords - -var isKeyword = makePredicate("break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this let const class extends export import yield super"); - -// ## Character categories - -// Big ugly regular expressions that match characters in the -// whitespace, identifier, and identifier-start categories. These -// are only applied when a character is found to actually have a -// code point above 128. -// Generated by `bin/generate-identifier-regex.js`. - -var nonASCIIidentifierStartChars = "\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\u08B6-\u08BD\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\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\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\u1C80-\u1C88\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-\uA7AE\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"; -var nonASCIIidentifierChars = "\u200C\u200D\xB7\u0300-\u036F\u0387\u0483-\u0487\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u0669\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u06F0-\u06F9\u0711\u0730-\u074A\u07A6-\u07B0\u07C0-\u07C9\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D4-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0966-\u096F\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09E6-\u09EF\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A66-\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B66-\u0B6F\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0CE6-\u0CEF\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D66-\u0D6F\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0E50-\u0E59\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0ED0-\u0ED9\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1040-\u1049\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109D\u135D-\u135F\u1369-\u1371\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u18A9\u1920-\u192B\u1930-\u193B\u1946-\u194F\u19D0-\u19DA\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AB0-\u1ABD\u1B00-\u1B04\u1B34-\u1B44\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BF3\u1C24-\u1C37\u1C40-\u1C49\u1C50-\u1C59\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFB-\u1DFF\u203F\u2040\u2054\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA620-\uA629\uA66F\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F1\uA900-\uA909\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9D0-\uA9D9\uA9E5\uA9F0-\uA9F9\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA50-\uAA59\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uABF0-\uABF9\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFF10-\uFF19\uFF3F"; - -var nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); -var nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); - -nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; - -// These are a run-length and offset encoded representation of the -// >0xffff code points that are a valid part of identifiers. The -// offset starts at 0x10000, and each pair of numbers represents an -// offset to the next range, and then a size of the range. They were -// generated by `bin/generate-identifier-regex.js`. -// eslint-disable-next-line comma-spacing -var astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 17, 26, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 157, 310, 10, 21, 11, 7, 153, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 26, 45, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 785, 52, 76, 44, 33, 24, 27, 35, 42, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 85, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 54, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 86, 25, 391, 63, 32, 0, 449, 56, 264, 8, 2, 36, 18, 0, 50, 29, 881, 921, 103, 110, 18, 195, 2749, 1070, 4050, 582, 8634, 568, 8, 30, 114, 29, 19, 47, 17, 3, 32, 20, 6, 18, 881, 68, 12, 0, 67, 12, 65, 0, 32, 6124, 20, 754, 9486, 1, 3071, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 4149, 196, 60, 67, 1213, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42710, 42, 4148, 12, 221, 3, 5761, 10591, 541]; -// eslint-disable-next-line comma-spacing -var astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 1306, 2, 54, 14, 32, 9, 16, 3, 46, 10, 54, 9, 7, 2, 37, 13, 2, 9, 52, 0, 13, 2, 49, 13, 10, 2, 4, 9, 83, 11, 7, 0, 161, 11, 6, 9, 7, 3, 57, 0, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 87, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 423, 9, 838, 7, 2, 7, 17, 9, 57, 21, 2, 13, 19882, 9, 135, 4, 60, 6, 26, 9, 1016, 45, 17, 3, 19723, 1, 5319, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 2214, 6, 110, 6, 6, 9, 792487, 239]; - -// This has a complexity linear to the value of the code. The -// assumption is that looking up astral identifier characters is -// rare. -function isInAstralSet(code, set) { - var pos = 0x10000; - for (var i = 0; i < set.length; i += 2) { - pos += set[i]; - if (pos > code) return false; - - pos += set[i + 1]; - if (pos >= code) return true; - } -} - -// Test whether a given character code starts an identifier. - -function isIdentifierStart(code) { - if (code < 65) return code === 36; - if (code < 91) return true; - if (code < 97) return code === 95; - if (code < 123) return true; - if (code <= 0xffff) return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)); - return isInAstralSet(code, astralIdentifierStartCodes); -} - -// Test whether a given character is part of an identifier. - -function isIdentifierChar(code) { - if (code < 48) return code === 36; - if (code < 58) return true; - if (code < 65) return false; - if (code < 91) return true; - if (code < 97) return code === 95; - if (code < 123) return true; - if (code <= 0xffff) return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)); - return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes); -} - -// A second optional argument can be given to further configure -var defaultOptions = { - // Source type ("script" or "module") for different semantics - sourceType: "script", - // Source filename. - sourceFilename: undefined, - // Line from which to start counting source. Useful for - // integration with other tools. - startLine: 1, - // When enabled, a return at the top level is not considered an - // error. - allowReturnOutsideFunction: false, - // When enabled, import/export statements are not constrained to - // appearing at the top of the program. - allowImportExportEverywhere: false, - // TODO - allowSuperOutsideMethod: false, - // An array of plugins to enable - plugins: [], - // TODO - strictMode: null, - // Nodes have their start and end characters offsets recorded in - // `start` and `end` properties (directly on the node, rather than - // the `loc` object, which holds line/column data. To also add a - // [semi-standardized][range] `range` property holding a `[start, - // end]` array with the same numbers, set the `ranges` option to - // `true`. - // - // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678 - ranges: false -}; - -// Interpret and default an options object - -function getOptions(opts) { - var options = {}; - for (var key in defaultOptions) { - options[key] = opts && key in opts ? opts[key] : defaultOptions[key]; - } - return options; -} - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { - return typeof obj; -} : function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; -}; - - - - - - - - - - - -var classCallCheck = function (instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } -}; - - - - - - - - - - - -var inherits = function (subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); - } - - subClass.prototype = Object.create(superClass && superClass.prototype, { - constructor: { - value: subClass, - enumerable: false, - writable: true, - configurable: true - } - }); - if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; -}; - - - - - - - - - - - -var possibleConstructorReturn = function (self, call) { - if (!self) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - } - - return call && (typeof call === "object" || typeof call === "function") ? call : self; -}; - -// ## Token types - -// The assignment of fine-grained, information-carrying type objects -// allows the tokenizer to store the information it has about a -// token in a way that is very cheap for the parser to look up. - -// All token type variables start with an underscore, to make them -// easy to recognize. - -// The `beforeExpr` property is used to disambiguate between regular -// expressions and divisions. It is set on all token types that can -// be followed by an expression (thus, a slash after them would be a -// regular expression). -// -// `isLoop` marks a keyword as starting a loop, which is important -// to know when parsing a label, in order to allow or disallow -// continue jumps to that label. - -var beforeExpr = true; -var startsExpr = true; -var isLoop = true; -var isAssign = true; -var prefix = true; -var postfix = true; - -var TokenType = function TokenType(label) { - var conf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - classCallCheck(this, TokenType); - - this.label = label; - this.keyword = conf.keyword; - this.beforeExpr = !!conf.beforeExpr; - this.startsExpr = !!conf.startsExpr; - this.rightAssociative = !!conf.rightAssociative; - this.isLoop = !!conf.isLoop; - this.isAssign = !!conf.isAssign; - this.prefix = !!conf.prefix; - this.postfix = !!conf.postfix; - this.binop = conf.binop || null; - this.updateContext = null; -}; - -var KeywordTokenType = function (_TokenType) { - inherits(KeywordTokenType, _TokenType); - - function KeywordTokenType(name) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - classCallCheck(this, KeywordTokenType); - - options.keyword = name; - - return possibleConstructorReturn(this, _TokenType.call(this, name, options)); - } - - return KeywordTokenType; -}(TokenType); - -var BinopTokenType = function (_TokenType2) { - inherits(BinopTokenType, _TokenType2); - - function BinopTokenType(name, prec) { - classCallCheck(this, BinopTokenType); - return possibleConstructorReturn(this, _TokenType2.call(this, name, { beforeExpr: beforeExpr, binop: prec })); - } - - return BinopTokenType; -}(TokenType); - -var types = { - num: new TokenType("num", { startsExpr: startsExpr }), - regexp: new TokenType("regexp", { startsExpr: startsExpr }), - string: new TokenType("string", { startsExpr: startsExpr }), - name: new TokenType("name", { startsExpr: startsExpr }), - eof: new TokenType("eof"), - - // Punctuation token types. - bracketL: new TokenType("[", { beforeExpr: beforeExpr, startsExpr: startsExpr }), - bracketR: new TokenType("]"), - braceL: new TokenType("{", { beforeExpr: beforeExpr, startsExpr: startsExpr }), - braceBarL: new TokenType("{|", { beforeExpr: beforeExpr, startsExpr: startsExpr }), - braceR: new TokenType("}"), - braceBarR: new TokenType("|}"), - parenL: new TokenType("(", { beforeExpr: beforeExpr, startsExpr: startsExpr }), - parenR: new TokenType(")"), - comma: new TokenType(",", { beforeExpr: beforeExpr }), - semi: new TokenType(";", { beforeExpr: beforeExpr }), - colon: new TokenType(":", { beforeExpr: beforeExpr }), - doubleColon: new TokenType("::", { beforeExpr: beforeExpr }), - dot: new TokenType("."), - question: new TokenType("?", { beforeExpr: beforeExpr }), - arrow: new TokenType("=>", { beforeExpr: beforeExpr }), - template: new TokenType("template"), - ellipsis: new TokenType("...", { beforeExpr: beforeExpr }), - backQuote: new TokenType("`", { startsExpr: startsExpr }), - dollarBraceL: new TokenType("${", { beforeExpr: beforeExpr, startsExpr: startsExpr }), - at: new TokenType("@"), - - // Operators. These carry several kinds of properties to help the - // parser use them properly (the presence of these properties is - // what categorizes them as operators). - // - // `binop`, when present, specifies that this operator is a binary - // operator, and will refer to its precedence. - // - // `prefix` and `postfix` mark the operator as a prefix or postfix - // unary operator. - // - // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as - // binary operators with a very low precedence, that should result - // in AssignmentExpression nodes. - - eq: new TokenType("=", { beforeExpr: beforeExpr, isAssign: isAssign }), - assign: new TokenType("_=", { beforeExpr: beforeExpr, isAssign: isAssign }), - incDec: new TokenType("++/--", { prefix: prefix, postfix: postfix, startsExpr: startsExpr }), - prefix: new TokenType("prefix", { beforeExpr: beforeExpr, prefix: prefix, startsExpr: startsExpr }), - logicalOR: new BinopTokenType("||", 1), - logicalAND: new BinopTokenType("&&", 2), - bitwiseOR: new BinopTokenType("|", 3), - bitwiseXOR: new BinopTokenType("^", 4), - bitwiseAND: new BinopTokenType("&", 5), - equality: new BinopTokenType("==/!=", 6), - relational: new BinopTokenType("", 7), - bitShift: new BinopTokenType("<>", 8), - plusMin: new TokenType("+/-", { beforeExpr: beforeExpr, binop: 9, prefix: prefix, startsExpr: startsExpr }), - modulo: new BinopTokenType("%", 10), - star: new BinopTokenType("*", 10), - slash: new BinopTokenType("/", 10), - exponent: new TokenType("**", { beforeExpr: beforeExpr, binop: 11, rightAssociative: true }) -}; - -var keywords = { - "break": new KeywordTokenType("break"), - "case": new KeywordTokenType("case", { beforeExpr: beforeExpr }), - "catch": new KeywordTokenType("catch"), - "continue": new KeywordTokenType("continue"), - "debugger": new KeywordTokenType("debugger"), - "default": new KeywordTokenType("default", { beforeExpr: beforeExpr }), - "do": new KeywordTokenType("do", { isLoop: isLoop, beforeExpr: beforeExpr }), - "else": new KeywordTokenType("else", { beforeExpr: beforeExpr }), - "finally": new KeywordTokenType("finally"), - "for": new KeywordTokenType("for", { isLoop: isLoop }), - "function": new KeywordTokenType("function", { startsExpr: startsExpr }), - "if": new KeywordTokenType("if"), - "return": new KeywordTokenType("return", { beforeExpr: beforeExpr }), - "switch": new KeywordTokenType("switch"), - "throw": new KeywordTokenType("throw", { beforeExpr: beforeExpr }), - "try": new KeywordTokenType("try"), - "var": new KeywordTokenType("var"), - "let": new KeywordTokenType("let"), - "const": new KeywordTokenType("const"), - "while": new KeywordTokenType("while", { isLoop: isLoop }), - "with": new KeywordTokenType("with"), - "new": new KeywordTokenType("new", { beforeExpr: beforeExpr, startsExpr: startsExpr }), - "this": new KeywordTokenType("this", { startsExpr: startsExpr }), - "super": new KeywordTokenType("super", { startsExpr: startsExpr }), - "class": new KeywordTokenType("class"), - "extends": new KeywordTokenType("extends", { beforeExpr: beforeExpr }), - "export": new KeywordTokenType("export"), - "import": new KeywordTokenType("import", { startsExpr: startsExpr }), - "yield": new KeywordTokenType("yield", { beforeExpr: beforeExpr, startsExpr: startsExpr }), - "null": new KeywordTokenType("null", { startsExpr: startsExpr }), - "true": new KeywordTokenType("true", { startsExpr: startsExpr }), - "false": new KeywordTokenType("false", { startsExpr: startsExpr }), - "in": new KeywordTokenType("in", { beforeExpr: beforeExpr, binop: 7 }), - "instanceof": new KeywordTokenType("instanceof", { beforeExpr: beforeExpr, binop: 7 }), - "typeof": new KeywordTokenType("typeof", { beforeExpr: beforeExpr, prefix: prefix, startsExpr: startsExpr }), - "void": new KeywordTokenType("void", { beforeExpr: beforeExpr, prefix: prefix, startsExpr: startsExpr }), - "delete": new KeywordTokenType("delete", { beforeExpr: beforeExpr, prefix: prefix, startsExpr: startsExpr }) -}; - -// Map keyword names to token types. -Object.keys(keywords).forEach(function (name) { - types["_" + name] = keywords[name]; -}); - -// Matches a whole line break (where CRLF is considered a single -// line break). Used to count lines. - -var lineBreak = /\r\n?|\n|\u2028|\u2029/; -var lineBreakG = new RegExp(lineBreak.source, "g"); - -function isNewLine(code) { - return code === 10 || code === 13 || code === 0x2028 || code === 0x2029; -} - -var nonASCIIwhitespace = /[\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff]/; - -// The algorithm used to determine whether a regexp can appear at a -// given point in the program is loosely based on sweet.js' approach. -// See https://github.com/mozilla/sweet.js/wiki/design - -var TokContext = function TokContext(token, isExpr, preserveSpace, override) { - classCallCheck(this, TokContext); - - this.token = token; - this.isExpr = !!isExpr; - this.preserveSpace = !!preserveSpace; - this.override = override; -}; - -var types$1 = { - braceStatement: new TokContext("{", false), - braceExpression: new TokContext("{", true), - templateQuasi: new TokContext("${", true), - parenStatement: new TokContext("(", false), - parenExpression: new TokContext("(", true), - template: new TokContext("`", true, true, function (p) { - return p.readTmplToken(); - }), - functionExpression: new TokContext("function", true) -}; - -// Token-specific context update code - -types.parenR.updateContext = types.braceR.updateContext = function () { - if (this.state.context.length === 1) { - this.state.exprAllowed = true; - return; - } - - var out = this.state.context.pop(); - if (out === types$1.braceStatement && this.curContext() === types$1.functionExpression) { - this.state.context.pop(); - this.state.exprAllowed = false; - } else if (out === types$1.templateQuasi) { - this.state.exprAllowed = true; - } else { - this.state.exprAllowed = !out.isExpr; - } -}; - -types.name.updateContext = function (prevType) { - this.state.exprAllowed = false; - - if (prevType === types._let || prevType === types._const || prevType === types._var) { - if (lineBreak.test(this.input.slice(this.state.end))) { - this.state.exprAllowed = true; - } - } -}; - -types.braceL.updateContext = function (prevType) { - this.state.context.push(this.braceIsBlock(prevType) ? types$1.braceStatement : types$1.braceExpression); - this.state.exprAllowed = true; -}; - -types.dollarBraceL.updateContext = function () { - this.state.context.push(types$1.templateQuasi); - this.state.exprAllowed = true; -}; - -types.parenL.updateContext = function (prevType) { - var statementParens = prevType === types._if || prevType === types._for || prevType === types._with || prevType === types._while; - this.state.context.push(statementParens ? types$1.parenStatement : types$1.parenExpression); - this.state.exprAllowed = true; -}; - -types.incDec.updateContext = function () { - // tokExprAllowed stays unchanged -}; - -types._function.updateContext = function () { - if (this.curContext() !== types$1.braceStatement) { - this.state.context.push(types$1.functionExpression); - } - - this.state.exprAllowed = false; -}; - -types.backQuote.updateContext = function () { - if (this.curContext() === types$1.template) { - this.state.context.pop(); - } else { - this.state.context.push(types$1.template); - } - this.state.exprAllowed = false; -}; - -// These are used when `options.locations` is on, for the -// `startLoc` and `endLoc` properties. - -var Position = function Position(line, col) { - classCallCheck(this, Position); - - this.line = line; - this.column = col; -}; - -var SourceLocation = function SourceLocation(start, end) { - classCallCheck(this, SourceLocation); - - this.start = start; - this.end = end; -}; - -// The `getLineInfo` function is mostly useful when the -// `locations` option is off (for performance reasons) and you -// want to find the line/column position for a given character -// offset. `input` should be the code string that the offset refers -// into. - -function getLineInfo(input, offset) { - for (var line = 1, cur = 0;;) { - lineBreakG.lastIndex = cur; - var match = lineBreakG.exec(input); - if (match && match.index < offset) { - ++line; - cur = match.index + match[0].length; - } else { - return new Position(line, offset - cur); - } - } -} - -var State = function () { - function State() { - classCallCheck(this, State); - } - - State.prototype.init = function init(options, input) { - this.strict = options.strictMode === false ? false : options.sourceType === "module"; - - this.input = input; - - this.potentialArrowAt = -1; - - this.inMethod = this.inFunction = this.inGenerator = this.inAsync = this.inPropertyName = this.inType = this.noAnonFunctionType = false; - - this.labels = []; - - this.decorators = []; - - this.tokens = []; - - this.comments = []; - - this.trailingComments = []; - this.leadingComments = []; - this.commentStack = []; - - this.pos = this.lineStart = 0; - this.curLine = options.startLine; - - this.type = types.eof; - this.value = null; - this.start = this.end = this.pos; - this.startLoc = this.endLoc = this.curPosition(); - - this.lastTokEndLoc = this.lastTokStartLoc = null; - this.lastTokStart = this.lastTokEnd = this.pos; - - this.context = [types$1.braceStatement]; - this.exprAllowed = true; - - this.containsEsc = this.containsOctal = false; - this.octalPosition = null; - - this.invalidTemplateEscapePosition = null; - - this.exportedIdentifiers = []; - - return this; - }; - - // TODO - - - // TODO - - - // Used to signify the start of a potential arrow function - - - // Flags to track whether we are in a function, a generator. - - - // Labels in scope. - - - // Leading decorators. - - - // Token store. - - - // Comment store. - - - // Comment attachment store - - - // The current position of the tokenizer in the input. - - - // Properties of the current token: - // Its type - - - // For tokens that include more information than their type, the value - - - // Its start and end offset - - - // And, if locations are used, the {line, column} object - // corresponding to those offsets - - - // Position information for the previous token - - - // The context stack is used to superficially track syntactic - // context to predict whether a regular expression is allowed in a - // given position. - - - // Used to signal to callers of `readWord1` whether the word - // contained any escape sequences. This is needed because words with - // escape sequences must not be interpreted as keywords. - - - // TODO - - - // Names of exports store. `default` is stored as a name for both - // `export default foo;` and `export { foo as default };`. - - - State.prototype.curPosition = function curPosition() { - return new Position(this.curLine, this.pos - this.lineStart); - }; - - State.prototype.clone = function clone(skipArrays) { - var state = new State(); - for (var key in this) { - var val = this[key]; - - if ((!skipArrays || key === "context") && Array.isArray(val)) { - val = val.slice(); - } - - state[key] = val; - } - return state; - }; - - return State; -}(); - -// Object type used to represent tokens. Note that normally, tokens -// simply exist as properties on the parser object. This is only -// used for the onToken callback and the external tokenizer. - -var Token = function Token(state) { - classCallCheck(this, Token); - - this.type = state.type; - this.value = state.value; - this.start = state.start; - this.end = state.end; - this.loc = new SourceLocation(state.startLoc, state.endLoc); -}; - -// ## Tokenizer - -function codePointToString(code) { - // UTF-16 Decoding - if (code <= 0xFFFF) { - return String.fromCharCode(code); - } else { - return String.fromCharCode((code - 0x10000 >> 10) + 0xD800, (code - 0x10000 & 1023) + 0xDC00); - } -} - -var Tokenizer = function () { - function Tokenizer(options, input) { - classCallCheck(this, Tokenizer); - - this.state = new State(); - this.state.init(options, input); - } - - // Move to the next token - - Tokenizer.prototype.next = function next() { - if (!this.isLookahead) { - this.state.tokens.push(new Token(this.state)); - } - - this.state.lastTokEnd = this.state.end; - this.state.lastTokStart = this.state.start; - this.state.lastTokEndLoc = this.state.endLoc; - this.state.lastTokStartLoc = this.state.startLoc; - this.nextToken(); - }; - - // TODO - - Tokenizer.prototype.eat = function eat(type) { - if (this.match(type)) { - this.next(); - return true; - } else { - return false; - } - }; - - // TODO - - Tokenizer.prototype.match = function match(type) { - return this.state.type === type; - }; - - // TODO - - Tokenizer.prototype.isKeyword = function isKeyword$$1(word) { - return isKeyword(word); - }; - - // TODO - - Tokenizer.prototype.lookahead = function lookahead() { - var old = this.state; - this.state = old.clone(true); - - this.isLookahead = true; - this.next(); - this.isLookahead = false; - - var curr = this.state.clone(true); - this.state = old; - return curr; - }; - - // Toggle strict mode. Re-reads the next number or string to please - // pedantic tests (`"use strict"; 010;` should fail). - - Tokenizer.prototype.setStrict = function setStrict(strict) { - this.state.strict = strict; - if (!this.match(types.num) && !this.match(types.string)) return; - this.state.pos = this.state.start; - while (this.state.pos < this.state.lineStart) { - this.state.lineStart = this.input.lastIndexOf("\n", this.state.lineStart - 2) + 1; - --this.state.curLine; - } - this.nextToken(); - }; - - Tokenizer.prototype.curContext = function curContext() { - return this.state.context[this.state.context.length - 1]; - }; - - // Read a single token, updating the parser object's token-related - // properties. - - Tokenizer.prototype.nextToken = function nextToken() { - var curContext = this.curContext(); - if (!curContext || !curContext.preserveSpace) this.skipSpace(); - - this.state.containsOctal = false; - this.state.octalPosition = null; - this.state.start = this.state.pos; - this.state.startLoc = this.state.curPosition(); - if (this.state.pos >= this.input.length) return this.finishToken(types.eof); - - if (curContext.override) { - return curContext.override(this); - } else { - return this.readToken(this.fullCharCodeAtPos()); - } - }; - - Tokenizer.prototype.readToken = function readToken(code) { - // Identifier or keyword. '\uXXXX' sequences are allowed in - // identifiers, so '\' also dispatches to that. - if (isIdentifierStart(code) || code === 92 /* '\' */) { - return this.readWord(); - } else { - return this.getTokenFromCode(code); - } - }; - - Tokenizer.prototype.fullCharCodeAtPos = function fullCharCodeAtPos() { - var code = this.input.charCodeAt(this.state.pos); - if (code <= 0xd7ff || code >= 0xe000) return code; - - var next = this.input.charCodeAt(this.state.pos + 1); - return (code << 10) + next - 0x35fdc00; - }; - - Tokenizer.prototype.pushComment = function pushComment(block, text, start, end, startLoc, endLoc) { - var comment = { - type: block ? "CommentBlock" : "CommentLine", - value: text, - start: start, - end: end, - loc: new SourceLocation(startLoc, endLoc) - }; - - if (!this.isLookahead) { - this.state.tokens.push(comment); - this.state.comments.push(comment); - this.addComment(comment); - } - }; - - Tokenizer.prototype.skipBlockComment = function skipBlockComment() { - var startLoc = this.state.curPosition(); - var start = this.state.pos; - var end = this.input.indexOf("*/", this.state.pos += 2); - if (end === -1) this.raise(this.state.pos - 2, "Unterminated comment"); - - this.state.pos = end + 2; - lineBreakG.lastIndex = start; - var match = void 0; - while ((match = lineBreakG.exec(this.input)) && match.index < this.state.pos) { - ++this.state.curLine; - this.state.lineStart = match.index + match[0].length; - } - - this.pushComment(true, this.input.slice(start + 2, end), start, this.state.pos, startLoc, this.state.curPosition()); - }; - - Tokenizer.prototype.skipLineComment = function skipLineComment(startSkip) { - var start = this.state.pos; - var startLoc = this.state.curPosition(); - var ch = this.input.charCodeAt(this.state.pos += startSkip); - while (this.state.pos < this.input.length && ch !== 10 && ch !== 13 && ch !== 8232 && ch !== 8233) { - ++this.state.pos; - ch = this.input.charCodeAt(this.state.pos); - } - - this.pushComment(false, this.input.slice(start + startSkip, this.state.pos), start, this.state.pos, startLoc, this.state.curPosition()); - }; - - // Called at the start of the parse and after every token. Skips - // whitespace and comments, and. - - Tokenizer.prototype.skipSpace = function skipSpace() { - loop: while (this.state.pos < this.input.length) { - var ch = this.input.charCodeAt(this.state.pos); - switch (ch) { - case 32:case 160: - // ' ' - ++this.state.pos; - break; - - case 13: - if (this.input.charCodeAt(this.state.pos + 1) === 10) { - ++this.state.pos; - } - - case 10:case 8232:case 8233: - ++this.state.pos; - ++this.state.curLine; - this.state.lineStart = this.state.pos; - break; - - case 47: - // '/' - switch (this.input.charCodeAt(this.state.pos + 1)) { - case 42: - // '*' - this.skipBlockComment(); - break; - - case 47: - this.skipLineComment(2); - break; - - default: - break loop; - } - break; - - default: - if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) { - ++this.state.pos; - } else { - break loop; - } - } - } - }; - - // Called at the end of every token. Sets `end`, `val`, and - // maintains `context` and `exprAllowed`, and skips the space after - // the token, so that the next one's `start` will point at the - // right position. - - Tokenizer.prototype.finishToken = function finishToken(type, val) { - this.state.end = this.state.pos; - this.state.endLoc = this.state.curPosition(); - var prevType = this.state.type; - this.state.type = type; - this.state.value = val; - - this.updateContext(prevType); - }; - - // ### Token reading - - // This is the function that is called to fetch the next token. It - // is somewhat obscure, because it works in character codes rather - // than characters, and because operator parsing has been inlined - // into it. - // - // All in the name of speed. - // - - - Tokenizer.prototype.readToken_dot = function readToken_dot() { - var next = this.input.charCodeAt(this.state.pos + 1); - if (next >= 48 && next <= 57) { - return this.readNumber(true); - } - - var next2 = this.input.charCodeAt(this.state.pos + 2); - if (next === 46 && next2 === 46) { - // 46 = dot '.' - this.state.pos += 3; - return this.finishToken(types.ellipsis); - } else { - ++this.state.pos; - return this.finishToken(types.dot); - } - }; - - Tokenizer.prototype.readToken_slash = function readToken_slash() { - // '/' - if (this.state.exprAllowed) { - ++this.state.pos; - return this.readRegexp(); - } - - var next = this.input.charCodeAt(this.state.pos + 1); - if (next === 61) { - return this.finishOp(types.assign, 2); - } else { - return this.finishOp(types.slash, 1); - } - }; - - Tokenizer.prototype.readToken_mult_modulo = function readToken_mult_modulo(code) { - // '%*' - var type = code === 42 ? types.star : types.modulo; - var width = 1; - var next = this.input.charCodeAt(this.state.pos + 1); - - if (next === 42) { - // '*' - width++; - next = this.input.charCodeAt(this.state.pos + 2); - type = types.exponent; - } - - if (next === 61) { - width++; - type = types.assign; - } - - return this.finishOp(type, width); - }; - - Tokenizer.prototype.readToken_pipe_amp = function readToken_pipe_amp(code) { - // '|&' - var next = this.input.charCodeAt(this.state.pos + 1); - if (next === code) return this.finishOp(code === 124 ? types.logicalOR : types.logicalAND, 2); - if (next === 61) return this.finishOp(types.assign, 2); - if (code === 124 && next === 125 && this.hasPlugin("flow")) return this.finishOp(types.braceBarR, 2); - return this.finishOp(code === 124 ? types.bitwiseOR : types.bitwiseAND, 1); - }; - - Tokenizer.prototype.readToken_caret = function readToken_caret() { - // '^' - var next = this.input.charCodeAt(this.state.pos + 1); - if (next === 61) { - return this.finishOp(types.assign, 2); - } else { - return this.finishOp(types.bitwiseXOR, 1); - } - }; - - Tokenizer.prototype.readToken_plus_min = function readToken_plus_min(code) { - // '+-' - var next = this.input.charCodeAt(this.state.pos + 1); - - if (next === code) { - if (next === 45 && this.input.charCodeAt(this.state.pos + 2) === 62 && lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.pos))) { - // A `-->` line comment - this.skipLineComment(3); - this.skipSpace(); - return this.nextToken(); - } - return this.finishOp(types.incDec, 2); - } - - if (next === 61) { - return this.finishOp(types.assign, 2); - } else { - return this.finishOp(types.plusMin, 1); - } - }; - - Tokenizer.prototype.readToken_lt_gt = function readToken_lt_gt(code) { - // '<>' - var next = this.input.charCodeAt(this.state.pos + 1); - var size = 1; - - if (next === code) { - size = code === 62 && this.input.charCodeAt(this.state.pos + 2) === 62 ? 3 : 2; - if (this.input.charCodeAt(this.state.pos + size) === 61) return this.finishOp(types.assign, size + 1); - return this.finishOp(types.bitShift, size); - } - - if (next === 33 && code === 60 && this.input.charCodeAt(this.state.pos + 2) === 45 && this.input.charCodeAt(this.state.pos + 3) === 45) { - if (this.inModule) this.unexpected(); - // `