UNPKG

505 kBSource Map (JSON)View Raw
1{"version":3,"file":null,"sources":["../components/html.js","../components/styles.js","../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../node_modules/js-yaml/index.js","../components/front-matter.js","../node_modules/bibtex-parse-js/bibtexParse.js","../components/bibliography.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../components/expand-data.js","../components/meta.js","../components/banner.js","../components/header.js","../node_modules/mustache/mustache.js","../components/byline.js","../components/appendix.js","../components/footer.js","../components/citation.js","../components/footnote.js","../node_modules/marked/lib/marked.js","../components/markdown.js","../node_modules/prismjs/prism.js","../components/code.js","../components/typeset.js","../components/hover-box-include.js","../components/generate-crossref.js","../index.js"],"sourcesContent":["export default function(dom) {\n if (!dom.querySelector(\"html\").getAttribute(\"lang\")) {\n dom.querySelector(\"html\").setAttribute(\"lang\", \"en\")\n }\n\n let head = dom.querySelector(\"head\");\n\n if (!dom.querySelector(\"meta[charset]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"charset\", \"utf-8\");\n head.appendChild(meta);\n }\n if (!dom.querySelector(\"meta[name=viewport]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"name\", \"viewport\");\n meta.setAttribute(\"content\", \"width=device-width, initial-scale=1\");\n head.appendChild(meta);\n }\n}\n","import base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport article from './styles-article.css';\nimport code from './styles-code.css';\nimport print from './styles-print.css';\n\nexport default function(dom) {\n let s = dom.createElement(\"style\");\n s.textContent = base + layout + article + code + print;\n dom.querySelector(\"head\").appendChild(s);\n}\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 10 (except 0) or base 60\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n if (!hasDigits) return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (object) { return '0b' + object.toString(2); },\n octal: function (object) { return '0' + object.toString(8); },\n decimal: function (object) { return object.toString(10); },\n hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n '^(?:[-+]?(?:[0-9][0-9_]*)\\\\.[0-9_]*(?:[eE][-+][0-9]+)?' +\n '|\\\\.[0-9_]+(?:[eE][-+][0-9]+)?' +\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data)) return false;\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) return new NodeBuffer(result);\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /*global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length;\n _position < _length;\n _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index, quantity;\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this<parent\n atNewLine = false,\n hasContent = false,\n typeIndex,\n typeQuantity,\n type,\n flowIndent,\n blockIndent;\n\n if (state.listener !== null) {\n state.listener('open', state);\n }\n\n state.tag = null;\n state.anchor = null;\n state.kind = null;\n state.result = null;\n\n allowBlockStyles = allowBlockScalars = allowBlockCollections =\n CONTEXT_BLOCK_OUT === nodeContext ||\n CONTEXT_BLOCK_IN === nodeContext;\n\n if (allowToSeek) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length;\n typeIndex < typeQuantity;\n typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only assigned to plain scalars. So, it isn't\n // needed to check for 'kind' conformity.\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options), index, length;\n\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n && c !== CHAR_COLON\n && c !== CHAR_SHARP;\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (string[0] === ' ' && indentPerLevel > 9) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ', ';\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (index !== 0) pairBuffer += ', ';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + ': ';\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import ymlParse from \"js-yaml\";\n\nexport default function(dom, data) {\n let localData = {};\n let el = dom.querySelector('script[type=\"text/front-matter\"]');\n if (el) {\n let text = el.textContent;\n localData = ymlParse.safeLoad(text);\n }\n\n data.title = localData.title ? localData.title : \"Untitled\";\n data.description = localData.description ? localData.description : \"No description.\";\n\n data.authors = localData.authors ? localData.authors : [];\n\n data.authors = data.authors.map((author, i) =>{\n let a = {};\n let name = Object.keys(author)[0];\n if ((typeof author) === \"string\") {\n name = author;\n } else {\n a.personalURL = author[name];\n }\n let names = name.split(\" \");\n a.name = name;\n a.firstName = names.slice(0, names.length - 1).join(\" \");\n a.lastName = names[names.length -1];\n if(localData.affiliations[i]) {\n let affiliation = Object.keys(localData.affiliations[i])[0];\n if ((typeof localData.affiliations[i]) === \"string\") {\n affiliation = localData.affiliations[i]\n } else {\n a.affiliationURL = localData.affiliations[i][affiliation];\n }\n a.affiliation = affiliation;\n }\n return a;\n });\n \n\n}\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","import bibtexParse from \"bibtex-parse-js\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/bibliography\"]');\n let citations = [];\n let bibliography = {};\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let rawBib = el.textContent;\n let parsed = bibtexParse.toJSON(rawBib);\n if(parsed) {\n parsed.forEach(e => {\n for (var k in e.entryTags){\n var val = e.entryTags[k];\n val = val.replace(/[\\t\\n ]+/g, \" \");\n val = val.replace(/{\\\\[\"^`\\.'acu~Hvs]( )?([a-zA-Z])}/g,\n (full, x, char) => char);\n val = val.replace(/{\\\\([a-zA-Z])}/g,\n (full, char) => char);\n e.entryTags[k] = val;\n }\n bibliography[e.citationKey] = e.entryTags;\n bibliography[e.citationKey].type = e.entryType;\n });\n }\n\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n let key = el.getAttribute(\"key\");\n if (key) {\n let citationKeys = key.split(\",\");\n citationKeys.forEach(key => {\n if (citations.indexOf(key) == -1){\n citations.push(key);\n if (!(key in bibliography)){\n console.warn(\"No bibliography entry found for: \" + key);\n }\n }\n });\n }\n });\n }\n data.bibliography = bibliography;\n data.citations = citations;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) while (--step >= 0) while (offseti(date, 1), !test(date)) {} // eslint-disable-line no-empty\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute} from \"./duration\";\n\nvar hour = interval(function(date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {timeDay, timeSunday, timeMonday, timeYear, utcDay, utcSunday, utcMonday, utcYear} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"S\": formatSeconds,\n \"U\": formatWeekNumberSunday,\n \"w\": formatWeekdayNumber,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"S\": formatUTCSeconds,\n \"U\": formatUTCWeekNumberSunday,\n \"w\": formatUTCWeekdayNumber,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"S\": parseSeconds,\n \"U\": parseWeekNumberSunday,\n \"w\": parseWeekdayNumber,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0);\n if (i != string.length) return null;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekdayNumber(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekdayNumber(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {timeFormat} from \"d3-time-format\";\n\nexport default function(dom, data) {\n\n data.authors = data.authors || [];\n\n // paths\n data.url = \"http://distill.pub/\" + data.distillPath;\n data.githubUrl = \"https://github.com/\" + data.githubPath;\n\n // Homepage\n //data.homepage = !post.noHomepage;\n data.journal = data.journal || {};\n\n // Dates\n if (data.publishedDate){//} && data.journal) {\n data.volume = data.publishedDate.getFullYear() - 2015;\n data.issue = data.publishedDate.getMonth() + 1;\n }\n\n data.publishedDate = data.publishedDate ? data.publishedDate : new Date(\"Invalid\");\n data.updatedDate = data.updatedDate ? data.updatedDate : new Date(\"Invalid\");\n\n data.publishedDateRFC\n let RFC = timeFormat(\"%a, %d %b %Y %H:%M:%S %Z\");\n let months = [\"Jan\", \"Feb\", \"March\", \"April\", \"May\", \"June\", \"July\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n data.publishedDateRFC = RFC(data.publishedDate);\n data.publishedYear = data.publishedDate.getFullYear();\n data.publishedMonth = months[data.publishedDate.getMonth()];\n data.publishedDay = data.publishedDate.getDate();\n data.publishedMonthPadded = zeroPad(data.publishedDate.getMonth() + 1);\n data.publishedDayPadded = zeroPad(data.publishedDate.getDate());\n data.updatedDateRFC = RFC(data.updatedDate);\n\n if (data.authors.length > 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \", et al.\";\n } else if (data.authors.length === 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \" & \" + data.authors[1].lastName;\n } else if (data.authors.length === 1) {\n data.concatenatedAuthors = data.authors[0].lastName\n }\n\n data.bibtexAuthors = data.authors.map(function(author){\n return author.lastName + \", \" + author.firstName;\n }).join(\" and \");\n\n data.slug = data.authors.length ? data.authors[0].lastName.toLowerCase() + data.publishedYear + data.title.split(\" \")[0].toLowerCase() : \"Untitled\";\n\n}\n","import favicon from './distill-favicon.base64';\n\nexport default function(dom, data) {\n let head = dom.querySelector(\"head\");\n let appendHead = html => appendHtml(head, html);\n\n function meta(name, content) {\n if (content)\n appendHead(` <meta name=\"${name}\" content=\"${content}\" >\\n`);\n }\n\n appendHead(`\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge,chrome=1\">\n <link rel=\"icon\" type=\"image/png\" href=\"data:image/png;base64,${favicon}\">\n <link href=\"/rss.xml\" rel=\"alternate\" type=\"application/rss+xml\" title=\"Articles from Distill\">\n <link rel=\"canonical\" href=\"${data.url}\">\n <title>${data.title}</title>\n `);\n\n appendHead(`\n <!-- https://schema.org/Article -->\n <meta property=\"article:published\" itemprop=\"datePublished\" content=\"${data.publishedYear}-${data.publishedMonthPadded}-${data.publishedDayPadded}\" />\n <meta property=\"article:modified\" itemprop=\"dateModified\" content=\"${data.updatedDate}\" />\n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n <meta property=\"article:author\" content=\"${a.firstName} ${a.lastName}\" />`)\n });\n\n appendHead(`\n <!-- https://developers.facebook.com/docs/sharing/webmasters#markup -->\n <meta property=\"og:type\" content=\"article\"/>\n <meta property=\"og:title\" content=\"${data.title}\"/>\n <meta property=\"og:description\" content=\"${data.description}\">\n <meta property=\"og:url\" content=\"${data.url}\"/>\n <meta property=\"og:image\" content=\"${data.url}/thumbnail.jpg\"/>\n <meta property=\"og:locale\" content=\"en_US\" />\n <meta property=\"og:site_name\" content=\"Distill\" />\n `);\n\n appendHead(`\n <!-- https://dev.twitter.com/cards/types/summary -->\n <meta name=\"twitter:card\" content=\"summary_large_image\">\n <meta name=\"twitter:title\" content=\"${data.title}\">\n <meta name=\"twitter:description\" content=\"${data.description}\">\n <meta name=\"twitter:url\" content=\"${data.url}\">\n <meta name=\"twitter:image\" content=\"${data.url}/thumbnail.jpg\">\n <meta name=\"twitter:image:width\" content=\"560\">\n <meta name=\"twitter:image:height\" content=\"295\">\n `);\n\n // if this is a proprer article, generate Google Scholar meta data\n if (data.doiSuffix){\n appendHead(`\n <!-- https://scholar.google.com/intl/en/scholar/inclusion.html#indexing -->\\n`);\n\n meta(\"citation_title\", data.title);\n meta(\"citation_fulltext_html_url\", data.url);\n meta(\"citation_volume\", data.volume);\n meta(\"citation_issue\", data.issue);\n meta(\"citation_firstpage\", data.doiSuffix? `e${data.doiSuffix}` : undefined);\n meta(\"citation_doi\", data.doi);\n\n let journal = data.journal || {};\n meta(\"citation_journal_title\", journal.name);\n meta(\"citation_journal_abbrev\", journal.nameAbbrev);\n meta(\"citation_issn\", journal.issn);\n meta(\"citation_publisher\", journal.publisher);\n\n if (data.publishedDate){\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n meta(\"citation_publication_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n }\n\n (data.authors || []).forEach((a) => {\n meta(\"citation_author\", `${a.lastName}, ${a.firstName}`);\n meta(\"citation_author_institution\", a.affiliation);\n });\n\n if (data.citations) {\n data.citations.forEach(key => {\n let d = data.bibliography[key];\n if(!d) {\n console.warn(\"No bibliography data fround for \" + key)\n } else {\n meta(\"citation_reference\", citation_meta_content(data.bibliography[key]) )\n };\n });\n }\n }\n}\n\nfunction appendHtml(el, html) {\n el.innerHTML += html;\n}\n\nfunction citation_meta_content(ref){\n var content = `citation_title=${ref.title};`;\n ref.author.split(\" and \").forEach(author => {\n content += `citation_author=${author.trim()};`;\n });\n if (\"journal\" in ref){\n content += `citation_journal_title=${ref.journal};`;\n }\n if (\"volume\" in ref) {\n content += `citation_volume=${ref.volume};`;\n }\n if (\"issue\" in ref || \"number\" in ref){\n content += `citation_number=${ref.issue || ref.number};`;\n }\n /*content += `citation_first_page=${};`;\n content += `citation_publication_date=${};`;*/\n return content;\n}\n","const html = `\n<style>\n dt-banner {\n background: #FFF59D;\n display: block;\n text-align: center;\n color: black;\n height: 70px;\n line-height: 70px;\n }\n</style>\n<div>This article is a draft, awaiting review for publication in Distill</div>\n`;\n\nexport default function(dom, data) {\n let banner = dom.createElement(\"dt-banner\");\n banner.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(banner, b.firstChild);\n banner.addEventListener(\"click\", function() {\n banner.style.display = \"none\";\n });\n}\n","import logo from \"./distill-logo.svg\";\n\nconst html = `\n<style>\ndt-header {\n display: block;\n position: relative;\n height: 60px;\n background-color: hsl(223, 9%, 25%);\n width: 100%;\n box-sizing: border-box;\n z-index: 2;\n color: rgba(0, 0, 0, 0.8);\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n box-shadow: 0 1px 6px rgba(0, 0, 0, 0.05);\n}\ndt-header .content {\n height: 70px;\n}\ndt-header a {\n font-size: 16px;\n height: 60px;\n line-height: 60px;\n text-decoration: none;\n color: rgba(255, 255, 255, 0.8);\n padding: 22px 0;\n}\ndt-header a:hover {\n color: rgba(255, 255, 255, 1);\n}\ndt-header svg {\n width: 24px;\n position: relative;\n top: 4px;\n margin-right: 2px;\n}\n\n@media(min-width: 1080px) {\n dt-header {\n height: 70px;\n }\n dt-header a {\n height: 70px;\n line-height: 70px;\n padding: 28px 0;\n }\n dt-header .logo {\n }\n}\n\ndt-header svg path {\n fill: none;\n stroke: rgba(255, 255, 255, 0.8);\n stroke-width: 3px;\n}\ndt-header .logo {\n font-size: 13px;\n font-weight: 300;\n text-transform: uppercase;\n}\ndt-header .nav {\n float: right;\n font-weight: 300;\n}\ndt-header .nav a {\n font-size: 14px;\n}\n</style>\n\n<div class=\"content l-page\">\n <a href=\"/\" class=\"logo\">\n ${logo}\n Distill\n </a>\n <div class=\"nav\">\n <a href=\"/faq\">About</a>\n <!-- https://twitter.com/distillpub -->\n </div>\n</div>\n`\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-header\");\n if(el) {\n el.innerHTML = html;\n } else {\n let header = dom.createElement(\"dt-header\");\n header.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(header, b.firstChild);\n }\n}\n","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\n/*global define: false Mustache: true*/\n\n(function defineMustache (global, factory) {\n if (typeof exports === 'object' && exports && typeof exports.nodeName !== 'string') {\n factory(exports); // CommonJS\n } else if (typeof define === 'function' && define.amd) {\n define(['exports'], factory); // AMD\n } else {\n global.Mustache = {};\n factory(global.Mustache); // script, wsh, asp\n }\n}(this, function mustacheFactory (mustache) {\n\n var objectToString = Object.prototype.toString;\n var isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n };\n\n function isFunction (object) {\n return typeof object === 'function';\n }\n\n /**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\n function typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n }\n\n function escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n /**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\n function hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n }\n\n // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n // See https://github.com/janl/mustache.js/issues/189\n var regExpTest = RegExp.prototype.test;\n function testRegExp (re, string) {\n return regExpTest.call(re, string);\n }\n\n var nonSpaceRe = /\\S/;\n function isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n }\n\n var entityMap = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;',\n '/': '&#x2F;',\n '`': '&#x60;',\n '=': '&#x3D;'\n };\n\n function escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n }\n\n var whiteRe = /\\s*/;\n var spaceRe = /\\s+/;\n var equalsRe = /\\s*=/;\n var curlyRe = /\\s*\\}/;\n var tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n /**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n */\n function parseTemplate (template, tags) {\n if (!template)\n return [];\n\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n } else {\n nonSpace = true;\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n')\n stripSpace();\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n token = [ type, value, start, scanner.pos ];\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n }\n\n /**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\n function squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n }\n\n /**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\n function nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n }\n\n /**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\n function Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n }\n\n /**\n * Returns `true` if the tail is empty (end of string).\n */\n Scanner.prototype.eos = function eos () {\n return this.tail === '';\n };\n\n /**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\n Scanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n };\n\n /**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\n Scanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n };\n\n /**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\n function Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n }\n\n /**\n * Creates a new context using the given view with this context\n * as the parent.\n */\n Context.prototype.push = function push (view) {\n return new Context(view, this);\n };\n\n /**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\n Context.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n value = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n **/\n while (value != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = hasProperty(value, names[index]);\n\n value = value[names[index++]];\n }\n } else {\n value = context.view[name];\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit)\n break;\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n };\n\n /**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\n function Writer () {\n this.cache = {};\n }\n\n /**\n * Clears all cached templates in this writer.\n */\n Writer.prototype.clearCache = function clearCache () {\n this.cache = {};\n };\n\n /**\n * Parses and caches the given `template` and returns the array of tokens\n * that is generated from the parse.\n */\n Writer.prototype.parse = function parse (template, tags) {\n var cache = this.cache;\n var tokens = cache[template];\n\n if (tokens == null)\n tokens = cache[template] = parseTemplate(template, tags);\n\n return tokens;\n };\n\n /**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n */\n Writer.prototype.render = function render (template, view, partials) {\n var tokens = this.parse(template);\n var context = (view instanceof Context) ? view : new Context(view);\n return this.renderTokens(tokens, context, partials, template);\n };\n\n /**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\n Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, originalTemplate);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n };\n\n Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate);\n }\n return buffer;\n };\n\n Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate);\n };\n\n Writer.prototype.renderPartial = function renderPartial (token, context, partials) {\n if (!partials) return;\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null)\n return this.renderTokens(this.parse(value), context, partials, value);\n };\n\n Writer.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n };\n\n Writer.prototype.escapedValue = function escapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return mustache.escape(value);\n };\n\n Writer.prototype.rawValue = function rawValue (token) {\n return token[1];\n };\n\n mustache.name = 'mustache.js';\n mustache.version = '2.3.0';\n mustache.tags = [ '{{', '}}' ];\n\n // All high-level mustache.* functions use this writer.\n var defaultWriter = new Writer();\n\n /**\n * Clears all cached templates in the default writer.\n */\n mustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n };\n\n /**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\n mustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n };\n\n /**\n * Renders the `template` with the given `view` and `partials` using the\n * default writer.\n */\n mustache.render = function render (template, view, partials) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials);\n };\n\n // This is here for backwards compatibility with 0.4.x.,\n /*eslint-disable */ // eslint wants camel cased function name\n mustache.to_html = function to_html (template, view, partials, send) {\n /*eslint-enable*/\n\n var result = mustache.render(template, view, partials);\n\n if (isFunction(send)) {\n send(result);\n } else {\n return result;\n }\n };\n\n // Export the escaping function so that the user may override it.\n // See https://github.com/janl/mustache.js/issues/244\n mustache.escape = escapeHtml;\n\n // Export these mainly for testing, but also for advanced usage.\n mustache.Scanner = Scanner;\n mustache.Context = Context;\n mustache.Writer = Writer;\n\n return mustache;\n}));\n","import mustache from \"mustache\";\n\nconst html = `\n<style>\n dt-byline {\n font-size: 12px;\n line-height: 18px;\n display: block;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n color: rgba(0, 0, 0, 0.5);\n padding-top: 12px;\n padding-bottom: 12px;\n }\n dt-article.centered dt-byline {\n text-align: center;\n\n }\n dt-byline a,\n dt-article dt-byline a {\n text-decoration: none;\n border-bottom: none;\n }\n dt-article dt-byline a:hover {\n text-decoration: underline;\n border-bottom: none;\n }\n dt-byline .authors {\n text-align: left;\n }\n dt-byline .name {\n display: inline;\n text-transform: uppercase;\n }\n dt-byline .affiliation {\n display: inline;\n }\n dt-byline .date {\n display: block;\n text-align: left;\n }\n dt-byline .year, dt-byline .month {\n display: inline;\n }\n dt-byline .citation {\n display: block;\n text-align: left;\n }\n dt-byline .citation div {\n display: inline;\n }\n\n @media(min-width: 768px) {\n dt-byline {\n }\n }\n\n @media(min-width: 1080px) {\n dt-byline {\n border-bottom: none;\n margin-bottom: 70px;\n }\n\n dt-byline a:hover {\n color: rgba(0, 0, 0, 0.9);\n }\n\n dt-byline .authors {\n display: inline-block;\n }\n\n dt-byline .author {\n display: inline-block;\n margin-right: 12px;\n /*padding-left: 20px;*/\n /*border-left: 1px solid #ddd;*/\n }\n\n dt-byline .affiliation {\n display: block;\n }\n\n dt-byline .author:last-child {\n margin-right: 0;\n }\n\n dt-byline .name {\n display: block;\n }\n\n dt-byline .date {\n border-left: 1px solid rgba(0, 0, 0, 0.1);\n padding-left: 15px;\n margin-left: 15px;\n display: inline-block;\n }\n dt-byline .year, dt-byline .month {\n display: block;\n }\n\n dt-byline .citation {\n border-left: 1px solid rgba(0, 0, 0, 0.15);\n padding-left: 15px;\n margin-left: 15px;\n display: inline-block;\n }\n dt-byline .citation div {\n display: block;\n }\n }\n</style>\n\n`;\n\nconst template = `\n<div class=\"byline\">\n <div class=\"authors\">\n {{#authors}}\n <div class=\"author\">\n {{#personalURL}}\n <a class=\"name\" href=\"{{personalURL}}\">{{name}}</a>\n {{/personalURL}}\n {{^personalURL}}\n <div class=\"name\">{{name}}</div>\n {{/personalURL}}\n {{#affiliation}}\n {{#affiliationURL}}\n <a class=\"affiliation\" href=\"{{affiliationURL}}\">{{affiliation}}</a>\n {{/affiliationURL}}\n {{^affiliationURL}}\n <div class=\"affiliation\">{{affiliation}}</div>\n {{/affiliationURL}}\n {{/affiliation}}\n </div>\n {{/authors}}\n </div>\n <div class=\"date\">\n <div class=\"month\">{{publishedMonth}}. {{publishedDay}}</div>\n <div class=\"year\">{{publishedYear}}</div>\n </div>\n <a class=\"citation\" href=\"#citation\">\n <div>Citation:</div>\n <div>{{concatenatedAuthors}}, {{publishedYear}}</div>\n </a>\n</div>\n`\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-byline');\n if (el) {\n el.innerHTML = html + mustache.render(template, data);\n }\n}\n","const html = `\n<style>\n dt-appendix {\n display: block;\n font-size: 14px;\n line-height: 24px;\n margin-bottom: 0;\n border-top: 1px solid rgba(0,0,0,0.1);\n color: rgba(0,0,0,0.5);\n background: rgb(250, 250, 250);\n padding-top: 36px;\n padding-bottom: 60px;\n }\n dt-appendix h3 {\n font-size: 16px;\n font-weight: 500;\n margin-top: 18px;\n margin-bottom: 18px;\n color: rgba(0,0,0,0.65);\n }\n dt-appendix .citation {\n font-size: 11px;\n line-height: 15px;\n border-left: 1px solid rgba(0, 0, 0, 0.1);\n padding-left: 18px;\n border: 1px solid rgba(0,0,0,0.1);\n background: rgba(0, 0, 0, 0.02);\n padding: 10px 18px;\n border-radius: 3px;\n color: rgba(150, 150, 150, 1);\n overflow: hidden;\n margin-top: -12px;\n }\n dt-appendix .references {\n font-size: 12px;\n line-height: 20px;\n }\n dt-appendix a {\n color: rgba(0, 0, 0, 0.6);\n }\n dt-appendix ol,\n dt-appendix ul {\n padding-left: 24px;\n }\n</style>\n\n<div class=\"l-body\">\n <h3>References</h3>\n <dt-bibliography></dt-bibliography>\n <h3 id=\"citation\">Errors, Reuse, and Citation</h3>\n <p>If you see mistakes or want to suggest changes, please <a class=\"github-issue\">create an issue on GitHub</a>.</p>\n <p>Diagrams and text are licensed under Creative Commons Attribution <a href=\"https://creativecommons.org/licenses/by/2.0/\">CC-BY 2.0</a>, unless noted otherwise, with the <a class=\"github\">source available on GitHub</a>. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.</p>\n <p>For attribution in academic contexts, please cite this work as</p>\n <pre class=\"citation short\"></pre>\n <p>BibTeX citation</p>\n <pre class=\"citation long\"></pre>\n</div>\n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-appendix')\n if (el) {\n let oldHtml = el.innerHTML;\n el.innerHTML = html;\n let div = el.querySelector(\"div.l-body\")\n\n if (dom.querySelector(\"dt-fn\")) {\n div.innerHTML = `<h3>Footnotes</h3><dt-fn-list></dt-fn-list>` + div.innerHTML;\n }\n\n div.innerHTML = oldHtml + div.innerHTML;\n console.log(data.githubCompareUpdatesUrl);\n if (data.githubCompareUpdatesUrl) {\n div.innerHTML = `<h3>Updates</h3><p><a href=\"${data.githubCompareUpdatesUrl}\">View all changes</a> to this article since it was first published.</p>` + div.innerHTML;\n }\n\n el.querySelector(\"a.github\").setAttribute(\"href\", data.githubUrl);\n el.querySelector(\"a.github-issue\").setAttribute(\"href\", data.githubUrl + \"/issues/new\");\n el.querySelector(\".citation.short\").textContent = data.concatenatedAuthors + \", \" + '\"' + data.title + '\", Distill, ' + data.publishedYear + \".\";\n var bibtex = \"@article{\" + data.slug + \",\\n\";\n bibtex += \" author = {\" + data.bibtexAuthors + \"},\\n\";\n bibtex += \" title = {\" + data.title + \"},\\n\";\n bibtex += \" journal = {Distill},\\n\";\n bibtex += \" year = {\" + data.publishedYear + \"},\\n\";\n bibtex += \" note = {\" + data.url + \"}\\n\";\n bibtex += \"}\";\n el.querySelector(\".citation.long\").textContent = bibtex;\n }\n\n}\n","import logo from \"./distill-logo.svg\";\n\nlet html = `\n<style>\ndt-footer {\n display: block;\n color: rgba(255, 255, 255, 0.4);\n font-weight: 300;\n padding: 40px 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n background-color: hsl(223, 9%, 25%);\n text-align: center;\n}\ndt-footer .logo svg {\n width: 24px;\n position: relative;\n top: 4px;\n margin-right: 2px;\n}\ndt-footer .logo svg path {\n fill: none;\n stroke: rgba(255, 255, 255, 0.8);\n stroke-width: 3px;\n}\ndt-footer .logo {\n font-size: 13px;\n font-weight: 300;\n text-transform: uppercase;\n color: rgba(255, 255, 255, 0.8);\n text-decoration: none;\n margin-right: 6px;\n}\n</style>\n\n<div class=\"l-screen-inset\">\n <a href=\"/\" class=\"logo\">\n ${logo}\n Distill\n </a> is dedicated to clear explanations of machine learning\n</div>\n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-footer\");\n if(el) {\n el.innerHTML = html;\n } else {\n let footer = dom.createElement(\"dt-footer\");\n footer.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.appendChild(footer);\n }\n}\n","export default function(dom, data) {\n let css = `\n dt-cite {\n color: hsla(206, 90%, 20%, 0.7);\n }\n dt-cite .citation-number {\n cursor: default;\n white-space: nowrap;\n font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", Helvetica, sans-serif;\n font-size: 75%;\n color: hsla(206, 90%, 20%, 0.7);\n display: inline-block;\n line-height: 1.1em;\n text-align: center;\n position: relative;\n top: -2px;\n margin: 0 2px;\n }\n figcaption dt-cite .citation-number {\n font-size: 11px;\n font-weight: normal;\n top: -2px;\n line-height: 1em;\n }\n `;\n\n let style = dom.createElement(\"style\");\n style.textContent = css;\n dom.querySelector(\"body\").appendChild(style);\n\n let citations = data.citations;\n /*if (data.citations) {\n citations = Object.keys(data.citations).map(c => data.citations[c]);\n citations.sort((a, b) => {\n return a.author.localeCompare(b.author);\n });\n }*/\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach((el,n) => {\n var key = el.getAttribute(\"key\");\n if (key) {\n var keys = key.split(\",\");\n var cite_string = inline_cite_short(keys);\n var cite_hover_str = \"\";\n keys.map((key,n) => {\n if (n>0) cite_hover_str += \"<br><br>\";\n cite_hover_str += hover_cite(data.bibliography[key]);\n });\n cite_hover_str = cite_hover_str.replace(/\"/g, \"&#39;\")\n var orig_string = el.innerHTML;\n if (orig_string != \"\") orig_string += \" \";\n el.innerHTML = `<span id=\"citation-${n}\" data-hover=\"${cite_hover_str}\">${orig_string}<span class=\"citation-number\">${cite_string}</span></span>`;\n }\n });\n\n let bibEl = dom.querySelector(\"dt-bibliography\");\n if (bibEl) {\n let ol = dom.createElement(\"ol\");\n citations.forEach(key => {\n let el = dom.createElement(\"li\");\n el.innerHTML = bibliography_cite(data.bibliography[key]);\n ol.appendChild(el);\n })\n bibEl.appendChild(ol);\n }\n\n function inline_cite_short(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var n = data.citations.indexOf(key)+1;\n return \"\"+n;\n } else {\n return \"?\";\n }\n }\n return \"[\"+keys.map(cite_string).join(\", \")+\"]\";\n }\n\n function inline_cite_long(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var ent = data.bibliography[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n return keys.map(cite_string).join(\", \");\n }\n\n function author_string(ent, template, sep, finalSep){\n var names = ent.author.split(\" and \");\n let name_strings = names.map(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n var initials = \"\";\n if (firsts != undefined) {\n initials = firsts.trim().split(\" \").map(s => s.trim()[0]);\n initials = initials.join(\".\")+\".\";\n }\n return template.replace(\"${F}\", firsts)\n .replace(\"${L}\", last)\n .replace(\"${I}\", initials);\n });\n if (names.length > 1) {\n var str = name_strings.slice(0, names.length-1).join(sep);\n str += (finalSep || sep) + name_strings[names.length-1];\n return str;\n } else {\n return name_strings[0];\n }\n }\n\n function venue_string(ent) {\n var cite = (ent.journal || ent.booktitle || \"\")\n if (\"volume\" in ent){\n var issue = ent.issue || ent.number;\n issue = (issue != undefined)? \"(\"+issue+\")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent){\n cite += \", pp. \" + ent.pages\n }\n if (cite != \"\") cite += \". \"\n if (\"publisher\" in ent){\n cite += ent.publisher;\n if (cite[cite.length-1] != \".\") cite += \".\";\n }\n return cite;\n }\n\n function link_string(ent){\n if (\"url\" in ent){\n var url = ent.url;\n var arxiv_match = (/arxiv\\.org\\/abs\\/([0-9\\.]*)/).exec(url);\n if (arxiv_match != null){\n url = `http://arxiv.org/pdf/${arxiv_match[1]}.pdf`;\n }\n\n if (url.slice(-4) == \".pdf\"){\n var label = \"PDF\";\n } else if (url.slice(-5) == \".html\") {\n var label = \"HTML\";\n }\n return ` &ensp;<a href=\"${url}\">[${label||\"link\"}]</a>`;\n }/* else if (\"doi\" in ent){\n return ` &ensp;<a href=\"https://doi.org/${ent.doi}\" >[DOI]</a>`;\n }*/ else {\n return \"\";\n }\n }\n function doi_string(ent, new_line){\n if (\"doi\" in ent) {\n return `${new_line?\"<br>\":\"\"} <a href=\"https://doi.org/${ent.doi}\" style=\"text-decoration:inherit;\">DOI: ${ent.doi}</a>`;\n } else {\n return \"\";\n }\n }\n\n function bibliography_cite(ent, fancy){\n if (ent){\n var cite = \"<b>\" + ent.title + \"</b> \"\n cite += link_string(ent) + \"<br>\";\n cite += author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += venue_string(ent);\n cite += doi_string(ent);\n return cite\n /*var cite = author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += \"<b>\" + ent.title + \"</b>. \";\n cite += venue_string(ent);\n cite += doi_string(ent);\n cite += link_string(ent);\n return cite*/\n } else {\n return \"?\";\n }\n }\n\n function hover_cite(ent){\n if (ent){\n var cite = \"\";\n cite += \"<b>\" + ent.title + \"</b>\";\n cite += link_string(ent);\n cite += \"<br>\"\n\n var a_str = author_string(ent, \"${I} ${L}\", \", \") + \".\";\n var v_str = venue_string(ent).trim() + \" \" + ent.year + \". \" + doi_string(ent, true);\n\n if ((a_str+v_str).length < Math.min(40, ent.title.length)) {\n cite += a_str + \" \" + v_str;\n } else {\n cite += a_str + \"<br>\" + v_str;\n }\n return cite;\n } else {\n return \"?\";\n }\n }\n\n\n //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\n function get_GS_URL(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var title = ent.title.split(\" \")//.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"//\"\"https://scholar.google.com/scholar?\"\n url += uris({q: names.join(\" \") + \" \" + title.join(\" \")})\n }\n\n }\n}\n","export default function(dom, data) {\n\n var fnTags = [].slice.apply(dom.querySelectorAll(\"dt-fn\"));\n var fnContent = [];\n fnTags.forEach((el,n) => {\n var content = el.innerHTML;\n fnContent.push(content);\n n = (n+1)+\"\";\n var key = \"fn-\"+n;\n var escaped_content = content.replace(/\"/g, \"&#39;\");\n el.innerHTML = `<sup><span id=\"${key}\" data-hover=\"${escaped_content}\" style=\"cursor:pointer\">${n}</span></sup>`;\n });\n\n let fnList = dom.querySelector(\"dt-fn-list\");\n if (fnList) {\n let ol = dom.createElement(\"ol\");\n fnContent.forEach(content => {\n let el = dom.createElement(\"li\");\n el.innerHTML = content;\n ol.appendChild(el);\n })\n fnList.appendChild(ol);\n }\n\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', /<!--[\\s\\S]*?-->/)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /<tag(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^<!--[\\s\\S]*?-->|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\<!\\[_*`]| {2,}\\n|$)/\n};\n\ninline._inside = /(?:\\[[^\\]]*\\]|[^\\[\\]]|\\](?=[^\\[]*\\]))*/;\ninline._href = /\\s*<?([\\s\\S]*?)>?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^<a /i.test(cap[0])) {\n this.inLink = true;\n } else if (this.inLink && /^<\\/a>/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '<pre><code>'\n + (escaped ? code : escape(code, true))\n + '\\n</code></pre>';\n }\n\n return '<pre><code class=\"'\n + this.options.langPrefix\n + escape(lang, true)\n + '\">'\n + (escaped ? code : escape(code, true))\n + '\\n</code></pre>\\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '<blockquote>\\n' + quote + '</blockquote>\\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return '<h'\n + level\n + ' id=\"'\n + this.options.headerPrefix\n + raw.toLowerCase().replace(/[^\\w]+/g, '-')\n + '\">'\n + text\n + '</h'\n + level\n + '>\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '<hr/>\\n' : '<hr>\\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '</' + type + '>\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '<li>' + text + '</li>\\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '<p>' + text + '</p>\\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '<table>\\n'\n + '<thead>\\n'\n + header\n + '</thead>\\n'\n + '<tbody>\\n'\n + body\n + '</tbody>\\n'\n + '</table>\\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '<tr>\\n' + content + '</tr>\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '</' + type + '>\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '<strong>' + text + '</strong>';\n};\n\nRenderer.prototype.em = function(text) {\n return '<em>' + text + '</em>';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '<code>' + text + '</code>';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '<br/>' : '<br>';\n};\n\nRenderer.prototype.del = function(text) {\n return '<del>' + text + '</del>';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '<a href=\"' + href + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += '>' + text + '</a>';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '<img src=\"' + href + '\" alt=\"' + text + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += this.options.xhtml ? '/>' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#39;');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '<p>An error occured:</p><pre>'\n + escape(e.message + '', true)\n + '</pre>';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","import marked from 'marked';\n\nmarked.setOptions({\n gfm: true,\n smartypants: true\n});\n\nexport default function(dom, data) {\n let markdownElements = [].slice.call(dom.querySelectorAll('[markdown]'));\n markdownElements.forEach(el => {\n let content = el.innerHTML;\n // Set default indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n\n el.innerHTML = marked(content);\n });\n}\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/\\u00a0/g, ' ');\n\t\t\t}\n\t\t},\n\n\t\ttype: function (o) {\n\t\t\treturn Object.prototype.toString.call(o).match(/\\[object (\\w+)\\]/)[1];\n\t\t},\n\n\t\tobjId: function (obj) {\n\t\t\tif (!obj['__id']) {\n\t\t\t\tObject.defineProperty(obj, '__id', { value: ++uniqueId });\n\t\t\t}\n\t\t\treturn obj['__id'];\n\t\t},\n\n\t\t// Deep clone a language definition (e.g. to extend it)\n\t\tclone: function (o) {\n\t\t\tvar type = _.util.type(o);\n\n\t\t\tswitch (type) {\n\t\t\t\tcase 'Object':\n\t\t\t\t\tvar clone = {};\n\n\t\t\t\t\tfor (var key in o) {\n\t\t\t\t\t\tif (o.hasOwnProperty(key)) {\n\t\t\t\t\t\t\tclone[key] = _.util.clone(o[key]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn clone;\n\n\t\t\t\tcase 'Array':\n\t\t\t\t\t// Check for existence for IE8\n\t\t\t\t\treturn o.map && o.map(function(v) { return _.util.clone(v); });\n\t\t\t}\n\n\t\t\treturn o;\n\t\t}\n\t},\n\n\tlanguages: {\n\t\textend: function (id, redef) {\n\t\t\tvar lang = _.util.clone(_.languages[id]);\n\n\t\t\tfor (var key in redef) {\n\t\t\t\tlang[key] = redef[key];\n\t\t\t}\n\n\t\t\treturn lang;\n\t\t},\n\n\t\t/**\n\t\t * Insert a token before another token in a language literal\n\t\t * As this needs to recreate the object (we cannot actually insert before keys in object literals),\n\t\t * we cannot just provide an object, we need anobject and a key.\n\t\t * @param inside The key (or language id) of the parent\n\t\t * @param before The key to insert before. If not provided, the function appends instead.\n\t\t * @param insert Object with the key/value pairs to insert\n\t\t * @param root The object that contains `inside`. If equal to Prism.languages, it can be omitted.\n\t\t */\n\t\tinsertBefore: function (inside, before, insert, root) {\n\t\t\troot = root || _.languages;\n\t\t\tvar grammar = root[inside];\n\n\t\t\tif (arguments.length == 2) {\n\t\t\t\tinsert = arguments[1];\n\n\t\t\t\tfor (var newToken in insert) {\n\t\t\t\t\tif (insert.hasOwnProperty(newToken)) {\n\t\t\t\t\t\tgrammar[newToken] = insert[newToken];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn grammar;\n\t\t\t}\n\n\t\t\tvar ret = {};\n\n\t\t\tfor (var token in grammar) {\n\n\t\t\t\tif (grammar.hasOwnProperty(token)) {\n\n\t\t\t\t\tif (token == before) {\n\n\t\t\t\t\t\tfor (var newToken in insert) {\n\n\t\t\t\t\t\t\tif (insert.hasOwnProperty(newToken)) {\n\t\t\t\t\t\t\t\tret[newToken] = insert[newToken];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tret[token] = grammar[token];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Update references in other language definitions\n\t\t\t_.languages.DFS(_.languages, function(key, value) {\n\t\t\t\tif (value === root[inside] && key != inside) {\n\t\t\t\t\tthis[key] = ret;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn root[inside] = ret;\n\t\t},\n\n\t\t// Traverse a language definition with Depth First Search\n\t\tDFS: function(o, callback, type, visited) {\n\t\t\tvisited = visited || {};\n\t\t\tfor (var i in o) {\n\t\t\t\tif (o.hasOwnProperty(i)) {\n\t\t\t\t\tcallback.call(o, i, o[i], type || i);\n\n\t\t\t\t\tif (_.util.type(o[i]) === 'Object' && !visited[_.util.objId(o[i])]) {\n\t\t\t\t\t\tvisited[_.util.objId(o[i])] = true;\n\t\t\t\t\t\t_.languages.DFS(o[i], callback, null, visited);\n\t\t\t\t\t}\n\t\t\t\t\telse if (_.util.type(o[i]) === 'Array' && !visited[_.util.objId(o[i])]) {\n\t\t\t\t\t\tvisited[_.util.objId(o[i])] = true;\n\t\t\t\t\t\t_.languages.DFS(o[i], callback, i, visited);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tplugins: {},\n\n\thighlightAll: function(async, callback) {\n\t\tvar env = {\n\t\t\tcallback: callback,\n\t\t\tselector: 'code[class*=\"language-\"], [class*=\"language-\"] code, code[class*=\"lang-\"], [class*=\"lang-\"] code'\n\t\t};\n\n\t\t_.hooks.run(\"before-highlightall\", env);\n\n\t\tvar elements = env.elements || document.querySelectorAll(env.selector);\n\n\t\tfor (var i=0, element; element = elements[i++];) {\n\t\t\t_.highlightElement(element, async === true, env.callback);\n\t\t}\n\t},\n\n\thighlightElement: function(element, async, callback) {\n\t\t// Find language\n\t\tvar language, grammar, parent = element;\n\n\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\tif (parent) {\n\t\t\tlanguage = (parent.className.match(lang) || [,''])[1].toLowerCase();\n\t\t\tgrammar = _.languages[language];\n\t\t}\n\n\t\t// Set language on the element, if not present\n\t\telement.className = element.className.replace(lang, '').replace(/\\s+/g, ' ') + ' language-' + language;\n\n\t\t// Set language on the parent, for styling\n\t\tparent = element.parentNode;\n\n\t\tif (/pre/i.test(parent.nodeName)) {\n\t\t\tparent.className = parent.className.replace(lang, '').replace(/\\s+/g, ' ') + ' language-' + language;\n\t\t}\n\n\t\tvar code = element.textContent;\n\n\t\tvar env = {\n\t\t\telement: element,\n\t\t\tlanguage: language,\n\t\t\tgrammar: grammar,\n\t\t\tcode: code\n\t\t};\n\n\t\t_.hooks.run('before-sanity-check', env);\n\n\t\tif (!env.code || !env.grammar) {\n\t\t\tif (env.code) {\n\t\t\t\tenv.element.textContent = env.code;\n\t\t\t}\n\t\t\t_.hooks.run('complete', env);\n\t\t\treturn;\n\t\t}\n\n\t\t_.hooks.run('before-highlight', env);\n\n\t\tif (async && _self.Worker) {\n\t\t\tvar worker = new Worker(_.filename);\n\n\t\t\tworker.onmessage = function(evt) {\n\t\t\t\tenv.highlightedCode = evt.data;\n\n\t\t\t\t_.hooks.run('before-insert', env);\n\n\t\t\t\tenv.element.innerHTML = env.highlightedCode;\n\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t\t_.hooks.run('after-highlight', env);\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t};\n\n\t\t\tworker.postMessage(JSON.stringify({\n\t\t\t\tlanguage: env.language,\n\t\t\t\tcode: env.code,\n\t\t\t\timmediateClose: true\n\t\t\t}));\n\t\t}\n\t\telse {\n\t\t\tenv.highlightedCode = _.highlight(env.code, env.grammar, env.language);\n\n\t\t\t_.hooks.run('before-insert', env);\n\n\t\t\tenv.element.innerHTML = env.highlightedCode;\n\n\t\t\tcallback && callback.call(element);\n\n\t\t\t_.hooks.run('after-highlight', env);\n\t\t\t_.hooks.run('complete', env);\n\t\t}\n\t},\n\n\thighlight: function (text, grammar, language) {\n\t\tvar tokens = _.tokenize(text, grammar);\n\t\treturn Token.stringify(_.util.encode(tokens), language);\n\t},\n\n\ttokenize: function(text, grammar, language) {\n\t\tvar Token = _.Token;\n\n\t\tvar strarr = [text];\n\n\t\tvar rest = grammar.rest;\n\n\t\tif (rest) {\n\t\t\tfor (var token in rest) {\n\t\t\t\tgrammar[token] = rest[token];\n\t\t\t}\n\n\t\t\tdelete grammar.rest;\n\t\t}\n\n\t\ttokenloop: for (var token in grammar) {\n\t\t\tif(!grammar.hasOwnProperty(token) || !grammar[token]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar patterns = grammar[token];\n\t\t\tpatterns = (_.util.type(patterns) === \"Array\") ? patterns : [patterns];\n\n\t\t\tfor (var j = 0; j < patterns.length; ++j) {\n\t\t\t\tvar pattern = patterns[j],\n\t\t\t\t\tinside = pattern.inside,\n\t\t\t\t\tlookbehind = !!pattern.lookbehind,\n\t\t\t\t\tgreedy = !!pattern.greedy,\n\t\t\t\t\tlookbehindLength = 0,\n\t\t\t\t\talias = pattern.alias;\n\n\t\t\t\tif (greedy && !pattern.pattern.global) {\n\t\t\t\t\t// Without the global flag, lastIndex won't work\n\t\t\t\t\tvar flags = pattern.pattern.toString().match(/[imuy]*$/)[0];\n\t\t\t\t\tpattern.pattern = RegExp(pattern.pattern.source, flags + \"g\");\n\t\t\t\t}\n\n\t\t\t\tpattern = pattern.pattern || pattern;\n\n\t\t\t\t// Don’t cache length as it changes during the loop\n\t\t\t\tfor (var i=0, pos = 0; i<strarr.length; pos += strarr[i].length, ++i) {\n\n\t\t\t\t\tvar str = strarr[i];\n\n\t\t\t\t\tif (strarr.length > text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && p < to; ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '&quot;') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '</' + env.tag + '>';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': /<!--[\\w\\W]*?-->/,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': /<!DOCTYPE[\\w\\W]+?>/i,\n\t'cdata': /<!\\[CDATA\\[[\\w\\W]*?]]>/i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&amp;/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /(<style[\\w\\W]*?>)[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*\\*?|\\/|~|\\^|%|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /(<script[\\w\\W]*?>)[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","import Prism from \"prismjs\";\n\nexport default function(dom, data) {\n let codeElements = [].slice.call(dom.querySelectorAll(\"dt-code\"));\n codeElements.forEach(el => {\n let content = el.textContent;\n el.innerHTML = \"\";\n let language = el.getAttribute(\"language\");\n let c = dom.createElement(\"code\");\n if (el.getAttribute(\"block\") === \"\") {\n // Let's normalize the tab indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n let p = dom.createElement(\"pre\");\n p.appendChild(c);\n el.appendChild(p);\n } else {\n el.appendChild(c);\n }\n let highlighted = content;\n if (Prism.languages[language]) {\n c.setAttribute(\"class\", \"language-\" + language);\n highlighted = Prism.highlight(content, Prism.languages[language]);\n }\n c.innerHTML = highlighted;\n });\n}\n","export default function(dom, data) {\n\n var textNodes = dom.createTreeWalker(\n dom.body,\n dom.defaultView.NodeFilter.SHOW_TEXT\n );\n while (textNodes.nextNode()) {\n var n = textNodes.currentNode,\n text = n.nodeValue;\n if (text && acceptNode(n)) {\n text = quotes(text);\n text = punctuation(text);\n text = ligatures(text);\n n.nodeValue = text;\n }\n }\n}\n\nfunction acceptNode(node) {\n var parent = node.parentElement;\n var isMath = (parent && parent.getAttribute && parent.getAttribute(\"class\")) ? parent.getAttribute(\"class\").includes(\"katex\") || parent.getAttribute(\"class\").includes(\"MathJax\") : false;\n return parent &&\n parent.nodeName !== \"SCRIPT\" &&\n parent.nodeName !== \"STYLE\" &&\n parent.nodeName !== \"CODE\" &&\n parent.nodeName !== \"PRE\" &&\n parent.nodeName !== \"SPAN\" &&\n parent.nodeName !== \"DT-HEADER\" &&\n parent.nodeName !== \"DT-BYLINE\" &&\n parent.nodeName !== \"DT-MATH\" &&\n parent.nodeName !== \"DT-CODE\" &&\n parent.nodeName !== \"DT-BIBLIOGRAPHY\" &&\n parent.nodeName !== \"DT-FOOTER\" &&\n parent.nodeType !== 8 && //comment nodes\n !isMath;\n}\n\n\n/*!\n * typeset - Typesetting for the web\n * @version v0.1.6\n * @link https://github.com/davidmerfield/Typeset.js\n * @author David Merfield\n */\n // which has a CC0 license\n // http://creativecommons.org/publicdomain/zero/1.0/\n\n\nfunction punctuation(text){\n\n // Dashes\n text = text.replace(/--/g, '\\u2014');\n text = text.replace(/ \\u2014 /g,\"\\u2009\\u2014\\u2009\"); //this has thin spaces\n\n // Elipses\n text = text.replace(/\\.\\.\\./g,'…');\n\n // Nbsp for punc with spaces\n var NBSP = \"\\u00a0\";\n var NBSP_PUNCTUATION_START = /([«¿¡]) /g;\n var NBSP_PUNCTUATION_END = / ([\\!\\?:;\\.,‽»])/g;\n\n text = text.replace(NBSP_PUNCTUATION_START, '$1' + NBSP);\n text = text.replace(NBSP_PUNCTUATION_END, NBSP + '$1');\n\n return text;\n}\n\nfunction quotes(text) {\n\n text = text\n .replace(/(\\W|^)\"([^\\s\\!\\?:;\\.,‽»])/g, '$1\\u201c$2') // beginning \"\n .replace(/(\\u201c[^\"]*)\"([^\"]*$|[^\\u201c\"]*\\u201c)/g, '$1\\u201d$2') // ending \"\n .replace(/([^0-9])\"/g,'$1\\u201d') // remaining \" at end of word\n .replace(/(\\W|^)'(\\S)/g, '$1\\u2018$2') // beginning '\n .replace(/([a-z])'([a-z])/ig, '$1\\u2019$2') // conjunction's possession\n .replace(/((\\u2018[^']*)|[a-z])'([^0-9]|$)/ig, '$1\\u2019$3') // ending '\n .replace(/(\\u2018)([0-9]{2}[^\\u2019]*)(\\u2018([^0-9]|$)|$|\\u2019[a-z])/ig, '\\u2019$2$3') // abbrev. years like '93\n .replace(/(\\B|^)\\u2018(?=([^\\u2019]*\\u2019\\b)*([^\\u2019\\u2018]*\\W[\\u2019\\u2018]\\b|[^\\u2019\\u2018]*$))/ig, '$1\\u2019') // backwards apostrophe\n .replace(/'''/g, '\\u2034') // triple prime\n .replace(/(\"|'')/g, '\\u2033') // double prime\n .replace(/'/g, '\\u2032');\n\n // Allow escaped quotes\n text = text.replace(/\\\\“/, '\\\"');\n text = text.replace(/\\\\”/, '\\\"');\n text = text.replace(/\\\\’/, '\\'');\n text = text.replace(/\\\\‘/, '\\'');\n\n return text;\n}\n\nfunction ligatures(text){\n\n text = text.replace(/fi/g, 'fi');\n text = text.replace(/fl/g, 'fl');\n\n return text;\n};\n","import code from './hover-box.txt';\n\nexport default function(dom) {\n let s = dom.createElement(\"script\");\n s.textContent = code;\n dom.querySelector(\"body\").appendChild(s);\n}\n","//import xml from \"xml\";\n\nexport default function(data) {\n\n\n var date = data.publishedDate;\n\n var batch_timestamp = Math.floor(Date.now() / 1000);\n var batch_id = data.authors.length ? data.authors[0].lastName.toLowerCase().slice(0,20) : \"Anonymous\";\n batch_id += \"_\" + date.getFullYear();\n batch_id += \"_\" + data.title.split(\" \")[0].toLowerCase().slice(0,20) + \"_\" + batch_timestamp;\n // generate XML\n var crf_data =\n {doi_batch : [\n\n { _attr: {\n version: \"4.3.7\",\n xmlns: \"http://www.crossref.org/schema/4.3.7\",\n \"xmlns:xsi\": \"http://www.w3.org/2001/XMLSchema-instance\",\n \"xsi:schemaLocation\": \"http://www.crossref.org/schema/4.3.7 http://www.crossref.org/schemas/crossref4.3.7.xsd\",\n }},\n\n { head: [\n {doi_batch_id: batch_id},\n {timestamp: batch_timestamp},\n {depositor: [\n {depositor_name: data.journal.publisherName},\n {email_address: data.journal.publisherEmail},\n ]},\n {registrant: data.journal.publisherName},\n ]},\n\n {body: [\n {journal: [\n\n {journal_metadata: [\n {full_title: data.journal.full_title || data.journal.title},\n {abbrev_title: data.journal.abbrev_title || data.journal.title || data.journal.full_title},\n {doi_data: [\n {doi: data.journal.doi},\n {resource: data.journal.url},\n ]},\n ]},\n\n {journal_issue: [\n {publication_date: [\n {month: date.getMonth()+1},\n {year: date.getFullYear()},\n ]},\n {journal_volume: [\n {volume: data.volume},\n ]},\n {issue: data.issue},\n ]},\n\n {journal_article: [\n {titles: [\n {title: data.title},\n ]},\n { contributors:\n data.authors.map((author, ind) => (\n {person_name: [\n { _attr: {\n contributor_role: \"author\",\n sequence: (ind == 0)? \"first\" : \"additional\"\n }},\n {given_name: author.firstName},\n {surname: author.lastName},\n {affiliation: author.affiliation}\n // TODO: ORCID?\n ]}\n ))\n },\n {publication_date: [\n {month: date.getMonth()+1},\n {day: date.getDate()},\n {year: date.getFullYear()}\n ]},\n { publisher_item: [\n {item_number: data.doi}\n ]},\n {doi_data: [\n {doi: data.doi},\n //{timestamp: \"\"},\n {resource: data.url},\n ]},\n {citation_list:\n data.citations.map(key =>\n citation_xml(key, data.bibliography[key]))\n }\n\n ]},\n\n ]},\n ]},\n ]};\n\n return xml(crf_data);\n}\n\nfunction citation_xml(key, ent){\n if (ent == undefined) return {};\n var info = [];\n info.push({_attr: {key: key}});\n if (\"title\" in ent)\n info.push({article_title: ent.title});\n if (\"author\" in ent)\n info.push({author: ent.author.split(\" and \")[0].split(\",\")[0].trim()});\n if (\"journal\" in ent)\n info.push({journal_title: ent.journal});\n if (\"booktitle\" in ent)\n info.push({volume_title: ent.booktitle});\n if (\"volume\" in ent)\n info.push({volume: ent.volume});\n if (\"issue\" in ent)\n info.push({issue: ent.issue});\n if (\"doi\" in ent)\n info.push({doi: ent.doi});\n return {citation: info}\n}\n\nfunction xml(obj) {\n //console.log(typeof(obj), obj)\n if (typeof obj === 'string') return obj;\n if (typeof obj === 'number') return \"\"+obj;\n let keys = Object.keys(obj);\n if (keys.length != 1) console.error(\"can't interpret \", obj, \"as xml\");\n let name = keys[0];\n var full_content = obj[name];\n var attr = {};\n if (Array.isArray(full_content)){\n var content = [];\n for (var i in full_content) {\n var obj = full_content[i];\n var obj_name = Object.keys(obj)[0];\n if (\"_attr\" == obj_name) {\n attr = obj[\"_attr\"];\n } else {\n //console.log(Object.keys(obj)[0])\n content.push(obj);\n }\n }\n } else {\n content = full_content;\n }\n if (content == undefined){\n content = \"undefined\"\n }\n\n let attr_string = \"\";\n for (var k in attr) {\n attr_string += ` ${k}=\\\"${attr[k]}\\\"`\n }\n\n //console.log(typeof content, Array.isArray(content), content instanceof String, content)\n if (Array.isArray(content)){\n content = content.map(xml);\n content = content.join(\"\\n\").split(\"\\n\");\n content = content.map(s => \" \" + s).join(\"\\n\")\n var result = `<${name}${attr_string}>\\n${content}\\n</${name}>`;\n } else {\n content = xml(content);\n var result = `<${name}${attr_string}>${content}</${name}>`;\n }\n return result;\n}\n","import html from \"./components/html\";\nimport styles from \"./components/styles\";\nimport frontMatter from \"./components/front-matter\";\nimport bibliography from \"./components/bibliography\";\nimport expandData from \"./components/expand-data\";\nimport meta from \"./components/meta\";\nimport banner from \"./components/banner\";\nimport header from \"./components/header\";\nimport byline from \"./components/byline\";\nimport appendix from \"./components/appendix\";\nimport footer from \"./components/footer\";\nimport citation from \"./components/citation\";\nimport footnote from \"./components/footnote\";\nimport markdown from \"./components/markdown\";\nimport code from \"./components/code\";\nimport typeset from \"./components/typeset\";\nimport hoverBox from \"./components/hover-box-include\";\nimport generateCrossref from \"./components/generate-crossref\";\n\nfunction renderImmediately(dom) {\n html(dom);\n styles(dom);\n}\n\nfunction renderOnLoad(dom, data) {\n frontMatter(dom, data);\n bibliography(dom, data);\n expandData(dom, data);\n meta(dom, data);\n header(dom, data);\n byline(dom, data);\n appendix(dom, data);\n footer(dom, data);\n markdown(dom, data);\n code(dom, data);\n citation(dom, data);\n footnote(dom, data);\n typeset(dom, data);\n hoverBox(dom, data);\n}\n\n// If we are in a browser, render automatically...\nif(window && window.document) {\n let data = {};\n renderImmediately(window.document);\n window.document.addEventListener(\"DOMContentLoaded\", (event) => {\n renderOnLoad(window.document, data);\n // Add a banner if we're not on localhost.\n if (window.location.hostname !== \"localhost\" && window.location.origin !== \"file://\") {\n banner(window.document, data);\n }\n generateCrossref(data);\n });\n}\n\n// If we are in node...\nfunction render(dom, data) {\n renderImmediately(dom);\n renderOnLoad(dom, data);\n // Remove script tag so it doesn't run again in the client\n let s = dom.querySelector('script[src=\"http://distill.pub/template.js\"]');\n if (s) { s.parentElement.removeChild(s); };\n}\n\nexport {render as render};\nexport {generateCrossref as generateCrossref};\n"],"names":["let","meta","YAMLException","common","require$$0","Mark","this","Type","require$$1","require$$2","type","arguments","Schema","require$$3","require$$4","require$$5","require","_hasOwnProperty","_toString","require$$6","require$$7","_require","DEFAULT_SAFE_SCHEMA","DEFAULT_FULL_SCHEMA","loadAll","load","safeLoadAll","safeLoad","State","dump","safeDump","require$$8","require$$9","ymlParse","interval","day","timeDay","timeYear","timeSunday","timeMonday","locale","const","html","define","global","Prism","code","render"],"mappings":"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"}
\No newline at end of file