lunaisadev-website-old/node_modules/nunjucks/browser/nunjucks-slim.min.js.map

1 line
150 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

{"version":3,"sources":["../webpack/universalModuleDefinition","../webpack/bootstrap 29cc54ac0313ffff0652","../nunjucks/src/lib.js","../nunjucks/src/runtime.js","../nunjucks/src/precompiled-loader.js","../nunjucks/src/loader.js","../nunjucks/src/object.js","../nunjucks/index.js","../nunjucks/src/environment.js","../node_modules/asap/browser-asap.js","../node_modules/asap/browser-raw.js","../node_modules/webpack/buildin/global.js","../node_modules/a-sync-waterfall/index.js","../nunjucks/src/filters.js","../node_modules/webpack/node_modules/events/events.js","../nunjucks/src/tests.js","../nunjucks/src/globals.js","../nunjucks/src/express-app.js","../nunjucks/src/jinja-compat.js"],"names":["root","factory","exports","module","define","amd","self","this","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","ArrayProto","Array","ObjProto","escapeMap","&","\"","'","<",">","escapeRegex","hasOwnProp","obj","k","lookupEscape","ch","TemplateError","message","lineno","colno","err","cause","getStack","Error","setPrototypeOf","writable","value","captureStackTrace","constructor","stackDescriptor","getOwnPropertyDescriptor","stack","firstUpdate","Update","path","msg","isFunction","toString","isArray","isString","isObject","getAttrGetter","attribute","attr","parts","split","item","_item","length","part","toArray","slice","indexOf","arr","searchElement","fromIndex","keys_","push","_prettifyError","withInternals","old","create","escape","val","replace","groupBy","throwOnUndefined","result","iterator","key","undefined","TypeError","without","array","contains","arguments","index","repeat","char_","str","each","func","context","forEach","map","results","asyncIter","iter","cb","next","asyncFor","keys","len","_entries","_values","_assign","extend","obj1","obj2","inOperator","lib","require","arrayFrom","from","supportsIterators","Symbol","Frame","parent","isolateWrites","variables","topLevel","set","resolveUp","frame","resolve","id","lookup","forWrite","pop","isKeywordArgs","numArgs","args","SafeString","String","valueOf","makeMacro","argNames","kwargNames","_len","macroArgs","_key","argCount","kwargs","lastArg","getKeywordArgs","arg","apply","makeKeywordArgs","__keywords","suppressValue","autoescape","ensureDefined","memberLookup","_len2","_key2","contextOrFrameLookup","callWrap","handleError","error","copySafeness","dest","target","markSafe","type","ret","asyncEach","dimen","asyncAll","outputArr","finished","done","output","join","fromIterator","PrecompiledLoader","compiledTemplates","_this","_Loader","precompiled","getSource","src","EmitterObj","_EmitterObj","Loader","_proto","to","dirname","isRelative","filename","EventEmitter","extendClass","cls","props","prop","tmp","res","subclass","_cls","_inheritsLoose","_createClass","Obj","init","_this2","_EventEmitter","e","Environment","Template","loaders","precompile","compiler","parser","lexer","runtime","nodes","installJinjaCompat","configure","templatesPath","opts","TemplateLoader","FileSystemLoader","watch","noCache","WebLoader","useCache","web","async","express","NodeResolveLoader","reset","compile","env","eagerCompile","render","ctx","renderString","precompileString","asap","waterfall","filters","tests","globals","globalRuntime","expressApp","callbackAsap","noopTmplSrc","dev","trimBlocks","lstripBlocks","window","nunjucksPrecompiled","unshift","_initLoaders","asyncFilters","extensions","extensionsList","_ref","filter","addFilter","_ref2","test","addTest","loader","cache","on","fullname","emit","source","invalidateCache","addExtension","extension","__name","removeExtension","getExtension","hasExtension","addGlobal","getGlobal","wrapped","getFilter","getTest","resolveTemplate","parentName","getTemplate","ignoreMissing","syncResult","_this3","that","tmpl","raw","handle","info","newTmpl","app","tasks","callback","forceAsync","Context","blocks","_this4","exported","addBlock","setVariable","getVariables","block","getBlock","getSuper","idx","blk","addExport","getExported","_this5","tmplProps","tmplStr","_compile","compiled","parentFrame","_this6","didError","rootRenderFunc","Function","_getBlocks","rawAsap","freeTasks","pendingErrors","requestErrorThrow","makeRequestCallFromTimer","shift","task","rawTask","RawTask","onerror","global","queue","requestFlush","capacity","flush","currentIndex","scan","newLength","toggle","observer","node","scope","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","timeoutHandle","setTimeout","handleTimer","intervalHandle","setInterval","clearTimeout","clearInterval","document","createTextNode","observe","characterData","data","g","eval","__WEBPACK_AMD_DEFINE_RESULT__","executeSync","splice","executeAsync","fn","setImmediate","process","nextTick","_isArray","maybeArray","wrapIterator","makeCallback","makeIterator","r","normalize","defaultValue","isNaN","num","capitalize","toLowerCase","charAt","toUpperCase","list","getSelectOrReject","expectedTestResult","testName","secondArg","trim","abs","Math","batch","linecount","fillWith","center","width","spaces","pre","post","def","bool","dictsort","caseSensitive","by","si","sort","t1","t2","a","b","dump","JSON","stringify","safe","first","forceescape","groupby","indent","indentfirst","lines","sp","del","v","last","Map","Set","size","lower","nl2br","random","floor","reject","rejectattr","select","selectattr","new_","maxCount","originalStr","RegExp","nextIndex","pos","count","substring","reverse","round","precision","method","factor","pow","ceil","slices","sliceLength","extra","offset","start","end","currSlice","sum","reduce","reversed","caseSens","getAttribute","x","y","string","striptags","input","preserveLinebreaks","trimmedInput","title","words","word","truncate","killwords","orig","lastIndexOf","upper","urlencode","enc","encodeURIComponent","puncRe","emailRe","httpHttpsRe","wwwRe","tldRe","urlize","nofollow","Infinity","noFollowAttr","matches","match","possibleUrl","shortUrl","substr","wordcount","float","parseFloat","intFilter","base","parseInt","int","default","ReflectOwnKeys","R","Reflect","ReflectApply","receiver","ownKeys","getOwnPropertySymbols","getOwnPropertyNames","concat","NumberIsNaN","Number","once","emitter","Promise","eventListener","errorListener","removeListener","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","_getMaxListeners","_addListener","prepend","events","existing","newListener","warned","w","console","warn","_onceWrap","state","fired","wrapFn","bind","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","copy","RangeError","getPrototypeOf","setMaxListeners","getMaxListeners","doError","er","handler","listeners","addListener","prependListener","prependOnceListener","position","originalListener","spliceOne","off","removeAllListeners","rawListeners","eventNames","callable","defined","divisibleby","one","two","escaped","equalto","eq","sameas","even","falsy","ge","greaterthan","gt","le","lessthan","lt","ne","null","number","odd","truthy","iterable","mapping","range","stop","step","cycler","items","current","joiner","sep","NunjucksView","defaultEngine","ext","extname","orig_Compiler_assertType","orig_Parser_parseAggregate","Compiler","Parser","orig_contextOrFrameLookup","orig_memberLookup","assertType","parseAggregate","ARRAY_MEMBERS","append","element","remove","find","insert","elem","OBJECT_MEMBERS","values","has_key","popitem","setdefault","update","iteritems","itervalues","iterkeys"],"mappings":"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","file":"nunjucks-slim.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"nunjucks\"] = factory();\n\telse\n\t\troot[\"nunjucks\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 6);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 29cc54ac0313ffff0652","'use strict';\n\nvar ArrayProto = Array.prototype;\nvar ObjProto = Object.prototype;\n\nvar escapeMap = {\n '&': '&amp;',\n '\"': '&quot;',\n '\\'': '&#39;',\n '<': '&lt;',\n '>': '&gt;'\n};\n\nvar escapeRegex = /[&\"'<>]/g;\n\nvar exports = module.exports = {};\n\nfunction hasOwnProp(obj, k) {\n return ObjProto.hasOwnProperty.call(obj, k);\n}\n\nexports.hasOwnProp = hasOwnProp;\n\nfunction lookupEscape(ch) {\n return escapeMap[ch];\n}\n\nfunction _prettifyError(path, withInternals, err) {\n if (!err.Update) {\n // not one of ours, cast it\n err = new exports.TemplateError(err);\n }\n err.Update(path);\n\n // Unless they marked the dev flag, show them a trace from here\n if (!withInternals) {\n const old = err;\n err = new Error(old.message);\n err.name = old.name;\n }\n\n return err;\n}\n\nexports._prettifyError = _prettifyError;\n\nfunction TemplateError(message, lineno, colno) {\n var err;\n var cause;\n\n if (message instanceof Error) {\n cause = message;\n message = `${cause.name}: ${cause.message}`;\n }\n\n if (Object.setPrototypeOf) {\n err = new Error(message);\n Object.setPrototypeOf(err, TemplateError.prototype);\n } else {\n err = this;\n Object.defineProperty(err, 'message', {\n enumerable: false,\n writable: true,\n value: message,\n });\n }\n\n Object.defineProperty(err, 'name', {\n value: 'Template render error',\n });\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(err, this.constructor);\n }\n\n let getStack;\n\n if (cause) {\n const stackDescriptor = Object.getOwnPropertyDescriptor(cause, 'stack');\n getStack = stackDescriptor && (stackDescriptor.get || (() => stackDescriptor.value));\n if (!getStack) {\n getStack = () => cause.stack;\n }\n } else {\n const stack = (new Error(message)).stack;\n getStack = (() => stack);\n }\n\n Object.defineProperty(err, 'stack', {\n get: () => getStack.call(err),\n });\n\n Object.defineProperty(err, 'cause', {\n value: cause\n });\n\n err.lineno = lineno;\n err.colno = colno;\n err.firstUpdate = true;\n\n err.Update = function Update(path) {\n let msg = '(' + (path || 'unknown path') + ')';\n\n // only show lineno + colno next to path of template\n // where error occurred\n if (this.firstUpdate) {\n if (this.lineno && this.colno) {\n msg += ` [Line ${this.lineno}, Column ${this.colno}]`;\n } else if (this.lineno) {\n msg += ` [Line ${this.lineno}]`;\n }\n }\n\n msg += '\\n ';\n if (this.firstUpdate) {\n msg += ' ';\n }\n\n this.message = msg + (this.message || '');\n this.firstUpdate = false;\n return this;\n };\n\n return err;\n}\n\n\nif (Object.setPrototypeOf) {\n Object.setPrototypeOf(TemplateError.prototype, Error.prototype);\n} else {\n TemplateError.prototype = Object.create(Error.prototype, {\n constructor: {\n value: TemplateError,\n },\n });\n}\n\nexports.TemplateError = TemplateError;\n\nfunction escape(val) {\n return val.replace(escapeRegex, lookupEscape);\n}\n\nexports.escape = escape;\n\nfunction isFunction(obj) {\n return ObjProto.toString.call(obj) === '[object Function]';\n}\n\nexports.isFunction = isFunction;\n\nfunction isArray(obj) {\n return ObjProto.toString.call(obj) === '[object Array]';\n}\n\nexports.isArray = isArray;\n\nfunction isString(obj) {\n return ObjProto.toString.call(obj) === '[object String]';\n}\n\nexports.isString = isString;\n\nfunction isObject(obj) {\n return ObjProto.toString.call(obj) === '[object Object]';\n}\n\nexports.isObject = isObject;\n\n/**\n * @param {string|number} attr\n * @returns {(string|number)[]}\n * @private\n */\nfunction _prepareAttributeParts(attr) {\n if (!attr) {\n return [];\n }\n\n if (typeof attr === 'string') {\n return attr.split('.');\n }\n\n return [attr];\n}\n\n/**\n * @param {string} attribute Attribute value. Dots allowed.\n * @returns {function(Object): *}\n */\nfunction getAttrGetter(attribute) {\n const parts = _prepareAttributeParts(attribute);\n\n return function attrGetter(item) {\n let _item = item;\n\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n\n // If item is not an object, and we still got parts to handle, it means\n // that something goes wrong. Just roll out to undefined in that case.\n if (hasOwnProp(_item, part)) {\n _item = _item[part];\n } else {\n return undefined;\n }\n }\n\n return _item;\n };\n}\n\nexports.getAttrGetter = getAttrGetter;\n\nfunction groupBy(obj, val, throwOnUndefined) {\n const result = {};\n const iterator = isFunction(val) ? val : getAttrGetter(val);\n for (let i = 0; i < obj.length; i++) {\n const value = obj[i];\n const key = iterator(value, i);\n if (key === undefined && throwOnUndefined === true) {\n throw new TypeError(`groupby: attribute \"${val}\" resolved to undefined`);\n }\n (result[key] || (result[key] = [])).push(value);\n }\n return result;\n}\n\nexports.groupBy = groupBy;\n\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj);\n}\n\nexports.toArray = toArray;\n\nfunction without(array) {\n const result = [];\n if (!array) {\n return result;\n }\n const length = array.length;\n const contains = toArray(arguments).slice(1);\n let index = -1;\n\n while (++index < length) {\n if (indexOf(contains, array[index]) === -1) {\n result.push(array[index]);\n }\n }\n return result;\n}\n\nexports.without = without;\n\nfunction repeat(char_, n) {\n var str = '';\n for (let i = 0; i < n; i++) {\n str += char_;\n }\n return str;\n}\n\nexports.repeat = repeat;\n\nfunction each(obj, func, context) {\n if (obj == null) {\n return;\n }\n\n if (ArrayProto.forEach && obj.forEach === ArrayProto.forEach) {\n obj.forEach(func, context);\n } else if (obj.length === +obj.length) {\n for (let i = 0, l = obj.length; i < l; i++) {\n func.call(context, obj[i], i, obj);\n }\n }\n}\n\nexports.each = each;\n\nfunction map(obj, func) {\n var results = [];\n if (obj == null) {\n return results;\n }\n\n if (ArrayProto.map && obj.map === ArrayProto.map) {\n return obj.map(func);\n }\n\n for (let i = 0; i < obj.length; i++) {\n results[results.length] = func(obj[i], i);\n }\n\n if (obj.length === +obj.length) {\n results.length = obj.length;\n }\n\n return results;\n}\n\nexports.map = map;\n\nfunction asyncIter(arr, iter, cb) {\n let i = -1;\n\n function next() {\n i++;\n\n if (i < arr.length) {\n iter(arr[i], i, next, cb);\n } else {\n cb();\n }\n }\n\n next();\n}\n\nexports.asyncIter = asyncIter;\n\nfunction asyncFor(obj, iter, cb) {\n const keys = keys_(obj || {});\n const len = keys.length;\n let i = -1;\n\n function next() {\n i++;\n const k = keys[i];\n\n if (i < len) {\n iter(k, obj[k], i, len, next);\n } else {\n cb();\n }\n }\n\n next();\n}\n\nexports.asyncFor = asyncFor;\n\nfunction indexOf(arr, searchElement, fromIndex) {\n return Array.prototype.indexOf.call(arr || [], searchElement, fromIndex);\n}\n\nexports.indexOf = indexOf;\n\nfunction keys_(obj) {\n /* eslint-disable no-restricted-syntax */\n const arr = [];\n for (let k in obj) {\n if (hasOwnProp(obj, k)) {\n arr.push(k);\n }\n }\n return arr;\n}\n\nexports.keys = keys_;\n\nfunction _entries(obj) {\n return keys_(obj).map((k) => [k, obj[k]]);\n}\n\nexports._entries = _entries;\n\nfunction _values(obj) {\n return keys_(obj).map((k) => obj[k]);\n}\n\nexports._values = _values;\n\nfunction extend(obj1, obj2) {\n obj1 = obj1 || {};\n keys_(obj2).forEach(k => {\n obj1[k] = obj2[k];\n });\n return obj1;\n}\n\nexports._assign = exports.extend = extend;\n\nfunction inOperator(key, val) {\n if (isArray(val) || isString(val)) {\n return val.indexOf(key) !== -1;\n } else if (isObject(val)) {\n return key in val;\n }\n throw new Error('Cannot use \"in\" operator to search for \"'\n + key + '\" in unexpected types.');\n}\n\nexports.inOperator = inOperator;\n\n\n\n// WEBPACK FOOTER //\n// ./nunjucks/src/lib.js","'use strict';\n\nvar lib = require('./lib');\nvar arrayFrom = Array.from;\nvar supportsIterators = (\n typeof Symbol === 'function' && Symbol.iterator && typeof arrayFrom === 'function'\n);\n\n\n// Frames keep track of scoping both at compile-time and run-time so\n// we know how to access variables. Block tags can introduce special\n// variables, for example.\nclass Frame {\n constructor(parent, isolateWrites) {\n this.variables = Object.create(null);\n this.parent = parent;\n this.topLevel = false;\n // if this is true, writes (set) should never propagate upwards past\n // this frame to its parent (though reads may).\n this.isolateWrites = isolateWrites;\n }\n\n set(name, val, resolveUp) {\n // Allow variables with dots by automatically creating the\n // nested structure\n var parts = name.split('.');\n var obj = this.variables;\n var frame = this;\n\n if (resolveUp) {\n if ((frame = this.resolve(parts[0], true))) {\n frame.set(name, val);\n return;\n }\n }\n\n for (let i = 0; i < parts.length - 1; i++) {\n const id = parts[i];\n\n if (!obj[id]) {\n obj[id] = {};\n }\n obj = obj[id];\n }\n\n obj[parts[parts.length - 1]] = val;\n }\n\n get(name) {\n var val = this.variables[name];\n if (val !== undefined) {\n return val;\n }\n return null;\n }\n\n lookup(name) {\n var p = this.parent;\n var val = this.variables[name];\n if (val !== undefined) {\n return val;\n }\n return p && p.lookup(name);\n }\n\n resolve(name, forWrite) {\n var p = (forWrite && this.isolateWrites) ? undefined : this.parent;\n var val = this.variables[name];\n if (val !== undefined) {\n return this;\n }\n return p && p.resolve(name);\n }\n\n push(isolateWrites) {\n return new Frame(this, isolateWrites);\n }\n\n pop() {\n return this.parent;\n }\n}\n\nfunction makeMacro(argNames, kwargNames, func) {\n return function macro(...macroArgs) {\n var argCount = numArgs(macroArgs);\n var args;\n var kwargs = getKeywordArgs(macroArgs);\n\n if (argCount > argNames.length) {\n args = macroArgs.slice(0, argNames.length);\n\n // Positional arguments that should be passed in as\n // keyword arguments (essentially default values)\n macroArgs.slice(args.length, argCount).forEach((val, i) => {\n if (i < kwargNames.length) {\n kwargs[kwargNames[i]] = val;\n }\n });\n args.push(kwargs);\n } else if (argCount < argNames.length) {\n args = macroArgs.slice(0, argCount);\n\n for (let i = argCount; i < argNames.length; i++) {\n const arg = argNames[i];\n\n // Keyword arguments that should be passed as\n // positional arguments, i.e. the caller explicitly\n // used the name of a positional arg\n args.push(kwargs[arg]);\n delete kwargs[arg];\n }\n args.push(kwargs);\n } else {\n args = macroArgs;\n }\n\n return func.apply(this, args);\n };\n}\n\nfunction makeKeywordArgs(obj) {\n obj.__keywords = true;\n return obj;\n}\n\nfunction isKeywordArgs(obj) {\n return obj && Object.prototype.hasOwnProperty.call(obj, '__keywords');\n}\n\nfunction getKeywordArgs(args) {\n var len = args.length;\n if (len) {\n const lastArg = args[len - 1];\n if (isKeywordArgs(lastArg)) {\n return lastArg;\n }\n }\n return {};\n}\n\nfunction numArgs(args) {\n var len = args.length;\n if (len === 0) {\n return 0;\n }\n\n const lastArg = args[len - 1];\n if (isKeywordArgs(lastArg)) {\n return len - 1;\n } else {\n return len;\n }\n}\n\n// A SafeString object indicates that the string should not be\n// autoescaped. This happens magically because autoescaping only\n// occurs on primitive string objects.\nfunction SafeString(val) {\n if (typeof val !== 'string') {\n return val;\n }\n\n this.val = val;\n this.length = val.length;\n}\n\nSafeString.prototype = Object.create(String.prototype, {\n length: {\n writable: true,\n configurable: true,\n value: 0\n }\n});\nSafeString.prototype.valueOf = function valueOf() {\n return this.val;\n};\nSafeString.prototype.toString = function toString() {\n return this.val;\n};\n\nfunction copySafeness(dest, target) {\n if (dest instanceof SafeString) {\n return new SafeString(target);\n }\n return target.toString();\n}\n\nfunction markSafe(val) {\n var type = typeof val;\n\n if (type === 'string') {\n return new SafeString(val);\n } else if (type !== 'function') {\n return val;\n } else {\n return function wrapSafe(args) {\n var ret = val.apply(this, arguments);\n\n if (typeof ret === 'string') {\n return new SafeString(ret);\n }\n\n return ret;\n };\n }\n}\n\nfunction suppressValue(val, autoescape) {\n val = (val !== undefined && val !== null) ? val : '';\n\n if (autoescape && !(val instanceof SafeString)) {\n val = lib.escape(val.toString());\n }\n\n return val;\n}\n\nfunction ensureDefined(val, lineno, colno) {\n if (val === null || val === undefined) {\n throw new lib.TemplateError(\n 'attempted to output null or undefined value',\n lineno + 1,\n colno + 1\n );\n }\n return val;\n}\n\nfunction memberLookup(obj, val) {\n if (obj === undefined || obj === null) {\n return undefined;\n }\n\n if (typeof obj[val] === 'function') {\n return (...args) => obj[val].apply(obj, args);\n }\n\n return obj[val];\n}\n\nfunction callWrap(obj, name, context, args) {\n if (!obj) {\n throw new Error('Unable to call `' + name + '`, which is undefined or falsey');\n } else if (typeof obj !== 'function') {\n throw new Error('Unable to call `' + name + '`, which is not a function');\n }\n\n return obj.apply(context, args);\n}\n\nfunction contextOrFrameLookup(context, frame, name) {\n var val = frame.lookup(name);\n return (val !== undefined) ?\n val :\n context.lookup(name);\n}\n\nfunction handleError(error, lineno, colno) {\n if (error.lineno) {\n return error;\n } else {\n return new lib.TemplateError(error, lineno, colno);\n }\n}\n\nfunction asyncEach(arr, dimen, iter, cb) {\n if (lib.isArray(arr)) {\n const len = arr.length;\n\n lib.asyncIter(arr, function iterCallback(item, i, next) {\n switch (dimen) {\n case 1:\n iter(item, i, len, next);\n break;\n case 2:\n iter(item[0], item[1], i, len, next);\n break;\n case 3:\n iter(item[0], item[1], item[2], i, len, next);\n break;\n default:\n item.push(i, len, next);\n iter.apply(this, item);\n }\n }, cb);\n } else {\n lib.asyncFor(arr, function iterCallback(key, val, i, len, next) {\n iter(key, val, i, len, next);\n }, cb);\n }\n}\n\nfunction asyncAll(arr, dimen, func, cb) {\n var finished = 0;\n var len;\n var outputArr;\n\n function done(i, output) {\n finished++;\n outputArr[i] = output;\n\n if (finished === len) {\n cb(null, outputArr.join(''));\n }\n }\n\n if (lib.isArray(arr)) {\n len = arr.length;\n outputArr = new Array(len);\n\n if (len === 0) {\n cb(null, '');\n } else {\n for (let i = 0; i < arr.length; i++) {\n const item = arr[i];\n\n switch (dimen) {\n case 1:\n func(item, i, len, done);\n break;\n case 2:\n func(item[0], item[1], i, len, done);\n break;\n case 3:\n func(item[0], item[1], item[2], i, len, done);\n break;\n default:\n item.push(i, len, done);\n func.apply(this, item);\n }\n }\n }\n } else {\n const keys = lib.keys(arr || {});\n len = keys.length;\n outputArr = new Array(len);\n\n if (len === 0) {\n cb(null, '');\n } else {\n for (let i = 0; i < keys.length; i++) {\n const k = keys[i];\n func(k, arr[k], i, len, done);\n }\n }\n }\n}\n\nfunction fromIterator(arr) {\n if (typeof arr !== 'object' || arr === null || lib.isArray(arr)) {\n return arr;\n } else if (supportsIterators && Symbol.iterator in arr) {\n return arrayFrom(arr);\n } else {\n return arr;\n }\n}\n\nmodule.exports = {\n Frame: Frame,\n makeMacro: makeMacro,\n makeKeywordArgs: makeKeywordArgs,\n numArgs: numArgs,\n suppressValue: suppressValue,\n ensureDefined: ensureDefined,\n memberLookup: memberLookup,\n contextOrFrameLookup: contextOrFrameLookup,\n callWrap: callWrap,\n handleError: handleError,\n isArray: lib.isArray,\n keys: lib.keys,\n SafeString: SafeString,\n copySafeness: copySafeness,\n markSafe: markSafe,\n asyncEach: asyncEach,\n asyncAll: asyncAll,\n inOperator: lib.inOperator,\n fromIterator: fromIterator\n};\n\n\n\n// WEBPACK FOOTER //\n// ./nunjucks/src/runtime.js","'use strict';\n\nconst Loader = require('./loader');\n\nclass PrecompiledLoader extends Loader {\n constructor(compiledTemplates) {\n super();\n this.precompiled = compiledTemplates || {};\n }\n\n getSource(name) {\n if (this.precompiled[name]) {\n return {\n src: {\n type: 'code',\n obj: this.precompiled[name]\n },\n path: name\n };\n }\n return null;\n }\n}\n\nmodule.exports = {\n PrecompiledLoader: PrecompiledLoader,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./nunjucks/src/precompiled-loader.js","'use strict';\n\nconst path = require('path');\nconst {EmitterObj} = require('./object');\n\nmodule.exports = class Loader extends EmitterObj {\n resolve(from, to) {\n return path.resolve(path.dirname(from), to);\n }\n\n isRelative(filename) {\n return (filename.indexOf('./') === 0 || filename.indexOf('../') === 0);\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./nunjucks/src/loader.js","'use strict';\n\n// A simple class system, more documentation to come\nconst EventEmitter = require('events');\nconst lib = require('./lib');\n\nfunction parentWrap(parent, prop) {\n if (typeof parent !== 'function' || typeof prop !== 'function') {\n return prop;\n }\n return function wrap() {\n // Save the current parent method\n const tmp = this.parent;\n\n // Set parent to the previous method, call, and restore\n this.parent = parent;\n const res = prop.apply(this, arguments);\n this.parent = tmp;\n\n return res;\n };\n}\n\nfunction extendClass(cls, name, props) {\n props = props || {};\n\n lib.keys(props).forEach(k => {\n props[k] = parentWrap(cls.prototype[k], props[k]);\n });\n\n class subclass extends cls {\n get typename() {\n return name;\n }\n }\n\n lib._assign(subclass.prototype, props);\n\n return subclass;\n}\n\nclass Obj {\n constructor(...args) {\n // Unfortunately necessary for backwards compatibility\n this.init(...args);\n }\n\n init() {}\n\n get typename() {\n return this.constructor.name;\n }\n\n static extend(name, props) {\n if (typeof name === 'object') {\n props = name;\n name = 'anonymous';\n }\n return extendClass(this, name, props);\n }\n}\n\nclass EmitterObj extends EventEmitter {\n constructor(...args) {\n super();\n // Unfortunately necessary for backwards compatibility\n this.init(...args);\n }\n\n init() {}\n\n get typename() {\n return this.constructor.name;\n }\n\n static extend(name, props) {\n if (typeof name === 'object') {\n props = name;\n name = 'anonymous';\n }\n return extendClass(this, name, props);\n }\n}\n\nmodule.exports = { Obj, EmitterObj };\n\n\n\n// WEBPACK FOOTER //\n// ./nunjucks/src/object.js","'use strict';\n\nconst lib = require('./src/lib');\nconst {Environment, Template} = require('./src/environment');\nconst Loader = require('./src/loader');\nconst loaders = require('./src/loaders');\nconst precompile = require('./src/precompile');\nconst compiler = require('./src/compiler');\nconst parser = require('./src/parser');\nconst lexer = require('./src/lexer');\nconst runtime = require('./src/runtime');\nconst nodes = require('./src/nodes');\nconst installJinjaCompat = require('./src/jinja-compat');\n\n// A single instance of an environment, since this is so commonly used\nlet e;\n\nfunction configure(templatesPath, opts) {\n opts = opts || {};\n if (lib.isObject(templatesPath)) {\n opts = templatesPath;\n templatesPath = null;\n }\n\n let TemplateLoader;\n if (loaders.FileSystemLoader) {\n TemplateLoader = new loaders.FileSystemLoader(templatesPath, {\n watch: opts.watch,\n noCache: opts.noCache\n });\n } else if (loaders.WebLoader) {\n TemplateLoader = new loaders.WebLoader(templatesPath, {\n useCache: opts.web && opts.web.useCache,\n async: opts.web && opts.web.async\n });\n }\n\n e = new Environment(TemplateLoader, opts);\n\n if (opts && opts.express) {\n e.express(opts.express);\n }\n\n return e;\n}\n\nmodule.exports = {\n Environment: Environment,\n Template: Template,\n Loader: Loader,\n FileSystemLoader: loaders.FileSystemLoader,\n NodeResolveLoader: loaders.NodeResolveLoader,\n PrecompiledLoader: loaders.PrecompiledLoader,\n WebLoader: loaders.WebLoader,\n compiler: compiler,\n parser: parser,\n lexer: lexer,\n runtime: runtime,\n lib: lib,\n nodes: nodes,\n installJinjaCompat: installJinjaCompat,\n configure: configure,\n reset() {\n e = undefined;\n },\n compile(src, env, path, eagerCompile) {\n if (!e) {\n configure();\n }\n return new Template(src, env, path, eagerCompile);\n },\n render(name, ctx, cb) {\n if (!e) {\n configure();\n }\n\n return e.render(name, ctx, cb);\n },\n renderString(src, ctx, cb) {\n if (!e) {\n configure();\n }\n\n return e.renderString(src, ctx, cb);\n },\n precompile: (precompile) ? precompile.precompile : undefined,\n precompileString: (precompile) ? precompile.precompileString : undefined,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./nunjucks/index.js","'use strict';\n\nconst asap = require('asap');\nconst waterfall = require('a-sync-waterfall');\nconst lib = require('./lib');\nconst compiler = require('./compiler');\nconst filters = require('./filters');\nconst {FileSystemLoader, WebLoader, PrecompiledLoader} = require('./loaders');\nconst tests = require('./tests');\nconst globals = require('./globals');\nconst {Obj, EmitterObj} = require('./object');\nconst globalRuntime = require('./runtime');\nconst {handleError, Frame} = globalRuntime;\nconst expressApp = require('./express-app');\n\n// If the user is using the async API, *always* call it\n// asynchronously even if the template was synchronous.\nfunction callbackAsap(cb, err, res) {\n asap(() => {\n cb(err, res);\n });\n}\n\n/**\n * A no-op template, for use with {% include ignore missing %}\n */\nconst noopTmplSrc = {\n type: 'code',\n obj: {\n root(env, context, frame, runtime, cb) {\n try {\n cb(null, '');\n } catch (e) {\n cb(handleError(e, null, null));\n }\n }\n }\n};\n\nclass Environment extends EmitterObj {\n init(loaders, opts) {\n // The dev flag determines the trace that'll be shown on errors.\n // If set to true, returns the full trace from the error point,\n // otherwise will return trace starting from Template.render\n // (the full trace from within nunjucks may confuse developers using\n // the library)\n // defaults to false\n opts = this.opts = opts || {};\n this.opts.dev = !!opts.dev;\n\n // The autoescape flag sets global autoescaping. If true,\n // every string variable will be escaped by default.\n // If false, strings can be manually escaped using the `escape` filter.\n // defaults to true\n this.opts.autoescape = opts.autoescape != null ? opts.autoescape : true;\n\n // If true, this will make the system throw errors if trying\n // to output a null or undefined value\n this.opts.throwOnUndefined = !!opts.throwOnUndefined;\n this.opts.trimBlocks = !!opts.trimBlocks;\n this.opts.lstripBlocks = !!opts.lstripBlocks;\n\n this.loaders = [];\n\n if (!loaders) {\n // The filesystem loader is only available server-side\n if (FileSystemLoader) {\n this.loaders = [new FileSystemLoader('views')];\n } else if (WebLoader) {\n this.loaders = [new WebLoader('/views')];\n }\n } else {\n this.loaders = lib.isArray(loaders) ? loaders : [loaders];\n }\n\n // It's easy to use precompiled templates: just include them\n // before you configure nunjucks and this will automatically\n // pick it up and use it\n if (typeof window !== 'undefined' && window.nunjucksPrecompiled) {\n this.loaders.unshift(\n new PrecompiledLoader(window.nunjucksPrecompiled)\n );\n }\n\n this._initLoaders();\n\n this.globals = globals();\n this.filters = {};\n this.tests = {};\n this.asyncFilters = [];\n this.extensions = {};\n this.extensionsList = [];\n\n lib._entries(filters).forEach(([name, filter]) => this.addFilter(name, filter));\n lib._entries(tests).forEach(([name, test]) => this.addTest(name, test));\n }\n\n _initLoaders() {\n this.loaders.forEach((loader) => {\n // Caching and cache busting\n loader.cache = {};\n if (typeof loader.on === 'function') {\n loader.on('update', (name, fullname) => {\n loader.cache[name] = null;\n this.emit('update', name, fullname, loader);\n });\n loader.on('load', (name, source) => {\n this.emit('load', name, source, loader);\n });\n }\n });\n }\n\n invalidateCache() {\n this.loaders.forEach((loader) => {\n loader.cache = {};\n });\n }\n\n addExtension(name, extension) {\n extension.__name = name;\n this.extensions[name] = extension;\n this.extensionsList.push(extension);\n return this;\n }\n\n removeExtension(name) {\n var extension = this.getExtension(name);\n if (!extension) {\n return;\n }\n\n this.extensionsList = lib.without(this.extensionsList, extension);\n delete this.extensions[name];\n }\n\n getExtension(name) {\n return this.extensions[name];\n }\n\n hasExtension(name) {\n return !!this.extensions[name];\n }\n\n addGlobal(name, value) {\n this.globals[name] = value;\n return this;\n }\n\n getGlobal(name) {\n if (typeof this.globals[name] === 'undefined') {\n throw new Error('global not found: ' + name);\n }\n return this.globals[name];\n }\n\n addFilter(name, func, async) {\n var wrapped = func;\n\n if (async) {\n this.asyncFilters.push(name);\n }\n this.filters[name] = wrapped;\n return this;\n }\n\n getFilter(name) {\n if (!this.filters[name]) {\n throw new Error('filter not found: ' + name);\n }\n return this.filters[name];\n }\n\n addTest(name, func) {\n this.tests[name] = func;\n return this;\n }\n\n getTest(name) {\n if (!this.tests[name]) {\n throw new Error('test not found: ' + name);\n }\n return this.tests[name];\n }\n\n resolveTemplate(loader, parentName, filename) {\n var isRelative = (loader.isRelative && parentName) ? loader.isRelative(filename) : false;\n return (isRelative && loader.resolve) ? loader.resolve(parentName, filename) : filename;\n }\n\n getTemplate(name, eagerCompile, parentName, ignoreMissing, cb) {\n var that = this;\n var tmpl = null;\n if (name && name.raw) {\n // this fixes autoescape for templates referenced in symbols\n name = name.raw;\n }\n\n if (lib.isFunction(parentName)) {\n cb = parentName;\n parentName = null;\n eagerCompile = eagerCompile || false;\n }\n\n if (lib.isFunction(eagerCompile)) {\n cb = eagerCompile;\n eagerCompile = false;\n }\n\n if (name instanceof Template) {\n tmpl = name;\n } else if (typeof name !== 'string') {\n throw new Error('template names must be a string: ' + name);\n } else {\n for (let i = 0; i < this.loaders.length; i++) {\n const loader = this.loaders[i];\n tmpl = loader.cache[this.resolveTemplate(loader, parentName, name)];\n if (tmpl) {\n break;\n }\n }\n }\n\n if (tmpl) {\n if (eagerCompile) {\n tmpl.compile();\n }\n\n if (cb) {\n cb(null, tmpl);\n return undefined;\n } else {\n return tmpl;\n }\n }\n let syncResult;\n\n const createTemplate = (err, info) => {\n if (!info && !err && !ignoreMissing) {\n err = new Error('template not found: ' + name);\n }\n\n if (err) {\n if (cb) {\n cb(err);\n return;\n } else {\n throw err;\n }\n }\n let newTmpl;\n if (!info) {\n newTmpl = new Template(noopTmplSrc, this, '', eagerCompile);\n } else {\n newTmpl = new Template(info.src, this, info.path, eagerCompile);\n if (!info.noCache) {\n info.loader.cache[name] = newTmpl;\n }\n }\n if (cb) {\n cb(null, newTmpl);\n } else {\n syncResult = newTmpl;\n }\n };\n\n lib.asyncIter(this.loaders, (loader, i, next, done) => {\n function handle(err, src) {\n if (err) {\n done(err);\n } else if (src) {\n src.loader = loader;\n done(null, src);\n } else {\n next();\n }\n }\n\n // Resolve name relative to parentName\n name = that.resolveTemplate(loader, parentName, name);\n\n if (loader.async) {\n loader.getSource(name, handle);\n } else {\n handle(null, loader.getSource(name));\n }\n }, createTemplate);\n\n return syncResult;\n }\n\n express(app) {\n return expressApp(this, app);\n }\n\n render(name, ctx, cb) {\n if (lib.isFunction(ctx)) {\n cb = ctx;\n ctx = null;\n }\n\n // We support a synchronous API to make it easier to migrate\n // existing code to async. This works because if you don't do\n // anything async work, the whole thing is actually run\n // synchronously.\n let syncResult = null;\n\n this.getTemplate(name, (err, tmpl) => {\n if (err && cb) {\n callbackAsap(cb, err);\n } else if (err) {\n throw err;\n } else {\n syncResult = tmpl.render(ctx, cb);\n }\n });\n\n return syncResult;\n }\n\n renderString(src, ctx, opts, cb) {\n if (lib.isFunction(opts)) {\n cb = opts;\n opts = {};\n }\n opts = opts || {};\n\n const tmpl = new Template(src, this, opts.path);\n return tmpl.render(ctx, cb);\n }\n\n waterfall(tasks, callback, forceAsync) {\n return waterfall(tasks, callback, forceAsync);\n }\n}\n\nclass Context extends Obj {\n init(ctx, blocks, env) {\n // Has to be tied to an environment so we can tap into its globals.\n this.env = env || new Environment();\n\n // Make a duplicate of ctx\n this.ctx = lib.extend({}, ctx);\n\n this.blocks = {};\n this.exported = [];\n\n lib.keys(blocks).forEach(name => {\n this.addBlock(name, blocks[name]);\n });\n }\n\n lookup(name) {\n // This is one of the most called functions, so optimize for\n // the typical case where the name isn't in the globals\n if (name in this.env.globals && !(name in this.ctx)) {\n return this.env.globals[name];\n } else {\n return this.ctx[name];\n }\n }\n\n setVariable(name, val) {\n this.ctx[name] = val;\n }\n\n getVariables() {\n return this.ctx;\n }\n\n addBlock(name, block) {\n this.blocks[name] = this.blocks[name] || [];\n this.blocks[name].push(block);\n return this;\n }\n\n getBlock(name) {\n if (!this.blocks[name]) {\n throw new Error('unknown block \"' + name + '\"');\n }\n\n return this.blocks[name][0];\n }\n\n getSuper(env, name, block, frame, runtime, cb) {\n var idx = lib.indexOf(this.blocks[name] || [], block);\n var blk = this.blocks[name][idx + 1];\n var context = this;\n\n if (idx === -1 || !blk) {\n throw new Error('no super block available for \"' + name + '\"');\n }\n\n blk(env, context, frame, runtime, cb);\n }\n\n addExport(name) {\n this.exported.push(name);\n }\n\n getExported() {\n var exported = {};\n this.exported.forEach((name) => {\n exported[name] = this.ctx[name];\n });\n return exported;\n }\n}\n\nclass Template extends Obj {\n init(src, env, path, eagerCompile) {\n this.env = env || new Environment();\n\n if (lib.isObject(src)) {\n switch (src.type) {\n case 'code':\n this.tmplProps = src.obj;\n break;\n case 'string':\n this.tmplStr = src.obj;\n break;\n default:\n throw new Error(\n `Unexpected template object type ${src.type}; expected 'code', or 'string'`);\n }\n } else if (lib.isString(src)) {\n this.tmplStr = src;\n } else {\n throw new Error('src must be a string or an object describing the source');\n }\n\n this.path = path;\n\n if (eagerCompile) {\n try {\n this._compile();\n } catch (err) {\n throw lib._prettifyError(this.path, this.env.opts.dev, err);\n }\n } else {\n this.compiled = false;\n }\n }\n\n render(ctx, parentFrame, cb) {\n if (typeof ctx === 'function') {\n cb = ctx;\n ctx = {};\n } else if (typeof parentFrame === 'function') {\n cb = parentFrame;\n parentFrame = null;\n }\n\n // If there is a parent frame, we are being called from internal\n // code of another template, and the internal system\n // depends on the sync/async nature of the parent template\n // to be inherited, so force an async callback\n const forceAsync = !parentFrame;\n\n // Catch compile errors for async rendering\n try {\n this.compile();\n } catch (e) {\n const err = lib._prettifyError(this.path, this.env.opts.dev, e);\n if (cb) {\n return callbackAsap(cb, err);\n } else {\n throw err;\n }\n }\n\n const context = new Context(ctx || {}, this.blocks, this.env);\n const frame = parentFrame ? parentFrame.push(true) : new Frame();\n frame.topLevel = true;\n let syncResult = null;\n let didError = false;\n\n this.rootRenderFunc(this.env, context, frame, globalRuntime, (err, res) => {\n // TODO: this is actually a bug in the compiled template (because waterfall\n // tasks are both not passing errors up the chain of callbacks AND are not\n // causing a return from the top-most render function). But fixing that\n // will require a more substantial change to the compiler.\n if (didError && cb && typeof res !== 'undefined') {\n // prevent multiple calls to cb\n return;\n }\n\n if (err) {\n err = lib._prettifyError(this.path, this.env.opts.dev, err);\n didError = true;\n }\n\n if (cb) {\n if (forceAsync) {\n callbackAsap(cb, err, res);\n } else {\n cb(err, res);\n }\n } else {\n if (err) {\n throw err;\n }\n syncResult = res;\n }\n });\n\n return syncResult;\n }\n\n\n getExported(ctx, parentFrame, cb) { // eslint-disable-line consistent-return\n if (typeof ctx === 'function') {\n cb = ctx;\n ctx = {};\n }\n\n if (typeof parentFrame === 'function') {\n cb = parentFrame;\n parentFrame = null;\n }\n\n // Catch compile errors for async rendering\n try {\n this.compile();\n } catch (e) {\n if (cb) {\n return cb(e);\n } else {\n throw e;\n }\n }\n\n const frame = parentFrame ? parentFrame.push() : new Frame();\n frame.topLevel = true;\n\n // Run the rootRenderFunc to populate the context with exported vars\n const context = new Context(ctx || {}, this.blocks, this.env);\n this.rootRenderFunc(this.env, context, frame, globalRuntime, (err) => {\n if (err) {\n cb(err, null);\n } else {\n cb(null, context.getExported());\n }\n });\n }\n\n compile() {\n if (!this.compiled) {\n this._compile();\n }\n }\n\n _compile() {\n var props;\n\n if (this.tmplProps) {\n props = this.tmplProps;\n } else {\n const source = compiler.compile(this.tmplStr,\n this.env.asyncFilters,\n this.env.extensionsList,\n this.path,\n this.env.opts);\n\n const func = new Function(source); // eslint-disable-line no-new-func\n props = func();\n }\n\n this.blocks = this._getBlocks(props);\n this.rootRenderFunc = props.root;\n this.compiled = true;\n }\n\n _getBlocks(props) {\n var blocks = {};\n\n lib.keys(props).forEach((k) => {\n if (k.slice(0, 2) === 'b_') {\n blocks[k.slice(2)] = props[k];\n }\n });\n\n return blocks;\n }\n}\n\nmodule.exports = {\n Environment: Environment,\n Template: Template\n};\n\n\n\n// WEBPACK FOOTER //\n// ./nunjucks/src/environment.js","\"use strict\";\n\n// rawAsap provides everything we need except exception management.\nvar rawAsap = require(\"./raw\");\n// RawTasks are recycled to reduce GC churn.\nvar freeTasks = [];\n// We queue errors to ensure they are thrown in right order (FIFO).\n// Array-as-queue is good enough here, since we are just dealing with exceptions.\nvar pendingErrors = [];\nvar requestErrorThrow = rawAsap.makeRequestCallFromTimer(throwFirstError);\n\nfunction throwFirstError() {\n if (pendingErrors.length) {\n throw pendingErrors.shift();\n }\n}\n\n/**\n * Calls a task as soon as possible after returning, in its own event, with priority\n * over other events like animation, reflow, and repaint. An error thrown from an\n * event will not interrupt, nor even substantially slow down the processing of\n * other events, but will be rather postponed to a lower priority event.\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\nmodule.exports = asap;\nfunction asap(task) {\n var rawTask;\n if (freeTasks.length) {\n rawTask = freeTasks.pop();\n } else {\n rawTask = new RawTask();\n }\n rawTask.task = task;\n rawAsap(rawTask);\n}\n\n// We wrap tasks with recyclable task objects. A task object implements\n// `call`, just like a function.\nfunction RawTask() {\n this.task = null;\n}\n\n// The sole purpose of wrapping the task is to catch the exception and recycle\n// the task object after its single use.\nRawTask.prototype.call = function () {\n try {\n this.task.call();\n } catch (error) {\n if (asap.onerror) {\n // This hook exists purely for testing purposes.\n // Its name will be periodically randomized to break any code that\n // depends on its existence.\n asap.onerror(error);\n } else {\n // In a web browser, exceptions are not fatal. However, to avoid\n // slowing down the queue of pending tasks, we rethrow the error in a\n // lower priority turn.\n pendingErrors.push(error);\n requestErrorThrow();\n }\n } finally {\n this.task = null;\n freeTasks[freeTasks.length] = this;\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/asap/browser-asap.js\n// module id = 8\n// module chunks = 0","\"use strict\";\n\n// Use the fastest means possible to execute a task in its own turn, with\n// priority over other events including IO, animation, reflow, and redraw\n// events in browsers.\n//\n// An exception thrown by a task will permanently interrupt the processing of\n// subsequent tasks. The higher level `asap` function ensures that if an\n// exception is thrown by a task, that the task queue will continue flushing as\n// soon as possible, but if you use `rawAsap` directly, you are responsible to\n// either ensure that no exceptions are thrown from your task, or to manually\n// call `rawAsap.requestFlush` if an exception is thrown.\nmodule.exports = rawAsap;\nfunction rawAsap(task) {\n if (!queue.length) {\n requestFlush();\n flushing = true;\n }\n // Equivalent to push, but avoids a function call.\n queue[queue.length] = task;\n}\n\nvar queue = [];\n// Once a flush has been requested, no further calls to `requestFlush` are\n// necessary until the next `flush` completes.\nvar flushing = false;\n// `requestFlush` is an implementation-specific method that attempts to kick\n// off a `flush` event as quickly as possible. `flush` will attempt to exhaust\n// the event queue before yielding to the browser's own event loop.\nvar requestFlush;\n// The position of the next task to execute in the task queue. This is\n// preserved between calls to `flush` so that it can be resumed if\n// a task throws an exception.\nvar index = 0;\n// If a task schedules additional tasks recursively, the task queue can grow\n// unbounded. To prevent memory exhaustion, the task queue will periodically\n// truncate already-completed tasks.\nvar capacity = 1024;\n\n// The flush function processes all tasks that have been scheduled with\n// `rawAsap` unless and until one of those tasks throws an exception.\n// If a task throws an exception, `flush` ensures that its state will remain\n// consistent and will resume where it left off when called again.\n// However, `flush` does not make any arrangements to be called again if an\n// exception is thrown.\nfunction flush() {\n while (index < queue.length) {\n var currentIndex = index;\n // Advance the index before calling the task. This ensures that we will\n // begin flushing on the next task the task throws an error.\n index = index + 1;\n queue[currentIndex].call();\n // Prevent leaking memory for long chains of recursive calls to `asap`.\n // If we call `asap` within tasks scheduled by `asap`, the queue will\n // grow, but to avoid an O(n) walk for every task we execute, we don't\n // shift tasks off the queue after they have been executed.\n // Instead, we periodically shift 1024 tasks off the queue.\n if (index > capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {\n queue[scan] = queue[scan + index];\n }\n queue.length -= index;\n index = 0;\n }\n }\n queue.length = 0;\n index = 0;\n flushing = false;\n}\n\n// `requestFlush` is implemented using a strategy based on data collected from\n// every available SauceLabs Selenium web driver worker at time of writing.\n// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n\n// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` or `self` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n\n/* globals self */\nvar scope = typeof global !== \"undefined\" ? global : self;\nvar BrowserMutationObserver = scope.MutationObserver || scope.WebKitMutationObserver;\n\n// MutationObservers are desirable because they have high priority and work\n// reliably everywhere they are implemented.\n// They are implemented in all modern browsers.\n//\n// - Android 4-4.3\n// - Chrome 26-34\n// - Firefox 14-29\n// - Internet Explorer 11\n// - iPad Safari 6-7.1\n// - iPhone Safari 7-7.1\n// - Safari 6-7\nif (typeof BrowserMutationObserver === \"function\") {\n requestFlush = makeRequestCallFromMutationObserver(flush);\n\n// MessageChannels are desirable because they give direct access to the HTML\n// task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n// 11-12, and in web workers in many engines.\n// Although message channels yield to any queued rendering and IO tasks, they\n// would be better than imposing the 4ms delay of timers.\n// However, they do not work reliably in Internet Explorer or Safari.\n\n// Internet Explorer 10 is the only browser that has setImmediate but does\n// not have MutationObservers.\n// Although setImmediate yields to the browser's renderer, it would be\n// preferrable to falling back to setTimeout since it does not have\n// the minimum 4ms penalty.\n// Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n// Desktop to a lesser extent) that renders both setImmediate and\n// MessageChannel useless for the purposes of ASAP.\n// https://github.com/kriskowal/q/issues/396\n\n// Timers are implemented universally.\n// We fall back to timers in workers in most engines, and in foreground\n// contexts in the following browsers.\n// However, note that even this simple case requires nuances to operate in a\n// broad spectrum of browsers.\n//\n// - Firefox 3-13\n// - Internet Explorer 6-9\n// - iPad Safari 4.3\n// - Lynx 2.8.7\n} else {\n requestFlush = makeRequestCallFromTimer(flush);\n}\n\n// `requestFlush` requests that the high priority event queue be flushed as\n// soon as possible.\n// This is useful to prevent an error thrown in a task from stalling the event\n// queue if the exception handled by Node.jss\n// `process.on(\"uncaughtException\")` or by a domain.\nrawAsap.requestFlush = requestFlush;\n\n// To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between \"1\" and \"-1\".\nfunction makeRequestCallFromMutationObserver(callback) {\n var toggle = 1;\n var observer = new BrowserMutationObserver(callback);\n var node = document.createTextNode(\"\");\n observer.observe(node, {characterData: true});\n return function requestCall() {\n toggle = -toggle;\n node.data = toggle;\n };\n}\n\n// The message channel technique was discovered by Malte Ubl and was the\n// original foundation for this library.\n// http://www.nonblocking.io/2011/06/windownexttick.html\n\n// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n// page's first load. Thankfully, this version of Safari supports\n// MutationObservers, so we don't need to fall back in that case.\n\n// function makeRequestCallFromMessageChannel(callback) {\n// var channel = new MessageChannel();\n// channel.port1.onmessage = callback;\n// return function requestCall() {\n// channel.port2.postMessage(0);\n// };\n// }\n\n// For reasons explained above, we are also unable to use `setImmediate`\n// under any circumstances.\n// Even if we were, there is another bug in Internet Explorer 10.\n// It is not sufficient to assign `setImmediate` to `requestFlush` because\n// `setImmediate` must be called *by name* and therefore must be wrapped in a\n// closure.\n// Never forget.\n\n// function makeRequestCallFromSetImmediate(callback) {\n// return function requestCall() {\n// setImmediate(callback);\n// };\n// }\n\n// Safari 6.0 has a problem where timers will get lost while the user is\n// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n// mutation observers, so that implementation is used instead.\n// However, if we ever elect to use timers in Safari, the prevalent work-around\n// is to add a scroll event listener that calls for a flush.\n\n// `setTimeout` does not call the passed callback if the delay is less than\n// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n// even then.\n\nfunction makeRequestCallFromTimer(callback) {\n return function requestCall() {\n // We dispatch a timeout with a specified delay of 0 for engines that\n // can reliably accommodate that request. This will usually be snapped\n // to a 4 milisecond delay, but once we're flushing, there's no delay\n // between events.\n var timeoutHandle = setTimeout(handleTimer, 0);\n // However, since this timer gets frequently dropped in Firefox\n // workers, we enlist an interval handle that will try to fire\n // an event 20 times per second until it succeeds.\n var intervalHandle = setInterval(handleTimer, 50);\n\n function handleTimer() {\n // Whichever timer succeeds will cancel both timers and\n // execute the callback.\n clearTimeout(timeoutHandle);\n clearInterval(intervalHandle);\n callback();\n }\n };\n}\n\n// This is for `asap.js` only.\n// Its name will be periodically randomized to break any code that depends on\n// its existence.\nrawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer;\n\n// ASAP was originally a nextTick shim included in Q. This was factored out\n// into this ASAP package. It was later adapted to RSVP which made further\n// amendments. These decisions, particularly to marginalize MessageChannel and\n// to capture the MutationObserver implementation in a closure, were integrated\n// back into ASAP proper.\n// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/asap/browser-raw.js\n// module id = 9\n// module chunks = 0","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 10\n// module chunks = 0","// MIT license (by Elan Shanker).\n(function(globals) {\n 'use strict';\n\n var executeSync = function(){\n var args = Array.prototype.slice.call(arguments);\n if (typeof args[0] === 'function'){\n args[0].apply(null, args.splice(1));\n }\n };\n\n var executeAsync = function(fn){\n if (typeof setImmediate === 'function') {\n setImmediate(fn);\n } else if (typeof process !== 'undefined' && process.nextTick) {\n process.nextTick(fn);\n } else {\n setTimeout(fn, 0);\n }\n };\n\n var makeIterator = function (tasks) {\n var makeCallback = function (index) {\n var fn = function () {\n if (tasks.length) {\n tasks[index].apply(null, arguments);\n }\n return fn.next();\n };\n fn.next = function () {\n return (index < tasks.length - 1) ? makeCallback(index + 1): null;\n };\n return fn;\n };\n return makeCallback(0);\n };\n \n var _isArray = Array.isArray || function(maybeArray){\n return Object.prototype.toString.call(maybeArray) === '[object Array]';\n };\n\n var waterfall = function (tasks, callback, forceAsync) {\n var nextTick = forceAsync ? executeAsync : executeSync;\n callback = callback || function () {};\n if (!_isArray(tasks)) {\n var err = new Error('First argument to waterfall must be an array of functions');\n return callback(err);\n }\n if (!tasks.length) {\n return callback();\n }\n var wrapIterator = function (iterator) {\n return function (err) {\n if (err) {\n callback.apply(null, arguments);\n callback = function () {};\n } else {\n var args = Array.prototype.slice.call(arguments, 1);\n var next = iterator.next();\n if (next) {\n args.push(wrapIterator(next));\n } else {\n args.push(callback);\n }\n nextTick(function () {\n iterator.apply(null, args);\n });\n }\n };\n };\n wrapIterator(makeIterator(tasks))();\n };\n\n if (typeof define !== 'undefined' && define.amd) {\n define([], function () {\n return waterfall;\n }); // RequireJS\n } else if (typeof module !== 'undefined' && module.exports) {\n module.exports = waterfall; // CommonJS\n } else {\n globals.waterfall = waterfall; // <script>\n }\n})(this);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/a-sync-waterfall/index.js\n// module id = 11\n// module chunks = 0","'use strict';\n\nvar lib = require('./lib');\nvar r = require('./runtime');\n\nvar exports = module.exports = {};\n\nfunction normalize(value, defaultValue) {\n if (value === null || value === undefined || value === false) {\n return defaultValue;\n }\n return value;\n}\n\nexports.abs = Math.abs;\n\nfunction isNaN(num) {\n return num !== num; // eslint-disable-line no-self-compare\n}\n\nfunction batch(arr, linecount, fillWith) {\n var i;\n var res = [];\n var tmp = [];\n\n for (i = 0; i < arr.length; i++) {\n if (i % linecount === 0 && tmp.length) {\n res.push(tmp);\n tmp = [];\n }\n\n tmp.push(arr[i]);\n }\n\n if (tmp.length) {\n if (fillWith) {\n for (i = tmp.length; i < linecount; i++) {\n tmp.push(fillWith);\n }\n }\n\n res.push(tmp);\n }\n\n return res;\n}\n\nexports.batch = batch;\n\nfunction capitalize(str) {\n str = normalize(str, '');\n const ret = str.toLowerCase();\n return r.copySafeness(str, ret.charAt(0).toUpperCase() + ret.slice(1));\n}\n\nexports.capitalize = capitalize;\n\nfunction center(str, width) {\n str = normalize(str, '');\n width = width || 80;\n\n if (str.length >= width) {\n return str;\n }\n\n const spaces = width - str.length;\n const pre = lib.repeat(' ', (spaces / 2) - (spaces % 2));\n const post = lib.repeat(' ', spaces / 2);\n return r.copySafeness(str, pre + str + post);\n}\n\nexports.center = center;\n\nfunction default_(val, def, bool) {\n if (bool) {\n return val || def;\n } else {\n return (val !== undefined) ? val : def;\n }\n}\n\n// TODO: it is confusing to export something called 'default'\nexports['default'] = default_; // eslint-disable-line dot-notation\n\nfunction dictsort(val, caseSensitive, by) {\n if (!lib.isObject(val)) {\n throw new lib.TemplateError('dictsort filter: val must be an object');\n }\n\n let array = [];\n // deliberately include properties from the object's prototype\n for (let k in val) { // eslint-disable-line guard-for-in, no-restricted-syntax\n array.push([k, val[k]]);\n }\n\n let si;\n if (by === undefined || by === 'key') {\n si = 0;\n } else if (by === 'value') {\n si = 1;\n } else {\n throw new lib.TemplateError(\n 'dictsort filter: You can only sort by either key or value');\n }\n\n array.sort((t1, t2) => {\n var a = t1[si];\n var b = t2[si];\n\n if (!caseSensitive) {\n if (lib.isString(a)) {\n a = a.toUpperCase();\n }\n if (lib.isString(b)) {\n b = b.toUpperCase();\n }\n }\n\n return a > b ? 1 : (a === b ? 0 : -1); // eslint-disable-line no-nested-ternary\n });\n\n return array;\n}\n\nexports.dictsort = dictsort;\n\nfunction dump(obj, spaces) {\n return JSON.stringify(obj, null, spaces);\n}\n\nexports.dump = dump;\n\nfunction escape(str) {\n if (str instanceof r.SafeString) {\n return str;\n }\n str = (str === null || str === undefined) ? '' : str;\n return r.markSafe(lib.escape(str.toString()));\n}\n\nexports.escape = escape;\n\nfunction safe(str) {\n if (str instanceof r.SafeString) {\n return str;\n }\n str = (str === null || str === undefined) ? '' : str;\n return r.markSafe(str.toString());\n}\n\nexports.safe = safe;\n\nfunction first(arr) {\n return arr[0];\n}\n\nexports.first = first;\n\nfunction forceescape(str) {\n str = (str === null || str === undefined) ? '' : str;\n return r.markSafe(lib.escape(str.toString()));\n}\n\nexports.forceescape = forceescape;\n\nfunction groupby(arr, attr) {\n return lib.groupBy(arr, attr, this.env.opts.throwOnUndefined);\n}\n\nexports.groupby = groupby;\n\nfunction indent(str, width, indentfirst) {\n str = normalize(str, '');\n\n if (str === '') {\n return '';\n }\n\n width = width || 4;\n // let res = '';\n const lines = str.split('\\n');\n const sp = lib.repeat(' ', width);\n\n const res = lines.map((l, i) => {\n return (i === 0 && !indentfirst) ? l : `${sp}${l}`;\n }).join('\\n');\n\n return r.copySafeness(str, res);\n}\n\nexports.indent = indent;\n\nfunction join(arr, del, attr) {\n del = del || '';\n\n if (attr) {\n arr = lib.map(arr, (v) => v[attr]);\n }\n\n return arr.join(del);\n}\n\nexports.join = join;\n\nfunction last(arr) {\n return arr[arr.length - 1];\n}\n\nexports.last = last;\n\nfunction lengthFilter(val) {\n var value = normalize(val, '');\n\n if (value !== undefined) {\n if (\n (typeof Map === 'function' && value instanceof Map) ||\n (typeof Set === 'function' && value instanceof Set)\n ) {\n // ECMAScript 2015 Maps and Sets\n return value.size;\n }\n if (lib.isObject(value) && !(value instanceof r.SafeString)) {\n // Objects (besides SafeStrings), non-primative Arrays\n return lib.keys(value).length;\n }\n return value.length;\n }\n return 0;\n}\n\nexports.length = lengthFilter;\n\nfunction list(val) {\n if (lib.isString(val)) {\n return val.split('');\n } else if (lib.isObject(val)) {\n return lib._entries(val || {}).map(([key, value]) => ({key, value}));\n } else if (lib.isArray(val)) {\n return val;\n } else {\n throw new lib.TemplateError('list filter: type not iterable');\n }\n}\n\nexports.list = list;\n\nfunction lower(str) {\n str = normalize(str, '');\n return str.toLowerCase();\n}\n\nexports.lower = lower;\n\nfunction nl2br(str) {\n if (str === null || str === undefined) {\n return '';\n }\n return r.copySafeness(str, str.replace(/\\r\\n|\\n/g, '<br />\\n'));\n}\n\nexports.nl2br = nl2br;\n\nfunction random(arr) {\n return arr[Math.floor(Math.random() * arr.length)];\n}\n\nexports.random = random;\n\n/**\n * Construct select or reject filter\n *\n * @param {boolean} expectedTestResult\n * @returns {function(array, string, *): array}\n */\nfunction getSelectOrReject(expectedTestResult) {\n function filter(arr, testName = 'truthy', secondArg) {\n const context = this;\n const test = context.env.getTest(testName);\n\n return lib.toArray(arr).filter(function examineTestResult(item) {\n return test.call(context, item, secondArg) === expectedTestResult;\n });\n }\n\n return filter;\n}\n\nexports.reject = getSelectOrReject(false);\n\nfunction rejectattr(arr, attr) {\n return arr.filter((item) => !item[attr]);\n}\n\nexports.rejectattr = rejectattr;\n\nexports.select = getSelectOrReject(true);\n\nfunction selectattr(arr, attr) {\n return arr.filter((item) => !!item[attr]);\n}\n\nexports.selectattr = selectattr;\n\nfunction replace(str, old, new_, maxCount) {\n var originalStr = str;\n\n if (old instanceof RegExp) {\n return str.replace(old, new_);\n }\n\n if (typeof maxCount === 'undefined') {\n maxCount = -1;\n }\n\n let res = ''; // Output\n\n // Cast Numbers in the search term to string\n if (typeof old === 'number') {\n old = '' + old;\n } else if (typeof old !== 'string') {\n // If it is something other than number or string,\n // return the original string\n return str;\n }\n\n // Cast numbers in the replacement to string\n if (typeof str === 'number') {\n str = '' + str;\n }\n\n // If by now, we don't have a string, throw it back\n if (typeof str !== 'string' && !(str instanceof r.SafeString)) {\n return str;\n }\n\n // ShortCircuits\n if (old === '') {\n // Mimic the python behaviour: empty string is replaced\n // by replacement e.g. \"abc\"|replace(\"\", \".\") -> .a.b.c.\n res = new_ + str.split('').join(new_) + new_;\n return r.copySafeness(str, res);\n }\n\n let nextIndex = str.indexOf(old);\n // if # of replacements to perform is 0, or the string to does\n // not contain the old value, return the string\n if (maxCount === 0 || nextIndex === -1) {\n return str;\n }\n\n let pos = 0;\n let count = 0; // # of replacements made\n\n while (nextIndex > -1 && (maxCount === -1 || count < maxCount)) {\n // Grab the next chunk of src string and add it with the\n // replacement, to the result\n res += str.substring(pos, nextIndex) + new_;\n // Increment our pointer in the src string\n pos = nextIndex + old.length;\n count++;\n // See if there are any more replacements to be made\n nextIndex = str.indexOf(old, pos);\n }\n\n // We've either reached the end, or done the max # of\n // replacements, tack on any remaining string\n if (pos < str.length) {\n res += str.substring(pos);\n }\n\n return r.copySafeness(originalStr, res);\n}\n\nexports.replace = replace;\n\nfunction reverse(val) {\n var arr;\n if (lib.isString(val)) {\n arr = list(val);\n } else {\n // Copy it\n arr = lib.map(val, v => v);\n }\n\n arr.reverse();\n\n if (lib.isString(val)) {\n return r.copySafeness(val, arr.join(''));\n }\n return arr;\n}\n\nexports.reverse = reverse;\n\nfunction round(val, precision, method) {\n precision = precision || 0;\n const factor = Math.pow(10, precision);\n let rounder;\n\n if (method === 'ceil') {\n rounder = Math.ceil;\n } else if (method === 'floor') {\n rounder = Math.floor;\n } else {\n rounder = Math.round;\n }\n\n return rounder(val * factor) / factor;\n}\n\nexports.round = round;\n\nfunction slice(arr, slices, fillWith) {\n const sliceLength = Math.floor(arr.length / slices);\n const extra = arr.length % slices;\n const res = [];\n let offset = 0;\n\n for (let i = 0; i < slices; i++) {\n const start = offset + (i * sliceLength);\n if (i < extra) {\n offset++;\n }\n const end = offset + ((i + 1) * sliceLength);\n\n const currSlice = arr.slice(start, end);\n if (fillWith && i >= extra) {\n currSlice.push(fillWith);\n }\n res.push(currSlice);\n }\n\n return res;\n}\n\nexports.slice = slice;\n\nfunction sum(arr, attr, start = 0) {\n if (attr) {\n arr = lib.map(arr, (v) => v[attr]);\n }\n\n return start + arr.reduce((a, b) => a + b, 0);\n}\n\nexports.sum = sum;\n\nexports.sort = r.makeMacro(\n ['value', 'reverse', 'case_sensitive', 'attribute'], [],\n function sortFilter(arr, reversed, caseSens, attr) {\n // Copy it\n let array = lib.map(arr, v => v);\n let getAttribute = lib.getAttrGetter(attr);\n\n array.sort((a, b) => {\n let x = (attr) ? getAttribute(a) : a;\n let y = (attr) ? getAttribute(b) : b;\n\n if (\n this.env.opts.throwOnUndefined &&\n attr && (x === undefined || y === undefined)\n ) {\n throw new TypeError(`sort: attribute \"${attr}\" resolved to undefined`);\n }\n\n if (!caseSens && lib.isString(x) && lib.isString(y)) {\n x = x.toLowerCase();\n y = y.toLowerCase();\n }\n\n if (x < y) {\n return reversed ? 1 : -1;\n } else if (x > y) {\n return reversed ? -1 : 1;\n } else {\n return 0;\n }\n });\n\n return array;\n });\n\nfunction string(obj) {\n return r.copySafeness(obj, obj);\n}\n\nexports.string = string;\n\nfunction striptags(input, preserveLinebreaks) {\n input = normalize(input, '');\n let tags = /<\\/?([a-z][a-z0-9]*)\\b[^>]*>|<!--[\\s\\S]*?-->/gi;\n let trimmedInput = trim(input.replace(tags, ''));\n let res = '';\n if (preserveLinebreaks) {\n res = trimmedInput\n .replace(/^ +| +$/gm, '') // remove leading and trailing spaces\n .replace(/ +/g, ' ') // squash adjacent spaces\n .replace(/(\\r\\n)/g, '\\n') // normalize linebreaks (CRLF -> LF)\n .replace(/\\n\\n\\n+/g, '\\n\\n'); // squash abnormal adjacent linebreaks\n } else {\n res = trimmedInput.replace(/\\s+/gi, ' ');\n }\n return r.copySafeness(input, res);\n}\n\nexports.striptags = striptags;\n\nfunction title(str) {\n str = normalize(str, '');\n let words = str.split(' ').map(word => capitalize(word));\n return r.copySafeness(str, words.join(' '));\n}\n\nexports.title = title;\n\nfunction trim(str) {\n return r.copySafeness(str, str.replace(/^\\s*|\\s*$/g, ''));\n}\n\nexports.trim = trim;\n\nfunction truncate(input, length, killwords, end) {\n var orig = input;\n input = normalize(input, '');\n length = length || 255;\n\n if (input.length <= length) {\n return input;\n }\n\n if (killwords) {\n input = input.substring(0, length);\n } else {\n let idx = input.lastIndexOf(' ', length);\n if (idx === -1) {\n idx = length;\n }\n\n input = input.substring(0, idx);\n }\n\n input += (end !== undefined && end !== null) ? end : '...';\n return r.copySafeness(orig, input);\n}\n\nexports.truncate = truncate;\n\nfunction upper(str) {\n str = normalize(str, '');\n return str.toUpperCase();\n}\n\nexports.upper = upper;\n\nfunction urlencode(obj) {\n var enc = encodeURIComponent;\n if (lib.isString(obj)) {\n return enc(obj);\n } else {\n let keyvals = (lib.isArray(obj)) ? obj : lib._entries(obj);\n return keyvals.map(([k, v]) => `${enc(k)}=${enc(v)}`).join('&');\n }\n}\n\nexports.urlencode = urlencode;\n\n// For the jinja regexp, see\n// https://github.com/mitsuhiko/jinja2/blob/f15b814dcba6aa12bc74d1f7d0c881d55f7126be/jinja2/utils.py#L20-L23\nconst puncRe = /^(?:\\(|<|&lt;)?(.*?)(?:\\.|,|\\)|\\n|&gt;)?$/;\n// from http://blog.gerv.net/2011/05/html5_email_address_regexp/\nconst emailRe = /^[\\w.!#$%&'*+\\-\\/=?\\^`{|}~]+@[a-z\\d\\-]+(\\.[a-z\\d\\-]+)+$/i;\nconst httpHttpsRe = /^https?:\\/\\/.*$/;\nconst wwwRe = /^www\\./;\nconst tldRe = /\\.(?:org|net|com)(?:\\:|\\/|$)/;\n\nfunction urlize(str, length, nofollow) {\n if (isNaN(length)) {\n length = Infinity;\n }\n\n const noFollowAttr = (nofollow === true ? ' rel=\"nofollow\"' : '');\n\n const words = str.split(/(\\s+)/).filter((word) => {\n // If the word has no length, bail. This can happen for str with\n // trailing whitespace.\n return word && word.length;\n }).map((word) => {\n var matches = word.match(puncRe);\n var possibleUrl = (matches) ? matches[1] : word;\n var shortUrl = possibleUrl.substr(0, length);\n\n // url that starts with http or https\n if (httpHttpsRe.test(possibleUrl)) {\n return `<a href=\"${possibleUrl}\"${noFollowAttr}>${shortUrl}</a>`;\n }\n\n // url that starts with www.\n if (wwwRe.test(possibleUrl)) {\n return `<a href=\"http://${possibleUrl}\"${noFollowAttr}>${shortUrl}</a>`;\n }\n\n // an email address of the form username@domain.tld\n if (emailRe.test(possibleUrl)) {\n return `<a href=\"mailto:${possibleUrl}\">${possibleUrl}</a>`;\n }\n\n // url that ends in .com, .org or .net that is not an email address\n if (tldRe.test(possibleUrl)) {\n return `<a href=\"http://${possibleUrl}\"${noFollowAttr}>${shortUrl}</a>`;\n }\n\n return word;\n });\n\n return words.join('');\n}\n\nexports.urlize = urlize;\n\nfunction wordcount(str) {\n str = normalize(str, '');\n const words = (str) ? str.match(/\\w+/g) : null;\n return (words) ? words.length : null;\n}\n\nexports.wordcount = wordcount;\n\nfunction float(val, def) {\n var res = parseFloat(val);\n return (isNaN(res)) ? def : res;\n}\n\nexports.float = float;\n\nconst intFilter = r.makeMacro(\n ['value', 'default', 'base'],\n [],\n function doInt(value, defaultValue, base = 10) {\n var res = parseInt(value, base);\n return (isNaN(res)) ? defaultValue : res;\n }\n);\n\nexports.int = intFilter;\n\n// Aliases\nexports.d = exports.default;\nexports.e = exports.escape;\n\n\n\n// WEBPACK FOOTER //\n// ./nunjucks/src/filters.js","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function eventListener() {\n if (errorListener !== undefined) {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n var errorListener;\n\n // Adding an error listener is not optional because\n // if an error is thrown on an event emitter we cannot\n // guarantee that the actual event we are waiting will\n // be fired. The result could be a silent way to create\n // memory or file descriptor leaks, which is something\n // we should avoid.\n if (name !== 'error') {\n errorListener = function errorListener(err) {\n emitter.removeListener(name, eventListener);\n reject(err);\n };\n\n emitter.once('error', errorListener);\n }\n\n emitter.once(name, eventListener);\n });\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/node_modules/events/events.js\n// module id = 13\n// module chunks = 0","'use strict';\n\nvar SafeString = require('./runtime').SafeString;\n\n/**\n * Returns `true` if the object is a function, otherwise `false`.\n * @param { any } value\n * @returns { boolean }\n */\nfunction callable(value) {\n return typeof value === 'function';\n}\n\nexports.callable = callable;\n\n/**\n * Returns `true` if the object is strictly not `undefined`.\n * @param { any } value\n * @returns { boolean }\n */\nfunction defined(value) {\n return value !== undefined;\n}\n\nexports.defined = defined;\n\n/**\n * Returns `true` if the operand (one) is divisble by the test's argument\n * (two).\n * @param { number } one\n * @param { number } two\n * @returns { boolean }\n */\nfunction divisibleby(one, two) {\n return (one % two) === 0;\n}\n\nexports.divisibleby = divisibleby;\n\n/**\n * Returns true if the string has been escaped (i.e., is a SafeString).\n * @param { any } value\n * @returns { boolean }\n */\nfunction escaped(value) {\n return value instanceof SafeString;\n}\n\nexports.escaped = escaped;\n\n/**\n * Returns `true` if the arguments are strictly equal.\n * @param { any } one\n * @param { any } two\n */\nfunction equalto(one, two) {\n return one === two;\n}\n\nexports.equalto = equalto;\n\n// Aliases\nexports.eq = exports.equalto;\nexports.sameas = exports.equalto;\n\n/**\n * Returns `true` if the value is evenly divisible by 2.\n * @param { number } value\n * @returns { boolean }\n */\nfunction even(value) {\n return value % 2 === 0;\n}\n\nexports.even = even;\n\n/**\n * Returns `true` if the value is falsy - if I recall correctly, '', 0, false,\n * undefined, NaN or null. I don't know if we should stick to the default JS\n * behavior or attempt to replicate what Python believes should be falsy (i.e.,\n * empty arrays, empty dicts, not 0...).\n * @param { any } value\n * @returns { boolean }\n */\nfunction falsy(value) {\n return !value;\n}\n\nexports.falsy = falsy;\n\n/**\n * Returns `true` if the operand (one) is greater or equal to the test's\n * argument (two).\n * @param { number } one\n * @param { number } two\n * @returns { boolean }\n */\nfunction ge(one, two) {\n return one >= two;\n}\n\nexports.ge = ge;\n\n/**\n * Returns `true` if the operand (one) is greater than the test's argument\n * (two).\n * @param { number } one\n * @param { number } two\n * @returns { boolean }\n */\nfunction greaterthan(one, two) {\n return one > two;\n}\n\nexports.greaterthan = greaterthan;\n\n// alias\nexports.gt = exports.greaterthan;\n\n/**\n * Returns `true` if the operand (one) is less than or equal to the test's\n * argument (two).\n * @param { number } one\n * @param { number } two\n * @returns { boolean }\n */\nfunction le(one, two) {\n return one <= two;\n}\n\nexports.le = le;\n\n/**\n * Returns `true` if the operand (one) is less than the test's passed argument\n * (two).\n * @param { number } one\n * @param { number } two\n * @returns { boolean }\n */\nfunction lessthan(one, two) {\n return one < two;\n}\n\nexports.lessthan = lessthan;\n\n// alias\nexports.lt = exports.lessthan;\n\n/**\n * Returns `true` if the string is lowercased.\n * @param { string } value\n * @returns { boolean }\n */\nfunction lower(value) {\n return value.toLowerCase() === value;\n}\n\nexports.lower = lower;\n\n/**\n * Returns `true` if the operand (one) is less than or equal to the test's\n * argument (two).\n * @param { number } one\n * @param { number } two\n * @returns { boolean }\n */\nfunction ne(one, two) {\n return one !== two;\n}\n\nexports.ne = ne;\n\n/**\n * Returns true if the value is strictly equal to `null`.\n * @param { any }\n * @returns { boolean }\n */\nfunction nullTest(value) {\n return value === null;\n}\n\nexports.null = nullTest;\n\n/**\n * Returns true if value is a number.\n * @param { any }\n * @returns { boolean }\n */\nfunction number(value) {\n return typeof value === 'number';\n}\n\nexports.number = number;\n\n/**\n * Returns `true` if the value is *not* evenly divisible by 2.\n * @param { number } value\n * @returns { boolean }\n */\nfunction odd(value) {\n return value % 2 === 1;\n}\n\nexports.odd = odd;\n\n/**\n * Returns `true` if the value is a string, `false` if not.\n * @param { any } value\n * @returns { boolean }\n */\nfunction string(value) {\n return typeof value === 'string';\n}\n\nexports.string = string;\n\n/**\n * Returns `true` if the value is not in the list of things considered falsy:\n * '', null, undefined, 0, NaN and false.\n * @param { any } value\n * @returns { boolean }\n */\nfunction truthy(value) {\n return !!value;\n}\n\nexports.truthy = truthy;\n\n/**\n * Returns `true` if the value is undefined.\n * @param { any } value\n * @returns { boolean }\n */\nfunction undefinedTest(value) {\n return value === undefined;\n}\n\nexports.undefined = undefinedTest;\n\n/**\n * Returns `true` if the string is uppercased.\n * @param { string } value\n * @returns { boolean }\n */\nfunction upper(value) {\n return value.toUpperCase() === value;\n}\n\nexports.upper = upper;\n\n/**\n * If ES6 features are available, returns `true` if the value implements the\n * `Symbol.iterator` method. If not, it's a string or Array.\n *\n * Could potentially cause issues if a browser exists that has Set and Map but\n * not Symbol.\n *\n * @param { any } value\n * @returns { boolean }\n */\nfunction iterable(value) {\n if (typeof Symbol !== 'undefined') {\n return !!value[Symbol.iterator];\n } else {\n return Array.isArray(value) || typeof value === 'string';\n }\n}\n\nexports.iterable = iterable;\n\n/**\n * If ES6 features are available, returns `true` if the value is an object hash\n * or an ES6 Map. Otherwise just return if it's an object hash.\n * @param { any } value\n * @returns { boolean }\n */\nfunction mapping(value) {\n // only maps and object hashes\n var bool = value !== null\n && value !== undefined\n && typeof value === 'object'\n && !Array.isArray(value);\n if (Set) {\n return bool && !(value instanceof Set);\n } else {\n return bool;\n }\n}\n\nexports.mapping = mapping;\n\n\n\n// WEBPACK FOOTER //\n// ./nunjucks/src/tests.js","'use strict';\n\nfunction cycler(items) {\n var index = -1;\n\n return {\n current: null,\n reset() {\n index = -1;\n this.current = null;\n },\n\n next() {\n index++;\n if (index >= items.length) {\n index = 0;\n }\n\n this.current = items[index];\n return this.current;\n },\n };\n}\n\nfunction joiner(sep) {\n sep = sep || ',';\n let first = true;\n\n return () => {\n const val = first ? '' : sep;\n first = false;\n return val;\n };\n}\n\n// Making this a function instead so it returns a new object\n// each time it's called. That way, if something like an environment\n// uses it, they will each have their own copy.\nfunction globals() {\n return {\n range(start, stop, step) {\n if (typeof stop === 'undefined') {\n stop = start;\n start = 0;\n step = 1;\n } else if (!step) {\n step = 1;\n }\n\n const arr = [];\n if (step > 0) {\n for (let i = start; i < stop; i += step) {\n arr.push(i);\n }\n } else {\n for (let i = start; i > stop; i += step) { // eslint-disable-line for-direction\n arr.push(i);\n }\n }\n return arr;\n },\n\n cycler() {\n return cycler(Array.prototype.slice.call(arguments));\n },\n\n joiner(sep) {\n return joiner(sep);\n }\n };\n}\n\nmodule.exports = globals;\n\n\n\n// WEBPACK FOOTER //\n// ./nunjucks/src/globals.js","const path = require('path');\n\nmodule.exports = function express(env, app) {\n function NunjucksView(name, opts) {\n this.name = name;\n this.path = name;\n this.defaultEngine = opts.defaultEngine;\n this.ext = path.extname(name);\n if (!this.ext && !this.defaultEngine) {\n throw new Error('No default engine was specified and no extension was provided.');\n }\n if (!this.ext) {\n this.name += (this.ext = (this.defaultEngine[0] !== '.' ? '.' : '') + this.defaultEngine);\n }\n }\n\n NunjucksView.prototype.render = function render(opts, cb) {\n env.render(this.name, opts, cb);\n };\n\n app.set('view', NunjucksView);\n app.set('nunjucksEnv', env);\n return env;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./nunjucks/src/express-app.js","function installCompat() {\n 'use strict';\n\n /* eslint-disable camelcase */\n\n // This must be called like `nunjucks.installCompat` so that `this`\n // references the nunjucks instance\n var runtime = this.runtime;\n var lib = this.lib;\n // Handle slim case where these 'modules' are excluded from the built source\n var Compiler = this.compiler.Compiler;\n var Parser = this.parser.Parser;\n var nodes = this.nodes;\n var lexer = this.lexer;\n\n var orig_contextOrFrameLookup = runtime.contextOrFrameLookup;\n var orig_memberLookup = runtime.memberLookup;\n var orig_Compiler_assertType;\n var orig_Parser_parseAggregate;\n if (Compiler) {\n orig_Compiler_assertType = Compiler.prototype.assertType;\n }\n if (Parser) {\n orig_Parser_parseAggregate = Parser.prototype.parseAggregate;\n }\n\n function uninstall() {\n runtime.contextOrFrameLookup = orig_contextOrFrameLookup;\n runtime.memberLookup = orig_memberLookup;\n if (Compiler) {\n Compiler.prototype.assertType = orig_Compiler_assertType;\n }\n if (Parser) {\n Parser.prototype.parseAggregate = orig_Parser_parseAggregate;\n }\n }\n\n runtime.contextOrFrameLookup = function contextOrFrameLookup(context, frame, key) {\n var val = orig_contextOrFrameLookup.apply(this, arguments);\n if (val !== undefined) {\n return val;\n }\n switch (key) {\n case 'True':\n return true;\n case 'False':\n return false;\n case 'None':\n return null;\n default:\n return undefined;\n }\n };\n\n function getTokensState(tokens) {\n return {\n index: tokens.index,\n lineno: tokens.lineno,\n colno: tokens.colno\n };\n }\n\n if (process.env.BUILD_TYPE !== 'SLIM' && nodes && Compiler && Parser) { // i.e., not slim mode\n const Slice = nodes.Node.extend('Slice', {\n fields: ['start', 'stop', 'step'],\n init(lineno, colno, start, stop, step) {\n start = start || new nodes.Literal(lineno, colno, null);\n stop = stop || new nodes.Literal(lineno, colno, null);\n step = step || new nodes.Literal(lineno, colno, 1);\n this.parent(lineno, colno, start, stop, step);\n }\n });\n\n Compiler.prototype.assertType = function assertType(node) {\n if (node instanceof Slice) {\n return;\n }\n orig_Compiler_assertType.apply(this, arguments);\n };\n Compiler.prototype.compileSlice = function compileSlice(node, frame) {\n this._emit('(');\n this._compileExpression(node.start, frame);\n this._emit('),(');\n this._compileExpression(node.stop, frame);\n this._emit('),(');\n this._compileExpression(node.step, frame);\n this._emit(')');\n };\n\n Parser.prototype.parseAggregate = function parseAggregate() {\n var origState = getTokensState(this.tokens);\n // Set back one accounting for opening bracket/parens\n origState.colno--;\n origState.index--;\n try {\n return orig_Parser_parseAggregate.apply(this);\n } catch (e) {\n const errState = getTokensState(this.tokens);\n const rethrow = () => {\n lib._assign(this.tokens, errState);\n return e;\n };\n\n // Reset to state before original parseAggregate called\n lib._assign(this.tokens, origState);\n this.peeked = false;\n\n const tok = this.peekToken();\n if (tok.type !== lexer.TOKEN_LEFT_BRACKET) {\n throw rethrow();\n } else {\n this.nextToken();\n }\n\n const node = new Slice(tok.lineno, tok.colno);\n\n // If we don't encounter a colon while parsing, this is not a slice,\n // so re-raise the original exception.\n let isSlice = false;\n\n for (let i = 0; i <= node.fields.length; i++) {\n if (this.skip(lexer.TOKEN_RIGHT_BRACKET)) {\n break;\n }\n if (i === node.fields.length) {\n if (isSlice) {\n this.fail('parseSlice: too many slice components', tok.lineno, tok.colno);\n } else {\n break;\n }\n }\n if (this.skip(lexer.TOKEN_COLON)) {\n isSlice = true;\n } else {\n const field = node.fields[i];\n node[field] = this.parseExpression();\n isSlice = this.skip(lexer.TOKEN_COLON) || isSlice;\n }\n }\n if (!isSlice) {\n throw rethrow();\n }\n return new nodes.Array(tok.lineno, tok.colno, [node]);\n }\n };\n }\n\n function sliceLookup(obj, start, stop, step) {\n obj = obj || [];\n if (start === null) {\n start = (step < 0) ? (obj.length - 1) : 0;\n }\n if (stop === null) {\n stop = (step < 0) ? -1 : obj.length;\n } else if (stop < 0) {\n stop += obj.length;\n }\n\n if (start < 0) {\n start += obj.length;\n }\n\n const results = [];\n\n for (let i = start; ; i += step) {\n if (i < 0 || i > obj.length) {\n break;\n }\n if (step > 0 && i >= stop) {\n break;\n }\n if (step < 0 && i <= stop) {\n break;\n }\n results.push(runtime.memberLookup(obj, i));\n }\n return results;\n }\n\n function hasOwnProp(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n }\n\n const ARRAY_MEMBERS = {\n pop(index) {\n if (index === undefined) {\n return this.pop();\n }\n if (index >= this.length || index < 0) {\n throw new Error('KeyError');\n }\n return this.splice(index, 1);\n },\n append(element) {\n return this.push(element);\n },\n remove(element) {\n for (let i = 0; i < this.length; i++) {\n if (this[i] === element) {\n return this.splice(i, 1);\n }\n }\n throw new Error('ValueError');\n },\n count(element) {\n var count = 0;\n for (let i = 0; i < this.length; i++) {\n if (this[i] === element) {\n count++;\n }\n }\n return count;\n },\n index(element) {\n var i;\n if ((i = this.indexOf(element)) === -1) {\n throw new Error('ValueError');\n }\n return i;\n },\n find(element) {\n return this.indexOf(element);\n },\n insert(index, elem) {\n return this.splice(index, 0, elem);\n }\n };\n const OBJECT_MEMBERS = {\n items() {\n return lib._entries(this);\n },\n values() {\n return lib._values(this);\n },\n keys() {\n return lib.keys(this);\n },\n get(key, def) {\n var output = this[key];\n if (output === undefined) {\n output = def;\n }\n return output;\n },\n has_key(key) {\n return hasOwnProp(this, key);\n },\n pop(key, def) {\n var output = this[key];\n if (output === undefined && def !== undefined) {\n output = def;\n } else if (output === undefined) {\n throw new Error('KeyError');\n } else {\n delete this[key];\n }\n return output;\n },\n popitem() {\n const keys = lib.keys(this);\n if (!keys.length) {\n throw new Error('KeyError');\n }\n const k = keys[0];\n const val = this[k];\n delete this[k];\n return [k, val];\n },\n setdefault(key, def = null) {\n if (!(key in this)) {\n this[key] = def;\n }\n return this[key];\n },\n update(kwargs) {\n lib._assign(this, kwargs);\n return null; // Always returns None\n }\n };\n OBJECT_MEMBERS.iteritems = OBJECT_MEMBERS.items;\n OBJECT_MEMBERS.itervalues = OBJECT_MEMBERS.values;\n OBJECT_MEMBERS.iterkeys = OBJECT_MEMBERS.keys;\n\n runtime.memberLookup = function memberLookup(obj, val, autoescape) {\n if (arguments.length === 4) {\n return sliceLookup.apply(this, arguments);\n }\n obj = obj || {};\n\n // If the object is an object, return any of the methods that Python would\n // otherwise provide.\n if (lib.isArray(obj) && hasOwnProp(ARRAY_MEMBERS, val)) {\n return ARRAY_MEMBERS[val].bind(obj);\n }\n if (lib.isObject(obj) && hasOwnProp(OBJECT_MEMBERS, val)) {\n return OBJECT_MEMBERS[val].bind(obj);\n }\n\n return orig_memberLookup.apply(this, arguments);\n };\n\n return uninstall;\n}\n\nmodule.exports = installCompat;\n\n\n\n// WEBPACK FOOTER //\n// ./nunjucks/src/jinja-compat.js"],"sourceRoot":""}