PageSourceSearch

https://www.intelligent-imaging.com/wp-content/plugins/eventON/assets/js/lib/handlebars.js?ver=4.9.6

js intelligent-imaging.com collected 2026-09-25 23:42:21 UTC 179,306 bytes, 5,210 lines download raw bytes

vendor: 7,859 bytes, lines 1-281
1/**!
2
3 @license
4 handlebars v4.7.7
5
6Copyright (C) 2011-2019 by Yehuda Katz
7
8Permission is hereby granted, free of charge, to any person obtaining a copy
9of this software and associated documentation files (the "Software"), to deal
10in the Software without restriction, including without limitation the rights
11to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12copies of the Software, and to permit persons to whom the Software is
13furnished to do so, subject to the following conditions:
14
15The above copyright notice and this permission notice shall be included in
16all copies or substantial portions of the Software.
17
18THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24THE SOFTWARE.
25
26*/
27(function webpackUniversalModuleDefinition(root, factory) {
28	if(typeof exports === 'object' && typeof module === 'object')
29		module.exports = factory();
30	else if(typeof define === 'function' && define.amd)
31		define([], factory);
32	else if(typeof exports === 'object')
33		exports["Handlebars"] = factory();
34	else
35		root["Handlebars"] = factory();
36})(this, function() {
37return /******/ (function(modules) { // webpackBootstrap
38/******/ 	// The module cache
39/******/ 	var installedModules = {};
40
41/******/ 	// The require function
42/******/ 	function __webpack_require__(moduleId) {
43
44/******/ 		// Check if module is in cache
45/******/ 		if(installedModules[moduleId])
46/******/ 			return installedModules[moduleId].exports;
47
48/******/ 		// Create a new module (and put it into the cache)
49/******/ 		var module = installedModules[moduleId] = {
50/******/ 			exports: {},
51/******/ 			id: moduleId,
52/******/ 			loaded: false
53/******/ 		};
54
55/******/ 		// Execute the module function
56/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
57
58/******/ 		// Flag the module as loaded
59/******/ 		module.loaded = true;
60
61/******/ 		// Return the exports of the module
62/******/ 		return module.exports;
63/******/ 	}
64
65
66/******/ 	// expose the modules object (__webpack_modules__)
67/******/ 	__webpack_require__.m = modules;
68
69/******/ 	// expose the module cache
70/******/ 	__webpack_require__.c = installedModules;
71
72/******/ 	// __webpack_public_path__
73/******/ 	__webpack_require__.p = "";
74
75/******/ 	// Load entry module and return exports
76/******/ 	return __webpack_require__(0);
77/******/ })
78/************************************************************************/
79/******/ ([
80/* 0 */
81/***/ (function(module, exports, __webpack_require__) {
82
83	'use strict';
84
85	var _interopRequireDefault = __webpack_require__(1)['default'];
86
87	exports.__esModule = true;
88
89	var _handlebarsRuntime = __webpack_require__(2);
90
91	var _handlebarsRuntime2 = _interopRequireDefault(_handlebarsRuntime);
92
93	// Compiler imports
94
95	var _handlebarsCompilerAst = __webpack_require__(45);
96
97	var _handlebarsCompilerAst2 = _interopRequireDefault(_handlebarsCompilerAst);
98
99	var _handlebarsCompilerBase = __webpack_require__(46);
100
101	var _handlebarsCompilerCompiler = __webpack_require__(51);
102
103	var _handlebarsCompilerJavascriptCompiler = __webpack_require__(52);
104
105	var _handlebarsCompilerJavascriptCompiler2 = _interopRequireDefault(_handlebarsCompilerJavascriptCompiler);
106
107	var _handlebarsCompilerVisitor = __webpack_require__(49);
108
109	var _handlebarsCompilerVisitor2 = _interopRequireDefault(_handlebarsCompilerVisitor);
110
111	var _handlebarsNoConflict = __webpack_require__(44);
112
113	var _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);
114
115	var _create = _handlebarsRuntime2['default'].create;
116	function create() {
117	  var hb = _create();
118
119	  hb.compile = function (input, options) {
120	    return _handlebarsCompilerCompiler.compile(input, options, hb);
121	  };
122	  hb.precompile = function (input, options) {
123	    return _handlebarsCompilerCompiler.precompile(input, options, hb);
124	  };
125
126	  hb.AST = _handlebarsCompilerAst2['default'];
127	  hb.Compiler = _handlebarsCompilerCompiler.Compiler;
128	  hb.JavaScriptCompiler = _handlebarsCompilerJavascriptCompiler2['default'];
129	  hb.Parser = _handlebarsCompilerBase.parser;
130	  hb.parse = _handlebarsCompilerBase.parse;
131	  hb.parseWithoutProcessing = _handlebarsCompilerBase.parseWithoutProcessing;
132
133	  return hb;
134	}
135
136	var inst = create();
137	inst.create = create;
138
139	_handlebarsNoConflict2['default'](inst);
140
141	inst.Visitor = _handlebarsCompilerVisitor2['default'];
142
143	inst['default'] = inst;
144
145	exports['default'] = inst;
146	module.exports = exports['default'];
147
148/***/ }),
149/* 1 */
150/***/ (function(module, exports) {
151
152	"use strict";
153
154	exports["default"] = function (obj) {
155	  return obj && obj.__esModule ? obj : {
156	    "default": obj
157	  };
158	};
159
160	exports.__esModule = true;
161
162/***/ }),
163/* 2 */
164/***/ (function(module, exports, __webpack_require__) {
165
166	'use strict';
167
168	var _interopRequireWildcard = __webpack_require__(3)['default'];
169
170	var _interopRequireDefault = __webpack_require__(1)['default'];
171
172	exports.__esModule = true;
173
174	var _handlebarsBase = __webpack_require__(4);
175
176	var base = _interopRequireWildcard(_handlebarsBase);
177
178	// Each of these augment the Handlebars object. No need to setup here.
179	// (This is done to easily share code between commonjs and browse envs)
180
181	var _handlebarsSafeString = __webpack_require__(37);
182
183	var _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString);
184
185	var _handlebarsException = __webpack_require__(6);
186
187	var _handlebarsException2 = _interopRequireDefault(_handlebarsException);
188
189	var _handlebarsUtils = __webpack_require__(5);
190
191	var Utils = _interopRequireWildcard(_handlebarsUtils);
192
193	var _handlebarsRuntime = __webpack_require__(38);
194
195	var runtime = _interopRequireWildcard(_handlebarsRuntime);
196
197	var _handlebarsNoConflict = __webpack_require__(44);
198
199	var _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);
200
201	// For compatibility and usage outside of module systems, make the Handlebars object a namespace
202	function create() {
203	  var hb = new base.HandlebarsEnvironment();
204
205	  Utils.extend(hb, base);
206	  hb.SafeString = _handlebarsSafeString2['default'];
207	  hb.Exception = _handlebarsException2['default'];
208	  hb.Utils = Utils;
209	  hb.escapeExpression = Utils.escapeExpression;
210
211	  hb.VM = runtime;
212	  hb.template = function (spec) {
213	    return runtime.template(spec, hb);
214	  };
215
216	  return hb;
217	}
218
219	var inst = create();
220	inst.create = create;
221
222	_handlebarsNoConflict2['default'](inst);
223
224	inst['default'] = inst;
225
226	exports['default'] = inst;
227	module.exports = exports['default'];
228
229/***/ }),
230/* 3 */
231/***/ (function(module, exports) {
232
233	"use strict";
234
235	exports["default"] = function (obj) {
236	  if (obj && obj.__esModule) {
237	    return obj;
238	  } else {
239	    var newObj = {};
240
241	    if (obj != null) {
242	      for (var key in obj) {
243	        if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];
244	      }
245	    }
246
247	    newObj["default"] = obj;
248	    return newObj;
249	  }
250	};
251
252	exports.__esModule = true;
253
254/***/ }),
255/* 4 */
256/***/ (function(module, exports, __webpack_require__) {
257
258	'use strict';
259
260	var _interopRequireDefault = __webpack_require__(1)['default'];
261
262	exports.__esModule = true;
263	exports.HandlebarsEnvironment = HandlebarsEnvironment;
264
265	var _utils = __webpack_require__(5);
266
267	var _exception = __webpack_require__(6);
268
269	var _exception2 = _interopRequireDefault(_exception);
270
271	var _helpers = __webpack_require__(10);
272
273	var _decorators = __webpack_require__(30);
274
275	var _logger = __webpack_require__(32);
276
277	var _logger2 = _interopRequireDefault(_logger);
278
279	var _internalProtoAccess = __webpack_require__(33);
280
281	var VERSION = '4.7.7
vendor: 9,204 bytes, lines 281-624
281';
282	exports.VERSION = VERSION;
283	var COMPILER_REVISION = 8;
284	exports.COMPILER_REVISION = COMPILER_REVISION;
285	var LAST_COMPATIBLE_COMPILER_REVISION = 7;
286
287	exports.LAST_COMPATIBLE_COMPILER_REVISION = LAST_COMPATIBLE_COMPILER_REVISION;
288	var REVISION_CHANGES = {
289	  1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it
290	  2: '== 1.0.0-rc.3',
291	  3: '== 1.0.0-rc.4',
292	  4: '== 1.x.x',
293	  5: '== 2.0.0-alpha.x',
294	  6: '>= 2.0.0-beta.1',
295	  7: '>= 4.0.0 <4.3.0',
296	  8: '>= 4.3.0'
297	};
298
299	exports.REVISION_CHANGES = REVISION_CHANGES;
300	var objectType = '[object Object]';
301
302	function HandlebarsEnvironment(helpers, partials, decorators) {
303	  this.helpers = helpers || {};
304	  this.partials = partials || {};
305	  this.decorators = decorators || {};
306
307	  _helpers.registerDefaultHelpers(this);
308	  _decorators.registerDefaultDecorators(this);
309	}
310
311	HandlebarsEnvironment.prototype = {
312	  constructor: HandlebarsEnvironment,
313
314	  logger: _logger2['default'],
315	  log: _logger2['default'].log,
316
317	  registerHelper: function registerHelper(name, fn) {
318	    if (_utils.toString.call(name) === objectType) {
319	      if (fn) {
320	        throw new _exception2['default']('Arg not supported with multiple helpers');
321	      }
322	      _utils.extend(this.helpers, name);
323	    } else {
324	      this.helpers[name] = fn;
325	    }
326	  },
327	  unregisterHelper: function unregisterHelper(name) {
328	    delete this.helpers[name];
329	  },
330
331	  registerPartial: function registerPartial(name, partial) {
332	    if (_utils.toString.call(name) === objectType) {
333	      _utils.extend(this.partials, name);
334	    } else {
335	      if (typeof partial === 'undefined') {
336	        throw new _exception2['default']('Attempting to register a partial called "' + name + '" as undefined');
337	      }
338	      this.partials[name] = partial;
339	    }
340	  },
341	  unregisterPartial: function unregisterPartial(name) {
342	    delete this.partials[name];
343	  },
344
345	  registerDecorator: function registerDecorator(name, fn) {
346	    if (_utils.toString.call(name) === objectType) {
347	      if (fn) {
348	        throw new _exception2['default']('Arg not supported with multiple decorators');
349	      }
350	      _utils.extend(this.decorators, name);
351	    } else {
352	      this.decorators[name] = fn;
353	    }
354	  },
355	  unregisterDecorator: function unregisterDecorator(name) {
356	    delete this.decorators[name];
357	  },
358	  /**
359	   * Reset the memory of illegal property accesses that have already been logged.
360	   * @deprecated should only be used in handlebars test-cases
361	   */
362	  resetLoggedPropertyAccesses: function resetLoggedPropertyAccesses() {
363	    _internalProtoAccess.resetLoggedProperties();
364	  }
365	};
366
367	var log = _logger2['default'].log;
368
369	exports.log = log;
370	exports.createFrame = _utils.createFrame;
371	exports.logger = _logger2['default'];
372
373/***/ }),
374/* 5 */
375/***/ (function(module, exports) {
376
377	'use strict';
378
379	exports.__esModule = true;
380	exports.extend = extend;
381	exports.indexOf = indexOf;
382	exports.escapeExpression = escapeExpression;
383	exports.isEmpty = isEmpty;
384	exports.createFrame = createFrame;
385	exports.blockParams = blockParams;
386	exports.appendContextPath = appendContextPath;
387	var escape = {
388	  '&': '&amp;',
389	  '<': '&lt;',
390	  '>': '&gt;',
391	  '"': '&quot;',
392	  "'": '&#x27;',
393	  '`': '&#x60;',
394	  '=': '&#x3D;'
395	};
396
397	var badChars = /[&<>"'`=]/g,
398	    possible = /[&<>"'`=]/;
399
400	function escapeChar(chr) {
401	  return escape[chr];
402	}
403
404	function extend(obj /* , ...source */) {
405	  for (var i = 1; i < arguments.length; i++) {
406	    for (var key in arguments[i]) {
407	      if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {
408	        obj[key] = arguments[i][key];
409	      }
410	    }
411	  }
412
413	  return obj;
414	}
415
416	var toString = Object.prototype.toString;
417
418	exports.toString = toString;
419	// Sourced from lodash
420	// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt
421	/* eslint-disable func-style */
422	var isFunction = function isFunction(value) {
423	  return typeof value === 'function';
424	};
425	// fallback for older versions of Chrome and Safari
426	/* istanbul ignore next */
427	if (isFunction(/x/)) {
428	  exports.isFunction = isFunction = function (value) {
429	    return typeof value === 'function' && toString.call(value) === '[object Function]';
430	  };
431	}
432	exports.isFunction = isFunction;
433
434	/* eslint-enable func-style */
435
436	/* istanbul ignore next */
437	var isArray = Array.isArray || function (value) {
438	  return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;
439	};
440
441	exports.isArray = isArray;
442	// Older IE versions do not directly support indexOf so we must implement our own, sadly.
443
444	function indexOf(array, value) {
445	  for (var i = 0, len = array.length; i < len; i++) {
446	    if (array[i] === value) {
447	      return i;
448	    }
449	  }
450	  return -1;
451	}
452
453	function escapeExpression(string) {
454	  if (typeof string !== 'string') {
455	    // don't escape SafeStrings, since they're already safe
456	    if (string && string.toHTML) {
457	      return string.toHTML();
458	    } else if (string == null) {
459	      return '';
460	    } else if (!string) {
461	      return string + '';
462	    }
463
464	    // Force a string conversion as this will be done by the append regardless and
465	    // the regex test will do this transparently behind the scenes, causing issues if
466	    // an object's to string has escaped characters in it.
467	    string = '' + string;
468	  }
469
470	  if (!possible.test(string)) {
471	    return string;
472	  }
473	  return string.replace(badChars, escapeChar);
474	}
475
476	function isEmpty(value) {
477	  if (!value && value !== 0) {
478	    return true;
479	  } else if (isArray(value) && value.length === 0) {
480	    return true;
481	  } else {
482	    return false;
483	  }
484	}
485
486	function createFrame(object) {
487	  var frame = extend({}, object);
488	  frame._parent = object;
489	  return frame;
490	}
491
492	function blockParams(params, ids) {
493	  params.path = ids;
494	  return params;
495	}
496
497	function appendContextPath(contextPath, id) {
498	  return (contextPath ? contextPath + '.' : '') + id;
499	}
500
501/***/ }),
502/* 6 */
503/***/ (function(module, exports, __webpack_require__) {
504
505	'use strict';
506
507	var _Object$defineProperty = __webpack_require__(7)['default'];
508
509	exports.__esModule = true;
510	var errorProps = ['description', 'fileName', 'lineNumber', 'endLineNumber', 'message', 'name', 'number', 'stack'];
511
512	function Exception(message, node) {
513	  var loc = node && node.loc,
514	      line = undefined,
515	      endLineNumber = undefined,
516	      column = undefined,
517	      endColumn = undefined;
518
519	  if (loc) {
520	    line = loc.start.line;
521	    endLineNumber = loc.end.line;
522	    column = loc.start.column;
523	    endColumn = loc.end.column;
524
525	    message += ' - ' + line + ':' + column;
526	  }
527
528	  var tmp = Error.prototype.constructor.call(this, message);
529
530	  // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.
531	  for (var idx = 0; idx < errorProps.length; idx++) {
532	    this[errorProps[idx]] = tmp[errorProps[idx]];
533	  }
534
535	  /* istanbul ignore else */
536	  if (Error.captureStackTrace) {
537	    Error.captureStackTrace(this, Exception);
538	  }
539
540	  try {
541	    if (loc) {
542	      this.lineNumber = line;
543	      this.endLineNumber = endLineNumber;
544
545	      // Work around issue under safari where we can't directly set the column value
546	      /* istanbul ignore next */
547	      if (_Object$defineProperty) {
548	        Object.defineProperty(this, 'column', {
549	          value: column,
550	          enumerable: true
551	        });
552	        Object.defineProperty(this, 'endColumn', {
553	          value: endColumn,
554	          enumerable: true
555	        });
556	      } else {
557	        this.column = column;
558	        this.endColumn = endColumn;
559	      }
560	    }
561	  } catch (nop) {
562	    /* Ignore if the browser is very particular */
563	  }
564	}
565
566	Exception.prototype = new Error();
567
568	exports['default'] = Exception;
569	module.exports = exports['default'];
570
571/***/ }),
572/* 7 */
573/***/ (function(module, exports, __webpack_require__) {
574
575	module.exports = { "default": __webpack_require__(8), __esModule: true };
576
577/***/ }),
578/* 8 */
579/***/ (function(module, exports, __webpack_require__) {
580
581	var $ = __webpack_require__(9);
582	module.exports = function defineProperty(it, key, desc){
583	  return $.setDesc(it, key, desc);
584	};
585
586/***/ }),
587/* 9 */
588/***/ (function(module, exports) {
589
590	var $Object = Object;
591	module.exports = {
592	  create:     $Object.create,
593	  getProto:   $Object.getPrototypeOf,
594	  isEnum:     {}.propertyIsEnumerable,
595	  getDesc:    $Object.getOwnPropertyDescriptor,
596	  setDesc:    $Object.defineProperty,
597	  setDescs:   $Object.defineProperties,
598	  getKeys:    $Object.keys,
599	  getNames:   $Object.getOwnPropertyNames,
600	  getSymbols: $Object.getOwnPropertySymbols,
601	  each:       [].forEach
602	};
603
604/***/ }),
605/* 10 */
606/***/ (function(module, exports, __webpack_require__) {
607
608	'use strict';
609
610	var _interopRequireDefault = __webpack_require__(1)['default'];
611
612	exports.__esModule = true;
613	exports.registerDefaultHelpers = registerDefaultHelpers;
614	exports.moveHelperToHooks = moveHelperToHooks;
615
616	var _helpersBlockHelperMissing = __webpack_require__(11);
617
618	var _helpersBlockHelperMissing2 = _interopRequireDefault(_helpersBlockHelperMissing);
619
620	var _helpersEach = __webpack_require__(12);
621
622	var _helpersEach2 = _interopRequireDefault(_helpersEach);
623
624	var _helpersHelperMissing = __webpack_require__(
vendor: 12,309 bytes, lines 624-1057
62425);
625
626	var _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing);
627
628	var _helpersIf = __webpack_require__(26);
629
630	var _helpersIf2 = _interopRequireDefault(_helpersIf);
631
632	var _helpersLog = __webpack_require__(27);
633
634	var _helpersLog2 = _interopRequireDefault(_helpersLog);
635
636	var _helpersLookup = __webpack_require__(28);
637
638	var _helpersLookup2 = _interopRequireDefault(_helpersLookup);
639
640	var _helpersWith = __webpack_require__(29);
641
642	var _helpersWith2 = _interopRequireDefault(_helpersWith);
643
644	function registerDefaultHelpers(instance) {
645	  _helpersBlockHelperMissing2['default'](instance);
646	  _helpersEach2['default'](instance);
647	  _helpersHelperMissing2['default'](instance);
648	  _helpersIf2['default'](instance);
649	  _helpersLog2['default'](instance);
650	  _helpersLookup2['default'](instance);
651	  _helpersWith2['default'](instance);
652	}
653
654	function moveHelperToHooks(instance, helperName, keepHelper) {
655	  if (instance.helpers[helperName]) {
656	    instance.hooks[helperName] = instance.helpers[helperName];
657	    if (!keepHelper) {
658	      delete instance.helpers[helperName];
659	    }
660	  }
661	}
662
663/***/ }),
664/* 11 */
665/***/ (function(module, exports, __webpack_require__) {
666
667	'use strict';
668
669	exports.__esModule = true;
670
671	var _utils = __webpack_require__(5);
672
673	exports['default'] = function (instance) {
674	  instance.registerHelper('blockHelperMissing', function (context, options) {
675	    var inverse = options.inverse,
676	        fn = options.fn;
677
678	    if (context === true) {
679	      return fn(this);
680	    } else if (context === false || context == null) {
681	      return inverse(this);
682	    } else if (_utils.isArray(context)) {
683	      if (context.length > 0) {
684	        if (options.ids) {
685	          options.ids = [options.name];
686	        }
687
688	        return instance.helpers.each(context, options);
689	      } else {
690	        return inverse(this);
691	      }
692	    } else {
693	      if (options.data && options.ids) {
694	        var data = _utils.createFrame(options.data);
695	        data.contextPath = _utils.appendContextPath(options.data.contextPath, options.name);
696	        options = { data: data };
697	      }
698
699	      return fn(context, options);
700	    }
701	  });
702	};
703
704	module.exports = exports['default'];
705
706/***/ }),
707/* 12 */
708/***/ (function(module, exports, __webpack_require__) {
709
710	/* WEBPACK VAR INJECTION */(function(global) {'use strict';
711
712	var _Object$keys = __webpack_require__(13)['default'];
713
714	var _interopRequireDefault = __webpack_require__(1)['default'];
715
716	exports.__esModule = true;
717
718	var _utils = __webpack_require__(5);
719
720	var _exception = __webpack_require__(6);
721
722	var _exception2 = _interopRequireDefault(_exception);
723
724	exports['default'] = function (instance) {
725	  instance.registerHelper('each', function (context, options) {
726	    if (!options) {
727	      throw new _exception2['default']('Must pass iterator to #each');
728	    }
729
730	    var fn = options.fn,
731	        inverse = options.inverse,
732	        i = 0,
733	        ret = '',
734	        data = undefined,
735	        contextPath = undefined;
736
737	    if (options.data && options.ids) {
738	      contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.';
739	    }
740
741	    if (_utils.isFunction(context)) {
742	      context = context.call(this);
743	    }
744
745	    if (options.data) {
746	      data = _utils.createFrame(options.data);
747	    }
748
749	    function execIteration(field, index, last) {
750	      if (data) {
751	        data.key = field;
752	        data.index = index;
753	        data.first = index === 0;
754	        data.last = !!last;
755
756	        if (contextPath) {
757	          data.contextPath = contextPath + field;
758	        }
759	      }
760
761	      ret = ret + fn(context[field], {
762	        data: data,
763	        blockParams: _utils.blockParams([context[field], field], [contextPath + field, null])
764	      });
765	    }
766
767	    if (context && typeof context === 'object') {
768	      if (_utils.isArray(context)) {
769	        for (var j = context.length; i < j; i++) {
770	          if (i in context) {
771	            execIteration(i, i, i === context.length - 1);
772	          }
773	        }
774	      } else if (global.Symbol && context[global.Symbol.iterator]) {
775	        var newContext = [];
776	        var iterator = context[global.Symbol.iterator]();
777	        for (var it = iterator.next(); !it.done; it = iterator.next()) {
778	          newContext.push(it.value);
779	        }
780	        context = newContext;
781	        for (var j = context.length; i < j; i++) {
782	          execIteration(i, i, i === context.length - 1);
783	        }
784	      } else {
785	        (function () {
786	          var priorKey = undefined;
787
788	          _Object$keys(context).forEach(function (key) {
789	            // We're running the iterations one step out of sync so we can detect
790	            // the last iteration without have to scan the object twice and create
791	            // an itermediate keys array.
792	            if (priorKey !== undefined) {
793	              execIteration(priorKey, i - 1);
794	            }
795	            priorKey = key;
796	            i++;
797	          });
798	          if (priorKey !== undefined) {
799	            execIteration(priorKey, i - 1, true);
800	          }
801	        })();
802	      }
803	    }
804
805	    if (i === 0) {
806	      ret = inverse(this);
807	    }
808
809	    return ret;
810	  });
811	};
812
813	module.exports = exports['default'];
814	/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
815
816/***/ }),
817/* 13 */
818/***/ (function(module, exports, __webpack_require__) {
819
820	module.exports = { "default": __webpack_require__(14), __esModule: true };
821
822/***/ }),
823/* 14 */
824/***/ (function(module, exports, __webpack_require__) {
825
826	__webpack_require__(15);
827	module.exports = __webpack_require__(21).Object.keys;
828
829/***/ }),
830/* 15 */
831/***/ (function(module, exports, __webpack_require__) {
832
833	// 19.1.2.14 Object.keys(O)
834	var toObject = __webpack_require__(16);
835
836	__webpack_require__(18)('keys', function($keys){
837	  return function keys(it){
838	    return $keys(toObject(it));
839	  };
840	});
841
842/***/ }),
843/* 16 */
844/***/ (function(module, exports, __webpack_require__) {
845
846	// 7.1.13 ToObject(argument)
847	var defined = __webpack_require__(17);
848	module.exports = function(it){
849	  return Object(defined(it));
850	};
851
852/***/ }),
853/* 17 */
854/***/ (function(module, exports) {
855
856	// 7.2.1 RequireObjectCoercible(argument)
857	module.exports = function(it){
858	  if(it == undefined)throw TypeError("Can't call method on  " + it);
859	  return it;
860	};
861
862/***/ }),
863/* 18 */
864/***/ (function(module, exports, __webpack_require__) {
865
866	// most Object methods by ES6 should accept primitives
867	var $export = __webpack_require__(19)
868	  , core    = __webpack_require__(21)
869	  , fails   = __webpack_require__(24);
870	module.exports = function(KEY, exec){
871	  var fn  = (core.Object || {})[KEY] || Object[KEY]
872	    , exp = {};
873	  exp[KEY] = exec(fn);
874	  $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp);
875	};
876
877/***/ }),
878/* 19 */
879/***/ (function(module, exports, __webpack_require__) {
880
881	var global    = __webpack_require__(20)
882	  , core      = __webpack_require__(21)
883	  , ctx       = __webpack_require__(22)
884	  , PROTOTYPE = 'prototype';
885
886	var $export = function(type, name, source){
887	  var IS_FORCED = type & $export.F
888	    , IS_GLOBAL = type & $export.G
889	    , IS_STATIC = type & $export.S
890	    , IS_PROTO  = type & $export.P
891	    , IS_BIND   = type & $export.B
892	    , IS_WRAP   = type & $export.W
893	    , exports   = IS_GLOBAL ? core : core[name] || (core[name] = {})
894	    , target    = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]
895	    , key, own, out;
896	  if(IS_GLOBAL)source = name;
897	  for(key in source){
898	    // contains in native
899	    own = !IS_FORCED && target && key in target;
900	    if(own && key in exports)continue;
901	    // export native or passed
902	    out = own ? target[key] : source[key];
903	    // prevent global pollution for namespaces
904	    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
905	    // bind timers to global for call from export context
906	    : IS_BIND && own ? ctx(out, global)
907	    // wrap global constructors for prevent change them in library
908	    : IS_WRAP && target[key] == out ? (function(C){
909	      var F = function(param){
910	        return this instanceof C ? new C(param) : C(param);
911	      };
912	      F[PROTOTYPE] = C[PROTOTYPE];
913	      return F;
914	    // make static versions for prototype methods
915	    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
916	    if(IS_PROTO)(exports[PROTOTYPE] || (exports[PROTOTYPE] = {}))[key] = out;
917	  }
918	};
919	// type bitmap
920	$export.F = 1;  // forced
921	$export.G = 2;  // global
922	$export.S = 4;  // static
923	$export.P = 8;  // proto
924	$export.B = 16; // bind
925	$export.W = 32; // wrap
926	module.exports = $export;
927
928/***/ }),
929/* 20 */
930/***/ (function(module, exports) {
931
932	// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
933	var global = module.exports = typeof window != 'undefined' && window.Math == Math
934	  ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();
935	if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef
936
937/***/ }),
938/* 21 */
939/***/ (function(module, exports) {
940
941	var core = module.exports = {version: '1.2.6'};
942	if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef
943
944/***/ }),
945/* 22 */
946/***/ (function(module, exports, __webpack_require__) {
947
948	// optional / simple context binding
949	var aFunction = __webpack_require__(23);
950	module.exports = function(fn, that, length){
951	  aFunction(fn);
952	  if(that === undefined)return fn;
953	  switch(length){
954	    case 1: return function(a){
955	      return fn.call(that, a);
956	    };
957	    case 2: return function(a, b){
958	      return fn.call(that, a, b);
959	    };
960	    case 3: return function(a, b, c){
961	      return fn.call(that, a, b, c);
962	    };
963	  }
964	  return function(/* ...args */){
965	    return fn.apply(that, arguments);
966	  };
967	};
968
969/***/ }),
970/* 23 */
971/***/ (function(module, exports) {
972
973	module.exports = function(it){
974	  if(typeof it != 'function')throw TypeError(it + ' is not a function!');
975	  return it;
976	};
977
978/***/ }),
979/* 24 */
980/***/ (function(module, exports) {
981
982	module.exports = function(exec){
983	  try {
984	    return !!exec();
985	  } catch(e){
986	    return true;
987	  }
988	};
989
990/***/ }),
991/* 25 */
992/***/ (function(module, exports, __webpack_require__) {
993
994	'use strict';
995
996	var _interopRequireDefault = __webpack_require__(1)['default'];
997
998	exports.__esModule = true;
999
1000	var _exception = __webpack_require__(6);
1001
1002	var _exception2 = _interopRequireDefault(_exception);
1003
1004	exports['default'] = function (instance) {
1005	  instance.registerHelper('helperMissing', function () /* [args, ]options */{
1006	    if (arguments.length === 1) {
1007	      // A missing field in a {{foo}} construct.
1008	      return undefined;
1009	    } else {
1010	      // Someone is actually trying to call something, blow up.
1011	      throw new _exception2['default']('Missing helper: "' + arguments[arguments.length - 1].name + '"');
1012	    }
1013	  });
1014	};
1015
1016	module.exports = exports['default'];
1017
1018/***/ }),
1019/* 26 */
1020/***/ (function(module, exports, __webpack_require__) {
1021
1022	'use strict';
1023
1024	var _interopRequireDefault = __webpack_require__(1)['default'];
1025
1026	exports.__esModule = true;
1027
1028	var _utils = __webpack_require__(5);
1029
1030	var _exception = __webpack_require__(6);
1031
1032	var _exception2 = _interopRequireDefault(_exception);
1033
1034	exports['default'] = function (instance) {
1035	  instance.registerHelper('if', function (conditional, options) {
1036	    if (arguments.length != 2) {
1037	      throw new _exception2['default']('#if requires exactly one argument');
1038	    }
1039	    if (_utils.isFunction(conditional)) {
1040	      conditional = conditional.call(this);
1041	    }
1042
1043	    // Default behavior is to render the positive path if the value is truthy and not empty.
1044	    // The `includeZero` option may be set to treat the condtional as purely not empty based on the
1045	    // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.
1046	    if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) {
1047	      return options.inverse(this);
1048	    } else {
1049	      return options.fn(this);
1050	    }
1051	  });
1052
1053	  instance.registerHelper('unless', function (conditional, options) {
1054	    if (arguments.length != 2) {
1055	      throw new _exception2['default']('#unless requires exactly one argument');
1056	    }
1057	    return instance.helpers['if'].call(this, conditional, {
vendor: 17,685 bytes, lines 1057-1642
1057
1058	      fn: options.inverse,
1059	      inverse: options.fn,
1060	      hash: options.hash
1061	    });
1062	  });
1063	};
1064
1065	module.exports = exports['default'];
1066
1067/***/ }),
1068/* 27 */
1069/***/ (function(module, exports) {
1070
1071	'use strict';
1072
1073	exports.__esModule = true;
1074
1075	exports['default'] = function (instance) {
1076	  instance.registerHelper('log', function () /* message, options */{
1077	    var args = [undefined],
1078	        options = arguments[arguments.length - 1];
1079	    for (var i = 0; i < arguments.length - 1; i++) {
1080	      args.push(arguments[i]);
1081	    }
1082
1083	    var level = 1;
1084	    if (options.hash.level != null) {
1085	      level = options.hash.level;
1086	    } else if (options.data && options.data.level != null) {
1087	      level = options.data.level;
1088	    }
1089	    args[0] = level;
1090
1091	    instance.log.apply(instance, args);
1092	  });
1093	};
1094
1095	module.exports = exports['default'];
1096
1097/***/ }),
1098/* 28 */
1099/***/ (function(module, exports) {
1100
1101	'use strict';
1102
1103	exports.__esModule = true;
1104
1105	exports['default'] = function (instance) {
1106	  instance.registerHelper('lookup', function (obj, field, options) {
1107	    if (!obj) {
1108	      // Note for 5.0: Change to "obj == null" in 5.0
1109	      return obj;
1110	    }
1111	    return options.lookupProperty(obj, field);
1112	  });
1113	};
1114
1115	module.exports = exports['default'];
1116
1117/***/ }),
1118/* 29 */
1119/***/ (function(module, exports, __webpack_require__) {
1120
1121	'use strict';
1122
1123	var _interopRequireDefault = __webpack_require__(1)['default'];
1124
1125	exports.__esModule = true;
1126
1127	var _utils = __webpack_require__(5);
1128
1129	var _exception = __webpack_require__(6);
1130
1131	var _exception2 = _interopRequireDefault(_exception);
1132
1133	exports['default'] = function (instance) {
1134	  instance.registerHelper('with', function (context, options) {
1135	    if (arguments.length != 2) {
1136	      throw new _exception2['default']('#with requires exactly one argument');
1137	    }
1138	    if (_utils.isFunction(context)) {
1139	      context = context.call(this);
1140	    }
1141
1142	    var fn = options.fn;
1143
1144	    if (!_utils.isEmpty(context)) {
1145	      var data = options.data;
1146	      if (options.data && options.ids) {
1147	        data = _utils.createFrame(options.data);
1148	        data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]);
1149	      }
1150
1151	      return fn(context, {
1152	        data: data,
1153	        blockParams: _utils.blockParams([context], [data && data.contextPath])
1154	      });
1155	    } else {
1156	      return options.inverse(this);
1157	    }
1158	  });
1159	};
1160
1161	module.exports = exports['default'];
1162
1163/***/ }),
1164/* 30 */
1165/***/ (function(module, exports, __webpack_require__) {
1166
1167	'use strict';
1168
1169	var _interopRequireDefault = __webpack_require__(1)['default'];
1170
1171	exports.__esModule = true;
1172	exports.registerDefaultDecorators = registerDefaultDecorators;
1173
1174	var _decoratorsInline = __webpack_require__(31);
1175
1176	var _decoratorsInline2 = _interopRequireDefault(_decoratorsInline);
1177
1178	function registerDefaultDecorators(instance) {
1179	  _decoratorsInline2['default'](instance);
1180	}
1181
1182/***/ }),
1183/* 31 */
1184/***/ (function(module, exports, __webpack_require__) {
1185
1186	'use strict';
1187
1188	exports.__esModule = true;
1189
1190	var _utils = __webpack_require__(5);
1191
1192	exports['default'] = function (instance) {
1193	  instance.registerDecorator('inline', function (fn, props, container, options) {
1194	    var ret = fn;
1195	    if (!props.partials) {
1196	      props.partials = {};
1197	      ret = function (context, options) {
1198	        // Create a new partials stack frame prior to exec.
1199	        var original = container.partials;
1200	        container.partials = _utils.extend({}, original, props.partials);
1201	        var ret = fn(context, options);
1202	        container.partials = original;
1203	        return ret;
1204	      };
1205	    }
1206
1207	    props.partials[options.args[0]] = options.fn;
1208
1209	    return ret;
1210	  });
1211	};
1212
1213	module.exports = exports['default'];
1214
1215/***/ }),
1216/* 32 */
1217/***/ (function(module, exports, __webpack_require__) {
1218
1219	'use strict';
1220
1221	exports.__esModule = true;
1222
1223	var _utils = __webpack_require__(5);
1224
1225	var logger = {
1226	  methodMap: ['debug', 'info', 'warn', 'error'],
1227	  level: 'info',
1228
1229	  // Maps a given level value to the `methodMap` indexes above.
1230	  lookupLevel: function lookupLevel(level) {
1231	    if (typeof level === 'string') {
1232	      var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase());
1233	      if (levelMap >= 0) {
1234	        level = levelMap;
1235	      } else {
1236	        level = parseInt(level, 10);
1237	      }
1238	    }
1239
1240	    return level;
1241	  },
1242
1243	  // Can be overridden in the host environment
1244	  log: function log(level) {
1245	    level = logger.lookupLevel(level);
1246
1247	    if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {
1248	      var method = logger.methodMap[level];
1249	      // eslint-disable-next-line no-console
1250	      if (!console[method]) {
1251	        method = 'log';
1252	      }
1253
1254	      for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
1255	        message[_key - 1] = arguments[_key];
1256	      }
1257
1258	      console[method].apply(console, message); // eslint-disable-line no-console
1259	    }
1260	  }
1261	};
1262
1263	exports['default'] = logger;
1264	module.exports = exports['default'];
1265
1266/***/ }),
1267/* 33 */
1268/***/ (function(module, exports, __webpack_require__) {
1269
1270	'use strict';
1271
1272	var _Object$create = __webpack_require__(34)['default'];
1273
1274	var _Object$keys = __webpack_require__(13)['default'];
1275
1276	var _interopRequireWildcard = __webpack_require__(3)['default'];
1277
1278	exports.__esModule = true;
1279	exports.createProtoAccessControl = createProtoAccessControl;
1280	exports.resultIsAllowed = resultIsAllowed;
1281	exports.resetLoggedProperties = resetLoggedProperties;
1282
1283	var _createNewLookupObject = __webpack_require__(36);
1284
1285	var _logger = __webpack_require__(32);
1286
1287	var logger = _interopRequireWildcard(_logger);
1288
1289	var loggedProperties = _Object$create(null);
1290
1291	function createProtoAccessControl(runtimeOptions) {
1292	  var defaultMethodWhiteList = _Object$create(null);
1293	  defaultMethodWhiteList['constructor'] = false;
1294	  defaultMethodWhiteList['__defineGetter__'] = false;
1295	  defaultMethodWhiteList['__defineSetter__'] = false;
1296	  defaultMethodWhiteList['__lookupGetter__'] = false;
1297
1298	  var defaultPropertyWhiteList = _Object$create(null);
1299	  // eslint-disable-next-line no-proto
1300	  defaultPropertyWhiteList['__proto__'] = false;
1301
1302	  return {
1303	    properties: {
1304	      whitelist: _createNewLookupObject.createNewLookupObject(defaultPropertyWhiteList, runtimeOptions.allowedProtoProperties),
1305	      defaultValue: runtimeOptions.allowProtoPropertiesByDefault
1306	    },
1307	    methods: {
1308	      whitelist: _createNewLookupObject.createNewLookupObject(defaultMethodWhiteList, runtimeOptions.allowedProtoMethods),
1309	      defaultValue: runtimeOptions.allowProtoMethodsByDefault
1310	    }
1311	  };
1312	}
1313
1314	function resultIsAllowed(result, protoAccessControl, propertyName) {
1315	  if (typeof result === 'function') {
1316	    return checkWhiteList(protoAccessControl.methods, propertyName);
1317	  } else {
1318	    return checkWhiteList(protoAccessControl.properties, propertyName);
1319	  }
1320	}
1321
1322	function checkWhiteList(protoAccessControlForType, propertyName) {
1323	  if (protoAccessControlForType.whitelist[propertyName] !== undefined) {
1324	    return protoAccessControlForType.whitelist[propertyName] === true;
1325	  }
1326	  if (protoAccessControlForType.defaultValue !== undefined) {
1327	    return protoAccessControlForType.defaultValue;
1328	  }
1329	  logUnexpecedPropertyAccessOnce(propertyName);
1330	  return false;
1331	}
1332
1333	function logUnexpecedPropertyAccessOnce(propertyName) {
1334	  if (loggedProperties[propertyName] !== true) {
1335	    loggedProperties[propertyName] = true;
1336	    logger.log('error', 'Handlebars: Access has been denied to resolve the property "' + propertyName + '" because it is not an "own property" of its parent.\n' + 'You can add a runtime option to disable the check or this warning:\n' + 'See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details');
1337	  }
1338	}
1339
1340	function resetLoggedProperties() {
1341	  _Object$keys(loggedProperties).forEach(function (propertyName) {
1342	    delete loggedProperties[propertyName];
1343	  });
1344	}
1345
1346/***/ }),
1347/* 34 */
1348/***/ (function(module, exports, __webpack_require__) {
1349
1350	module.exports = { "default": __webpack_require__(35), __esModule: true };
1351
1352/***/ }),
1353/* 35 */
1354/***/ (function(module, exports, __webpack_require__) {
1355
1356	var $ = __webpack_require__(9);
1357	module.exports = function create(P, D){
1358	  return $.create(P, D);
1359	};
1360
1361/***/ }),
1362/* 36 */
1363/***/ (function(module, exports, __webpack_require__) {
1364
1365	'use strict';
1366
1367	var _Object$create = __webpack_require__(34)['default'];
1368
1369	exports.__esModule = true;
1370	exports.createNewLookupObject = createNewLookupObject;
1371
1372	var _utils = __webpack_require__(5);
1373
1374	/**
1375	 * Create a new object with "null"-prototype to avoid truthy results on prototype properties.
1376	 * The resulting object can be used with "object[property]" to check if a property exists
1377	 * @param {...object} sources a varargs parameter of source objects that will be merged
1378	 * @returns {object}
1379	 */
1380
1381	function createNewLookupObject() {
1382	  for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {
1383	    sources[_key] = arguments[_key];
1384	  }
1385
1386	  return _utils.extend.apply(undefined, [_Object$create(null)].concat(sources));
1387	}
1388
1389/***/ }),
1390/* 37 */
1391/***/ (function(module, exports) {
1392
1393	// Build out our basic SafeString type
1394	'use strict';
1395
1396	exports.__esModule = true;
1397	function SafeString(string) {
1398	  this.string = string;
1399	}
1400
1401	SafeString.prototype.toString = SafeString.prototype.toHTML = function () {
1402	  return '' + this.string;
1403	};
1404
1405	exports['default'] = SafeString;
1406	module.exports = exports['default'];
1407
1408/***/ }),
1409/* 38 */
1410/***/ (function(module, exports, __webpack_require__) {
1411
1412	'use strict';
1413
1414	var _Object$seal = __webpack_require__(39)['default'];
1415
1416	var _Object$keys = __webpack_require__(13)['default'];
1417
1418	var _interopRequireWildcard = __webpack_require__(3)['default'];
1419
1420	var _interopRequireDefault = __webpack_require__(1)['default'];
1421
1422	exports.__esModule = true;
1423	exports.checkRevision = checkRevision;
1424	exports.template = template;
1425	exports.wrapProgram = wrapProgram;
1426	exports.resolvePartial = resolvePartial;
1427	exports.invokePartial = invokePartial;
1428	exports.noop = noop;
1429
1430	var _utils = __webpack_require__(5);
1431
1432	var Utils = _interopRequireWildcard(_utils);
1433
1434	var _exception = __webpack_require__(6);
1435
1436	var _exception2 = _interopRequireDefault(_exception);
1437
1438	var _base = __webpack_require__(4);
1439
1440	var _helpers = __webpack_require__(10);
1441
1442	var _internalWrapHelper = __webpack_require__(43);
1443
1444	var _internalProtoAccess = __webpack_require__(33);
1445
1446	function checkRevision(compilerInfo) {
1447	  var compilerRevision = compilerInfo && compilerInfo[0] || 1,
1448	      currentRevision = _base.COMPILER_REVISION;
1449
1450	  if (compilerRevision >= _base.LAST_COMPATIBLE_COMPILER_REVISION && compilerRevision <= _base.COMPILER_REVISION) {
1451	    return;
1452	  }
1453
1454	  if (compilerRevision < _base.LAST_COMPATIBLE_COMPILER_REVISION) {
1455	    var runtimeVersions = _base.REVISION_CHANGES[currentRevision],
1456	        compilerVersions = _base.REVISION_CHANGES[compilerRevision];
1457	    throw new _exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').');
1458	  } else {
1459	    // Use the embedded version info since the runtime doesn't know about this revision yet
1460	    throw new _exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').');
1461	  }
1462	}
1463
1464	function template(templateSpec, env) {
1465	  /* istanbul ignore next */
1466	  if (!env) {
1467	    throw new _exception2['default']('No environment passed to template');
1468	  }
1469	  if (!templateSpec || !templateSpec.main) {
1470	    throw new _exception2['default']('Unknown template object: ' + typeof templateSpec);
1471	  }
1472
1473	  templateSpec.main.decorator = templateSpec.main_d;
1474
1475	  // Note: Using env.VM references rather than local var references throughout this section to allow
1476	  // for external users to override these as pseudo-supported APIs.
1477	  env.VM.checkRevision(templateSpec.compiler);
1478
1479	  // backwards compatibility for precompiled templates with compiler-version 7 (<4.3.0)
1480	  var templateWasPrecompiledWithCompilerV7 = templateSpec.compiler && templateSpec.compiler[0] === 7;
1481
1482	  function invokePartialWrapper(partial, context, options) {
1483	    if (options.hash) {
1484	      context = Utils.extend({}, context, options.hash);
1485	      if (options.ids) {
1486	        options.ids[0] = true;
1487	      }
1488	    }
1489	    partial = env.VM.resolvePartial.call(this, partial, context, options);
1490
1491	    var extendedOptions = Utils.extend({}, options, {
1492	      hooks: this.hooks,
1493	      protoAccessControl: this.protoAccessControl
1494	    });
1495
1496	    var result = env.VM.invokePartial.call(this, partial, context, extendedOptions);
1497
1498	    if (result == null && env.compile) {
1499	      options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);
1500	      result = options.partials[options.name](context, extendedOptions);
1501	    }
1502	    if (result != null) {
1503	      if (options.indent) {
1504	        var lines = result.split('\n');
1505	        for (var i = 0, l = lines.length; i < l; i++) {
1506	          if (!lines[i] && i + 1 === l) {
1507	            break;
1508	          }
1509
1510	          lines[i] = options.indent + lines[i];
1511	        }
1512	        result = lines.join('\n');
1513	      }
1514	      return result;
1515	    } else {
1516	      throw new _exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode');
1517	    }
1518	  }
1519
1520	  // Just add water
1521	  var container = {
1522	    strict: function strict(obj, name, loc) {
1523	      if (!obj || !(name in obj)) {
1524	        throw new _exception2['default']('"' + name + '" not defined in ' + obj, {
1525	          loc: loc
1526	        });
1527	      }
1528	      return container.lookupProperty(obj, name);
1529	    },
1530	    lookupProperty: function lookupProperty(parent, propertyName) {
1531	      var result = parent[propertyName];
1532	      if (result == null) {
1533	        return result;
1534	      }
1535	      if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
1536	        return result;
1537	      }
1538
1539	      if (_internalProtoAccess.resultIsAllowed(result, container.protoAccessControl, propertyName)) {
1540	        return result;
1541	      }
1542	      return undefined;
1543	    },
1544	    lookup: function lookup(depths, name) {
1545	      var len = depths.length;
1546	      for (var i = 0; i < len; i++) {
1547	        var result = depths[i] && container.lookupProperty(depths[i], name);
1548	        if (result != null) {
1549	          return depths[i][name];
1550	        }
1551	      }
1552	    },
1553	    lambda: function lambda(current, context) {
1554	      return typeof current === 'function' ? current.call(context) : current;
1555	    },
1556
1557	    escapeExpression: Utils.escapeExpression,
1558	    invokePartial: invokePartialWrapper,
1559
1560	    fn: function fn(i) {
1561	      var ret = templateSpec[i];
1562	      ret.decorator = templateSpec[i + '_d'];
1563	      return ret;
1564	    },
1565
1566	    programs: [],
1567	    program: function program(i, data, declaredBlockParams, blockParams, depths) {
1568	      var programWrapper = this.programs[i],
1569	          fn = this.fn(i);
1570	      if (data || depths || blockParams || declaredBlockParams) {
1571	        programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths);
1572	      } else if (!programWrapper) {
1573	        programWrapper = this.programs[i] = wrapProgram(this, i, fn);
1574	      }
1575	      return programWrapper;
1576	    },
1577
1578	    data: function data(value, depth) {
1579	      while (value && depth--) {
1580	        value = value._parent;
1581	      }
1582	      return value;
1583	    },
1584	    mergeIfNeeded: function mergeIfNeeded(param, common) {
1585	      var obj = param || common;
1586
1587	      if (param && common && param !== common) {
1588	        obj = Utils.extend({}, common, param);
1589	      }
1590
1591	      return obj;
1592	    },
1593	    // An empty object to use as replacement for null-contexts
1594	    nullContext: _Object$seal({}),
1595
1596	    noop: env.VM.noop,
1597	    compilerInfo: templateSpec.compiler
1598	  };
1599
1600	  function ret(context) {
1601	    var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
1602
1603	    var data = options.data;
1604
1605	    ret._setup(options);
1606	    if (!options.partial && templateSpec.useData) {
1607	      data = initData(context, data);
1608	    }
1609	    var depths = undefined,
1610	        blockParams = templateSpec.useBlockParams ? [] : undefined;
1611	    if (templateSpec.useDepths) {
1612	      if (options.depths) {
1613	        depths = context != options.depths[0] ? [context].concat(options.depths) : options.depths;
1614	      } else {
1615	        depths = [context];
1616	      }
1617	    }
1618
1619	    function main(context /*, options*/) {
1620	      return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths);
1621	    }
1622
1623	    main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams);
1624	    return main(context, options);
1625	  }
1626
1627	  ret.isTop = true;
1628
1629	  ret._setup = function (options) {
1630	    if (!options.partial) {
1631	      var mergedHelpers = Utils.extend({}, env.helpers, options.helpers);
1632	      wrapHelpersToPassLookupProperty(mergedHelpers, container);
1633	      container.helpers = mergedHelpers;
1634
1635	      if (templateSpec.usePartial) {
1636	        // Use mergeIfNeeded here to prevent compiling global partials multiple times
1637	        container.partials = container.mergeIfNeeded(options.partials, env.partials);
1638	      }
1639	      if (templateSpec.usePartial || templateSpec.useDecorators) {
1640	        container.decorators = Utils.extend({}, env.decorators, options.decorators);
1641	      }
1642
vendor: 4,565 bytes, lines 1643-1771
1643	      container.hooks = {};
1644	      container.protoAccessControl = _internalProtoAccess.createProtoAccessControl(options);
1645
1646	      var keepHelperInHelpers = options.allowCallsToHelperMissing || templateWasPrecompiledWithCompilerV7;
1647	      _helpers.moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);
1648	      _helpers.moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);
1649	    } else {
1650	      container.protoAccessControl = options.protoAccessControl; // internal option
1651	      container.helpers = options.helpers;
1652	      container.partials = options.partials;
1653	      container.decorators = options.decorators;
1654	      container.hooks = options.hooks;
1655	    }
1656	  };
1657
1658	  ret._child = function (i, data, blockParams, depths) {
1659	    if (templateSpec.useBlockParams && !blockParams) {
1660	      throw new _exception2['default']('must pass block params');
1661	    }
1662	    if (templateSpec.useDepths && !depths) {
1663	      throw new _exception2['default']('must pass parent depths');
1664	    }
1665
1666	    return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths);
1667	  };
1668	  return ret;
1669	}
1670
1671	function wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) {
1672	  function prog(context) {
1673	    var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
1674
1675	    var currentDepths = depths;
1676	    if (depths && context != depths[0] && !(context === container.nullContext && depths[0] === null)) {
1677	      currentDepths = [context].concat(depths);
1678	    }
1679
1680	    return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths);
1681	  }
1682
1683	  prog = executeDecorators(fn, prog, container, depths, data, blockParams);
1684
1685	  prog.program = i;
1686	  prog.depth = depths ? depths.length : 0;
1687	  prog.blockParams = declaredBlockParams || 0;
1688	  return prog;
1689	}
1690
1691	/**
1692	 * This is currently part of the official API, therefore implementation details should not be changed.
1693	 */
1694
1695	function resolvePartial(partial, context, options) {
1696	  if (!partial) {
1697	    if (options.name === '@partial-block') {
1698	      partial = options.data['partial-block'];
1699	    } else {
1700	      partial = options.partials[options.name];
1701	    }
1702	  } else if (!partial.call && !options.name) {
1703	    // This is a dynamic partial that returned a string
1704	    options.name = partial;
1705	    partial = options.partials[partial];
1706	  }
1707	  return partial;
1708	}
1709
1710	function invokePartial(partial, context, options) {
1711	  // Use the current closure context to save the partial-block if this partial
1712	  var currentPartialBlock = options.data && options.data['partial-block'];
1713	  options.partial = true;
1714	  if (options.ids) {
1715	    options.data.contextPath = options.ids[0] || options.data.contextPath;
1716	  }
1717
1718	  var partialBlock = undefined;
1719	  if (options.fn && options.fn !== noop) {
1720	    (function () {
1721	      options.data = _base.createFrame(options.data);
1722	      // Wrapper function to get access to currentPartialBlock from the closure
1723	      var fn = options.fn;
1724	      partialBlock = options.data['partial-block'] = function partialBlockWrapper(context) {
1725	        var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
1726
1727	        // Restore the partial-block from the closure for the execution of the block
1728	        // i.e. the part inside the block of the partial call.
1729	        options.data = _base.createFrame(options.data);
1730	        options.data['partial-block'] = currentPartialBlock;
1731	        return fn(context, options);
1732	      };
1733	      if (fn.partials) {
1734	        options.partials = Utils.extend({}, options.partials, fn.partials);
1735	      }
1736	    })();
1737	  }
1738
1739	  if (partial === undefined && partialBlock) {
1740	    partial = partialBlock;
1741	  }
1742
1743	  if (partial === undefined) {
1744	    throw new _exception2['default']('The partial ' + options.name + ' could not be found');
1745	  } else if (partial instanceof Function) {
1746	    return partial(context, options);
1747	  }
1748	}
1749
1750	function noop() {
1751	  return '';
1752	}
1753
1754	function initData(context, data) {
1755	  if (!data || !('root' in data)) {
1756	    data = data ? _base.createFrame(data) : {};
1757	    data.root = context;
1758	  }
1759	  return data;
1760	}
1761
1762	function executeDecorators(fn, prog, container, depths, data, blockParams) {
1763	  if (fn.decorator) {
1764	    var props = {};
1765	    prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths);
1766	    Utils.extend(prog, props);
1767	  }
1768	  return prog;
1769	}
1770
1771	function wrapHelpersToPassLookupProperty(mergedHelpers, container) {
vendor: 9,804 bytes, lines 1772-2005
1772	  _Object$keys(mergedHelpers).forEach(function (helperName) {
1773	    var helper = mergedHelpers[helperName];
1774	    mergedHelpers[helperName] = passLookupPropertyOption(helper, container);
1775	  });
1776	}
1777
1778	function passLookupPropertyOption(helper, container) {
1779	  var lookupProperty = container.lookupProperty;
1780	  return _internalWrapHelper.wrapHelper(helper, function (options) {
1781	    return Utils.extend({ lookupProperty: lookupProperty }, options);
1782	  });
1783	}
1784
1785/***/ }),
1786/* 39 */
1787/***/ (function(module, exports, __webpack_require__) {
1788
1789	module.exports = { "default": __webpack_require__(40), __esModule: true };
1790
1791/***/ }),
1792/* 40 */
1793/***/ (function(module, exports, __webpack_require__) {
1794
1795	__webpack_require__(41);
1796	module.exports = __webpack_require__(21).Object.seal;
1797
1798/***/ }),
1799/* 41 */
1800/***/ (function(module, exports, __webpack_require__) {
1801
1802	// 19.1.2.17 Object.seal(O)
1803	var isObject = __webpack_require__(42);
1804
1805	__webpack_require__(18)('seal', function($seal){
1806	  return function seal(it){
1807	    return $seal && isObject(it) ? $seal(it) : it;
1808	  };
1809	});
1810
1811/***/ }),
1812/* 42 */
1813/***/ (function(module, exports) {
1814
1815	module.exports = function(it){
1816	  return typeof it === 'object' ? it !== null : typeof it === 'function';
1817	};
1818
1819/***/ }),
1820/* 43 */
1821/***/ (function(module, exports) {
1822
1823	'use strict';
1824
1825	exports.__esModule = true;
1826	exports.wrapHelper = wrapHelper;
1827
1828	function wrapHelper(helper, transformOptionsFn) {
1829	  if (typeof helper !== 'function') {
1830	    // This should not happen, but apparently it does in https://github.com/wycats/handlebars.js/issues/1639
1831	    // We try to make the wrapper least-invasive by not wrapping it, if the helper is not a function.
1832	    return helper;
1833	  }
1834	  var wrapper = function wrapper() /* dynamic arguments */{
1835	    var options = arguments[arguments.length - 1];
1836	    arguments[arguments.length - 1] = transformOptionsFn(options);
1837	    return helper.apply(this, arguments);
1838	  };
1839	  return wrapper;
1840	}
1841
1842/***/ }),
1843/* 44 */
1844/***/ (function(module, exports) {
1845
1846	/* WEBPACK VAR INJECTION */(function(global) {'use strict';
1847
1848	exports.__esModule = true;
1849
1850	exports['default'] = function (Handlebars) {
1851	  /* istanbul ignore next */
1852	  var root = typeof global !== 'undefined' ? global : window,
1853	      $Handlebars = root.Handlebars;
1854	  /* istanbul ignore next */
1855	  Handlebars.noConflict = function () {
1856	    if (root.Handlebars === Handlebars) {
1857	      root.Handlebars = $Handlebars;
1858	    }
1859	    return Handlebars;
1860	  };
1861	};
1862
1863	module.exports = exports['default'];
1864	/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
1865
1866/***/ }),
1867/* 45 */
1868/***/ (function(module, exports) {
1869
1870	'use strict';
1871
1872	exports.__esModule = true;
1873	var AST = {
1874	  // Public API used to evaluate derived attributes regarding AST nodes
1875	  helpers: {
1876	    // a mustache is definitely a helper if:
1877	    // * it is an eligible helper, and
1878	    // * it has at least one parameter or hash segment
1879	    helperExpression: function helperExpression(node) {
1880	      return node.type === 'SubExpression' || (node.type === 'MustacheStatement' || node.type === 'BlockStatement') && !!(node.params && node.params.length || node.hash);
1881	    },
1882
1883	    scopedId: function scopedId(path) {
1884	      return (/^\.|this\b/.test(path.original)
1885	      );
1886	    },
1887
1888	    // an ID is simple if it only has one part, and that part is not
1889	    // `..` or `this`.
1890	    simpleId: function simpleId(path) {
1891	      return path.parts.length === 1 && !AST.helpers.scopedId(path) && !path.depth;
1892	    }
1893	  }
1894	};
1895
1896	// Must be exported as an object rather than the root of the module as the jison lexer
1897	// must modify the object to operate properly.
1898	exports['default'] = AST;
1899	module.exports = exports['default'];
1900
1901/***/ }),
1902/* 46 */
1903/***/ (function(module, exports, __webpack_require__) {
1904
1905	'use strict';
1906
1907	var _interopRequireDefault = __webpack_require__(1)['default'];
1908
1909	var _interopRequireWildcard = __webpack_require__(3)['default'];
1910
1911	exports.__esModule = true;
1912	exports.parseWithoutProcessing = parseWithoutProcessing;
1913	exports.parse = parse;
1914
1915	var _parser = __webpack_require__(47);
1916
1917	var _parser2 = _interopRequireDefault(_parser);
1918
1919	var _whitespaceControl = __webpack_require__(48);
1920
1921	var _whitespaceControl2 = _interopRequireDefault(_whitespaceControl);
1922
1923	var _helpers = __webpack_require__(50);
1924
1925	var Helpers = _interopRequireWildcard(_helpers);
1926
1927	var _utils = __webpack_require__(5);
1928
1929	exports.parser = _parser2['default'];
1930
1931	var yy = {};
1932	_utils.extend(yy, Helpers);
1933
1934	function parseWithoutProcessing(input, options) {
1935	  // Just return if an already-compiled AST was passed in.
1936	  if (input.type === 'Program') {
1937	    return input;
1938	  }
1939
1940	  _parser2['default'].yy = yy;
1941
1942	  // Altering the shared object here, but this is ok as parser is a sync operation
1943	  yy.locInfo = function (locInfo) {
1944	    return new yy.SourceLocation(options && options.srcName, locInfo);
1945	  };
1946
1947	  var ast = _parser2['default'].parse(input);
1948
1949	  return ast;
1950	}
1951
1952	function parse(input, options) {
1953	  var ast = parseWithoutProcessing(input, options);
1954	  var strip = new _whitespaceControl2['default'](options);
1955
1956	  return strip.accept(ast);
1957	}
1958
1959/***/ }),
1960/* 47 */
1961/***/ (function(module, exports) {
1962
1963	// File ignored in coverage tests via setting in .istanbul.yml
1964	/* Jison generated parser */
1965	"use strict";
1966
1967	exports.__esModule = true;
1968	var handlebars = (function () {
1969	    var parser = { trace: function trace() {},
1970	        yy: {},
1971	        symbols_: { "error": 2, "root": 3, "program": 4, "EOF": 5, "program_repetition0": 6, "statement": 7, "mustache": 8, "block": 9, "rawBlock": 10, "partial": 11, "partialBlock": 12, "content": 13, "COMMENT": 14, "CONTENT": 15, "openRawBlock": 16, "rawBlock_repetition0": 17, "END_RAW_BLOCK": 18, "OPEN_RAW_BLOCK": 19, "helperName": 20, "openRawBlock_repetition0": 21, "openRawBlock_option0": 22, "CLOSE_RAW_BLOCK": 23, "openBlock": 24, "block_option0": 25, "closeBlock": 26, "openInverse": 27, "block_option1": 28, "OPEN_BLOCK": 29, "openBlock_repetition0": 30, "openBlock_option0": 31, "openBlock_option1": 32, "CLOSE": 33, "OPEN_INVERSE": 34, "openInverse_repetition0": 35, "openInverse_option0": 36, "openInverse_option1": 37, "openInverseChain": 38, "OPEN_INVERSE_CHAIN": 39, "openInverseChain_repetition0": 40, "openInverseChain_option0": 41, "openInverseChain_option1": 42, "inverseAndProgram": 43, "INVERSE": 44, "inverseChain": 45, "inverseChain_option0": 46, "OPEN_ENDBLOCK": 47, "OPEN": 48, "mustache_repetition0": 49, "mustache_option0": 50, "OPEN_UNESCAPED": 51, "mustache_repetition1": 52, "mustache_option1": 53, "CLOSE_UNESCAPED": 54, "OPEN_PARTIAL": 55, "partialName": 56, "partial_repetition0": 57, "partial_option0": 58, "openPartialBlock": 59, "OPEN_PARTIAL_BLOCK": 60, "openPartialBlock_repetition0": 61, "openPartialBlock_option0": 62, "param": 63, "sexpr": 64, "OPEN_SEXPR": 65, "sexpr_repetition0": 66, "sexpr_option0": 67, "CLOSE_SEXPR": 68, "hash": 69, "hash_repetition_plus0": 70, "hashSegment": 71, "ID": 72, "EQUALS": 73, "blockParams": 74, "OPEN_BLOCK_PARAMS": 75, "blockParams_repetition_plus0": 76, "CLOSE_BLOCK_PARAMS": 77, "path": 78, "dataName": 79, "STRING": 80, "NUMBER": 81, "BOOLEAN": 82, "UNDEFINED": 83, "NULL": 84, "DATA": 85, "pathSegments": 86, "SEP": 87, "$accept": 0, "$end": 1 },
1972	        terminals_: { 2: "error", 5: "EOF", 14: "COMMENT", 15: "CONTENT", 18: "END_RAW_BLOCK", 19: "OPEN_RAW_BLOCK", 23: "CLOSE_RAW_BLOCK", 29: "OPEN_BLOCK", 33: "CLOSE", 34: "OPEN_INVERSE", 39: "OPEN_INVERSE_CHAIN", 44: "INVERSE", 47: "OPEN_ENDBLOCK", 48: "OPEN", 51: "OPEN_UNESCAPED", 54: "CLOSE_UNESCAPED", 55: "OPEN_PARTIAL", 60: "OPEN_PARTIAL_BLOCK", 65: "OPEN_SEXPR", 68: "CLOSE_SEXPR", 72: "ID", 73: "EQUALS", 75: "OPEN_BLOCK_PARAMS", 77: "CLOSE_BLOCK_PARAMS", 80: "STRING", 81: "NUMBER", 82: "BOOLEAN", 83: "UNDEFINED", 84: "NULL", 85: "DATA", 87: "SEP" },
1973	        productions_: [0, [3, 2], [4, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [13, 1], [10, 3], [16, 5], [9, 4], [9, 4], [24, 6], [27, 6], [38, 6], [43, 2], [45, 3], [45, 1], [26, 3], [8, 5], [8, 5], [11, 5], [12, 3], [59, 5], [63, 1], [63, 1], [64, 5], [69, 1], [71, 3], [74, 3], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [56, 1], [56, 1], [79, 2], [78, 1], [86, 3], [86, 1], [6, 0], [6, 2], [17, 0], [17, 2], [21, 0], [21, 2], [22, 0], [22, 1], [25, 0], [25, 1], [28, 0], [28, 1], [30, 0], [30, 2], [31, 0], [31, 1], [32, 0], [32, 1], [35, 0], [35, 2], [36, 0], [36, 1], [37, 0], [37, 1], [40, 0], [40, 2], [41, 0], [41, 1], [42, 0], [42, 1], [46, 0], [46, 1], [49, 0], [49, 2], [50, 0], [50, 1], [52, 0], [52, 2], [53, 0], [53, 1], [57, 0], [57, 2], [58, 0], [58, 1], [61, 0], [61, 2], [62, 0], [62, 1], [66, 0], [66, 2], [67, 0], [67, 1], [70, 1], [70, 2], [76, 1], [76, 2]],
1974	        performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {
1975
1976	            var $0 = $$.length - 1;
1977	            switch (yystate) {
1978	                case 1:
1979	                    return $$[$0 - 1];
1980	                    break;
1981	                case 2:
1982	                    this.$ = yy.prepareProgram($$[$0]);
1983	                    break;
1984	                case 3:
1985	                    this.$ = $$[$0];
1986	                    break;
1987	                case 4:
1988	                    this.$ = $$[$0];
1989	                    break;
1990	                case 5:
1991	                    this.$ = $$[$0];
1992	                    break;
1993	                case 6:
1994	                    this.$ = $$[$0];
1995	                    break;
1996	                case 7:
1997	                    this.$ = $$[$0];
1998	                    break;
1999	                case 8:
2000	                    this.$ = $$[$0];
2001	                    break;
2002	                case 9:
2003	                    this.$ = {
2004	                        type: 'CommentStatement',
2005	                        value: yy.stripComment($$[$0]),
vendor: 8,910 bytes, lines 2006-2226
2006	                        strip: yy.stripFlags($$[$0], $$[$0]),
2007	                        loc: yy.locInfo(this._$)
2008	                    };
2009
2010	                    break;
2011	                case 10:
2012	                    this.$ = {
2013	                        type: 'ContentStatement',
2014	                        original: $$[$0],
2015	                        value: $$[$0],
2016	                        loc: yy.locInfo(this._$)
2017	                    };
2018
2019	                    break;
2020	                case 11:
2021	                    this.$ = yy.prepareRawBlock($$[$0 - 2], $$[$0 - 1], $$[$0], this._$);
2022	                    break;
2023	                case 12:
2024	                    this.$ = { path: $$[$0 - 3], params: $$[$0 - 2], hash: $$[$0 - 1] };
2025	                    break;
2026	                case 13:
2027	                    this.$ = yy.prepareBlock($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0], false, this._$);
2028	                    break;
2029	                case 14:
2030	                    this.$ = yy.prepareBlock($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0], true, this._$);
2031	                    break;
2032	                case 15:
2033	                    this.$ = { open: $$[$0 - 5], path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) };
2034	                    break;
2035	                case 16:
2036	                    this.$ = { path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) };
2037	                    break;
2038	                case 17:
2039	                    this.$ = { path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) };
2040	                    break;
2041	                case 18:
2042	                    this.$ = { strip: yy.stripFlags($$[$0 - 1], $$[$0 - 1]), program: $$[$0] };
2043	                    break;
2044	                case 19:
2045	                    var inverse = yy.prepareBlock($$[$0 - 2], $$[$0 - 1], $$[$0], $$[$0], false, this._$),
2046	                        program = yy.prepareProgram([inverse], $$[$0 - 1].loc);
2047	                    program.chained = true;
2048
2049	                    this.$ = { strip: $$[$0 - 2].strip, program: program, chain: true };
2050
2051	                    break;
2052	                case 20:
2053	                    this.$ = $$[$0];
2054	                    break;
2055	                case 21:
2056	                    this.$ = { path: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 2], $$[$0]) };
2057	                    break;
2058	                case 22:
2059	                    this.$ = yy.prepareMustache($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0 - 4], yy.stripFlags($$[$0 - 4], $$[$0]), this._$);
2060	                    break;
2061	                case 23:
2062	                    this.$ = yy.prepareMustache($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0 - 4], yy.stripFlags($$[$0 - 4], $$[$0]), this._$);
2063	                    break;
2064	                case 24:
2065	                    this.$ = {
2066	                        type: 'PartialStatement',
2067	                        name: $$[$0 - 3],
2068	                        params: $$[$0 - 2],
2069	                        hash: $$[$0 - 1],
2070	                        indent: '',
2071	                        strip: yy.stripFlags($$[$0 - 4], $$[$0]),
2072	                        loc: yy.locInfo(this._$)
2073	                    };
2074
2075	                    break;
2076	                case 25:
2077	                    this.$ = yy.preparePartialBlock($$[$0 - 2], $$[$0 - 1], $$[$0], this._$);
2078	                    break;
2079	                case 26:
2080	                    this.$ = { path: $$[$0 - 3], params: $$[$0 - 2], hash: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 4], $$[$0]) };
2081	                    break;
2082	                case 27:
2083	                    this.$ = $$[$0];
2084	                    break;
2085	                case 28:
2086	                    this.$ = $$[$0];
2087	                    break;
2088	                case 29:
2089	                    this.$ = {
2090	                        type: 'SubExpression',
2091	                        path: $$[$0 - 3],
2092	                        params: $$[$0 - 2],
2093	                        hash: $$[$0 - 1],
2094	                        loc: yy.locInfo(this._$)
2095	                    };
2096
2097	                    break;
2098	                case 30:
2099	                    this.$ = { type: 'Hash', pairs: $$[$0], loc: yy.locInfo(this._$) };
2100	                    break;
2101	                case 31:
2102	                    this.$ = { type: 'HashPair', key: yy.id($$[$0 - 2]), value: $$[$0], loc: yy.locInfo(this._$) };
2103	                    break;
2104	                case 32:
2105	                    this.$ = yy.id($$[$0 - 1]);
2106	                    break;
2107	                case 33:
2108	                    this.$ = $$[$0];
2109	                    break;
2110	                case 34:
2111	                    this.$ = $$[$0];
2112	                    break;
2113	                case 35:
2114	                    this.$ = { type: 'StringLiteral', value: $$[$0], original: $$[$0], loc: yy.locInfo(this._$) };
2115	                    break;
2116	                case 36:
2117	                    this.$ = { type: 'NumberLiteral', value: Number($$[$0]), original: Number($$[$0]), loc: yy.locInfo(this._$) };
2118	                    break;
2119	                case 37:
2120	                    this.$ = { type: 'BooleanLiteral', value: $$[$0] === 'true', original: $$[$0] === 'true', loc: yy.locInfo(this._$) };
2121	                    break;
2122	                case 38:
2123	                    this.$ = { type: 'UndefinedLiteral', original: undefined, value: undefined, loc: yy.locInfo(this._$) };
2124	                    break;
2125	                case 39:
2126	                    this.$ = { type: 'NullLiteral', original: null, value: null, loc: yy.locInfo(this._$) };
2127	                    break;
2128	                case 40:
2129	                    this.$ = $$[$0];
2130	                    break;
2131	                case 41:
2132	                    this.$ = $$[$0];
2133	                    break;
2134	                case 42:
2135	                    this.$ = yy.preparePath(true, $$[$0], this._$);
2136	                    break;
2137	                case 43:
2138	                    this.$ = yy.preparePath(false, $$[$0], this._$);
2139	                    break;
2140	                case 44:
2141	                    $$[$0 - 2].push({ part: yy.id($$[$0]), original: $$[$0], separator: $$[$0 - 1] });this.$ = $$[$0 - 2];
2142	                    break;
2143	                case 45:
2144	                    this.$ = [{ part: yy.id($$[$0]), original: $$[$0] }];
2145	                    break;
2146	                case 46:
2147	                    this.$ = [];
2148	                    break;
2149	                case 47:
2150	                    $$[$0 - 1].push($$[$0]);
2151	                    break;
2152	                case 48:
2153	                    this.$ = [];
2154	                    break;
2155	                case 49:
2156	                    $$[$0 - 1].push($$[$0]);
2157	                    break;
2158	                case 50:
2159	                    this.$ = [];
2160	                    break;
2161	                case 51:
2162	                    $$[$0 - 1].push($$[$0]);
2163	                    break;
2164	                case 58:
2165	                    this.$ = [];
2166	                    break;
2167	                case 59:
2168	                    $$[$0 - 1].push($$[$0]);
2169	                    break;
2170	                case 64:
2171	                    this.$ = [];
2172	                    break;
2173	                case 65:
2174	                    $$[$0 - 1].push($$[$0]);
2175	                    break;
2176	                case 70:
2177	                    this.$ = [];
2178	                    break;
2179	                case 71:
2180	                    $$[$0 - 1].push($$[$0]);
2181	                    break;
2182	                case 78:
2183	                    this.$ = [];
2184	                    break;
2185	                case 79:
2186	                    $$[$0 - 1].push($$[$0]);
2187	                    break;
2188	                case 82:
2189	                    this.$ = [];
2190	                    break;
2191	                case 83:
2192	                    $$[$0 - 1].push($$[$0]);
2193	                    break;
2194	                case 86:
2195	                    this.$ = [];
2196	                    break;
2197	                case 87:
2198	                    $$[$0 - 1].push($$[$0]);
2199	                    break;
2200	                case 90:
2201	                    this.$ = [];
2202	                    break;
2203	                case 91:
2204	                    $$[$0 - 1].push($$[$0]);
2205	                    break;
2206	                case 94:
2207	                    this.$ = [];
2208	                    break;
2209	                case 95:
2210	                    $$[$0 - 1].push($$[$0]);
2211	                    break;
2212	                case 98:
2213	                    this.$ = [$$[$0]];
2214	                    break;
2215	                case 99:
2216	                    $$[$0 - 1].push($$[$0]);
2217	                    break;
2218	                case 100:
2219	                    this.$ = [$$[$0]];
2220	                    break;
2221	                case 101:
2222	                    $$[$0 - 1].push($$[$0]);
2223	                    break;
2224	            }
2225	        },
2226	  
vendor: 11,456 bytes, line 2226
2226      table: [{ 3: 1, 4: 2, 5: [2, 46], 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 1: [3] }, { 5: [1, 4] }, { 5: [2, 2], 7: 5, 8: 6, 9: 7, 10: 8, 11: 9, 12: 10, 13: 11, 14: [1, 12], 15: [1, 20], 16: 17, 19: [1, 23], 24: 15, 27: 16, 29: [1, 21], 34: [1, 22], 39: [2, 2], 44: [2, 2], 47: [2, 2], 48: [1, 13], 51: [1, 14], 55: [1, 18], 59: 19, 60: [1, 24] }, { 1: [2, 1] }, { 5: [2, 47], 14: [2, 47], 15: [2, 47], 19: [2, 47], 29: [2, 47], 34: [2, 47], 39: [2, 47], 44: [2, 47], 47: [2, 47], 48: [2, 47], 51: [2, 47], 55: [2, 47], 60: [2, 47] }, { 5: [2, 3], 14: [2, 3], 15: [2, 3], 19: [2, 3], 29: [2, 3], 34: [2, 3], 39: [2, 3], 44: [2, 3], 47: [2, 3], 48: [2, 3], 51: [2, 3], 55: [2, 3], 60: [2, 3] }, { 5: [2, 4], 14: [2, 4], 15: [2, 4], 19: [2, 4], 29: [2, 4], 34: [2, 4], 39: [2, 4], 44: [2, 4], 47: [2, 4], 48: [2, 4], 51: [2, 4], 55: [2, 4], 60: [2, 4] }, { 5: [2, 5], 14: [2, 5], 15: [2, 5], 19: [2, 5], 29: [2, 5], 34: [2, 5], 39: [2, 5], 44: [2, 5], 47: [2, 5], 48: [2, 5], 51: [2, 5], 55: [2, 5], 60: [2, 5] }, { 5: [2, 6], 14: [2, 6], 15: [2, 6], 19: [2, 6], 29: [2, 6], 34: [2, 6], 39: [2, 6], 44: [2, 6], 47: [2, 6], 48: [2, 6], 51: [2, 6], 55: [2, 6], 60: [2, 6] }, { 5: [2, 7], 14: [2, 7], 15: [2, 7], 19: [2, 7], 29: [2, 7], 34: [2, 7], 39: [2, 7], 44: [2, 7], 47: [2, 7], 48: [2, 7], 51: [2, 7], 55: [2, 7], 60: [2, 7] }, { 5: [2, 8], 14: [2, 8], 15: [2, 8], 19: [2, 8], 29: [2, 8], 34: [2, 8], 39: [2, 8], 44: [2, 8], 47: [2, 8], 48: [2, 8], 51: [2, 8], 55: [2, 8], 60: [2, 8] }, { 5: [2, 9], 14: [2, 9], 15: [2, 9], 19: [2, 9], 29: [2, 9], 34: [2, 9], 39: [2, 9], 44: [2, 9], 47: [2, 9], 48: [2, 9], 51: [2, 9], 55: [2, 9], 60: [2, 9] }, { 20: 25, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 36, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 4: 37, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 39: [2, 46], 44: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 4: 38, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 44: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 15: [2, 48], 17: 39, 18: [2, 48] }, { 20: 41, 56: 40, 64: 42, 65: [1, 43], 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 4: 44, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 5: [2, 10], 14: [2, 10], 15: [2, 10], 18: [2, 10], 19: [2, 10], 29: [2, 10], 34: [2, 10], 39: [2, 10], 44: [2, 10], 47: [2, 10], 48: [2, 10], 51: [2, 10], 55: [2, 10], 60: [2, 10] }, { 20: 45, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 46, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 47, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 41, 56: 48, 64: 42, 65: [1, 43], 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 33: [2, 78], 49: 49, 65: [2, 78], 72: [2, 78], 80: [2, 78], 81: [2, 78], 82: [2, 78], 83: [2, 78], 84: [2, 78], 85: [2, 78] }, { 23: [2, 33], 33: [2, 33], 54: [2, 33], 65: [2, 33], 68: [2, 33], 72: [2, 33], 75: [2, 33], 80: [2, 33], 81: [2, 33], 82: [2, 33], 83: [2, 33], 84: [2, 33], 85: [2, 33] }, { 23: [2, 34], 33: [2, 34], 54: [2, 34], 65: [2, 34], 68: [2, 34], 72: [2, 34], 75: [2, 34], 80: [2, 34], 81: [2, 34], 82: [2, 34], 83: [2, 34], 84: [2, 34], 85: [2, 34] }, { 23: [2, 35], 33: [2, 35], 54: [2, 35], 65: [2, 35], 68: [2, 35], 72: [2, 35], 75: [2, 35], 80: [2, 35], 81: [2, 35], 82: [2, 35], 83: [2, 35], 84: [2, 35], 85: [2, 35] }, { 23: [2, 36], 33: [2, 36], 54: [2, 36], 65: [2, 36], 68: [2, 36], 72: [2, 36], 75: [2, 36], 80: [2, 36], 81: [2, 36], 82: [2, 36], 83: [2, 36], 84: [2, 36], 85: [2, 36] }, { 23: [2, 37], 33: [2, 37], 54: [2, 37], 65: [2, 37], 68: [2, 37], 72: [2, 37], 75: [2, 37], 80: [2, 37], 81: [2, 37], 82: [2, 37], 83: [2, 37], 84: [2, 37], 85: [2, 37] }, { 23: [2, 38], 33: [2, 38], 54: [2, 38], 65: [2, 38], 68: [2, 38], 72: [2, 38], 75: [2, 38], 80: [2, 38], 81: [2, 38], 82: [2, 38], 83: [2, 38], 84: [2, 38], 85: [2, 38] }, { 23: [2, 39], 33: [2, 39], 54: [2, 39], 65: [2, 39], 68: [2, 39], 72: [2, 39], 75: [2, 39], 80: [2, 39], 81: [2, 39], 82: [2, 39], 83: [2, 39], 84: [2, 39], 85: [2, 39] }, { 23: [2, 43], 33: [2, 43], 54: [2, 43], 65: [2, 43], 68: [2, 43], 72: [2, 43], 75: [2, 43], 80: [2, 43], 81: [2, 43], 82: [2, 43], 83: [2, 43], 84: [2, 43], 85: [2, 43], 87: [1, 50] }, { 72: [1, 35], 86: 51 }, { 23: [2, 45], 33: [2, 45], 54: [2, 45], 65: [2, 45], 68: [2, 45], 72: [2, 45], 75: [2, 45], 80: [2, 45], 81: [2, 45], 82: [2, 45], 83: [2, 45], 84: [2, 45], 85: [2, 45], 87: [2, 45] }, { 52: 52, 54: [2, 82], 65: [2, 82], 72: [2, 82], 80: [2, 82], 81: [2, 82], 82: [2, 82], 83: [2, 82], 84: [2, 82], 85: [2, 82] }, { 25: 53, 38: 55, 39: [1, 57], 43: 56, 44: [1, 58], 45: 54, 47: [2, 54] }, { 28: 59, 43: 60, 44: [1, 58], 47: [2, 56] }, { 13: 62, 15: [1, 20], 18: [1, 61] }, { 33: [2, 86], 57: 63, 65: [2, 86], 72: [2, 86], 80: [2, 86], 81: [2, 86], 82: [2, 86], 83: [2, 86], 84: [2, 86], 85: [2, 86] }, { 33: [2, 40], 65: [2, 40], 72: [2, 40], 80: [2, 40], 81: [2, 40], 82: [2, 40], 83: [2, 40], 84: [2, 40], 85: [2, 40] }, { 33: [2, 41], 65: [2, 41], 72: [2, 41], 80: [2, 41], 81: [2, 41], 82: [2, 41], 83: [2, 41], 84: [2, 41], 85: [2, 41] }, { 20: 64, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 26: 65, 47: [1, 66] }, { 30: 67, 33: [2, 58], 65: [2, 58], 72: [2, 58], 75: [2, 58], 80: [2, 58], 81: [2, 58], 82: [2, 58], 83: [2, 58], 84: [2, 58], 85: [2, 58] }, { 33: [2, 64], 35: 68, 65: [2, 64], 72: [2, 64], 75: [2, 64], 80: [2, 64], 81: [2, 64], 82: [2, 64], 83: [2, 64], 84: [2, 64], 85: [2, 64] }, { 21: 69, 23: [2, 50], 65: [2, 50], 72: [2, 50], 80: [2, 50], 81: [2, 50], 82: [2, 50], 83: [2, 50], 84: [2, 50], 85: [2, 50] }, { 33: [2, 90], 61: 70, 65: [2, 90], 72: [2, 90], 80: [2, 90], 81: [2, 90], 82: [2, 90], 83: [2, 90], 84: [2, 90], 85: [2, 90] }, { 20: 74, 33: [2, 80], 50: 71, 63: 72, 64: 75, 65: [1, 43], 69: 73, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 72: [1, 79] }, { 23: [2, 42], 33: [2, 42], 54: [2, 42], 65: [2, 42], 68: [2, 42], 72: [2, 42], 75: [2, 42], 80: [2, 42], 81: [2, 42], 82: [2, 42], 83: [2, 42], 84: [2, 42], 85: [2, 42], 87: [1, 50] }, { 20: 74, 53: 80, 54: [2, 84], 63: 81, 64: 75, 65: [1, 43], 69: 82, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 26: 83, 47: [1, 66] }, { 47: [2, 55] }, { 4: 84, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 39: [2, 46], 44: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 47: [2, 20] }, { 20: 85, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 4: 86, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 26: 87, 47: [1, 66] }, { 47: [2, 57] }, { 5: [2, 11], 14: [2, 11], 15: [2, 11], 19: [2, 11], 29: [2, 11], 34: [2, 11], 39: [2, 11], 44: [2, 11], 47: [2, 11], 48: [2, 11], 51: [2, 11], 55: [2, 11], 60: [2, 11] }, { 15: [2, 49], 18: [2, 49] }, { 20: 74, 33: [2, 88], 58: 88, 63: 89, 64: 75, 65: [1, 43], 69: 90, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 65: [2, 94], 66: 91, 68: [2, 94], 72: [2, 94], 80: [2, 94], 81: [2, 94], 82: [2, 94], 83: [2, 94], 84: [2, 94], 85: [2, 94] }, { 5: [2, 25], 14: [2, 25], 15: [2, 25], 19: [2, 25], 29: [2, 25], 34: [2, 25], 39: [2, 25], 44: [2, 25], 47: [2, 25], 48: [2, 25], 51: [2, 25], 55: [2, 25], 60: [2, 25] }, { 20: 92, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 31: 93, 33: [2, 60], 63: 94, 64: 75, 65: [1, 43], 69: 95, 70: 76, 71: 77, 72: [1, 78], 75: [2, 60], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 33: [2, 66], 36: 96, 63: 97, 64: 75, 65: [1, 43], 69: 98, 70: 76, 71: 77, 72: [1, 78], 75: [2, 66], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 22: 99, 23: [2, 52], 63: 100, 64: 75, 65: [1, 43], 69: 101, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 33: [2, 92], 62: 102, 63: 103, 64: 75, 65: [1, 43], 69: 104, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 33: [1, 105] }, { 33: [2, 79], 65: [2, 79], 72: [2, 79], 80: [2, 79], 81: [2, 79], 82: [2, 79], 83: [2, 79], 84: [2, 79], 85: [2, 79] }, { 33: [2, 81] }, { 23: [2, 27], 33: [2, 27], 54: [2, 27], 65: [2, 27], 68: [2, 27], 72: [2, 27], 75: [2, 27], 80: [2, 27], 81: [2, 27], 82: [2, 27], 83: [2, 27], 84: [2, 27], 85: [2, 27] }, { 23: [2, 28], 33: [2, 28], 54: [2, 28], 65: [2, 28], 68: [2, 28], 72: [2, 28], 75: [2, 28], 80: [2, 28], 81: [2, 28], 82: [2, 28], 83: [2, 28], 84: [2, 28], 85: [2, 28] }, { 23: [2, 30], 33: [2, 30], 54: [2, 30], 68: [2, 30], 71: 106, 72: [1, 107], 75: [2, 30] }, { 23: [2, 98], 33: [2, 98], 54: [2, 98], 68: [2, 98], 72: [2, 98], 75: [2, 98] }, { 23: [2, 45], 33: [2, 45], 54: [2, 45], 65: [2, 45], 68: [2, 45], 72: [2, 45], 73: [1, 108], 75: [2, 45], 80: [2, 45], 81: [2, 45], 82: [2, 45], 83: [2, 45], 84: [2, 45], 85: [2, 45], 87: [2, 45] }, { 23: [2, 44], 33: [2, 44], 54: [2, 44], 65: [2, 44], 68: [2, 44], 72: [2, 44], 75: [2, 44], 80: [2, 44], 81: [2, 44], 82: [2, 44], 83: [2, 44], 84: [2, 44], 85: [2, 44], 87: [2, 44] }, { 54: [1, 109] }, { 54: [2, 83], 65: [2, 83], 72: [2, 83], 80: [2, 83], 81: [2, 83], 82: [2, 83], 83: [2, 83], 84: [2, 83], 85: [2, 83] }, { 54: [2, 85] }, { 5: [2, 13], 14: [2, 13], 15: [2, 13], 19: [2, 13], 29: [2, 13], 34: [2, 13], 39: [2, 13], 44: [2, 13], 47: [2, 13], 48: [2, 13], 51: [2, 13], 55: [2, 13], 60: [2, 13] }, { 38: 55, 39: [1, 57], 43: 56, 44: [1, 58], 45: 111, 46: 110, 47: [2, 76] }, { 33: [2, 70], 40: 112, 65: [2, 70], 72: [2, 70], 75: [2, 70], 80: [2, 70], 81: [2, 70], 82: [2, 70], 83: [2, 70], 84: [2, 70], 85: [2, 70] }, { 47: [2, 18] }, { 5: [2, 14], 14: [2, 14], 15: [2, 14], 19: [2, 14], 29: [2, 14], 34: [2, 14], 39: [2, 14], 44: [2, 14], 47: [2, 14], 48: [2, 14], 51: [2, 14], 55: [2, 14], 60: [2, 14] }, { 33: [1, 113] }, { 33: [2, 87], 65: [2, 87], 72: [2, 87], 80: [2, 87], 81: [2, 87], 82: [2, 87], 83: [2, 87], 84: [2, 87], 85: [2, 87] }, { 33: [2, 89] }, { 20: 74, 63: 115, 64: 75, 65: [1, 43], 67: 114, 68: [2, 96], 69: 116, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }
vendor: 24,487 bytes, lines 2226-2701
2226, { 33: [1, 117] }, { 32: 118, 33: [2, 62], 74: 119, 75: [1, 120] }, { 33: [2, 59], 65: [2, 59], 72: [2, 59], 75: [2, 59], 80: [2, 59], 81: [2, 59], 82: [2, 59], 83: [2, 59], 84: [2, 59], 85: [2, 59] }, { 33: [2, 61], 75: [2, 61] }, { 33: [2, 68], 37: 121, 74: 122, 75: [1, 120] }, { 33: [2, 65], 65: [2, 65], 72: [2, 65], 75: [2, 65], 80: [2, 65], 81: [2, 65], 82: [2, 65], 83: [2, 65], 84: [2, 65], 85: [2, 65] }, { 33: [2, 67], 75: [2, 67] }, { 23: [1, 123] }, { 23: [2, 51], 65: [2, 51], 72: [2, 51], 80: [2, 51], 81: [2, 51], 82: [2, 51], 83: [2, 51], 84: [2, 51], 85: [2, 51] }, { 23: [2, 53] }, { 33: [1, 124] }, { 33: [2, 91], 65: [2, 91], 72: [2, 91], 80: [2, 91], 81: [2, 91], 82: [2, 91], 83: [2, 91], 84: [2, 91], 85: [2, 91] }, { 33: [2, 93] }, { 5: [2, 22], 14: [2, 22], 15: [2, 22], 19: [2, 22], 29: [2, 22], 34: [2, 22], 39: [2, 22], 44: [2, 22], 47: [2, 22], 48: [2, 22], 51: [2, 22], 55: [2, 22], 60: [2, 22] }, { 23: [2, 99], 33: [2, 99], 54: [2, 99], 68: [2, 99], 72: [2, 99], 75: [2, 99] }, { 73: [1, 108] }, { 20: 74, 63: 125, 64: 75, 65: [1, 43], 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 5: [2, 23], 14: [2, 23], 15: [2, 23], 19: [2, 23], 29: [2, 23], 34: [2, 23], 39: [2, 23], 44: [2, 23], 47: [2, 23], 48: [2, 23], 51: [2, 23], 55: [2, 23], 60: [2, 23] }, { 47: [2, 19] }, { 47: [2, 77] }, { 20: 74, 33: [2, 72], 41: 126, 63: 127, 64: 75, 65: [1, 43], 69: 128, 70: 76, 71: 77, 72: [1, 78], 75: [2, 72], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 5: [2, 24], 14: [2, 24], 15: [2, 24], 19: [2, 24], 29: [2, 24], 34: [2, 24], 39: [2, 24], 44: [2, 24], 47: [2, 24], 48: [2, 24], 51: [2, 24], 55: [2, 24], 60: [2, 24] }, { 68: [1, 129] }, { 65: [2, 95], 68: [2, 95], 72: [2, 95], 80: [2, 95], 81: [2, 95], 82: [2, 95], 83: [2, 95], 84: [2, 95], 85: [2, 95] }, { 68: [2, 97] }, { 5: [2, 21], 14: [2, 21], 15: [2, 21], 19: [2, 21], 29: [2, 21], 34: [2, 21], 39: [2, 21], 44: [2, 21], 47: [2, 21], 48: [2, 21], 51: [2, 21], 55: [2, 21], 60: [2, 21] }, { 33: [1, 130] }, { 33: [2, 63] }, { 72: [1, 132], 76: 131 }, { 33: [1, 133] }, { 33: [2, 69] }, { 15: [2, 12], 18: [2, 12] }, { 14: [2, 26], 15: [2, 26], 19: [2, 26], 29: [2, 26], 34: [2, 26], 47: [2, 26], 48: [2, 26], 51: [2, 26], 55: [2, 26], 60: [2, 26] }, { 23: [2, 31], 33: [2, 31], 54: [2, 31], 68: [2, 31], 72: [2, 31], 75: [2, 31] }, { 33: [2, 74], 42: 134, 74: 135, 75: [1, 120] }, { 33: [2, 71], 65: [2, 71], 72: [2, 71], 75: [2, 71], 80: [2, 71], 81: [2, 71], 82: [2, 71], 83: [2, 71], 84: [2, 71], 85: [2, 71] }, { 33: [2, 73], 75: [2, 73] }, { 23: [2, 29], 33: [2, 29], 54: [2, 29], 65: [2, 29], 68: [2, 29], 72: [2, 29], 75: [2, 29], 80: [2, 29], 81: [2, 29], 82: [2, 29], 83: [2, 29], 84: [2, 29], 85: [2, 29] }, { 14: [2, 15], 15: [2, 15], 19: [2, 15], 29: [2, 15], 34: [2, 15], 39: [2, 15], 44: [2, 15], 47: [2, 15], 48: [2, 15], 51: [2, 15], 55: [2, 15], 60: [2, 15] }, { 72: [1, 137], 77: [1, 136] }, { 72: [2, 100], 77: [2, 100] }, { 14: [2, 16], 15: [2, 16], 19: [2, 16], 29: [2, 16], 34: [2, 16], 44: [2, 16], 47: [2, 16], 48: [2, 16], 51: [2, 16], 55: [2, 16], 60: [2, 16] }, { 33: [1, 138] }, { 33: [2, 75] }, { 33: [2, 32] }, { 72: [2, 101], 77: [2, 101] }, { 14: [2, 17], 15: [2, 17], 19: [2, 17], 29: [2, 17], 34: [2, 17], 39: [2, 17], 44: [2, 17], 47: [2, 17], 48: [2, 17], 51: [2, 17], 55: [2, 17], 60: [2, 17] }],
2227	        defaultActions: { 4: [2, 1], 54: [2, 55], 56: [2, 20], 60: [2, 57], 73: [2, 81], 82: [2, 85], 86: [2, 18], 90: [2, 89], 101: [2, 53], 104: [2, 93], 110: [2, 19], 111: [2, 77], 116: [2, 97], 119: [2, 63], 122: [2, 69], 135: [2, 75], 136: [2, 32] },
2228	        parseError: function parseError(str, hash) {
2229	            throw new Error(str);
2230	        },
2231	        parse: function parse(input) {
2232	            var self = this,
2233	                stack = [0],
2234	                vstack = [null],
2235	                lstack = [],
2236	                table = this.table,
2237	                yytext = "",
2238	                yylineno = 0,
2239	                yyleng = 0,
2240	                recovering = 0,
2241	                TERROR = 2,
2242	                EOF = 1;
2243	            this.lexer.setInput(input);
2244	            this.lexer.yy = this.yy;
2245	            this.yy.lexer = this.lexer;
2246	            this.yy.parser = this;
2247	            if (typeof this.lexer.yylloc == "undefined") this.lexer.yylloc = {};
2248	            var yyloc = this.lexer.yylloc;
2249	            lstack.push(yyloc);
2250	            var ranges = this.lexer.options && this.lexer.options.ranges;
2251	            if (typeof this.yy.parseError === "function") this.parseError = this.yy.parseError;
2252	            function popStack(n) {
2253	                stack.length = stack.length - 2 * n;
2254	                vstack.length = vstack.length - n;
2255	                lstack.length = lstack.length - n;
2256	            }
2257	            function lex() {
2258	                var token;
2259	                token = self.lexer.lex() || 1;
2260	                if (typeof token !== "number") {
2261	                    token = self.symbols_[token] || token;
2262	                }
2263	                return token;
2264	            }
2265	            var symbol,
2266	                preErrorSymbol,
2267	                state,
2268	                action,
2269	                a,
2270	                r,
2271	                yyval = {},
2272	                p,
2273	                len,
2274	                newState,
2275	                expected;
2276	            while (true) {
2277	                state = stack[stack.length - 1];
2278	                if (this.defaultActions[state]) {
2279	                    action = this.defaultActions[state];
2280	                } else {
2281	                    if (symbol === null || typeof symbol == "undefined") {
2282	                        symbol = lex();
2283	                    }
2284	                    action = table[state] && table[state][symbol];
2285	                }
2286	                if (typeof action === "undefined" || !action.length || !action[0]) {
2287	                    var errStr = "";
2288	                    if (!recovering) {
2289	                        expected = [];
2290	                        for (p in table[state]) if (this.terminals_[p] && p > 2) {
2291	                            expected.push("'" + this.terminals_[p] + "'");
2292	                        }
2293	                        if (this.lexer.showPosition) {
2294	                            errStr = "Parse error on line " + (yylineno + 1) + ":\n" + this.lexer.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'";
2295	                        } else {
2296	                            errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == 1 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'");
2297	                        }
2298	                        this.parseError(errStr, { text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected });
2299	                    }
2300	                }
2301	                if (action[0] instanceof Array && action.length > 1) {
2302	                    throw new Error("Parse Error: multiple actions possible at state: " + state + ", token: " + symbol);
2303	                }
2304	                switch (action[0]) {
2305	                    case 1:
2306	                        stack.push(symbol);
2307	                        vstack.push(this.lexer.yytext);
2308	                        lstack.push(this.lexer.yylloc);
2309	                        stack.push(action[1]);
2310	                        symbol = null;
2311	                        if (!preErrorSymbol) {
2312	                            yyleng = this.lexer.yyleng;
2313	                            yytext = this.lexer.yytext;
2314	                            yylineno = this.lexer.yylineno;
2315	                            yyloc = this.lexer.yylloc;
2316	                            if (recovering > 0) recovering--;
2317	                        } else {
2318	                            symbol = preErrorSymbol;
2319	                            preErrorSymbol = null;
2320	                        }
2321	                        break;
2322	                    case 2:
2323	                        len = this.productions_[action[1]][1];
2324	                        yyval.$ = vstack[vstack.length - len];
2325	                        yyval._$ = { first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column };
2326	                        if (ranges) {
2327	                            yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];
2328	                        }
2329	                        r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);
2330	                        if (typeof r !== "undefined") {
2331	                            return r;
2332	                        }
2333	                        if (len) {
2334	                            stack = stack.slice(0, -1 * len * 2);
2335	                            vstack = vstack.slice(0, -1 * len);
2336	                            lstack = lstack.slice(0, -1 * len);
2337	                        }
2338	                        stack.push(this.productions_[action[1]][0]);
2339	                        vstack.push(yyval.$);
2340	                        lstack.push(yyval._$);
2341	                        newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
2342	                        stack.push(newState);
2343	                        break;
2344	                    case 3:
2345	                        return true;
2346	                }
2347	            }
2348	            return true;
2349	        }
2350	    };
2351	    /* Jison generated lexer */
2352	    var lexer = (function () {
2353	        var lexer = { EOF: 1,
2354	            parseError: function parseError(str, hash) {
2355	                if (this.yy.parser) {
2356	                    this.yy.parser.parseError(str, hash);
2357	                } else {
2358	                    throw new Error(str);
2359	                }
2360	            },
2361	            setInput: function setInput(input) {
2362	                this._input = input;
2363	                this._more = this._less = this.done = false;
2364	                this.yylineno = this.yyleng = 0;
2365	                this.yytext = this.matched = this.match = '';
2366	                this.conditionStack = ['INITIAL'];
2367	                this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 };
2368	                if (this.options.ranges) this.yylloc.range = [0, 0];
2369	                this.offset = 0;
2370	                return this;
2371	            },
2372	            input: function input() {
2373	                var ch = this._input[0];
2374	                this.yytext += ch;
2375	                this.yyleng++;
2376	                this.offset++;
2377	                this.match += ch;
2378	                this.matched += ch;
2379	                var lines = ch.match(/(?:\r\n?|\n).*/g);
2380	                if (lines) {
2381	                    this.yylineno++;
2382	                    this.yylloc.last_line++;
2383	                } else {
2384	                    this.yylloc.last_column++;
2385	                }
2386	                if (this.options.ranges) this.yylloc.range[1]++;
2387
2388	                this._input = this._input.slice(1);
2389	                return ch;
2390	            },
2391	            unput: function unput(ch) {
2392	                var len = ch.length;
2393	                var lines = ch.split(/(?:\r\n?|\n)/g);
2394
2395	                this._input = ch + this._input;
2396	                this.yytext = this.yytext.substr(0, this.yytext.length - len - 1);
2397	                //this.yyleng -= len;
2398	                this.offset -= len;
2399	                var oldLines = this.match.split(/(?:\r\n?|\n)/g);
2400	                this.match = this.match.substr(0, this.match.length - 1);
2401	                this.matched = this.matched.substr(0, this.matched.length - 1);
2402
2403	                if (lines.length - 1) this.yylineno -= lines.length - 1;
2404	                var r = this.yylloc.range;
2405
2406	                this.yylloc = { first_line: this.yylloc.first_line,
2407	                    last_line: this.yylineno + 1,
2408	                    first_column: this.yylloc.first_column,
2409	                    last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len
2410	                };
2411
2412	                if (this.options.ranges) {
2413	                    this.yylloc.range = [r[0], r[0] + this.yyleng - len];
2414	                }
2415	                return this;
2416	            },
2417	            more: function more() {
2418	                this._more = true;
2419	                return this;
2420	            },
2421	            less: function less(n) {
2422	                this.unput(this.match.slice(n));
2423	            },
2424	            pastInput: function pastInput() {
2425	                var past = this.matched.substr(0, this.matched.length - this.match.length);
2426	                return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\n/g, "");
2427	            },
2428	            upcomingInput: function upcomingInput() {
2429	                var next = this.match;
2430	                if (next.length < 20) {
2431	                    next += this._input.substr(0, 20 - next.length);
2432	                }
2433	                return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\n/g, "");
2434	            },
2435	            showPosition: function showPosition() {
2436	                var pre = this.pastInput();
2437	                var c = new Array(pre.length + 1).join("-");
2438	                return pre + this.upcomingInput() + "\n" + c + "^";
2439	            },
2440	            next: function next() {
2441	                if (this.done) {
2442	                    return this.EOF;
2443	                }
2444	                if (!this._input) this.done = true;
2445
2446	                var token, match, tempMatch, index, col, lines;
2447	                if (!this._more) {
2448	                    this.yytext = '';
2449	                    this.match = '';
2450	                }
2451	                var rules = this._currentRules();
2452	                for (var i = 0; i < rules.length; i++) {
2453	                    tempMatch = this._input.match(this.rules[rules[i]]);
2454	                    if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
2455	                        match = tempMatch;
2456	                        index = i;
2457	                        if (!this.options.flex) break;
2458	                    }
2459	                }
2460	                if (match) {
2461	                    lines = match[0].match(/(?:\r\n?|\n).*/g);
2462	                    if (lines) this.yylineno += lines.length;
2463	                    this.yylloc = { first_line: this.yylloc.last_line,
2464	                        last_line: this.yylineno + 1,
2465	                        first_column: this.yylloc.last_column,
2466	                        last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match[0].length };
2467	                    this.yytext += match[0];
2468	                    this.match += match[0];
2469	                    this.matches = match;
2470	                    this.yyleng = this.yytext.length;
2471	                    if (this.options.ranges) {
2472	                        this.yylloc.range = [this.offset, this.offset += this.yyleng];
2473	                    }
2474	                    this._more = false;
2475	                    this._input = this._input.slice(match[0].length);
2476	                    this.matched += match[0];
2477	                    token = this.performAction.call(this, this.yy, this, rules[index], this.conditionStack[this.conditionStack.length - 1]);
2478	                    if (this.done && this._input) this.done = false;
2479	                    if (token) return token;else return;
2480	                }
2481	                if (this._input === "") {
2482	                    return this.EOF;
2483	                } else {
2484	                    return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), { text: "", token: null, line: this.yylineno });
2485	                }
2486	            },
2487	            lex: function lex() {
2488	                var r = this.next();
2489	                if (typeof r !== 'undefined') {
2490	                    return r;
2491	                } else {
2492	                    return this.lex();
2493	                }
2494	            },
2495	            begin: function begin(condition) {
2496	                this.conditionStack.push(condition);
2497	            },
2498	            popState: function popState() {
2499	                return this.conditionStack.pop();
2500	            },
2501	            _currentRules: function _currentRules() {
2502	                return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
2503	            },
2504	            topState: function topState() {
2505	                return this.conditionStack[this.conditionStack.length - 2];
2506	            },
2507	            pushState: function begin(condition) {
2508	                this.begin(condition);
2509	            } };
2510	        lexer.options = {};
2511	        lexer.performAction = function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {
2512
2513	            function strip(start, end) {
2514	                return yy_.yytext = yy_.yytext.substring(start, yy_.yyleng - end + start);
2515	            }
2516
2517	            var YYSTATE = YY_START;
2518	            switch ($avoiding_name_collisions) {
2519	                case 0:
2520	                    if (yy_.yytext.slice(-2) === "\\\\") {
2521	                        strip(0, 1);
2522	                        this.begin("mu");
2523	                    } else if (yy_.yytext.slice(-1) === "\\") {
2524	                        strip(0, 1);
2525	                        this.begin("emu");
2526	                    } else {
2527	                        this.begin("mu");
2528	                    }
2529	                    if (yy_.yytext) return 15;
2530
2531	                    break;
2532	                case 1:
2533	                    return 15;
2534	                    break;
2535	                case 2:
2536	                    this.popState();
2537	                    return 15;
2538
2539	                    break;
2540	                case 3:
2541	                    this.begin('raw');return 15;
2542	                    break;
2543	                case 4:
2544	                    this.popState();
2545	                    // Should be using `this.topState()` below, but it currently
2546	                    // returns the second top instead of the first top. Opened an
2547	                    // issue about it at https://github.com/zaach/jison/issues/291
2548	                    if (this.conditionStack[this.conditionStack.length - 1] === 'raw') {
2549	                        return 15;
2550	                    } else {
2551	                        strip(5, 9);
2552	                        return 'END_RAW_BLOCK';
2553	                    }
2554
2555	                    break;
2556	                case 5:
2557	                    return 15;
2558	                    break;
2559	                case 6:
2560	                    this.popState();
2561	                    return 14;
2562
2563	                    break;
2564	                case 7:
2565	                    return 65;
2566	                    break;
2567	                case 8:
2568	                    return 68;
2569	                    break;
2570	                case 9:
2571	                    return 19;
2572	                    break;
2573	                case 10:
2574	                    this.popState();
2575	                    this.begin('raw');
2576	                    return 23;
2577
2578	                    break;
2579	                case 11:
2580	                    return 55;
2581	                    break;
2582	                case 12:
2583	                    return 60;
2584	                    break;
2585	                case 13:
2586	                    return 29;
2587	                    break;
2588	                case 14:
2589	                    return 47;
2590	                    break;
2591	                case 15:
2592	                    this.popState();return 44;
2593	                    break;
2594	                case 16:
2595	                    this.popState();return 44;
2596	                    break;
2597	                case 17:
2598	                    return 34;
2599	                    break;
2600	                case 18:
2601	                    return 39;
2602	                    break;
2603	                case 19:
2604	                    return 51;
2605	                    break;
2606	                case 20:
2607	                    return 48;
2608	                    break;
2609	                case 21:
2610	                    this.unput(yy_.yytext);
2611	                    this.popState();
2612	                    this.begin('com');
2613
2614	                    break;
2615	                case 22:
2616	                    this.popState();
2617	                    return 14;
2618
2619	                    break;
2620	                case 23:
2621	                    return 48;
2622	                    break;
2623	                case 24:
2624	                    return 73;
2625	                    break;
2626	                case 25:
2627	                    return 72;
2628	                    break;
2629	                case 26:
2630	                    return 72;
2631	                    break;
2632	                case 27:
2633	                    return 87;
2634	                    break;
2635	                case 28:
2636	                    // ignore whitespace
2637	                    break;
2638	                case 29:
2639	                    this.popState();return 54;
2640	                    break;
2641	                case 30:
2642	                    this.popState();return 33;
2643	                    break;
2644	                case 31:
2645	                    yy_.yytext = strip(1, 2).replace(/\\"/g, '"');return 80;
2646	                    break;
2647	                case 32:
2648	                    yy_.yytext = strip(1, 2).replace(/\\'/g, "'");return 80;
2649	                    break;
2650	                case 33:
2651	                    return 85;
2652	                    break;
2653	                case 34:
2654	                    return 82;
2655	                    break;
2656	                case 35:
2657	                    return 82;
2658	                    break;
2659	                case 36:
2660	                    return 83;
2661	                    break;
2662	                case 37:
2663	                    return 84;
2664	                    break;
2665	                case 38:
2666	                    return 81;
2667	                    break;
2668	                case 39:
2669	                    return 75;
2670	                    break;
2671	                case 40:
2672	                    return 77;
2673	                    break;
2674	                case 41:
2675	                    return 72;
2676	                    break;
2677	                case 42:
2678	                    yy_.yytext = yy_.yytext.replace(/\\([\\\]])/g, '$1');return 72;
2679	                    break;
2680	                case 43:
2681	                    return 'INVALID';
2682	                    break;
2683	                case 44:
2684	                    return 5;
2685	                    break;
2686	            }
2687	        };
2688	        lexer.rules = [/^(?:[^\x00]*?(?=(\{\{)))/, /^(?:[^\x00]+)/, /^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/, /^(?:\{\{\{\{(?=[^\/]))/, /^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/, /^(?:[^\x00]+?(?=(\{\{\{\{)))/, /^(?:[\s\S]*?--(~)?\}\})/, /^(?:\()/, /^(?:\))/, /^(?:\{\{\{\{)/, /^(?:\}\}\}\})/, /^(?:\{\{(~)?>)/, /^(?:\{\{(~)?#>)/, /^(?:\{\{(~)?#\*?)/, /^(?:\{\{(~)?\/)/, /^(?:\{\{(~)?\^\s*(~)?\}\})/, /^(?:\{\{(~)?\s*else\s*(~)?\}\})/, /^(?:\{\{(~)?\^)/, /^(?:\{\{(~)?\s*else\b)/, /^(?:\{\{(~)?\{)/, /^(?:\{\{(~)?&)/, /^(?:\{\{(~)?!--)/, /^(?:\{\{(~)?![\s\S]*?\}\})/, /^(?:\{\{(~)?\*?)/, /^(?:=)/, /^(?:\.\.)/, /^(?:\.(?=([=~}\s\/.)|])))/, /^(?:[\/.])/, /^(?:\s+)/, /^(?:\}(~)?\}\})/, /^(?:(~)?\}\})/, /^(?:"(\\["]|[^"])*")/, /^(?:'(\\[']|[^'])*')/, /^(?:@)/, /^(?:true(?=([~}\s)])))/, /^(?:false(?=([~}\s)])))/, /^(?:undefined(?=([~}\s)])))/, /^(?:null(?=([~}\s)])))/, /^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/, /^(?:as\s+\|)/, /^(?:\|)/, /^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/, /^(?:\[(\\\]|[^\]])*\])/, /^(?:.)/, /^(?:$)/];
2689	        lexer.conditions = { "mu": { "rules": [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44], "inclusive": false }, "emu": { "rules": [2], "inclusive": false }, "com": { "rules": [6], "inclusive": false }, "raw": { "rules": [3, 4, 5], "inclusive": false }, "INITIAL": { "rules": [0, 1, 44], "inclusive": true } };
2690	        return lexer;
2691	    })();
2692	    parser.lexer = lexer;
2693	    function Parser() {
2694	        this.yy = {};
2695	    }Parser.prototype = parser;parser.Parser = Parser;
2696	    return new Parser();
2697	})();exports["default"] = handlebars;
2698	module.exports = exports["default"];
2699
2700/***/ }),
2701/* 4
vendor: 10,642 bytes, lines 2701-3068
27018 */
2702/***/ (function(module, exports, __webpack_require__) {
2703
2704	'use strict';
2705
2706	var _interopRequireDefault = __webpack_require__(1)['default'];
2707
2708	exports.__esModule = true;
2709
2710	var _visitor = __webpack_require__(49);
2711
2712	var _visitor2 = _interopRequireDefault(_visitor);
2713
2714	function WhitespaceControl() {
2715	  var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
2716
2717	  this.options = options;
2718	}
2719	WhitespaceControl.prototype = new _visitor2['default']();
2720
2721	WhitespaceControl.prototype.Program = function (program) {
2722	  var doStandalone = !this.options.ignoreStandalone;
2723
2724	  var isRoot = !this.isRootSeen;
2725	  this.isRootSeen = true;
2726
2727	  var body = program.body;
2728	  for (var i = 0, l = body.length; i < l; i++) {
2729	    var current = body[i],
2730	        strip = this.accept(current);
2731
2732	    if (!strip) {
2733	      continue;
2734	    }
2735
2736	    var _isPrevWhitespace = isPrevWhitespace(body, i, isRoot),
2737	        _isNextWhitespace = isNextWhitespace(body, i, isRoot),
2738	        openStandalone = strip.openStandalone && _isPrevWhitespace,
2739	        closeStandalone = strip.closeStandalone && _isNextWhitespace,
2740	        inlineStandalone = strip.inlineStandalone && _isPrevWhitespace && _isNextWhitespace;
2741
2742	    if (strip.close) {
2743	      omitRight(body, i, true);
2744	    }
2745	    if (strip.open) {
2746	      omitLeft(body, i, true);
2747	    }
2748
2749	    if (doStandalone && inlineStandalone) {
2750	      omitRight(body, i);
2751
2752	      if (omitLeft(body, i)) {
2753	        // If we are on a standalone node, save the indent info for partials
2754	        if (current.type === 'PartialStatement') {
2755	          // Pull out the whitespace from the final line
2756	          current.indent = /([ \t]+$)/.exec(body[i - 1].original)[1];
2757	        }
2758	      }
2759	    }
2760	    if (doStandalone && openStandalone) {
2761	      omitRight((current.program || current.inverse).body);
2762
2763	      // Strip out the previous content node if it's whitespace only
2764	      omitLeft(body, i);
2765	    }
2766	    if (doStandalone && closeStandalone) {
2767	      // Always strip the next node
2768	      omitRight(body, i);
2769
2770	      omitLeft((current.inverse || current.program).body);
2771	    }
2772	  }
2773
2774	  return program;
2775	};
2776
2777	WhitespaceControl.prototype.BlockStatement = WhitespaceControl.prototype.DecoratorBlock = WhitespaceControl.prototype.PartialBlockStatement = function (block) {
2778	  this.accept(block.program);
2779	  this.accept(block.inverse);
2780
2781	  // Find the inverse program that is involed with whitespace stripping.
2782	  var program = block.program || block.inverse,
2783	      inverse = block.program && block.inverse,
2784	      firstInverse = inverse,
2785	      lastInverse = inverse;
2786
2787	  if (inverse && inverse.chained) {
2788	    firstInverse = inverse.body[0].program;
2789
2790	    // Walk the inverse chain to find the last inverse that is actually in the chain.
2791	    while (lastInverse.chained) {
2792	      lastInverse = lastInverse.body[lastInverse.body.length - 1].program;
2793	    }
2794	  }
2795
2796	  var strip = {
2797	    open: block.openStrip.open,
2798	    close: block.closeStrip.close,
2799
2800	    // Determine the standalone candiacy. Basically flag our content as being possibly standalone
2801	    // so our parent can determine if we actually are standalone
2802	    openStandalone: isNextWhitespace(program.body),
2803	    closeStandalone: isPrevWhitespace((firstInverse || program).body)
2804	  };
2805
2806	  if (block.openStrip.close) {
2807	    omitRight(program.body, null, true);
2808	  }
2809
2810	  if (inverse) {
2811	    var inverseStrip = block.inverseStrip;
2812
2813	    if (inverseStrip.open) {
2814	      omitLeft(program.body, null, true);
2815	    }
2816
2817	    if (inverseStrip.close) {
2818	      omitRight(firstInverse.body, null, true);
2819	    }
2820	    if (block.closeStrip.open) {
2821	      omitLeft(lastInverse.body, null, true);
2822	    }
2823
2824	    // Find standalone else statments
2825	    if (!this.options.ignoreStandalone && isPrevWhitespace(program.body) && isNextWhitespace(firstInverse.body)) {
2826	      omitLeft(program.body);
2827	      omitRight(firstInverse.body);
2828	    }
2829	  } else if (block.closeStrip.open) {
2830	    omitLeft(program.body, null, true);
2831	  }
2832
2833	  return strip;
2834	};
2835
2836	WhitespaceControl.prototype.Decorator = WhitespaceControl.prototype.MustacheStatement = function (mustache) {
2837	  return mustache.strip;
2838	};
2839
2840	WhitespaceControl.prototype.PartialStatement = WhitespaceControl.prototype.CommentStatement = function (node) {
2841	  /* istanbul ignore next */
2842	  var strip = node.strip || {};
2843	  return {
2844	    inlineStandalone: true,
2845	    open: strip.open,
2846	    close: strip.close
2847	  };
2848	};
2849
2850	function isPrevWhitespace(body, i, isRoot) {
2851	  if (i === undefined) {
2852	    i = body.length;
2853	  }
2854
2855	  // Nodes that end with newlines are considered whitespace (but are special
2856	  // cased for strip operations)
2857	  var prev = body[i - 1],
2858	      sibling = body[i - 2];
2859	  if (!prev) {
2860	    return isRoot;
2861	  }
2862
2863	  if (prev.type === 'ContentStatement') {
2864	    return (sibling || !isRoot ? /\r?\n\s*?$/ : /(^|\r?\n)\s*?$/).test(prev.original);
2865	  }
2866	}
2867	function isNextWhitespace(body, i, isRoot) {
2868	  if (i === undefined) {
2869	    i = -1;
2870	  }
2871
2872	  var next = body[i + 1],
2873	      sibling = body[i + 2];
2874	  if (!next) {
2875	    return isRoot;
2876	  }
2877
2878	  if (next.type === 'ContentStatement') {
2879	    return (sibling || !isRoot ? /^\s*?\r?\n/ : /^\s*?(\r?\n|$)/).test(next.original);
2880	  }
2881	}
2882
2883	// Marks the node to the right of the position as omitted.
2884	// I.e. {{foo}}' ' will mark the ' ' node as omitted.
2885	//
2886	// If i is undefined, then the first child will be marked as such.
2887	//
2888	// If mulitple is truthy then all whitespace will be stripped out until non-whitespace
2889	// content is met.
2890	function omitRight(body, i, multiple) {
2891	  var current = body[i == null ? 0 : i + 1];
2892	  if (!current || current.type !== 'ContentStatement' || !multiple && current.rightStripped) {
2893	    return;
2894	  }
2895
2896	  var original = current.value;
2897	  current.value = current.value.replace(multiple ? /^\s+/ : /^[ \t]*\r?\n?/, '');
2898	  current.rightStripped = current.value !== original;
2899	}
2900
2901	// Marks the node to the left of the position as omitted.
2902	// I.e. ' '{{foo}} will mark the ' ' node as omitted.
2903	//
2904	// If i is undefined then the last child will be marked as such.
2905	//
2906	// If mulitple is truthy then all whitespace will be stripped out until non-whitespace
2907	// content is met.
2908	function omitLeft(body, i, multiple) {
2909	  var current = body[i == null ? body.length - 1 : i - 1];
2910	  if (!current || current.type !== 'ContentStatement' || !multiple && current.leftStripped) {
2911	    return;
2912	  }
2913
2914	  // We omit the last node if it's whitespace only and not preceded by a non-content node.
2915	  var original = current.value;
2916	  current.value = current.value.replace(multiple ? /\s+$/ : /[ \t]+$/, '');
2917	  current.leftStripped = current.value !== original;
2918	  return current.leftStripped;
2919	}
2920
2921	exports['default'] = WhitespaceControl;
2922	module.exports = exports['default'];
2923
2924/***/ }),
2925/* 49 */
2926/***/ (function(module, exports, __webpack_require__) {
2927
2928	'use strict';
2929
2930	var _interopRequireDefault = __webpack_require__(1)['default'];
2931
2932	exports.__esModule = true;
2933
2934	var _exception = __webpack_require__(6);
2935
2936	var _exception2 = _interopRequireDefault(_exception);
2937
2938	function Visitor() {
2939	  this.parents = [];
2940	}
2941
2942	Visitor.prototype = {
2943	  constructor: Visitor,
2944	  mutating: false,
2945
2946	  // Visits a given value. If mutating, will replace the value if necessary.
2947	  acceptKey: function acceptKey(node, name) {
2948	    var value = this.accept(node[name]);
2949	    if (this.mutating) {
2950	      // Hacky sanity check: This may have a few false positives for type for the helper
2951	      // methods but will generally do the right thing without a lot of overhead.
2952	      if (value && !Visitor.prototype[value.type]) {
2953	        throw new _exception2['default']('Unexpected node type "' + value.type + '" found when accepting ' + name + ' on ' + node.type);
2954	      }
2955	      node[name] = value;
2956	    }
2957	  },
2958
2959	  // Performs an accept operation with added sanity check to ensure
2960	  // required keys are not removed.
2961	  acceptRequired: function acceptRequired(node, name) {
2962	    this.acceptKey(node, name);
2963
2964	    if (!node[name]) {
2965	      throw new _exception2['default'](node.type + ' requires ' + name);
2966	    }
2967	  },
2968
2969	  // Traverses a given array. If mutating, empty respnses will be removed
2970	  // for child elements.
2971	  acceptArray: function acceptArray(array) {
2972	    for (var i = 0, l = array.length; i < l; i++) {
2973	      this.acceptKey(array, i);
2974
2975	      if (!array[i]) {
2976	        array.splice(i, 1);
2977	        i--;
2978	        l--;
2979	      }
2980	    }
2981	  },
2982
2983	  accept: function accept(object) {
2984	    if (!object) {
2985	      return;
2986	    }
2987
2988	    /* istanbul ignore next: Sanity code */
2989	    if (!this[object.type]) {
2990	      throw new _exception2['default']('Unknown type: ' + object.type, object);
2991	    }
2992
2993	    if (this.current) {
2994	      this.parents.unshift(this.current);
2995	    }
2996	    this.current = object;
2997
2998	    var ret = this[object.type](object);
2999
3000	    this.current = this.parents.shift();
3001
3002	    if (!this.mutating || ret) {
3003	      return ret;
3004	    } else if (ret !== false) {
3005	      return object;
3006	    }
3007	  },
3008
3009	  Program: function Program(program) {
3010	    this.acceptArray(program.body);
3011	  },
3012
3013	  MustacheStatement: visitSubExpression,
3014	  Decorator: visitSubExpression,
3015
3016	  BlockStatement: visitBlock,
3017	  DecoratorBlock: visitBlock,
3018
3019	  PartialStatement: visitPartial,
3020	  PartialBlockStatement: function PartialBlockStatement(partial) {
3021	    visitPartial.call(this, partial);
3022
3023	    this.acceptKey(partial, 'program');
3024	  },
3025
3026	  ContentStatement: function ContentStatement() /* content */{},
3027	  CommentStatement: function CommentStatement() /* comment */{},
3028
3029	  SubExpression: visitSubExpression,
3030
3031	  PathExpression: function PathExpression() /* path */{},
3032
3033	  StringLiteral: function StringLiteral() /* string */{},
3034	  NumberLiteral: function NumberLiteral() /* number */{},
3035	  BooleanLiteral: function BooleanLiteral() /* bool */{},
3036	  UndefinedLiteral: function UndefinedLiteral() /* literal */{},
3037	  NullLiteral: function NullLiteral() /* literal */{},
3038
3039	  Hash: function Hash(hash) {
3040	    this.acceptArray(hash.pairs);
3041	  },
3042	  HashPair: function HashPair(pair) {
3043	    this.acceptRequired(pair, 'value');
3044	  }
3045	};
3046
3047	function visitSubExpression(mustache) {
3048	  this.acceptRequired(mustache, 'path');
3049	  this.acceptArray(mustache.params);
3050	  this.acceptKey(mustache, 'hash');
3051	}
3052	function visitBlock(block) {
3053	  visitSubExpression.call(this, block);
3054
3055	  this.acceptKey(block, 'program');
3056	  this.acceptKey(block, 'inverse');
3057	}
3058	function visitPartial(partial) {
3059	  this.acceptRequired(partial, 'name');
3060	  this.acceptArray(partial.params);
3061	  this.acceptKey(partial, 'hash');
3062	}
3063
3064	exports['default'] = Visitor;
3065	module.exports = exports['default'];
3066
3067/***/ }),
3068/* 50
vendor: 5,593 bytes, lines 3068-3299
3068 */
3069/***/ (function(module, exports, __webpack_require__) {
3070
3071	'use strict';
3072
3073	var _interopRequireDefault = __webpack_require__(1)['default'];
3074
3075	exports.__esModule = true;
3076	exports.SourceLocation = SourceLocation;
3077	exports.id = id;
3078	exports.stripFlags = stripFlags;
3079	exports.stripComment = stripComment;
3080	exports.preparePath = preparePath;
3081	exports.prepareMustache = prepareMustache;
3082	exports.prepareRawBlock = prepareRawBlock;
3083	exports.prepareBlock = prepareBlock;
3084	exports.prepareProgram = prepareProgram;
3085	exports.preparePartialBlock = preparePartialBlock;
3086
3087	var _exception = __webpack_require__(6);
3088
3089	var _exception2 = _interopRequireDefault(_exception);
3090
3091	function validateClose(open, close) {
3092	  close = close.path ? close.path.original : close;
3093
3094	  if (open.path.original !== close) {
3095	    var errorNode = { loc: open.path.loc };
3096
3097	    throw new _exception2['default'](open.path.original + " doesn't match " + close, errorNode);
3098	  }
3099	}
3100
3101	function SourceLocation(source, locInfo) {
3102	  this.source = source;
3103	  this.start = {
3104	    line: locInfo.first_line,
3105	    column: locInfo.first_column
3106	  };
3107	  this.end = {
3108	    line: locInfo.last_line,
3109	    column: locInfo.last_column
3110	  };
3111	}
3112
3113	function id(token) {
3114	  if (/^\[.*\]$/.test(token)) {
3115	    return token.substring(1, token.length - 1);
3116	  } else {
3117	    return token;
3118	  }
3119	}
3120
3121	function stripFlags(open, close) {
3122	  return {
3123	    open: open.charAt(2) === '~',
3124	    close: close.charAt(close.length - 3) === '~'
3125	  };
3126	}
3127
3128	function stripComment(comment) {
3129	  return comment.replace(/^\{\{~?!-?-?/, '').replace(/-?-?~?\}\}$/, '');
3130	}
3131
3132	function preparePath(data, parts, loc) {
3133	  loc = this.locInfo(loc);
3134
3135	  var original = data ? '@' : '',
3136	      dig = [],
3137	      depth = 0;
3138
3139	  for (var i = 0, l = parts.length; i < l; i++) {
3140	    var part = parts[i].part,
3141
3142	    // If we have [] syntax then we do not treat path references as operators,
3143	    // i.e. foo.[this] resolves to approximately context.foo['this']
3144	    isLiteral = parts[i].original !== part;
3145	    original += (parts[i].separator || '') + part;
3146
3147	    if (!isLiteral && (part === '..' || part === '.' || part === 'this')) {
3148	      if (dig.length > 0) {
3149	        throw new _exception2['default']('Invalid path: ' + original, { loc: loc });
3150	      } else if (part === '..') {
3151	        depth++;
3152	      }
3153	    } else {
3154	      dig.push(part);
3155	    }
3156	  }
3157
3158	  return {
3159	    type: 'PathExpression',
3160	    data: data,
3161	    depth: depth,
3162	    parts: dig,
3163	    original: original,
3164	    loc: loc
3165	  };
3166	}
3167
3168	function prepareMustache(path, params, hash, open, strip, locInfo) {
3169	  // Must use charAt to support IE pre-10
3170	  var escapeFlag = open.charAt(3) || open.charAt(2),
3171	      escaped = escapeFlag !== '{' && escapeFlag !== '&';
3172
3173	  var decorator = /\*/.test(open);
3174	  return {
3175	    type: decorator ? 'Decorator' : 'MustacheStatement',
3176	    path: path,
3177	    params: params,
3178	    hash: hash,
3179	    escaped: escaped,
3180	    strip: strip,
3181	    loc: this.locInfo(locInfo)
3182	  };
3183	}
3184
3185	function prepareRawBlock(openRawBlock, contents, close, locInfo) {
3186	  validateClose(openRawBlock, close);
3187
3188	  locInfo = this.locInfo(locInfo);
3189	  var program = {
3190	    type: 'Program',
3191	    body: contents,
3192	    strip: {},
3193	    loc: locInfo
3194	  };
3195
3196	  return {
3197	    type: 'BlockStatement',
3198	    path: openRawBlock.path,
3199	    params: openRawBlock.params,
3200	    hash: openRawBlock.hash,
3201	    program: program,
3202	    openStrip: {},
3203	    inverseStrip: {},
3204	    closeStrip: {},
3205	    loc: locInfo
3206	  };
3207	}
3208
3209	function prepareBlock(openBlock, program, inverseAndProgram, close, inverted, locInfo) {
3210	  if (close && close.path) {
3211	    validateClose(openBlock, close);
3212	  }
3213
3214	  var decorator = /\*/.test(openBlock.open);
3215
3216	  program.blockParams = openBlock.blockParams;
3217
3218	  var inverse = undefined,
3219	      inverseStrip = undefined;
3220
3221	  if (inverseAndProgram) {
3222	    if (decorator) {
3223	      throw new _exception2['default']('Unexpected inverse block on decorator', inverseAndProgram);
3224	    }
3225
3226	    if (inverseAndProgram.chain) {
3227	      inverseAndProgram.program.body[0].closeStrip = close.strip;
3228	    }
3229
3230	    inverseStrip = inverseAndProgram.strip;
3231	    inverse = inverseAndProgram.program;
3232	  }
3233
3234	  if (inverted) {
3235	    inverted = inverse;
3236	    inverse = program;
3237	    program = inverted;
3238	  }
3239
3240	  return {
3241	    type: decorator ? 'DecoratorBlock' : 'BlockStatement',
3242	    path: openBlock.path,
3243	    params: openBlock.params,
3244	    hash: openBlock.hash,
3245	    program: program,
3246	    inverse: inverse,
3247	    openStrip: openBlock.strip,
3248	    inverseStrip: inverseStrip,
3249	    closeStrip: close && close.strip,
3250	    loc: this.locInfo(locInfo)
3251	  };
3252	}
3253
3254	function prepareProgram(statements, loc) {
3255	  if (!loc && statements.length) {
3256	    var firstLoc = statements[0].loc,
3257	        lastLoc = statements[statements.length - 1].loc;
3258
3259	    /* istanbul ignore else */
3260	    if (firstLoc && lastLoc) {
3261	      loc = {
3262	        source: firstLoc.source,
3263	        start: {
3264	          line: firstLoc.start.line,
3265	          column: firstLoc.start.column
3266	        },
3267	        end: {
3268	          line: lastLoc.end.line,
3269	          column: lastLoc.end.column
3270	        }
3271	      };
3272	    }
3273	  }
3274
3275	  return {
3276	    type: 'Program',
3277	    body: statements,
3278	    strip: {},
3279	    loc: loc
3280	  };
3281	}
3282
3283	function preparePartialBlock(open, program, close, locInfo) {
3284	  validateClose(open, close);
3285
3286	  return {
3287	    type: 'PartialBlockStatement',
3288	    name: open.path,
3289	    params: open.params,
3290	    hash: open.hash,
3291	    program: program,
3292	    openStrip: open.strip,
3293	    closeStrip: close && close.strip,
3294	    loc: this.locInfo(locInfo)
3295	  };
3296	}
3297
3298/***/ }),
3299/* 
vendor: 2,262 bytes, lines 3299-3383
329951 */
3300/***/ (function(module, exports, __webpack_require__) {
3301
3302	/* eslint-disable new-cap */
3303
3304	'use strict';
3305
3306	var _Object$create = __webpack_require__(34)['default'];
3307
3308	var _interopRequireDefault = __webpack_require__(1)['default'];
3309
3310	exports.__esModule = true;
3311	exports.Compiler = Compiler;
3312	exports.precompile = precompile;
3313	exports.compile = compile;
3314
3315	var _exception = __webpack_require__(6);
3316
3317	var _exception2 = _interopRequireDefault(_exception);
3318
3319	var _utils = __webpack_require__(5);
3320
3321	var _ast = __webpack_require__(45);
3322
3323	var _ast2 = _interopRequireDefault(_ast);
3324
3325	var slice = [].slice;
3326
3327	function Compiler() {}
3328
3329	// the foundHelper register will disambiguate helper lookup from finding a
3330	// function in a context. This is necessary for mustache compatibility, which
3331	// requires that context functions in blocks are evaluated by blockHelperMissing,
3332	// and then proceed as if the resulting value was provided to blockHelperMissing.
3333
3334	Compiler.prototype = {
3335	  compiler: Compiler,
3336
3337	  equals: function equals(other) {
3338	    var len = this.opcodes.length;
3339	    if (other.opcodes.length !== len) {
3340	      return false;
3341	    }
3342
3343	    for (var i = 0; i < len; i++) {
3344	      var opcode = this.opcodes[i],
3345	          otherOpcode = other.opcodes[i];
3346	      if (opcode.opcode !== otherOpcode.opcode || !argEquals(opcode.args, otherOpcode.args)) {
3347	        return false;
3348	      }
3349	    }
3350
3351	    // We know that length is the same between the two arrays because they are directly tied
3352	    // to the opcode behavior above.
3353	    len = this.children.length;
3354	    for (var i = 0; i < len; i++) {
3355	      if (!this.children[i].equals(other.children[i])) {
3356	        return false;
3357	      }
3358	    }
3359
3360	    return true;
3361	  },
3362
3363	  guid: 0,
3364
3365	  compile: function compile(program, options) {
3366	    this.sourceNode = [];
3367	    this.opcodes = [];
3368	    this.children = [];
3369	    this.options = options;
3370	    this.stringParams = options.stringParams;
3371	    this.trackIds = options.trackIds;
3372
3373	    options.blockParams = options.blockParams || [];
3374
3375	    options.knownHelpers = _utils.extend(_Object$create(null), {
3376	      helperMissing: true,
3377	      blockHelperMissing: true,
3378	      each: true,
3379	      'if': true,
3380	      unless: true,
3381	      'with': true,
3382	      log: true,
3383	      lookup
vendor: 6,900 bytes, lines 3383-3611
3383: true
3384	    }, options.knownHelpers);
3385
3386	    return this.accept(program);
3387	  },
3388
3389	  compileProgram: function compileProgram(program) {
3390	    var childCompiler = new this.compiler(),
3391	        // eslint-disable-line new-cap
3392	    result = childCompiler.compile(program, this.options),
3393	        guid = this.guid++;
3394
3395	    this.usePartial = this.usePartial || result.usePartial;
3396
3397	    this.children[guid] = result;
3398	    this.useDepths = this.useDepths || result.useDepths;
3399
3400	    return guid;
3401	  },
3402
3403	  accept: function accept(node) {
3404	    /* istanbul ignore next: Sanity code */
3405	    if (!this[node.type]) {
3406	      throw new _exception2['default']('Unknown type: ' + node.type, node);
3407	    }
3408
3409	    this.sourceNode.unshift(node);
3410	    var ret = this[node.type](node);
3411	    this.sourceNode.shift();
3412	    return ret;
3413	  },
3414
3415	  Program: function Program(program) {
3416	    this.options.blockParams.unshift(program.blockParams);
3417
3418	    var body = program.body,
3419	        bodyLength = body.length;
3420	    for (var i = 0; i < bodyLength; i++) {
3421	      this.accept(body[i]);
3422	    }
3423
3424	    this.options.blockParams.shift();
3425
3426	    this.isSimple = bodyLength === 1;
3427	    this.blockParams = program.blockParams ? program.blockParams.length : 0;
3428
3429	    return this;
3430	  },
3431
3432	  BlockStatement: function BlockStatement(block) {
3433	    transformLiteralToPath(block);
3434
3435	    var program = block.program,
3436	        inverse = block.inverse;
3437
3438	    program = program && this.compileProgram(program);
3439	    inverse = inverse && this.compileProgram(inverse);
3440
3441	    var type = this.classifySexpr(block);
3442
3443	    if (type === 'helper') {
3444	      this.helperSexpr(block, program, inverse);
3445	    } else if (type === 'simple') {
3446	      this.simpleSexpr(block);
3447
3448	      // now that the simple mustache is resolved, we need to
3449	      // evaluate it by executing `blockHelperMissing`
3450	      this.opcode('pushProgram', program);
3451	      this.opcode('pushProgram', inverse);
3452	      this.opcode('emptyHash');
3453	      this.opcode('blockValue', block.path.original);
3454	    } else {
3455	      this.ambiguousSexpr(block, program, inverse);
3456
3457	      // now that the simple mustache is resolved, we need to
3458	      // evaluate it by executing `blockHelperMissing`
3459	      this.opcode('pushProgram', program);
3460	      this.opcode('pushProgram', inverse);
3461	      this.opcode('emptyHash');
3462	      this.opcode('ambiguousBlockValue');
3463	    }
3464
3465	    this.opcode('append');
3466	  },
3467
3468	  DecoratorBlock: function DecoratorBlock(decorator) {
3469	    var program = decorator.program && this.compileProgram(decorator.program);
3470	    var params = this.setupFullMustacheParams(decorator, program, undefined),
3471	        path = decorator.path;
3472
3473	    this.useDecorators = true;
3474	    this.opcode('registerDecorator', params.length, path.original);
3475	  },
3476
3477	  PartialStatement: function PartialStatement(partial) {
3478	    this.usePartial = true;
3479
3480	    var program = partial.program;
3481	    if (program) {
3482	      program = this.compileProgram(partial.program);
3483	    }
3484
3485	    var params = partial.params;
3486	    if (params.length > 1) {
3487	      throw new _exception2['default']('Unsupported number of partial arguments: ' + params.length, partial);
3488	    } else if (!params.length) {
3489	      if (this.options.explicitPartialContext) {
3490	        this.opcode('pushLiteral', 'undefined');
3491	      } else {
3492	        params.push({ type: 'PathExpression', parts: [], depth: 0 });
3493	      }
3494	    }
3495
3496	    var partialName = partial.name.original,
3497	        isDynamic = partial.name.type === 'SubExpression';
3498	    if (isDynamic) {
3499	      this.accept(partial.name);
3500	    }
3501
3502	    this.setupFullMustacheParams(partial, program, undefined, true);
3503
3504	    var indent = partial.indent || '';
3505	    if (this.options.preventIndent && indent) {
3506	      this.opcode('appendContent', indent);
3507	      indent = '';
3508	    }
3509
3510	    this.opcode('invokePartial', isDynamic, partialName, indent);
3511	    this.opcode('append');
3512	  },
3513	  PartialBlockStatement: function PartialBlockStatement(partialBlock) {
3514	    this.PartialStatement(partialBlock);
3515	  },
3516
3517	  MustacheStatement: function MustacheStatement(mustache) {
3518	    this.SubExpression(mustache);
3519
3520	    if (mustache.escaped && !this.options.noEscape) {
3521	      this.opcode('appendEscaped');
3522	    } else {
3523	      this.opcode('append');
3524	    }
3525	  },
3526	  Decorator: function Decorator(decorator) {
3527	    this.DecoratorBlock(decorator);
3528	  },
3529
3530	  ContentStatement: function ContentStatement(content) {
3531	    if (content.value) {
3532	      this.opcode('appendContent', content.value);
3533	    }
3534	  },
3535
3536	  CommentStatement: function CommentStatement() {},
3537
3538	  SubExpression: function SubExpression(sexpr) {
3539	    transformLiteralToPath(sexpr);
3540	    var type = this.classifySexpr(sexpr);
3541
3542	    if (type === 'simple') {
3543	      this.simpleSexpr(sexpr);
3544	    } else if (type === 'helper') {
3545	      this.helperSexpr(sexpr);
3546	    } else {
3547	      this.ambiguousSexpr(sexpr);
3548	    }
3549	  },
3550	  ambiguousSexpr: function ambiguousSexpr(sexpr, program, inverse) {
3551	    var path = sexpr.path,
3552	        name = path.parts[0],
3553	        isBlock = program != null || inverse != null;
3554
3555	    this.opcode('getContext', path.depth);
3556
3557	    this.opcode('pushProgram', program);
3558	    this.opcode('pushProgram', inverse);
3559
3560	    path.strict = true;
3561	    this.accept(path);
3562
3563	    this.opcode('invokeAmbiguous', name, isBlock);
3564	  },
3565
3566	  simpleSexpr: function simpleSexpr(sexpr) {
3567	    var path = sexpr.path;
3568	    path.strict = true;
3569	    this.accept(path);
3570	    this.opcode('resolvePossibleLambda');
3571	  },
3572
3573	  helperSexpr: function helperSexpr(sexpr, program, inverse) {
3574	    var params = this.setupFullMustacheParams(sexpr, program, inverse),
3575	        path = sexpr.path,
3576	        name = path.parts[0];
3577
3578	    if (this.options.knownHelpers[name]) {
3579	      this.opcode('invokeKnownHelper', params.length, name);
3580	    } else if (this.options.knownHelpersOnly) {
3581	      throw new _exception2['default']('You specified knownHelpersOnly, but used the unknown helper ' + name, sexpr);
3582	    } else {
3583	      path.strict = true;
3584	      path.falsy = true;
3585
3586	      this.accept(path);
3587	      this.opcode('invokeHelper', params.length, path.original, _ast2['default'].helpers.simpleId(path));
3588	    }
3589	  },
3590
3591	  PathExpression: function PathExpression(path) {
3592	    this.addDepth(path.depth);
3593	    this.opcode('getContext', path.depth);
3594
3595	    var name = path.parts[0],
3596	        scoped = _ast2['default'].helpers.scopedId(path),
3597	        blockParamId = !path.depth && !scoped && this.blockParamIndex(name);
3598
3599	    if (blockParamId) {
3600	      this.opcode('lookupBlockParam', blockParamId, path.parts);
3601	    } else if (!name) {
3602	      // Context reference, i.e. `{{foo .}}` or `{{foo ..}}`
3603	      this.opcode('pushContext');
3604	    } else if (path.data) {
3605	      this.options.data = true;
3606	      this.opcode('lookupData', path.depth, path.parts, path.strict);
3607	    } else {
3608	      this.opcode('lookupOnContext', path.parts, path.falsy, path.strict, scoped);
3609	    }
3610	  },
3611
vendor: 7,255 bytes, lines 3612-3870
3612	  StringLiteral: function StringLiteral(string) {
3613	    this.opcode('pushString', string.value);
3614	  },
3615
3616	  NumberLiteral: function NumberLiteral(number) {
3617	    this.opcode('pushLiteral', number.value);
3618	  },
3619
3620	  BooleanLiteral: function BooleanLiteral(bool) {
3621	    this.opcode('pushLiteral', bool.value);
3622	  },
3623
3624	  UndefinedLiteral: function UndefinedLiteral() {
3625	    this.opcode('pushLiteral', 'undefined');
3626	  },
3627
3628	  NullLiteral: function NullLiteral() {
3629	    this.opcode('pushLiteral', 'null');
3630	  },
3631
3632	  Hash: function Hash(hash) {
3633	    var pairs = hash.pairs,
3634	        i = 0,
3635	        l = pairs.length;
3636
3637	    this.opcode('pushHash');
3638
3639	    for (; i < l; i++) {
3640	      this.pushParam(pairs[i].value);
3641	    }
3642	    while (i--) {
3643	      this.opcode('assignToHash', pairs[i].key);
3644	    }
3645	    this.opcode('popHash');
3646	  },
3647
3648	  // HELPERS
3649	  opcode: function opcode(name) {
3650	    this.opcodes.push({
3651	      opcode: name,
3652	      args: slice.call(arguments, 1),
3653	      loc: this.sourceNode[0].loc
3654	    });
3655	  },
3656
3657	  addDepth: function addDepth(depth) {
3658	    if (!depth) {
3659	      return;
3660	    }
3661
3662	    this.useDepths = true;
3663	  },
3664
3665	  classifySexpr: function classifySexpr(sexpr) {
3666	    var isSimple = _ast2['default'].helpers.simpleId(sexpr.path);
3667
3668	    var isBlockParam = isSimple && !!this.blockParamIndex(sexpr.path.parts[0]);
3669
3670	    // a mustache is an eligible helper if:
3671	    // * its id is simple (a single part, not `this` or `..`)
3672	    var isHelper = !isBlockParam && _ast2['default'].helpers.helperExpression(sexpr);
3673
3674	    // if a mustache is an eligible helper but not a definite
3675	    // helper, it is ambiguous, and will be resolved in a later
3676	    // pass or at runtime.
3677	    var isEligible = !isBlockParam && (isHelper || isSimple);
3678
3679	    // if ambiguous, we can possibly resolve the ambiguity now
3680	    // An eligible helper is one that does not have a complex path, i.e. `this.foo`, `../foo` etc.
3681	    if (isEligible && !isHelper) {
3682	      var _name = sexpr.path.parts[0],
3683	          options = this.options;
3684	      if (options.knownHelpers[_name]) {
3685	        isHelper = true;
3686	      } else if (options.knownHelpersOnly) {
3687	        isEligible = false;
3688	      }
3689	    }
3690
3691	    if (isHelper) {
3692	      return 'helper';
3693	    } else if (isEligible) {
3694	      return 'ambiguous';
3695	    } else {
3696	      return 'simple';
3697	    }
3698	  },
3699
3700	  pushParams: function pushParams(params) {
3701	    for (var i = 0, l = params.length; i < l; i++) {
3702	      this.pushParam(params[i]);
3703	    }
3704	  },
3705
3706	  pushParam: function pushParam(val) {
3707	    var value = val.value != null ? val.value : val.original || '';
3708
3709	    if (this.stringParams) {
3710	      if (value.replace) {
3711	        value = value.replace(/^(\.?\.\/)*/g, '').replace(/\//g, '.');
3712	      }
3713
3714	      if (val.depth) {
3715	        this.addDepth(val.depth);
3716	      }
3717	      this.opcode('getContext', val.depth || 0);
3718	      this.opcode('pushStringParam', value, val.type);
3719
3720	      if (val.type === 'SubExpression') {
3721	        // SubExpressions get evaluated and passed in
3722	        // in string params mode.
3723	        this.accept(val);
3724	      }
3725	    } else {
3726	      if (this.trackIds) {
3727	        var blockParamIndex = undefined;
3728	        if (val.parts && !_ast2['default'].helpers.scopedId(val) && !val.depth) {
3729	          blockParamIndex = this.blockParamIndex(val.parts[0]);
3730	        }
3731	        if (blockParamIndex) {
3732	          var blockParamChild = val.parts.slice(1).join('.');
3733	          this.opcode('pushId', 'BlockParam', blockParamIndex, blockParamChild);
3734	        } else {
3735	          value = val.original || value;
3736	          if (value.replace) {
3737	            value = value.replace(/^this(?:\.|$)/, '').replace(/^\.\//, '').replace(/^\.$/, '');
3738	          }
3739
3740	          this.opcode('pushId', val.type, value);
3741	        }
3742	      }
3743	      this.accept(val);
3744	    }
3745	  },
3746
3747	  setupFullMustacheParams: function setupFullMustacheParams(sexpr, program, inverse, omitEmpty) {
3748	    var params = sexpr.params;
3749	    this.pushParams(params);
3750
3751	    this.opcode('pushProgram', program);
3752	    this.opcode('pushProgram', inverse);
3753
3754	    if (sexpr.hash) {
3755	      this.accept(sexpr.hash);
3756	    } else {
3757	      this.opcode('emptyHash', omitEmpty);
3758	    }
3759
3760	    return params;
3761	  },
3762
3763	  blockParamIndex: function blockParamIndex(name) {
3764	    for (var depth = 0, len = this.options.blockParams.length; depth < len; depth++) {
3765	      var blockParams = this.options.blockParams[depth],
3766	          param = blockParams && _utils.indexOf(blockParams, name);
3767	      if (blockParams && param >= 0) {
3768	        return [depth, param];
3769	      }
3770	    }
3771	  }
3772	};
3773
3774	function precompile(input, options, env) {
3775	  if (input == null || typeof input !== 'string' && input.type !== 'Program') {
3776	    throw new _exception2['default']('You must pass a string or Handlebars AST to Handlebars.precompile. You passed ' + input);
3777	  }
3778
3779	  options = options || {};
3780	  if (!('data' in options)) {
3781	    options.data = true;
3782	  }
3783	  if (options.compat) {
3784	    options.useDepths = true;
3785	  }
3786
3787	  var ast = env.parse(input, options),
3788	      environment = new env.Compiler().compile(ast, options);
3789	  return new env.JavaScriptCompiler().compile(environment, options);
3790	}
3791
3792	function compile(input, options, env) {
3793	  if (options === undefined) options = {};
3794
3795	  if (input == null || typeof input !== 'string' && input.type !== 'Program') {
3796	    throw new _exception2['default']('You must pass a string or Handlebars AST to Handlebars.compile. You passed ' + input);
3797	  }
3798
3799	  options = _utils.extend({}, options);
3800	  if (!('data' in options)) {
3801	    options.data = true;
3802	  }
3803	  if (options.compat) {
3804	    options.useDepths = true;
3805	  }
3806
3807	  var compiled = undefined;
3808
3809	  function compileInput() {
3810	    var ast = env.parse(input, options),
3811	        environment = new env.Compiler().compile(ast, options),
3812	        templateSpec = new env.JavaScriptCompiler().compile(environment, options, undefined, true);
3813	    return env.template(templateSpec);
3814	  }
3815
3816	  // Template is only compiled on first use and cached after that point.
3817	  function ret(context, execOptions) {
3818	    if (!compiled) {
3819	      compiled = compileInput();
3820	    }
3821	    return compiled.call(this, context, execOptions);
3822	  }
3823	  ret._setup = function (setupOptions) {
3824	    if (!compiled) {
3825	      compiled = compileInput();
3826	    }
3827	    return compiled._setup(setupOptions);
3828	  };
3829	  ret._child = function (i, data, blockParams, depths) {
3830	    if (!compiled) {
3831	      compiled = compileInput();
3832	    }
3833	    return compiled._child(i, data, blockParams, depths);
3834	  };
3835	  return ret;
3836	}
3837
3838	function argEquals(a, b) {
3839	  if (a === b) {
3840	    return true;
3841	  }
3842
3843	  if (_utils.isArray(a) && _utils.isArray(b) && a.length === b.length) {
3844	    for (var i = 0; i < a.length; i++) {
3845	      if (!argEquals(a[i], b[i])) {
3846	        return false;
3847	      }
3848	    }
3849	    return true;
3850	  }
3851	}
3852
3853	function transformLiteralToPath(sexpr) {
3854	  if (!sexpr.path.parts) {
3855	    var literal = sexpr.path;
3856	    // Casting to string here to make false and 0 literal values play nicely with the rest
3857	    // of the system.
3858	    sexpr.path = {
3859	      type: 'PathExpression',
3860	      data: false,
3861	      depth: 0,
3862	      parts: [literal.original + ''],
3863	      original: literal.original + '',
3864	      loc: literal.loc
3865	    };
3866	  }
3867	}
3868
3869/***/ }),
3870/* 
vendor: 5,336 bytes, lines 3870-4039
387052 */
3871/***/ (function(module, exports, __webpack_require__) {
3872
3873	'use strict';
3874
3875	var _Object$keys = __webpack_require__(13)['default'];
3876
3877	var _interopRequireDefault = __webpack_require__(1)['default'];
3878
3879	exports.__esModule = true;
3880
3881	var _base = __webpack_require__(4);
3882
3883	var _exception = __webpack_require__(6);
3884
3885	var _exception2 = _interopRequireDefault(_exception);
3886
3887	var _utils = __webpack_require__(5);
3888
3889	var _codeGen = __webpack_require__(53);
3890
3891	var _codeGen2 = _interopRequireDefault(_codeGen);
3892
3893	function Literal(value) {
3894	  this.value = value;
3895	}
3896
3897	function JavaScriptCompiler() {}
3898
3899	JavaScriptCompiler.prototype = {
3900	  // PUBLIC API: You can override these methods in a subclass to provide
3901	  // alternative compiled forms for name lookup and buffering semantics
3902	  nameLookup: function nameLookup(parent, name /*,  type */) {
3903	    return this.internalNameLookup(parent, name);
3904	  },
3905	  depthedLookup: function depthedLookup(name) {
3906	    return [this.aliasable('container.lookup'), '(depths, ', JSON.stringify(name), ')'];
3907	  },
3908
3909	  compilerInfo: function compilerInfo() {
3910	    var revision = _base.COMPILER_REVISION,
3911	        versions = _base.REVISION_CHANGES[revision];
3912	    return [revision, versions];
3913	  },
3914
3915	  appendToBuffer: function appendToBuffer(source, location, explicit) {
3916	    // Force a source as this simplifies the merge logic.
3917	    if (!_utils.isArray(source)) {
3918	      source = [source];
3919	    }
3920	    source = this.source.wrap(source, location);
3921
3922	    if (this.environment.isSimple) {
3923	      return ['return ', source, ';'];
3924	    } else if (explicit) {
3925	      // This is a case where the buffer operation occurs as a child of another
3926	      // construct, generally braces. We have to explicitly output these buffer
3927	      // operations to ensure that the emitted code goes in the correct location.
3928	      return ['buffer += ', source, ';'];
3929	    } else {
3930	      source.appendToBuffer = true;
3931	      return source;
3932	    }
3933	  },
3934
3935	  initializeBuffer: function initializeBuffer() {
3936	    return this.quotedString('');
3937	  },
3938	  // END PUBLIC API
3939	  internalNameLookup: function internalNameLookup(parent, name) {
3940	    this.lookupPropertyFunctionIsUsed = true;
3941	    return ['lookupProperty(', parent, ',', JSON.stringify(name), ')'];
3942	  },
3943
3944	  lookupPropertyFunctionIsUsed: false,
3945
3946	  compile: function compile(environment, options, context, asObject) {
3947	    this.environment = environment;
3948	    this.options = options;
3949	    this.stringParams = this.options.stringParams;
3950	    this.trackIds = this.options.trackIds;
3951	    this.precompile = !asObject;
3952
3953	    this.name = this.environment.name;
3954	    this.isChild = !!context;
3955	    this.context = context || {
3956	      decorators: [],
3957	      programs: [],
3958	      environments: []
3959	    };
3960
3961	    this.preamble();
3962
3963	    this.stackSlot = 0;
3964	    this.stackVars = [];
3965	    this.aliases = {};
3966	    this.registers = { list: [] };
3967	    this.hashes = [];
3968	    this.compileStack = [];
3969	    this.inlineStack = [];
3970	    this.blockParams = [];
3971
3972	    this.compileChildren(environment, options);
3973
3974	    this.useDepths = this.useDepths || environment.useDepths || environment.useDecorators || this.options.compat;
3975	    this.useBlockParams = this.useBlockParams || environment.useBlockParams;
3976
3977	    var opcodes = environment.opcodes,
3978	        opcode = undefined,
3979	        firstLoc = undefined,
3980	        i = undefined,
3981	        l = undefined;
3982
3983	    for (i = 0, l = opcodes.length; i < l; i++) {
3984	      opcode = opcodes[i];
3985
3986	      this.source.currentLocation = opcode.loc;
3987	      firstLoc = firstLoc || opcode.loc;
3988	      this[opcode.opcode].apply(this, opcode.args);
3989	    }
3990
3991	    // Flush any trailing content that might be pending.
3992	    this.source.currentLocation = firstLoc;
3993	    this.pushSource('');
3994
3995	    /* istanbul ignore next */
3996	    if (this.stackSlot || this.inlineStack.length || this.compileStack.length) {
3997	      throw new _exception2['default']('Compile completed with content left on stack');
3998	    }
3999
4000	    if (!this.decorators.isEmpty()) {
4001	      this.useDecorators = true;
4002
4003	      this.decorators.prepend(['var decorators = container.decorators, ', this.lookupPropertyFunctionVarDeclaration(), ';\n']);
4004	      this.decorators.push('return fn;');
4005
4006	      if (asObject) {
4007	        this.decorators = Function.apply(this, ['fn', 'props', 'container', 'depth0', 'data', 'blockParams', 'depths', this.decorators.merge()]);
4008	      } else {
4009	        this.decorators.prepend('function(fn, props, container, depth0, data, blockParams, depths) {\n');
4010	        this.decorators.push('}\n');
4011	        this.decorators = this.decorators.merge();
4012	      }
4013	    } else {
4014	      this.decorators = undefined;
4015	    }
4016
4017	    var fn = this.createFunctionContext(asObject);
4018	    if (!this.isChild) {
4019	      var ret = {
4020	        compiler: this.compilerInfo(),
4021	        main: fn
4022	      };
4023
4024	      if (this.decorators) {
4025	        ret.main_d = this.decorators; // eslint-disable-line camelcase
4026	        ret.useDecorators = true;
4027	      }
4028
4029	      var _context = this.context;
4030	      var programs = _context.programs;
4031	      var decorators = _context.decorators;
4032
4033	      for (i = 0, l = programs.length; i < l; i++) {
4034	        if (programs[i]) {
4035	          ret[i] = programs[i];
4036	          if (decorators[i]) {
4037	            ret[i + '_d'] = decorators[i];
4038	            ret.useDecorators = true;
4039	          }
vendor: 7,279 bytes, lines 4039-4269
4039
4040	        }
4041	      }
4042
4043	      if (this.environment.usePartial) {
4044	        ret.usePartial = true;
4045	      }
4046	      if (this.options.data) {
4047	        ret.useData = true;
4048	      }
4049	      if (this.useDepths) {
4050	        ret.useDepths = true;
4051	      }
4052	      if (this.useBlockParams) {
4053	        ret.useBlockParams = true;
4054	      }
4055	      if (this.options.compat) {
4056	        ret.compat = true;
4057	      }
4058
4059	      if (!asObject) {
4060	        ret.compiler = JSON.stringify(ret.compiler);
4061
4062	        this.source.currentLocation = { start: { line: 1, column: 0 } };
4063	        ret = this.objectLiteral(ret);
4064
4065	        if (options.srcName) {
4066	          ret = ret.toStringWithSourceMap({ file: options.destName });
4067	          ret.map = ret.map && ret.map.toString();
4068	        } else {
4069	          ret = ret.toString();
4070	        }
4071	      } else {
4072	        ret.compilerOptions = this.options;
4073	      }
4074
4075	      return ret;
4076	    } else {
4077	      return fn;
4078	    }
4079	  },
4080
4081	  preamble: function preamble() {
4082	    // track the last context pushed into place to allow skipping the
4083	    // getContext opcode when it would be a noop
4084	    this.lastContext = 0;
4085	    this.source = new _codeGen2['default'](this.options.srcName);
4086	    this.decorators = new _codeGen2['default'](this.options.srcName);
4087	  },
4088
4089	  createFunctionContext: function createFunctionContext(asObject) {
4090	    // istanbul ignore next
4091
4092	    var _this = this;
4093
4094	    var varDeclarations = '';
4095
4096	    var locals = this.stackVars.concat(this.registers.list);
4097	    if (locals.length > 0) {
4098	      varDeclarations += ', ' + locals.join(', ');
4099	    }
4100
4101	    // Generate minimizer alias mappings
4102	    //
4103	    // When using true SourceNodes, this will update all references to the given alias
4104	    // as the source nodes are reused in situ. For the non-source node compilation mode,
4105	    // aliases will not be used, but this case is already being run on the client and
4106	    // we aren't concern about minimizing the template size.
4107	    var aliasCount = 0;
4108	    _Object$keys(this.aliases).forEach(function (alias) {
4109	      var node = _this.aliases[alias];
4110	      if (node.children && node.referenceCount > 1) {
4111	        varDeclarations += ', alias' + ++aliasCount + '=' + alias;
4112	        node.children[0] = 'alias' + aliasCount;
4113	      }
4114	    });
4115
4116	    if (this.lookupPropertyFunctionIsUsed) {
4117	      varDeclarations += ', ' + this.lookupPropertyFunctionVarDeclaration();
4118	    }
4119
4120	    var params = ['container', 'depth0', 'helpers', 'partials', 'data'];
4121
4122	    if (this.useBlockParams || this.useDepths) {
4123	      params.push('blockParams');
4124	    }
4125	    if (this.useDepths) {
4126	      params.push('depths');
4127	    }
4128
4129	    // Perform a second pass over the output to merge content when possible
4130	    var source = this.mergeSource(varDeclarations);
4131
4132	    if (asObject) {
4133	      params.push(source);
4134
4135	      return Function.apply(this, params);
4136	    } else {
4137	      return this.source.wrap(['function(', params.join(','), ') {\n  ', source, '}']);
4138	    }
4139	  },
4140	  mergeSource: function mergeSource(varDeclarations) {
4141	    var isSimple = this.environment.isSimple,
4142	        appendOnly = !this.forceBuffer,
4143	        appendFirst = undefined,
4144	        sourceSeen = undefined,
4145	        bufferStart = undefined,
4146	        bufferEnd = undefined;
4147	    this.source.each(function (line) {
4148	      if (line.appendToBuffer) {
4149	        if (bufferStart) {
4150	          line.prepend('  + ');
4151	        } else {
4152	          bufferStart = line;
4153	        }
4154	        bufferEnd = line;
4155	      } else {
4156	        if (bufferStart) {
4157	          if (!sourceSeen) {
4158	            appendFirst = true;
4159	          } else {
4160	            bufferStart.prepend('buffer += ');
4161	          }
4162	          bufferEnd.add(';');
4163	          bufferStart = bufferEnd = undefined;
4164	        }
4165
4166	        sourceSeen = true;
4167	        if (!isSimple) {
4168	          appendOnly = false;
4169	        }
4170	      }
4171	    });
4172
4173	    if (appendOnly) {
4174	      if (bufferStart) {
4175	        bufferStart.prepend('return ');
4176	        bufferEnd.add(';');
4177	      } else if (!sourceSeen) {
4178	        this.source.push('return "";');
4179	      }
4180	    } else {
4181	      varDeclarations += ', buffer = ' + (appendFirst ? '' : this.initializeBuffer());
4182
4183	      if (bufferStart) {
4184	        bufferStart.prepend('return buffer + ');
4185	        bufferEnd.add(';');
4186	      } else {
4187	        this.source.push('return buffer;');
4188	      }
4189	    }
4190
4191	    if (varDeclarations) {
4192	      this.source.prepend('var ' + varDeclarations.substring(2) + (appendFirst ? '' : ';\n'));
4193	    }
4194
4195	    return this.source.merge();
4196	  },
4197
4198	  lookupPropertyFunctionVarDeclaration: function lookupPropertyFunctionVarDeclaration() {
4199	    return '\n      lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    }\n    '.trim();
4200	  },
4201
4202	  // [blockValue]
4203	  //
4204	  // On stack, before: hash, inverse, program, value
4205	  // On stack, after: return value of blockHelperMissing
4206	  //
4207	  // The purpose of this opcode is to take a block of the form
4208	  // `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and
4209	  // replace it on the stack with the result of properly
4210	  // invoking blockHelperMissing.
4211	  blockValue: function blockValue(name) {
4212	    var blockHelperMissing = this.aliasable('container.hooks.blockHelperMissing'),
4213	        params = [this.contextName(0)];
4214	    this.setupHelperArgs(name, 0, params);
4215
4216	    var blockName = this.popStack();
4217	    params.splice(1, 0, blockName);
4218
4219	    this.push(this.source.functionCall(blockHelperMissing, 'call', params));
4220	  },
4221
4222	  // [ambiguousBlockValue]
4223	  //
4224	  // On stack, before: hash, inverse, program, value
4225	  // Compiler value, before: lastHelper=value of last found helper, if any
4226	  // On stack, after, if no lastHelper: same as [blockValue]
4227	  // On stack, after, if lastHelper: value
4228	  ambiguousBlockValue: function ambiguousBlockValue() {
4229	    // We're being a bit cheeky and reusing the options value from the prior exec
4230	    var blockHelperMissing = this.aliasable('container.hooks.blockHelperMissing'),
4231	        params = [this.contextName(0)];
4232	    this.setupHelperArgs('', 0, params, true);
4233
4234	    this.flushInline();
4235
4236	    var current = this.topStack();
4237	    params.splice(1, 0, current);
4238
4239	    this.pushSource(['if (!', this.lastHelper, ') { ', current, ' = ', this.source.functionCall(blockHelperMissing, 'call', params), '}']);
4240	  },
4241
4242	  // [appendContent]
4243	  //
4244	  // On stack, before: ...
4245	  // On stack, after: ...
4246	  //
4247	  // Appends the string value of `content` to the current buffer
4248	  appendContent: function appendContent(content) {
4249	    if (this.pendingContent) {
4250	      content = this.pendingContent + content;
4251	    } else {
4252	      this.pendingLocation = this.source.currentLocation;
4253	    }
4254
4255	    this.pendingContent = content;
4256	  },
4257
4258	  // [append]
4259	  //
4260	  // On stack, before: value, ...
4261	  // On stack, after: ...
4262	  //
4263	  // Coerces `value` to a String and appends it to the current buffer.
4264	  //
4265	  // If `value` is truthy, or 0, it is coerced into a string and appended
4266	  // Otherwise, the empty string is appended
4267	  append: function append() {
4268	    if (this.isInline()) {
4269	      this.replaceStack(function (current) {
vendor: 17,909 bytes, lines 4270-4850
4270	        return [' != null ? ', current, ' : ""'];
4271	      });
4272
4273	      this.pushSource(this.appendToBuffer(this.popStack()));
4274	    } else {
4275	      var local = this.popStack();
4276	      this.pushSource(['if (', local, ' != null) { ', this.appendToBuffer(local, undefined, true), ' }']);
4277	      if (this.environment.isSimple) {
4278	        this.pushSource(['else { ', this.appendToBuffer("''", undefined, true), ' }']);
4279	      }
4280	    }
4281	  },
4282
4283	  // [appendEscaped]
4284	  //
4285	  // On stack, before: value, ...
4286	  // On stack, after: ...
4287	  //
4288	  // Escape `value` and append it to the buffer
4289	  appendEscaped: function appendEscaped() {
4290	    this.pushSource(this.appendToBuffer([this.aliasable('container.escapeExpression'), '(', this.popStack(), ')']));
4291	  },
4292
4293	  // [getContext]
4294	  //
4295	  // On stack, before: ...
4296	  // On stack, after: ...
4297	  // Compiler value, after: lastContext=depth
4298	  //
4299	  // Set the value of the `lastContext` compiler value to the depth
4300	  getContext: function getContext(depth) {
4301	    this.lastContext = depth;
4302	  },
4303
4304	  // [pushContext]
4305	  //
4306	  // On stack, before: ...
4307	  // On stack, after: currentContext, ...
4308	  //
4309	  // Pushes the value of the current context onto the stack.
4310	  pushContext: function pushContext() {
4311	    this.pushStackLiteral(this.contextName(this.lastContext));
4312	  },
4313
4314	  // [lookupOnContext]
4315	  //
4316	  // On stack, before: ...
4317	  // On stack, after: currentContext[name], ...
4318	  //
4319	  // Looks up the value of `name` on the current context and pushes
4320	  // it onto the stack.
4321	  lookupOnContext: function lookupOnContext(parts, falsy, strict, scoped) {
4322	    var i = 0;
4323
4324	    if (!scoped && this.options.compat && !this.lastContext) {
4325	      // The depthed query is expected to handle the undefined logic for the root level that
4326	      // is implemented below, so we evaluate that directly in compat mode
4327	      this.push(this.depthedLookup(parts[i++]));
4328	    } else {
4329	      this.pushContext();
4330	    }
4331
4332	    this.resolvePath('context', parts, i, falsy, strict);
4333	  },
4334
4335	  // [lookupBlockParam]
4336	  //
4337	  // On stack, before: ...
4338	  // On stack, after: blockParam[name], ...
4339	  //
4340	  // Looks up the value of `parts` on the given block param and pushes
4341	  // it onto the stack.
4342	  lookupBlockParam: function lookupBlockParam(blockParamId, parts) {
4343	    this.useBlockParams = true;
4344
4345	    this.push(['blockParams[', blockParamId[0], '][', blockParamId[1], ']']);
4346	    this.resolvePath('context', parts, 1);
4347	  },
4348
4349	  // [lookupData]
4350	  //
4351	  // On stack, before: ...
4352	  // On stack, after: data, ...
4353	  //
4354	  // Push the data lookup operator
4355	  lookupData: function lookupData(depth, parts, strict) {
4356	    if (!depth) {
4357	      this.pushStackLiteral('data');
4358	    } else {
4359	      this.pushStackLiteral('container.data(data, ' + depth + ')');
4360	    }
4361
4362	    this.resolvePath('data', parts, 0, true, strict);
4363	  },
4364
4365	  resolvePath: function resolvePath(type, parts, i, falsy, strict) {
4366	    // istanbul ignore next
4367
4368	    var _this2 = this;
4369
4370	    if (this.options.strict || this.options.assumeObjects) {
4371	      this.push(strictLookup(this.options.strict && strict, this, parts, type));
4372	      return;
4373	    }
4374
4375	    var len = parts.length;
4376	    for (; i < len; i++) {
4377	      /* eslint-disable no-loop-func */
4378	      this.replaceStack(function (current) {
4379	        var lookup = _this2.nameLookup(current, parts[i], type);
4380	        // We want to ensure that zero and false are handled properly if the context (falsy flag)
4381	        // needs to have the special handling for these values.
4382	        if (!falsy) {
4383	          return [' != null ? ', lookup, ' : ', current];
4384	        } else {
4385	          // Otherwise we can use generic falsy handling
4386	          return [' && ', lookup];
4387	        }
4388	      });
4389	      /* eslint-enable no-loop-func */
4390	    }
4391	  },
4392
4393	  // [resolvePossibleLambda]
4394	  //
4395	  // On stack, before: value, ...
4396	  // On stack, after: resolved value, ...
4397	  //
4398	  // If the `value` is a lambda, replace it on the stack by
4399	  // the return value of the lambda
4400	  resolvePossibleLambda: function resolvePossibleLambda() {
4401	    this.push([this.aliasable('container.lambda'), '(', this.popStack(), ', ', this.contextName(0), ')']);
4402	  },
4403
4404	  // [pushStringParam]
4405	  //
4406	  // On stack, before: ...
4407	  // On stack, after: string, currentContext, ...
4408	  //
4409	  // This opcode is designed for use in string mode, which
4410	  // provides the string value of a parameter along with its
4411	  // depth rather than resolving it immediately.
4412	  pushStringParam: function pushStringParam(string, type) {
4413	    this.pushContext();
4414	    this.pushString(type);
4415
4416	    // If it's a subexpression, the string result
4417	    // will be pushed after this opcode.
4418	    if (type !== 'SubExpression') {
4419	      if (typeof string === 'string') {
4420	        this.pushString(string);
4421	      } else {
4422	        this.pushStackLiteral(string);
4423	      }
4424	    }
4425	  },
4426
4427	  emptyHash: function emptyHash(omitEmpty) {
4428	    if (this.trackIds) {
4429	      this.push('{}'); // hashIds
4430	    }
4431	    if (this.stringParams) {
4432	      this.push('{}'); // hashContexts
4433	      this.push('{}'); // hashTypes
4434	    }
4435	    this.pushStackLiteral(omitEmpty ? 'undefined' : '{}');
4436	  },
4437	  pushHash: function pushHash() {
4438	    if (this.hash) {
4439	      this.hashes.push(this.hash);
4440	    }
4441	    this.hash = { values: {}, types: [], contexts: [], ids: [] };
4442	  },
4443	  popHash: function popHash() {
4444	    var hash = this.hash;
4445	    this.hash = this.hashes.pop();
4446
4447	    if (this.trackIds) {
4448	      this.push(this.objectLiteral(hash.ids));
4449	    }
4450	    if (this.stringParams) {
4451	      this.push(this.objectLiteral(hash.contexts));
4452	      this.push(this.objectLiteral(hash.types));
4453	    }
4454
4455	    this.push(this.objectLiteral(hash.values));
4456	  },
4457
4458	  // [pushString]
4459	  //
4460	  // On stack, before: ...
4461	  // On stack, after: quotedString(string), ...
4462	  //
4463	  // Push a quoted version of `string` onto the stack
4464	  pushString: function pushString(string) {
4465	    this.pushStackLiteral(this.quotedString(string));
4466	  },
4467
4468	  // [pushLiteral]
4469	  //
4470	  // On stack, before: ...
4471	  // On stack, after: value, ...
4472	  //
4473	  // Pushes a value onto the stack. This operation prevents
4474	  // the compiler from creating a temporary variable to hold
4475	  // it.
4476	  pushLiteral: function pushLiteral(value) {
4477	    this.pushStackLiteral(value);
4478	  },
4479
4480	  // [pushProgram]
4481	  //
4482	  // On stack, before: ...
4483	  // On stack, after: program(guid), ...
4484	  //
4485	  // Push a program expression onto the stack. This takes
4486	  // a compile-time guid and converts it into a runtime-accessible
4487	  // expression.
4488	  pushProgram: function pushProgram(guid) {
4489	    if (guid != null) {
4490	      this.pushStackLiteral(this.programExpression(guid));
4491	    } else {
4492	      this.pushStackLiteral(null);
4493	    }
4494	  },
4495
4496	  // [registerDecorator]
4497	  //
4498	  // On stack, before: hash, program, params..., ...
4499	  // On stack, after: ...
4500	  //
4501	  // Pops off the decorator's parameters, invokes the decorator,
4502	  // and inserts the decorator into the decorators list.
4503	  registerDecorator: function registerDecorator(paramSize, name) {
4504	    var foundDecorator = this.nameLookup('decorators', name, 'decorator'),
4505	        options = this.setupHelperArgs(name, paramSize);
4506
4507	    this.decorators.push(['fn = ', this.decorators.functionCall(foundDecorator, '', ['fn', 'props', 'container', options]), ' || fn;']);
4508	  },
4509
4510	  // [invokeHelper]
4511	  //
4512	  // On stack, before: hash, inverse, program, params..., ...
4513	  // On stack, after: result of helper invocation
4514	  //
4515	  // Pops off the helper's parameters, invokes the helper,
4516	  // and pushes the helper's return value onto the stack.
4517	  //
4518	  // If the helper is not found, `helperMissing` is called.
4519	  invokeHelper: function invokeHelper(paramSize, name, isSimple) {
4520	    var nonHelper = this.popStack(),
4521	        helper = this.setupHelper(paramSize, name);
4522
4523	    var possibleFunctionCalls = [];
4524
4525	    if (isSimple) {
4526	      // direct call to helper
4527	      possibleFunctionCalls.push(helper.name);
4528	    }
4529	    // call a function from the input object
4530	    possibleFunctionCalls.push(nonHelper);
4531	    if (!this.options.strict) {
4532	      possibleFunctionCalls.push(this.aliasable('container.hooks.helperMissing'));
4533	    }
4534
4535	    var functionLookupCode = ['(', this.itemsSeparatedBy(possibleFunctionCalls, '||'), ')'];
4536	    var functionCall = this.source.functionCall(functionLookupCode, 'call', helper.callParams);
4537	    this.push(functionCall);
4538	  },
4539
4540	  itemsSeparatedBy: function itemsSeparatedBy(items, separator) {
4541	    var result = [];
4542	    result.push(items[0]);
4543	    for (var i = 1; i < items.length; i++) {
4544	      result.push(separator, items[i]);
4545	    }
4546	    return result;
4547	  },
4548	  // [invokeKnownHelper]
4549	  //
4550	  // On stack, before: hash, inverse, program, params..., ...
4551	  // On stack, after: result of helper invocation
4552	  //
4553	  // This operation is used when the helper is known to exist,
4554	  // so a `helperMissing` fallback is not required.
4555	  invokeKnownHelper: function invokeKnownHelper(paramSize, name) {
4556	    var helper = this.setupHelper(paramSize, name);
4557	    this.push(this.source.functionCall(helper.name, 'call', helper.callParams));
4558	  },
4559
4560	  // [invokeAmbiguous]
4561	  //
4562	  // On stack, before: hash, inverse, program, params..., ...
4563	  // On stack, after: result of disambiguation
4564	  //
4565	  // This operation is used when an expression like `{{foo}}`
4566	  // is provided, but we don't know at compile-time whether it
4567	  // is a helper or a path.
4568	  //
4569	  // This operation emits more code than the other options,
4570	  // and can be avoided by passing the `knownHelpers` and
4571	  // `knownHelpersOnly` flags at compile-time.
4572	  invokeAmbiguous: function invokeAmbiguous(name, helperCall) {
4573	    this.useRegister('helper');
4574
4575	    var nonHelper = this.popStack();
4576
4577	    this.emptyHash();
4578	    var helper = this.setupHelper(0, name, helperCall);
4579
4580	    var helperName = this.lastHelper = this.nameLookup('helpers', name, 'helper');
4581
4582	    var lookup = ['(', '(helper = ', helperName, ' || ', nonHelper, ')'];
4583	    if (!this.options.strict) {
4584	      lookup[0] = '(helper = ';
4585	      lookup.push(' != null ? helper : ', this.aliasable('container.hooks.helperMissing'));
4586	    }
4587
4588	    this.push(['(', lookup, helper.paramsInit ? ['),(', helper.paramsInit] : [], '),', '(typeof helper === ', this.aliasable('"function"'), ' ? ', this.source.functionCall('helper', 'call', helper.callParams), ' : helper))']);
4589	  },
4590
4591	  // [invokePartial]
4592	  //
4593	  // On stack, before: context, ...
4594	  // On stack after: result of partial invocation
4595	  //
4596	  // This operation pops off a context, invokes a partial with that context,
4597	  // and pushes the result of the invocation back.
4598	  invokePartial: function invokePartial(isDynamic, name, indent) {
4599	    var params = [],
4600	        options = this.setupParams(name, 1, params);
4601
4602	    if (isDynamic) {
4603	      name = this.popStack();
4604	      delete options.name;
4605	    }
4606
4607	    if (indent) {
4608	      options.indent = JSON.stringify(indent);
4609	    }
4610	    options.helpers = 'helpers';
4611	    options.partials = 'partials';
4612	    options.decorators = 'container.decorators';
4613
4614	    if (!isDynamic) {
4615	      params.unshift(this.nameLookup('partials', name, 'partial'));
4616	    } else {
4617	      params.unshift(name);
4618	    }
4619
4620	    if (this.options.compat) {
4621	      options.depths = 'depths';
4622	    }
4623	    options = this.objectLiteral(options);
4624	    params.push(options);
4625
4626	    this.push(this.source.functionCall('container.invokePartial', '', params));
4627	  },
4628
4629	  // [assignToHash]
4630	  //
4631	  // On stack, before: value, ..., hash, ...
4632	  // On stack, after: ..., hash, ...
4633	  //
4634	  // Pops a value off the stack and assigns it to the current hash
4635	  assignToHash: function assignToHash(key) {
4636	    var value = this.popStack(),
4637	        context = undefined,
4638	        type = undefined,
4639	        id = undefined;
4640
4641	    if (this.trackIds) {
4642	      id = this.popStack();
4643	    }
4644	    if (this.stringParams) {
4645	      type = this.popStack();
4646	      context = this.popStack();
4647	    }
4648
4649	    var hash = this.hash;
4650	    if (context) {
4651	      hash.contexts[key] = context;
4652	    }
4653	    if (type) {
4654	      hash.types[key] = type;
4655	    }
4656	    if (id) {
4657	      hash.ids[key] = id;
4658	    }
4659	    hash.values[key] = value;
4660	  },
4661
4662	  pushId: function pushId(type, name, child) {
4663	    if (type === 'BlockParam') {
4664	      this.pushStackLiteral('blockParams[' + name[0] + '].path[' + name[1] + ']' + (child ? ' + ' + JSON.stringify('.' + child) : ''));
4665	    } else if (type === 'PathExpression') {
4666	      this.pushString(name);
4667	    } else if (type === 'SubExpression') {
4668	      this.pushStackLiteral('true');
4669	    } else {
4670	      this.pushStackLiteral('null');
4671	    }
4672	  },
4673
4674	  // HELPERS
4675
4676	  compiler: JavaScriptCompiler,
4677
4678	  compileChildren: function compileChildren(environment, options) {
4679	    var children = environment.children,
4680	        child = undefined,
4681	        compiler = undefined;
4682
4683	    for (var i = 0, l = children.length; i < l; i++) {
4684	      child = children[i];
4685	      compiler = new this.compiler(); // eslint-disable-line new-cap
4686
4687	      var existing = this.matchExistingProgram(child);
4688
4689	      if (existing == null) {
4690	        this.context.programs.push(''); // Placeholder to prevent name conflicts for nested children
4691	        var index = this.context.programs.length;
4692	        child.index = index;
4693	        child.name = 'program' + index;
4694	        this.context.programs[index] = compiler.compile(child, options, this.context, !this.precompile);
4695	        this.context.decorators[index] = compiler.decorators;
4696	        this.context.environments[index] = child;
4697
4698	        this.useDepths = this.useDepths || compiler.useDepths;
4699	        this.useBlockParams = this.useBlockParams || compiler.useBlockParams;
4700	        child.useDepths = this.useDepths;
4701	        child.useBlockParams = this.useBlockParams;
4702	      } else {
4703	        child.index = existing.index;
4704	        child.name = 'program' + existing.index;
4705
4706	        this.useDepths = this.useDepths || existing.useDepths;
4707	        this.useBlockParams = this.useBlockParams || existing.useBlockParams;
4708	      }
4709	    }
4710	  },
4711	  matchExistingProgram: function matchExistingProgram(child) {
4712	    for (var i = 0, len = this.context.environments.length; i < len; i++) {
4713	      var environment = this.context.environments[i];
4714	      if (environment && environment.equals(child)) {
4715	        return environment;
4716	      }
4717	    }
4718	  },
4719
4720	  programExpression: function programExpression(guid) {
4721	    var child = this.environment.children[guid],
4722	        programParams = [child.index, 'data', child.blockParams];
4723
4724	    if (this.useBlockParams || this.useDepths) {
4725	      programParams.push('blockParams');
4726	    }
4727	    if (this.useDepths) {
4728	      programParams.push('depths');
4729	    }
4730
4731	    return 'container.program(' + programParams.join(', ') + ')';
4732	  },
4733
4734	  useRegister: function useRegister(name) {
4735	    if (!this.registers[name]) {
4736	      this.registers[name] = true;
4737	      this.registers.list.push(name);
4738	    }
4739	  },
4740
4741	  push: function push(expr) {
4742	    if (!(expr instanceof Literal)) {
4743	      expr = this.source.wrap(expr);
4744	    }
4745
4746	    this.inlineStack.push(expr);
4747	    return expr;
4748	  },
4749
4750	  pushStackLiteral: function pushStackLiteral(item) {
4751	    this.push(new Literal(item));
4752	  },
4753
4754	  pushSource: function pushSource(source) {
4755	    if (this.pendingContent) {
4756	      this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent), this.pendingLocation));
4757	      this.pendingContent = undefined;
4758	    }
4759
4760	    if (source) {
4761	      this.source.push(source);
4762	    }
4763	  },
4764
4765	  replaceStack: function replaceStack(callback) {
4766	    var prefix = ['('],
4767	        stack = undefined,
4768	        createdStack = undefined,
4769	        usedLiteral = undefined;
4770
4771	    /* istanbul ignore next */
4772	    if (!this.isInline()) {
4773	      throw new _exception2['default']('replaceStack on non-inline');
4774	    }
4775
4776	    // We want to merge the inline statement into the replacement statement via ','
4777	    var top = this.popStack(true);
4778
4779	    if (top instanceof Literal) {
4780	      // Literals do not need to be inlined
4781	      stack = [top.value];
4782	      prefix = ['(', stack];
4783	      usedLiteral = true;
4784	    } else {
4785	      // Get or create the current stack name for use by the inline
4786	      createdStack = true;
4787	      var _name = this.incrStack();
4788
4789	      prefix = ['((', this.push(_name), ' = ', top, ')'];
4790	      stack = this.topStack();
4791	    }
4792
4793	    var item = callback.call(this, stack);
4794
4795	    if (!usedLiteral) {
4796	      this.popStack();
4797	    }
4798	    if (createdStack) {
4799	      this.stackSlot--;
4800	    }
4801	    this.push(prefix.concat(item, ')'));
4802	  },
4803
4804	  incrStack: function incrStack() {
4805	    this.stackSlot++;
4806	    if (this.stackSlot > this.stackVars.length) {
4807	      this.stackVars.push('stack' + this.stackSlot);
4808	    }
4809	    return this.topStackName();
4810	  },
4811	  topStackName: function topStackName() {
4812	    return 'stack' + this.stackSlot;
4813	  },
4814	  flushInline: function flushInline() {
4815	    var inlineStack = this.inlineStack;
4816	    this.inlineStack = [];
4817	    for (var i = 0, len = inlineStack.length; i < len; i++) {
4818	      var entry = inlineStack[i];
4819	      /* istanbul ignore if */
4820	      if (entry instanceof Literal) {
4821	        this.compileStack.push(entry);
4822	      } else {
4823	        var stack = this.incrStack();
4824	        this.pushSource([stack, ' = ', entry, ';']);
4825	        this.compileStack.push(stack);
4826	      }
4827	    }
4828	  },
4829	  isInline: function isInline() {
4830	    return this.inlineStack.length;
4831	  },
4832
4833	  popStack: function popStack(wrapped) {
4834	    var inline = this.isInline(),
4835	        item = (inline ? this.inlineStack : this.compileStack).pop();
4836
4837	    if (!wrapped && item instanceof Literal) {
4838	      return item.value;
4839	    } else {
4840	      if (!inline) {
4841	        /* istanbul ignore next */
4842	        if (!this.stackSlot) {
4843	          throw new _exception2['default']('Invalid stack pop');
4844	        }
4845	        this.stackSlot--;
4846	      }
4847	      return item;
4848	    }
4849	  },
4850
vendor: 4,876 bytes, lines 4851-5011
4851	  topStack: function topStack() {
4852	    var stack = this.isInline() ? this.inlineStack : this.compileStack,
4853	        item = stack[stack.length - 1];
4854
4855	    /* istanbul ignore if */
4856	    if (item instanceof Literal) {
4857	      return item.value;
4858	    } else {
4859	      return item;
4860	    }
4861	  },
4862
4863	  contextName: function contextName(context) {
4864	    if (this.useDepths && context) {
4865	      return 'depths[' + context + ']';
4866	    } else {
4867	      return 'depth' + context;
4868	    }
4869	  },
4870
4871	  quotedString: function quotedString(str) {
4872	    return this.source.quotedString(str);
4873	  },
4874
4875	  objectLiteral: function objectLiteral(obj) {
4876	    return this.source.objectLiteral(obj);
4877	  },
4878
4879	  aliasable: function aliasable(name) {
4880	    var ret = this.aliases[name];
4881	    if (ret) {
4882	      ret.referenceCount++;
4883	      return ret;
4884	    }
4885
4886	    ret = this.aliases[name] = this.source.wrap(name);
4887	    ret.aliasable = true;
4888	    ret.referenceCount = 1;
4889
4890	    return ret;
4891	  },
4892
4893	  setupHelper: function setupHelper(paramSize, name, blockHelper) {
4894	    var params = [],
4895	        paramsInit = this.setupHelperArgs(name, paramSize, params, blockHelper);
4896	    var foundHelper = this.nameLookup('helpers', name, 'helper'),
4897	        callContext = this.aliasable(this.contextName(0) + ' != null ? ' + this.contextName(0) + ' : (container.nullContext || {})');
4898
4899	    return {
4900	      params: params,
4901	      paramsInit: paramsInit,
4902	      name: foundHelper,
4903	      callParams: [callContext].concat(params)
4904	    };
4905	  },
4906
4907	  setupParams: function setupParams(helper, paramSize, params) {
4908	    var options = {},
4909	        contexts = [],
4910	        types = [],
4911	        ids = [],
4912	        objectArgs = !params,
4913	        param = undefined;
4914
4915	    if (objectArgs) {
4916	      params = [];
4917	    }
4918
4919	    options.name = this.quotedString(helper);
4920	    options.hash = this.popStack();
4921
4922	    if (this.trackIds) {
4923	      options.hashIds = this.popStack();
4924	    }
4925	    if (this.stringParams) {
4926	      options.hashTypes = this.popStack();
4927	      options.hashContexts = this.popStack();
4928	    }
4929
4930	    var inverse = this.popStack(),
4931	        program = this.popStack();
4932
4933	    // Avoid setting fn and inverse if neither are set. This allows
4934	    // helpers to do a check for `if (options.fn)`
4935	    if (program || inverse) {
4936	      options.fn = program || 'container.noop';
4937	      options.inverse = inverse || 'container.noop';
4938	    }
4939
4940	    // The parameters go on to the stack in order (making sure that they are evaluated in order)
4941	    // so we need to pop them off the stack in reverse order
4942	    var i = paramSize;
4943	    while (i--) {
4944	      param = this.popStack();
4945	      params[i] = param;
4946
4947	      if (this.trackIds) {
4948	        ids[i] = this.popStack();
4949	      }
4950	      if (this.stringParams) {
4951	        types[i] = this.popStack();
4952	        contexts[i] = this.popStack();
4953	      }
4954	    }
4955
4956	    if (objectArgs) {
4957	      options.args = this.source.generateArray(params);
4958	    }
4959
4960	    if (this.trackIds) {
4961	      options.ids = this.source.generateArray(ids);
4962	    }
4963	    if (this.stringParams) {
4964	      options.types = this.source.generateArray(types);
4965	      options.contexts = this.source.generateArray(contexts);
4966	    }
4967
4968	    if (this.options.data) {
4969	      options.data = 'data';
4970	    }
4971	    if (this.useBlockParams) {
4972	      options.blockParams = 'blockParams';
4973	    }
4974	    return options;
4975	  },
4976
4977	  setupHelperArgs: function setupHelperArgs(helper, paramSize, params, useRegister) {
4978	    var options = this.setupParams(helper, paramSize, params);
4979	    options.loc = JSON.stringify(this.source.currentLocation);
4980	    options = this.objectLiteral(options);
4981	    if (useRegister) {
4982	      this.useRegister('options');
4983	      params.push('options');
4984	      return ['options=', options];
4985	    } else if (params) {
4986	      params.push(options);
4987	      return '';
4988	    } else {
4989	      return options;
4990	    }
4991	  }
4992	};
4993
4994	(function () {
4995	  var reservedWords = ('break else new var' + ' case finally return void' + ' catch for switch while' + ' continue function this with' + ' default if throw' + ' delete in try' + ' do instanceof typeof' + ' abstract enum int short' + ' boolean export interface static' + ' byte extends long super' + ' char final native synchronized' + ' class float package throws' + ' const goto private transient' + ' debugger implements protected volatile' + ' double import public let yield await' + ' null true false').split(' ');
4996
4997	  var compilerWords = JavaScriptCompiler.RESERVED_WORDS = {};
4998
4999	  for (var i = 0, l = reservedWords.length; i < l; i++) {
5000	    compilerWords[reservedWords[i]] = true;
5001	  }
5002	})();
5003
5004	/**
5005	 * @deprecated May be removed in the next major version
5006	 */
5007	JavaScriptCompiler.isValidJavaScriptVariableName = function (name) {
5008	  return !JavaScriptCompiler.RESERVED_WORDS[name] && /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name);
5009	};
5010
5011	function strictLookup(requireTerminal, compiler, parts, 
vendor: 934 bytes, lines 5011-5051
5011type) {
5012	  var stack = compiler.popStack(),
5013	      i = 0,
5014	      len = parts.length;
5015	  if (requireTerminal) {
5016	    len--;
5017	  }
5018
5019	  for (; i < len; i++) {
5020	    stack = compiler.nameLookup(stack, parts[i], type);
5021	  }
5022
5023	  if (requireTerminal) {
5024	    return [compiler.aliasable('container.strict'), '(', stack, ', ', compiler.quotedString(parts[i]), ', ', JSON.stringify(compiler.source.currentLocation), ' )'];
5025	  } else {
5026	    return stack;
5027	  }
5028	}
5029
5030	exports['default'] = JavaScriptCompiler;
5031	module.exports = exports['default'];
5032
5033/***/ }),
5034/* 53 */
5035/***/ (function(module, exports, __webpack_require__) {
5036
5037	/* global define */
5038	'use strict';
5039
5040	var _Object$keys = __webpack_require__(13)['default'];
5041
5042	exports.__esModule = true;
5043
5044	var _utils = __webpack_require__(5);
5045
5046	var SourceNode = undefined;
5047
5048	try {
5049	  /* istanbul ignore next */
5050	  if (false) {
5051	    // We don't support this in AMD environments. For these environments, we asus
vendor: 4,041 bytes, lines 5051-5210
5051me that
5052	    // they are running on the browser and thus have no need for the source-map library.
5053	    var SourceMap = require('source-map');
5054	    SourceNode = SourceMap.SourceNode;
5055	  }
5056	} catch (err) {}
5057	/* NOP */
5058
5059	/* istanbul ignore if: tested but not covered in istanbul due to dist build  */
5060	if (!SourceNode) {
5061	  SourceNode = function (line, column, srcFile, chunks) {
5062	    this.src = '';
5063	    if (chunks) {
5064	      this.add(chunks);
5065	    }
5066	  };
5067	  /* istanbul ignore next */
5068	  SourceNode.prototype = {
5069	    add: function add(chunks) {
5070	      if (_utils.isArray(chunks)) {
5071	        chunks = chunks.join('');
5072	      }
5073	      this.src += chunks;
5074	    },
5075	    prepend: function prepend(chunks) {
5076	      if (_utils.isArray(chunks)) {
5077	        chunks = chunks.join('');
5078	      }
5079	      this.src = chunks + this.src;
5080	    },
5081	    toStringWithSourceMap: function toStringWithSourceMap() {
5082	      return { code: this.toString() };
5083	    },
5084	    toString: function toString() {
5085	      return this.src;
5086	    }
5087	  };
5088	}
5089
5090	function castChunk(chunk, codeGen, loc) {
5091	  if (_utils.isArray(chunk)) {
5092	    var ret = [];
5093
5094	    for (var i = 0, len = chunk.length; i < len; i++) {
5095	      ret.push(codeGen.wrap(chunk[i], loc));
5096	    }
5097	    return ret;
5098	  } else if (typeof chunk === 'boolean' || typeof chunk === 'number') {
5099	    // Handle primitives that the SourceNode will throw up on
5100	    return chunk + '';
5101	  }
5102	  return chunk;
5103	}
5104
5105	function CodeGen(srcFile) {
5106	  this.srcFile = srcFile;
5107	  this.source = [];
5108	}
5109
5110	CodeGen.prototype = {
5111	  isEmpty: function isEmpty() {
5112	    return !this.source.length;
5113	  },
5114	  prepend: function prepend(source, loc) {
5115	    this.source.unshift(this.wrap(source, loc));
5116	  },
5117	  push: function push(source, loc) {
5118	    this.source.push(this.wrap(source, loc));
5119	  },
5120
5121	  merge: function merge() {
5122	    var source = this.empty();
5123	    this.each(function (line) {
5124	      source.add(['  ', line, '\n']);
5125	    });
5126	    return source;
5127	  },
5128
5129	  each: function each(iter) {
5130	    for (var i = 0, len = this.source.length; i < len; i++) {
5131	      iter(this.source[i]);
5132	    }
5133	  },
5134
5135	  empty: function empty() {
5136	    var loc = this.currentLocation || { start: {} };
5137	    return new SourceNode(loc.start.line, loc.start.column, this.srcFile);
5138	  },
5139	  wrap: function wrap(chunk) {
5140	    var loc = arguments.length <= 1 || arguments[1] === undefined ? this.currentLocation || { start: {} } : arguments[1];
5141
5142	    if (chunk instanceof SourceNode) {
5143	      return chunk;
5144	    }
5145
5146	    chunk = castChunk(chunk, this, loc);
5147
5148	    return new SourceNode(loc.start.line, loc.start.column, this.srcFile, chunk);
5149	  },
5150
5151	  functionCall: function functionCall(fn, type, params) {
5152	    params = this.generateList(params);
5153	    return this.wrap([fn, type ? '.' + type + '(' : '(', params, ')']);
5154	  },
5155
5156	  quotedString: function quotedString(str) {
5157	    return '"' + (str + '').replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\n/g, '\\n').replace(/\r/g, '\\r').replace(/\u2028/g, '\\u2028') // Per Ecma-262 7.3 + 7.8.4
5158	    .replace(/\u2029/g, '\\u2029') + '"';
5159	  },
5160
5161	  objectLiteral: function objectLiteral(obj) {
5162	    // istanbul ignore next
5163
5164	    var _this = this;
5165
5166	    var pairs = [];
5167
5168	    _Object$keys(obj).forEach(function (key) {
5169	      var value = castChunk(obj[key], _this);
5170	      if (value !== 'undefined') {
5171	        pairs.push([_this.quotedString(key), ':', value]);
5172	      }
5173	    });
5174
5175	    var ret = this.generateList(pairs);
5176	    ret.prepend('{');
5177	    ret.add('}');
5178	    return ret;
5179	  },
5180
5181	  generateList: function generateList(entries) {
5182	    var ret = this.empty();
5183
5184	    for (var i = 0, len = entries.length; i < len; i++) {
5185	      if (i) {
5186	        ret.add(',');
5187	      }
5188
5189	      ret.add(castChunk(entries[i], this));
5190	    }
5191
5192	    return ret;
5193	  },
5194
5195	  generateArray: function generateArray(entries) {
5196	    var ret = this.generateList(entries);
5197	    ret.prepend('[');
5198	    ret.add(']');
5199
5200	    return ret;
5201	  }
5202	};
5203
5204	exports['default'] = CodeGen;
5205	module.exports = exports['default'];
5206
5207/***/ })
5208/******/ ])
5209});
5210;

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.