webpackJsonp([1],[
/* 0 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var platform_browser_dynamic_1 = __webpack_require__(401);
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(6);
	var file_upload_section_1 = __webpack_require__(454);
	var gettingStarted = __webpack_require__(426);
	var DemoComponent = (function () {
	    function DemoComponent() {
	    }
	    DemoComponent = __decorate([
	        core_1.Component({
	            selector: 'app',
	            template: "\n  <main class=\"bd-pageheader\">\n    <div class=\"container\">\n      <h1>ng2-file-upload</h1>\n      <p>The Angular2 File Upload directives</p>\n      <a class=\"btn btn-primary\" href=\"https://github.com/valor-software/ng2-file-upload\">View on GitHub</a>\n      <div class=\"row\">\n        <div class=\"col-lg-1\"><iframe src=\"https://ghbtns.com/github-btn.html?user=valor-software&repo=ng2-file-upload&type=star&count=true\" frameborder=\"0\" scrolling=\"0\" width=\"170px\" height=\"20px\"></iframe></div>\n        <div class=\"col-lg-1\"><iframe src=\"https://ghbtns.com/github-btn.html?user=valor-software&repo=ng2-file-upload&type=fork&count=true\" frameborder=\"0\" scrolling=\"0\" width=\"170px\" height=\"20px\"></iframe></div>\n      </div>\n    </div>\n  </main>\n\n  <div class=\"container\">\n    <section id=\"getting-started\">" + gettingStarted + "</section>\n\n    <file-upload-section class=\"col-md-12\"></file-upload-section>\n  </div>\n\n  <footer class=\"footer\">\n    <div class=\"container\">\n      <p class=\"text-muted text-center\"><a href=\"https://github.com/valor-software/ng2-file-upload\">ng2-file-upload</a> is maintained by <a href=\"https://github.com/valor-software\">valor-software</a>.</p>\n    </div>\n  </footer>\n  ",
	            directives: [
	                common_1.NgClass,
	                file_upload_section_1.FileUploadSectionComponent
	            ]
	        }), 
	        __metadata('design:paramtypes', [])
	    ], DemoComponent);
	    return DemoComponent;
	}());
	exports.DemoComponent = DemoComponent;
	platform_browser_dynamic_1.bootstrap(DemoComponent);


/***/ },
/* 1 */,
/* 2 */
/***/ function(module, exports, __webpack_require__) {

	/* WEBPACK VAR INJECTION */(function(module) {//! moment.js
	//! version : 2.13.0
	//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
	//! license : MIT
	//! momentjs.com
	
	;(function (global, factory) {
	     true ? module.exports = factory() :
	    typeof define === 'function' && define.amd ? define(factory) :
	    global.moment = factory()
	}(this, function () { 'use strict';
	
	    var hookCallback;
	
	    function utils_hooks__hooks () {
	        return hookCallback.apply(null, arguments);
	    }
	
	    // This is done to register the method called with moment()
	    // without creating circular dependencies.
	    function setHookCallback (callback) {
	        hookCallback = callback;
	    }
	
	    function isArray(input) {
	        return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';
	    }
	
	    function isDate(input) {
	        return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';
	    }
	
	    function map(arr, fn) {
	        var res = [], i;
	        for (i = 0; i < arr.length; ++i) {
	            res.push(fn(arr[i], i));
	        }
	        return res;
	    }
	
	    function hasOwnProp(a, b) {
	        return Object.prototype.hasOwnProperty.call(a, b);
	    }
	
	    function extend(a, b) {
	        for (var i in b) {
	            if (hasOwnProp(b, i)) {
	                a[i] = b[i];
	            }
	        }
	
	        if (hasOwnProp(b, 'toString')) {
	            a.toString = b.toString;
	        }
	
	        if (hasOwnProp(b, 'valueOf')) {
	            a.valueOf = b.valueOf;
	        }
	
	        return a;
	    }
	
	    function create_utc__createUTC (input, format, locale, strict) {
	        return createLocalOrUTC(input, format, locale, strict, true).utc();
	    }
	
	    function defaultParsingFlags() {
	        // We need to deep clone this object.
	        return {
	            empty           : false,
	            unusedTokens    : [],
	            unusedInput     : [],
	            overflow        : -2,
	            charsLeftOver   : 0,
	            nullInput       : false,
	            invalidMonth    : null,
	            invalidFormat   : false,
	            userInvalidated : false,
	            iso             : false,
	            parsedDateParts : [],
	            meridiem        : null
	        };
	    }
	
	    function getParsingFlags(m) {
	        if (m._pf == null) {
	            m._pf = defaultParsingFlags();
	        }
	        return m._pf;
	    }
	
	    var some;
	    if (Array.prototype.some) {
	        some = Array.prototype.some;
	    } else {
	        some = function (fun) {
	            var t = Object(this);
	            var len = t.length >>> 0;
	
	            for (var i = 0; i < len; i++) {
	                if (i in t && fun.call(this, t[i], i, t)) {
	                    return true;
	                }
	            }
	
	            return false;
	        };
	    }
	
	    function valid__isValid(m) {
	        if (m._isValid == null) {
	            var flags = getParsingFlags(m);
	            var parsedParts = some.call(flags.parsedDateParts, function (i) {
	                return i != null;
	            });
	            m._isValid = !isNaN(m._d.getTime()) &&
	                flags.overflow < 0 &&
	                !flags.empty &&
	                !flags.invalidMonth &&
	                !flags.invalidWeekday &&
	                !flags.nullInput &&
	                !flags.invalidFormat &&
	                !flags.userInvalidated &&
	                (!flags.meridiem || (flags.meridiem && parsedParts));
	
	            if (m._strict) {
	                m._isValid = m._isValid &&
	                    flags.charsLeftOver === 0 &&
	                    flags.unusedTokens.length === 0 &&
	                    flags.bigHour === undefined;
	            }
	        }
	        return m._isValid;
	    }
	
	    function valid__createInvalid (flags) {
	        var m = create_utc__createUTC(NaN);
	        if (flags != null) {
	            extend(getParsingFlags(m), flags);
	        }
	        else {
	            getParsingFlags(m).userInvalidated = true;
	        }
	
	        return m;
	    }
	
	    function isUndefined(input) {
	        return input === void 0;
	    }
	
	    // Plugins that add properties should also add the key here (null value),
	    // so we can properly clone ourselves.
	    var momentProperties = utils_hooks__hooks.momentProperties = [];
	
	    function copyConfig(to, from) {
	        var i, prop, val;
	
	        if (!isUndefined(from._isAMomentObject)) {
	            to._isAMomentObject = from._isAMomentObject;
	        }
	        if (!isUndefined(from._i)) {
	            to._i = from._i;
	        }
	        if (!isUndefined(from._f)) {
	            to._f = from._f;
	        }
	        if (!isUndefined(from._l)) {
	            to._l = from._l;
	        }
	        if (!isUndefined(from._strict)) {
	            to._strict = from._strict;
	        }
	        if (!isUndefined(from._tzm)) {
	            to._tzm = from._tzm;
	        }
	        if (!isUndefined(from._isUTC)) {
	            to._isUTC = from._isUTC;
	        }
	        if (!isUndefined(from._offset)) {
	            to._offset = from._offset;
	        }
	        if (!isUndefined(from._pf)) {
	            to._pf = getParsingFlags(from);
	        }
	        if (!isUndefined(from._locale)) {
	            to._locale = from._locale;
	        }
	
	        if (momentProperties.length > 0) {
	            for (i in momentProperties) {
	                prop = momentProperties[i];
	                val = from[prop];
	                if (!isUndefined(val)) {
	                    to[prop] = val;
	                }
	            }
	        }
	
	        return to;
	    }
	
	    var updateInProgress = false;
	
	    // Moment prototype object
	    function Moment(config) {
	        copyConfig(this, config);
	        this._d = new Date(config._d != null ? config._d.getTime() : NaN);
	        // Prevent infinite loop in case updateOffset creates new moment
	        // objects.
	        if (updateInProgress === false) {
	            updateInProgress = true;
	            utils_hooks__hooks.updateOffset(this);
	            updateInProgress = false;
	        }
	    }
	
	    function isMoment (obj) {
	        return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);
	    }
	
	    function absFloor (number) {
	        if (number < 0) {
	            return Math.ceil(number);
	        } else {
	            return Math.floor(number);
	        }
	    }
	
	    function toInt(argumentForCoercion) {
	        var coercedNumber = +argumentForCoercion,
	            value = 0;
	
	        if (coercedNumber !== 0 && isFinite(coercedNumber)) {
	            value = absFloor(coercedNumber);
	        }
	
	        return value;
	    }
	
	    // compare two arrays, return the number of differences
	    function compareArrays(array1, array2, dontConvert) {
	        var len = Math.min(array1.length, array2.length),
	            lengthDiff = Math.abs(array1.length - array2.length),
	            diffs = 0,
	            i;
	        for (i = 0; i < len; i++) {
	            if ((dontConvert && array1[i] !== array2[i]) ||
	                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {
	                diffs++;
	            }
	        }
	        return diffs + lengthDiff;
	    }
	
	    function warn(msg) {
	        if (utils_hooks__hooks.suppressDeprecationWarnings === false &&
	                (typeof console !==  'undefined') && console.warn) {
	            console.warn('Deprecation warning: ' + msg);
	        }
	    }
	
	    function deprecate(msg, fn) {
	        var firstTime = true;
	
	        return extend(function () {
	            if (utils_hooks__hooks.deprecationHandler != null) {
	                utils_hooks__hooks.deprecationHandler(null, msg);
	            }
	            if (firstTime) {
	                warn(msg + '\nArguments: ' + Array.prototype.slice.call(arguments).join(', ') + '\n' + (new Error()).stack);
	                firstTime = false;
	            }
	            return fn.apply(this, arguments);
	        }, fn);
	    }
	
	    var deprecations = {};
	
	    function deprecateSimple(name, msg) {
	        if (utils_hooks__hooks.deprecationHandler != null) {
	            utils_hooks__hooks.deprecationHandler(name, msg);
	        }
	        if (!deprecations[name]) {
	            warn(msg);
	            deprecations[name] = true;
	        }
	    }
	
	    utils_hooks__hooks.suppressDeprecationWarnings = false;
	    utils_hooks__hooks.deprecationHandler = null;
	
	    function isFunction(input) {
	        return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';
	    }
	
	    function isObject(input) {
	        return Object.prototype.toString.call(input) === '[object Object]';
	    }
	
	    function locale_set__set (config) {
	        var prop, i;
	        for (i in config) {
	            prop = config[i];
	            if (isFunction(prop)) {
	                this[i] = prop;
	            } else {
	                this['_' + i] = prop;
	            }
	        }
	        this._config = config;
	        // Lenient ordinal parsing accepts just a number in addition to
	        // number + (possibly) stuff coming from _ordinalParseLenient.
	        this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\d{1,2}/).source);
	    }
	
	    function mergeConfigs(parentConfig, childConfig) {
	        var res = extend({}, parentConfig), prop;
	        for (prop in childConfig) {
	            if (hasOwnProp(childConfig, prop)) {
	                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {
	                    res[prop] = {};
	                    extend(res[prop], parentConfig[prop]);
	                    extend(res[prop], childConfig[prop]);
	                } else if (childConfig[prop] != null) {
	                    res[prop] = childConfig[prop];
	                } else {
	                    delete res[prop];
	                }
	            }
	        }
	        return res;
	    }
	
	    function Locale(config) {
	        if (config != null) {
	            this.set(config);
	        }
	    }
	
	    var keys;
	
	    if (Object.keys) {
	        keys = Object.keys;
	    } else {
	        keys = function (obj) {
	            var i, res = [];
	            for (i in obj) {
	                if (hasOwnProp(obj, i)) {
	                    res.push(i);
	                }
	            }
	            return res;
	        };
	    }
	
	    // internal storage for locale config files
	    var locales = {};
	    var globalLocale;
	
	    function normalizeLocale(key) {
	        return key ? key.toLowerCase().replace('_', '-') : key;
	    }
	
	    // pick the locale from the array
	    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
	    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
	    function chooseLocale(names) {
	        var i = 0, j, next, locale, split;
	
	        while (i < names.length) {
	            split = normalizeLocale(names[i]).split('-');
	            j = split.length;
	            next = normalizeLocale(names[i + 1]);
	            next = next ? next.split('-') : null;
	            while (j > 0) {
	                locale = loadLocale(split.slice(0, j).join('-'));
	                if (locale) {
	                    return locale;
	                }
	                if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {
	                    //the next array item is better than a shallower substring of this one
	                    break;
	                }
	                j--;
	            }
	            i++;
	        }
	        return null;
	    }
	
	    function loadLocale(name) {
	        var oldLocale = null;
	        // TODO: Find a better way to register and load all the locales in Node
	        if (!locales[name] && (typeof module !== 'undefined') &&
	                module && module.exports) {
	            try {
	                oldLocale = globalLocale._abbr;
	                __webpack_require__(427)("./" + name);
	                // because defineLocale currently also sets the global locale, we
	                // want to undo that for lazy loaded locales
	                locale_locales__getSetGlobalLocale(oldLocale);
	            } catch (e) { }
	        }
	        return locales[name];
	    }
	
	    // This function will load locale and then set the global locale.  If
	    // no arguments are passed in, it will simply return the current global
	    // locale key.
	    function locale_locales__getSetGlobalLocale (key, values) {
	        var data;
	        if (key) {
	            if (isUndefined(values)) {
	                data = locale_locales__getLocale(key);
	            }
	            else {
	                data = defineLocale(key, values);
	            }
	
	            if (data) {
	                // moment.duration._locale = moment._locale = data;
	                globalLocale = data;
	            }
	        }
	
	        return globalLocale._abbr;
	    }
	
	    function defineLocale (name, config) {
	        if (config !== null) {
	            config.abbr = name;
	            if (locales[name] != null) {
	                deprecateSimple('defineLocaleOverride',
	                        'use moment.updateLocale(localeName, config) to change ' +
	                        'an existing locale. moment.defineLocale(localeName, ' +
	                        'config) should only be used for creating a new locale');
	                config = mergeConfigs(locales[name]._config, config);
	            } else if (config.parentLocale != null) {
	                if (locales[config.parentLocale] != null) {
	                    config = mergeConfigs(locales[config.parentLocale]._config, config);
	                } else {
	                    // treat as if there is no base config
	                    deprecateSimple('parentLocaleUndefined',
	                            'specified parentLocale is not defined yet');
	                }
	            }
	            locales[name] = new Locale(config);
	
	            // backwards compat for now: also set the locale
	            locale_locales__getSetGlobalLocale(name);
	
	            return locales[name];
	        } else {
	            // useful for testing
	            delete locales[name];
	            return null;
	        }
	    }
	
	    function updateLocale(name, config) {
	        if (config != null) {
	            var locale;
	            if (locales[name] != null) {
	                config = mergeConfigs(locales[name]._config, config);
	            }
	            locale = new Locale(config);
	            locale.parentLocale = locales[name];
	            locales[name] = locale;
	
	            // backwards compat for now: also set the locale
	            locale_locales__getSetGlobalLocale(name);
	        } else {
	            // pass null for config to unupdate, useful for tests
	            if (locales[name] != null) {
	                if (locales[name].parentLocale != null) {
	                    locales[name] = locales[name].parentLocale;
	                } else if (locales[name] != null) {
	                    delete locales[name];
	                }
	            }
	        }
	        return locales[name];
	    }
	
	    // returns locale data
	    function locale_locales__getLocale (key) {
	        var locale;
	
	        if (key && key._locale && key._locale._abbr) {
	            key = key._locale._abbr;
	        }
	
	        if (!key) {
	            return globalLocale;
	        }
	
	        if (!isArray(key)) {
	            //short-circuit everything else
	            locale = loadLocale(key);
	            if (locale) {
	                return locale;
	            }
	            key = [key];
	        }
	
	        return chooseLocale(key);
	    }
	
	    function locale_locales__listLocales() {
	        return keys(locales);
	    }
	
	    var aliases = {};
	
	    function addUnitAlias (unit, shorthand) {
	        var lowerCase = unit.toLowerCase();
	        aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;
	    }
	
	    function normalizeUnits(units) {
	        return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;
	    }
	
	    function normalizeObjectUnits(inputObject) {
	        var normalizedInput = {},
	            normalizedProp,
	            prop;
	
	        for (prop in inputObject) {
	            if (hasOwnProp(inputObject, prop)) {
	                normalizedProp = normalizeUnits(prop);
	                if (normalizedProp) {
	                    normalizedInput[normalizedProp] = inputObject[prop];
	                }
	            }
	        }
	
	        return normalizedInput;
	    }
	
	    function makeGetSet (unit, keepTime) {
	        return function (value) {
	            if (value != null) {
	                get_set__set(this, unit, value);
	                utils_hooks__hooks.updateOffset(this, keepTime);
	                return this;
	            } else {
	                return get_set__get(this, unit);
	            }
	        };
	    }
	
	    function get_set__get (mom, unit) {
	        return mom.isValid() ?
	            mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;
	    }
	
	    function get_set__set (mom, unit, value) {
	        if (mom.isValid()) {
	            mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
	        }
	    }
	
	    // MOMENTS
	
	    function getSet (units, value) {
	        var unit;
	        if (typeof units === 'object') {
	            for (unit in units) {
	                this.set(unit, units[unit]);
	            }
	        } else {
	            units = normalizeUnits(units);
	            if (isFunction(this[units])) {
	                return this[units](value);
	            }
	        }
	        return this;
	    }
	
	    function zeroFill(number, targetLength, forceSign) {
	        var absNumber = '' + Math.abs(number),
	            zerosToFill = targetLength - absNumber.length,
	            sign = number >= 0;
	        return (sign ? (forceSign ? '+' : '') : '-') +
	            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;
	    }
	
	    var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;
	
	    var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g;
	
	    var formatFunctions = {};
	
	    var formatTokenFunctions = {};
	
	    // token:    'M'
	    // padded:   ['MM', 2]
	    // ordinal:  'Mo'
	    // callback: function () { this.month() + 1 }
	    function addFormatToken (token, padded, ordinal, callback) {
	        var func = callback;
	        if (typeof callback === 'string') {
	            func = function () {
	                return this[callback]();
	            };
	        }
	        if (token) {
	            formatTokenFunctions[token] = func;
	        }
	        if (padded) {
	            formatTokenFunctions[padded[0]] = function () {
	                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
	            };
	        }
	        if (ordinal) {
	            formatTokenFunctions[ordinal] = function () {
	                return this.localeData().ordinal(func.apply(this, arguments), token);
	            };
	        }
	    }
	
	    function removeFormattingTokens(input) {
	        if (input.match(/\[[\s\S]/)) {
	            return input.replace(/^\[|\]$/g, '');
	        }
	        return input.replace(/\\/g, '');
	    }
	
	    function makeFormatFunction(format) {
	        var array = format.match(formattingTokens), i, length;
	
	        for (i = 0, length = array.length; i < length; i++) {
	            if (formatTokenFunctions[array[i]]) {
	                array[i] = formatTokenFunctions[array[i]];
	            } else {
	                array[i] = removeFormattingTokens(array[i]);
	            }
	        }
	
	        return function (mom) {
	            var output = '', i;
	            for (i = 0; i < length; i++) {
	                output += array[i] instanceof Function ? array[i].call(mom, format) : array[i];
	            }
	            return output;
	        };
	    }
	
	    // format date using native date object
	    function formatMoment(m, format) {
	        if (!m.isValid()) {
	            return m.localeData().invalidDate();
	        }
	
	        format = expandFormat(format, m.localeData());
	        formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);
	
	        return formatFunctions[format](m);
	    }
	
	    function expandFormat(format, locale) {
	        var i = 5;
	
	        function replaceLongDateFormatTokens(input) {
	            return locale.longDateFormat(input) || input;
	        }
	
	        localFormattingTokens.lastIndex = 0;
	        while (i >= 0 && localFormattingTokens.test(format)) {
	            format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);
	            localFormattingTokens.lastIndex = 0;
	            i -= 1;
	        }
	
	        return format;
	    }
	
	    var match1         = /\d/;            //       0 - 9
	    var match2         = /\d\d/;          //      00 - 99
	    var match3         = /\d{3}/;         //     000 - 999
	    var match4         = /\d{4}/;         //    0000 - 9999
	    var match6         = /[+-]?\d{6}/;    // -999999 - 999999
	    var match1to2      = /\d\d?/;         //       0 - 99
	    var match3to4      = /\d\d\d\d?/;     //     999 - 9999
	    var match5to6      = /\d\d\d\d\d\d?/; //   99999 - 999999
	    var match1to3      = /\d{1,3}/;       //       0 - 999
	    var match1to4      = /\d{1,4}/;       //       0 - 9999
	    var match1to6      = /[+-]?\d{1,6}/;  // -999999 - 999999
	
	    var matchUnsigned  = /\d+/;           //       0 - inf
	    var matchSigned    = /[+-]?\d+/;      //    -inf - inf
	
	    var matchOffset    = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z
	    var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z
	
	    var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123
	
	    // any word (or two) characters or numbers including two/three word month in arabic.
	    // includes scottish gaelic two word and hyphenated months
	    var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i;
	
	
	    var regexes = {};
	
	    function addRegexToken (token, regex, strictRegex) {
	        regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {
	            return (isStrict && strictRegex) ? strictRegex : regex;
	        };
	    }
	
	    function getParseRegexForToken (token, config) {
	        if (!hasOwnProp(regexes, token)) {
	            return new RegExp(unescapeFormat(token));
	        }
	
	        return regexes[token](config._strict, config._locale);
	    }
	
	    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
	    function unescapeFormat(s) {
	        return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) {
	            return p1 || p2 || p3 || p4;
	        }));
	    }
	
	    function regexEscape(s) {
	        return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
	    }
	
	    var tokens = {};
	
	    function addParseToken (token, callback) {
	        var i, func = callback;
	        if (typeof token === 'string') {
	            token = [token];
	        }
	        if (typeof callback === 'number') {
	            func = function (input, array) {
	                array[callback] = toInt(input);
	            };
	        }
	        for (i = 0; i < token.length; i++) {
	            tokens[token[i]] = func;
	        }
	    }
	
	    function addWeekParseToken (token, callback) {
	        addParseToken(token, function (input, array, config, token) {
	            config._w = config._w || {};
	            callback(input, config._w, config, token);
	        });
	    }
	
	    function addTimeToArrayFromToken(token, input, config) {
	        if (input != null && hasOwnProp(tokens, token)) {
	            tokens[token](input, config._a, config, token);
	        }
	    }
	
	    var YEAR = 0;
	    var MONTH = 1;
	    var DATE = 2;
	    var HOUR = 3;
	    var MINUTE = 4;
	    var SECOND = 5;
	    var MILLISECOND = 6;
	    var WEEK = 7;
	    var WEEKDAY = 8;
	
	    var indexOf;
	
	    if (Array.prototype.indexOf) {
	        indexOf = Array.prototype.indexOf;
	    } else {
	        indexOf = function (o) {
	            // I know
	            var i;
	            for (i = 0; i < this.length; ++i) {
	                if (this[i] === o) {
	                    return i;
	                }
	            }
	            return -1;
	        };
	    }
	
	    function daysInMonth(year, month) {
	        return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();
	    }
	
	    // FORMATTING
	
	    addFormatToken('M', ['MM', 2], 'Mo', function () {
	        return this.month() + 1;
	    });
	
	    addFormatToken('MMM', 0, 0, function (format) {
	        return this.localeData().monthsShort(this, format);
	    });
	
	    addFormatToken('MMMM', 0, 0, function (format) {
	        return this.localeData().months(this, format);
	    });
	
	    // ALIASES
	
	    addUnitAlias('month', 'M');
	
	    // PARSING
	
	    addRegexToken('M',    match1to2);
	    addRegexToken('MM',   match1to2, match2);
	    addRegexToken('MMM',  function (isStrict, locale) {
	        return locale.monthsShortRegex(isStrict);
	    });
	    addRegexToken('MMMM', function (isStrict, locale) {
	        return locale.monthsRegex(isStrict);
	    });
	
	    addParseToken(['M', 'MM'], function (input, array) {
	        array[MONTH] = toInt(input) - 1;
	    });
	
	    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
	        var month = config._locale.monthsParse(input, token, config._strict);
	        // if we didn't find a month name, mark the date as invalid.
	        if (month != null) {
	            array[MONTH] = month;
	        } else {
	            getParsingFlags(config).invalidMonth = input;
	        }
	    });
	
	    // LOCALES
	
	    var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/;
	    var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');
	    function localeMonths (m, format) {
	        return isArray(this._months) ? this._months[m.month()] :
	            this._months[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];
	    }
	
	    var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');
	    function localeMonthsShort (m, format) {
	        return isArray(this._monthsShort) ? this._monthsShort[m.month()] :
	            this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];
	    }
	
	    function units_month__handleStrictParse(monthName, format, strict) {
	        var i, ii, mom, llc = monthName.toLocaleLowerCase();
	        if (!this._monthsParse) {
	            // this is not used
	            this._monthsParse = [];
	            this._longMonthsParse = [];
	            this._shortMonthsParse = [];
	            for (i = 0; i < 12; ++i) {
	                mom = create_utc__createUTC([2000, i]);
	                this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();
	                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();
	            }
	        }
	
	        if (strict) {
	            if (format === 'MMM') {
	                ii = indexOf.call(this._shortMonthsParse, llc);
	                return ii !== -1 ? ii : null;
	            } else {
	                ii = indexOf.call(this._longMonthsParse, llc);
	                return ii !== -1 ? ii : null;
	            }
	        } else {
	            if (format === 'MMM') {
	                ii = indexOf.call(this._shortMonthsParse, llc);
	                if (ii !== -1) {
	                    return ii;
	                }
	                ii = indexOf.call(this._longMonthsParse, llc);
	                return ii !== -1 ? ii : null;
	            } else {
	                ii = indexOf.call(this._longMonthsParse, llc);
	                if (ii !== -1) {
	                    return ii;
	                }
	                ii = indexOf.call(this._shortMonthsParse, llc);
	                return ii !== -1 ? ii : null;
	            }
	        }
	    }
	
	    function localeMonthsParse (monthName, format, strict) {
	        var i, mom, regex;
	
	        if (this._monthsParseExact) {
	            return units_month__handleStrictParse.call(this, monthName, format, strict);
	        }
	
	        if (!this._monthsParse) {
	            this._monthsParse = [];
	            this._longMonthsParse = [];
	            this._shortMonthsParse = [];
	        }
	
	        // TODO: add sorting
	        // Sorting makes sure if one month (or abbr) is a prefix of another
	        // see sorting in computeMonthsParse
	        for (i = 0; i < 12; i++) {
	            // make the regex if we don't have it already
	            mom = create_utc__createUTC([2000, i]);
	            if (strict && !this._longMonthsParse[i]) {
	                this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');
	                this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');
	            }
	            if (!strict && !this._monthsParse[i]) {
	                regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
	                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
	            }
	            // test the regex
	            if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {
	                return i;
	            } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {
	                return i;
	            } else if (!strict && this._monthsParse[i].test(monthName)) {
	                return i;
	            }
	        }
	    }
	
	    // MOMENTS
	
	    function setMonth (mom, value) {
	        var dayOfMonth;
	
	        if (!mom.isValid()) {
	            // No op
	            return mom;
	        }
	
	        if (typeof value === 'string') {
	            if (/^\d+$/.test(value)) {
	                value = toInt(value);
	            } else {
	                value = mom.localeData().monthsParse(value);
	                // TODO: Another silent failure?
	                if (typeof value !== 'number') {
	                    return mom;
	                }
	            }
	        }
	
	        dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));
	        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
	        return mom;
	    }
	
	    function getSetMonth (value) {
	        if (value != null) {
	            setMonth(this, value);
	            utils_hooks__hooks.updateOffset(this, true);
	            return this;
	        } else {
	            return get_set__get(this, 'Month');
	        }
	    }
	
	    function getDaysInMonth () {
	        return daysInMonth(this.year(), this.month());
	    }
	
	    var defaultMonthsShortRegex = matchWord;
	    function monthsShortRegex (isStrict) {
	        if (this._monthsParseExact) {
	            if (!hasOwnProp(this, '_monthsRegex')) {
	                computeMonthsParse.call(this);
	            }
	            if (isStrict) {
	                return this._monthsShortStrictRegex;
	            } else {
	                return this._monthsShortRegex;
	            }
	        } else {
	            return this._monthsShortStrictRegex && isStrict ?
	                this._monthsShortStrictRegex : this._monthsShortRegex;
	        }
	    }
	
	    var defaultMonthsRegex = matchWord;
	    function monthsRegex (isStrict) {
	        if (this._monthsParseExact) {
	            if (!hasOwnProp(this, '_monthsRegex')) {
	                computeMonthsParse.call(this);
	            }
	            if (isStrict) {
	                return this._monthsStrictRegex;
	            } else {
	                return this._monthsRegex;
	            }
	        } else {
	            return this._monthsStrictRegex && isStrict ?
	                this._monthsStrictRegex : this._monthsRegex;
	        }
	    }
	
	    function computeMonthsParse () {
	        function cmpLenRev(a, b) {
	            return b.length - a.length;
	        }
	
	        var shortPieces = [], longPieces = [], mixedPieces = [],
	            i, mom;
	        for (i = 0; i < 12; i++) {
	            // make the regex if we don't have it already
	            mom = create_utc__createUTC([2000, i]);
	            shortPieces.push(this.monthsShort(mom, ''));
	            longPieces.push(this.months(mom, ''));
	            mixedPieces.push(this.months(mom, ''));
	            mixedPieces.push(this.monthsShort(mom, ''));
	        }
	        // Sorting makes sure if one month (or abbr) is a prefix of another it
	        // will match the longer piece.
	        shortPieces.sort(cmpLenRev);
	        longPieces.sort(cmpLenRev);
	        mixedPieces.sort(cmpLenRev);
	        for (i = 0; i < 12; i++) {
	            shortPieces[i] = regexEscape(shortPieces[i]);
	            longPieces[i] = regexEscape(longPieces[i]);
	            mixedPieces[i] = regexEscape(mixedPieces[i]);
	        }
	
	        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
	        this._monthsShortRegex = this._monthsRegex;
	        this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');
	        this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');
	    }
	
	    function checkOverflow (m) {
	        var overflow;
	        var a = m._a;
	
	        if (a && getParsingFlags(m).overflow === -2) {
	            overflow =
	                a[MONTH]       < 0 || a[MONTH]       > 11  ? MONTH :
	                a[DATE]        < 1 || a[DATE]        > daysInMonth(a[YEAR], a[MONTH]) ? DATE :
	                a[HOUR]        < 0 || a[HOUR]        > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :
	                a[MINUTE]      < 0 || a[MINUTE]      > 59  ? MINUTE :
	                a[SECOND]      < 0 || a[SECOND]      > 59  ? SECOND :
	                a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :
	                -1;
	
	            if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
	                overflow = DATE;
	            }
	            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
	                overflow = WEEK;
	            }
	            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
	                overflow = WEEKDAY;
	            }
	
	            getParsingFlags(m).overflow = overflow;
	        }
	
	        return m;
	    }
	
	    // iso 8601 regex
	    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)
	    var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/;
	    var basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/;
	
	    var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/;
	
	    var isoDates = [
	        ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/],
	        ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/],
	        ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/],
	        ['GGGG-[W]WW', /\d{4}-W\d\d/, false],
	        ['YYYY-DDD', /\d{4}-\d{3}/],
	        ['YYYY-MM', /\d{4}-\d\d/, false],
	        ['YYYYYYMMDD', /[+-]\d{10}/],
	        ['YYYYMMDD', /\d{8}/],
	        // YYYYMM is NOT allowed by the standard
	        ['GGGG[W]WWE', /\d{4}W\d{3}/],
	        ['GGGG[W]WW', /\d{4}W\d{2}/, false],
	        ['YYYYDDD', /\d{7}/]
	    ];
	
	    // iso time formats and regexes
	    var isoTimes = [
	        ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/],
	        ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/],
	        ['HH:mm:ss', /\d\d:\d\d:\d\d/],
	        ['HH:mm', /\d\d:\d\d/],
	        ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/],
	        ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/],
	        ['HHmmss', /\d\d\d\d\d\d/],
	        ['HHmm', /\d\d\d\d/],
	        ['HH', /\d\d/]
	    ];
	
	    var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i;
	
	    // date from iso format
	    function configFromISO(config) {
	        var i, l,
	            string = config._i,
	            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
	            allowTime, dateFormat, timeFormat, tzFormat;
	
	        if (match) {
	            getParsingFlags(config).iso = true;
	
	            for (i = 0, l = isoDates.length; i < l; i++) {
	                if (isoDates[i][1].exec(match[1])) {
	                    dateFormat = isoDates[i][0];
	                    allowTime = isoDates[i][2] !== false;
	                    break;
	                }
	            }
	            if (dateFormat == null) {
	                config._isValid = false;
	                return;
	            }
	            if (match[3]) {
	                for (i = 0, l = isoTimes.length; i < l; i++) {
	                    if (isoTimes[i][1].exec(match[3])) {
	                        // match[2] should be 'T' or space
	                        timeFormat = (match[2] || ' ') + isoTimes[i][0];
	                        break;
	                    }
	                }
	                if (timeFormat == null) {
	                    config._isValid = false;
	                    return;
	                }
	            }
	            if (!allowTime && timeFormat != null) {
	                config._isValid = false;
	                return;
	            }
	            if (match[4]) {
	                if (tzRegex.exec(match[4])) {
	                    tzFormat = 'Z';
	                } else {
	                    config._isValid = false;
	                    return;
	                }
	            }
	            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
	            configFromStringAndFormat(config);
	        } else {
	            config._isValid = false;
	        }
	    }
	
	    // date from iso format or fallback
	    function configFromString(config) {
	        var matched = aspNetJsonRegex.exec(config._i);
	
	        if (matched !== null) {
	            config._d = new Date(+matched[1]);
	            return;
	        }
	
	        configFromISO(config);
	        if (config._isValid === false) {
	            delete config._isValid;
	            utils_hooks__hooks.createFromInputFallback(config);
	        }
	    }
	
	    utils_hooks__hooks.createFromInputFallback = deprecate(
	        'moment construction falls back to js Date. This is ' +
	        'discouraged and will be removed in upcoming major ' +
	        'release. Please refer to ' +
	        'https://github.com/moment/moment/issues/1407 for more info.',
	        function (config) {
	            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
	        }
	    );
	
	    function createDate (y, m, d, h, M, s, ms) {
	        //can't just apply() to create a date:
	        //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply
	        var date = new Date(y, m, d, h, M, s, ms);
	
	        //the date constructor remaps years 0-99 to 1900-1999
	        if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {
	            date.setFullYear(y);
	        }
	        return date;
	    }
	
	    function createUTCDate (y) {
	        var date = new Date(Date.UTC.apply(null, arguments));
	
	        //the Date.UTC function remaps years 0-99 to 1900-1999
	        if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {
	            date.setUTCFullYear(y);
	        }
	        return date;
	    }
	
	    // FORMATTING
	
	    addFormatToken('Y', 0, 0, function () {
	        var y = this.year();
	        return y <= 9999 ? '' + y : '+' + y;
	    });
	
	    addFormatToken(0, ['YY', 2], 0, function () {
	        return this.year() % 100;
	    });
	
	    addFormatToken(0, ['YYYY',   4],       0, 'year');
	    addFormatToken(0, ['YYYYY',  5],       0, 'year');
	    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
	
	    // ALIASES
	
	    addUnitAlias('year', 'y');
	
	    // PARSING
	
	    addRegexToken('Y',      matchSigned);
	    addRegexToken('YY',     match1to2, match2);
	    addRegexToken('YYYY',   match1to4, match4);
	    addRegexToken('YYYYY',  match1to6, match6);
	    addRegexToken('YYYYYY', match1to6, match6);
	
	    addParseToken(['YYYYY', 'YYYYYY'], YEAR);
	    addParseToken('YYYY', function (input, array) {
	        array[YEAR] = input.length === 2 ? utils_hooks__hooks.parseTwoDigitYear(input) : toInt(input);
	    });
	    addParseToken('YY', function (input, array) {
	        array[YEAR] = utils_hooks__hooks.parseTwoDigitYear(input);
	    });
	    addParseToken('Y', function (input, array) {
	        array[YEAR] = parseInt(input, 10);
	    });
	
	    // HELPERS
	
	    function daysInYear(year) {
	        return isLeapYear(year) ? 366 : 365;
	    }
	
	    function isLeapYear(year) {
	        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
	    }
	
	    // HOOKS
	
	    utils_hooks__hooks.parseTwoDigitYear = function (input) {
	        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
	    };
	
	    // MOMENTS
	
	    var getSetYear = makeGetSet('FullYear', true);
	
	    function getIsLeapYear () {
	        return isLeapYear(this.year());
	    }
	
	    // start-of-first-week - start-of-year
	    function firstWeekOffset(year, dow, doy) {
	        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
	            fwd = 7 + dow - doy,
	            // first-week day local weekday -- which local weekday is fwd
	            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
	
	        return -fwdlw + fwd - 1;
	    }
	
	    //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
	    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
	        var localWeekday = (7 + weekday - dow) % 7,
	            weekOffset = firstWeekOffset(year, dow, doy),
	            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
	            resYear, resDayOfYear;
	
	        if (dayOfYear <= 0) {
	            resYear = year - 1;
	            resDayOfYear = daysInYear(resYear) + dayOfYear;
	        } else if (dayOfYear > daysInYear(year)) {
	            resYear = year + 1;
	            resDayOfYear = dayOfYear - daysInYear(year);
	        } else {
	            resYear = year;
	            resDayOfYear = dayOfYear;
	        }
	
	        return {
	            year: resYear,
	            dayOfYear: resDayOfYear
	        };
	    }
	
	    function weekOfYear(mom, dow, doy) {
	        var weekOffset = firstWeekOffset(mom.year(), dow, doy),
	            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
	            resWeek, resYear;
	
	        if (week < 1) {
	            resYear = mom.year() - 1;
	            resWeek = week + weeksInYear(resYear, dow, doy);
	        } else if (week > weeksInYear(mom.year(), dow, doy)) {
	            resWeek = week - weeksInYear(mom.year(), dow, doy);
	            resYear = mom.year() + 1;
	        } else {
	            resYear = mom.year();
	            resWeek = week;
	        }
	
	        return {
	            week: resWeek,
	            year: resYear
	        };
	    }
	
	    function weeksInYear(year, dow, doy) {
	        var weekOffset = firstWeekOffset(year, dow, doy),
	            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
	        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
	    }
	
	    // Pick the first defined of two or three arguments.
	    function defaults(a, b, c) {
	        if (a != null) {
	            return a;
	        }
	        if (b != null) {
	            return b;
	        }
	        return c;
	    }
	
	    function currentDateArray(config) {
	        // hooks is actually the exported moment object
	        var nowValue = new Date(utils_hooks__hooks.now());
	        if (config._useUTC) {
	            return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];
	        }
	        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
	    }
	
	    // convert an array to a date.
	    // the array should mirror the parameters below
	    // note: all values past the year are optional and will default to the lowest possible value.
	    // [year, month, day , hour, minute, second, millisecond]
	    function configFromArray (config) {
	        var i, date, input = [], currentDate, yearToUse;
	
	        if (config._d) {
	            return;
	        }
	
	        currentDate = currentDateArray(config);
	
	        //compute day of the year from weeks and weekdays
	        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
	            dayOfYearFromWeekInfo(config);
	        }
	
	        //if the day of the year is set, figure out what it is
	        if (config._dayOfYear) {
	            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
	
	            if (config._dayOfYear > daysInYear(yearToUse)) {
	                getParsingFlags(config)._overflowDayOfYear = true;
	            }
	
	            date = createUTCDate(yearToUse, 0, config._dayOfYear);
	            config._a[MONTH] = date.getUTCMonth();
	            config._a[DATE] = date.getUTCDate();
	        }
	
	        // Default to current date.
	        // * if no year, month, day of month are given, default to today
	        // * if day of month is given, default month and year
	        // * if month is given, default only year
	        // * if year is given, don't default anything
	        for (i = 0; i < 3 && config._a[i] == null; ++i) {
	            config._a[i] = input[i] = currentDate[i];
	        }
	
	        // Zero out whatever was not defaulted, including time
	        for (; i < 7; i++) {
	            config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];
	        }
	
	        // Check for 24:00:00.000
	        if (config._a[HOUR] === 24 &&
	                config._a[MINUTE] === 0 &&
	                config._a[SECOND] === 0 &&
	                config._a[MILLISECOND] === 0) {
	            config._nextDay = true;
	            config._a[HOUR] = 0;
	        }
	
	        config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);
	        // Apply timezone offset from input. The actual utcOffset can be changed
	        // with parseZone.
	        if (config._tzm != null) {
	            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
	        }
	
	        if (config._nextDay) {
	            config._a[HOUR] = 24;
	        }
	    }
	
	    function dayOfYearFromWeekInfo(config) {
	        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;
	
	        w = config._w;
	        if (w.GG != null || w.W != null || w.E != null) {
	            dow = 1;
	            doy = 4;
	
	            // TODO: We need to take the current isoWeekYear, but that depends on
	            // how we interpret now (local, utc, fixed offset). So create
	            // a now version of current config (take local/utc/offset flags, and
	            // create now).
	            weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(local__createLocal(), 1, 4).year);
	            week = defaults(w.W, 1);
	            weekday = defaults(w.E, 1);
	            if (weekday < 1 || weekday > 7) {
	                weekdayOverflow = true;
	            }
	        } else {
	            dow = config._locale._week.dow;
	            doy = config._locale._week.doy;
	
	            weekYear = defaults(w.gg, config._a[YEAR], weekOfYear(local__createLocal(), dow, doy).year);
	            week = defaults(w.w, 1);
	
	            if (w.d != null) {
	                // weekday -- low day numbers are considered next week
	                weekday = w.d;
	                if (weekday < 0 || weekday > 6) {
	                    weekdayOverflow = true;
	                }
	            } else if (w.e != null) {
	                // local weekday -- counting starts from begining of week
	                weekday = w.e + dow;
	                if (w.e < 0 || w.e > 6) {
	                    weekdayOverflow = true;
	                }
	            } else {
	                // default to begining of week
	                weekday = dow;
	            }
	        }
	        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
	            getParsingFlags(config)._overflowWeeks = true;
	        } else if (weekdayOverflow != null) {
	            getParsingFlags(config)._overflowWeekday = true;
	        } else {
	            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
	            config._a[YEAR] = temp.year;
	            config._dayOfYear = temp.dayOfYear;
	        }
	    }
	
	    // constant that refers to the ISO standard
	    utils_hooks__hooks.ISO_8601 = function () {};
	
	    // date from string and format string
	    function configFromStringAndFormat(config) {
	        // TODO: Move this to another part of the creation flow to prevent circular deps
	        if (config._f === utils_hooks__hooks.ISO_8601) {
	            configFromISO(config);
	            return;
	        }
	
	        config._a = [];
	        getParsingFlags(config).empty = true;
	
	        // This array is used to make a Date, either with `new Date` or `Date.UTC`
	        var string = '' + config._i,
	            i, parsedInput, tokens, token, skipped,
	            stringLength = string.length,
	            totalParsedInputLength = 0;
	
	        tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];
	
	        for (i = 0; i < tokens.length; i++) {
	            token = tokens[i];
	            parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];
	            // console.log('token', token, 'parsedInput', parsedInput,
	            //         'regex', getParseRegexForToken(token, config));
	            if (parsedInput) {
	                skipped = string.substr(0, string.indexOf(parsedInput));
	                if (skipped.length > 0) {
	                    getParsingFlags(config).unusedInput.push(skipped);
	                }
	                string = string.slice(string.indexOf(parsedInput) + parsedInput.length);
	                totalParsedInputLength += parsedInput.length;
	            }
	            // don't parse if it's not a known token
	            if (formatTokenFunctions[token]) {
	                if (parsedInput) {
	                    getParsingFlags(config).empty = false;
	                }
	                else {
	                    getParsingFlags(config).unusedTokens.push(token);
	                }
	                addTimeToArrayFromToken(token, parsedInput, config);
	            }
	            else if (config._strict && !parsedInput) {
	                getParsingFlags(config).unusedTokens.push(token);
	            }
	        }
	
	        // add remaining unparsed input length to the string
	        getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;
	        if (string.length > 0) {
	            getParsingFlags(config).unusedInput.push(string);
	        }
	
	        // clear _12h flag if hour is <= 12
	        if (getParsingFlags(config).bigHour === true &&
	                config._a[HOUR] <= 12 &&
	                config._a[HOUR] > 0) {
	            getParsingFlags(config).bigHour = undefined;
	        }
	
	        getParsingFlags(config).parsedDateParts = config._a.slice(0);
	        getParsingFlags(config).meridiem = config._meridiem;
	        // handle meridiem
	        config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);
	
	        configFromArray(config);
	        checkOverflow(config);
	    }
	
	
	    function meridiemFixWrap (locale, hour, meridiem) {
	        var isPm;
	
	        if (meridiem == null) {
	            // nothing to do
	            return hour;
	        }
	        if (locale.meridiemHour != null) {
	            return locale.meridiemHour(hour, meridiem);
	        } else if (locale.isPM != null) {
	            // Fallback
	            isPm = locale.isPM(meridiem);
	            if (isPm && hour < 12) {
	                hour += 12;
	            }
	            if (!isPm && hour === 12) {
	                hour = 0;
	            }
	            return hour;
	        } else {
	            // this is not supposed to happen
	            return hour;
	        }
	    }
	
	    // date from string and array of format strings
	    function configFromStringAndArray(config) {
	        var tempConfig,
	            bestMoment,
	
	            scoreToBeat,
	            i,
	            currentScore;
	
	        if (config._f.length === 0) {
	            getParsingFlags(config).invalidFormat = true;
	            config._d = new Date(NaN);
	            return;
	        }
	
	        for (i = 0; i < config._f.length; i++) {
	            currentScore = 0;
	            tempConfig = copyConfig({}, config);
	            if (config._useUTC != null) {
	                tempConfig._useUTC = config._useUTC;
	            }
	            tempConfig._f = config._f[i];
	            configFromStringAndFormat(tempConfig);
	
	            if (!valid__isValid(tempConfig)) {
	                continue;
	            }
	
	            // if there is any input that was not parsed add a penalty for that format
	            currentScore += getParsingFlags(tempConfig).charsLeftOver;
	
	            //or tokens
	            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
	
	            getParsingFlags(tempConfig).score = currentScore;
	
	            if (scoreToBeat == null || currentScore < scoreToBeat) {
	                scoreToBeat = currentScore;
	                bestMoment = tempConfig;
	            }
	        }
	
	        extend(config, bestMoment || tempConfig);
	    }
	
	    function configFromObject(config) {
	        if (config._d) {
	            return;
	        }
	
	        var i = normalizeObjectUnits(config._i);
	        config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {
	            return obj && parseInt(obj, 10);
	        });
	
	        configFromArray(config);
	    }
	
	    function createFromConfig (config) {
	        var res = new Moment(checkOverflow(prepareConfig(config)));
	        if (res._nextDay) {
	            // Adding is smart enough around DST
	            res.add(1, 'd');
	            res._nextDay = undefined;
	        }
	
	        return res;
	    }
	
	    function prepareConfig (config) {
	        var input = config._i,
	            format = config._f;
	
	        config._locale = config._locale || locale_locales__getLocale(config._l);
	
	        if (input === null || (format === undefined && input === '')) {
	            return valid__createInvalid({nullInput: true});
	        }
	
	        if (typeof input === 'string') {
	            config._i = input = config._locale.preparse(input);
	        }
	
	        if (isMoment(input)) {
	            return new Moment(checkOverflow(input));
	        } else if (isArray(format)) {
	            configFromStringAndArray(config);
	        } else if (format) {
	            configFromStringAndFormat(config);
	        } else if (isDate(input)) {
	            config._d = input;
	        } else {
	            configFromInput(config);
	        }
	
	        if (!valid__isValid(config)) {
	            config._d = null;
	        }
	
	        return config;
	    }
	
	    function configFromInput(config) {
	        var input = config._i;
	        if (input === undefined) {
	            config._d = new Date(utils_hooks__hooks.now());
	        } else if (isDate(input)) {
	            config._d = new Date(input.valueOf());
	        } else if (typeof input === 'string') {
	            configFromString(config);
	        } else if (isArray(input)) {
	            config._a = map(input.slice(0), function (obj) {
	                return parseInt(obj, 10);
	            });
	            configFromArray(config);
	        } else if (typeof(input) === 'object') {
	            configFromObject(config);
	        } else if (typeof(input) === 'number') {
	            // from milliseconds
	            config._d = new Date(input);
	        } else {
	            utils_hooks__hooks.createFromInputFallback(config);
	        }
	    }
	
	    function createLocalOrUTC (input, format, locale, strict, isUTC) {
	        var c = {};
	
	        if (typeof(locale) === 'boolean') {
	            strict = locale;
	            locale = undefined;
	        }
	        // object construction must be done this way.
	        // https://github.com/moment/moment/issues/1423
	        c._isAMomentObject = true;
	        c._useUTC = c._isUTC = isUTC;
	        c._l = locale;
	        c._i = input;
	        c._f = format;
	        c._strict = strict;
	
	        return createFromConfig(c);
	    }
	
	    function local__createLocal (input, format, locale, strict) {
	        return createLocalOrUTC(input, format, locale, strict, false);
	    }
	
	    var prototypeMin = deprecate(
	         'moment().min is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548',
	         function () {
	             var other = local__createLocal.apply(null, arguments);
	             if (this.isValid() && other.isValid()) {
	                 return other < this ? this : other;
	             } else {
	                 return valid__createInvalid();
	             }
	         }
	     );
	
	    var prototypeMax = deprecate(
	        'moment().max is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548',
	        function () {
	            var other = local__createLocal.apply(null, arguments);
	            if (this.isValid() && other.isValid()) {
	                return other > this ? this : other;
	            } else {
	                return valid__createInvalid();
	            }
	        }
	    );
	
	    // Pick a moment m from moments so that m[fn](other) is true for all
	    // other. This relies on the function fn to be transitive.
	    //
	    // moments should either be an array of moment objects or an array, whose
	    // first element is an array of moment objects.
	    function pickBy(fn, moments) {
	        var res, i;
	        if (moments.length === 1 && isArray(moments[0])) {
	            moments = moments[0];
	        }
	        if (!moments.length) {
	            return local__createLocal();
	        }
	        res = moments[0];
	        for (i = 1; i < moments.length; ++i) {
	            if (!moments[i].isValid() || moments[i][fn](res)) {
	                res = moments[i];
	            }
	        }
	        return res;
	    }
	
	    // TODO: Use [].sort instead?
	    function min () {
	        var args = [].slice.call(arguments, 0);
	
	        return pickBy('isBefore', args);
	    }
	
	    function max () {
	        var args = [].slice.call(arguments, 0);
	
	        return pickBy('isAfter', args);
	    }
	
	    var now = function () {
	        return Date.now ? Date.now() : +(new Date());
	    };
	
	    function Duration (duration) {
	        var normalizedInput = normalizeObjectUnits(duration),
	            years = normalizedInput.year || 0,
	            quarters = normalizedInput.quarter || 0,
	            months = normalizedInput.month || 0,
	            weeks = normalizedInput.week || 0,
	            days = normalizedInput.day || 0,
	            hours = normalizedInput.hour || 0,
	            minutes = normalizedInput.minute || 0,
	            seconds = normalizedInput.second || 0,
	            milliseconds = normalizedInput.millisecond || 0;
	
	        // representation for dateAddRemove
	        this._milliseconds = +milliseconds +
	            seconds * 1e3 + // 1000
	            minutes * 6e4 + // 1000 * 60
	            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
	        // Because of dateAddRemove treats 24 hours as different from a
	        // day when working around DST, we need to store them separately
	        this._days = +days +
	            weeks * 7;
	        // It is impossible translate months into days without knowing
	        // which months you are are talking about, so we have to store
	        // it separately.
	        this._months = +months +
	            quarters * 3 +
	            years * 12;
	
	        this._data = {};
	
	        this._locale = locale_locales__getLocale();
	
	        this._bubble();
	    }
	
	    function isDuration (obj) {
	        return obj instanceof Duration;
	    }
	
	    // FORMATTING
	
	    function offset (token, separator) {
	        addFormatToken(token, 0, 0, function () {
	            var offset = this.utcOffset();
	            var sign = '+';
	            if (offset < 0) {
	                offset = -offset;
	                sign = '-';
	            }
	            return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);
	        });
	    }
	
	    offset('Z', ':');
	    offset('ZZ', '');
	
	    // PARSING
	
	    addRegexToken('Z',  matchShortOffset);
	    addRegexToken('ZZ', matchShortOffset);
	    addParseToken(['Z', 'ZZ'], function (input, array, config) {
	        config._useUTC = true;
	        config._tzm = offsetFromString(matchShortOffset, input);
	    });
	
	    // HELPERS
	
	    // timezone chunker
	    // '+10:00' > ['10',  '00']
	    // '-1530'  > ['-15', '30']
	    var chunkOffset = /([\+\-]|\d\d)/gi;
	
	    function offsetFromString(matcher, string) {
	        var matches = ((string || '').match(matcher) || []);
	        var chunk   = matches[matches.length - 1] || [];
	        var parts   = (chunk + '').match(chunkOffset) || ['-', 0, 0];
	        var minutes = +(parts[1] * 60) + toInt(parts[2]);
	
	        return parts[0] === '+' ? minutes : -minutes;
	    }
	
	    // Return a moment from input, that is local/utc/zone equivalent to model.
	    function cloneWithOffset(input, model) {
	        var res, diff;
	        if (model._isUTC) {
	            res = model.clone();
	            diff = (isMoment(input) || isDate(input) ? input.valueOf() : local__createLocal(input).valueOf()) - res.valueOf();
	            // Use low-level api, because this fn is low-level api.
	            res._d.setTime(res._d.valueOf() + diff);
	            utils_hooks__hooks.updateOffset(res, false);
	            return res;
	        } else {
	            return local__createLocal(input).local();
	        }
	    }
	
	    function getDateOffset (m) {
	        // On Firefox.24 Date#getTimezoneOffset returns a floating point.
	        // https://github.com/moment/moment/pull/1871
	        return -Math.round(m._d.getTimezoneOffset() / 15) * 15;
	    }
	
	    // HOOKS
	
	    // This function will be called whenever a moment is mutated.
	    // It is intended to keep the offset in sync with the timezone.
	    utils_hooks__hooks.updateOffset = function () {};
	
	    // MOMENTS
	
	    // keepLocalTime = true means only change the timezone, without
	    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
	    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
	    // +0200, so we adjust the time as needed, to be valid.
	    //
	    // Keeping the time actually adds/subtracts (one hour)
	    // from the actual represented time. That is why we call updateOffset
	    // a second time. In case it wants us to change the offset again
	    // _changeInProgress == true case, then we have to adjust, because
	    // there is no such time in the given timezone.
	    function getSetOffset (input, keepLocalTime) {
	        var offset = this._offset || 0,
	            localAdjust;
	        if (!this.isValid()) {
	            return input != null ? this : NaN;
	        }
	        if (input != null) {
	            if (typeof input === 'string') {
	                input = offsetFromString(matchShortOffset, input);
	            } else if (Math.abs(input) < 16) {
	                input = input * 60;
	            }
	            if (!this._isUTC && keepLocalTime) {
	                localAdjust = getDateOffset(this);
	            }
	            this._offset = input;
	            this._isUTC = true;
	            if (localAdjust != null) {
	                this.add(localAdjust, 'm');
	            }
	            if (offset !== input) {
	                if (!keepLocalTime || this._changeInProgress) {
	                    add_subtract__addSubtract(this, create__createDuration(input - offset, 'm'), 1, false);
	                } else if (!this._changeInProgress) {
	                    this._changeInProgress = true;
	                    utils_hooks__hooks.updateOffset(this, true);
	                    this._changeInProgress = null;
	                }
	            }
	            return this;
	        } else {
	            return this._isUTC ? offset : getDateOffset(this);
	        }
	    }
	
	    function getSetZone (input, keepLocalTime) {
	        if (input != null) {
	            if (typeof input !== 'string') {
	                input = -input;
	            }
	
	            this.utcOffset(input, keepLocalTime);
	
	            return this;
	        } else {
	            return -this.utcOffset();
	        }
	    }
	
	    function setOffsetToUTC (keepLocalTime) {
	        return this.utcOffset(0, keepLocalTime);
	    }
	
	    function setOffsetToLocal (keepLocalTime) {
	        if (this._isUTC) {
	            this.utcOffset(0, keepLocalTime);
	            this._isUTC = false;
	
	            if (keepLocalTime) {
	                this.subtract(getDateOffset(this), 'm');
	            }
	        }
	        return this;
	    }
	
	    function setOffsetToParsedOffset () {
	        if (this._tzm) {
	            this.utcOffset(this._tzm);
	        } else if (typeof this._i === 'string') {
	            this.utcOffset(offsetFromString(matchOffset, this._i));
	        }
	        return this;
	    }
	
	    function hasAlignedHourOffset (input) {
	        if (!this.isValid()) {
	            return false;
	        }
	        input = input ? local__createLocal(input).utcOffset() : 0;
	
	        return (this.utcOffset() - input) % 60 === 0;
	    }
	
	    function isDaylightSavingTime () {
	        return (
	            this.utcOffset() > this.clone().month(0).utcOffset() ||
	            this.utcOffset() > this.clone().month(5).utcOffset()
	        );
	    }
	
	    function isDaylightSavingTimeShifted () {
	        if (!isUndefined(this._isDSTShifted)) {
	            return this._isDSTShifted;
	        }
	
	        var c = {};
	
	        copyConfig(c, this);
	        c = prepareConfig(c);
	
	        if (c._a) {
	            var other = c._isUTC ? create_utc__createUTC(c._a) : local__createLocal(c._a);
	            this._isDSTShifted = this.isValid() &&
	                compareArrays(c._a, other.toArray()) > 0;
	        } else {
	            this._isDSTShifted = false;
	        }
	
	        return this._isDSTShifted;
	    }
	
	    function isLocal () {
	        return this.isValid() ? !this._isUTC : false;
	    }
	
	    function isUtcOffset () {
	        return this.isValid() ? this._isUTC : false;
	    }
	
	    function isUtc () {
	        return this.isValid() ? this._isUTC && this._offset === 0 : false;
	    }
	
	    // ASP.NET json date format regex
	    var aspNetRegex = /^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?\d*)?$/;
	
	    // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
	    // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
	    // and further modified to allow for strings containing both week and day
	    var isoRegex = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;
	
	    function create__createDuration (input, key) {
	        var duration = input,
	            // matching against regexp is expensive, do it on demand
	            match = null,
	            sign,
	            ret,
	            diffRes;
	
	        if (isDuration(input)) {
	            duration = {
	                ms : input._milliseconds,
	                d  : input._days,
	                M  : input._months
	            };
	        } else if (typeof input === 'number') {
	            duration = {};
	            if (key) {
	                duration[key] = input;
	            } else {
	                duration.milliseconds = input;
	            }
	        } else if (!!(match = aspNetRegex.exec(input))) {
	            sign = (match[1] === '-') ? -1 : 1;
	            duration = {
	                y  : 0,
	                d  : toInt(match[DATE])        * sign,
	                h  : toInt(match[HOUR])        * sign,
	                m  : toInt(match[MINUTE])      * sign,
	                s  : toInt(match[SECOND])      * sign,
	                ms : toInt(match[MILLISECOND]) * sign
	            };
	        } else if (!!(match = isoRegex.exec(input))) {
	            sign = (match[1] === '-') ? -1 : 1;
	            duration = {
	                y : parseIso(match[2], sign),
	                M : parseIso(match[3], sign),
	                w : parseIso(match[4], sign),
	                d : parseIso(match[5], sign),
	                h : parseIso(match[6], sign),
	                m : parseIso(match[7], sign),
	                s : parseIso(match[8], sign)
	            };
	        } else if (duration == null) {// checks for null or undefined
	            duration = {};
	        } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {
	            diffRes = momentsDifference(local__createLocal(duration.from), local__createLocal(duration.to));
	
	            duration = {};
	            duration.ms = diffRes.milliseconds;
	            duration.M = diffRes.months;
	        }
	
	        ret = new Duration(duration);
	
	        if (isDuration(input) && hasOwnProp(input, '_locale')) {
	            ret._locale = input._locale;
	        }
	
	        return ret;
	    }
	
	    create__createDuration.fn = Duration.prototype;
	
	    function parseIso (inp, sign) {
	        // We'd normally use ~~inp for this, but unfortunately it also
	        // converts floats to ints.
	        // inp may be undefined, so careful calling replace on it.
	        var res = inp && parseFloat(inp.replace(',', '.'));
	        // apply sign while we're at it
	        return (isNaN(res) ? 0 : res) * sign;
	    }
	
	    function positiveMomentsDifference(base, other) {
	        var res = {milliseconds: 0, months: 0};
	
	        res.months = other.month() - base.month() +
	            (other.year() - base.year()) * 12;
	        if (base.clone().add(res.months, 'M').isAfter(other)) {
	            --res.months;
	        }
	
	        res.milliseconds = +other - +(base.clone().add(res.months, 'M'));
	
	        return res;
	    }
	
	    function momentsDifference(base, other) {
	        var res;
	        if (!(base.isValid() && other.isValid())) {
	            return {milliseconds: 0, months: 0};
	        }
	
	        other = cloneWithOffset(other, base);
	        if (base.isBefore(other)) {
	            res = positiveMomentsDifference(base, other);
	        } else {
	            res = positiveMomentsDifference(other, base);
	            res.milliseconds = -res.milliseconds;
	            res.months = -res.months;
	        }
	
	        return res;
	    }
	
	    function absRound (number) {
	        if (number < 0) {
	            return Math.round(-1 * number) * -1;
	        } else {
	            return Math.round(number);
	        }
	    }
	
	    // TODO: remove 'name' arg after deprecation is removed
	    function createAdder(direction, name) {
	        return function (val, period) {
	            var dur, tmp;
	            //invert the arguments, but complain about it
	            if (period !== null && !isNaN(+period)) {
	                deprecateSimple(name, 'moment().' + name  + '(period, number) is deprecated. Please use moment().' + name + '(number, period).');
	                tmp = val; val = period; period = tmp;
	            }
	
	            val = typeof val === 'string' ? +val : val;
	            dur = create__createDuration(val, period);
	            add_subtract__addSubtract(this, dur, direction);
	            return this;
	        };
	    }
	
	    function add_subtract__addSubtract (mom, duration, isAdding, updateOffset) {
	        var milliseconds = duration._milliseconds,
	            days = absRound(duration._days),
	            months = absRound(duration._months);
	
	        if (!mom.isValid()) {
	            // No op
	            return;
	        }
	
	        updateOffset = updateOffset == null ? true : updateOffset;
	
	        if (milliseconds) {
	            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
	        }
	        if (days) {
	            get_set__set(mom, 'Date', get_set__get(mom, 'Date') + days * isAdding);
	        }
	        if (months) {
	            setMonth(mom, get_set__get(mom, 'Month') + months * isAdding);
	        }
	        if (updateOffset) {
	            utils_hooks__hooks.updateOffset(mom, days || months);
	        }
	    }
	
	    var add_subtract__add      = createAdder(1, 'add');
	    var add_subtract__subtract = createAdder(-1, 'subtract');
	
	    function moment_calendar__calendar (time, formats) {
	        // We want to compare the start of today, vs this.
	        // Getting start-of-today depends on whether we're local/utc/offset or not.
	        var now = time || local__createLocal(),
	            sod = cloneWithOffset(now, this).startOf('day'),
	            diff = this.diff(sod, 'days', true),
	            format = diff < -6 ? 'sameElse' :
	                diff < -1 ? 'lastWeek' :
	                diff < 0 ? 'lastDay' :
	                diff < 1 ? 'sameDay' :
	                diff < 2 ? 'nextDay' :
	                diff < 7 ? 'nextWeek' : 'sameElse';
	
	        var output = formats && (isFunction(formats[format]) ? formats[format]() : formats[format]);
	
	        return this.format(output || this.localeData().calendar(format, this, local__createLocal(now)));
	    }
	
	    function clone () {
	        return new Moment(this);
	    }
	
	    function isAfter (input, units) {
	        var localInput = isMoment(input) ? input : local__createLocal(input);
	        if (!(this.isValid() && localInput.isValid())) {
	            return false;
	        }
	        units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');
	        if (units === 'millisecond') {
	            return this.valueOf() > localInput.valueOf();
	        } else {
	            return localInput.valueOf() < this.clone().startOf(units).valueOf();
	        }
	    }
	
	    function isBefore (input, units) {
	        var localInput = isMoment(input) ? input : local__createLocal(input);
	        if (!(this.isValid() && localInput.isValid())) {
	            return false;
	        }
	        units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');
	        if (units === 'millisecond') {
	            return this.valueOf() < localInput.valueOf();
	        } else {
	            return this.clone().endOf(units).valueOf() < localInput.valueOf();
	        }
	    }
	
	    function isBetween (from, to, units, inclusivity) {
	        inclusivity = inclusivity || '()';
	        return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) &&
	            (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units));
	    }
	
	    function isSame (input, units) {
	        var localInput = isMoment(input) ? input : local__createLocal(input),
	            inputMs;
	        if (!(this.isValid() && localInput.isValid())) {
	            return false;
	        }
	        units = normalizeUnits(units || 'millisecond');
	        if (units === 'millisecond') {
	            return this.valueOf() === localInput.valueOf();
	        } else {
	            inputMs = localInput.valueOf();
	            return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();
	        }
	    }
	
	    function isSameOrAfter (input, units) {
	        return this.isSame(input, units) || this.isAfter(input,units);
	    }
	
	    function isSameOrBefore (input, units) {
	        return this.isSame(input, units) || this.isBefore(input,units);
	    }
	
	    function diff (input, units, asFloat) {
	        var that,
	            zoneDelta,
	            delta, output;
	
	        if (!this.isValid()) {
	            return NaN;
	        }
	
	        that = cloneWithOffset(input, this);
	
	        if (!that.isValid()) {
	            return NaN;
	        }
	
	        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
	
	        units = normalizeUnits(units);
	
	        if (units === 'year' || units === 'month' || units === 'quarter') {
	            output = monthDiff(this, that);
	            if (units === 'quarter') {
	                output = output / 3;
	            } else if (units === 'year') {
	                output = output / 12;
	            }
	        } else {
	            delta = this - that;
	            output = units === 'second' ? delta / 1e3 : // 1000
	                units === 'minute' ? delta / 6e4 : // 1000 * 60
	                units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60
	                units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst
	                units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst
	                delta;
	        }
	        return asFloat ? output : absFloor(output);
	    }
	
	    function monthDiff (a, b) {
	        // difference in months
	        var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),
	            // b is in (anchor - 1 month, anchor + 1 month)
	            anchor = a.clone().add(wholeMonthDiff, 'months'),
	            anchor2, adjust;
	
	        if (b - anchor < 0) {
	            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
	            // linear across the month
	            adjust = (b - anchor) / (anchor - anchor2);
	        } else {
	            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
	            // linear across the month
	            adjust = (b - anchor) / (anchor2 - anchor);
	        }
	
	        //check for negative zero, return zero if negative zero
	        return -(wholeMonthDiff + adjust) || 0;
	    }
	
	    utils_hooks__hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
	    utils_hooks__hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';
	
	    function toString () {
	        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
	    }
	
	    function moment_format__toISOString () {
	        var m = this.clone().utc();
	        if (0 < m.year() && m.year() <= 9999) {
	            if (isFunction(Date.prototype.toISOString)) {
	                // native implementation is ~50x faster, use it when we can
	                return this.toDate().toISOString();
	            } else {
	                return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
	            }
	        } else {
	            return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
	        }
	    }
	
	    function format (inputString) {
	        if (!inputString) {
	            inputString = this.isUtc() ? utils_hooks__hooks.defaultFormatUtc : utils_hooks__hooks.defaultFormat;
	        }
	        var output = formatMoment(this, inputString);
	        return this.localeData().postformat(output);
	    }
	
	    function from (time, withoutSuffix) {
	        if (this.isValid() &&
	                ((isMoment(time) && time.isValid()) ||
	                 local__createLocal(time).isValid())) {
	            return create__createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);
	        } else {
	            return this.localeData().invalidDate();
	        }
	    }
	
	    function fromNow (withoutSuffix) {
	        return this.from(local__createLocal(), withoutSuffix);
	    }
	
	    function to (time, withoutSuffix) {
	        if (this.isValid() &&
	                ((isMoment(time) && time.isValid()) ||
	                 local__createLocal(time).isValid())) {
	            return create__createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);
	        } else {
	            return this.localeData().invalidDate();
	        }
	    }
	
	    function toNow (withoutSuffix) {
	        return this.to(local__createLocal(), withoutSuffix);
	    }
	
	    // If passed a locale key, it will set the locale for this
	    // instance.  Otherwise, it will return the locale configuration
	    // variables for this instance.
	    function locale (key) {
	        var newLocaleData;
	
	        if (key === undefined) {
	            return this._locale._abbr;
	        } else {
	            newLocaleData = locale_locales__getLocale(key);
	            if (newLocaleData != null) {
	                this._locale = newLocaleData;
	            }
	            return this;
	        }
	    }
	
	    var lang = deprecate(
	        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
	        function (key) {
	            if (key === undefined) {
	                return this.localeData();
	            } else {
	                return this.locale(key);
	            }
	        }
	    );
	
	    function localeData () {
	        return this._locale;
	    }
	
	    function startOf (units) {
	        units = normalizeUnits(units);
	        // the following switch intentionally omits break keywords
	        // to utilize falling through the cases.
	        switch (units) {
	        case 'year':
	            this.month(0);
	            /* falls through */
	        case 'quarter':
	        case 'month':
	            this.date(1);
	            /* falls through */
	        case 'week':
	        case 'isoWeek':
	        case 'day':
	        case 'date':
	            this.hours(0);
	            /* falls through */
	        case 'hour':
	            this.minutes(0);
	            /* falls through */
	        case 'minute':
	            this.seconds(0);
	            /* falls through */
	        case 'second':
	            this.milliseconds(0);
	        }
	
	        // weeks are a special case
	        if (units === 'week') {
	            this.weekday(0);
	        }
	        if (units === 'isoWeek') {
	            this.isoWeekday(1);
	        }
	
	        // quarters are also special
	        if (units === 'quarter') {
	            this.month(Math.floor(this.month() / 3) * 3);
	        }
	
	        return this;
	    }
	
	    function endOf (units) {
	        units = normalizeUnits(units);
	        if (units === undefined || units === 'millisecond') {
	            return this;
	        }
	
	        // 'date' is an alias for 'day', so it should be considered as such.
	        if (units === 'date') {
	            units = 'day';
	        }
	
	        return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');
	    }
	
	    function to_type__valueOf () {
	        return this._d.valueOf() - ((this._offset || 0) * 60000);
	    }
	
	    function unix () {
	        return Math.floor(this.valueOf() / 1000);
	    }
	
	    function toDate () {
	        return this._offset ? new Date(this.valueOf()) : this._d;
	    }
	
	    function toArray () {
	        var m = this;
	        return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];
	    }
	
	    function toObject () {
	        var m = this;
	        return {
	            years: m.year(),
	            months: m.month(),
	            date: m.date(),
	            hours: m.hours(),
	            minutes: m.minutes(),
	            seconds: m.seconds(),
	            milliseconds: m.milliseconds()
	        };
	    }
	
	    function toJSON () {
	        // new Date(NaN).toJSON() === null
	        return this.isValid() ? this.toISOString() : null;
	    }
	
	    function moment_valid__isValid () {
	        return valid__isValid(this);
	    }
	
	    function parsingFlags () {
	        return extend({}, getParsingFlags(this));
	    }
	
	    function invalidAt () {
	        return getParsingFlags(this).overflow;
	    }
	
	    function creationData() {
	        return {
	            input: this._i,
	            format: this._f,
	            locale: this._locale,
	            isUTC: this._isUTC,
	            strict: this._strict
	        };
	    }
	
	    // FORMATTING
	
	    addFormatToken(0, ['gg', 2], 0, function () {
	        return this.weekYear() % 100;
	    });
	
	    addFormatToken(0, ['GG', 2], 0, function () {
	        return this.isoWeekYear() % 100;
	    });
	
	    function addWeekYearFormatToken (token, getter) {
	        addFormatToken(0, [token, token.length], 0, getter);
	    }
	
	    addWeekYearFormatToken('gggg',     'weekYear');
	    addWeekYearFormatToken('ggggg',    'weekYear');
	    addWeekYearFormatToken('GGGG',  'isoWeekYear');
	    addWeekYearFormatToken('GGGGG', 'isoWeekYear');
	
	    // ALIASES
	
	    addUnitAlias('weekYear', 'gg');
	    addUnitAlias('isoWeekYear', 'GG');
	
	    // PARSING
	
	    addRegexToken('G',      matchSigned);
	    addRegexToken('g',      matchSigned);
	    addRegexToken('GG',     match1to2, match2);
	    addRegexToken('gg',     match1to2, match2);
	    addRegexToken('GGGG',   match1to4, match4);
	    addRegexToken('gggg',   match1to4, match4);
	    addRegexToken('GGGGG',  match1to6, match6);
	    addRegexToken('ggggg',  match1to6, match6);
	
	    addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {
	        week[token.substr(0, 2)] = toInt(input);
	    });
	
	    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
	        week[token] = utils_hooks__hooks.parseTwoDigitYear(input);
	    });
	
	    // MOMENTS
	
	    function getSetWeekYear (input) {
	        return getSetWeekYearHelper.call(this,
	                input,
	                this.week(),
	                this.weekday(),
	                this.localeData()._week.dow,
	                this.localeData()._week.doy);
	    }
	
	    function getSetISOWeekYear (input) {
	        return getSetWeekYearHelper.call(this,
	                input, this.isoWeek(), this.isoWeekday(), 1, 4);
	    }
	
	    function getISOWeeksInYear () {
	        return weeksInYear(this.year(), 1, 4);
	    }
	
	    function getWeeksInYear () {
	        var weekInfo = this.localeData()._week;
	        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
	    }
	
	    function getSetWeekYearHelper(input, week, weekday, dow, doy) {
	        var weeksTarget;
	        if (input == null) {
	            return weekOfYear(this, dow, doy).year;
	        } else {
	            weeksTarget = weeksInYear(input, dow, doy);
	            if (week > weeksTarget) {
	                week = weeksTarget;
	            }
	            return setWeekAll.call(this, input, week, weekday, dow, doy);
	        }
	    }
	
	    function setWeekAll(weekYear, week, weekday, dow, doy) {
	        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
	            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
	
	        this.year(date.getUTCFullYear());
	        this.month(date.getUTCMonth());
	        this.date(date.getUTCDate());
	        return this;
	    }
	
	    // FORMATTING
	
	    addFormatToken('Q', 0, 'Qo', 'quarter');
	
	    // ALIASES
	
	    addUnitAlias('quarter', 'Q');
	
	    // PARSING
	
	    addRegexToken('Q', match1);
	    addParseToken('Q', function (input, array) {
	        array[MONTH] = (toInt(input) - 1) * 3;
	    });
	
	    // MOMENTS
	
	    function getSetQuarter (input) {
	        return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);
	    }
	
	    // FORMATTING
	
	    addFormatToken('w', ['ww', 2], 'wo', 'week');
	    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
	
	    // ALIASES
	
	    addUnitAlias('week', 'w');
	    addUnitAlias('isoWeek', 'W');
	
	    // PARSING
	
	    addRegexToken('w',  match1to2);
	    addRegexToken('ww', match1to2, match2);
	    addRegexToken('W',  match1to2);
	    addRegexToken('WW', match1to2, match2);
	
	    addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {
	        week[token.substr(0, 1)] = toInt(input);
	    });
	
	    // HELPERS
	
	    // LOCALES
	
	    function localeWeek (mom) {
	        return weekOfYear(mom, this._week.dow, this._week.doy).week;
	    }
	
	    var defaultLocaleWeek = {
	        dow : 0, // Sunday is the first day of the week.
	        doy : 6  // The week that contains Jan 1st is the first week of the year.
	    };
	
	    function localeFirstDayOfWeek () {
	        return this._week.dow;
	    }
	
	    function localeFirstDayOfYear () {
	        return this._week.doy;
	    }
	
	    // MOMENTS
	
	    function getSetWeek (input) {
	        var week = this.localeData().week(this);
	        return input == null ? week : this.add((input - week) * 7, 'd');
	    }
	
	    function getSetISOWeek (input) {
	        var week = weekOfYear(this, 1, 4).week;
	        return input == null ? week : this.add((input - week) * 7, 'd');
	    }
	
	    // FORMATTING
	
	    addFormatToken('D', ['DD', 2], 'Do', 'date');
	
	    // ALIASES
	
	    addUnitAlias('date', 'D');
	
	    // PARSING
	
	    addRegexToken('D',  match1to2);
	    addRegexToken('DD', match1to2, match2);
	    addRegexToken('Do', function (isStrict, locale) {
	        return isStrict ? locale._ordinalParse : locale._ordinalParseLenient;
	    });
	
	    addParseToken(['D', 'DD'], DATE);
	    addParseToken('Do', function (input, array) {
	        array[DATE] = toInt(input.match(match1to2)[0], 10);
	    });
	
	    // MOMENTS
	
	    var getSetDayOfMonth = makeGetSet('Date', true);
	
	    // FORMATTING
	
	    addFormatToken('d', 0, 'do', 'day');
	
	    addFormatToken('dd', 0, 0, function (format) {
	        return this.localeData().weekdaysMin(this, format);
	    });
	
	    addFormatToken('ddd', 0, 0, function (format) {
	        return this.localeData().weekdaysShort(this, format);
	    });
	
	    addFormatToken('dddd', 0, 0, function (format) {
	        return this.localeData().weekdays(this, format);
	    });
	
	    addFormatToken('e', 0, 0, 'weekday');
	    addFormatToken('E', 0, 0, 'isoWeekday');
	
	    // ALIASES
	
	    addUnitAlias('day', 'd');
	    addUnitAlias('weekday', 'e');
	    addUnitAlias('isoWeekday', 'E');
	
	    // PARSING
	
	    addRegexToken('d',    match1to2);
	    addRegexToken('e',    match1to2);
	    addRegexToken('E',    match1to2);
	    addRegexToken('dd',   function (isStrict, locale) {
	        return locale.weekdaysMinRegex(isStrict);
	    });
	    addRegexToken('ddd',   function (isStrict, locale) {
	        return locale.weekdaysShortRegex(isStrict);
	    });
	    addRegexToken('dddd',   function (isStrict, locale) {
	        return locale.weekdaysRegex(isStrict);
	    });
	
	    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {
	        var weekday = config._locale.weekdaysParse(input, token, config._strict);
	        // if we didn't get a weekday name, mark the date as invalid
	        if (weekday != null) {
	            week.d = weekday;
	        } else {
	            getParsingFlags(config).invalidWeekday = input;
	        }
	    });
	
	    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
	        week[token] = toInt(input);
	    });
	
	    // HELPERS
	
	    function parseWeekday(input, locale) {
	        if (typeof input !== 'string') {
	            return input;
	        }
	
	        if (!isNaN(input)) {
	            return parseInt(input, 10);
	        }
	
	        input = locale.weekdaysParse(input);
	        if (typeof input === 'number') {
	            return input;
	        }
	
	        return null;
	    }
	
	    // LOCALES
	
	    var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');
	    function localeWeekdays (m, format) {
	        return isArray(this._weekdays) ? this._weekdays[m.day()] :
	            this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];
	    }
	
	    var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');
	    function localeWeekdaysShort (m) {
	        return this._weekdaysShort[m.day()];
	    }
	
	    var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');
	    function localeWeekdaysMin (m) {
	        return this._weekdaysMin[m.day()];
	    }
	
	    function day_of_week__handleStrictParse(weekdayName, format, strict) {
	        var i, ii, mom, llc = weekdayName.toLocaleLowerCase();
	        if (!this._weekdaysParse) {
	            this._weekdaysParse = [];
	            this._shortWeekdaysParse = [];
	            this._minWeekdaysParse = [];
	
	            for (i = 0; i < 7; ++i) {
	                mom = create_utc__createUTC([2000, 1]).day(i);
	                this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();
	                this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();
	                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();
	            }
	        }
	
	        if (strict) {
	            if (format === 'dddd') {
	                ii = indexOf.call(this._weekdaysParse, llc);
	                return ii !== -1 ? ii : null;
	            } else if (format === 'ddd') {
	                ii = indexOf.call(this._shortWeekdaysParse, llc);
	                return ii !== -1 ? ii : null;
	            } else {
	                ii = indexOf.call(this._minWeekdaysParse, llc);
	                return ii !== -1 ? ii : null;
	            }
	        } else {
	            if (format === 'dddd') {
	                ii = indexOf.call(this._weekdaysParse, llc);
	                if (ii !== -1) {
	                    return ii;
	                }
	                ii = indexOf.call(this._shortWeekdaysParse, llc);
	                if (ii !== -1) {
	                    return ii;
	                }
	                ii = indexOf.call(this._minWeekdaysParse, llc);
	                return ii !== -1 ? ii : null;
	            } else if (format === 'ddd') {
	                ii = indexOf.call(this._shortWeekdaysParse, llc);
	                if (ii !== -1) {
	                    return ii;
	                }
	                ii = indexOf.call(this._weekdaysParse, llc);
	                if (ii !== -1) {
	                    return ii;
	                }
	                ii = indexOf.call(this._minWeekdaysParse, llc);
	                return ii !== -1 ? ii : null;
	            } else {
	                ii = indexOf.call(this._minWeekdaysParse, llc);
	                if (ii !== -1) {
	                    return ii;
	                }
	                ii = indexOf.call(this._weekdaysParse, llc);
	                if (ii !== -1) {
	                    return ii;
	                }
	                ii = indexOf.call(this._shortWeekdaysParse, llc);
	                return ii !== -1 ? ii : null;
	            }
	        }
	    }
	
	    function localeWeekdaysParse (weekdayName, format, strict) {
	        var i, mom, regex;
	
	        if (this._weekdaysParseExact) {
	            return day_of_week__handleStrictParse.call(this, weekdayName, format, strict);
	        }
	
	        if (!this._weekdaysParse) {
	            this._weekdaysParse = [];
	            this._minWeekdaysParse = [];
	            this._shortWeekdaysParse = [];
	            this._fullWeekdaysParse = [];
	        }
	
	        for (i = 0; i < 7; i++) {
	            // make the regex if we don't have it already
	
	            mom = create_utc__createUTC([2000, 1]).day(i);
	            if (strict && !this._fullWeekdaysParse[i]) {
	                this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\.?') + '$', 'i');
	                this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\.?') + '$', 'i');
	                this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\.?') + '$', 'i');
	            }
	            if (!this._weekdaysParse[i]) {
	                regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');
	                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
	            }
	            // test the regex
	            if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {
	                return i;
	            } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {
	                return i;
	            } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {
	                return i;
	            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
	                return i;
	            }
	        }
	    }
	
	    // MOMENTS
	
	    function getSetDayOfWeek (input) {
	        if (!this.isValid()) {
	            return input != null ? this : NaN;
	        }
	        var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
	        if (input != null) {
	            input = parseWeekday(input, this.localeData());
	            return this.add(input - day, 'd');
	        } else {
	            return day;
	        }
	    }
	
	    function getSetLocaleDayOfWeek (input) {
	        if (!this.isValid()) {
	            return input != null ? this : NaN;
	        }
	        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
	        return input == null ? weekday : this.add(input - weekday, 'd');
	    }
	
	    function getSetISODayOfWeek (input) {
	        if (!this.isValid()) {
	            return input != null ? this : NaN;
	        }
	        // behaves the same as moment#day except
	        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
	        // as a setter, sunday should belong to the previous week.
	        return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7);
	    }
	
	    var defaultWeekdaysRegex = matchWord;
	    function weekdaysRegex (isStrict) {
	        if (this._weekdaysParseExact) {
	            if (!hasOwnProp(this, '_weekdaysRegex')) {
	                computeWeekdaysParse.call(this);
	            }
	            if (isStrict) {
	                return this._weekdaysStrictRegex;
	            } else {
	                return this._weekdaysRegex;
	            }
	        } else {
	            return this._weekdaysStrictRegex && isStrict ?
	                this._weekdaysStrictRegex : this._weekdaysRegex;
	        }
	    }
	
	    var defaultWeekdaysShortRegex = matchWord;
	    function weekdaysShortRegex (isStrict) {
	        if (this._weekdaysParseExact) {
	            if (!hasOwnProp(this, '_weekdaysRegex')) {
	                computeWeekdaysParse.call(this);
	            }
	            if (isStrict) {
	                return this._weekdaysShortStrictRegex;
	            } else {
	                return this._weekdaysShortRegex;
	            }
	        } else {
	            return this._weekdaysShortStrictRegex && isStrict ?
	                this._weekdaysShortStrictRegex : this._weekdaysShortRegex;
	        }
	    }
	
	    var defaultWeekdaysMinRegex = matchWord;
	    function weekdaysMinRegex (isStrict) {
	        if (this._weekdaysParseExact) {
	            if (!hasOwnProp(this, '_weekdaysRegex')) {
	                computeWeekdaysParse.call(this);
	            }
	            if (isStrict) {
	                return this._weekdaysMinStrictRegex;
	            } else {
	                return this._weekdaysMinRegex;
	            }
	        } else {
	            return this._weekdaysMinStrictRegex && isStrict ?
	                this._weekdaysMinStrictRegex : this._weekdaysMinRegex;
	        }
	    }
	
	
	    function computeWeekdaysParse () {
	        function cmpLenRev(a, b) {
	            return b.length - a.length;
	        }
	
	        var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],
	            i, mom, minp, shortp, longp;
	        for (i = 0; i < 7; i++) {
	            // make the regex if we don't have it already
	            mom = create_utc__createUTC([2000, 1]).day(i);
	            minp = this.weekdaysMin(mom, '');
	            shortp = this.weekdaysShort(mom, '');
	            longp = this.weekdays(mom, '');
	            minPieces.push(minp);
	            shortPieces.push(shortp);
	            longPieces.push(longp);
	            mixedPieces.push(minp);
	            mixedPieces.push(shortp);
	            mixedPieces.push(longp);
	        }
	        // Sorting makes sure if one weekday (or abbr) is a prefix of another it
	        // will match the longer piece.
	        minPieces.sort(cmpLenRev);
	        shortPieces.sort(cmpLenRev);
	        longPieces.sort(cmpLenRev);
	        mixedPieces.sort(cmpLenRev);
	        for (i = 0; i < 7; i++) {
	            shortPieces[i] = regexEscape(shortPieces[i]);
	            longPieces[i] = regexEscape(longPieces[i]);
	            mixedPieces[i] = regexEscape(mixedPieces[i]);
	        }
	
	        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
	        this._weekdaysShortRegex = this._weekdaysRegex;
	        this._weekdaysMinRegex = this._weekdaysRegex;
	
	        this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');
	        this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');
	        this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');
	    }
	
	    // FORMATTING
	
	    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
	
	    // ALIASES
	
	    addUnitAlias('dayOfYear', 'DDD');
	
	    // PARSING
	
	    addRegexToken('DDD',  match1to3);
	    addRegexToken('DDDD', match3);
	    addParseToken(['DDD', 'DDDD'], function (input, array, config) {
	        config._dayOfYear = toInt(input);
	    });
	
	    // HELPERS
	
	    // MOMENTS
	
	    function getSetDayOfYear (input) {
	        var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;
	        return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');
	    }
	
	    // FORMATTING
	
	    function hFormat() {
	        return this.hours() % 12 || 12;
	    }
	
	    function kFormat() {
	        return this.hours() || 24;
	    }
	
	    addFormatToken('H', ['HH', 2], 0, 'hour');
	    addFormatToken('h', ['hh', 2], 0, hFormat);
	    addFormatToken('k', ['kk', 2], 0, kFormat);
	
	    addFormatToken('hmm', 0, 0, function () {
	        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);
	    });
	
	    addFormatToken('hmmss', 0, 0, function () {
	        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +
	            zeroFill(this.seconds(), 2);
	    });
	
	    addFormatToken('Hmm', 0, 0, function () {
	        return '' + this.hours() + zeroFill(this.minutes(), 2);
	    });
	
	    addFormatToken('Hmmss', 0, 0, function () {
	        return '' + this.hours() + zeroFill(this.minutes(), 2) +
	            zeroFill(this.seconds(), 2);
	    });
	
	    function meridiem (token, lowercase) {
	        addFormatToken(token, 0, 0, function () {
	            return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);
	        });
	    }
	
	    meridiem('a', true);
	    meridiem('A', false);
	
	    // ALIASES
	
	    addUnitAlias('hour', 'h');
	
	    // PARSING
	
	    function matchMeridiem (isStrict, locale) {
	        return locale._meridiemParse;
	    }
	
	    addRegexToken('a',  matchMeridiem);
	    addRegexToken('A',  matchMeridiem);
	    addRegexToken('H',  match1to2);
	    addRegexToken('h',  match1to2);
	    addRegexToken('HH', match1to2, match2);
	    addRegexToken('hh', match1to2, match2);
	
	    addRegexToken('hmm', match3to4);
	    addRegexToken('hmmss', match5to6);
	    addRegexToken('Hmm', match3to4);
	    addRegexToken('Hmmss', match5to6);
	
	    addParseToken(['H', 'HH'], HOUR);
	    addParseToken(['a', 'A'], function (input, array, config) {
	        config._isPm = config._locale.isPM(input);
	        config._meridiem = input;
	    });
	    addParseToken(['h', 'hh'], function (input, array, config) {
	        array[HOUR] = toInt(input);
	        getParsingFlags(config).bigHour = true;
	    });
	    addParseToken('hmm', function (input, array, config) {
	        var pos = input.length - 2;
	        array[HOUR] = toInt(input.substr(0, pos));
	        array[MINUTE] = toInt(input.substr(pos));
	        getParsingFlags(config).bigHour = true;
	    });
	    addParseToken('hmmss', function (input, array, config) {
	        var pos1 = input.length - 4;
	        var pos2 = input.length - 2;
	        array[HOUR] = toInt(input.substr(0, pos1));
	        array[MINUTE] = toInt(input.substr(pos1, 2));
	        array[SECOND] = toInt(input.substr(pos2));
	        getParsingFlags(config).bigHour = true;
	    });
	    addParseToken('Hmm', function (input, array, config) {
	        var pos = input.length - 2;
	        array[HOUR] = toInt(input.substr(0, pos));
	        array[MINUTE] = toInt(input.substr(pos));
	    });
	    addParseToken('Hmmss', function (input, array, config) {
	        var pos1 = input.length - 4;
	        var pos2 = input.length - 2;
	        array[HOUR] = toInt(input.substr(0, pos1));
	        array[MINUTE] = toInt(input.substr(pos1, 2));
	        array[SECOND] = toInt(input.substr(pos2));
	    });
	
	    // LOCALES
	
	    function localeIsPM (input) {
	        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
	        // Using charAt should be more compatible.
	        return ((input + '').toLowerCase().charAt(0) === 'p');
	    }
	
	    var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i;
	    function localeMeridiem (hours, minutes, isLower) {
	        if (hours > 11) {
	            return isLower ? 'pm' : 'PM';
	        } else {
	            return isLower ? 'am' : 'AM';
	        }
	    }
	
	
	    // MOMENTS
	
	    // Setting the hour should keep the time, because the user explicitly
	    // specified which hour he wants. So trying to maintain the same hour (in
	    // a new timezone) makes sense. Adding/subtracting hours does not follow
	    // this rule.
	    var getSetHour = makeGetSet('Hours', true);
	
	    // FORMATTING
	
	    addFormatToken('m', ['mm', 2], 0, 'minute');
	
	    // ALIASES
	
	    addUnitAlias('minute', 'm');
	
	    // PARSING
	
	    addRegexToken('m',  match1to2);
	    addRegexToken('mm', match1to2, match2);
	    addParseToken(['m', 'mm'], MINUTE);
	
	    // MOMENTS
	
	    var getSetMinute = makeGetSet('Minutes', false);
	
	    // FORMATTING
	
	    addFormatToken('s', ['ss', 2], 0, 'second');
	
	    // ALIASES
	
	    addUnitAlias('second', 's');
	
	    // PARSING
	
	    addRegexToken('s',  match1to2);
	    addRegexToken('ss', match1to2, match2);
	    addParseToken(['s', 'ss'], SECOND);
	
	    // MOMENTS
	
	    var getSetSecond = makeGetSet('Seconds', false);
	
	    // FORMATTING
	
	    addFormatToken('S', 0, 0, function () {
	        return ~~(this.millisecond() / 100);
	    });
	
	    addFormatToken(0, ['SS', 2], 0, function () {
	        return ~~(this.millisecond() / 10);
	    });
	
	    addFormatToken(0, ['SSS', 3], 0, 'millisecond');
	    addFormatToken(0, ['SSSS', 4], 0, function () {
	        return this.millisecond() * 10;
	    });
	    addFormatToken(0, ['SSSSS', 5], 0, function () {
	        return this.millisecond() * 100;
	    });
	    addFormatToken(0, ['SSSSSS', 6], 0, function () {
	        return this.millisecond() * 1000;
	    });
	    addFormatToken(0, ['SSSSSSS', 7], 0, function () {
	        return this.millisecond() * 10000;
	    });
	    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
	        return this.millisecond() * 100000;
	    });
	    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
	        return this.millisecond() * 1000000;
	    });
	
	
	    // ALIASES
	
	    addUnitAlias('millisecond', 'ms');
	
	    // PARSING
	
	    addRegexToken('S',    match1to3, match1);
	    addRegexToken('SS',   match1to3, match2);
	    addRegexToken('SSS',  match1to3, match3);
	
	    var token;
	    for (token = 'SSSS'; token.length <= 9; token += 'S') {
	        addRegexToken(token, matchUnsigned);
	    }
	
	    function parseMs(input, array) {
	        array[MILLISECOND] = toInt(('0.' + input) * 1000);
	    }
	
	    for (token = 'S'; token.length <= 9; token += 'S') {
	        addParseToken(token, parseMs);
	    }
	    // MOMENTS
	
	    var getSetMillisecond = makeGetSet('Milliseconds', false);
	
	    // FORMATTING
	
	    addFormatToken('z',  0, 0, 'zoneAbbr');
	    addFormatToken('zz', 0, 0, 'zoneName');
	
	    // MOMENTS
	
	    function getZoneAbbr () {
	        return this._isUTC ? 'UTC' : '';
	    }
	
	    function getZoneName () {
	        return this._isUTC ? 'Coordinated Universal Time' : '';
	    }
	
	    var momentPrototype__proto = Moment.prototype;
	
	    momentPrototype__proto.add               = add_subtract__add;
	    momentPrototype__proto.calendar          = moment_calendar__calendar;
	    momentPrototype__proto.clone             = clone;
	    momentPrototype__proto.diff              = diff;
	    momentPrototype__proto.endOf             = endOf;
	    momentPrototype__proto.format            = format;
	    momentPrototype__proto.from              = from;
	    momentPrototype__proto.fromNow           = fromNow;
	    momentPrototype__proto.to                = to;
	    momentPrototype__proto.toNow             = toNow;
	    momentPrototype__proto.get               = getSet;
	    momentPrototype__proto.invalidAt         = invalidAt;
	    momentPrototype__proto.isAfter           = isAfter;
	    momentPrototype__proto.isBefore          = isBefore;
	    momentPrototype__proto.isBetween         = isBetween;
	    momentPrototype__proto.isSame            = isSame;
	    momentPrototype__proto.isSameOrAfter     = isSameOrAfter;
	    momentPrototype__proto.isSameOrBefore    = isSameOrBefore;
	    momentPrototype__proto.isValid           = moment_valid__isValid;
	    momentPrototype__proto.lang              = lang;
	    momentPrototype__proto.locale            = locale;
	    momentPrototype__proto.localeData        = localeData;
	    momentPrototype__proto.max               = prototypeMax;
	    momentPrototype__proto.min               = prototypeMin;
	    momentPrototype__proto.parsingFlags      = parsingFlags;
	    momentPrototype__proto.set               = getSet;
	    momentPrototype__proto.startOf           = startOf;
	    momentPrototype__proto.subtract          = add_subtract__subtract;
	    momentPrototype__proto.toArray           = toArray;
	    momentPrototype__proto.toObject          = toObject;
	    momentPrototype__proto.toDate            = toDate;
	    momentPrototype__proto.toISOString       = moment_format__toISOString;
	    momentPrototype__proto.toJSON            = toJSON;
	    momentPrototype__proto.toString          = toString;
	    momentPrototype__proto.unix              = unix;
	    momentPrototype__proto.valueOf           = to_type__valueOf;
	    momentPrototype__proto.creationData      = creationData;
	
	    // Year
	    momentPrototype__proto.year       = getSetYear;
	    momentPrototype__proto.isLeapYear = getIsLeapYear;
	
	    // Week Year
	    momentPrototype__proto.weekYear    = getSetWeekYear;
	    momentPrototype__proto.isoWeekYear = getSetISOWeekYear;
	
	    // Quarter
	    momentPrototype__proto.quarter = momentPrototype__proto.quarters = getSetQuarter;
	
	    // Month
	    momentPrototype__proto.month       = getSetMonth;
	    momentPrototype__proto.daysInMonth = getDaysInMonth;
	
	    // Week
	    momentPrototype__proto.week           = momentPrototype__proto.weeks        = getSetWeek;
	    momentPrototype__proto.isoWeek        = momentPrototype__proto.isoWeeks     = getSetISOWeek;
	    momentPrototype__proto.weeksInYear    = getWeeksInYear;
	    momentPrototype__proto.isoWeeksInYear = getISOWeeksInYear;
	
	    // Day
	    momentPrototype__proto.date       = getSetDayOfMonth;
	    momentPrototype__proto.day        = momentPrototype__proto.days             = getSetDayOfWeek;
	    momentPrototype__proto.weekday    = getSetLocaleDayOfWeek;
	    momentPrototype__proto.isoWeekday = getSetISODayOfWeek;
	    momentPrototype__proto.dayOfYear  = getSetDayOfYear;
	
	    // Hour
	    momentPrototype__proto.hour = momentPrototype__proto.hours = getSetHour;
	
	    // Minute
	    momentPrototype__proto.minute = momentPrototype__proto.minutes = getSetMinute;
	
	    // Second
	    momentPrototype__proto.second = momentPrototype__proto.seconds = getSetSecond;
	
	    // Millisecond
	    momentPrototype__proto.millisecond = momentPrototype__proto.milliseconds = getSetMillisecond;
	
	    // Offset
	    momentPrototype__proto.utcOffset            = getSetOffset;
	    momentPrototype__proto.utc                  = setOffsetToUTC;
	    momentPrototype__proto.local                = setOffsetToLocal;
	    momentPrototype__proto.parseZone            = setOffsetToParsedOffset;
	    momentPrototype__proto.hasAlignedHourOffset = hasAlignedHourOffset;
	    momentPrototype__proto.isDST                = isDaylightSavingTime;
	    momentPrototype__proto.isDSTShifted         = isDaylightSavingTimeShifted;
	    momentPrototype__proto.isLocal              = isLocal;
	    momentPrototype__proto.isUtcOffset          = isUtcOffset;
	    momentPrototype__proto.isUtc                = isUtc;
	    momentPrototype__proto.isUTC                = isUtc;
	
	    // Timezone
	    momentPrototype__proto.zoneAbbr = getZoneAbbr;
	    momentPrototype__proto.zoneName = getZoneName;
	
	    // Deprecations
	    momentPrototype__proto.dates  = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);
	    momentPrototype__proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);
	    momentPrototype__proto.years  = deprecate('years accessor is deprecated. Use year instead', getSetYear);
	    momentPrototype__proto.zone   = deprecate('moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779', getSetZone);
	
	    var momentPrototype = momentPrototype__proto;
	
	    function moment__createUnix (input) {
	        return local__createLocal(input * 1000);
	    }
	
	    function moment__createInZone () {
	        return local__createLocal.apply(null, arguments).parseZone();
	    }
	
	    var defaultCalendar = {
	        sameDay : '[Today at] LT',
	        nextDay : '[Tomorrow at] LT',
	        nextWeek : 'dddd [at] LT',
	        lastDay : '[Yesterday at] LT',
	        lastWeek : '[Last] dddd [at] LT',
	        sameElse : 'L'
	    };
	
	    function locale_calendar__calendar (key, mom, now) {
	        var output = this._calendar[key];
	        return isFunction(output) ? output.call(mom, now) : output;
	    }
	
	    var defaultLongDateFormat = {
	        LTS  : 'h:mm:ss A',
	        LT   : 'h:mm A',
	        L    : 'MM/DD/YYYY',
	        LL   : 'MMMM D, YYYY',
	        LLL  : 'MMMM D, YYYY h:mm A',
	        LLLL : 'dddd, MMMM D, YYYY h:mm A'
	    };
	
	    function longDateFormat (key) {
	        var format = this._longDateFormat[key],
	            formatUpper = this._longDateFormat[key.toUpperCase()];
	
	        if (format || !formatUpper) {
	            return format;
	        }
	
	        this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {
	            return val.slice(1);
	        });
	
	        return this._longDateFormat[key];
	    }
	
	    var defaultInvalidDate = 'Invalid date';
	
	    function invalidDate () {
	        return this._invalidDate;
	    }
	
	    var defaultOrdinal = '%d';
	    var defaultOrdinalParse = /\d{1,2}/;
	
	    function ordinal (number) {
	        return this._ordinal.replace('%d', number);
	    }
	
	    function preParsePostFormat (string) {
	        return string;
	    }
	
	    var defaultRelativeTime = {
	        future : 'in %s',
	        past   : '%s ago',
	        s  : 'a few seconds',
	        m  : 'a minute',
	        mm : '%d minutes',
	        h  : 'an hour',
	        hh : '%d hours',
	        d  : 'a day',
	        dd : '%d days',
	        M  : 'a month',
	        MM : '%d months',
	        y  : 'a year',
	        yy : '%d years'
	    };
	
	    function relative__relativeTime (number, withoutSuffix, string, isFuture) {
	        var output = this._relativeTime[string];
	        return (isFunction(output)) ?
	            output(number, withoutSuffix, string, isFuture) :
	            output.replace(/%d/i, number);
	    }
	
	    function pastFuture (diff, output) {
	        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
	        return isFunction(format) ? format(output) : format.replace(/%s/i, output);
	    }
	
	    var prototype__proto = Locale.prototype;
	
	    prototype__proto._calendar       = defaultCalendar;
	    prototype__proto.calendar        = locale_calendar__calendar;
	    prototype__proto._longDateFormat = defaultLongDateFormat;
	    prototype__proto.longDateFormat  = longDateFormat;
	    prototype__proto._invalidDate    = defaultInvalidDate;
	    prototype__proto.invalidDate     = invalidDate;
	    prototype__proto._ordinal        = defaultOrdinal;
	    prototype__proto.ordinal         = ordinal;
	    prototype__proto._ordinalParse   = defaultOrdinalParse;
	    prototype__proto.preparse        = preParsePostFormat;
	    prototype__proto.postformat      = preParsePostFormat;
	    prototype__proto._relativeTime   = defaultRelativeTime;
	    prototype__proto.relativeTime    = relative__relativeTime;
	    prototype__proto.pastFuture      = pastFuture;
	    prototype__proto.set             = locale_set__set;
	
	    // Month
	    prototype__proto.months            =        localeMonths;
	    prototype__proto._months           = defaultLocaleMonths;
	    prototype__proto.monthsShort       =        localeMonthsShort;
	    prototype__proto._monthsShort      = defaultLocaleMonthsShort;
	    prototype__proto.monthsParse       =        localeMonthsParse;
	    prototype__proto._monthsRegex      = defaultMonthsRegex;
	    prototype__proto.monthsRegex       = monthsRegex;
	    prototype__proto._monthsShortRegex = defaultMonthsShortRegex;
	    prototype__proto.monthsShortRegex  = monthsShortRegex;
	
	    // Week
	    prototype__proto.week = localeWeek;
	    prototype__proto._week = defaultLocaleWeek;
	    prototype__proto.firstDayOfYear = localeFirstDayOfYear;
	    prototype__proto.firstDayOfWeek = localeFirstDayOfWeek;
	
	    // Day of Week
	    prototype__proto.weekdays       =        localeWeekdays;
	    prototype__proto._weekdays      = defaultLocaleWeekdays;
	    prototype__proto.weekdaysMin    =        localeWeekdaysMin;
	    prototype__proto._weekdaysMin   = defaultLocaleWeekdaysMin;
	    prototype__proto.weekdaysShort  =        localeWeekdaysShort;
	    prototype__proto._weekdaysShort = defaultLocaleWeekdaysShort;
	    prototype__proto.weekdaysParse  =        localeWeekdaysParse;
	
	    prototype__proto._weekdaysRegex      = defaultWeekdaysRegex;
	    prototype__proto.weekdaysRegex       =        weekdaysRegex;
	    prototype__proto._weekdaysShortRegex = defaultWeekdaysShortRegex;
	    prototype__proto.weekdaysShortRegex  =        weekdaysShortRegex;
	    prototype__proto._weekdaysMinRegex   = defaultWeekdaysMinRegex;
	    prototype__proto.weekdaysMinRegex    =        weekdaysMinRegex;
	
	    // Hours
	    prototype__proto.isPM = localeIsPM;
	    prototype__proto._meridiemParse = defaultLocaleMeridiemParse;
	    prototype__proto.meridiem = localeMeridiem;
	
	    function lists__get (format, index, field, setter) {
	        var locale = locale_locales__getLocale();
	        var utc = create_utc__createUTC().set(setter, index);
	        return locale[field](utc, format);
	    }
	
	    function listMonthsImpl (format, index, field) {
	        if (typeof format === 'number') {
	            index = format;
	            format = undefined;
	        }
	
	        format = format || '';
	
	        if (index != null) {
	            return lists__get(format, index, field, 'month');
	        }
	
	        var i;
	        var out = [];
	        for (i = 0; i < 12; i++) {
	            out[i] = lists__get(format, i, field, 'month');
	        }
	        return out;
	    }
	
	    // ()
	    // (5)
	    // (fmt, 5)
	    // (fmt)
	    // (true)
	    // (true, 5)
	    // (true, fmt, 5)
	    // (true, fmt)
	    function listWeekdaysImpl (localeSorted, format, index, field) {
	        if (typeof localeSorted === 'boolean') {
	            if (typeof format === 'number') {
	                index = format;
	                format = undefined;
	            }
	
	            format = format || '';
	        } else {
	            format = localeSorted;
	            index = format;
	            localeSorted = false;
	
	            if (typeof format === 'number') {
	                index = format;
	                format = undefined;
	            }
	
	            format = format || '';
	        }
	
	        var locale = locale_locales__getLocale(),
	            shift = localeSorted ? locale._week.dow : 0;
	
	        if (index != null) {
	            return lists__get(format, (index + shift) % 7, field, 'day');
	        }
	
	        var i;
	        var out = [];
	        for (i = 0; i < 7; i++) {
	            out[i] = lists__get(format, (i + shift) % 7, field, 'day');
	        }
	        return out;
	    }
	
	    function lists__listMonths (format, index) {
	        return listMonthsImpl(format, index, 'months');
	    }
	
	    function lists__listMonthsShort (format, index) {
	        return listMonthsImpl(format, index, 'monthsShort');
	    }
	
	    function lists__listWeekdays (localeSorted, format, index) {
	        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');
	    }
	
	    function lists__listWeekdaysShort (localeSorted, format, index) {
	        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');
	    }
	
	    function lists__listWeekdaysMin (localeSorted, format, index) {
	        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');
	    }
	
	    locale_locales__getSetGlobalLocale('en', {
	        ordinalParse: /\d{1,2}(th|st|nd|rd)/,
	        ordinal : function (number) {
	            var b = number % 10,
	                output = (toInt(number % 100 / 10) === 1) ? 'th' :
	                (b === 1) ? 'st' :
	                (b === 2) ? 'nd' :
	                (b === 3) ? 'rd' : 'th';
	            return number + output;
	        }
	    });
	
	    // Side effect imports
	    utils_hooks__hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', locale_locales__getSetGlobalLocale);
	    utils_hooks__hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', locale_locales__getLocale);
	
	    var mathAbs = Math.abs;
	
	    function duration_abs__abs () {
	        var data           = this._data;
	
	        this._milliseconds = mathAbs(this._milliseconds);
	        this._days         = mathAbs(this._days);
	        this._months       = mathAbs(this._months);
	
	        data.milliseconds  = mathAbs(data.milliseconds);
	        data.seconds       = mathAbs(data.seconds);
	        data.minutes       = mathAbs(data.minutes);
	        data.hours         = mathAbs(data.hours);
	        data.months        = mathAbs(data.months);
	        data.years         = mathAbs(data.years);
	
	        return this;
	    }
	
	    function duration_add_subtract__addSubtract (duration, input, value, direction) {
	        var other = create__createDuration(input, value);
	
	        duration._milliseconds += direction * other._milliseconds;
	        duration._days         += direction * other._days;
	        duration._months       += direction * other._months;
	
	        return duration._bubble();
	    }
	
	    // supports only 2.0-style add(1, 's') or add(duration)
	    function duration_add_subtract__add (input, value) {
	        return duration_add_subtract__addSubtract(this, input, value, 1);
	    }
	
	    // supports only 2.0-style subtract(1, 's') or subtract(duration)
	    function duration_add_subtract__subtract (input, value) {
	        return duration_add_subtract__addSubtract(this, input, value, -1);
	    }
	
	    function absCeil (number) {
	        if (number < 0) {
	            return Math.floor(number);
	        } else {
	            return Math.ceil(number);
	        }
	    }
	
	    function bubble () {
	        var milliseconds = this._milliseconds;
	        var days         = this._days;
	        var months       = this._months;
	        var data         = this._data;
	        var seconds, minutes, hours, years, monthsFromDays;
	
	        // if we have a mix of positive and negative values, bubble down first
	        // check: https://github.com/moment/moment/issues/2166
	        if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||
	                (milliseconds <= 0 && days <= 0 && months <= 0))) {
	            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
	            days = 0;
	            months = 0;
	        }
	
	        // The following code bubbles up values, see the tests for
	        // examples of what that means.
	        data.milliseconds = milliseconds % 1000;
	
	        seconds           = absFloor(milliseconds / 1000);
	        data.seconds      = seconds % 60;
	
	        minutes           = absFloor(seconds / 60);
	        data.minutes      = minutes % 60;
	
	        hours             = absFloor(minutes / 60);
	        data.hours        = hours % 24;
	
	        days += absFloor(hours / 24);
	
	        // convert days to months
	        monthsFromDays = absFloor(daysToMonths(days));
	        months += monthsFromDays;
	        days -= absCeil(monthsToDays(monthsFromDays));
	
	        // 12 months -> 1 year
	        years = absFloor(months / 12);
	        months %= 12;
	
	        data.days   = days;
	        data.months = months;
	        data.years  = years;
	
	        return this;
	    }
	
	    function daysToMonths (days) {
	        // 400 years have 146097 days (taking into account leap year rules)
	        // 400 years have 12 months === 4800
	        return days * 4800 / 146097;
	    }
	
	    function monthsToDays (months) {
	        // the reverse of daysToMonths
	        return months * 146097 / 4800;
	    }
	
	    function as (units) {
	        var days;
	        var months;
	        var milliseconds = this._milliseconds;
	
	        units = normalizeUnits(units);
	
	        if (units === 'month' || units === 'year') {
	            days   = this._days   + milliseconds / 864e5;
	            months = this._months + daysToMonths(days);
	            return units === 'month' ? months : months / 12;
	        } else {
	            // handle milliseconds separately because of floating point math errors (issue #1867)
	            days = this._days + Math.round(monthsToDays(this._months));
	            switch (units) {
	                case 'week'   : return days / 7     + milliseconds / 6048e5;
	                case 'day'    : return days         + milliseconds / 864e5;
	                case 'hour'   : return days * 24    + milliseconds / 36e5;
	                case 'minute' : return days * 1440  + milliseconds / 6e4;
	                case 'second' : return days * 86400 + milliseconds / 1000;
	                // Math.floor prevents floating point math errors here
	                case 'millisecond': return Math.floor(days * 864e5) + milliseconds;
	                default: throw new Error('Unknown unit ' + units);
	            }
	        }
	    }
	
	    // TODO: Use this.as('ms')?
	    function duration_as__valueOf () {
	        return (
	            this._milliseconds +
	            this._days * 864e5 +
	            (this._months % 12) * 2592e6 +
	            toInt(this._months / 12) * 31536e6
	        );
	    }
	
	    function makeAs (alias) {
	        return function () {
	            return this.as(alias);
	        };
	    }
	
	    var asMilliseconds = makeAs('ms');
	    var asSeconds      = makeAs('s');
	    var asMinutes      = makeAs('m');
	    var asHours        = makeAs('h');
	    var asDays         = makeAs('d');
	    var asWeeks        = makeAs('w');
	    var asMonths       = makeAs('M');
	    var asYears        = makeAs('y');
	
	    function duration_get__get (units) {
	        units = normalizeUnits(units);
	        return this[units + 's']();
	    }
	
	    function makeGetter(name) {
	        return function () {
	            return this._data[name];
	        };
	    }
	
	    var milliseconds = makeGetter('milliseconds');
	    var seconds      = makeGetter('seconds');
	    var minutes      = makeGetter('minutes');
	    var hours        = makeGetter('hours');
	    var days         = makeGetter('days');
	    var months       = makeGetter('months');
	    var years        = makeGetter('years');
	
	    function weeks () {
	        return absFloor(this.days() / 7);
	    }
	
	    var round = Math.round;
	    var thresholds = {
	        s: 45,  // seconds to minute
	        m: 45,  // minutes to hour
	        h: 22,  // hours to day
	        d: 26,  // days to month
	        M: 11   // months to year
	    };
	
	    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
	    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
	        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
	    }
	
	    function duration_humanize__relativeTime (posNegDuration, withoutSuffix, locale) {
	        var duration = create__createDuration(posNegDuration).abs();
	        var seconds  = round(duration.as('s'));
	        var minutes  = round(duration.as('m'));
	        var hours    = round(duration.as('h'));
	        var days     = round(duration.as('d'));
	        var months   = round(duration.as('M'));
	        var years    = round(duration.as('y'));
	
	        var a = seconds < thresholds.s && ['s', seconds]  ||
	                minutes <= 1           && ['m']           ||
	                minutes < thresholds.m && ['mm', minutes] ||
	                hours   <= 1           && ['h']           ||
	                hours   < thresholds.h && ['hh', hours]   ||
	                days    <= 1           && ['d']           ||
	                days    < thresholds.d && ['dd', days]    ||
	                months  <= 1           && ['M']           ||
	                months  < thresholds.M && ['MM', months]  ||
	                years   <= 1           && ['y']           || ['yy', years];
	
	        a[2] = withoutSuffix;
	        a[3] = +posNegDuration > 0;
	        a[4] = locale;
	        return substituteTimeAgo.apply(null, a);
	    }
	
	    // This function allows you to set a threshold for relative time strings
	    function duration_humanize__getSetRelativeTimeThreshold (threshold, limit) {
	        if (thresholds[threshold] === undefined) {
	            return false;
	        }
	        if (limit === undefined) {
	            return thresholds[threshold];
	        }
	        thresholds[threshold] = limit;
	        return true;
	    }
	
	    function humanize (withSuffix) {
	        var locale = this.localeData();
	        var output = duration_humanize__relativeTime(this, !withSuffix, locale);
	
	        if (withSuffix) {
	            output = locale.pastFuture(+this, output);
	        }
	
	        return locale.postformat(output);
	    }
	
	    var iso_string__abs = Math.abs;
	
	    function iso_string__toISOString() {
	        // for ISO strings we do not use the normal bubbling rules:
	        //  * milliseconds bubble up until they become hours
	        //  * days do not bubble at all
	        //  * months bubble up until they become years
	        // This is because there is no context-free conversion between hours and days
	        // (think of clock changes)
	        // and also not between days and months (28-31 days per month)
	        var seconds = iso_string__abs(this._milliseconds) / 1000;
	        var days         = iso_string__abs(this._days);
	        var months       = iso_string__abs(this._months);
	        var minutes, hours, years;
	
	        // 3600 seconds -> 60 minutes -> 1 hour
	        minutes           = absFloor(seconds / 60);
	        hours             = absFloor(minutes / 60);
	        seconds %= 60;
	        minutes %= 60;
	
	        // 12 months -> 1 year
	        years  = absFloor(months / 12);
	        months %= 12;
	
	
	        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
	        var Y = years;
	        var M = months;
	        var D = days;
	        var h = hours;
	        var m = minutes;
	        var s = seconds;
	        var total = this.asSeconds();
	
	        if (!total) {
	            // this is the same as C#'s (Noda) and python (isodate)...
	            // but not other JS (goog.date)
	            return 'P0D';
	        }
	
	        return (total < 0 ? '-' : '') +
	            'P' +
	            (Y ? Y + 'Y' : '') +
	            (M ? M + 'M' : '') +
	            (D ? D + 'D' : '') +
	            ((h || m || s) ? 'T' : '') +
	            (h ? h + 'H' : '') +
	            (m ? m + 'M' : '') +
	            (s ? s + 'S' : '');
	    }
	
	    var duration_prototype__proto = Duration.prototype;
	
	    duration_prototype__proto.abs            = duration_abs__abs;
	    duration_prototype__proto.add            = duration_add_subtract__add;
	    duration_prototype__proto.subtract       = duration_add_subtract__subtract;
	    duration_prototype__proto.as             = as;
	    duration_prototype__proto.asMilliseconds = asMilliseconds;
	    duration_prototype__proto.asSeconds      = asSeconds;
	    duration_prototype__proto.asMinutes      = asMinutes;
	    duration_prototype__proto.asHours        = asHours;
	    duration_prototype__proto.asDays         = asDays;
	    duration_prototype__proto.asWeeks        = asWeeks;
	    duration_prototype__proto.asMonths       = asMonths;
	    duration_prototype__proto.asYears        = asYears;
	    duration_prototype__proto.valueOf        = duration_as__valueOf;
	    duration_prototype__proto._bubble        = bubble;
	    duration_prototype__proto.get            = duration_get__get;
	    duration_prototype__proto.milliseconds   = milliseconds;
	    duration_prototype__proto.seconds        = seconds;
	    duration_prototype__proto.minutes        = minutes;
	    duration_prototype__proto.hours          = hours;
	    duration_prototype__proto.days           = days;
	    duration_prototype__proto.weeks          = weeks;
	    duration_prototype__proto.months         = months;
	    duration_prototype__proto.years          = years;
	    duration_prototype__proto.humanize       = humanize;
	    duration_prototype__proto.toISOString    = iso_string__toISOString;
	    duration_prototype__proto.toString       = iso_string__toISOString;
	    duration_prototype__proto.toJSON         = iso_string__toISOString;
	    duration_prototype__proto.locale         = locale;
	    duration_prototype__proto.localeData     = localeData;
	
	    // Deprecations
	    duration_prototype__proto.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', iso_string__toISOString);
	    duration_prototype__proto.lang = lang;
	
	    // Side effect imports
	
	    // FORMATTING
	
	    addFormatToken('X', 0, 0, 'unix');
	    addFormatToken('x', 0, 0, 'valueOf');
	
	    // PARSING
	
	    addRegexToken('x', matchSigned);
	    addRegexToken('X', matchTimestamp);
	    addParseToken('X', function (input, array, config) {
	        config._d = new Date(parseFloat(input, 10) * 1000);
	    });
	    addParseToken('x', function (input, array, config) {
	        config._d = new Date(toInt(input));
	    });
	
	    // Side effect imports
	
	
	    utils_hooks__hooks.version = '2.13.0';
	
	    setHookCallback(local__createLocal);
	
	    utils_hooks__hooks.fn                    = momentPrototype;
	    utils_hooks__hooks.min                   = min;
	    utils_hooks__hooks.max                   = max;
	    utils_hooks__hooks.now                   = now;
	    utils_hooks__hooks.utc                   = create_utc__createUTC;
	    utils_hooks__hooks.unix                  = moment__createUnix;
	    utils_hooks__hooks.months                = lists__listMonths;
	    utils_hooks__hooks.isDate                = isDate;
	    utils_hooks__hooks.locale                = locale_locales__getSetGlobalLocale;
	    utils_hooks__hooks.invalid               = valid__createInvalid;
	    utils_hooks__hooks.duration              = create__createDuration;
	    utils_hooks__hooks.isMoment              = isMoment;
	    utils_hooks__hooks.weekdays              = lists__listWeekdays;
	    utils_hooks__hooks.parseZone             = moment__createInZone;
	    utils_hooks__hooks.localeData            = locale_locales__getLocale;
	    utils_hooks__hooks.isDuration            = isDuration;
	    utils_hooks__hooks.monthsShort           = lists__listMonthsShort;
	    utils_hooks__hooks.weekdaysMin           = lists__listWeekdaysMin;
	    utils_hooks__hooks.defineLocale          = defineLocale;
	    utils_hooks__hooks.updateLocale          = updateLocale;
	    utils_hooks__hooks.locales               = locale_locales__listLocales;
	    utils_hooks__hooks.weekdaysShort         = lists__listWeekdaysShort;
	    utils_hooks__hooks.normalizeUnits        = normalizeUnits;
	    utils_hooks__hooks.relativeTimeThreshold = duration_humanize__getSetRelativeTimeThreshold;
	    utils_hooks__hooks.prototype             = momentPrototype;
	
	    var _moment = utils_hooks__hooks;
	
	    return _moment;
	
	}));
	/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(141)(module)))

/***/ },
/* 3 */
4,
/* 4 */,
/* 5 */,
/* 6 */,
/* 7 */
[460, 3],
/* 8 */
[462, 168, 169, 169],
/* 9 */,
/* 10 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var lang_1 = __webpack_require__(3);
	//// Types
	(function (TypeModifier) {
	    TypeModifier[TypeModifier["Const"] = 0] = "Const";
	})(exports.TypeModifier || (exports.TypeModifier = {}));
	var TypeModifier = exports.TypeModifier;
	var Type = (function () {
	    function Type(modifiers) {
	        if (modifiers === void 0) { modifiers = null; }
	        this.modifiers = modifiers;
	        if (lang_1.isBlank(modifiers)) {
	            this.modifiers = [];
	        }
	    }
	    Type.prototype.hasModifier = function (modifier) { return this.modifiers.indexOf(modifier) !== -1; };
	    return Type;
	}());
	exports.Type = Type;
	(function (BuiltinTypeName) {
	    BuiltinTypeName[BuiltinTypeName["Dynamic"] = 0] = "Dynamic";
	    BuiltinTypeName[BuiltinTypeName["Bool"] = 1] = "Bool";
	    BuiltinTypeName[BuiltinTypeName["String"] = 2] = "String";
	    BuiltinTypeName[BuiltinTypeName["Int"] = 3] = "Int";
	    BuiltinTypeName[BuiltinTypeName["Number"] = 4] = "Number";
	    BuiltinTypeName[BuiltinTypeName["Function"] = 5] = "Function";
	})(exports.BuiltinTypeName || (exports.BuiltinTypeName = {}));
	var BuiltinTypeName = exports.BuiltinTypeName;
	var BuiltinType = (function (_super) {
	    __extends(BuiltinType, _super);
	    function BuiltinType(name, modifiers) {
	        if (modifiers === void 0) { modifiers = null; }
	        _super.call(this, modifiers);
	        this.name = name;
	    }
	    BuiltinType.prototype.visitType = function (visitor, context) {
	        return visitor.visitBuiltintType(this, context);
	    };
	    return BuiltinType;
	}(Type));
	exports.BuiltinType = BuiltinType;
	var ExternalType = (function (_super) {
	    __extends(ExternalType, _super);
	    function ExternalType(value, typeParams, modifiers) {
	        if (typeParams === void 0) { typeParams = null; }
	        if (modifiers === void 0) { modifiers = null; }
	        _super.call(this, modifiers);
	        this.value = value;
	        this.typeParams = typeParams;
	    }
	    ExternalType.prototype.visitType = function (visitor, context) {
	        return visitor.visitExternalType(this, context);
	    };
	    return ExternalType;
	}(Type));
	exports.ExternalType = ExternalType;
	var ArrayType = (function (_super) {
	    __extends(ArrayType, _super);
	    function ArrayType(of, modifiers) {
	        if (modifiers === void 0) { modifiers = null; }
	        _super.call(this, modifiers);
	        this.of = of;
	    }
	    ArrayType.prototype.visitType = function (visitor, context) {
	        return visitor.visitArrayType(this, context);
	    };
	    return ArrayType;
	}(Type));
	exports.ArrayType = ArrayType;
	var MapType = (function (_super) {
	    __extends(MapType, _super);
	    function MapType(valueType, modifiers) {
	        if (modifiers === void 0) { modifiers = null; }
	        _super.call(this, modifiers);
	        this.valueType = valueType;
	    }
	    MapType.prototype.visitType = function (visitor, context) { return visitor.visitMapType(this, context); };
	    return MapType;
	}(Type));
	exports.MapType = MapType;
	exports.DYNAMIC_TYPE = new BuiltinType(BuiltinTypeName.Dynamic);
	exports.BOOL_TYPE = new BuiltinType(BuiltinTypeName.Bool);
	exports.INT_TYPE = new BuiltinType(BuiltinTypeName.Int);
	exports.NUMBER_TYPE = new BuiltinType(BuiltinTypeName.Number);
	exports.STRING_TYPE = new BuiltinType(BuiltinTypeName.String);
	exports.FUNCTION_TYPE = new BuiltinType(BuiltinTypeName.Function);
	///// Expressions
	(function (BinaryOperator) {
	    BinaryOperator[BinaryOperator["Equals"] = 0] = "Equals";
	    BinaryOperator[BinaryOperator["NotEquals"] = 1] = "NotEquals";
	    BinaryOperator[BinaryOperator["Identical"] = 2] = "Identical";
	    BinaryOperator[BinaryOperator["NotIdentical"] = 3] = "NotIdentical";
	    BinaryOperator[BinaryOperator["Minus"] = 4] = "Minus";
	    BinaryOperator[BinaryOperator["Plus"] = 5] = "Plus";
	    BinaryOperator[BinaryOperator["Divide"] = 6] = "Divide";
	    BinaryOperator[BinaryOperator["Multiply"] = 7] = "Multiply";
	    BinaryOperator[BinaryOperator["Modulo"] = 8] = "Modulo";
	    BinaryOperator[BinaryOperator["And"] = 9] = "And";
	    BinaryOperator[BinaryOperator["Or"] = 10] = "Or";
	    BinaryOperator[BinaryOperator["Lower"] = 11] = "Lower";
	    BinaryOperator[BinaryOperator["LowerEquals"] = 12] = "LowerEquals";
	    BinaryOperator[BinaryOperator["Bigger"] = 13] = "Bigger";
	    BinaryOperator[BinaryOperator["BiggerEquals"] = 14] = "BiggerEquals";
	})(exports.BinaryOperator || (exports.BinaryOperator = {}));
	var BinaryOperator = exports.BinaryOperator;
	var Expression = (function () {
	    function Expression(type) {
	        this.type = type;
	    }
	    Expression.prototype.prop = function (name) { return new ReadPropExpr(this, name); };
	    Expression.prototype.key = function (index, type) {
	        if (type === void 0) { type = null; }
	        return new ReadKeyExpr(this, index, type);
	    };
	    Expression.prototype.callMethod = function (name, params) {
	        return new InvokeMethodExpr(this, name, params);
	    };
	    Expression.prototype.callFn = function (params) { return new InvokeFunctionExpr(this, params); };
	    Expression.prototype.instantiate = function (params, type) {
	        if (type === void 0) { type = null; }
	        return new InstantiateExpr(this, params, type);
	    };
	    Expression.prototype.conditional = function (trueCase, falseCase) {
	        if (falseCase === void 0) { falseCase = null; }
	        return new ConditionalExpr(this, trueCase, falseCase);
	    };
	    Expression.prototype.equals = function (rhs) {
	        return new BinaryOperatorExpr(BinaryOperator.Equals, this, rhs);
	    };
	    Expression.prototype.notEquals = function (rhs) {
	        return new BinaryOperatorExpr(BinaryOperator.NotEquals, this, rhs);
	    };
	    Expression.prototype.identical = function (rhs) {
	        return new BinaryOperatorExpr(BinaryOperator.Identical, this, rhs);
	    };
	    Expression.prototype.notIdentical = function (rhs) {
	        return new BinaryOperatorExpr(BinaryOperator.NotIdentical, this, rhs);
	    };
	    Expression.prototype.minus = function (rhs) {
	        return new BinaryOperatorExpr(BinaryOperator.Minus, this, rhs);
	    };
	    Expression.prototype.plus = function (rhs) {
	        return new BinaryOperatorExpr(BinaryOperator.Plus, this, rhs);
	    };
	    Expression.prototype.divide = function (rhs) {
	        return new BinaryOperatorExpr(BinaryOperator.Divide, this, rhs);
	    };
	    Expression.prototype.multiply = function (rhs) {
	        return new BinaryOperatorExpr(BinaryOperator.Multiply, this, rhs);
	    };
	    Expression.prototype.modulo = function (rhs) {
	        return new BinaryOperatorExpr(BinaryOperator.Modulo, this, rhs);
	    };
	    Expression.prototype.and = function (rhs) {
	        return new BinaryOperatorExpr(BinaryOperator.And, this, rhs);
	    };
	    Expression.prototype.or = function (rhs) {
	        return new BinaryOperatorExpr(BinaryOperator.Or, this, rhs);
	    };
	    Expression.prototype.lower = function (rhs) {
	        return new BinaryOperatorExpr(BinaryOperator.Lower, this, rhs);
	    };
	    Expression.prototype.lowerEquals = function (rhs) {
	        return new BinaryOperatorExpr(BinaryOperator.LowerEquals, this, rhs);
	    };
	    Expression.prototype.bigger = function (rhs) {
	        return new BinaryOperatorExpr(BinaryOperator.Bigger, this, rhs);
	    };
	    Expression.prototype.biggerEquals = function (rhs) {
	        return new BinaryOperatorExpr(BinaryOperator.BiggerEquals, this, rhs);
	    };
	    Expression.prototype.isBlank = function () {
	        // Note: We use equals by purpose here to compare to null and undefined in JS.
	        return this.equals(exports.NULL_EXPR);
	    };
	    Expression.prototype.cast = function (type) { return new CastExpr(this, type); };
	    Expression.prototype.toStmt = function () { return new ExpressionStatement(this); };
	    return Expression;
	}());
	exports.Expression = Expression;
	(function (BuiltinVar) {
	    BuiltinVar[BuiltinVar["This"] = 0] = "This";
	    BuiltinVar[BuiltinVar["Super"] = 1] = "Super";
	    BuiltinVar[BuiltinVar["CatchError"] = 2] = "CatchError";
	    BuiltinVar[BuiltinVar["CatchStack"] = 3] = "CatchStack";
	})(exports.BuiltinVar || (exports.BuiltinVar = {}));
	var BuiltinVar = exports.BuiltinVar;
	var ReadVarExpr = (function (_super) {
	    __extends(ReadVarExpr, _super);
	    function ReadVarExpr(name, type) {
	        if (type === void 0) { type = null; }
	        _super.call(this, type);
	        if (lang_1.isString(name)) {
	            this.name = name;
	            this.builtin = null;
	        }
	        else {
	            this.name = null;
	            this.builtin = name;
	        }
	    }
	    ReadVarExpr.prototype.visitExpression = function (visitor, context) {
	        return visitor.visitReadVarExpr(this, context);
	    };
	    ReadVarExpr.prototype.set = function (value) { return new WriteVarExpr(this.name, value); };
	    return ReadVarExpr;
	}(Expression));
	exports.ReadVarExpr = ReadVarExpr;
	var WriteVarExpr = (function (_super) {
	    __extends(WriteVarExpr, _super);
	    function WriteVarExpr(name, value, type) {
	        if (type === void 0) { type = null; }
	        _super.call(this, lang_1.isPresent(type) ? type : value.type);
	        this.name = name;
	        this.value = value;
	    }
	    WriteVarExpr.prototype.visitExpression = function (visitor, context) {
	        return visitor.visitWriteVarExpr(this, context);
	    };
	    WriteVarExpr.prototype.toDeclStmt = function (type, modifiers) {
	        if (type === void 0) { type = null; }
	        if (modifiers === void 0) { modifiers = null; }
	        return new DeclareVarStmt(this.name, this.value, type, modifiers);
	    };
	    return WriteVarExpr;
	}(Expression));
	exports.WriteVarExpr = WriteVarExpr;
	var WriteKeyExpr = (function (_super) {
	    __extends(WriteKeyExpr, _super);
	    function WriteKeyExpr(receiver, index, value, type) {
	        if (type === void 0) { type = null; }
	        _super.call(this, lang_1.isPresent(type) ? type : value.type);
	        this.receiver = receiver;
	        this.index = index;
	        this.value = value;
	    }
	    WriteKeyExpr.prototype.visitExpression = function (visitor, context) {
	        return visitor.visitWriteKeyExpr(this, context);
	    };
	    return WriteKeyExpr;
	}(Expression));
	exports.WriteKeyExpr = WriteKeyExpr;
	var WritePropExpr = (function (_super) {
	    __extends(WritePropExpr, _super);
	    function WritePropExpr(receiver, name, value, type) {
	        if (type === void 0) { type = null; }
	        _super.call(this, lang_1.isPresent(type) ? type : value.type);
	        this.receiver = receiver;
	        this.name = name;
	        this.value = value;
	    }
	    WritePropExpr.prototype.visitExpression = function (visitor, context) {
	        return visitor.visitWritePropExpr(this, context);
	    };
	    return WritePropExpr;
	}(Expression));
	exports.WritePropExpr = WritePropExpr;
	(function (BuiltinMethod) {
	    BuiltinMethod[BuiltinMethod["ConcatArray"] = 0] = "ConcatArray";
	    BuiltinMethod[BuiltinMethod["SubscribeObservable"] = 1] = "SubscribeObservable";
	    BuiltinMethod[BuiltinMethod["bind"] = 2] = "bind";
	})(exports.BuiltinMethod || (exports.BuiltinMethod = {}));
	var BuiltinMethod = exports.BuiltinMethod;
	var InvokeMethodExpr = (function (_super) {
	    __extends(InvokeMethodExpr, _super);
	    function InvokeMethodExpr(receiver, method, args, type) {
	        if (type === void 0) { type = null; }
	        _super.call(this, type);
	        this.receiver = receiver;
	        this.args = args;
	        if (lang_1.isString(method)) {
	            this.name = method;
	            this.builtin = null;
	        }
	        else {
	            this.name = null;
	            this.builtin = method;
	        }
	    }
	    InvokeMethodExpr.prototype.visitExpression = function (visitor, context) {
	        return visitor.visitInvokeMethodExpr(this, context);
	    };
	    return InvokeMethodExpr;
	}(Expression));
	exports.InvokeMethodExpr = InvokeMethodExpr;
	var InvokeFunctionExpr = (function (_super) {
	    __extends(InvokeFunctionExpr, _super);
	    function InvokeFunctionExpr(fn, args, type) {
	        if (type === void 0) { type = null; }
	        _super.call(this, type);
	        this.fn = fn;
	        this.args = args;
	    }
	    InvokeFunctionExpr.prototype.visitExpression = function (visitor, context) {
	        return visitor.visitInvokeFunctionExpr(this, context);
	    };
	    return InvokeFunctionExpr;
	}(Expression));
	exports.InvokeFunctionExpr = InvokeFunctionExpr;
	var InstantiateExpr = (function (_super) {
	    __extends(InstantiateExpr, _super);
	    function InstantiateExpr(classExpr, args, type) {
	        _super.call(this, type);
	        this.classExpr = classExpr;
	        this.args = args;
	    }
	    InstantiateExpr.prototype.visitExpression = function (visitor, context) {
	        return visitor.visitInstantiateExpr(this, context);
	    };
	    return InstantiateExpr;
	}(Expression));
	exports.InstantiateExpr = InstantiateExpr;
	var LiteralExpr = (function (_super) {
	    __extends(LiteralExpr, _super);
	    function LiteralExpr(value, type) {
	        if (type === void 0) { type = null; }
	        _super.call(this, type);
	        this.value = value;
	    }
	    LiteralExpr.prototype.visitExpression = function (visitor, context) {
	        return visitor.visitLiteralExpr(this, context);
	    };
	    return LiteralExpr;
	}(Expression));
	exports.LiteralExpr = LiteralExpr;
	var ExternalExpr = (function (_super) {
	    __extends(ExternalExpr, _super);
	    function ExternalExpr(value, type, typeParams) {
	        if (type === void 0) { type = null; }
	        if (typeParams === void 0) { typeParams = null; }
	        _super.call(this, type);
	        this.value = value;
	        this.typeParams = typeParams;
	    }
	    ExternalExpr.prototype.visitExpression = function (visitor, context) {
	        return visitor.visitExternalExpr(this, context);
	    };
	    return ExternalExpr;
	}(Expression));
	exports.ExternalExpr = ExternalExpr;
	var ConditionalExpr = (function (_super) {
	    __extends(ConditionalExpr, _super);
	    function ConditionalExpr(condition, trueCase, falseCase, type) {
	        if (falseCase === void 0) { falseCase = null; }
	        if (type === void 0) { type = null; }
	        _super.call(this, lang_1.isPresent(type) ? type : trueCase.type);
	        this.condition = condition;
	        this.falseCase = falseCase;
	        this.trueCase = trueCase;
	    }
	    ConditionalExpr.prototype.visitExpression = function (visitor, context) {
	        return visitor.visitConditionalExpr(this, context);
	    };
	    return ConditionalExpr;
	}(Expression));
	exports.ConditionalExpr = ConditionalExpr;
	var NotExpr = (function (_super) {
	    __extends(NotExpr, _super);
	    function NotExpr(condition) {
	        _super.call(this, exports.BOOL_TYPE);
	        this.condition = condition;
	    }
	    NotExpr.prototype.visitExpression = function (visitor, context) {
	        return visitor.visitNotExpr(this, context);
	    };
	    return NotExpr;
	}(Expression));
	exports.NotExpr = NotExpr;
	var CastExpr = (function (_super) {
	    __extends(CastExpr, _super);
	    function CastExpr(value, type) {
	        _super.call(this, type);
	        this.value = value;
	    }
	    CastExpr.prototype.visitExpression = function (visitor, context) {
	        return visitor.visitCastExpr(this, context);
	    };
	    return CastExpr;
	}(Expression));
	exports.CastExpr = CastExpr;
	var FnParam = (function () {
	    function FnParam(name, type) {
	        if (type === void 0) { type = null; }
	        this.name = name;
	        this.type = type;
	    }
	    return FnParam;
	}());
	exports.FnParam = FnParam;
	var FunctionExpr = (function (_super) {
	    __extends(FunctionExpr, _super);
	    function FunctionExpr(params, statements, type) {
	        if (type === void 0) { type = null; }
	        _super.call(this, type);
	        this.params = params;
	        this.statements = statements;
	    }
	    FunctionExpr.prototype.visitExpression = function (visitor, context) {
	        return visitor.visitFunctionExpr(this, context);
	    };
	    FunctionExpr.prototype.toDeclStmt = function (name, modifiers) {
	        if (modifiers === void 0) { modifiers = null; }
	        return new DeclareFunctionStmt(name, this.params, this.statements, this.type, modifiers);
	    };
	    return FunctionExpr;
	}(Expression));
	exports.FunctionExpr = FunctionExpr;
	var BinaryOperatorExpr = (function (_super) {
	    __extends(BinaryOperatorExpr, _super);
	    function BinaryOperatorExpr(operator, lhs, rhs, type) {
	        if (type === void 0) { type = null; }
	        _super.call(this, lang_1.isPresent(type) ? type : lhs.type);
	        this.operator = operator;
	        this.rhs = rhs;
	        this.lhs = lhs;
	    }
	    BinaryOperatorExpr.prototype.visitExpression = function (visitor, context) {
	        return visitor.visitBinaryOperatorExpr(this, context);
	    };
	    return BinaryOperatorExpr;
	}(Expression));
	exports.BinaryOperatorExpr = BinaryOperatorExpr;
	var ReadPropExpr = (function (_super) {
	    __extends(ReadPropExpr, _super);
	    function ReadPropExpr(receiver, name, type) {
	        if (type === void 0) { type = null; }
	        _super.call(this, type);
	        this.receiver = receiver;
	        this.name = name;
	    }
	    ReadPropExpr.prototype.visitExpression = function (visitor, context) {
	        return visitor.visitReadPropExpr(this, context);
	    };
	    ReadPropExpr.prototype.set = function (value) {
	        return new WritePropExpr(this.receiver, this.name, value);
	    };
	    return ReadPropExpr;
	}(Expression));
	exports.ReadPropExpr = ReadPropExpr;
	var ReadKeyExpr = (function (_super) {
	    __extends(ReadKeyExpr, _super);
	    function ReadKeyExpr(receiver, index, type) {
	        if (type === void 0) { type = null; }
	        _super.call(this, type);
	        this.receiver = receiver;
	        this.index = index;
	    }
	    ReadKeyExpr.prototype.visitExpression = function (visitor, context) {
	        return visitor.visitReadKeyExpr(this, context);
	    };
	    ReadKeyExpr.prototype.set = function (value) {
	        return new WriteKeyExpr(this.receiver, this.index, value);
	    };
	    return ReadKeyExpr;
	}(Expression));
	exports.ReadKeyExpr = ReadKeyExpr;
	var LiteralArrayExpr = (function (_super) {
	    __extends(LiteralArrayExpr, _super);
	    function LiteralArrayExpr(entries, type) {
	        if (type === void 0) { type = null; }
	        _super.call(this, type);
	        this.entries = entries;
	    }
	    LiteralArrayExpr.prototype.visitExpression = function (visitor, context) {
	        return visitor.visitLiteralArrayExpr(this, context);
	    };
	    return LiteralArrayExpr;
	}(Expression));
	exports.LiteralArrayExpr = LiteralArrayExpr;
	var LiteralMapExpr = (function (_super) {
	    __extends(LiteralMapExpr, _super);
	    function LiteralMapExpr(entries, type) {
	        if (type === void 0) { type = null; }
	        _super.call(this, type);
	        this.entries = entries;
	        this.valueType = null;
	        if (lang_1.isPresent(type)) {
	            this.valueType = type.valueType;
	        }
	    }
	    LiteralMapExpr.prototype.visitExpression = function (visitor, context) {
	        return visitor.visitLiteralMapExpr(this, context);
	    };
	    return LiteralMapExpr;
	}(Expression));
	exports.LiteralMapExpr = LiteralMapExpr;
	exports.THIS_EXPR = new ReadVarExpr(BuiltinVar.This);
	exports.SUPER_EXPR = new ReadVarExpr(BuiltinVar.Super);
	exports.CATCH_ERROR_VAR = new ReadVarExpr(BuiltinVar.CatchError);
	exports.CATCH_STACK_VAR = new ReadVarExpr(BuiltinVar.CatchStack);
	exports.NULL_EXPR = new LiteralExpr(null, null);
	//// Statements
	(function (StmtModifier) {
	    StmtModifier[StmtModifier["Final"] = 0] = "Final";
	    StmtModifier[StmtModifier["Private"] = 1] = "Private";
	})(exports.StmtModifier || (exports.StmtModifier = {}));
	var StmtModifier = exports.StmtModifier;
	var Statement = (function () {
	    function Statement(modifiers) {
	        if (modifiers === void 0) { modifiers = null; }
	        this.modifiers = modifiers;
	        if (lang_1.isBlank(modifiers)) {
	            this.modifiers = [];
	        }
	    }
	    Statement.prototype.hasModifier = function (modifier) { return this.modifiers.indexOf(modifier) !== -1; };
	    return Statement;
	}());
	exports.Statement = Statement;
	var DeclareVarStmt = (function (_super) {
	    __extends(DeclareVarStmt, _super);
	    function DeclareVarStmt(name, value, type, modifiers) {
	        if (type === void 0) { type = null; }
	        if (modifiers === void 0) { modifiers = null; }
	        _super.call(this, modifiers);
	        this.name = name;
	        this.value = value;
	        this.type = lang_1.isPresent(type) ? type : value.type;
	    }
	    DeclareVarStmt.prototype.visitStatement = function (visitor, context) {
	        return visitor.visitDeclareVarStmt(this, context);
	    };
	    return DeclareVarStmt;
	}(Statement));
	exports.DeclareVarStmt = DeclareVarStmt;
	var DeclareFunctionStmt = (function (_super) {
	    __extends(DeclareFunctionStmt, _super);
	    function DeclareFunctionStmt(name, params, statements, type, modifiers) {
	        if (type === void 0) { type = null; }
	        if (modifiers === void 0) { modifiers = null; }
	        _super.call(this, modifiers);
	        this.name = name;
	        this.params = params;
	        this.statements = statements;
	        this.type = type;
	    }
	    DeclareFunctionStmt.prototype.visitStatement = function (visitor, context) {
	        return visitor.visitDeclareFunctionStmt(this, context);
	    };
	    return DeclareFunctionStmt;
	}(Statement));
	exports.DeclareFunctionStmt = DeclareFunctionStmt;
	var ExpressionStatement = (function (_super) {
	    __extends(ExpressionStatement, _super);
	    function ExpressionStatement(expr) {
	        _super.call(this);
	        this.expr = expr;
	    }
	    ExpressionStatement.prototype.visitStatement = function (visitor, context) {
	        return visitor.visitExpressionStmt(this, context);
	    };
	    return ExpressionStatement;
	}(Statement));
	exports.ExpressionStatement = ExpressionStatement;
	var ReturnStatement = (function (_super) {
	    __extends(ReturnStatement, _super);
	    function ReturnStatement(value) {
	        _super.call(this);
	        this.value = value;
	    }
	    ReturnStatement.prototype.visitStatement = function (visitor, context) {
	        return visitor.visitReturnStmt(this, context);
	    };
	    return ReturnStatement;
	}(Statement));
	exports.ReturnStatement = ReturnStatement;
	var AbstractClassPart = (function () {
	    function AbstractClassPart(type, modifiers) {
	        if (type === void 0) { type = null; }
	        this.type = type;
	        this.modifiers = modifiers;
	        if (lang_1.isBlank(modifiers)) {
	            this.modifiers = [];
	        }
	    }
	    AbstractClassPart.prototype.hasModifier = function (modifier) { return this.modifiers.indexOf(modifier) !== -1; };
	    return AbstractClassPart;
	}());
	exports.AbstractClassPart = AbstractClassPart;
	var ClassField = (function (_super) {
	    __extends(ClassField, _super);
	    function ClassField(name, type, modifiers) {
	        if (type === void 0) { type = null; }
	        if (modifiers === void 0) { modifiers = null; }
	        _super.call(this, type, modifiers);
	        this.name = name;
	    }
	    return ClassField;
	}(AbstractClassPart));
	exports.ClassField = ClassField;
	var ClassMethod = (function (_super) {
	    __extends(ClassMethod, _super);
	    function ClassMethod(name, params, body, type, modifiers) {
	        if (type === void 0) { type = null; }
	        if (modifiers === void 0) { modifiers = null; }
	        _super.call(this, type, modifiers);
	        this.name = name;
	        this.params = params;
	        this.body = body;
	    }
	    return ClassMethod;
	}(AbstractClassPart));
	exports.ClassMethod = ClassMethod;
	var ClassGetter = (function (_super) {
	    __extends(ClassGetter, _super);
	    function ClassGetter(name, body, type, modifiers) {
	        if (type === void 0) { type = null; }
	        if (modifiers === void 0) { modifiers = null; }
	        _super.call(this, type, modifiers);
	        this.name = name;
	        this.body = body;
	    }
	    return ClassGetter;
	}(AbstractClassPart));
	exports.ClassGetter = ClassGetter;
	var ClassStmt = (function (_super) {
	    __extends(ClassStmt, _super);
	    function ClassStmt(name, parent, fields, getters, constructorMethod, methods, modifiers) {
	        if (modifiers === void 0) { modifiers = null; }
	        _super.call(this, modifiers);
	        this.name = name;
	        this.parent = parent;
	        this.fields = fields;
	        this.getters = getters;
	        this.constructorMethod = constructorMethod;
	        this.methods = methods;
	    }
	    ClassStmt.prototype.visitStatement = function (visitor, context) {
	        return visitor.visitDeclareClassStmt(this, context);
	    };
	    return ClassStmt;
	}(Statement));
	exports.ClassStmt = ClassStmt;
	var IfStmt = (function (_super) {
	    __extends(IfStmt, _super);
	    function IfStmt(condition, trueCase, falseCase) {
	        if (falseCase === void 0) { falseCase = []; }
	        _super.call(this);
	        this.condition = condition;
	        this.trueCase = trueCase;
	        this.falseCase = falseCase;
	    }
	    IfStmt.prototype.visitStatement = function (visitor, context) {
	        return visitor.visitIfStmt(this, context);
	    };
	    return IfStmt;
	}(Statement));
	exports.IfStmt = IfStmt;
	var CommentStmt = (function (_super) {
	    __extends(CommentStmt, _super);
	    function CommentStmt(comment) {
	        _super.call(this);
	        this.comment = comment;
	    }
	    CommentStmt.prototype.visitStatement = function (visitor, context) {
	        return visitor.visitCommentStmt(this, context);
	    };
	    return CommentStmt;
	}(Statement));
	exports.CommentStmt = CommentStmt;
	var TryCatchStmt = (function (_super) {
	    __extends(TryCatchStmt, _super);
	    function TryCatchStmt(bodyStmts, catchStmts) {
	        _super.call(this);
	        this.bodyStmts = bodyStmts;
	        this.catchStmts = catchStmts;
	    }
	    TryCatchStmt.prototype.visitStatement = function (visitor, context) {
	        return visitor.visitTryCatchStmt(this, context);
	    };
	    return TryCatchStmt;
	}(Statement));
	exports.TryCatchStmt = TryCatchStmt;
	var ThrowStmt = (function (_super) {
	    __extends(ThrowStmt, _super);
	    function ThrowStmt(error) {
	        _super.call(this);
	        this.error = error;
	    }
	    ThrowStmt.prototype.visitStatement = function (visitor, context) {
	        return visitor.visitThrowStmt(this, context);
	    };
	    return ThrowStmt;
	}(Statement));
	exports.ThrowStmt = ThrowStmt;
	var ExpressionTransformer = (function () {
	    function ExpressionTransformer() {
	    }
	    ExpressionTransformer.prototype.visitReadVarExpr = function (ast, context) { return ast; };
	    ExpressionTransformer.prototype.visitWriteVarExpr = function (expr, context) {
	        return new WriteVarExpr(expr.name, expr.value.visitExpression(this, context));
	    };
	    ExpressionTransformer.prototype.visitWriteKeyExpr = function (expr, context) {
	        return new WriteKeyExpr(expr.receiver.visitExpression(this, context), expr.index.visitExpression(this, context), expr.value.visitExpression(this, context));
	    };
	    ExpressionTransformer.prototype.visitWritePropExpr = function (expr, context) {
	        return new WritePropExpr(expr.receiver.visitExpression(this, context), expr.name, expr.value.visitExpression(this, context));
	    };
	    ExpressionTransformer.prototype.visitInvokeMethodExpr = function (ast, context) {
	        var method = lang_1.isPresent(ast.builtin) ? ast.builtin : ast.name;
	        return new InvokeMethodExpr(ast.receiver.visitExpression(this, context), method, this.visitAllExpressions(ast.args, context), ast.type);
	    };
	    ExpressionTransformer.prototype.visitInvokeFunctionExpr = function (ast, context) {
	        return new InvokeFunctionExpr(ast.fn.visitExpression(this, context), this.visitAllExpressions(ast.args, context), ast.type);
	    };
	    ExpressionTransformer.prototype.visitInstantiateExpr = function (ast, context) {
	        return new InstantiateExpr(ast.classExpr.visitExpression(this, context), this.visitAllExpressions(ast.args, context), ast.type);
	    };
	    ExpressionTransformer.prototype.visitLiteralExpr = function (ast, context) { return ast; };
	    ExpressionTransformer.prototype.visitExternalExpr = function (ast, context) { return ast; };
	    ExpressionTransformer.prototype.visitConditionalExpr = function (ast, context) {
	        return new ConditionalExpr(ast.condition.visitExpression(this, context), ast.trueCase.visitExpression(this, context), ast.falseCase.visitExpression(this, context));
	    };
	    ExpressionTransformer.prototype.visitNotExpr = function (ast, context) {
	        return new NotExpr(ast.condition.visitExpression(this, context));
	    };
	    ExpressionTransformer.prototype.visitCastExpr = function (ast, context) {
	        return new CastExpr(ast.value.visitExpression(this, context), context);
	    };
	    ExpressionTransformer.prototype.visitFunctionExpr = function (ast, context) {
	        // Don't descend into nested functions
	        return ast;
	    };
	    ExpressionTransformer.prototype.visitBinaryOperatorExpr = function (ast, context) {
	        return new BinaryOperatorExpr(ast.operator, ast.lhs.visitExpression(this, context), ast.rhs.visitExpression(this, context), ast.type);
	    };
	    ExpressionTransformer.prototype.visitReadPropExpr = function (ast, context) {
	        return new ReadPropExpr(ast.receiver.visitExpression(this, context), ast.name, ast.type);
	    };
	    ExpressionTransformer.prototype.visitReadKeyExpr = function (ast, context) {
	        return new ReadKeyExpr(ast.receiver.visitExpression(this, context), ast.index.visitExpression(this, context), ast.type);
	    };
	    ExpressionTransformer.prototype.visitLiteralArrayExpr = function (ast, context) {
	        return new LiteralArrayExpr(this.visitAllExpressions(ast.entries, context));
	    };
	    ExpressionTransformer.prototype.visitLiteralMapExpr = function (ast, context) {
	        var _this = this;
	        return new LiteralMapExpr(ast.entries.map(function (entry) { return [entry[0], entry[1].visitExpression(_this, context)]; }));
	    };
	    ExpressionTransformer.prototype.visitAllExpressions = function (exprs, context) {
	        var _this = this;
	        return exprs.map(function (expr) { return expr.visitExpression(_this, context); });
	    };
	    ExpressionTransformer.prototype.visitDeclareVarStmt = function (stmt, context) {
	        return new DeclareVarStmt(stmt.name, stmt.value.visitExpression(this, context), stmt.type, stmt.modifiers);
	    };
	    ExpressionTransformer.prototype.visitDeclareFunctionStmt = function (stmt, context) {
	        // Don't descend into nested functions
	        return stmt;
	    };
	    ExpressionTransformer.prototype.visitExpressionStmt = function (stmt, context) {
	        return new ExpressionStatement(stmt.expr.visitExpression(this, context));
	    };
	    ExpressionTransformer.prototype.visitReturnStmt = function (stmt, context) {
	        return new ReturnStatement(stmt.value.visitExpression(this, context));
	    };
	    ExpressionTransformer.prototype.visitDeclareClassStmt = function (stmt, context) {
	        // Don't descend into nested functions
	        return stmt;
	    };
	    ExpressionTransformer.prototype.visitIfStmt = function (stmt, context) {
	        return new IfStmt(stmt.condition.visitExpression(this, context), this.visitAllStatements(stmt.trueCase, context), this.visitAllStatements(stmt.falseCase, context));
	    };
	    ExpressionTransformer.prototype.visitTryCatchStmt = function (stmt, context) {
	        return new TryCatchStmt(this.visitAllStatements(stmt.bodyStmts, context), this.visitAllStatements(stmt.catchStmts, context));
	    };
	    ExpressionTransformer.prototype.visitThrowStmt = function (stmt, context) {
	        return new ThrowStmt(stmt.error.visitExpression(this, context));
	    };
	    ExpressionTransformer.prototype.visitCommentStmt = function (stmt, context) { return stmt; };
	    ExpressionTransformer.prototype.visitAllStatements = function (stmts, context) {
	        var _this = this;
	        return stmts.map(function (stmt) { return stmt.visitStatement(_this, context); });
	    };
	    return ExpressionTransformer;
	}());
	exports.ExpressionTransformer = ExpressionTransformer;
	var RecursiveExpressionVisitor = (function () {
	    function RecursiveExpressionVisitor() {
	    }
	    RecursiveExpressionVisitor.prototype.visitReadVarExpr = function (ast, context) { return ast; };
	    RecursiveExpressionVisitor.prototype.visitWriteVarExpr = function (expr, context) {
	        expr.value.visitExpression(this, context);
	        return expr;
	    };
	    RecursiveExpressionVisitor.prototype.visitWriteKeyExpr = function (expr, context) {
	        expr.receiver.visitExpression(this, context);
	        expr.index.visitExpression(this, context);
	        expr.value.visitExpression(this, context);
	        return expr;
	    };
	    RecursiveExpressionVisitor.prototype.visitWritePropExpr = function (expr, context) {
	        expr.receiver.visitExpression(this, context);
	        expr.value.visitExpression(this, context);
	        return expr;
	    };
	    RecursiveExpressionVisitor.prototype.visitInvokeMethodExpr = function (ast, context) {
	        ast.receiver.visitExpression(this, context);
	        this.visitAllExpressions(ast.args, context);
	        return ast;
	    };
	    RecursiveExpressionVisitor.prototype.visitInvokeFunctionExpr = function (ast, context) {
	        ast.fn.visitExpression(this, context);
	        this.visitAllExpressions(ast.args, context);
	        return ast;
	    };
	    RecursiveExpressionVisitor.prototype.visitInstantiateExpr = function (ast, context) {
	        ast.classExpr.visitExpression(this, context);
	        this.visitAllExpressions(ast.args, context);
	        return ast;
	    };
	    RecursiveExpressionVisitor.prototype.visitLiteralExpr = function (ast, context) { return ast; };
	    RecursiveExpressionVisitor.prototype.visitExternalExpr = function (ast, context) { return ast; };
	    RecursiveExpressionVisitor.prototype.visitConditionalExpr = function (ast, context) {
	        ast.condition.visitExpression(this, context);
	        ast.trueCase.visitExpression(this, context);
	        ast.falseCase.visitExpression(this, context);
	        return ast;
	    };
	    RecursiveExpressionVisitor.prototype.visitNotExpr = function (ast, context) {
	        ast.condition.visitExpression(this, context);
	        return ast;
	    };
	    RecursiveExpressionVisitor.prototype.visitCastExpr = function (ast, context) {
	        ast.value.visitExpression(this, context);
	        return ast;
	    };
	    RecursiveExpressionVisitor.prototype.visitFunctionExpr = function (ast, context) { return ast; };
	    RecursiveExpressionVisitor.prototype.visitBinaryOperatorExpr = function (ast, context) {
	        ast.lhs.visitExpression(this, context);
	        ast.rhs.visitExpression(this, context);
	        return ast;
	    };
	    RecursiveExpressionVisitor.prototype.visitReadPropExpr = function (ast, context) {
	        ast.receiver.visitExpression(this, context);
	        return ast;
	    };
	    RecursiveExpressionVisitor.prototype.visitReadKeyExpr = function (ast, context) {
	        ast.receiver.visitExpression(this, context);
	        ast.index.visitExpression(this, context);
	        return ast;
	    };
	    RecursiveExpressionVisitor.prototype.visitLiteralArrayExpr = function (ast, context) {
	        this.visitAllExpressions(ast.entries, context);
	        return ast;
	    };
	    RecursiveExpressionVisitor.prototype.visitLiteralMapExpr = function (ast, context) {
	        var _this = this;
	        ast.entries.forEach(function (entry) { return entry[1].visitExpression(_this, context); });
	        return ast;
	    };
	    RecursiveExpressionVisitor.prototype.visitAllExpressions = function (exprs, context) {
	        var _this = this;
	        exprs.forEach(function (expr) { return expr.visitExpression(_this, context); });
	    };
	    RecursiveExpressionVisitor.prototype.visitDeclareVarStmt = function (stmt, context) {
	        stmt.value.visitExpression(this, context);
	        return stmt;
	    };
	    RecursiveExpressionVisitor.prototype.visitDeclareFunctionStmt = function (stmt, context) {
	        // Don't descend into nested functions
	        return stmt;
	    };
	    RecursiveExpressionVisitor.prototype.visitExpressionStmt = function (stmt, context) {
	        stmt.expr.visitExpression(this, context);
	        return stmt;
	    };
	    RecursiveExpressionVisitor.prototype.visitReturnStmt = function (stmt, context) {
	        stmt.value.visitExpression(this, context);
	        return stmt;
	    };
	    RecursiveExpressionVisitor.prototype.visitDeclareClassStmt = function (stmt, context) {
	        // Don't descend into nested functions
	        return stmt;
	    };
	    RecursiveExpressionVisitor.prototype.visitIfStmt = function (stmt, context) {
	        stmt.condition.visitExpression(this, context);
	        this.visitAllStatements(stmt.trueCase, context);
	        this.visitAllStatements(stmt.falseCase, context);
	        return stmt;
	    };
	    RecursiveExpressionVisitor.prototype.visitTryCatchStmt = function (stmt, context) {
	        this.visitAllStatements(stmt.bodyStmts, context);
	        this.visitAllStatements(stmt.catchStmts, context);
	        return stmt;
	    };
	    RecursiveExpressionVisitor.prototype.visitThrowStmt = function (stmt, context) {
	        stmt.error.visitExpression(this, context);
	        return stmt;
	    };
	    RecursiveExpressionVisitor.prototype.visitCommentStmt = function (stmt, context) { return stmt; };
	    RecursiveExpressionVisitor.prototype.visitAllStatements = function (stmts, context) {
	        var _this = this;
	        stmts.forEach(function (stmt) { return stmt.visitStatement(_this, context); });
	    };
	    return RecursiveExpressionVisitor;
	}());
	exports.RecursiveExpressionVisitor = RecursiveExpressionVisitor;
	function replaceVarInExpression(varName, newValue, expression) {
	    var transformer = new _ReplaceVariableTransformer(varName, newValue);
	    return expression.visitExpression(transformer, null);
	}
	exports.replaceVarInExpression = replaceVarInExpression;
	var _ReplaceVariableTransformer = (function (_super) {
	    __extends(_ReplaceVariableTransformer, _super);
	    function _ReplaceVariableTransformer(_varName, _newValue) {
	        _super.call(this);
	        this._varName = _varName;
	        this._newValue = _newValue;
	    }
	    _ReplaceVariableTransformer.prototype.visitReadVarExpr = function (ast, context) {
	        return ast.name == this._varName ? this._newValue : ast;
	    };
	    return _ReplaceVariableTransformer;
	}(ExpressionTransformer));
	function findReadVarNames(stmts) {
	    var finder = new _VariableFinder();
	    finder.visitAllStatements(stmts, null);
	    return finder.varNames;
	}
	exports.findReadVarNames = findReadVarNames;
	var _VariableFinder = (function (_super) {
	    __extends(_VariableFinder, _super);
	    function _VariableFinder() {
	        _super.apply(this, arguments);
	        this.varNames = new Set();
	    }
	    _VariableFinder.prototype.visitReadVarExpr = function (ast, context) {
	        this.varNames.add(ast.name);
	        return null;
	    };
	    return _VariableFinder;
	}(RecursiveExpressionVisitor));
	function variable(name, type) {
	    if (type === void 0) { type = null; }
	    return new ReadVarExpr(name, type);
	}
	exports.variable = variable;
	function importExpr(id, typeParams) {
	    if (typeParams === void 0) { typeParams = null; }
	    return new ExternalExpr(id, null, typeParams);
	}
	exports.importExpr = importExpr;
	function importType(id, typeParams, typeModifiers) {
	    if (typeParams === void 0) { typeParams = null; }
	    if (typeModifiers === void 0) { typeModifiers = null; }
	    return lang_1.isPresent(id) ? new ExternalType(id, typeParams, typeModifiers) : null;
	}
	exports.importType = importType;
	function literal(value, type) {
	    if (type === void 0) { type = null; }
	    return new LiteralExpr(value, type);
	}
	exports.literal = literal;
	function literalArr(values, type) {
	    if (type === void 0) { type = null; }
	    return new LiteralArrayExpr(values, type);
	}
	exports.literalArr = literalArr;
	function literalMap(values, type) {
	    if (type === void 0) { type = null; }
	    return new LiteralMapExpr(values, type);
	}
	exports.literalMap = literalMap;
	function not(expr) {
	    return new NotExpr(expr);
	}
	exports.not = not;
	function fn(params, body, type) {
	    if (type === void 0) { type = null; }
	    return new FunctionExpr(params, body, type);
	}
	exports.fn = fn;
	//# sourceMappingURL=output_ast.js.map

/***/ },
/* 11 */,
/* 12 */
4,
/* 13 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var core_1 = __webpack_require__(1);
	exports.isDefaultChangeDetectionStrategy = core_1.__core_private__.isDefaultChangeDetectionStrategy;
	exports.ChangeDetectorState = core_1.__core_private__.ChangeDetectorState;
	exports.CHANGE_DETECTION_STRATEGY_VALUES = core_1.__core_private__.CHANGE_DETECTION_STRATEGY_VALUES;
	exports.constructDependencies = core_1.__core_private__.constructDependencies;
	exports.LifecycleHooks = core_1.__core_private__.LifecycleHooks;
	exports.LIFECYCLE_HOOKS_VALUES = core_1.__core_private__.LIFECYCLE_HOOKS_VALUES;
	exports.ReflectorReader = core_1.__core_private__.ReflectorReader;
	exports.ReflectorComponentResolver = core_1.__core_private__.ReflectorComponentResolver;
	exports.AppElement = core_1.__core_private__.AppElement;
	exports.AppView = core_1.__core_private__.AppView;
	exports.DebugAppView = core_1.__core_private__.DebugAppView;
	exports.ViewType = core_1.__core_private__.ViewType;
	exports.MAX_INTERPOLATION_VALUES = core_1.__core_private__.MAX_INTERPOLATION_VALUES;
	exports.checkBinding = core_1.__core_private__.checkBinding;
	exports.flattenNestedViewRenderNodes = core_1.__core_private__.flattenNestedViewRenderNodes;
	exports.interpolate = core_1.__core_private__.interpolate;
	exports.ViewUtils = core_1.__core_private__.ViewUtils;
	exports.VIEW_ENCAPSULATION_VALUES = core_1.__core_private__.VIEW_ENCAPSULATION_VALUES;
	exports.DebugContext = core_1.__core_private__.DebugContext;
	exports.StaticNodeDebugInfo = core_1.__core_private__.StaticNodeDebugInfo;
	exports.devModeEqual = core_1.__core_private__.devModeEqual;
	exports.uninitialized = core_1.__core_private__.uninitialized;
	exports.ValueUnwrapper = core_1.__core_private__.ValueUnwrapper;
	exports.TemplateRef_ = core_1.__core_private__.TemplateRef_;
	exports.RenderDebugInfo = core_1.__core_private__.RenderDebugInfo;
	exports.SecurityContext = core_1.__core_private__.SecurityContext;
	exports.SanitizationService = core_1.__core_private__.SanitizationService;
	exports.createProvider = core_1.__core_private__.createProvider;
	exports.isProviderLiteral = core_1.__core_private__.isProviderLiteral;
	exports.EMPTY_ARRAY = core_1.__core_private__.EMPTY_ARRAY;
	exports.EMPTY_MAP = core_1.__core_private__.EMPTY_MAP;
	exports.pureProxy1 = core_1.__core_private__.pureProxy1;
	exports.pureProxy2 = core_1.__core_private__.pureProxy2;
	exports.pureProxy3 = core_1.__core_private__.pureProxy3;
	exports.pureProxy4 = core_1.__core_private__.pureProxy4;
	exports.pureProxy5 = core_1.__core_private__.pureProxy5;
	exports.pureProxy6 = core_1.__core_private__.pureProxy6;
	exports.pureProxy7 = core_1.__core_private__.pureProxy7;
	exports.pureProxy8 = core_1.__core_private__.pureProxy8;
	exports.pureProxy9 = core_1.__core_private__.pureProxy9;
	exports.pureProxy10 = core_1.__core_private__.pureProxy10;
	exports.castByValue = core_1.__core_private__.castByValue;
	exports.Console = core_1.__core_private__.Console;
	//# sourceMappingURL=core_private.js.map

/***/ },
/* 14 */,
/* 15 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var lang_1 = __webpack_require__(12);
	var _DOM = null;
	function getDOM() {
	    return _DOM;
	}
	exports.getDOM = getDOM;
	function setDOM(adapter) {
	    _DOM = adapter;
	}
	exports.setDOM = setDOM;
	function setRootDomAdapter(adapter) {
	    if (lang_1.isBlank(_DOM)) {
	        _DOM = adapter;
	    }
	}
	exports.setRootDomAdapter = setRootDomAdapter;
	/* tslint:disable:requireParameterType */
	/**
	 * Provides DOM operations in an environment-agnostic way.
	 */
	var DomAdapter = (function () {
	    function DomAdapter() {
	        this.xhrType = null;
	    }
	    /** @deprecated */
	    DomAdapter.prototype.getXHR = function () { return this.xhrType; };
	    Object.defineProperty(DomAdapter.prototype, "attrToPropMap", {
	        /**
	         * Maps attribute names to their corresponding property names for cases
	         * where attribute name doesn't match property name.
	         */
	        get: function () { return this._attrToPropMap; },
	        set: function (value) { this._attrToPropMap = value; },
	        enumerable: true,
	        configurable: true
	    });
	    ;
	    ;
	    return DomAdapter;
	}());
	exports.DomAdapter = DomAdapter;
	//# sourceMappingURL=dom_adapter.js.map

/***/ },
/* 16 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var core_1 = __webpack_require__(1);
	var core_private_1 = __webpack_require__(13);
	var lang_1 = __webpack_require__(3);
	var exceptions_1 = __webpack_require__(8);
	var collection_1 = __webpack_require__(7);
	var selector_1 = __webpack_require__(93);
	var util_1 = __webpack_require__(25);
	var url_resolver_1 = __webpack_require__(30);
	// group 1: "property" from "[property]"
	// group 2: "event" from "(event)"
	var HOST_REG_EXP = /^(?:(?:\[([^\]]+)\])|(?:\(([^\)]+)\)))$/g;
	var CompileMetadataWithIdentifier = (function () {
	    function CompileMetadataWithIdentifier() {
	    }
	    Object.defineProperty(CompileMetadataWithIdentifier.prototype, "identifier", {
	        get: function () { return exceptions_1.unimplemented(); },
	        enumerable: true,
	        configurable: true
	    });
	    return CompileMetadataWithIdentifier;
	}());
	exports.CompileMetadataWithIdentifier = CompileMetadataWithIdentifier;
	var CompileMetadataWithType = (function (_super) {
	    __extends(CompileMetadataWithType, _super);
	    function CompileMetadataWithType() {
	        _super.apply(this, arguments);
	    }
	    Object.defineProperty(CompileMetadataWithType.prototype, "type", {
	        get: function () { return exceptions_1.unimplemented(); },
	        enumerable: true,
	        configurable: true
	    });
	    Object.defineProperty(CompileMetadataWithType.prototype, "identifier", {
	        get: function () { return exceptions_1.unimplemented(); },
	        enumerable: true,
	        configurable: true
	    });
	    return CompileMetadataWithType;
	}(CompileMetadataWithIdentifier));
	exports.CompileMetadataWithType = CompileMetadataWithType;
	function metadataFromJson(data) {
	    return _COMPILE_METADATA_FROM_JSON[data['class']](data);
	}
	exports.metadataFromJson = metadataFromJson;
	var CompileIdentifierMetadata = (function () {
	    function CompileIdentifierMetadata(_a) {
	        var _b = _a === void 0 ? {} : _a, runtime = _b.runtime, name = _b.name, moduleUrl = _b.moduleUrl, prefix = _b.prefix, value = _b.value;
	        this.runtime = runtime;
	        this.name = name;
	        this.prefix = prefix;
	        this.moduleUrl = moduleUrl;
	        this.value = value;
	    }
	    CompileIdentifierMetadata.fromJson = function (data) {
	        var value = lang_1.isArray(data['value']) ? _arrayFromJson(data['value'], metadataFromJson) :
	            _objFromJson(data['value'], metadataFromJson);
	        return new CompileIdentifierMetadata({ name: data['name'], prefix: data['prefix'], moduleUrl: data['moduleUrl'], value: value });
	    };
	    CompileIdentifierMetadata.prototype.toJson = function () {
	        var value = lang_1.isArray(this.value) ? _arrayToJson(this.value) : _objToJson(this.value);
	        return {
	            // Note: Runtime type can't be serialized...
	            'class': 'Identifier',
	            'name': this.name,
	            'moduleUrl': this.moduleUrl,
	            'prefix': this.prefix,
	            'value': value
	        };
	    };
	    Object.defineProperty(CompileIdentifierMetadata.prototype, "identifier", {
	        get: function () { return this; },
	        enumerable: true,
	        configurable: true
	    });
	    return CompileIdentifierMetadata;
	}());
	exports.CompileIdentifierMetadata = CompileIdentifierMetadata;
	var CompileDiDependencyMetadata = (function () {
	    function CompileDiDependencyMetadata(_a) {
	        var _b = _a === void 0 ? {} : _a, isAttribute = _b.isAttribute, isSelf = _b.isSelf, isHost = _b.isHost, isSkipSelf = _b.isSkipSelf, isOptional = _b.isOptional, isValue = _b.isValue, query = _b.query, viewQuery = _b.viewQuery, token = _b.token, value = _b.value;
	        this.isAttribute = lang_1.normalizeBool(isAttribute);
	        this.isSelf = lang_1.normalizeBool(isSelf);
	        this.isHost = lang_1.normalizeBool(isHost);
	        this.isSkipSelf = lang_1.normalizeBool(isSkipSelf);
	        this.isOptional = lang_1.normalizeBool(isOptional);
	        this.isValue = lang_1.normalizeBool(isValue);
	        this.query = query;
	        this.viewQuery = viewQuery;
	        this.token = token;
	        this.value = value;
	    }
	    CompileDiDependencyMetadata.fromJson = function (data) {
	        return new CompileDiDependencyMetadata({
	            token: _objFromJson(data['token'], CompileTokenMetadata.fromJson),
	            query: _objFromJson(data['query'], CompileQueryMetadata.fromJson),
	            viewQuery: _objFromJson(data['viewQuery'], CompileQueryMetadata.fromJson),
	            value: data['value'],
	            isAttribute: data['isAttribute'],
	            isSelf: data['isSelf'],
	            isHost: data['isHost'],
	            isSkipSelf: data['isSkipSelf'],
	            isOptional: data['isOptional'],
	            isValue: data['isValue']
	        });
	    };
	    CompileDiDependencyMetadata.prototype.toJson = function () {
	        return {
	            'token': _objToJson(this.token),
	            'query': _objToJson(this.query),
	            'viewQuery': _objToJson(this.viewQuery),
	            'value': this.value,
	            'isAttribute': this.isAttribute,
	            'isSelf': this.isSelf,
	            'isHost': this.isHost,
	            'isSkipSelf': this.isSkipSelf,
	            'isOptional': this.isOptional,
	            'isValue': this.isValue
	        };
	    };
	    return CompileDiDependencyMetadata;
	}());
	exports.CompileDiDependencyMetadata = CompileDiDependencyMetadata;
	var CompileProviderMetadata = (function () {
	    function CompileProviderMetadata(_a) {
	        var token = _a.token, useClass = _a.useClass, useValue = _a.useValue, useExisting = _a.useExisting, useFactory = _a.useFactory, deps = _a.deps, multi = _a.multi;
	        this.token = token;
	        this.useClass = useClass;
	        this.useValue = useValue;
	        this.useExisting = useExisting;
	        this.useFactory = useFactory;
	        this.deps = lang_1.normalizeBlank(deps);
	        this.multi = lang_1.normalizeBool(multi);
	    }
	    CompileProviderMetadata.fromJson = function (data) {
	        return new CompileProviderMetadata({
	            token: _objFromJson(data['token'], CompileTokenMetadata.fromJson),
	            useClass: _objFromJson(data['useClass'], CompileTypeMetadata.fromJson),
	            useExisting: _objFromJson(data['useExisting'], CompileTokenMetadata.fromJson),
	            useValue: _objFromJson(data['useValue'], CompileIdentifierMetadata.fromJson),
	            useFactory: _objFromJson(data['useFactory'], CompileFactoryMetadata.fromJson),
	            multi: data['multi'],
	            deps: _arrayFromJson(data['deps'], CompileDiDependencyMetadata.fromJson)
	        });
	    };
	    CompileProviderMetadata.prototype.toJson = function () {
	        return {
	            // Note: Runtime type can't be serialized...
	            'class': 'Provider',
	            'token': _objToJson(this.token),
	            'useClass': _objToJson(this.useClass),
	            'useExisting': _objToJson(this.useExisting),
	            'useValue': _objToJson(this.useValue),
	            'useFactory': _objToJson(this.useFactory),
	            'multi': this.multi,
	            'deps': _arrayToJson(this.deps)
	        };
	    };
	    return CompileProviderMetadata;
	}());
	exports.CompileProviderMetadata = CompileProviderMetadata;
	var CompileFactoryMetadata = (function () {
	    function CompileFactoryMetadata(_a) {
	        var runtime = _a.runtime, name = _a.name, moduleUrl = _a.moduleUrl, prefix = _a.prefix, diDeps = _a.diDeps, value = _a.value;
	        this.runtime = runtime;
	        this.name = name;
	        this.prefix = prefix;
	        this.moduleUrl = moduleUrl;
	        this.diDeps = _normalizeArray(diDeps);
	        this.value = value;
	    }
	    Object.defineProperty(CompileFactoryMetadata.prototype, "identifier", {
	        get: function () { return this; },
	        enumerable: true,
	        configurable: true
	    });
	    CompileFactoryMetadata.fromJson = function (data) {
	        return new CompileFactoryMetadata({
	            name: data['name'],
	            prefix: data['prefix'],
	            moduleUrl: data['moduleUrl'],
	            value: data['value'],
	            diDeps: _arrayFromJson(data['diDeps'], CompileDiDependencyMetadata.fromJson)
	        });
	    };
	    CompileFactoryMetadata.prototype.toJson = function () {
	        return {
	            'class': 'Factory',
	            'name': this.name,
	            'prefix': this.prefix,
	            'moduleUrl': this.moduleUrl,
	            'value': this.value,
	            'diDeps': _arrayToJson(this.diDeps)
	        };
	    };
	    return CompileFactoryMetadata;
	}());
	exports.CompileFactoryMetadata = CompileFactoryMetadata;
	var CompileTokenMetadata = (function () {
	    function CompileTokenMetadata(_a) {
	        var value = _a.value, identifier = _a.identifier, identifierIsInstance = _a.identifierIsInstance;
	        this.value = value;
	        this.identifier = identifier;
	        this.identifierIsInstance = lang_1.normalizeBool(identifierIsInstance);
	    }
	    CompileTokenMetadata.fromJson = function (data) {
	        return new CompileTokenMetadata({
	            value: data['value'],
	            identifier: _objFromJson(data['identifier'], CompileIdentifierMetadata.fromJson),
	            identifierIsInstance: data['identifierIsInstance']
	        });
	    };
	    CompileTokenMetadata.prototype.toJson = function () {
	        return {
	            'value': this.value,
	            'identifier': _objToJson(this.identifier),
	            'identifierIsInstance': this.identifierIsInstance
	        };
	    };
	    Object.defineProperty(CompileTokenMetadata.prototype, "runtimeCacheKey", {
	        get: function () {
	            if (lang_1.isPresent(this.identifier)) {
	                return this.identifier.runtime;
	            }
	            else {
	                return this.value;
	            }
	        },
	        enumerable: true,
	        configurable: true
	    });
	    Object.defineProperty(CompileTokenMetadata.prototype, "assetCacheKey", {
	        get: function () {
	            if (lang_1.isPresent(this.identifier)) {
	                return lang_1.isPresent(this.identifier.moduleUrl) &&
	                    lang_1.isPresent(url_resolver_1.getUrlScheme(this.identifier.moduleUrl)) ?
	                    this.identifier.name + "|" + this.identifier.moduleUrl + "|" + this.identifierIsInstance :
	                    null;
	            }
	            else {
	                return this.value;
	            }
	        },
	        enumerable: true,
	        configurable: true
	    });
	    CompileTokenMetadata.prototype.equalsTo = function (token2) {
	        var rk = this.runtimeCacheKey;
	        var ak = this.assetCacheKey;
	        return (lang_1.isPresent(rk) && rk == token2.runtimeCacheKey) ||
	            (lang_1.isPresent(ak) && ak == token2.assetCacheKey);
	    };
	    Object.defineProperty(CompileTokenMetadata.prototype, "name", {
	        get: function () {
	            return lang_1.isPresent(this.value) ? util_1.sanitizeIdentifier(this.value) : this.identifier.name;
	        },
	        enumerable: true,
	        configurable: true
	    });
	    return CompileTokenMetadata;
	}());
	exports.CompileTokenMetadata = CompileTokenMetadata;
	var CompileTokenMap = (function () {
	    function CompileTokenMap() {
	        this._valueMap = new Map();
	        this._values = [];
	    }
	    CompileTokenMap.prototype.add = function (token, value) {
	        var existing = this.get(token);
	        if (lang_1.isPresent(existing)) {
	            throw new exceptions_1.BaseException("Can only add to a TokenMap! Token: " + token.name);
	        }
	        this._values.push(value);
	        var rk = token.runtimeCacheKey;
	        if (lang_1.isPresent(rk)) {
	            this._valueMap.set(rk, value);
	        }
	        var ak = token.assetCacheKey;
	        if (lang_1.isPresent(ak)) {
	            this._valueMap.set(ak, value);
	        }
	    };
	    CompileTokenMap.prototype.get = function (token) {
	        var rk = token.runtimeCacheKey;
	        var ak = token.assetCacheKey;
	        var result;
	        if (lang_1.isPresent(rk)) {
	            result = this._valueMap.get(rk);
	        }
	        if (lang_1.isBlank(result) && lang_1.isPresent(ak)) {
	            result = this._valueMap.get(ak);
	        }
	        return result;
	    };
	    CompileTokenMap.prototype.values = function () { return this._values; };
	    Object.defineProperty(CompileTokenMap.prototype, "size", {
	        get: function () { return this._values.length; },
	        enumerable: true,
	        configurable: true
	    });
	    return CompileTokenMap;
	}());
	exports.CompileTokenMap = CompileTokenMap;
	/**
	 * Metadata regarding compilation of a type.
	 */
	var CompileTypeMetadata = (function () {
	    function CompileTypeMetadata(_a) {
	        var _b = _a === void 0 ? {} : _a, runtime = _b.runtime, name = _b.name, moduleUrl = _b.moduleUrl, prefix = _b.prefix, isHost = _b.isHost, value = _b.value, diDeps = _b.diDeps;
	        this.runtime = runtime;
	        this.name = name;
	        this.moduleUrl = moduleUrl;
	        this.prefix = prefix;
	        this.isHost = lang_1.normalizeBool(isHost);
	        this.value = value;
	        this.diDeps = _normalizeArray(diDeps);
	    }
	    CompileTypeMetadata.fromJson = function (data) {
	        return new CompileTypeMetadata({
	            name: data['name'],
	            moduleUrl: data['moduleUrl'],
	            prefix: data['prefix'],
	            isHost: data['isHost'],
	            value: data['value'],
	            diDeps: _arrayFromJson(data['diDeps'], CompileDiDependencyMetadata.fromJson)
	        });
	    };
	    Object.defineProperty(CompileTypeMetadata.prototype, "identifier", {
	        get: function () { return this; },
	        enumerable: true,
	        configurable: true
	    });
	    Object.defineProperty(CompileTypeMetadata.prototype, "type", {
	        get: function () { return this; },
	        enumerable: true,
	        configurable: true
	    });
	    CompileTypeMetadata.prototype.toJson = function () {
	        return {
	            // Note: Runtime type can't be serialized...
	            'class': 'Type',
	            'name': this.name,
	            'moduleUrl': this.moduleUrl,
	            'prefix': this.prefix,
	            'isHost': this.isHost,
	            'value': this.value,
	            'diDeps': _arrayToJson(this.diDeps)
	        };
	    };
	    return CompileTypeMetadata;
	}());
	exports.CompileTypeMetadata = CompileTypeMetadata;
	var CompileQueryMetadata = (function () {
	    function CompileQueryMetadata(_a) {
	        var _b = _a === void 0 ? {} : _a, selectors = _b.selectors, descendants = _b.descendants, first = _b.first, propertyName = _b.propertyName, read = _b.read;
	        this.selectors = selectors;
	        this.descendants = lang_1.normalizeBool(descendants);
	        this.first = lang_1.normalizeBool(first);
	        this.propertyName = propertyName;
	        this.read = read;
	    }
	    CompileQueryMetadata.fromJson = function (data) {
	        return new CompileQueryMetadata({
	            selectors: _arrayFromJson(data['selectors'], CompileTokenMetadata.fromJson),
	            descendants: data['descendants'],
	            first: data['first'],
	            propertyName: data['propertyName'],
	            read: _objFromJson(data['read'], CompileTokenMetadata.fromJson)
	        });
	    };
	    CompileQueryMetadata.prototype.toJson = function () {
	        return {
	            'selectors': _arrayToJson(this.selectors),
	            'descendants': this.descendants,
	            'first': this.first,
	            'propertyName': this.propertyName,
	            'read': _objToJson(this.read)
	        };
	    };
	    return CompileQueryMetadata;
	}());
	exports.CompileQueryMetadata = CompileQueryMetadata;
	/**
	 * Metadata regarding compilation of a template.
	 */
	var CompileTemplateMetadata = (function () {
	    function CompileTemplateMetadata(_a) {
	        var _b = _a === void 0 ? {} : _a, encapsulation = _b.encapsulation, template = _b.template, templateUrl = _b.templateUrl, styles = _b.styles, styleUrls = _b.styleUrls, ngContentSelectors = _b.ngContentSelectors;
	        this.encapsulation = lang_1.isPresent(encapsulation) ? encapsulation : core_1.ViewEncapsulation.Emulated;
	        this.template = template;
	        this.templateUrl = templateUrl;
	        this.styles = lang_1.isPresent(styles) ? styles : [];
	        this.styleUrls = lang_1.isPresent(styleUrls) ? styleUrls : [];
	        this.ngContentSelectors = lang_1.isPresent(ngContentSelectors) ? ngContentSelectors : [];
	    }
	    CompileTemplateMetadata.fromJson = function (data) {
	        return new CompileTemplateMetadata({
	            encapsulation: lang_1.isPresent(data['encapsulation']) ?
	                core_private_1.VIEW_ENCAPSULATION_VALUES[data['encapsulation']] :
	                data['encapsulation'],
	            template: data['template'],
	            templateUrl: data['templateUrl'],
	            styles: data['styles'],
	            styleUrls: data['styleUrls'],
	            ngContentSelectors: data['ngContentSelectors']
	        });
	    };
	    CompileTemplateMetadata.prototype.toJson = function () {
	        return {
	            'encapsulation': lang_1.isPresent(this.encapsulation) ? lang_1.serializeEnum(this.encapsulation) : this.encapsulation,
	            'template': this.template,
	            'templateUrl': this.templateUrl,
	            'styles': this.styles,
	            'styleUrls': this.styleUrls,
	            'ngContentSelectors': this.ngContentSelectors
	        };
	    };
	    return CompileTemplateMetadata;
	}());
	exports.CompileTemplateMetadata = CompileTemplateMetadata;
	/**
	 * Metadata regarding compilation of a directive.
	 */
	var CompileDirectiveMetadata = (function () {
	    function CompileDirectiveMetadata(_a) {
	        var _b = _a === void 0 ? {} : _a, type = _b.type, isComponent = _b.isComponent, selector = _b.selector, exportAs = _b.exportAs, changeDetection = _b.changeDetection, inputs = _b.inputs, outputs = _b.outputs, hostListeners = _b.hostListeners, hostProperties = _b.hostProperties, hostAttributes = _b.hostAttributes, lifecycleHooks = _b.lifecycleHooks, providers = _b.providers, viewProviders = _b.viewProviders, queries = _b.queries, viewQueries = _b.viewQueries, template = _b.template;
	        this.type = type;
	        this.isComponent = isComponent;
	        this.selector = selector;
	        this.exportAs = exportAs;
	        this.changeDetection = changeDetection;
	        this.inputs = inputs;
	        this.outputs = outputs;
	        this.hostListeners = hostListeners;
	        this.hostProperties = hostProperties;
	        this.hostAttributes = hostAttributes;
	        this.lifecycleHooks = _normalizeArray(lifecycleHooks);
	        this.providers = _normalizeArray(providers);
	        this.viewProviders = _normalizeArray(viewProviders);
	        this.queries = _normalizeArray(queries);
	        this.viewQueries = _normalizeArray(viewQueries);
	        this.template = template;
	    }
	    CompileDirectiveMetadata.create = function (_a) {
	        var _b = _a === void 0 ? {} : _a, type = _b.type, isComponent = _b.isComponent, selector = _b.selector, exportAs = _b.exportAs, changeDetection = _b.changeDetection, inputs = _b.inputs, outputs = _b.outputs, host = _b.host, lifecycleHooks = _b.lifecycleHooks, providers = _b.providers, viewProviders = _b.viewProviders, queries = _b.queries, viewQueries = _b.viewQueries, template = _b.template;
	        var hostListeners = {};
	        var hostProperties = {};
	        var hostAttributes = {};
	        if (lang_1.isPresent(host)) {
	            collection_1.StringMapWrapper.forEach(host, function (value, key) {
	                var matches = lang_1.RegExpWrapper.firstMatch(HOST_REG_EXP, key);
	                if (lang_1.isBlank(matches)) {
	                    hostAttributes[key] = value;
	                }
	                else if (lang_1.isPresent(matches[1])) {
	                    hostProperties[matches[1]] = value;
	                }
	                else if (lang_1.isPresent(matches[2])) {
	                    hostListeners[matches[2]] = value;
	                }
	            });
	        }
	        var inputsMap = {};
	        if (lang_1.isPresent(inputs)) {
	            inputs.forEach(function (bindConfig) {
	                // canonical syntax: `dirProp: elProp`
	                // if there is no `:`, use dirProp = elProp
	                var parts = util_1.splitAtColon(bindConfig, [bindConfig, bindConfig]);
	                inputsMap[parts[0]] = parts[1];
	            });
	        }
	        var outputsMap = {};
	        if (lang_1.isPresent(outputs)) {
	            outputs.forEach(function (bindConfig) {
	                // canonical syntax: `dirProp: elProp`
	                // if there is no `:`, use dirProp = elProp
	                var parts = util_1.splitAtColon(bindConfig, [bindConfig, bindConfig]);
	                outputsMap[parts[0]] = parts[1];
	            });
	        }
	        return new CompileDirectiveMetadata({
	            type: type,
	            isComponent: lang_1.normalizeBool(isComponent),
	            selector: selector,
	            exportAs: exportAs,
	            changeDetection: changeDetection,
	            inputs: inputsMap,
	            outputs: outputsMap,
	            hostListeners: hostListeners,
	            hostProperties: hostProperties,
	            hostAttributes: hostAttributes,
	            lifecycleHooks: lang_1.isPresent(lifecycleHooks) ? lifecycleHooks : [],
	            providers: providers,
	            viewProviders: viewProviders,
	            queries: queries,
	            viewQueries: viewQueries,
	            template: template
	        });
	    };
	    Object.defineProperty(CompileDirectiveMetadata.prototype, "identifier", {
	        get: function () { return this.type; },
	        enumerable: true,
	        configurable: true
	    });
	    CompileDirectiveMetadata.fromJson = function (data) {
	        return new CompileDirectiveMetadata({
	            isComponent: data['isComponent'],
	            selector: data['selector'],
	            exportAs: data['exportAs'],
	            type: lang_1.isPresent(data['type']) ? CompileTypeMetadata.fromJson(data['type']) : data['type'],
	            changeDetection: lang_1.isPresent(data['changeDetection']) ?
	                core_private_1.CHANGE_DETECTION_STRATEGY_VALUES[data['changeDetection']] :
	                data['changeDetection'],
	            inputs: data['inputs'],
	            outputs: data['outputs'],
	            hostListeners: data['hostListeners'],
	            hostProperties: data['hostProperties'],
	            hostAttributes: data['hostAttributes'],
	            lifecycleHooks: data['lifecycleHooks'].map(function (hookValue) { return core_private_1.LIFECYCLE_HOOKS_VALUES[hookValue]; }),
	            template: lang_1.isPresent(data['template']) ? CompileTemplateMetadata.fromJson(data['template']) :
	                data['template'],
	            providers: _arrayFromJson(data['providers'], metadataFromJson),
	            viewProviders: _arrayFromJson(data['viewProviders'], metadataFromJson),
	            queries: _arrayFromJson(data['queries'], CompileQueryMetadata.fromJson),
	            viewQueries: _arrayFromJson(data['viewQueries'], CompileQueryMetadata.fromJson)
	        });
	    };
	    CompileDirectiveMetadata.prototype.toJson = function () {
	        return {
	            'class': 'Directive',
	            'isComponent': this.isComponent,
	            'selector': this.selector,
	            'exportAs': this.exportAs,
	            'type': lang_1.isPresent(this.type) ? this.type.toJson() : this.type,
	            'changeDetection': lang_1.isPresent(this.changeDetection) ? lang_1.serializeEnum(this.changeDetection) :
	                this.changeDetection,
	            'inputs': this.inputs,
	            'outputs': this.outputs,
	            'hostListeners': this.hostListeners,
	            'hostProperties': this.hostProperties,
	            'hostAttributes': this.hostAttributes,
	            'lifecycleHooks': this.lifecycleHooks.map(function (hook) { return lang_1.serializeEnum(hook); }),
	            'template': lang_1.isPresent(this.template) ? this.template.toJson() : this.template,
	            'providers': _arrayToJson(this.providers),
	            'viewProviders': _arrayToJson(this.viewProviders),
	            'queries': _arrayToJson(this.queries),
	            'viewQueries': _arrayToJson(this.viewQueries)
	        };
	    };
	    return CompileDirectiveMetadata;
	}());
	exports.CompileDirectiveMetadata = CompileDirectiveMetadata;
	/**
	 * Construct {@link CompileDirectiveMetadata} from {@link ComponentTypeMetadata} and a selector.
	 */
	function createHostComponentMeta(componentType, componentSelector) {
	    var template = selector_1.CssSelector.parse(componentSelector)[0].getMatchingElementTemplate();
	    return CompileDirectiveMetadata.create({
	        type: new CompileTypeMetadata({
	            runtime: Object,
	            name: componentType.name + "_Host",
	            moduleUrl: componentType.moduleUrl,
	            isHost: true
	        }),
	        template: new CompileTemplateMetadata({ template: template, templateUrl: '', styles: [], styleUrls: [], ngContentSelectors: [] }),
	        changeDetection: core_1.ChangeDetectionStrategy.Default,
	        inputs: [],
	        outputs: [],
	        host: {},
	        lifecycleHooks: [],
	        isComponent: true,
	        selector: '*',
	        providers: [],
	        viewProviders: [],
	        queries: [],
	        viewQueries: []
	    });
	}
	exports.createHostComponentMeta = createHostComponentMeta;
	var CompilePipeMetadata = (function () {
	    function CompilePipeMetadata(_a) {
	        var _b = _a === void 0 ? {} : _a, type = _b.type, name = _b.name, pure = _b.pure, lifecycleHooks = _b.lifecycleHooks;
	        this.type = type;
	        this.name = name;
	        this.pure = lang_1.normalizeBool(pure);
	        this.lifecycleHooks = _normalizeArray(lifecycleHooks);
	    }
	    Object.defineProperty(CompilePipeMetadata.prototype, "identifier", {
	        get: function () { return this.type; },
	        enumerable: true,
	        configurable: true
	    });
	    CompilePipeMetadata.fromJson = function (data) {
	        return new CompilePipeMetadata({
	            type: lang_1.isPresent(data['type']) ? CompileTypeMetadata.fromJson(data['type']) : data['type'],
	            name: data['name'],
	            pure: data['pure']
	        });
	    };
	    CompilePipeMetadata.prototype.toJson = function () {
	        return {
	            'class': 'Pipe',
	            'type': lang_1.isPresent(this.type) ? this.type.toJson() : null,
	            'name': this.name,
	            'pure': this.pure
	        };
	    };
	    return CompilePipeMetadata;
	}());
	exports.CompilePipeMetadata = CompilePipeMetadata;
	var _COMPILE_METADATA_FROM_JSON = {
	    'Directive': CompileDirectiveMetadata.fromJson,
	    'Pipe': CompilePipeMetadata.fromJson,
	    'Type': CompileTypeMetadata.fromJson,
	    'Provider': CompileProviderMetadata.fromJson,
	    'Identifier': CompileIdentifierMetadata.fromJson,
	    'Factory': CompileFactoryMetadata.fromJson
	};
	function _arrayFromJson(obj, fn) {
	    return lang_1.isBlank(obj) ? null : obj.map(function (o) { return _objFromJson(o, fn); });
	}
	function _arrayToJson(obj) {
	    return lang_1.isBlank(obj) ? null : obj.map(_objToJson);
	}
	function _objFromJson(obj, fn) {
	    if (lang_1.isArray(obj))
	        return _arrayFromJson(obj, fn);
	    if (lang_1.isString(obj) || lang_1.isBlank(obj) || lang_1.isBoolean(obj) || lang_1.isNumber(obj))
	        return obj;
	    return fn(obj);
	}
	function _objToJson(obj) {
	    if (lang_1.isArray(obj))
	        return _arrayToJson(obj);
	    if (lang_1.isString(obj) || lang_1.isBlank(obj) || lang_1.isBoolean(obj) || lang_1.isNumber(obj))
	        return obj;
	    return obj.toJson();
	}
	function _normalizeArray(obj) {
	    return lang_1.isPresent(obj) ? obj : [];
	}
	//# sourceMappingURL=compile_metadata.js.map

/***/ },
/* 17 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var core_1 = __webpack_require__(1);
	var core_private_1 = __webpack_require__(13);
	var core_private_2 = __webpack_require__(13);
	var compile_metadata_1 = __webpack_require__(16);
	var util_1 = __webpack_require__(25);
	var APP_VIEW_MODULE_URL = util_1.assetUrl('core', 'linker/view');
	var VIEW_UTILS_MODULE_URL = util_1.assetUrl('core', 'linker/view_utils');
	var CD_MODULE_URL = util_1.assetUrl('core', 'change_detection/change_detection');
	// Reassign the imports to different variables so we can
	// define static variables with the name of the import.
	// (only needed for Dart).
	var impViewUtils = core_private_2.ViewUtils;
	var impAppView = core_private_2.AppView;
	var impDebugAppView = core_private_2.DebugAppView;
	var impDebugContext = core_private_2.DebugContext;
	var impAppElement = core_private_2.AppElement;
	var impElementRef = core_1.ElementRef;
	var impViewContainerRef = core_1.ViewContainerRef;
	var impChangeDetectorRef = core_1.ChangeDetectorRef;
	var impRenderComponentType = core_1.RenderComponentType;
	var impQueryList = core_1.QueryList;
	var impTemplateRef = core_1.TemplateRef;
	var impTemplateRef_ = core_private_2.TemplateRef_;
	var impValueUnwrapper = core_private_2.ValueUnwrapper;
	var impInjector = core_1.Injector;
	var impViewEncapsulation = core_1.ViewEncapsulation;
	var impViewType = core_private_2.ViewType;
	var impChangeDetectionStrategy = core_1.ChangeDetectionStrategy;
	var impStaticNodeDebugInfo = core_private_2.StaticNodeDebugInfo;
	var impRenderer = core_1.Renderer;
	var impSimpleChange = core_1.SimpleChange;
	var impUninitialized = core_private_2.uninitialized;
	var impChangeDetectorState = core_private_2.ChangeDetectorState;
	var impFlattenNestedViewRenderNodes = core_private_2.flattenNestedViewRenderNodes;
	var impDevModeEqual = core_private_2.devModeEqual;
	var impInterpolate = core_private_2.interpolate;
	var impCheckBinding = core_private_2.checkBinding;
	var impCastByValue = core_private_2.castByValue;
	var impEMPTY_ARRAY = core_private_2.EMPTY_ARRAY;
	var impEMPTY_MAP = core_private_2.EMPTY_MAP;
	var Identifiers = (function () {
	    function Identifiers() {
	    }
	    Identifiers.ViewUtils = new compile_metadata_1.CompileIdentifierMetadata({ name: 'ViewUtils', moduleUrl: util_1.assetUrl('core', 'linker/view_utils'), runtime: impViewUtils });
	    Identifiers.AppView = new compile_metadata_1.CompileIdentifierMetadata({ name: 'AppView', moduleUrl: APP_VIEW_MODULE_URL, runtime: impAppView });
	    Identifiers.DebugAppView = new compile_metadata_1.CompileIdentifierMetadata({ name: 'DebugAppView', moduleUrl: APP_VIEW_MODULE_URL, runtime: impDebugAppView });
	    Identifiers.AppElement = new compile_metadata_1.CompileIdentifierMetadata({ name: 'AppElement', moduleUrl: util_1.assetUrl('core', 'linker/element'), runtime: impAppElement });
	    Identifiers.ElementRef = new compile_metadata_1.CompileIdentifierMetadata({
	        name: 'ElementRef',
	        moduleUrl: util_1.assetUrl('core', 'linker/element_ref'),
	        runtime: impElementRef
	    });
	    Identifiers.ViewContainerRef = new compile_metadata_1.CompileIdentifierMetadata({
	        name: 'ViewContainerRef',
	        moduleUrl: util_1.assetUrl('core', 'linker/view_container_ref'),
	        runtime: impViewContainerRef
	    });
	    Identifiers.ChangeDetectorRef = new compile_metadata_1.CompileIdentifierMetadata({
	        name: 'ChangeDetectorRef',
	        moduleUrl: util_1.assetUrl('core', 'change_detection/change_detector_ref'),
	        runtime: impChangeDetectorRef
	    });
	    Identifiers.RenderComponentType = new compile_metadata_1.CompileIdentifierMetadata({
	        name: 'RenderComponentType',
	        moduleUrl: util_1.assetUrl('core', 'render/api'),
	        runtime: impRenderComponentType
	    });
	    Identifiers.QueryList = new compile_metadata_1.CompileIdentifierMetadata({ name: 'QueryList', moduleUrl: util_1.assetUrl('core', 'linker/query_list'), runtime: impQueryList });
	    Identifiers.TemplateRef = new compile_metadata_1.CompileIdentifierMetadata({
	        name: 'TemplateRef',
	        moduleUrl: util_1.assetUrl('core', 'linker/template_ref'),
	        runtime: impTemplateRef
	    });
	    Identifiers.TemplateRef_ = new compile_metadata_1.CompileIdentifierMetadata({
	        name: 'TemplateRef_',
	        moduleUrl: util_1.assetUrl('core', 'linker/template_ref'),
	        runtime: impTemplateRef_
	    });
	    Identifiers.ValueUnwrapper = new compile_metadata_1.CompileIdentifierMetadata({ name: 'ValueUnwrapper', moduleUrl: CD_MODULE_URL, runtime: impValueUnwrapper });
	    Identifiers.Injector = new compile_metadata_1.CompileIdentifierMetadata({ name: 'Injector', moduleUrl: util_1.assetUrl('core', 'di/injector'), runtime: impInjector });
	    Identifiers.ViewEncapsulation = new compile_metadata_1.CompileIdentifierMetadata({
	        name: 'ViewEncapsulation',
	        moduleUrl: util_1.assetUrl('core', 'metadata/view'),
	        runtime: impViewEncapsulation
	    });
	    Identifiers.ViewType = new compile_metadata_1.CompileIdentifierMetadata({ name: 'ViewType', moduleUrl: util_1.assetUrl('core', 'linker/view_type'), runtime: impViewType });
	    Identifiers.ChangeDetectionStrategy = new compile_metadata_1.CompileIdentifierMetadata({
	        name: 'ChangeDetectionStrategy',
	        moduleUrl: CD_MODULE_URL,
	        runtime: impChangeDetectionStrategy
	    });
	    Identifiers.StaticNodeDebugInfo = new compile_metadata_1.CompileIdentifierMetadata({
	        name: 'StaticNodeDebugInfo',
	        moduleUrl: util_1.assetUrl('core', 'linker/debug_context'),
	        runtime: impStaticNodeDebugInfo
	    });
	    Identifiers.DebugContext = new compile_metadata_1.CompileIdentifierMetadata({
	        name: 'DebugContext',
	        moduleUrl: util_1.assetUrl('core', 'linker/debug_context'),
	        runtime: impDebugContext
	    });
	    Identifiers.Renderer = new compile_metadata_1.CompileIdentifierMetadata({ name: 'Renderer', moduleUrl: util_1.assetUrl('core', 'render/api'), runtime: impRenderer });
	    Identifiers.SimpleChange = new compile_metadata_1.CompileIdentifierMetadata({ name: 'SimpleChange', moduleUrl: CD_MODULE_URL, runtime: impSimpleChange });
	    Identifiers.uninitialized = new compile_metadata_1.CompileIdentifierMetadata({ name: 'uninitialized', moduleUrl: CD_MODULE_URL, runtime: impUninitialized });
	    Identifiers.ChangeDetectorState = new compile_metadata_1.CompileIdentifierMetadata({ name: 'ChangeDetectorState', moduleUrl: CD_MODULE_URL, runtime: impChangeDetectorState });
	    Identifiers.checkBinding = new compile_metadata_1.CompileIdentifierMetadata({ name: 'checkBinding', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: impCheckBinding });
	    Identifiers.flattenNestedViewRenderNodes = new compile_metadata_1.CompileIdentifierMetadata({
	        name: 'flattenNestedViewRenderNodes',
	        moduleUrl: VIEW_UTILS_MODULE_URL,
	        runtime: impFlattenNestedViewRenderNodes
	    });
	    Identifiers.devModeEqual = new compile_metadata_1.CompileIdentifierMetadata({ name: 'devModeEqual', moduleUrl: CD_MODULE_URL, runtime: impDevModeEqual });
	    Identifiers.interpolate = new compile_metadata_1.CompileIdentifierMetadata({ name: 'interpolate', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: impInterpolate });
	    Identifiers.castByValue = new compile_metadata_1.CompileIdentifierMetadata({ name: 'castByValue', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: impCastByValue });
	    Identifiers.EMPTY_ARRAY = new compile_metadata_1.CompileIdentifierMetadata({ name: 'EMPTY_ARRAY', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: impEMPTY_ARRAY });
	    Identifiers.EMPTY_MAP = new compile_metadata_1.CompileIdentifierMetadata({ name: 'EMPTY_MAP', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: impEMPTY_MAP });
	    Identifiers.pureProxies = [
	        null,
	        new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy1', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: core_private_2.pureProxy1 }),
	        new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy2', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: core_private_2.pureProxy2 }),
	        new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy3', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: core_private_2.pureProxy3 }),
	        new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy4', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: core_private_2.pureProxy4 }),
	        new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy5', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: core_private_2.pureProxy5 }),
	        new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy6', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: core_private_2.pureProxy6 }),
	        new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy7', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: core_private_2.pureProxy7 }),
	        new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy8', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: core_private_2.pureProxy8 }),
	        new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy9', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: core_private_2.pureProxy9 }),
	        new compile_metadata_1.CompileIdentifierMetadata({ name: 'pureProxy10', moduleUrl: VIEW_UTILS_MODULE_URL, runtime: core_private_2.pureProxy10 }),
	    ];
	    Identifiers.SecurityContext = new compile_metadata_1.CompileIdentifierMetadata({
	        name: 'SecurityContext',
	        moduleUrl: util_1.assetUrl('core', 'security'),
	        runtime: core_private_1.SecurityContext,
	    });
	    return Identifiers;
	}());
	exports.Identifiers = Identifiers;
	function identifierToken(identifier) {
	    return new compile_metadata_1.CompileTokenMetadata({ identifier: identifier });
	}
	exports.identifierToken = identifierToken;
	//# sourceMappingURL=identifiers.js.map

/***/ },
/* 18 */,
/* 19 */,
/* 20 */,
/* 21 */,
/* 22 */
[460, 12],
/* 23 */,
/* 24 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var lang_1 = __webpack_require__(3);
	/**
	 * A segment of text within the template.
	 */
	var TextAst = (function () {
	    function TextAst(value, ngContentIndex, sourceSpan) {
	        this.value = value;
	        this.ngContentIndex = ngContentIndex;
	        this.sourceSpan = sourceSpan;
	    }
	    TextAst.prototype.visit = function (visitor, context) { return visitor.visitText(this, context); };
	    return TextAst;
	}());
	exports.TextAst = TextAst;
	/**
	 * A bound expression within the text of a template.
	 */
	var BoundTextAst = (function () {
	    function BoundTextAst(value, ngContentIndex, sourceSpan) {
	        this.value = value;
	        this.ngContentIndex = ngContentIndex;
	        this.sourceSpan = sourceSpan;
	    }
	    BoundTextAst.prototype.visit = function (visitor, context) {
	        return visitor.visitBoundText(this, context);
	    };
	    return BoundTextAst;
	}());
	exports.BoundTextAst = BoundTextAst;
	/**
	 * A plain attribute on an element.
	 */
	var AttrAst = (function () {
	    function AttrAst(name, value, sourceSpan) {
	        this.name = name;
	        this.value = value;
	        this.sourceSpan = sourceSpan;
	    }
	    AttrAst.prototype.visit = function (visitor, context) { return visitor.visitAttr(this, context); };
	    return AttrAst;
	}());
	exports.AttrAst = AttrAst;
	/**
	 * A binding for an element property (e.g. `[property]="expression"`).
	 */
	var BoundElementPropertyAst = (function () {
	    function BoundElementPropertyAst(name, type, securityContext, value, unit, sourceSpan) {
	        this.name = name;
	        this.type = type;
	        this.securityContext = securityContext;
	        this.value = value;
	        this.unit = unit;
	        this.sourceSpan = sourceSpan;
	    }
	    BoundElementPropertyAst.prototype.visit = function (visitor, context) {
	        return visitor.visitElementProperty(this, context);
	    };
	    return BoundElementPropertyAst;
	}());
	exports.BoundElementPropertyAst = BoundElementPropertyAst;
	/**
	 * A binding for an element event (e.g. `(event)="handler()"`).
	 */
	var BoundEventAst = (function () {
	    function BoundEventAst(name, target, handler, sourceSpan) {
	        this.name = name;
	        this.target = target;
	        this.handler = handler;
	        this.sourceSpan = sourceSpan;
	    }
	    BoundEventAst.prototype.visit = function (visitor, context) {
	        return visitor.visitEvent(this, context);
	    };
	    Object.defineProperty(BoundEventAst.prototype, "fullName", {
	        get: function () {
	            if (lang_1.isPresent(this.target)) {
	                return this.target + ":" + this.name;
	            }
	            else {
	                return this.name;
	            }
	        },
	        enumerable: true,
	        configurable: true
	    });
	    return BoundEventAst;
	}());
	exports.BoundEventAst = BoundEventAst;
	/**
	 * A reference declaration on an element (e.g. `let someName="expression"`).
	 */
	var ReferenceAst = (function () {
	    function ReferenceAst(name, value, sourceSpan) {
	        this.name = name;
	        this.value = value;
	        this.sourceSpan = sourceSpan;
	    }
	    ReferenceAst.prototype.visit = function (visitor, context) {
	        return visitor.visitReference(this, context);
	    };
	    return ReferenceAst;
	}());
	exports.ReferenceAst = ReferenceAst;
	/**
	 * A variable declaration on a <template> (e.g. `var-someName="someLocalName"`).
	 */
	var VariableAst = (function () {
	    function VariableAst(name, value, sourceSpan) {
	        this.name = name;
	        this.value = value;
	        this.sourceSpan = sourceSpan;
	    }
	    VariableAst.prototype.visit = function (visitor, context) {
	        return visitor.visitVariable(this, context);
	    };
	    return VariableAst;
	}());
	exports.VariableAst = VariableAst;
	/**
	 * An element declaration in a template.
	 */
	var ElementAst = (function () {
	    function ElementAst(name, attrs, inputs, outputs, references, directives, providers, hasViewContainer, children, ngContentIndex, sourceSpan) {
	        this.name = name;
	        this.attrs = attrs;
	        this.inputs = inputs;
	        this.outputs = outputs;
	        this.references = references;
	        this.directives = directives;
	        this.providers = providers;
	        this.hasViewContainer = hasViewContainer;
	        this.children = children;
	        this.ngContentIndex = ngContentIndex;
	        this.sourceSpan = sourceSpan;
	    }
	    ElementAst.prototype.visit = function (visitor, context) {
	        return visitor.visitElement(this, context);
	    };
	    return ElementAst;
	}());
	exports.ElementAst = ElementAst;
	/**
	 * A `<template>` element included in an Angular template.
	 */
	var EmbeddedTemplateAst = (function () {
	    function EmbeddedTemplateAst(attrs, outputs, references, variables, directives, providers, hasViewContainer, children, ngContentIndex, sourceSpan) {
	        this.attrs = attrs;
	        this.outputs = outputs;
	        this.references = references;
	        this.variables = variables;
	        this.directives = directives;
	        this.providers = providers;
	        this.hasViewContainer = hasViewContainer;
	        this.children = children;
	        this.ngContentIndex = ngContentIndex;
	        this.sourceSpan = sourceSpan;
	    }
	    EmbeddedTemplateAst.prototype.visit = function (visitor, context) {
	        return visitor.visitEmbeddedTemplate(this, context);
	    };
	    return EmbeddedTemplateAst;
	}());
	exports.EmbeddedTemplateAst = EmbeddedTemplateAst;
	/**
	 * A directive property with a bound value (e.g. `*ngIf="condition").
	 */
	var BoundDirectivePropertyAst = (function () {
	    function BoundDirectivePropertyAst(directiveName, templateName, value, sourceSpan) {
	        this.directiveName = directiveName;
	        this.templateName = templateName;
	        this.value = value;
	        this.sourceSpan = sourceSpan;
	    }
	    BoundDirectivePropertyAst.prototype.visit = function (visitor, context) {
	        return visitor.visitDirectiveProperty(this, context);
	    };
	    return BoundDirectivePropertyAst;
	}());
	exports.BoundDirectivePropertyAst = BoundDirectivePropertyAst;
	/**
	 * A directive declared on an element.
	 */
	var DirectiveAst = (function () {
	    function DirectiveAst(directive, inputs, hostProperties, hostEvents, sourceSpan) {
	        this.directive = directive;
	        this.inputs = inputs;
	        this.hostProperties = hostProperties;
	        this.hostEvents = hostEvents;
	        this.sourceSpan = sourceSpan;
	    }
	    DirectiveAst.prototype.visit = function (visitor, context) {
	        return visitor.visitDirective(this, context);
	    };
	    return DirectiveAst;
	}());
	exports.DirectiveAst = DirectiveAst;
	/**
	 * A provider declared on an element
	 */
	var ProviderAst = (function () {
	    function ProviderAst(token, multiProvider, eager, providers, providerType, sourceSpan) {
	        this.token = token;
	        this.multiProvider = multiProvider;
	        this.eager = eager;
	        this.providers = providers;
	        this.providerType = providerType;
	        this.sourceSpan = sourceSpan;
	    }
	    ProviderAst.prototype.visit = function (visitor, context) {
	        // No visit method in the visitor for now...
	        return null;
	    };
	    return ProviderAst;
	}());
	exports.ProviderAst = ProviderAst;
	(function (ProviderAstType) {
	    ProviderAstType[ProviderAstType["PublicService"] = 0] = "PublicService";
	    ProviderAstType[ProviderAstType["PrivateService"] = 1] = "PrivateService";
	    ProviderAstType[ProviderAstType["Component"] = 2] = "Component";
	    ProviderAstType[ProviderAstType["Directive"] = 3] = "Directive";
	    ProviderAstType[ProviderAstType["Builtin"] = 4] = "Builtin";
	})(exports.ProviderAstType || (exports.ProviderAstType = {}));
	var ProviderAstType = exports.ProviderAstType;
	/**
	 * Position where content is to be projected (instance of `<ng-content>` in a template).
	 */
	var NgContentAst = (function () {
	    function NgContentAst(index, ngContentIndex, sourceSpan) {
	        this.index = index;
	        this.ngContentIndex = ngContentIndex;
	        this.sourceSpan = sourceSpan;
	    }
	    NgContentAst.prototype.visit = function (visitor, context) {
	        return visitor.visitNgContent(this, context);
	    };
	    return NgContentAst;
	}());
	exports.NgContentAst = NgContentAst;
	/**
	 * Enumeration of types of property bindings.
	 */
	(function (PropertyBindingType) {
	    /**
	     * A normal binding to a property (e.g. `[property]="expression"`).
	     */
	    PropertyBindingType[PropertyBindingType["Property"] = 0] = "Property";
	    /**
	     * A binding to an element attribute (e.g. `[attr.name]="expression"`).
	     */
	    PropertyBindingType[PropertyBindingType["Attribute"] = 1] = "Attribute";
	    /**
	     * A binding to a CSS class (e.g. `[class.name]="condition"`).
	     */
	    PropertyBindingType[PropertyBindingType["Class"] = 2] = "Class";
	    /**
	     * A binding to a style rule (e.g. `[style.rule]="expression"`).
	     */
	    PropertyBindingType[PropertyBindingType["Style"] = 3] = "Style";
	})(exports.PropertyBindingType || (exports.PropertyBindingType = {}));
	var PropertyBindingType = exports.PropertyBindingType;
	/**
	 * Visit every node in a list of {@link TemplateAst}s with the given {@link TemplateAstVisitor}.
	 */
	function templateVisitAll(visitor, asts, context) {
	    if (context === void 0) { context = null; }
	    var result = [];
	    asts.forEach(function (ast) {
	        var astResult = ast.visit(visitor, context);
	        if (lang_1.isPresent(astResult)) {
	            result.push(astResult);
	        }
	    });
	    return result;
	}
	exports.templateVisitAll = templateVisitAll;
	//# sourceMappingURL=template_ast.js.map

/***/ },
/* 25 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var lang_1 = __webpack_require__(3);
	var collection_1 = __webpack_require__(7);
	exports.MODULE_SUFFIX = lang_1.IS_DART ? '.dart' : '';
	var CAMEL_CASE_REGEXP = /([A-Z])/g;
	var DASH_CASE_REGEXP = /-([a-z])/g;
	function camelCaseToDashCase(input) {
	    return lang_1.StringWrapper.replaceAllMapped(input, CAMEL_CASE_REGEXP, function (m) { return '-' + m[1].toLowerCase(); });
	}
	exports.camelCaseToDashCase = camelCaseToDashCase;
	function dashCaseToCamelCase(input) {
	    return lang_1.StringWrapper.replaceAllMapped(input, DASH_CASE_REGEXP, function (m) { return m[1].toUpperCase(); });
	}
	exports.dashCaseToCamelCase = dashCaseToCamelCase;
	function splitAtColon(input, defaultValues) {
	    var parts = lang_1.StringWrapper.split(input.trim(), /\s*:\s*/g);
	    if (parts.length > 1) {
	        return parts;
	    }
	    else {
	        return defaultValues;
	    }
	}
	exports.splitAtColon = splitAtColon;
	function sanitizeIdentifier(name) {
	    return lang_1.StringWrapper.replaceAll(name, /\W/g, '_');
	}
	exports.sanitizeIdentifier = sanitizeIdentifier;
	function visitValue(value, visitor, context) {
	    if (lang_1.isArray(value)) {
	        return visitor.visitArray(value, context);
	    }
	    else if (lang_1.isStrictStringMap(value)) {
	        return visitor.visitStringMap(value, context);
	    }
	    else if (lang_1.isBlank(value) || lang_1.isPrimitive(value)) {
	        return visitor.visitPrimitive(value, context);
	    }
	    else {
	        return visitor.visitOther(value, context);
	    }
	}
	exports.visitValue = visitValue;
	var ValueTransformer = (function () {
	    function ValueTransformer() {
	    }
	    ValueTransformer.prototype.visitArray = function (arr, context) {
	        var _this = this;
	        return arr.map(function (value) { return visitValue(value, _this, context); });
	    };
	    ValueTransformer.prototype.visitStringMap = function (map, context) {
	        var _this = this;
	        var result = {};
	        collection_1.StringMapWrapper.forEach(map, function (value, key) { result[key] = visitValue(value, _this, context); });
	        return result;
	    };
	    ValueTransformer.prototype.visitPrimitive = function (value, context) { return value; };
	    ValueTransformer.prototype.visitOther = function (value, context) { return value; };
	    return ValueTransformer;
	}());
	exports.ValueTransformer = ValueTransformer;
	function assetUrl(pkg, path, type) {
	    if (path === void 0) { path = null; }
	    if (type === void 0) { type = 'src'; }
	    if (lang_1.IS_DART) {
	        if (path == null) {
	            return "asset:angular2/" + pkg + "/" + pkg + ".dart";
	        }
	        else {
	            return "asset:angular2/lib/" + pkg + "/src/" + path + ".dart";
	        }
	    }
	    else {
	        if (path == null) {
	            return "asset:@angular/lib/" + pkg + "/index";
	        }
	        else {
	            return "asset:@angular/lib/" + pkg + "/src/" + path;
	        }
	    }
	}
	exports.assetUrl = assetUrl;
	//# sourceMappingURL=util.js.map

/***/ },
/* 26 */,
/* 27 */,
/* 28 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var file_like_object_class_1 = __webpack_require__(45);
	var file_item_class_1 = __webpack_require__(138);
	var file_type_class_1 = __webpack_require__(139);
	function isFile(value) {
	    return (File && value instanceof File);
	}
	var FileUploader = (function () {
	    function FileUploader(options) {
	        this.isUploading = false;
	        this.queue = [];
	        this.progress = 0;
	        this._nextIndex = 0;
	        this.options = {
	            autoUpload: false,
	            isHTML5: true,
	            filters: [],
	            removeAfterUpload: false
	        };
	        this.setOptions(options);
	    }
	    FileUploader.prototype.setOptions = function (options) {
	        this.options = Object.assign(this.options, options);
	        this.authToken = options.authToken;
	        this.autoUpload = options.autoUpload;
	        this.options.filters.unshift({ name: 'queueLimit', fn: this._queueLimitFilter });
	        if (this.options.maxFileSize) {
	            this.options.filters.unshift({ name: 'fileSize', fn: this._fileSizeFilter });
	        }
	        if (this.options.allowedFileType) {
	            this.options.filters.unshift({ name: 'fileType', fn: this._fileTypeFilter });
	        }
	        if (this.options.allowedMimeType) {
	            this.options.filters.unshift({ name: 'mimeType', fn: this._mimeTypeFilter });
	        }
	    };
	    FileUploader.prototype.addToQueue = function (files, options, filters) {
	        var _this = this;
	        var list = [];
	        for (var _i = 0, files_1 = files; _i < files_1.length; _i++) {
	            var file = files_1[_i];
	            list.push(file);
	        }
	        var arrayOfFilters = this._getFilters(filters);
	        var count = this.queue.length;
	        var addedFileItems = [];
	        list.map(function (some) {
	            if (!options) {
	                options = _this.options;
	            }
	            var temp = new file_like_object_class_1.FileLikeObject(some);
	            if (_this._isValidFile(temp, arrayOfFilters, options)) {
	                var fileItem = new file_item_class_1.FileItem(_this, some, options);
	                addedFileItems.push(fileItem);
	                _this.queue.push(fileItem);
	                _this._onAfterAddingFile(fileItem);
	            }
	            else {
	                var filter = arrayOfFilters[_this._failFilterIndex];
	                _this._onWhenAddingFileFailed(temp, filter, options);
	            }
	        });
	        if (this.queue.length !== count) {
	            this._onAfterAddingAll(addedFileItems);
	            this.progress = this._getTotalProgress();
	        }
	        this._render();
	        if (this.options.autoUpload) {
	            this.uploadAll();
	        }
	    };
	    FileUploader.prototype.removeFromQueue = function (value) {
	        var index = this.getIndexOfItem(value);
	        var item = this.queue[index];
	        if (item.isUploading) {
	            item.cancel();
	        }
	        this.queue.splice(index, 1);
	        this.progress = this._getTotalProgress();
	    };
	    FileUploader.prototype.clearQueue = function () {
	        while (this.queue.length) {
	            this.queue[0].remove();
	        }
	        this.progress = 0;
	    };
	    FileUploader.prototype.uploadItem = function (value) {
	        var index = this.getIndexOfItem(value);
	        var item = this.queue[index];
	        var transport = this.options.isHTML5 ? '_xhrTransport' : '_iframeTransport';
	        item._prepareToUploading();
	        if (this.isUploading) {
	            return;
	        }
	        this.isUploading = true;
	        this[transport](item);
	    };
	    FileUploader.prototype.cancelItem = function (value) {
	        var index = this.getIndexOfItem(value);
	        var item = this.queue[index];
	        var prop = this.options.isHTML5 ? '_xhr' : '_form';
	        if (item && item.isUploading) {
	            item[prop].abort();
	        }
	    };
	    FileUploader.prototype.uploadAll = function () {
	        var items = this.getNotUploadedItems().filter(function (item) { return !item.isUploading; });
	        if (!items.length) {
	            return;
	        }
	        items.map(function (item) { return item._prepareToUploading(); });
	        items[0].upload();
	    };
	    FileUploader.prototype.cancelAll = function () {
	        var items = this.getNotUploadedItems();
	        items.map(function (item) { return item.cancel(); });
	    };
	    FileUploader.prototype.isFile = function (value) {
	        return isFile(value);
	    };
	    FileUploader.prototype.isFileLikeObject = function (value) {
	        return value instanceof file_like_object_class_1.FileLikeObject;
	    };
	    FileUploader.prototype.getIndexOfItem = function (value) {
	        return typeof value === 'number' ? value : this.queue.indexOf(value);
	    };
	    FileUploader.prototype.getNotUploadedItems = function () {
	        return this.queue.filter(function (item) { return !item.isUploaded; });
	    };
	    FileUploader.prototype.getReadyItems = function () {
	        return this.queue
	            .filter(function (item) { return (item.isReady && !item.isUploading); })
	            .sort(function (item1, item2) { return item1.index - item2.index; });
	    };
	    FileUploader.prototype.destroy = function () {
	        return void 0;
	    };
	    FileUploader.prototype.onAfterAddingAll = function (fileItems) {
	        return { fileItems: fileItems };
	    };
	    FileUploader.prototype.onBuildItemForm = function (fileItem, form) {
	        return { fileItem: fileItem, form: form };
	    };
	    FileUploader.prototype.onAfterAddingFile = function (fileItem) {
	        return { fileItem: fileItem };
	    };
	    FileUploader.prototype.onWhenAddingFileFailed = function (item, filter, options) {
	        return { item: item, filter: filter, options: options };
	    };
	    FileUploader.prototype.onBeforeUploadItem = function (fileItem) {
	        return { fileItem: fileItem };
	    };
	    FileUploader.prototype.onProgressItem = function (fileItem, progress) {
	        return { fileItem: fileItem, progress: progress };
	    };
	    FileUploader.prototype.onProgressAll = function (progress) {
	        return { progress: progress };
	    };
	    FileUploader.prototype.onSuccessItem = function (item, response, status, headers) {
	        return { item: item, response: response, status: status, headers: headers };
	    };
	    FileUploader.prototype.onErrorItem = function (item, response, status, headers) {
	        return { item: item, response: response, status: status, headers: headers };
	    };
	    FileUploader.prototype.onCancelItem = function (item, response, status, headers) {
	        return { item: item, response: response, status: status, headers: headers };
	    };
	    FileUploader.prototype.onCompleteItem = function (item, response, status, headers) {
	        return { item: item, response: response, status: status, headers: headers };
	    };
	    FileUploader.prototype.onCompleteAll = function () {
	        return void 0;
	    };
	    FileUploader.prototype._mimeTypeFilter = function (item) {
	        return !(this.options.allowedMimeType && this.options.allowedMimeType.indexOf(item.type) === -1);
	    };
	    FileUploader.prototype._fileSizeFilter = function (item) {
	        return !(this.options.maxFileSize && item.size > this.options.maxFileSize);
	    };
	    FileUploader.prototype._fileTypeFilter = function (item) {
	        return !(this.options.allowedFileType &&
	            this.options.allowedFileType.indexOf(file_type_class_1.FileType.getMimeClass(item)) === -1);
	    };
	    FileUploader.prototype._onErrorItem = function (item, response, status, headers) {
	        item._onError(response, status, headers);
	        this.onErrorItem(item, response, status, headers);
	    };
	    FileUploader.prototype._onCompleteItem = function (item, response, status, headers) {
	        item._onComplete(response, status, headers);
	        this.onCompleteItem(item, response, status, headers);
	        var nextItem = this.getReadyItems()[0];
	        this.isUploading = false;
	        if (nextItem) {
	            nextItem.upload();
	            return;
	        }
	        this.onCompleteAll();
	        this.progress = this._getTotalProgress();
	        this._render();
	    };
	    FileUploader.prototype._headersGetter = function (parsedHeaders) {
	        return function (name) {
	            if (name) {
	                return parsedHeaders[name.toLowerCase()] || void 0;
	            }
	            return parsedHeaders;
	        };
	    };
	    FileUploader.prototype._xhrTransport = function (item) {
	        var _this = this;
	        var xhr = item._xhr = new XMLHttpRequest();
	        var form = new FormData();
	        this._onBeforeUploadItem(item);
	        if (typeof item._file.size !== 'number') {
	            throw new TypeError('The file specified is no longer valid');
	        }
	        this._onBuildItemForm(item, form);
	        form.append(item.alias, item._file, item.file.name);
	        xhr.upload.onprogress = function (event) {
	            var progress = Math.round(event.lengthComputable ? event.loaded * 100 / event.total : 0);
	            _this._onProgressItem(item, progress);
	        };
	        xhr.onload = function () {
	            var headers = _this._parseHeaders(xhr.getAllResponseHeaders());
	            var response = _this._transformResponse(xhr.response, headers);
	            var gist = _this._isSuccessCode(xhr.status) ? 'Success' : 'Error';
	            var method = '_on' + gist + 'Item';
	            _this[method](item, response, xhr.status, headers);
	            _this._onCompleteItem(item, response, xhr.status, headers);
	        };
	        xhr.onerror = function () {
	            var headers = _this._parseHeaders(xhr.getAllResponseHeaders());
	            var response = _this._transformResponse(xhr.response, headers);
	            _this._onErrorItem(item, response, xhr.status, headers);
	            _this._onCompleteItem(item, response, xhr.status, headers);
	        };
	        xhr.onabort = function () {
	            var headers = _this._parseHeaders(xhr.getAllResponseHeaders());
	            var response = _this._transformResponse(xhr.response, headers);
	            _this._onCancelItem(item, response, xhr.status, headers);
	            _this._onCompleteItem(item, response, xhr.status, headers);
	        };
	        xhr.open(item.method, item.url, true);
	        xhr.withCredentials = item.withCredentials;
	        if (this.options.headers) {
	            for (var _i = 0, _a = this.options.headers; _i < _a.length; _i++) {
	                var header = _a[_i];
	                xhr.setRequestHeader(header.name, header.value);
	            }
	        }
	        if (this.authToken) {
	            xhr.setRequestHeader('Authorization', this.authToken);
	        }
	        xhr.send(form);
	        this._render();
	    };
	    FileUploader.prototype._getTotalProgress = function (value) {
	        if (value === void 0) { value = 0; }
	        if (this.options.removeAfterUpload) {
	            return value;
	        }
	        var notUploaded = this.getNotUploadedItems().length;
	        var uploaded = notUploaded ? this.queue.length - notUploaded : this.queue.length;
	        var ratio = 100 / this.queue.length;
	        var current = value * ratio / 100;
	        return Math.round(uploaded * ratio + current);
	    };
	    FileUploader.prototype._getFilters = function (filters) {
	        if (!filters) {
	            return this.options.filters;
	        }
	        if (Array.isArray(filters)) {
	            return filters;
	        }
	        if (typeof filters === 'string') {
	            var names_1 = filters.match(/[^\s,]+/g);
	            return this.options.filters
	                .filter(function (filter) { return names_1.indexOf(filter.name) !== -1; });
	        }
	        return this.options.filters;
	    };
	    FileUploader.prototype._render = function () {
	        return void 0;
	    };
	    FileUploader.prototype._queueLimitFilter = function () {
	        return this.options.queueLimit === undefined || this.queue.length < this.options.queueLimit;
	    };
	    FileUploader.prototype._isValidFile = function (file, filters, options) {
	        var _this = this;
	        this._failFilterIndex = -1;
	        return !filters.length ? true : filters.every(function (filter) {
	            _this._failFilterIndex++;
	            return filter.fn.call(_this, file, options);
	        });
	    };
	    FileUploader.prototype._isSuccessCode = function (status) {
	        return (status >= 200 && status < 300) || status === 304;
	    };
	    FileUploader.prototype._transformResponse = function (response, headers) {
	        return response;
	    };
	    FileUploader.prototype._parseHeaders = function (headers) {
	        var parsed = {};
	        var key;
	        var val;
	        var i;
	        if (!headers) {
	            return parsed;
	        }
	        headers.split('\n').map(function (line) {
	            i = line.indexOf(':');
	            key = line.slice(0, i).trim().toLowerCase();
	            val = line.slice(i + 1).trim();
	            if (key) {
	                parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;
	            }
	        });
	        return parsed;
	    };
	    FileUploader.prototype._onWhenAddingFileFailed = function (item, filter, options) {
	        this.onWhenAddingFileFailed(item, filter, options);
	    };
	    FileUploader.prototype._onAfterAddingFile = function (item) {
	        this.onAfterAddingFile(item);
	    };
	    FileUploader.prototype._onAfterAddingAll = function (items) {
	        this.onAfterAddingAll(items);
	    };
	    FileUploader.prototype._onBeforeUploadItem = function (item) {
	        item._onBeforeUpload();
	        this.onBeforeUploadItem(item);
	    };
	    FileUploader.prototype._onBuildItemForm = function (item, form) {
	        item._onBuildForm(form);
	        this.onBuildItemForm(item, form);
	    };
	    FileUploader.prototype._onProgressItem = function (item, progress) {
	        var total = this._getTotalProgress(progress);
	        this.progress = total;
	        item._onProgress(progress);
	        this.onProgressItem(item, progress);
	        this.onProgressAll(total);
	        this._render();
	    };
	    FileUploader.prototype._onSuccessItem = function (item, response, status, headers) {
	        item._onSuccess(response, status, headers);
	        this.onSuccessItem(item, response, status, headers);
	    };
	    FileUploader.prototype._onCancelItem = function (item, response, status, headers) {
	        item._onCancel(response, status, headers);
	        this.onCancelItem(item, response, status, headers);
	    };
	    return FileUploader;
	}());
	exports.FileUploader = FileUploader;


/***/ },
/* 29 */,
/* 30 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var core_1 = __webpack_require__(1);
	var lang_1 = __webpack_require__(3);
	var _ASSET_SCHEME = 'asset:';
	/**
	 * Create a {@link UrlResolver} with no package prefix.
	 */
	function createUrlResolverWithoutPackagePrefix() {
	    return new UrlResolver();
	}
	exports.createUrlResolverWithoutPackagePrefix = createUrlResolverWithoutPackagePrefix;
	function createOfflineCompileUrlResolver() {
	    return new UrlResolver(_ASSET_SCHEME);
	}
	exports.createOfflineCompileUrlResolver = createOfflineCompileUrlResolver;
	/**
	 * A default provider for {@link PACKAGE_ROOT_URL} that maps to '/'.
	 */
	exports.DEFAULT_PACKAGE_URL_PROVIDER = {
	    provide: core_1.PACKAGE_ROOT_URL,
	    useValue: "/"
	};
	var UrlResolver = (function () {
	    function UrlResolver(_packagePrefix) {
	        if (_packagePrefix === void 0) { _packagePrefix = null; }
	        this._packagePrefix = _packagePrefix;
	    }
	    /**
	     * Resolves the `url` given the `baseUrl`:
	     * - when the `url` is null, the `baseUrl` is returned,
	     * - if `url` is relative ('path/to/here', './path/to/here'), the resolved url is a combination of
	     * `baseUrl` and `url`,
	     * - if `url` is absolute (it has a scheme: 'http://', 'https://' or start with '/'), the `url` is
	     * returned as is (ignoring the `baseUrl`)
	     *
	     * @param {string} baseUrl
	     * @param {string} url
	     * @returns {string} the resolved URL
	     */
	    UrlResolver.prototype.resolve = function (baseUrl, url) {
	        var resolvedUrl = url;
	        if (lang_1.isPresent(baseUrl) && baseUrl.length > 0) {
	            resolvedUrl = _resolveUrl(baseUrl, resolvedUrl);
	        }
	        var resolvedParts = _split(resolvedUrl);
	        var prefix = this._packagePrefix;
	        if (lang_1.isPresent(prefix) && lang_1.isPresent(resolvedParts) &&
	            resolvedParts[_ComponentIndex.Scheme] == "package") {
	            var path = resolvedParts[_ComponentIndex.Path];
	            if (this._packagePrefix === _ASSET_SCHEME) {
	                var pathSegements = path.split(/\//);
	                resolvedUrl = "asset:" + pathSegements[0] + "/lib/" + pathSegements.slice(1).join('/');
	            }
	            else {
	                prefix = lang_1.StringWrapper.stripRight(prefix, '/');
	                path = lang_1.StringWrapper.stripLeft(path, '/');
	                return prefix + "/" + path;
	            }
	        }
	        return resolvedUrl;
	    };
	    UrlResolver.decorators = [
	        { type: core_1.Injectable },
	    ];
	    UrlResolver.ctorParameters = [
	        { type: undefined, decorators: [{ type: core_1.Inject, args: [core_1.PACKAGE_ROOT_URL,] },] },
	    ];
	    return UrlResolver;
	}());
	exports.UrlResolver = UrlResolver;
	/**
	 * Extract the scheme of a URL.
	 */
	function getUrlScheme(url) {
	    var match = _split(url);
	    return (match && match[_ComponentIndex.Scheme]) || "";
	}
	exports.getUrlScheme = getUrlScheme;
	// The code below is adapted from Traceur:
	// https://github.com/google/traceur-compiler/blob/9511c1dafa972bf0de1202a8a863bad02f0f95a8/src/runtime/url.js
	/**
	 * Builds a URI string from already-encoded parts.
	 *
	 * No encoding is performed.  Any component may be omitted as either null or
	 * undefined.
	 *
	 * @param {?string=} opt_scheme The scheme such as 'http'.
	 * @param {?string=} opt_userInfo The user name before the '@'.
	 * @param {?string=} opt_domain The domain such as 'www.google.com', already
	 *     URI-encoded.
	 * @param {(string|null)=} opt_port The port number.
	 * @param {?string=} opt_path The path, already URI-encoded.  If it is not
	 *     empty, it must begin with a slash.
	 * @param {?string=} opt_queryData The URI-encoded query data.
	 * @param {?string=} opt_fragment The URI-encoded fragment identifier.
	 * @return {string} The fully combined URI.
	 */
	function _buildFromEncodedParts(opt_scheme, opt_userInfo, opt_domain, opt_port, opt_path, opt_queryData, opt_fragment) {
	    var out = [];
	    if (lang_1.isPresent(opt_scheme)) {
	        out.push(opt_scheme + ':');
	    }
	    if (lang_1.isPresent(opt_domain)) {
	        out.push('//');
	        if (lang_1.isPresent(opt_userInfo)) {
	            out.push(opt_userInfo + '@');
	        }
	        out.push(opt_domain);
	        if (lang_1.isPresent(opt_port)) {
	            out.push(':' + opt_port);
	        }
	    }
	    if (lang_1.isPresent(opt_path)) {
	        out.push(opt_path);
	    }
	    if (lang_1.isPresent(opt_queryData)) {
	        out.push('?' + opt_queryData);
	    }
	    if (lang_1.isPresent(opt_fragment)) {
	        out.push('#' + opt_fragment);
	    }
	    return out.join('');
	}
	/**
	 * A regular expression for breaking a URI into its component parts.
	 *
	 * {@link http://www.gbiv.com/protocols/uri/rfc/rfc3986.html#RFC2234} says
	 * As the "first-match-wins" algorithm is identical to the "greedy"
	 * disambiguation method used by POSIX regular expressions, it is natural and
	 * commonplace to use a regular expression for parsing the potential five
	 * components of a URI reference.
	 *
	 * The following line is the regular expression for breaking-down a
	 * well-formed URI reference into its components.
	 *
	 * <pre>
	 * ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
	 *  12            3  4          5       6  7        8 9
	 * </pre>
	 *
	 * The numbers in the second line above are only to assist readability; they
	 * indicate the reference points for each subexpression (i.e., each paired
	 * parenthesis). We refer to the value matched for subexpression <n> as $<n>.
	 * For example, matching the above expression to
	 * <pre>
	 *     http://www.ics.uci.edu/pub/ietf/uri/#Related
	 * </pre>
	 * results in the following subexpression matches:
	 * <pre>
	 *    $1 = http:
	 *    $2 = http
	 *    $3 = //www.ics.uci.edu
	 *    $4 = www.ics.uci.edu
	 *    $5 = /pub/ietf/uri/
	 *    $6 = <undefined>
	 *    $7 = <undefined>
	 *    $8 = #Related
	 *    $9 = Related
	 * </pre>
	 * where <undefined> indicates that the component is not present, as is the
	 * case for the query component in the above example. Therefore, we can
	 * determine the value of the five components as
	 * <pre>
	 *    scheme    = $2
	 *    authority = $4
	 *    path      = $5
	 *    query     = $7
	 *    fragment  = $9
	 * </pre>
	 *
	 * The regular expression has been modified slightly to expose the
	 * userInfo, domain, and port separately from the authority.
	 * The modified version yields
	 * <pre>
	 *    $1 = http              scheme
	 *    $2 = <undefined>       userInfo -\
	 *    $3 = www.ics.uci.edu   domain     | authority
	 *    $4 = <undefined>       port     -/
	 *    $5 = /pub/ietf/uri/    path
	 *    $6 = <undefined>       query without ?
	 *    $7 = Related           fragment without #
	 * </pre>
	 * @type {!RegExp}
	 * @internal
	 */
	var _splitRe = lang_1.RegExpWrapper.create('^' +
	    '(?:' +
	    '([^:/?#.]+)' +
	    // used by other URL parts such as :,
	    // ?, /, #, and .
	    ':)?' +
	    '(?://' +
	    '(?:([^/?#]*)@)?' +
	    '([\\w\\d\\-\\u0100-\\uffff.%]*)' +
	    // digits, dashes, dots, percent
	    // escapes, and unicode characters.
	    '(?::([0-9]+))?' +
	    ')?' +
	    '([^?#]+)?' +
	    '(?:\\?([^#]*))?' +
	    '(?:#(.*))?' +
	    '$');
	/**
	 * The index of each URI component in the return value of goog.uri.utils.split.
	 * @enum {number}
	 */
	var _ComponentIndex;
	(function (_ComponentIndex) {
	    _ComponentIndex[_ComponentIndex["Scheme"] = 1] = "Scheme";
	    _ComponentIndex[_ComponentIndex["UserInfo"] = 2] = "UserInfo";
	    _ComponentIndex[_ComponentIndex["Domain"] = 3] = "Domain";
	    _ComponentIndex[_ComponentIndex["Port"] = 4] = "Port";
	    _ComponentIndex[_ComponentIndex["Path"] = 5] = "Path";
	    _ComponentIndex[_ComponentIndex["QueryData"] = 6] = "QueryData";
	    _ComponentIndex[_ComponentIndex["Fragment"] = 7] = "Fragment";
	})(_ComponentIndex || (_ComponentIndex = {}));
	/**
	 * Splits a URI into its component parts.
	 *
	 * Each component can be accessed via the component indices; for example:
	 * <pre>
	 * goog.uri.utils.split(someStr)[goog.uri.utils.CompontentIndex.QUERY_DATA];
	 * </pre>
	 *
	 * @param {string} uri The URI string to examine.
	 * @return {!Array.<string|undefined>} Each component still URI-encoded.
	 *     Each component that is present will contain the encoded value, whereas
	 *     components that are not present will be undefined or empty, depending
	 *     on the browser's regular expression implementation.  Never null, since
	 *     arbitrary strings may still look like path names.
	 */
	function _split(uri) {
	    return lang_1.RegExpWrapper.firstMatch(_splitRe, uri);
	}
	/**
	  * Removes dot segments in given path component, as described in
	  * RFC 3986, section 5.2.4.
	  *
	  * @param {string} path A non-empty path component.
	  * @return {string} Path component with removed dot segments.
	  */
	function _removeDotSegments(path) {
	    if (path == '/')
	        return '/';
	    var leadingSlash = path[0] == '/' ? '/' : '';
	    var trailingSlash = path[path.length - 1] === '/' ? '/' : '';
	    var segments = path.split('/');
	    var out = [];
	    var up = 0;
	    for (var pos = 0; pos < segments.length; pos++) {
	        var segment = segments[pos];
	        switch (segment) {
	            case '':
	            case '.':
	                break;
	            case '..':
	                if (out.length > 0) {
	                    out.pop();
	                }
	                else {
	                    up++;
	                }
	                break;
	            default:
	                out.push(segment);
	        }
	    }
	    if (leadingSlash == '') {
	        while (up-- > 0) {
	            out.unshift('..');
	        }
	        if (out.length === 0)
	            out.push('.');
	    }
	    return leadingSlash + out.join('/') + trailingSlash;
	}
	/**
	 * Takes an array of the parts from split and canonicalizes the path part
	 * and then joins all the parts.
	 * @param {Array.<string?>} parts
	 * @return {string}
	 */
	function _joinAndCanonicalizePath(parts) {
	    var path = parts[_ComponentIndex.Path];
	    path = lang_1.isBlank(path) ? '' : _removeDotSegments(path);
	    parts[_ComponentIndex.Path] = path;
	    return _buildFromEncodedParts(parts[_ComponentIndex.Scheme], parts[_ComponentIndex.UserInfo], parts[_ComponentIndex.Domain], parts[_ComponentIndex.Port], path, parts[_ComponentIndex.QueryData], parts[_ComponentIndex.Fragment]);
	}
	/**
	 * Resolves a URL.
	 * @param {string} base The URL acting as the base URL.
	 * @param {string} to The URL to resolve.
	 * @return {string}
	 */
	function _resolveUrl(base, url) {
	    var parts = _split(encodeURI(url));
	    var baseParts = _split(base);
	    if (lang_1.isPresent(parts[_ComponentIndex.Scheme])) {
	        return _joinAndCanonicalizePath(parts);
	    }
	    else {
	        parts[_ComponentIndex.Scheme] = baseParts[_ComponentIndex.Scheme];
	    }
	    for (var i = _ComponentIndex.Scheme; i <= _ComponentIndex.Port; i++) {
	        if (lang_1.isBlank(parts[i])) {
	            parts[i] = baseParts[i];
	        }
	    }
	    if (parts[_ComponentIndex.Path][0] == '/') {
	        return _joinAndCanonicalizePath(parts);
	    }
	    var path = baseParts[_ComponentIndex.Path];
	    if (lang_1.isBlank(path))
	        path = '/';
	    var index = path.lastIndexOf('/');
	    path = path.substring(0, index + 1) + parts[_ComponentIndex.Path];
	    parts[_ComponentIndex.Path] = path;
	    return _joinAndCanonicalizePath(parts);
	}
	//# sourceMappingURL=url_resolver.js.map

/***/ },
/* 31 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var core_1 = __webpack_require__(1);
	var core_private_1 = __webpack_require__(13);
	var lang_1 = __webpack_require__(3);
	var compile_metadata_1 = __webpack_require__(16);
	var o = __webpack_require__(10);
	var identifiers_1 = __webpack_require__(17);
	function _enumExpression(classIdentifier, value) {
	    if (lang_1.isBlank(value))
	        return o.NULL_EXPR;
	    var name = lang_1.resolveEnumToken(classIdentifier.runtime, value);
	    return o.importExpr(new compile_metadata_1.CompileIdentifierMetadata({
	        name: classIdentifier.name + "." + name,
	        moduleUrl: classIdentifier.moduleUrl,
	        runtime: value
	    }));
	}
	var ViewTypeEnum = (function () {
	    function ViewTypeEnum() {
	    }
	    ViewTypeEnum.fromValue = function (value) {
	        return _enumExpression(identifiers_1.Identifiers.ViewType, value);
	    };
	    ViewTypeEnum.HOST = ViewTypeEnum.fromValue(core_private_1.ViewType.HOST);
	    ViewTypeEnum.COMPONENT = ViewTypeEnum.fromValue(core_private_1.ViewType.COMPONENT);
	    ViewTypeEnum.EMBEDDED = ViewTypeEnum.fromValue(core_private_1.ViewType.EMBEDDED);
	    return ViewTypeEnum;
	}());
	exports.ViewTypeEnum = ViewTypeEnum;
	var ViewEncapsulationEnum = (function () {
	    function ViewEncapsulationEnum() {
	    }
	    ViewEncapsulationEnum.fromValue = function (value) {
	        return _enumExpression(identifiers_1.Identifiers.ViewEncapsulation, value);
	    };
	    ViewEncapsulationEnum.Emulated = ViewEncapsulationEnum.fromValue(core_1.ViewEncapsulation.Emulated);
	    ViewEncapsulationEnum.Native = ViewEncapsulationEnum.fromValue(core_1.ViewEncapsulation.Native);
	    ViewEncapsulationEnum.None = ViewEncapsulationEnum.fromValue(core_1.ViewEncapsulation.None);
	    return ViewEncapsulationEnum;
	}());
	exports.ViewEncapsulationEnum = ViewEncapsulationEnum;
	var ChangeDetectorStateEnum = (function () {
	    function ChangeDetectorStateEnum() {
	    }
	    ChangeDetectorStateEnum.fromValue = function (value) {
	        return _enumExpression(identifiers_1.Identifiers.ChangeDetectorState, value);
	    };
	    ChangeDetectorStateEnum.NeverChecked = ChangeDetectorStateEnum.fromValue(core_private_1.ChangeDetectorState.NeverChecked);
	    ChangeDetectorStateEnum.CheckedBefore = ChangeDetectorStateEnum.fromValue(core_private_1.ChangeDetectorState.CheckedBefore);
	    ChangeDetectorStateEnum.Errored = ChangeDetectorStateEnum.fromValue(core_private_1.ChangeDetectorState.Errored);
	    return ChangeDetectorStateEnum;
	}());
	exports.ChangeDetectorStateEnum = ChangeDetectorStateEnum;
	var ChangeDetectionStrategyEnum = (function () {
	    function ChangeDetectionStrategyEnum() {
	    }
	    ChangeDetectionStrategyEnum.fromValue = function (value) {
	        return _enumExpression(identifiers_1.Identifiers.ChangeDetectionStrategy, value);
	    };
	    ChangeDetectionStrategyEnum.CheckOnce = ChangeDetectionStrategyEnum.fromValue(core_1.ChangeDetectionStrategy.CheckOnce);
	    ChangeDetectionStrategyEnum.Checked = ChangeDetectionStrategyEnum.fromValue(core_1.ChangeDetectionStrategy.Checked);
	    ChangeDetectionStrategyEnum.CheckAlways = ChangeDetectionStrategyEnum.fromValue(core_1.ChangeDetectionStrategy.CheckAlways);
	    ChangeDetectionStrategyEnum.Detached = ChangeDetectionStrategyEnum.fromValue(core_1.ChangeDetectionStrategy.Detached);
	    ChangeDetectionStrategyEnum.OnPush = ChangeDetectionStrategyEnum.fromValue(core_1.ChangeDetectionStrategy.OnPush);
	    ChangeDetectionStrategyEnum.Default = ChangeDetectionStrategyEnum.fromValue(core_1.ChangeDetectionStrategy.Default);
	    return ChangeDetectionStrategyEnum;
	}());
	exports.ChangeDetectionStrategyEnum = ChangeDetectionStrategyEnum;
	var ViewConstructorVars = (function () {
	    function ViewConstructorVars() {
	    }
	    ViewConstructorVars.viewUtils = o.variable('viewUtils');
	    ViewConstructorVars.parentInjector = o.variable('parentInjector');
	    ViewConstructorVars.declarationEl = o.variable('declarationEl');
	    return ViewConstructorVars;
	}());
	exports.ViewConstructorVars = ViewConstructorVars;
	var ViewProperties = (function () {
	    function ViewProperties() {
	    }
	    ViewProperties.renderer = o.THIS_EXPR.prop('renderer');
	    ViewProperties.projectableNodes = o.THIS_EXPR.prop('projectableNodes');
	    ViewProperties.viewUtils = o.THIS_EXPR.prop('viewUtils');
	    return ViewProperties;
	}());
	exports.ViewProperties = ViewProperties;
	var EventHandlerVars = (function () {
	    function EventHandlerVars() {
	    }
	    EventHandlerVars.event = o.variable('$event');
	    return EventHandlerVars;
	}());
	exports.EventHandlerVars = EventHandlerVars;
	var InjectMethodVars = (function () {
	    function InjectMethodVars() {
	    }
	    InjectMethodVars.token = o.variable('token');
	    InjectMethodVars.requestNodeIndex = o.variable('requestNodeIndex');
	    InjectMethodVars.notFoundResult = o.variable('notFoundResult');
	    return InjectMethodVars;
	}());
	exports.InjectMethodVars = InjectMethodVars;
	var DetectChangesVars = (function () {
	    function DetectChangesVars() {
	    }
	    DetectChangesVars.throwOnChange = o.variable("throwOnChange");
	    DetectChangesVars.changes = o.variable("changes");
	    DetectChangesVars.changed = o.variable("changed");
	    DetectChangesVars.valUnwrapper = o.variable("valUnwrapper");
	    return DetectChangesVars;
	}());
	exports.DetectChangesVars = DetectChangesVars;
	//# sourceMappingURL=constants.js.map

/***/ },
/* 32 */,
/* 33 */,
/* 34 */,
/* 35 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var core_1 = __webpack_require__(1);
	var exceptions_1 = __webpack_require__(121);
	var collection_1 = __webpack_require__(22);
	exports.EVENT_MANAGER_PLUGINS = 
	/*@ts2dart_const*/ new core_1.OpaqueToken("EventManagerPlugins");
	var EventManager = (function () {
	    function EventManager(plugins, _zone) {
	        var _this = this;
	        this._zone = _zone;
	        plugins.forEach(function (p) { return p.manager = _this; });
	        this._plugins = collection_1.ListWrapper.reversed(plugins);
	    }
	    EventManager.prototype.addEventListener = function (element, eventName, handler) {
	        var plugin = this._findPluginFor(eventName);
	        return plugin.addEventListener(element, eventName, handler);
	    };
	    EventManager.prototype.addGlobalEventListener = function (target, eventName, handler) {
	        var plugin = this._findPluginFor(eventName);
	        return plugin.addGlobalEventListener(target, eventName, handler);
	    };
	    EventManager.prototype.getZone = function () { return this._zone; };
	    /** @internal */
	    EventManager.prototype._findPluginFor = function (eventName) {
	        var plugins = this._plugins;
	        for (var i = 0; i < plugins.length; i++) {
	            var plugin = plugins[i];
	            if (plugin.supports(eventName)) {
	                return plugin;
	            }
	        }
	        throw new exceptions_1.BaseException("No event manager plugin found for event " + eventName);
	    };
	    EventManager.decorators = [
	        { type: core_1.Injectable },
	    ];
	    EventManager.ctorParameters = [
	        { type: undefined, decorators: [{ type: core_1.Inject, args: [exports.EVENT_MANAGER_PLUGINS,] },] },
	        { type: core_1.NgZone, },
	    ];
	    return EventManager;
	}());
	exports.EventManager = EventManager;
	var EventManagerPlugin = (function () {
	    function EventManagerPlugin() {
	    }
	    // That is equivalent to having supporting $event.target
	    EventManagerPlugin.prototype.supports = function (eventName) { return false; };
	    EventManagerPlugin.prototype.addEventListener = function (element, eventName, handler) {
	        throw "not implemented";
	    };
	    EventManagerPlugin.prototype.addGlobalEventListener = function (element, eventName, handler) {
	        throw "not implemented";
	    };
	    return EventManagerPlugin;
	}());
	exports.EventManagerPlugin = EventManagerPlugin;
	//# sourceMappingURL=event_manager.js.map

/***/ },
/* 36 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var lang_1 = __webpack_require__(4);
	(function (Ng2BootstrapTheme) {
	    Ng2BootstrapTheme[Ng2BootstrapTheme["BS3"] = 1] = "BS3";
	    Ng2BootstrapTheme[Ng2BootstrapTheme["BS4"] = 2] = "BS4";
	})(exports.Ng2BootstrapTheme || (exports.Ng2BootstrapTheme = {}));
	var Ng2BootstrapTheme = exports.Ng2BootstrapTheme;
	var Ng2BootstrapConfig = (function () {
	    function Ng2BootstrapConfig() {
	    }
	    Object.defineProperty(Ng2BootstrapConfig, "theme", {
	        get: function () {
	            // hack as for now
	            if (lang_1.global && lang_1.global.__theme === 'bs4') {
	                return Ng2BootstrapTheme.BS4;
	            }
	            return (this._theme || Ng2BootstrapTheme.BS3);
	        },
	        set: function (v) {
	            this._theme = v;
	        },
	        enumerable: true,
	        configurable: true
	    });
	    return Ng2BootstrapConfig;
	}());
	exports.Ng2BootstrapConfig = Ng2BootstrapConfig;


/***/ },
/* 37 */,
/* 38 */,
/* 39 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var lang_1 = __webpack_require__(3);
	var exceptions_1 = __webpack_require__(8);
	var o = __webpack_require__(10);
	var identifiers_1 = __webpack_require__(17);
	function getPropertyInView(property, callingView, definedView) {
	    if (callingView === definedView) {
	        return property;
	    }
	    else {
	        var viewProp = o.THIS_EXPR;
	        var currView = callingView;
	        while (currView !== definedView && lang_1.isPresent(currView.declarationElement.view)) {
	            currView = currView.declarationElement.view;
	            viewProp = viewProp.prop('parent');
	        }
	        if (currView !== definedView) {
	            throw new exceptions_1.BaseException("Internal error: Could not calculate a property in a parent view: " + property);
	        }
	        if (property instanceof o.ReadPropExpr) {
	            var readPropExpr_1 = property;
	            // Note: Don't cast for members of the AppView base class...
	            if (definedView.fields.some(function (field) { return field.name == readPropExpr_1.name; }) ||
	                definedView.getters.some(function (field) { return field.name == readPropExpr_1.name; })) {
	                viewProp = viewProp.cast(definedView.classType);
	            }
	        }
	        return o.replaceVarInExpression(o.THIS_EXPR.name, viewProp, property);
	    }
	}
	exports.getPropertyInView = getPropertyInView;
	function injectFromViewParentInjector(token, optional) {
	    var args = [createDiTokenExpression(token)];
	    if (optional) {
	        args.push(o.NULL_EXPR);
	    }
	    return o.THIS_EXPR.prop('parentInjector').callMethod('get', args);
	}
	exports.injectFromViewParentInjector = injectFromViewParentInjector;
	function getViewFactoryName(component, embeddedTemplateIndex) {
	    return "viewFactory_" + component.type.name + embeddedTemplateIndex;
	}
	exports.getViewFactoryName = getViewFactoryName;
	function createDiTokenExpression(token) {
	    if (lang_1.isPresent(token.value)) {
	        return o.literal(token.value);
	    }
	    else if (token.identifierIsInstance) {
	        return o.importExpr(token.identifier)
	            .instantiate([], o.importType(token.identifier, [], [o.TypeModifier.Const]));
	    }
	    else {
	        return o.importExpr(token.identifier);
	    }
	}
	exports.createDiTokenExpression = createDiTokenExpression;
	function createFlatArray(expressions) {
	    var lastNonArrayExpressions = [];
	    var result = o.literalArr([]);
	    for (var i = 0; i < expressions.length; i++) {
	        var expr = expressions[i];
	        if (expr.type instanceof o.ArrayType) {
	            if (lastNonArrayExpressions.length > 0) {
	                result =
	                    result.callMethod(o.BuiltinMethod.ConcatArray, [o.literalArr(lastNonArrayExpressions)]);
	                lastNonArrayExpressions = [];
	            }
	            result = result.callMethod(o.BuiltinMethod.ConcatArray, [expr]);
	        }
	        else {
	            lastNonArrayExpressions.push(expr);
	        }
	    }
	    if (lastNonArrayExpressions.length > 0) {
	        result =
	            result.callMethod(o.BuiltinMethod.ConcatArray, [o.literalArr(lastNonArrayExpressions)]);
	    }
	    return result;
	}
	exports.createFlatArray = createFlatArray;
	function createPureProxy(fn, argCount, pureProxyProp, view) {
	    view.fields.push(new o.ClassField(pureProxyProp.name, null));
	    var pureProxyId = argCount < identifiers_1.Identifiers.pureProxies.length ? identifiers_1.Identifiers.pureProxies[argCount] : null;
	    if (lang_1.isBlank(pureProxyId)) {
	        throw new exceptions_1.BaseException("Unsupported number of argument for pure functions: " + argCount);
	    }
	    view.createMethod.addStmt(o.THIS_EXPR.prop(pureProxyProp.name).set(o.importExpr(pureProxyId).callFn([fn])).toStmt());
	}
	exports.createPureProxy = createPureProxy;
	//# sourceMappingURL=util.js.map

/***/ },
/* 40 */,
/* 41 */
4,
/* 42 */,
/* 43 */,
/* 44 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var file_uploader_class_1 = __webpack_require__(28);
	var FileDropDirective = (function () {
	    function FileDropDirective(element) {
	        this.fileOver = new core_1.EventEmitter();
	        this.onFileDrop = new core_1.EventEmitter();
	        this.element = element;
	    }
	    FileDropDirective.prototype.getOptions = function () {
	        return this.uploader.options;
	    };
	    FileDropDirective.prototype.getFilters = function () {
	        return {};
	    };
	    FileDropDirective.prototype.onDrop = function (event) {
	        var transfer = this._getTransfer(event);
	        if (!transfer) {
	            return;
	        }
	        var options = this.getOptions();
	        var filters = this.getFilters();
	        this._preventAndStop(event);
	        this.uploader.addToQueue(transfer.files, options, filters);
	        this.fileOver.emit(false);
	        this.onFileDrop.emit(transfer.files);
	    };
	    FileDropDirective.prototype.onDragOver = function (event) {
	        var transfer = this._getTransfer(event);
	        if (!this._haveFiles(transfer.types)) {
	            return;
	        }
	        transfer.dropEffect = 'copy';
	        this._preventAndStop(event);
	        this.fileOver.emit(true);
	    };
	    FileDropDirective.prototype.onDragLeave = function (event) {
	        if (event.currentTarget === this.element[0]) {
	            return;
	        }
	        this._preventAndStop(event);
	        this.fileOver.emit(false);
	    };
	    FileDropDirective.prototype._getTransfer = function (event) {
	        return event.dataTransfer ? event.dataTransfer : event.originalEvent.dataTransfer;
	    };
	    FileDropDirective.prototype._preventAndStop = function (event) {
	        event.preventDefault();
	        event.stopPropagation();
	    };
	    FileDropDirective.prototype._haveFiles = function (types) {
	        if (!types) {
	            return false;
	        }
	        if (types.indexOf) {
	            return types.indexOf('Files') !== -1;
	        }
	        else if (types.contains) {
	            return types.contains('Files');
	        }
	        else {
	            return false;
	        }
	    };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', file_uploader_class_1.FileUploader)
	    ], FileDropDirective.prototype, "uploader", void 0);
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', core_1.EventEmitter)
	    ], FileDropDirective.prototype, "fileOver", void 0);
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', core_1.EventEmitter)
	    ], FileDropDirective.prototype, "onFileDrop", void 0);
	    __decorate([
	        core_1.HostListener('drop', ['$event']), 
	        __metadata('design:type', Function), 
	        __metadata('design:paramtypes', [Object]), 
	        __metadata('design:returntype', void 0)
	    ], FileDropDirective.prototype, "onDrop", null);
	    __decorate([
	        core_1.HostListener('dragover', ['$event']), 
	        __metadata('design:type', Function), 
	        __metadata('design:paramtypes', [Object]), 
	        __metadata('design:returntype', void 0)
	    ], FileDropDirective.prototype, "onDragOver", null);
	    __decorate([
	        core_1.HostListener('dragleave', ['$event']), 
	        __metadata('design:type', Function), 
	        __metadata('design:paramtypes', [Object]), 
	        __metadata('design:returntype', Object)
	    ], FileDropDirective.prototype, "onDragLeave", null);
	    FileDropDirective = __decorate([
	        core_1.Directive({ selector: '[ng2FileDrop]' }), 
	        __metadata('design:paramtypes', [core_1.ElementRef])
	    ], FileDropDirective);
	    return FileDropDirective;
	}());
	exports.FileDropDirective = FileDropDirective;


/***/ },
/* 45 */
/***/ function(module, exports) {

	"use strict";
	function isElement(node) {
	    return !!(node && (node.nodeName || node.prop && node.attr && node.find));
	}
	var FileLikeObject = (function () {
	    function FileLikeObject(fileOrInput) {
	        var isInput = isElement(fileOrInput);
	        var fakePathOrObject = isInput ? fileOrInput.value : fileOrInput;
	        var postfix = typeof fakePathOrObject === 'string' ? 'FakePath' : 'Object';
	        var method = '_createFrom' + postfix;
	        this[method](fakePathOrObject);
	    }
	    FileLikeObject.prototype._createFromFakePath = function (path) {
	        this.lastModifiedDate = void 0;
	        this.size = void 0;
	        this.type = 'like/' + path.slice(path.lastIndexOf('.') + 1).toLowerCase();
	        this.name = path.slice(path.lastIndexOf('/') + path.lastIndexOf('\\') + 2);
	    };
	    FileLikeObject.prototype._createFromObject = function (object) {
	        this.size = object.size;
	        this.type = object.type;
	        this.name = object.name;
	    };
	    return FileLikeObject;
	}());
	exports.FileLikeObject = FileLikeObject;


/***/ },
/* 46 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var file_uploader_class_1 = __webpack_require__(28);
	var FileSelectDirective = (function () {
	    function FileSelectDirective(element) {
	        this.element = element;
	    }
	    FileSelectDirective.prototype.getOptions = function () {
	        return this.uploader.options;
	    };
	    FileSelectDirective.prototype.getFilters = function () {
	        return void 0;
	    };
	    FileSelectDirective.prototype.isEmptyAfterSelection = function () {
	        return !!this.element.nativeElement.attributes.multiple;
	    };
	    FileSelectDirective.prototype.onChange = function () {
	        var files = this.element.nativeElement.files;
	        var options = this.getOptions();
	        var filters = this.getFilters();
	        this.uploader.addToQueue(files, options, filters);
	        if (this.isEmptyAfterSelection()) {
	        }
	    };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', file_uploader_class_1.FileUploader)
	    ], FileSelectDirective.prototype, "uploader", void 0);
	    __decorate([
	        core_1.HostListener('change'), 
	        __metadata('design:type', Function), 
	        __metadata('design:paramtypes', []), 
	        __metadata('design:returntype', Object)
	    ], FileSelectDirective.prototype, "onChange", null);
	    FileSelectDirective = __decorate([
	        core_1.Directive({ selector: '[ng2FileSelect]' }), 
	        __metadata('design:paramtypes', [core_1.ElementRef])
	    ], FileSelectDirective);
	    return FileSelectDirective;
	}());
	exports.FileSelectDirective = FileSelectDirective;


/***/ },
/* 47 */,
/* 48 */,
/* 49 */,
/* 50 */,
/* 51 */,
/* 52 */,
/* 53 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var lang_1 = __webpack_require__(3);
	var exceptions_1 = __webpack_require__(8);
	var identifiers_1 = __webpack_require__(17);
	var CompilerConfig = (function () {
	    function CompilerConfig(genDebugInfo, logBindingUpdate, useJit, renderTypes) {
	        if (renderTypes === void 0) { renderTypes = null; }
	        this.genDebugInfo = genDebugInfo;
	        this.logBindingUpdate = logBindingUpdate;
	        this.useJit = useJit;
	        if (lang_1.isBlank(renderTypes)) {
	            renderTypes = new DefaultRenderTypes();
	        }
	        this.renderTypes = renderTypes;
	    }
	    return CompilerConfig;
	}());
	exports.CompilerConfig = CompilerConfig;
	/**
	 * Types used for the renderer.
	 * Can be replaced to specialize the generated output to a specific renderer
	 * to help tree shaking.
	 */
	var RenderTypes = (function () {
	    function RenderTypes() {
	    }
	    Object.defineProperty(RenderTypes.prototype, "renderer", {
	        get: function () { return exceptions_1.unimplemented(); },
	        enumerable: true,
	        configurable: true
	    });
	    Object.defineProperty(RenderTypes.prototype, "renderText", {
	        get: function () { return exceptions_1.unimplemented(); },
	        enumerable: true,
	        configurable: true
	    });
	    Object.defineProperty(RenderTypes.prototype, "renderElement", {
	        get: function () { return exceptions_1.unimplemented(); },
	        enumerable: true,
	        configurable: true
	    });
	    Object.defineProperty(RenderTypes.prototype, "renderComment", {
	        get: function () { return exceptions_1.unimplemented(); },
	        enumerable: true,
	        configurable: true
	    });
	    Object.defineProperty(RenderTypes.prototype, "renderNode", {
	        get: function () { return exceptions_1.unimplemented(); },
	        enumerable: true,
	        configurable: true
	    });
	    Object.defineProperty(RenderTypes.prototype, "renderEvent", {
	        get: function () { return exceptions_1.unimplemented(); },
	        enumerable: true,
	        configurable: true
	    });
	    return RenderTypes;
	}());
	exports.RenderTypes = RenderTypes;
	var DefaultRenderTypes = (function () {
	    function DefaultRenderTypes() {
	        this.renderer = identifiers_1.Identifiers.Renderer;
	        this.renderText = null;
	        this.renderElement = null;
	        this.renderComment = null;
	        this.renderNode = null;
	        this.renderEvent = null;
	    }
	    return DefaultRenderTypes;
	}());
	exports.DefaultRenderTypes = DefaultRenderTypes;
	//# sourceMappingURL=config.js.map

/***/ },
/* 54 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var lang_1 = __webpack_require__(3);
	// see http://www.w3.org/TR/html51/syntax.html#named-character-references
	// see https://html.spec.whatwg.org/multipage/entities.json
	// This list is not exhaustive to keep the compiler footprint low.
	// The `&#123;` / `&#x1ab;` syntax should be used when the named character reference does not exist.
	exports.NAMED_ENTITIES = {
	    'Aacute': '\u00C1',
	    'aacute': '\u00E1',
	    'Acirc': '\u00C2',
	    'acirc': '\u00E2',
	    'acute': '\u00B4',
	    'AElig': '\u00C6',
	    'aelig': '\u00E6',
	    'Agrave': '\u00C0',
	    'agrave': '\u00E0',
	    'alefsym': '\u2135',
	    'Alpha': '\u0391',
	    'alpha': '\u03B1',
	    'amp': '&',
	    'and': '\u2227',
	    'ang': '\u2220',
	    'apos': '\u0027',
	    'Aring': '\u00C5',
	    'aring': '\u00E5',
	    'asymp': '\u2248',
	    'Atilde': '\u00C3',
	    'atilde': '\u00E3',
	    'Auml': '\u00C4',
	    'auml': '\u00E4',
	    'bdquo': '\u201E',
	    'Beta': '\u0392',
	    'beta': '\u03B2',
	    'brvbar': '\u00A6',
	    'bull': '\u2022',
	    'cap': '\u2229',
	    'Ccedil': '\u00C7',
	    'ccedil': '\u00E7',
	    'cedil': '\u00B8',
	    'cent': '\u00A2',
	    'Chi': '\u03A7',
	    'chi': '\u03C7',
	    'circ': '\u02C6',
	    'clubs': '\u2663',
	    'cong': '\u2245',
	    'copy': '\u00A9',
	    'crarr': '\u21B5',
	    'cup': '\u222A',
	    'curren': '\u00A4',
	    'dagger': '\u2020',
	    'Dagger': '\u2021',
	    'darr': '\u2193',
	    'dArr': '\u21D3',
	    'deg': '\u00B0',
	    'Delta': '\u0394',
	    'delta': '\u03B4',
	    'diams': '\u2666',
	    'divide': '\u00F7',
	    'Eacute': '\u00C9',
	    'eacute': '\u00E9',
	    'Ecirc': '\u00CA',
	    'ecirc': '\u00EA',
	    'Egrave': '\u00C8',
	    'egrave': '\u00E8',
	    'empty': '\u2205',
	    'emsp': '\u2003',
	    'ensp': '\u2002',
	    'Epsilon': '\u0395',
	    'epsilon': '\u03B5',
	    'equiv': '\u2261',
	    'Eta': '\u0397',
	    'eta': '\u03B7',
	    'ETH': '\u00D0',
	    'eth': '\u00F0',
	    'Euml': '\u00CB',
	    'euml': '\u00EB',
	    'euro': '\u20AC',
	    'exist': '\u2203',
	    'fnof': '\u0192',
	    'forall': '\u2200',
	    'frac12': '\u00BD',
	    'frac14': '\u00BC',
	    'frac34': '\u00BE',
	    'frasl': '\u2044',
	    'Gamma': '\u0393',
	    'gamma': '\u03B3',
	    'ge': '\u2265',
	    'gt': '>',
	    'harr': '\u2194',
	    'hArr': '\u21D4',
	    'hearts': '\u2665',
	    'hellip': '\u2026',
	    'Iacute': '\u00CD',
	    'iacute': '\u00ED',
	    'Icirc': '\u00CE',
	    'icirc': '\u00EE',
	    'iexcl': '\u00A1',
	    'Igrave': '\u00CC',
	    'igrave': '\u00EC',
	    'image': '\u2111',
	    'infin': '\u221E',
	    'int': '\u222B',
	    'Iota': '\u0399',
	    'iota': '\u03B9',
	    'iquest': '\u00BF',
	    'isin': '\u2208',
	    'Iuml': '\u00CF',
	    'iuml': '\u00EF',
	    'Kappa': '\u039A',
	    'kappa': '\u03BA',
	    'Lambda': '\u039B',
	    'lambda': '\u03BB',
	    'lang': '\u27E8',
	    'laquo': '\u00AB',
	    'larr': '\u2190',
	    'lArr': '\u21D0',
	    'lceil': '\u2308',
	    'ldquo': '\u201C',
	    'le': '\u2264',
	    'lfloor': '\u230A',
	    'lowast': '\u2217',
	    'loz': '\u25CA',
	    'lrm': '\u200E',
	    'lsaquo': '\u2039',
	    'lsquo': '\u2018',
	    'lt': '<',
	    'macr': '\u00AF',
	    'mdash': '\u2014',
	    'micro': '\u00B5',
	    'middot': '\u00B7',
	    'minus': '\u2212',
	    'Mu': '\u039C',
	    'mu': '\u03BC',
	    'nabla': '\u2207',
	    'nbsp': '\u00A0',
	    'ndash': '\u2013',
	    'ne': '\u2260',
	    'ni': '\u220B',
	    'not': '\u00AC',
	    'notin': '\u2209',
	    'nsub': '\u2284',
	    'Ntilde': '\u00D1',
	    'ntilde': '\u00F1',
	    'Nu': '\u039D',
	    'nu': '\u03BD',
	    'Oacute': '\u00D3',
	    'oacute': '\u00F3',
	    'Ocirc': '\u00D4',
	    'ocirc': '\u00F4',
	    'OElig': '\u0152',
	    'oelig': '\u0153',
	    'Ograve': '\u00D2',
	    'ograve': '\u00F2',
	    'oline': '\u203E',
	    'Omega': '\u03A9',
	    'omega': '\u03C9',
	    'Omicron': '\u039F',
	    'omicron': '\u03BF',
	    'oplus': '\u2295',
	    'or': '\u2228',
	    'ordf': '\u00AA',
	    'ordm': '\u00BA',
	    'Oslash': '\u00D8',
	    'oslash': '\u00F8',
	    'Otilde': '\u00D5',
	    'otilde': '\u00F5',
	    'otimes': '\u2297',
	    'Ouml': '\u00D6',
	    'ouml': '\u00F6',
	    'para': '\u00B6',
	    'permil': '\u2030',
	    'perp': '\u22A5',
	    'Phi': '\u03A6',
	    'phi': '\u03C6',
	    'Pi': '\u03A0',
	    'pi': '\u03C0',
	    'piv': '\u03D6',
	    'plusmn': '\u00B1',
	    'pound': '\u00A3',
	    'prime': '\u2032',
	    'Prime': '\u2033',
	    'prod': '\u220F',
	    'prop': '\u221D',
	    'Psi': '\u03A8',
	    'psi': '\u03C8',
	    'quot': '\u0022',
	    'radic': '\u221A',
	    'rang': '\u27E9',
	    'raquo': '\u00BB',
	    'rarr': '\u2192',
	    'rArr': '\u21D2',
	    'rceil': '\u2309',
	    'rdquo': '\u201D',
	    'real': '\u211C',
	    'reg': '\u00AE',
	    'rfloor': '\u230B',
	    'Rho': '\u03A1',
	    'rho': '\u03C1',
	    'rlm': '\u200F',
	    'rsaquo': '\u203A',
	    'rsquo': '\u2019',
	    'sbquo': '\u201A',
	    'Scaron': '\u0160',
	    'scaron': '\u0161',
	    'sdot': '\u22C5',
	    'sect': '\u00A7',
	    'shy': '\u00AD',
	    'Sigma': '\u03A3',
	    'sigma': '\u03C3',
	    'sigmaf': '\u03C2',
	    'sim': '\u223C',
	    'spades': '\u2660',
	    'sub': '\u2282',
	    'sube': '\u2286',
	    'sum': '\u2211',
	    'sup': '\u2283',
	    'sup1': '\u00B9',
	    'sup2': '\u00B2',
	    'sup3': '\u00B3',
	    'supe': '\u2287',
	    'szlig': '\u00DF',
	    'Tau': '\u03A4',
	    'tau': '\u03C4',
	    'there4': '\u2234',
	    'Theta': '\u0398',
	    'theta': '\u03B8',
	    'thetasym': '\u03D1',
	    'thinsp': '\u2009',
	    'THORN': '\u00DE',
	    'thorn': '\u00FE',
	    'tilde': '\u02DC',
	    'times': '\u00D7',
	    'trade': '\u2122',
	    'Uacute': '\u00DA',
	    'uacute': '\u00FA',
	    'uarr': '\u2191',
	    'uArr': '\u21D1',
	    'Ucirc': '\u00DB',
	    'ucirc': '\u00FB',
	    'Ugrave': '\u00D9',
	    'ugrave': '\u00F9',
	    'uml': '\u00A8',
	    'upsih': '\u03D2',
	    'Upsilon': '\u03A5',
	    'upsilon': '\u03C5',
	    'Uuml': '\u00DC',
	    'uuml': '\u00FC',
	    'weierp': '\u2118',
	    'Xi': '\u039E',
	    'xi': '\u03BE',
	    'Yacute': '\u00DD',
	    'yacute': '\u00FD',
	    'yen': '\u00A5',
	    'yuml': '\u00FF',
	    'Yuml': '\u0178',
	    'Zeta': '\u0396',
	    'zeta': '\u03B6',
	    'zwj': '\u200D',
	    'zwnj': '\u200C',
	};
	(function (HtmlTagContentType) {
	    HtmlTagContentType[HtmlTagContentType["RAW_TEXT"] = 0] = "RAW_TEXT";
	    HtmlTagContentType[HtmlTagContentType["ESCAPABLE_RAW_TEXT"] = 1] = "ESCAPABLE_RAW_TEXT";
	    HtmlTagContentType[HtmlTagContentType["PARSABLE_DATA"] = 2] = "PARSABLE_DATA";
	})(exports.HtmlTagContentType || (exports.HtmlTagContentType = {}));
	var HtmlTagContentType = exports.HtmlTagContentType;
	var HtmlTagDefinition = (function () {
	    function HtmlTagDefinition(_a) {
	        var _this = this;
	        var _b = _a === void 0 ? {} : _a, closedByChildren = _b.closedByChildren, requiredParents = _b.requiredParents, implicitNamespacePrefix = _b.implicitNamespacePrefix, contentType = _b.contentType, closedByParent = _b.closedByParent, isVoid = _b.isVoid, ignoreFirstLf = _b.ignoreFirstLf;
	        this.closedByChildren = {};
	        this.closedByParent = false;
	        if (lang_1.isPresent(closedByChildren) && closedByChildren.length > 0) {
	            closedByChildren.forEach(function (tagName) { return _this.closedByChildren[tagName] = true; });
	        }
	        this.isVoid = lang_1.normalizeBool(isVoid);
	        this.closedByParent = lang_1.normalizeBool(closedByParent) || this.isVoid;
	        if (lang_1.isPresent(requiredParents) && requiredParents.length > 0) {
	            this.requiredParents = {};
	            this.parentToAdd = requiredParents[0];
	            requiredParents.forEach(function (tagName) { return _this.requiredParents[tagName] = true; });
	        }
	        this.implicitNamespacePrefix = implicitNamespacePrefix;
	        this.contentType = lang_1.isPresent(contentType) ? contentType : HtmlTagContentType.PARSABLE_DATA;
	        this.ignoreFirstLf = lang_1.normalizeBool(ignoreFirstLf);
	    }
	    HtmlTagDefinition.prototype.requireExtraParent = function (currentParent) {
	        if (lang_1.isBlank(this.requiredParents)) {
	            return false;
	        }
	        if (lang_1.isBlank(currentParent)) {
	            return true;
	        }
	        var lcParent = currentParent.toLowerCase();
	        return this.requiredParents[lcParent] != true && lcParent != 'template';
	    };
	    HtmlTagDefinition.prototype.isClosedByChild = function (name) {
	        return this.isVoid || lang_1.normalizeBool(this.closedByChildren[name.toLowerCase()]);
	    };
	    return HtmlTagDefinition;
	}());
	exports.HtmlTagDefinition = HtmlTagDefinition;
	// see http://www.w3.org/TR/html51/syntax.html#optional-tags
	// This implementation does not fully conform to the HTML5 spec.
	var TAG_DEFINITIONS = {
	    'base': new HtmlTagDefinition({ isVoid: true }),
	    'meta': new HtmlTagDefinition({ isVoid: true }),
	    'area': new HtmlTagDefinition({ isVoid: true }),
	    'embed': new HtmlTagDefinition({ isVoid: true }),
	    'link': new HtmlTagDefinition({ isVoid: true }),
	    'img': new HtmlTagDefinition({ isVoid: true }),
	    'input': new HtmlTagDefinition({ isVoid: true }),
	    'param': new HtmlTagDefinition({ isVoid: true }),
	    'hr': new HtmlTagDefinition({ isVoid: true }),
	    'br': new HtmlTagDefinition({ isVoid: true }),
	    'source': new HtmlTagDefinition({ isVoid: true }),
	    'track': new HtmlTagDefinition({ isVoid: true }),
	    'wbr': new HtmlTagDefinition({ isVoid: true }),
	    'p': new HtmlTagDefinition({
	        closedByChildren: [
	            'address',
	            'article',
	            'aside',
	            'blockquote',
	            'div',
	            'dl',
	            'fieldset',
	            'footer',
	            'form',
	            'h1',
	            'h2',
	            'h3',
	            'h4',
	            'h5',
	            'h6',
	            'header',
	            'hgroup',
	            'hr',
	            'main',
	            'nav',
	            'ol',
	            'p',
	            'pre',
	            'section',
	            'table',
	            'ul'
	        ],
	        closedByParent: true
	    }),
	    'thead': new HtmlTagDefinition({ closedByChildren: ['tbody', 'tfoot'] }),
	    'tbody': new HtmlTagDefinition({ closedByChildren: ['tbody', 'tfoot'], closedByParent: true }),
	    'tfoot': new HtmlTagDefinition({ closedByChildren: ['tbody'], closedByParent: true }),
	    'tr': new HtmlTagDefinition({
	        closedByChildren: ['tr'],
	        requiredParents: ['tbody', 'tfoot', 'thead'],
	        closedByParent: true
	    }),
	    'td': new HtmlTagDefinition({ closedByChildren: ['td', 'th'], closedByParent: true }),
	    'th': new HtmlTagDefinition({ closedByChildren: ['td', 'th'], closedByParent: true }),
	    'col': new HtmlTagDefinition({ requiredParents: ['colgroup'], isVoid: true }),
	    'svg': new HtmlTagDefinition({ implicitNamespacePrefix: 'svg' }),
	    'math': new HtmlTagDefinition({ implicitNamespacePrefix: 'math' }),
	    'li': new HtmlTagDefinition({ closedByChildren: ['li'], closedByParent: true }),
	    'dt': new HtmlTagDefinition({ closedByChildren: ['dt', 'dd'] }),
	    'dd': new HtmlTagDefinition({ closedByChildren: ['dt', 'dd'], closedByParent: true }),
	    'rb': new HtmlTagDefinition({ closedByChildren: ['rb', 'rt', 'rtc', 'rp'], closedByParent: true }),
	    'rt': new HtmlTagDefinition({ closedByChildren: ['rb', 'rt', 'rtc', 'rp'], closedByParent: true }),
	    'rtc': new HtmlTagDefinition({ closedByChildren: ['rb', 'rtc', 'rp'], closedByParent: true }),
	    'rp': new HtmlTagDefinition({ closedByChildren: ['rb', 'rt', 'rtc', 'rp'], closedByParent: true }),
	    'optgroup': new HtmlTagDefinition({ closedByChildren: ['optgroup'], closedByParent: true }),
	    'option': new HtmlTagDefinition({ closedByChildren: ['option', 'optgroup'], closedByParent: true }),
	    'pre': new HtmlTagDefinition({ ignoreFirstLf: true }),
	    'listing': new HtmlTagDefinition({ ignoreFirstLf: true }),
	    'style': new HtmlTagDefinition({ contentType: HtmlTagContentType.RAW_TEXT }),
	    'script': new HtmlTagDefinition({ contentType: HtmlTagContentType.RAW_TEXT }),
	    'title': new HtmlTagDefinition({ contentType: HtmlTagContentType.ESCAPABLE_RAW_TEXT }),
	    'textarea': new HtmlTagDefinition({ contentType: HtmlTagContentType.ESCAPABLE_RAW_TEXT, ignoreFirstLf: true }),
	};
	var DEFAULT_TAG_DEFINITION = new HtmlTagDefinition();
	function getHtmlTagDefinition(tagName) {
	    var result = TAG_DEFINITIONS[tagName.toLowerCase()];
	    return lang_1.isPresent(result) ? result : DEFAULT_TAG_DEFINITION;
	}
	exports.getHtmlTagDefinition = getHtmlTagDefinition;
	var NS_PREFIX_RE = /^@([^:]+):(.+)/g;
	function splitNsName(elementName) {
	    if (elementName[0] != '@') {
	        return [null, elementName];
	    }
	    var match = lang_1.RegExpWrapper.firstMatch(NS_PREFIX_RE, elementName);
	    return [match[1], match[2]];
	}
	exports.splitNsName = splitNsName;
	function getNsPrefix(elementName) {
	    return splitNsName(elementName)[0];
	}
	exports.getNsPrefix = getNsPrefix;
	function mergeNsAndName(prefix, localName) {
	    return lang_1.isPresent(prefix) ? "@" + prefix + ":" + localName : localName;
	}
	exports.mergeNsAndName = mergeNsAndName;
	//# sourceMappingURL=html_tags.js.map

/***/ },
/* 55 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var lang_1 = __webpack_require__(3);
	var exceptions_1 = __webpack_require__(8);
	var o = __webpack_require__(10);
	var _SINGLE_QUOTE_ESCAPE_STRING_RE = /'|\\|\n|\r|\$/g;
	exports.CATCH_ERROR_VAR = o.variable('error');
	exports.CATCH_STACK_VAR = o.variable('stack');
	var OutputEmitter = (function () {
	    function OutputEmitter() {
	    }
	    return OutputEmitter;
	}());
	exports.OutputEmitter = OutputEmitter;
	var _EmittedLine = (function () {
	    function _EmittedLine(indent) {
	        this.indent = indent;
	        this.parts = [];
	    }
	    return _EmittedLine;
	}());
	var EmitterVisitorContext = (function () {
	    function EmitterVisitorContext(_exportedVars, _indent) {
	        this._exportedVars = _exportedVars;
	        this._indent = _indent;
	        this._classes = [];
	        this._lines = [new _EmittedLine(_indent)];
	    }
	    EmitterVisitorContext.createRoot = function (exportedVars) {
	        return new EmitterVisitorContext(exportedVars, 0);
	    };
	    Object.defineProperty(EmitterVisitorContext.prototype, "_currentLine", {
	        get: function () { return this._lines[this._lines.length - 1]; },
	        enumerable: true,
	        configurable: true
	    });
	    EmitterVisitorContext.prototype.isExportedVar = function (varName) { return this._exportedVars.indexOf(varName) !== -1; };
	    EmitterVisitorContext.prototype.println = function (lastPart) {
	        if (lastPart === void 0) { lastPart = ''; }
	        this.print(lastPart, true);
	    };
	    EmitterVisitorContext.prototype.lineIsEmpty = function () { return this._currentLine.parts.length === 0; };
	    EmitterVisitorContext.prototype.print = function (part, newLine) {
	        if (newLine === void 0) { newLine = false; }
	        if (part.length > 0) {
	            this._currentLine.parts.push(part);
	        }
	        if (newLine) {
	            this._lines.push(new _EmittedLine(this._indent));
	        }
	    };
	    EmitterVisitorContext.prototype.removeEmptyLastLine = function () {
	        if (this.lineIsEmpty()) {
	            this._lines.pop();
	        }
	    };
	    EmitterVisitorContext.prototype.incIndent = function () {
	        this._indent++;
	        this._currentLine.indent = this._indent;
	    };
	    EmitterVisitorContext.prototype.decIndent = function () {
	        this._indent--;
	        this._currentLine.indent = this._indent;
	    };
	    EmitterVisitorContext.prototype.pushClass = function (clazz) { this._classes.push(clazz); };
	    EmitterVisitorContext.prototype.popClass = function () { return this._classes.pop(); };
	    Object.defineProperty(EmitterVisitorContext.prototype, "currentClass", {
	        get: function () {
	            return this._classes.length > 0 ? this._classes[this._classes.length - 1] : null;
	        },
	        enumerable: true,
	        configurable: true
	    });
	    EmitterVisitorContext.prototype.toSource = function () {
	        var lines = this._lines;
	        if (lines[lines.length - 1].parts.length === 0) {
	            lines = lines.slice(0, lines.length - 1);
	        }
	        return lines.map(function (line) {
	            if (line.parts.length > 0) {
	                return _createIndent(line.indent) + line.parts.join('');
	            }
	            else {
	                return '';
	            }
	        })
	            .join('\n');
	    };
	    return EmitterVisitorContext;
	}());
	exports.EmitterVisitorContext = EmitterVisitorContext;
	var AbstractEmitterVisitor = (function () {
	    function AbstractEmitterVisitor(_escapeDollarInStrings) {
	        this._escapeDollarInStrings = _escapeDollarInStrings;
	    }
	    AbstractEmitterVisitor.prototype.visitExpressionStmt = function (stmt, ctx) {
	        stmt.expr.visitExpression(this, ctx);
	        ctx.println(';');
	        return null;
	    };
	    AbstractEmitterVisitor.prototype.visitReturnStmt = function (stmt, ctx) {
	        ctx.print("return ");
	        stmt.value.visitExpression(this, ctx);
	        ctx.println(';');
	        return null;
	    };
	    AbstractEmitterVisitor.prototype.visitIfStmt = function (stmt, ctx) {
	        ctx.print("if (");
	        stmt.condition.visitExpression(this, ctx);
	        ctx.print(") {");
	        var hasElseCase = lang_1.isPresent(stmt.falseCase) && stmt.falseCase.length > 0;
	        if (stmt.trueCase.length <= 1 && !hasElseCase) {
	            ctx.print(" ");
	            this.visitAllStatements(stmt.trueCase, ctx);
	            ctx.removeEmptyLastLine();
	            ctx.print(" ");
	        }
	        else {
	            ctx.println();
	            ctx.incIndent();
	            this.visitAllStatements(stmt.trueCase, ctx);
	            ctx.decIndent();
	            if (hasElseCase) {
	                ctx.println("} else {");
	                ctx.incIndent();
	                this.visitAllStatements(stmt.falseCase, ctx);
	                ctx.decIndent();
	            }
	        }
	        ctx.println("}");
	        return null;
	    };
	    AbstractEmitterVisitor.prototype.visitThrowStmt = function (stmt, ctx) {
	        ctx.print("throw ");
	        stmt.error.visitExpression(this, ctx);
	        ctx.println(";");
	        return null;
	    };
	    AbstractEmitterVisitor.prototype.visitCommentStmt = function (stmt, ctx) {
	        var lines = stmt.comment.split('\n');
	        lines.forEach(function (line) { ctx.println("// " + line); });
	        return null;
	    };
	    AbstractEmitterVisitor.prototype.visitWriteVarExpr = function (expr, ctx) {
	        var lineWasEmpty = ctx.lineIsEmpty();
	        if (!lineWasEmpty) {
	            ctx.print('(');
	        }
	        ctx.print(expr.name + " = ");
	        expr.value.visitExpression(this, ctx);
	        if (!lineWasEmpty) {
	            ctx.print(')');
	        }
	        return null;
	    };
	    AbstractEmitterVisitor.prototype.visitWriteKeyExpr = function (expr, ctx) {
	        var lineWasEmpty = ctx.lineIsEmpty();
	        if (!lineWasEmpty) {
	            ctx.print('(');
	        }
	        expr.receiver.visitExpression(this, ctx);
	        ctx.print("[");
	        expr.index.visitExpression(this, ctx);
	        ctx.print("] = ");
	        expr.value.visitExpression(this, ctx);
	        if (!lineWasEmpty) {
	            ctx.print(')');
	        }
	        return null;
	    };
	    AbstractEmitterVisitor.prototype.visitWritePropExpr = function (expr, ctx) {
	        var lineWasEmpty = ctx.lineIsEmpty();
	        if (!lineWasEmpty) {
	            ctx.print('(');
	        }
	        expr.receiver.visitExpression(this, ctx);
	        ctx.print("." + expr.name + " = ");
	        expr.value.visitExpression(this, ctx);
	        if (!lineWasEmpty) {
	            ctx.print(')');
	        }
	        return null;
	    };
	    AbstractEmitterVisitor.prototype.visitInvokeMethodExpr = function (expr, ctx) {
	        expr.receiver.visitExpression(this, ctx);
	        var name = expr.name;
	        if (lang_1.isPresent(expr.builtin)) {
	            name = this.getBuiltinMethodName(expr.builtin);
	            if (lang_1.isBlank(name)) {
	                // some builtins just mean to skip the call.
	                // e.g. `bind` in Dart.
	                return null;
	            }
	        }
	        ctx.print("." + name + "(");
	        this.visitAllExpressions(expr.args, ctx, ",");
	        ctx.print(")");
	        return null;
	    };
	    AbstractEmitterVisitor.prototype.visitInvokeFunctionExpr = function (expr, ctx) {
	        expr.fn.visitExpression(this, ctx);
	        ctx.print("(");
	        this.visitAllExpressions(expr.args, ctx, ',');
	        ctx.print(")");
	        return null;
	    };
	    AbstractEmitterVisitor.prototype.visitReadVarExpr = function (ast, ctx) {
	        var varName = ast.name;
	        if (lang_1.isPresent(ast.builtin)) {
	            switch (ast.builtin) {
	                case o.BuiltinVar.Super:
	                    varName = 'super';
	                    break;
	                case o.BuiltinVar.This:
	                    varName = 'this';
	                    break;
	                case o.BuiltinVar.CatchError:
	                    varName = exports.CATCH_ERROR_VAR.name;
	                    break;
	                case o.BuiltinVar.CatchStack:
	                    varName = exports.CATCH_STACK_VAR.name;
	                    break;
	                default:
	                    throw new exceptions_1.BaseException("Unknown builtin variable " + ast.builtin);
	            }
	        }
	        ctx.print(varName);
	        return null;
	    };
	    AbstractEmitterVisitor.prototype.visitInstantiateExpr = function (ast, ctx) {
	        ctx.print("new ");
	        ast.classExpr.visitExpression(this, ctx);
	        ctx.print("(");
	        this.visitAllExpressions(ast.args, ctx, ',');
	        ctx.print(")");
	        return null;
	    };
	    AbstractEmitterVisitor.prototype.visitLiteralExpr = function (ast, ctx) {
	        var value = ast.value;
	        if (lang_1.isString(value)) {
	            ctx.print(escapeSingleQuoteString(value, this._escapeDollarInStrings));
	        }
	        else if (lang_1.isBlank(value)) {
	            ctx.print('null');
	        }
	        else {
	            ctx.print("" + value);
	        }
	        return null;
	    };
	    AbstractEmitterVisitor.prototype.visitConditionalExpr = function (ast, ctx) {
	        ctx.print("(");
	        ast.condition.visitExpression(this, ctx);
	        ctx.print('? ');
	        ast.trueCase.visitExpression(this, ctx);
	        ctx.print(': ');
	        ast.falseCase.visitExpression(this, ctx);
	        ctx.print(")");
	        return null;
	    };
	    AbstractEmitterVisitor.prototype.visitNotExpr = function (ast, ctx) {
	        ctx.print('!');
	        ast.condition.visitExpression(this, ctx);
	        return null;
	    };
	    AbstractEmitterVisitor.prototype.visitBinaryOperatorExpr = function (ast, ctx) {
	        var opStr;
	        switch (ast.operator) {
	            case o.BinaryOperator.Equals:
	                opStr = '==';
	                break;
	            case o.BinaryOperator.Identical:
	                opStr = '===';
	                break;
	            case o.BinaryOperator.NotEquals:
	                opStr = '!=';
	                break;
	            case o.BinaryOperator.NotIdentical:
	                opStr = '!==';
	                break;
	            case o.BinaryOperator.And:
	                opStr = '&&';
	                break;
	            case o.BinaryOperator.Or:
	                opStr = '||';
	                break;
	            case o.BinaryOperator.Plus:
	                opStr = '+';
	                break;
	            case o.BinaryOperator.Minus:
	                opStr = '-';
	                break;
	            case o.BinaryOperator.Divide:
	                opStr = '/';
	                break;
	            case o.BinaryOperator.Multiply:
	                opStr = '*';
	                break;
	            case o.BinaryOperator.Modulo:
	                opStr = '%';
	                break;
	            case o.BinaryOperator.Lower:
	                opStr = '<';
	                break;
	            case o.BinaryOperator.LowerEquals:
	                opStr = '<=';
	                break;
	            case o.BinaryOperator.Bigger:
	                opStr = '>';
	                break;
	            case o.BinaryOperator.BiggerEquals:
	                opStr = '>=';
	                break;
	            default:
	                throw new exceptions_1.BaseException("Unknown operator " + ast.operator);
	        }
	        ctx.print("(");
	        ast.lhs.visitExpression(this, ctx);
	        ctx.print(" " + opStr + " ");
	        ast.rhs.visitExpression(this, ctx);
	        ctx.print(")");
	        return null;
	    };
	    AbstractEmitterVisitor.prototype.visitReadPropExpr = function (ast, ctx) {
	        ast.receiver.visitExpression(this, ctx);
	        ctx.print(".");
	        ctx.print(ast.name);
	        return null;
	    };
	    AbstractEmitterVisitor.prototype.visitReadKeyExpr = function (ast, ctx) {
	        ast.receiver.visitExpression(this, ctx);
	        ctx.print("[");
	        ast.index.visitExpression(this, ctx);
	        ctx.print("]");
	        return null;
	    };
	    AbstractEmitterVisitor.prototype.visitLiteralArrayExpr = function (ast, ctx) {
	        var useNewLine = ast.entries.length > 1;
	        ctx.print("[", useNewLine);
	        ctx.incIndent();
	        this.visitAllExpressions(ast.entries, ctx, ',', useNewLine);
	        ctx.decIndent();
	        ctx.print("]", useNewLine);
	        return null;
	    };
	    AbstractEmitterVisitor.prototype.visitLiteralMapExpr = function (ast, ctx) {
	        var _this = this;
	        var useNewLine = ast.entries.length > 1;
	        ctx.print("{", useNewLine);
	        ctx.incIndent();
	        this.visitAllObjects(function (entry) {
	            ctx.print(escapeSingleQuoteString(entry[0], _this._escapeDollarInStrings) + ": ");
	            entry[1].visitExpression(_this, ctx);
	        }, ast.entries, ctx, ',', useNewLine);
	        ctx.decIndent();
	        ctx.print("}", useNewLine);
	        return null;
	    };
	    AbstractEmitterVisitor.prototype.visitAllExpressions = function (expressions, ctx, separator, newLine) {
	        var _this = this;
	        if (newLine === void 0) { newLine = false; }
	        this.visitAllObjects(function (expr) { return expr.visitExpression(_this, ctx); }, expressions, ctx, separator, newLine);
	    };
	    AbstractEmitterVisitor.prototype.visitAllObjects = function (handler, expressions, ctx, separator, newLine) {
	        if (newLine === void 0) { newLine = false; }
	        for (var i = 0; i < expressions.length; i++) {
	            if (i > 0) {
	                ctx.print(separator, newLine);
	            }
	            handler(expressions[i]);
	        }
	        if (newLine) {
	            ctx.println();
	        }
	    };
	    AbstractEmitterVisitor.prototype.visitAllStatements = function (statements, ctx) {
	        var _this = this;
	        statements.forEach(function (stmt) { return stmt.visitStatement(_this, ctx); });
	    };
	    return AbstractEmitterVisitor;
	}());
	exports.AbstractEmitterVisitor = AbstractEmitterVisitor;
	function escapeSingleQuoteString(input, escapeDollar) {
	    if (lang_1.isBlank(input)) {
	        return null;
	    }
	    var body = lang_1.StringWrapper.replaceAllMapped(input, _SINGLE_QUOTE_ESCAPE_STRING_RE, function (match) {
	        if (match[0] == '$') {
	            return escapeDollar ? '\\$' : '$';
	        }
	        else if (match[0] == '\n') {
	            return '\\n';
	        }
	        else if (match[0] == '\r') {
	            return '\\r';
	        }
	        else {
	            return "\\" + match[0];
	        }
	    });
	    return "'" + body + "'";
	}
	exports.escapeSingleQuoteString = escapeSingleQuoteString;
	function _createIndent(count) {
	    var res = '';
	    for (var i = 0; i < count; i++) {
	        res += '  ';
	    }
	    return res;
	}
	//# sourceMappingURL=abstract_emitter.js.map

/***/ },
/* 56 */
/***/ function(module, exports) {

	"use strict";
	var ParseLocation = (function () {
	    function ParseLocation(file, offset, line, col) {
	        this.file = file;
	        this.offset = offset;
	        this.line = line;
	        this.col = col;
	    }
	    ParseLocation.prototype.toString = function () { return this.file.url + "@" + this.line + ":" + this.col; };
	    return ParseLocation;
	}());
	exports.ParseLocation = ParseLocation;
	var ParseSourceFile = (function () {
	    function ParseSourceFile(content, url) {
	        this.content = content;
	        this.url = url;
	    }
	    return ParseSourceFile;
	}());
	exports.ParseSourceFile = ParseSourceFile;
	var ParseSourceSpan = (function () {
	    function ParseSourceSpan(start, end) {
	        this.start = start;
	        this.end = end;
	    }
	    ParseSourceSpan.prototype.toString = function () {
	        return this.start.file.content.substring(this.start.offset, this.end.offset);
	    };
	    return ParseSourceSpan;
	}());
	exports.ParseSourceSpan = ParseSourceSpan;
	(function (ParseErrorLevel) {
	    ParseErrorLevel[ParseErrorLevel["WARNING"] = 0] = "WARNING";
	    ParseErrorLevel[ParseErrorLevel["FATAL"] = 1] = "FATAL";
	})(exports.ParseErrorLevel || (exports.ParseErrorLevel = {}));
	var ParseErrorLevel = exports.ParseErrorLevel;
	var ParseError = (function () {
	    function ParseError(span, msg, level) {
	        if (level === void 0) { level = ParseErrorLevel.FATAL; }
	        this.span = span;
	        this.msg = msg;
	        this.level = level;
	    }
	    ParseError.prototype.toString = function () {
	        var source = this.span.start.file.content;
	        var ctxStart = this.span.start.offset;
	        if (ctxStart > source.length - 1) {
	            ctxStart = source.length - 1;
	        }
	        var ctxEnd = ctxStart;
	        var ctxLen = 0;
	        var ctxLines = 0;
	        while (ctxLen < 100 && ctxStart > 0) {
	            ctxStart--;
	            ctxLen++;
	            if (source[ctxStart] == "\n") {
	                if (++ctxLines == 3) {
	                    break;
	                }
	            }
	        }
	        ctxLen = 0;
	        ctxLines = 0;
	        while (ctxLen < 100 && ctxEnd < source.length - 1) {
	            ctxEnd++;
	            ctxLen++;
	            if (source[ctxEnd] == "\n") {
	                if (++ctxLines == 3) {
	                    break;
	                }
	            }
	        }
	        var context = source.substring(ctxStart, this.span.start.offset) + '[ERROR ->]' +
	            source.substring(this.span.start.offset, ctxEnd + 1);
	        return this.msg + " (\"" + context + "\"): " + this.span.start;
	    };
	    return ParseError;
	}());
	exports.ParseError = ParseError;
	//# sourceMappingURL=parse_util.js.map

/***/ },
/* 57 */
/***/ function(module, exports) {

	"use strict";
	var ElementSchemaRegistry = (function () {
	    function ElementSchemaRegistry() {
	    }
	    return ElementSchemaRegistry;
	}());
	exports.ElementSchemaRegistry = ElementSchemaRegistry;
	//# sourceMappingURL=element_schema_registry.js.map

/***/ },
/* 58 */,
/* 59 */,
/* 60 */,
/* 61 */,
/* 62 */,
/* 63 */,
/* 64 */,
/* 65 */,
/* 66 */,
/* 67 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var core_1 = __webpack_require__(1);
	var core_private_1 = __webpack_require__(115);
	var common_1 = __webpack_require__(6);
	var dom_sanitization_service_1 = __webpack_require__(214);
	var lang_1 = __webpack_require__(12);
	var browser_adapter_1 = __webpack_require__(118);
	var testability_1 = __webpack_require__(411);
	var dom_adapter_1 = __webpack_require__(15);
	var dom_tokens_1 = __webpack_require__(68);
	var event_manager_1 = __webpack_require__(35);
	var dom_renderer_1 = __webpack_require__(207);
	var shared_styles_host_1 = __webpack_require__(120);
	var key_events_1 = __webpack_require__(417);
	var ng_probe_1 = __webpack_require__(119);
	var dom_events_1 = __webpack_require__(208);
	var hammer_gestures_1 = __webpack_require__(209);
	var shared_styles_host_2 = __webpack_require__(120);
	var animation_builder_1 = __webpack_require__(116);
	var browser_details_1 = __webpack_require__(117);
	var title_1 = __webpack_require__(412);
	exports.Title = title_1.Title;
	var browser_adapter_2 = __webpack_require__(118);
	exports.BrowserDomAdapter = browser_adapter_2.BrowserDomAdapter;
	var tools_1 = __webpack_require__(414);
	exports.enableDebugTools = tools_1.enableDebugTools;
	exports.disableDebugTools = tools_1.disableDebugTools;
	var by_1 = __webpack_require__(415);
	exports.By = by_1.By;
	exports.BROWSER_PLATFORM_MARKER = 
	/*@ts2dart_const*/ new core_1.OpaqueToken('BrowserPlatformMarker');
	/**
	 * A set of providers to initialize the Angular platform in a web browser.
	 *
	 * Used automatically by `bootstrap`, or can be passed to {@link platform}.
	 */
	exports.BROWSER_PROVIDERS = [
	    /*@ts2dart_Provider*/ { provide: exports.BROWSER_PLATFORM_MARKER, useValue: true },
	    core_1.PLATFORM_COMMON_PROVIDERS,
	    /*@ts2dart_Provider*/ { provide: core_1.PLATFORM_INITIALIZER, useValue: initDomAdapter, multi: true },
	];
	function _exceptionHandler() {
	    // !IS_DART is required because we must rethrow exceptions in JS,
	    // but must not rethrow exceptions in Dart
	    return new core_1.ExceptionHandler(dom_adapter_1.getDOM(), !lang_1.IS_DART);
	}
	function _document() {
	    return dom_adapter_1.getDOM().defaultDoc();
	}
	exports.BROWSER_SANITIZATION_PROVIDERS = [
	    /* @ts2dart_Provider */ { provide: core_private_1.SanitizationService, useExisting: dom_sanitization_service_1.DomSanitizationService },
	    /* @ts2dart_Provider */ { provide: dom_sanitization_service_1.DomSanitizationService, useClass: dom_sanitization_service_1.DomSanitizationServiceImpl },
	];
	/**
	 * A set of providers to initialize an Angular application in a web browser.
	 *
	 * Used automatically by `bootstrap`, or can be passed to {@link PlatformRef.application}.
	 */
	exports.BROWSER_APP_COMMON_PROVIDERS = 
	/*@ts2dart_const*/ [
	    core_1.APPLICATION_COMMON_PROVIDERS,
	    common_1.FORM_PROVIDERS,
	    exports.BROWSER_SANITIZATION_PROVIDERS,
	    /* @ts2dart_Provider */ { provide: core_1.PLATFORM_PIPES, useValue: common_1.COMMON_PIPES, multi: true },
	    /* @ts2dart_Provider */ { provide: core_1.PLATFORM_DIRECTIVES, useValue: common_1.COMMON_DIRECTIVES, multi: true },
	    /* @ts2dart_Provider */ { provide: core_1.ExceptionHandler, useFactory: _exceptionHandler, deps: [] },
	    /* @ts2dart_Provider */ { provide: dom_tokens_1.DOCUMENT, useFactory: _document, deps: [] },
	    /* @ts2dart_Provider */ { provide: event_manager_1.EVENT_MANAGER_PLUGINS, useClass: dom_events_1.DomEventsPlugin, multi: true },
	    /* @ts2dart_Provider */ { provide: event_manager_1.EVENT_MANAGER_PLUGINS, useClass: key_events_1.KeyEventsPlugin, multi: true },
	    /* @ts2dart_Provider */ { provide: event_manager_1.EVENT_MANAGER_PLUGINS, useClass: hammer_gestures_1.HammerGesturesPlugin, multi: true },
	    /* @ts2dart_Provider */ { provide: hammer_gestures_1.HAMMER_GESTURE_CONFIG, useClass: hammer_gestures_1.HammerGestureConfig },
	    /* @ts2dart_Provider */ { provide: dom_renderer_1.DomRootRenderer, useClass: dom_renderer_1.DomRootRenderer_ },
	    /* @ts2dart_Provider */ { provide: core_1.RootRenderer, useExisting: dom_renderer_1.DomRootRenderer },
	    /* @ts2dart_Provider */ { provide: shared_styles_host_1.SharedStylesHost, useExisting: shared_styles_host_2.DomSharedStylesHost },
	    shared_styles_host_2.DomSharedStylesHost,
	    core_1.Testability,
	    browser_details_1.BrowserDetails,
	    animation_builder_1.AnimationBuilder,
	    event_manager_1.EventManager,
	    ng_probe_1.ELEMENT_PROBE_PROVIDERS
	];
	var hammer_gestures_2 = __webpack_require__(209);
	exports.HAMMER_GESTURE_CONFIG = hammer_gestures_2.HAMMER_GESTURE_CONFIG;
	exports.HammerGestureConfig = hammer_gestures_2.HammerGestureConfig;
	function initDomAdapter() {
	    browser_adapter_1.BrowserDomAdapter.makeCurrent();
	    core_private_1.wtfInit();
	    testability_1.BrowserGetTestability.init();
	}
	exports.initDomAdapter = initDomAdapter;
	//# sourceMappingURL=browser_common.js.map

/***/ },
/* 68 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var core_1 = __webpack_require__(1);
	/**
	 * A DI Token representing the main rendering context. In a browser this is the DOM Document.
	 *
	 * Note: Document might not be available in the Application Context when Application and Rendering
	 * Contexts are not the same (e.g. when running the application into a Web Worker).
	 */
	exports.DOCUMENT = new core_1.OpaqueToken('DocumentToken');
	//# sourceMappingURL=dom_tokens.js.map

/***/ },
/* 69 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(6);
	var date_formatter_1 = __webpack_require__(430);
	var FORMAT_DAY = 'DD';
	var FORMAT_MONTH = 'MMMM';
	var FORMAT_YEAR = 'YYYY';
	var FORMAT_DAY_HEADER = 'dd';
	var FORMAT_DAY_TITLE = 'MMMM YYYY';
	var FORMAT_MONTH_TITLE = 'YYYY';
	var DATEPICKER_MODE = 'day';
	var MIN_MODE = 'day';
	var MAX_MODE = 'year';
	var SHOW_WEEKS = true;
	var ONLY_CURRENT_MONTH = false;
	var STARTING_DAY = 0;
	var YEAR_RANGE = 20;
	// const MIN_DATE:Date = void 0;
	// const MAX_DATE:Date = void 0;
	var SHORTCUT_PROPAGATION = false;
	// const DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
	/*
	 const KEYS = {
	 13: 'enter',
	 32: 'space',
	 33: 'pageup',
	 34: 'pagedown',
	 35: 'end',
	 36: 'home',
	 37: 'left',
	 38: 'up',
	 39: 'right',
	 40: 'down'
	 };
	 */
	var DatePickerInnerComponent = (function () {
	    function DatePickerInnerComponent() {
	        this.stepDay = {};
	        this.stepMonth = {};
	        this.stepYear = {};
	        this.modes = ['day', 'month', 'year'];
	        this.dateFormatter = new date_formatter_1.DateFormatter();
	        this.update = new core_1.EventEmitter(false);
	    }
	    Object.defineProperty(DatePickerInnerComponent.prototype, "activeDate", {
	        get: function () {
	            return this._activeDate;
	        },
	        set: function (value) {
	            this._activeDate = value;
	            this.refreshView();
	        },
	        enumerable: true,
	        configurable: true
	    });
	    // todo: add formatter value to Date object
	    DatePickerInnerComponent.prototype.ngOnInit = function () {
	        this.formatDay = this.formatDay || FORMAT_DAY;
	        this.formatMonth = this.formatMonth || FORMAT_MONTH;
	        this.formatYear = this.formatYear || FORMAT_YEAR;
	        this.formatDayHeader = this.formatDayHeader || FORMAT_DAY_HEADER;
	        this.formatDayTitle = this.formatDayTitle || FORMAT_DAY_TITLE;
	        this.formatMonthTitle = this.formatMonthTitle || FORMAT_MONTH_TITLE;
	        this.showWeeks = (this.showWeeks === undefined
	            ? SHOW_WEEKS
	            : this.showWeeks);
	        this.onlyCurrentMonth = (this.onlyCurrentMonth === undefined
	            ? ONLY_CURRENT_MONTH
	            : this.onlyCurrentMonth);
	        this.startingDay = this.startingDay || STARTING_DAY;
	        this.yearRange = this.yearRange || YEAR_RANGE;
	        this.shortcutPropagation = this.shortcutPropagation || SHORTCUT_PROPAGATION;
	        this.datepickerMode = this.datepickerMode || DATEPICKER_MODE;
	        this.minMode = this.minMode || MIN_MODE;
	        this.maxMode = this.maxMode || MAX_MODE;
	        // todo: use date for unique value
	        this.uniqueId = 'datepicker-' + '-' + Math.floor(Math.random() * 10000);
	        if (this.initDate) {
	            this.activeDate = this.initDate;
	            this.selectedDate = new Date(this.activeDate.valueOf());
	            this.update.emit(this.activeDate);
	        }
	        else if (this.activeDate === undefined) {
	            this.activeDate = new Date();
	        }
	        this.refreshView();
	    };
	    DatePickerInnerComponent.prototype.setCompareHandler = function (handler, type) {
	        if (type === 'day') {
	            this.compareHandlerDay = handler;
	        }
	        if (type === 'month') {
	            this.compareHandlerMonth = handler;
	        }
	        if (type === 'year') {
	            this.compareHandlerYear = handler;
	        }
	    };
	    DatePickerInnerComponent.prototype.compare = function (date1, date2) {
	        if (date1 === undefined || date2 === undefined) {
	            return undefined;
	        }
	        if (this.datepickerMode === 'day' && this.compareHandlerDay) {
	            return this.compareHandlerDay(date1, date2);
	        }
	        if (this.datepickerMode === 'month' && this.compareHandlerMonth) {
	            return this.compareHandlerMonth(date1, date2);
	        }
	        if (this.datepickerMode === 'year' && this.compareHandlerYear) {
	            return this.compareHandlerYear(date1, date2);
	        }
	        return void 0;
	    };
	    DatePickerInnerComponent.prototype.setRefreshViewHandler = function (handler, type) {
	        if (type === 'day') {
	            this.refreshViewHandlerDay = handler;
	        }
	        if (type === 'month') {
	            this.refreshViewHandlerMonth = handler;
	        }
	        if (type === 'year') {
	            this.refreshViewHandlerYear = handler;
	        }
	    };
	    DatePickerInnerComponent.prototype.refreshView = function () {
	        if (this.datepickerMode === 'day' && this.refreshViewHandlerDay) {
	            this.refreshViewHandlerDay();
	        }
	        if (this.datepickerMode === 'month' && this.refreshViewHandlerMonth) {
	            this.refreshViewHandlerMonth();
	        }
	        if (this.datepickerMode === 'year' && this.refreshViewHandlerYear) {
	            this.refreshViewHandlerYear();
	        }
	    };
	    DatePickerInnerComponent.prototype.dateFilter = function (date, format) {
	        return this.dateFormatter.format(date, format);
	    };
	    DatePickerInnerComponent.prototype.isActive = function (dateObject) {
	        if (this.compare(dateObject.date, this.activeDate) === 0) {
	            this.activeDateId = dateObject.uid;
	            return true;
	        }
	        return false;
	    };
	    DatePickerInnerComponent.prototype.createDateObject = function (date, format) {
	        var dateObject = {};
	        dateObject.date = new Date(date.getFullYear(), date.getMonth(), date.getDate());
	        dateObject.label = this.dateFilter(date, format);
	        dateObject.selected = this.compare(date, this.selectedDate) === 0;
	        dateObject.disabled = this.isDisabled(date);
	        dateObject.current = this.compare(date, new Date()) === 0;
	        dateObject.customClass = this.getCustomClassForDate(dateObject.date);
	        return dateObject;
	    };
	    DatePickerInnerComponent.prototype.split = function (arr, size) {
	        var arrays = [];
	        while (arr.length > 0) {
	            arrays.push(arr.splice(0, size));
	        }
	        return arrays;
	    };
	    // Fix a hard-reproducible bug with timezones
	    // The bug depends on OS, browser, current timezone and current date
	    // i.e.
	    // var date = new Date(2014, 0, 1);
	    // console.log(date.getFullYear(), date.getMonth(), date.getDate(),
	    // date.getHours()); can result in "2013 11 31 23" because of the bug.
	    DatePickerInnerComponent.prototype.fixTimeZone = function (date) {
	        var hours = date.getHours();
	        return new Date(date.getFullYear(), date.getMonth(), date.getDate(), hours === 23 ? hours + 2 : 0);
	    };
	    DatePickerInnerComponent.prototype.select = function (date) {
	        if (this.datepickerMode === this.minMode) {
	            if (!this.activeDate) {
	                this.activeDate = new Date(0, 0, 0, 0, 0, 0, 0);
	            }
	            this.activeDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());
	        }
	        else {
	            this.activeDate = date;
	            this.datepickerMode = this.modes[this.modes.indexOf(this.datepickerMode) - 1];
	        }
	        this.selectedDate = new Date(this.activeDate.valueOf());
	        this.update.emit(this.activeDate);
	        this.refreshView();
	    };
	    DatePickerInnerComponent.prototype.move = function (direction) {
	        var expectedStep;
	        if (this.datepickerMode === 'day') {
	            expectedStep = this.stepDay;
	        }
	        if (this.datepickerMode === 'month') {
	            expectedStep = this.stepMonth;
	        }
	        if (this.datepickerMode === 'year') {
	            expectedStep = this.stepYear;
	        }
	        if (expectedStep) {
	            var year = this.activeDate.getFullYear() + direction * (expectedStep.years || 0);
	            var month = this.activeDate.getMonth() + direction * (expectedStep.months || 0);
	            this.activeDate = new Date(year, month, 1);
	            this.refreshView();
	        }
	    };
	    DatePickerInnerComponent.prototype.toggleMode = function (direction) {
	        direction = direction || 1;
	        if ((this.datepickerMode === this.maxMode && direction === 1) ||
	            (this.datepickerMode === this.minMode && direction === -1)) {
	            return;
	        }
	        this.datepickerMode = this.modes[this.modes.indexOf(this.datepickerMode) + direction];
	        this.refreshView();
	    };
	    DatePickerInnerComponent.prototype.getCustomClassForDate = function (date) {
	        var _this = this;
	        if (!this.customClass) {
	            return '';
	        }
	        // todo: build a hash of custom classes, it will work faster
	        var customClassObject = this.customClass
	            .find(function (customClass) {
	            return customClass.date.valueOf() === date.valueOf() &&
	                customClass.mode === _this.datepickerMode;
	        }, this);
	        return customClassObject === undefined ? '' : customClassObject.clazz;
	    };
	    DatePickerInnerComponent.prototype.isDisabled = function (date) {
	        // todo: implement dateDisabled attribute
	        return ((this.minDate && this.compare(date, this.minDate) < 0) ||
	            (this.maxDate && this.compare(date, this.maxDate) > 0));
	    };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], DatePickerInnerComponent.prototype, "datepickerMode", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], DatePickerInnerComponent.prototype, "startingDay", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], DatePickerInnerComponent.prototype, "yearRange", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Date)
	    ], DatePickerInnerComponent.prototype, "minDate", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Date)
	    ], DatePickerInnerComponent.prototype, "maxDate", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], DatePickerInnerComponent.prototype, "minMode", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], DatePickerInnerComponent.prototype, "maxMode", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], DatePickerInnerComponent.prototype, "showWeeks", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], DatePickerInnerComponent.prototype, "formatDay", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], DatePickerInnerComponent.prototype, "formatMonth", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], DatePickerInnerComponent.prototype, "formatYear", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], DatePickerInnerComponent.prototype, "formatDayHeader", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], DatePickerInnerComponent.prototype, "formatDayTitle", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], DatePickerInnerComponent.prototype, "formatMonthTitle", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], DatePickerInnerComponent.prototype, "onlyCurrentMonth", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], DatePickerInnerComponent.prototype, "shortcutPropagation", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Array)
	    ], DatePickerInnerComponent.prototype, "customClass", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], DatePickerInnerComponent.prototype, "dateDisabled", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Date)
	    ], DatePickerInnerComponent.prototype, "initDate", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Date)
	    ], DatePickerInnerComponent.prototype, "activeDate", null);
	    DatePickerInnerComponent = __decorate([
	        core_1.Component({
	            selector: 'datepicker-inner',
	            events: ['update'],
	            template: "\n    <div *ngIf=\"datepickerMode\" class=\"well well-sm bg-faded p-a card\" role=\"application\" ><!--&lt;!&ndash;ng-keydown=\"keydown($event)\"&ndash;&gt;-->\n      <ng-content></ng-content>\n    </div>\n  ",
	            directives: [common_1.FORM_DIRECTIVES, common_1.CORE_DIRECTIVES, common_1.NgClass, common_1.NgModel]
	        }), 
	        __metadata('design:paramtypes', [])
	    ], DatePickerInnerComponent);
	    return DatePickerInnerComponent;
	}());
	exports.DatePickerInnerComponent = DatePickerInnerComponent;


/***/ },
/* 70 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var dropdown_service_1 = __webpack_require__(434);
	var DropdownDirective = (function () {
	    function DropdownDirective(el) {
	        this.onToggle = new core_1.EventEmitter(false);
	        this.isOpenChange = new core_1.EventEmitter(false);
	        this.addClass = true;
	        // @Query('dropdownMenu', {descendants: false})
	        // dropdownMenuList:QueryList<ElementRef>) {
	        this.el = el;
	        // todo: bind to route change event
	    }
	    Object.defineProperty(DropdownDirective.prototype, "isOpen", {
	        get: function () {
	            return this._isOpen;
	        },
	        set: function (value) {
	            this._isOpen = !!value;
	            // todo: implement after porting position
	            // if (this.appendToBody && this.menuEl) {
	            //
	            // }
	            // todo: $animate open<->close transitions, as soon as ng2Animate will be
	            // ready
	            if (this.isOpen) {
	                this.focusToggleElement();
	                dropdown_service_1.dropdownService.open(this);
	            }
	            else {
	                dropdown_service_1.dropdownService.close(this);
	                this.selectedOption = void 0;
	            }
	            this.onToggle.emit(this.isOpen);
	            this.isOpenChange.emit(this.isOpen);
	            // todo: implement call to setIsOpen if set and function
	        },
	        enumerable: true,
	        configurable: true
	    });
	    DropdownDirective.prototype.ngOnInit = function () {
	        this.autoClose = this.autoClose || dropdown_service_1.NONINPUT;
	        if (this.isOpen) {
	        }
	    };
	    DropdownDirective.prototype.ngOnDestroy = function () {
	        if (this.appendToBody && this.menuEl) {
	            this.menuEl.nativeElement.remove();
	        }
	    };
	    Object.defineProperty(DropdownDirective.prototype, "dropDownMenu", {
	        set: function (dropdownMenu) {
	            // init drop down menu
	            this.menuEl = dropdownMenu.el;
	            if (this.appendToBody) {
	                window.document.body.appendChild(this.menuEl.nativeElement);
	            }
	        },
	        enumerable: true,
	        configurable: true
	    });
	    Object.defineProperty(DropdownDirective.prototype, "dropDownToggle", {
	        set: function (dropdownToggle) {
	            // init toggle element
	            this.toggleEl = dropdownToggle.el;
	        },
	        enumerable: true,
	        configurable: true
	    });
	    DropdownDirective.prototype.toggle = function (open) {
	        return this.isOpen = arguments.length ? !!open : !this.isOpen;
	    };
	    DropdownDirective.prototype.focusDropdownEntry = function (keyCode) {
	        // If append to body is used.
	        var hostEl = this.menuEl ?
	            this.menuEl.nativeElement :
	            this.el.nativeElement.getElementsByTagName('ul')[0];
	        if (!hostEl) {
	            // todo: throw exception?
	            return;
	        }
	        var elems = hostEl.getElementsByTagName('a');
	        if (!elems || !elems.length) {
	            // todo: throw exception?
	            return;
	        }
	        // todo: use parseInt to detect isNumber?
	        // todo: or implement selectedOption as a get\set pair with parseInt on set
	        switch (keyCode) {
	            case (40):
	                if (typeof this.selectedOption !== 'number') {
	                    this.selectedOption = 0;
	                    break;
	                }
	                if (this.selectedOption === elems.length - 1) {
	                    break;
	                }
	                this.selectedOption++;
	                break;
	            case (38):
	                if (typeof this.selectedOption !== 'number') {
	                    return;
	                }
	                if (this.selectedOption === 0) {
	                    // todo: return?
	                    break;
	                }
	                this.selectedOption--;
	                break;
	            default:
	                break;
	        }
	        elems[this.selectedOption].focus();
	    };
	    DropdownDirective.prototype.focusToggleElement = function () {
	        if (this.toggleEl) {
	            this.toggleEl.nativeElement.focus();
	        }
	    };
	    __decorate([
	        core_1.HostBinding('class.open'),
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], DropdownDirective.prototype, "isOpen", null);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], DropdownDirective.prototype, "autoClose", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], DropdownDirective.prototype, "keyboardNav", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], DropdownDirective.prototype, "appendToBody", void 0);
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', core_1.EventEmitter)
	    ], DropdownDirective.prototype, "onToggle", void 0);
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', core_1.EventEmitter)
	    ], DropdownDirective.prototype, "isOpenChange", void 0);
	    __decorate([
	        core_1.HostBinding('class.dropdown'), 
	        __metadata('design:type', Boolean)
	    ], DropdownDirective.prototype, "addClass", void 0);
	    DropdownDirective = __decorate([
	        core_1.Directive({ selector: '[dropdown]' }), 
	        __metadata('design:paramtypes', [core_1.ElementRef])
	    ], DropdownDirective);
	    return DropdownDirective;
	}());
	exports.DropdownDirective = DropdownDirective;


/***/ },
/* 71 */
/***/ function(module, exports) {

	"use strict";
	var PositionService = (function () {
	    function PositionService() {
	    }
	    /**
	     * Provides read-only equivalent of jQuery's position function:
	     * http://api.jquery.com/position/
	     */
	    PositionService.prototype.position = function (nativeEl) {
	        var elBCR = this.offset(nativeEl);
	        var offsetParentBCR = { top: 0, left: 0 };
	        var offsetParentEl = this.parentOffsetEl(nativeEl);
	        if (offsetParentEl !== this.document) {
	            offsetParentBCR = this.offset(offsetParentEl);
	            offsetParentBCR.top += offsetParentEl.clientTop - offsetParentEl.scrollTop;
	            offsetParentBCR.left += offsetParentEl.clientLeft - offsetParentEl.scrollLeft;
	        }
	        var boundingClientRect = nativeEl.getBoundingClientRect();
	        return {
	            width: boundingClientRect.width || nativeEl.offsetWidth,
	            height: boundingClientRect.height || nativeEl.offsetHeight,
	            top: elBCR.top - offsetParentBCR.top,
	            left: elBCR.left - offsetParentBCR.left
	        };
	    };
	    /**
	     * Provides read-only equivalent of jQuery's offset function:
	     * http://api.jquery.com/offset/
	     */
	    PositionService.prototype.offset = function (nativeEl) {
	        var boundingClientRect = nativeEl.getBoundingClientRect();
	        return {
	            width: boundingClientRect.width || nativeEl.offsetWidth,
	            height: boundingClientRect.height || nativeEl.offsetHeight,
	            top: boundingClientRect.top + (this.window.pageYOffset || this.document.documentElement.scrollTop),
	            left: boundingClientRect.left + (this.window.pageXOffset || this.document.documentElement.scrollLeft)
	        };
	    };
	    /**
	     * Provides coordinates for the targetEl in relation to hostEl
	     */
	    PositionService.prototype.positionElements = function (hostEl, targetEl, positionStr, appendToBody) {
	        var positionStrParts = positionStr.split('-');
	        var pos0 = positionStrParts[0];
	        var pos1 = positionStrParts[1] || 'center';
	        var hostElPos = appendToBody ?
	            this.offset(hostEl) :
	            this.position(hostEl);
	        var targetElWidth = targetEl.offsetWidth;
	        var targetElHeight = targetEl.offsetHeight;
	        var shiftWidth = {
	            center: function () {
	                return hostElPos.left + hostElPos.width / 2 - targetElWidth / 2;
	            },
	            left: function () {
	                return hostElPos.left;
	            },
	            right: function () {
	                return hostElPos.left + hostElPos.width;
	            }
	        };
	        var shiftHeight = {
	            center: function () {
	                return hostElPos.top + hostElPos.height / 2 - targetElHeight / 2;
	            },
	            top: function () {
	                return hostElPos.top;
	            },
	            bottom: function () {
	                return hostElPos.top + hostElPos.height;
	            }
	        };
	        var targetElPos;
	        switch (pos0) {
	            case 'right':
	                targetElPos = {
	                    top: shiftHeight[pos1](),
	                    left: shiftWidth[pos0]()
	                };
	                break;
	            case 'left':
	                targetElPos = {
	                    top: shiftHeight[pos1](),
	                    left: hostElPos.left - targetElWidth
	                };
	                break;
	            case 'bottom':
	                targetElPos = {
	                    top: shiftHeight[pos0](),
	                    left: shiftWidth[pos1]()
	                };
	                break;
	            default:
	                targetElPos = {
	                    top: hostElPos.top - targetElHeight,
	                    left: shiftWidth[pos1]()
	                };
	                break;
	        }
	        return targetElPos;
	    };
	    Object.defineProperty(PositionService.prototype, "window", {
	        get: function () {
	            return window;
	        },
	        enumerable: true,
	        configurable: true
	    });
	    Object.defineProperty(PositionService.prototype, "document", {
	        get: function () {
	            return window.document;
	        },
	        enumerable: true,
	        configurable: true
	    });
	    PositionService.prototype.getStyle = function (nativeEl, cssProp) {
	        // IE
	        if (nativeEl.currentStyle) {
	            return nativeEl.currentStyle[cssProp];
	        }
	        if (this.window.getComputedStyle) {
	            return this.window.getComputedStyle(nativeEl)[cssProp];
	        }
	        // finally try and get inline style
	        return nativeEl.style[cssProp];
	    };
	    /**
	     * Checks if a given element is statically positioned
	     * @param nativeEl - raw DOM element
	     */
	    PositionService.prototype.isStaticPositioned = function (nativeEl) {
	        return (this.getStyle(nativeEl, 'position') || 'static') === 'static';
	    };
	    /**
	     * returns the closest, non-statically positioned parentOffset of a given
	     * element
	     * @param nativeEl
	     */
	    PositionService.prototype.parentOffsetEl = function (nativeEl) {
	        var offsetParent = nativeEl.offsetParent || this.document;
	        while (offsetParent && offsetParent !== this.document &&
	            this.isStaticPositioned(offsetParent)) {
	            offsetParent = offsetParent.offsetParent;
	        }
	        return offsetParent || this.document;
	    };
	    ;
	    return PositionService;
	}());
	exports.PositionService = PositionService;
	exports.positionService = new PositionService();


/***/ },
/* 72 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var progressConfig = {
	    animate: true,
	    max: 100
	};
	// todo: progress element conflict with bootstrap.css
	// todo: need hack: replace host element with div
	/* tslint:disable */
	var ProgressDirective = (function () {
	    function ProgressDirective() {
	        this.addClass = true;
	        this.bars = [];
	    }
	    Object.defineProperty(ProgressDirective.prototype, "max", {
	        get: function () {
	            return this._max;
	        },
	        set: function (v) {
	            this._max = v;
	            this.bars.forEach(function (bar) {
	                bar.recalculatePercentage();
	            });
	        },
	        enumerable: true,
	        configurable: true
	    });
	    ProgressDirective.prototype.ngOnInit = function () {
	        this.animate = this.animate !== false;
	        this.max = typeof this.max === 'number' ? this.max : progressConfig.max;
	    };
	    ProgressDirective.prototype.addBar = function (bar) {
	        if (!this.animate) {
	            bar.transition = 'none';
	        }
	        this.bars.push(bar);
	    };
	    ProgressDirective.prototype.removeBar = function (bar) {
	        this.bars.splice(this.bars.indexOf(bar), 1);
	    };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], ProgressDirective.prototype, "animate", void 0);
	    __decorate([
	        core_1.HostBinding('attr.max'),
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], ProgressDirective.prototype, "max", null);
	    __decorate([
	        core_1.HostBinding('class.progress'), 
	        __metadata('design:type', Boolean)
	    ], ProgressDirective.prototype, "addClass", void 0);
	    ProgressDirective = __decorate([
	        core_1.Directive({ selector: 'bs-progress, [progress]' }), 
	        __metadata('design:paramtypes', [])
	    ], ProgressDirective);
	    return ProgressDirective;
	}());
	exports.ProgressDirective = ProgressDirective;


/***/ },
/* 73 */,
/* 74 */,
/* 75 */,
/* 76 */,
/* 77 */,
/* 78 */,
/* 79 */,
/* 80 */,
/* 81 */,
/* 82 */,
/* 83 */,
/* 84 */,
/* 85 */,
/* 86 */,
/* 87 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	function __export(m) {
	    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
	}
	__export(__webpack_require__(356));
	//# sourceMappingURL=index.js.map

/***/ },
/* 88 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var core_1 = __webpack_require__(1);
	var core_private_1 = __webpack_require__(13);
	var lang_1 = __webpack_require__(3);
	var exceptions_1 = __webpack_require__(8);
	var collection_1 = __webpack_require__(7);
	function _isDirectiveMetadata(type) {
	    return type instanceof core_1.DirectiveMetadata;
	}
	var DirectiveResolver = (function () {
	    function DirectiveResolver(_reflector) {
	        if (lang_1.isPresent(_reflector)) {
	            this._reflector = _reflector;
	        }
	        else {
	            this._reflector = core_1.reflector;
	        }
	    }
	    /**
	     * Return {@link DirectiveMetadata} for a given `Type`.
	     */
	    DirectiveResolver.prototype.resolve = function (type) {
	        var typeMetadata = this._reflector.annotations(core_1.resolveForwardRef(type));
	        if (lang_1.isPresent(typeMetadata)) {
	            var metadata = typeMetadata.find(_isDirectiveMetadata);
	            if (lang_1.isPresent(metadata)) {
	                var propertyMetadata = this._reflector.propMetadata(type);
	                return this._mergeWithPropertyMetadata(metadata, propertyMetadata, type);
	            }
	        }
	        throw new exceptions_1.BaseException("No Directive annotation found on " + lang_1.stringify(type));
	    };
	    DirectiveResolver.prototype._mergeWithPropertyMetadata = function (dm, propertyMetadata, directiveType) {
	        var inputs = [];
	        var outputs = [];
	        var host = {};
	        var queries = {};
	        collection_1.StringMapWrapper.forEach(propertyMetadata, function (metadata, propName) {
	            metadata.forEach(function (a) {
	                if (a instanceof core_1.InputMetadata) {
	                    if (lang_1.isPresent(a.bindingPropertyName)) {
	                        inputs.push(propName + ": " + a.bindingPropertyName);
	                    }
	                    else {
	                        inputs.push(propName);
	                    }
	                }
	                if (a instanceof core_1.OutputMetadata) {
	                    if (lang_1.isPresent(a.bindingPropertyName)) {
	                        outputs.push(propName + ": " + a.bindingPropertyName);
	                    }
	                    else {
	                        outputs.push(propName);
	                    }
	                }
	                if (a instanceof core_1.HostBindingMetadata) {
	                    if (lang_1.isPresent(a.hostPropertyName)) {
	                        host[("[" + a.hostPropertyName + "]")] = propName;
	                    }
	                    else {
	                        host[("[" + propName + "]")] = propName;
	                    }
	                }
	                if (a instanceof core_1.HostListenerMetadata) {
	                    var args = lang_1.isPresent(a.args) ? a.args.join(', ') : '';
	                    host[("(" + a.eventName + ")")] = propName + "(" + args + ")";
	                }
	                if (a instanceof core_1.ContentChildrenMetadata) {
	                    queries[propName] = a;
	                }
	                if (a instanceof core_1.ViewChildrenMetadata) {
	                    queries[propName] = a;
	                }
	                if (a instanceof core_1.ContentChildMetadata) {
	                    queries[propName] = a;
	                }
	                if (a instanceof core_1.ViewChildMetadata) {
	                    queries[propName] = a;
	                }
	            });
	        });
	        return this._merge(dm, inputs, outputs, host, queries, directiveType);
	    };
	    DirectiveResolver.prototype._merge = function (dm, inputs, outputs, host, queries, directiveType) {
	        var mergedInputs = lang_1.isPresent(dm.inputs) ? collection_1.ListWrapper.concat(dm.inputs, inputs) : inputs;
	        var mergedOutputs;
	        if (lang_1.isPresent(dm.outputs)) {
	            dm.outputs.forEach(function (propName) {
	                if (collection_1.ListWrapper.contains(outputs, propName)) {
	                    throw new exceptions_1.BaseException("Output event '" + propName + "' defined multiple times in '" + lang_1.stringify(directiveType) + "'");
	                }
	            });
	            mergedOutputs = collection_1.ListWrapper.concat(dm.outputs, outputs);
	        }
	        else {
	            mergedOutputs = outputs;
	        }
	        var mergedHost = lang_1.isPresent(dm.host) ? collection_1.StringMapWrapper.merge(dm.host, host) : host;
	        var mergedQueries = lang_1.isPresent(dm.queries) ? collection_1.StringMapWrapper.merge(dm.queries, queries) : queries;
	        if (dm instanceof core_1.ComponentMetadata) {
	            return new core_1.ComponentMetadata({
	                selector: dm.selector,
	                inputs: mergedInputs,
	                outputs: mergedOutputs,
	                host: mergedHost,
	                exportAs: dm.exportAs,
	                moduleId: dm.moduleId,
	                queries: mergedQueries,
	                changeDetection: dm.changeDetection,
	                providers: dm.providers,
	                viewProviders: dm.viewProviders
	            });
	        }
	        else {
	            return new core_1.DirectiveMetadata({
	                selector: dm.selector,
	                inputs: mergedInputs,
	                outputs: mergedOutputs,
	                host: mergedHost,
	                exportAs: dm.exportAs,
	                queries: mergedQueries,
	                providers: dm.providers
	            });
	        }
	    };
	    DirectiveResolver.decorators = [
	        { type: core_1.Injectable },
	    ];
	    DirectiveResolver.ctorParameters = [
	        { type: core_private_1.ReflectorReader, },
	    ];
	    return DirectiveResolver;
	}());
	exports.DirectiveResolver = DirectiveResolver;
	exports.CODEGEN_DIRECTIVE_RESOLVER = new DirectiveResolver(core_1.reflector);
	//# sourceMappingURL=directive_resolver.js.map

/***/ },
/* 89 */
[459, 3, 361],
/* 90 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var lang_1 = __webpack_require__(3);
	var HtmlTextAst = (function () {
	    function HtmlTextAst(value, sourceSpan) {
	        this.value = value;
	        this.sourceSpan = sourceSpan;
	    }
	    HtmlTextAst.prototype.visit = function (visitor, context) { return visitor.visitText(this, context); };
	    return HtmlTextAst;
	}());
	exports.HtmlTextAst = HtmlTextAst;
	var HtmlExpansionAst = (function () {
	    function HtmlExpansionAst(switchValue, type, cases, sourceSpan, switchValueSourceSpan) {
	        this.switchValue = switchValue;
	        this.type = type;
	        this.cases = cases;
	        this.sourceSpan = sourceSpan;
	        this.switchValueSourceSpan = switchValueSourceSpan;
	    }
	    HtmlExpansionAst.prototype.visit = function (visitor, context) {
	        return visitor.visitExpansion(this, context);
	    };
	    return HtmlExpansionAst;
	}());
	exports.HtmlExpansionAst = HtmlExpansionAst;
	var HtmlExpansionCaseAst = (function () {
	    function HtmlExpansionCaseAst(value, expression, sourceSpan, valueSourceSpan, expSourceSpan) {
	        this.value = value;
	        this.expression = expression;
	        this.sourceSpan = sourceSpan;
	        this.valueSourceSpan = valueSourceSpan;
	        this.expSourceSpan = expSourceSpan;
	    }
	    HtmlExpansionCaseAst.prototype.visit = function (visitor, context) {
	        return visitor.visitExpansionCase(this, context);
	    };
	    return HtmlExpansionCaseAst;
	}());
	exports.HtmlExpansionCaseAst = HtmlExpansionCaseAst;
	var HtmlAttrAst = (function () {
	    function HtmlAttrAst(name, value, sourceSpan) {
	        this.name = name;
	        this.value = value;
	        this.sourceSpan = sourceSpan;
	    }
	    HtmlAttrAst.prototype.visit = function (visitor, context) { return visitor.visitAttr(this, context); };
	    return HtmlAttrAst;
	}());
	exports.HtmlAttrAst = HtmlAttrAst;
	var HtmlElementAst = (function () {
	    function HtmlElementAst(name, attrs, children, sourceSpan, startSourceSpan, endSourceSpan) {
	        this.name = name;
	        this.attrs = attrs;
	        this.children = children;
	        this.sourceSpan = sourceSpan;
	        this.startSourceSpan = startSourceSpan;
	        this.endSourceSpan = endSourceSpan;
	    }
	    HtmlElementAst.prototype.visit = function (visitor, context) { return visitor.visitElement(this, context); };
	    return HtmlElementAst;
	}());
	exports.HtmlElementAst = HtmlElementAst;
	var HtmlCommentAst = (function () {
	    function HtmlCommentAst(value, sourceSpan) {
	        this.value = value;
	        this.sourceSpan = sourceSpan;
	    }
	    HtmlCommentAst.prototype.visit = function (visitor, context) { return visitor.visitComment(this, context); };
	    return HtmlCommentAst;
	}());
	exports.HtmlCommentAst = HtmlCommentAst;
	function htmlVisitAll(visitor, asts, context) {
	    if (context === void 0) { context = null; }
	    var result = [];
	    asts.forEach(function (ast) {
	        var astResult = ast.visit(visitor, context);
	        if (lang_1.isPresent(astResult)) {
	            result.push(astResult);
	        }
	    });
	    return result;
	}
	exports.htmlVisitAll = htmlVisitAll;
	//# sourceMappingURL=html_ast.js.map

/***/ },
/* 91 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var core_1 = __webpack_require__(1);
	var lang_1 = __webpack_require__(3);
	var collection_1 = __webpack_require__(7);
	var html_ast_1 = __webpack_require__(90);
	var html_lexer_1 = __webpack_require__(362);
	var parse_util_1 = __webpack_require__(56);
	var html_tags_1 = __webpack_require__(54);
	var HtmlTreeError = (function (_super) {
	    __extends(HtmlTreeError, _super);
	    function HtmlTreeError(elementName, span, msg) {
	        _super.call(this, span, msg);
	        this.elementName = elementName;
	    }
	    HtmlTreeError.create = function (elementName, span, msg) {
	        return new HtmlTreeError(elementName, span, msg);
	    };
	    return HtmlTreeError;
	}(parse_util_1.ParseError));
	exports.HtmlTreeError = HtmlTreeError;
	var HtmlParseTreeResult = (function () {
	    function HtmlParseTreeResult(rootNodes, errors) {
	        this.rootNodes = rootNodes;
	        this.errors = errors;
	    }
	    return HtmlParseTreeResult;
	}());
	exports.HtmlParseTreeResult = HtmlParseTreeResult;
	var HtmlParser = (function () {
	    function HtmlParser() {
	    }
	    HtmlParser.prototype.parse = function (sourceContent, sourceUrl, parseExpansionForms) {
	        if (parseExpansionForms === void 0) { parseExpansionForms = false; }
	        var tokensAndErrors = html_lexer_1.tokenizeHtml(sourceContent, sourceUrl, parseExpansionForms);
	        var treeAndErrors = new TreeBuilder(tokensAndErrors.tokens).build();
	        return new HtmlParseTreeResult(treeAndErrors.rootNodes, tokensAndErrors.errors
	            .concat(treeAndErrors.errors));
	    };
	    HtmlParser.decorators = [
	        { type: core_1.Injectable },
	    ];
	    return HtmlParser;
	}());
	exports.HtmlParser = HtmlParser;
	var TreeBuilder = (function () {
	    function TreeBuilder(tokens) {
	        this.tokens = tokens;
	        this.index = -1;
	        this.rootNodes = [];
	        this.errors = [];
	        this.elementStack = [];
	        this._advance();
	    }
	    TreeBuilder.prototype.build = function () {
	        while (this.peek.type !== html_lexer_1.HtmlTokenType.EOF) {
	            if (this.peek.type === html_lexer_1.HtmlTokenType.TAG_OPEN_START) {
	                this._consumeStartTag(this._advance());
	            }
	            else if (this.peek.type === html_lexer_1.HtmlTokenType.TAG_CLOSE) {
	                this._consumeEndTag(this._advance());
	            }
	            else if (this.peek.type === html_lexer_1.HtmlTokenType.CDATA_START) {
	                this._closeVoidElement();
	                this._consumeCdata(this._advance());
	            }
	            else if (this.peek.type === html_lexer_1.HtmlTokenType.COMMENT_START) {
	                this._closeVoidElement();
	                this._consumeComment(this._advance());
	            }
	            else if (this.peek.type === html_lexer_1.HtmlTokenType.TEXT ||
	                this.peek.type === html_lexer_1.HtmlTokenType.RAW_TEXT ||
	                this.peek.type === html_lexer_1.HtmlTokenType.ESCAPABLE_RAW_TEXT) {
	                this._closeVoidElement();
	                this._consumeText(this._advance());
	            }
	            else if (this.peek.type === html_lexer_1.HtmlTokenType.EXPANSION_FORM_START) {
	                this._consumeExpansion(this._advance());
	            }
	            else {
	                // Skip all other tokens...
	                this._advance();
	            }
	        }
	        return new HtmlParseTreeResult(this.rootNodes, this.errors);
	    };
	    TreeBuilder.prototype._advance = function () {
	        var prev = this.peek;
	        if (this.index < this.tokens.length - 1) {
	            // Note: there is always an EOF token at the end
	            this.index++;
	        }
	        this.peek = this.tokens[this.index];
	        return prev;
	    };
	    TreeBuilder.prototype._advanceIf = function (type) {
	        if (this.peek.type === type) {
	            return this._advance();
	        }
	        return null;
	    };
	    TreeBuilder.prototype._consumeCdata = function (startToken) {
	        this._consumeText(this._advance());
	        this._advanceIf(html_lexer_1.HtmlTokenType.CDATA_END);
	    };
	    TreeBuilder.prototype._consumeComment = function (token) {
	        var text = this._advanceIf(html_lexer_1.HtmlTokenType.RAW_TEXT);
	        this._advanceIf(html_lexer_1.HtmlTokenType.COMMENT_END);
	        var value = lang_1.isPresent(text) ? text.parts[0].trim() : null;
	        this._addToParent(new html_ast_1.HtmlCommentAst(value, token.sourceSpan));
	    };
	    TreeBuilder.prototype._consumeExpansion = function (token) {
	        var switchValue = this._advance();
	        var type = this._advance();
	        var cases = [];
	        // read =
	        while (this.peek.type === html_lexer_1.HtmlTokenType.EXPANSION_CASE_VALUE) {
	            var expCase = this._parseExpansionCase();
	            if (lang_1.isBlank(expCase))
	                return; // error
	            cases.push(expCase);
	        }
	        // read the final }
	        if (this.peek.type !== html_lexer_1.HtmlTokenType.EXPANSION_FORM_END) {
	            this.errors.push(HtmlTreeError.create(null, this.peek.sourceSpan, "Invalid expansion form. Missing '}'."));
	            return;
	        }
	        this._advance();
	        var mainSourceSpan = new parse_util_1.ParseSourceSpan(token.sourceSpan.start, this.peek.sourceSpan.end);
	        this._addToParent(new html_ast_1.HtmlExpansionAst(switchValue.parts[0], type.parts[0], cases, mainSourceSpan, switchValue.sourceSpan));
	    };
	    TreeBuilder.prototype._parseExpansionCase = function () {
	        var value = this._advance();
	        // read {
	        if (this.peek.type !== html_lexer_1.HtmlTokenType.EXPANSION_CASE_EXP_START) {
	            this.errors.push(HtmlTreeError.create(null, this.peek.sourceSpan, "Invalid expansion form. Missing '{'.,"));
	            return null;
	        }
	        // read until }
	        var start = this._advance();
	        var exp = this._collectExpansionExpTokens(start);
	        if (lang_1.isBlank(exp))
	            return null;
	        var end = this._advance();
	        exp.push(new html_lexer_1.HtmlToken(html_lexer_1.HtmlTokenType.EOF, [], end.sourceSpan));
	        // parse everything in between { and }
	        var parsedExp = new TreeBuilder(exp).build();
	        if (parsedExp.errors.length > 0) {
	            this.errors = this.errors.concat(parsedExp.errors);
	            return null;
	        }
	        var sourceSpan = new parse_util_1.ParseSourceSpan(value.sourceSpan.start, end.sourceSpan.end);
	        var expSourceSpan = new parse_util_1.ParseSourceSpan(start.sourceSpan.start, end.sourceSpan.end);
	        return new html_ast_1.HtmlExpansionCaseAst(value.parts[0], parsedExp.rootNodes, sourceSpan, value.sourceSpan, expSourceSpan);
	    };
	    TreeBuilder.prototype._collectExpansionExpTokens = function (start) {
	        var exp = [];
	        var expansionFormStack = [html_lexer_1.HtmlTokenType.EXPANSION_CASE_EXP_START];
	        while (true) {
	            if (this.peek.type === html_lexer_1.HtmlTokenType.EXPANSION_FORM_START ||
	                this.peek.type === html_lexer_1.HtmlTokenType.EXPANSION_CASE_EXP_START) {
	                expansionFormStack.push(this.peek.type);
	            }
	            if (this.peek.type === html_lexer_1.HtmlTokenType.EXPANSION_CASE_EXP_END) {
	                if (lastOnStack(expansionFormStack, html_lexer_1.HtmlTokenType.EXPANSION_CASE_EXP_START)) {
	                    expansionFormStack.pop();
	                    if (expansionFormStack.length == 0)
	                        return exp;
	                }
	                else {
	                    this.errors.push(HtmlTreeError.create(null, start.sourceSpan, "Invalid expansion form. Missing '}'."));
	                    return null;
	                }
	            }
	            if (this.peek.type === html_lexer_1.HtmlTokenType.EXPANSION_FORM_END) {
	                if (lastOnStack(expansionFormStack, html_lexer_1.HtmlTokenType.EXPANSION_FORM_START)) {
	                    expansionFormStack.pop();
	                }
	                else {
	                    this.errors.push(HtmlTreeError.create(null, start.sourceSpan, "Invalid expansion form. Missing '}'."));
	                    return null;
	                }
	            }
	            if (this.peek.type === html_lexer_1.HtmlTokenType.EOF) {
	                this.errors.push(HtmlTreeError.create(null, start.sourceSpan, "Invalid expansion form. Missing '}'."));
	                return null;
	            }
	            exp.push(this._advance());
	        }
	    };
	    TreeBuilder.prototype._consumeText = function (token) {
	        var text = token.parts[0];
	        if (text.length > 0 && text[0] == '\n') {
	            var parent_1 = this._getParentElement();
	            if (lang_1.isPresent(parent_1) && parent_1.children.length == 0 &&
	                html_tags_1.getHtmlTagDefinition(parent_1.name).ignoreFirstLf) {
	                text = text.substring(1);
	            }
	        }
	        if (text.length > 0) {
	            this._addToParent(new html_ast_1.HtmlTextAst(text, token.sourceSpan));
	        }
	    };
	    TreeBuilder.prototype._closeVoidElement = function () {
	        if (this.elementStack.length > 0) {
	            var el = collection_1.ListWrapper.last(this.elementStack);
	            if (html_tags_1.getHtmlTagDefinition(el.name).isVoid) {
	                this.elementStack.pop();
	            }
	        }
	    };
	    TreeBuilder.prototype._consumeStartTag = function (startTagToken) {
	        var prefix = startTagToken.parts[0];
	        var name = startTagToken.parts[1];
	        var attrs = [];
	        while (this.peek.type === html_lexer_1.HtmlTokenType.ATTR_NAME) {
	            attrs.push(this._consumeAttr(this._advance()));
	        }
	        var fullName = getElementFullName(prefix, name, this._getParentElement());
	        var selfClosing = false;
	        // Note: There could have been a tokenizer error
	        // so that we don't get a token for the end tag...
	        if (this.peek.type === html_lexer_1.HtmlTokenType.TAG_OPEN_END_VOID) {
	            this._advance();
	            selfClosing = true;
	            if (html_tags_1.getNsPrefix(fullName) == null && !html_tags_1.getHtmlTagDefinition(fullName).isVoid) {
	                this.errors.push(HtmlTreeError.create(fullName, startTagToken.sourceSpan, "Only void and foreign elements can be self closed \"" + startTagToken.parts[1] + "\""));
	            }
	        }
	        else if (this.peek.type === html_lexer_1.HtmlTokenType.TAG_OPEN_END) {
	            this._advance();
	            selfClosing = false;
	        }
	        var end = this.peek.sourceSpan.start;
	        var span = new parse_util_1.ParseSourceSpan(startTagToken.sourceSpan.start, end);
	        var el = new html_ast_1.HtmlElementAst(fullName, attrs, [], span, span, null);
	        this._pushElement(el);
	        if (selfClosing) {
	            this._popElement(fullName);
	            el.endSourceSpan = span;
	        }
	    };
	    TreeBuilder.prototype._pushElement = function (el) {
	        if (this.elementStack.length > 0) {
	            var parentEl = collection_1.ListWrapper.last(this.elementStack);
	            if (html_tags_1.getHtmlTagDefinition(parentEl.name).isClosedByChild(el.name)) {
	                this.elementStack.pop();
	            }
	        }
	        var tagDef = html_tags_1.getHtmlTagDefinition(el.name);
	        var parentEl = this._getParentElement();
	        if (tagDef.requireExtraParent(lang_1.isPresent(parentEl) ? parentEl.name : null)) {
	            var newParent = new html_ast_1.HtmlElementAst(tagDef.parentToAdd, [], [el], el.sourceSpan, el.startSourceSpan, el.endSourceSpan);
	            this._addToParent(newParent);
	            this.elementStack.push(newParent);
	            this.elementStack.push(el);
	        }
	        else {
	            this._addToParent(el);
	            this.elementStack.push(el);
	        }
	    };
	    TreeBuilder.prototype._consumeEndTag = function (endTagToken) {
	        var fullName = getElementFullName(endTagToken.parts[0], endTagToken.parts[1], this._getParentElement());
	        this._getParentElement().endSourceSpan = endTagToken.sourceSpan;
	        if (html_tags_1.getHtmlTagDefinition(fullName).isVoid) {
	            this.errors.push(HtmlTreeError.create(fullName, endTagToken.sourceSpan, "Void elements do not have end tags \"" + endTagToken.parts[1] + "\""));
	        }
	        else if (!this._popElement(fullName)) {
	            this.errors.push(HtmlTreeError.create(fullName, endTagToken.sourceSpan, "Unexpected closing tag \"" + endTagToken.parts[1] + "\""));
	        }
	    };
	    TreeBuilder.prototype._popElement = function (fullName) {
	        for (var stackIndex = this.elementStack.length - 1; stackIndex >= 0; stackIndex--) {
	            var el = this.elementStack[stackIndex];
	            if (el.name == fullName) {
	                collection_1.ListWrapper.splice(this.elementStack, stackIndex, this.elementStack.length - stackIndex);
	                return true;
	            }
	            if (!html_tags_1.getHtmlTagDefinition(el.name).closedByParent) {
	                return false;
	            }
	        }
	        return false;
	    };
	    TreeBuilder.prototype._consumeAttr = function (attrName) {
	        var fullName = html_tags_1.mergeNsAndName(attrName.parts[0], attrName.parts[1]);
	        var end = attrName.sourceSpan.end;
	        var value = '';
	        if (this.peek.type === html_lexer_1.HtmlTokenType.ATTR_VALUE) {
	            var valueToken = this._advance();
	            value = valueToken.parts[0];
	            end = valueToken.sourceSpan.end;
	        }
	        return new html_ast_1.HtmlAttrAst(fullName, value, new parse_util_1.ParseSourceSpan(attrName.sourceSpan.start, end));
	    };
	    TreeBuilder.prototype._getParentElement = function () {
	        return this.elementStack.length > 0 ? collection_1.ListWrapper.last(this.elementStack) : null;
	    };
	    TreeBuilder.prototype._addToParent = function (node) {
	        var parent = this._getParentElement();
	        if (lang_1.isPresent(parent)) {
	            parent.children.push(node);
	        }
	        else {
	            this.rootNodes.push(node);
	        }
	    };
	    return TreeBuilder;
	}());
	function getElementFullName(prefix, localName, parentElement) {
	    if (lang_1.isBlank(prefix)) {
	        prefix = html_tags_1.getHtmlTagDefinition(localName).implicitNamespacePrefix;
	        if (lang_1.isBlank(prefix) && lang_1.isPresent(parentElement)) {
	            prefix = html_tags_1.getNsPrefix(parentElement.name);
	        }
	    }
	    return html_tags_1.mergeNsAndName(prefix, localName);
	}
	function lastOnStack(stack, element) {
	    return stack.length > 0 && stack[stack.length - 1] === element;
	}
	//# sourceMappingURL=html_parser.js.map

/***/ },
/* 92 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var core_1 = __webpack_require__(1);
	var core_private_1 = __webpack_require__(13);
	var lang_1 = __webpack_require__(3);
	var exceptions_1 = __webpack_require__(8);
	function _isPipeMetadata(type) {
	    return type instanceof core_1.PipeMetadata;
	}
	var PipeResolver = (function () {
	    function PipeResolver(_reflector) {
	        if (lang_1.isPresent(_reflector)) {
	            this._reflector = _reflector;
	        }
	        else {
	            this._reflector = core_1.reflector;
	        }
	    }
	    /**
	     * Return {@link PipeMetadata} for a given `Type`.
	     */
	    PipeResolver.prototype.resolve = function (type) {
	        var metas = this._reflector.annotations(core_1.resolveForwardRef(type));
	        if (lang_1.isPresent(metas)) {
	            var annotation = metas.find(_isPipeMetadata);
	            if (lang_1.isPresent(annotation)) {
	                return annotation;
	            }
	        }
	        throw new exceptions_1.BaseException("No Pipe decorator found on " + lang_1.stringify(type));
	    };
	    PipeResolver.decorators = [
	        { type: core_1.Injectable },
	    ];
	    PipeResolver.ctorParameters = [
	        { type: core_private_1.ReflectorReader, },
	    ];
	    return PipeResolver;
	}());
	exports.PipeResolver = PipeResolver;
	exports.CODEGEN_PIPE_RESOLVER = new PipeResolver(core_1.reflector);
	//# sourceMappingURL=pipe_resolver.js.map

/***/ },
/* 93 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var collection_1 = __webpack_require__(7);
	var lang_1 = __webpack_require__(3);
	var exceptions_1 = __webpack_require__(8);
	var _EMPTY_ATTR_VALUE = '';
	// TODO: Can't use `const` here as
	// in Dart this is not transpiled into `final` yet...
	var _SELECTOR_REGEXP = lang_1.RegExpWrapper.create('(\\:not\\()|' +
	    '([-\\w]+)|' +
	    '(?:\\.([-\\w]+))|' +
	    '(?:\\[([-\\w*]+)(?:=([^\\]]*))?\\])|' +
	    '(\\))|' +
	    '(\\s*,\\s*)'); // ","
	/**
	 * A css selector contains an element name,
	 * css classes and attribute/value pairs with the purpose
	 * of selecting subsets out of them.
	 */
	var CssSelector = (function () {
	    function CssSelector() {
	        this.element = null;
	        this.classNames = [];
	        this.attrs = [];
	        this.notSelectors = [];
	    }
	    CssSelector.parse = function (selector) {
	        var results = [];
	        var _addResult = function (res, cssSel) {
	            if (cssSel.notSelectors.length > 0 && lang_1.isBlank(cssSel.element) &&
	                collection_1.ListWrapper.isEmpty(cssSel.classNames) && collection_1.ListWrapper.isEmpty(cssSel.attrs)) {
	                cssSel.element = "*";
	            }
	            res.push(cssSel);
	        };
	        var cssSelector = new CssSelector();
	        var matcher = lang_1.RegExpWrapper.matcher(_SELECTOR_REGEXP, selector);
	        var match;
	        var current = cssSelector;
	        var inNot = false;
	        while (lang_1.isPresent(match = lang_1.RegExpMatcherWrapper.next(matcher))) {
	            if (lang_1.isPresent(match[1])) {
	                if (inNot) {
	                    throw new exceptions_1.BaseException('Nesting :not is not allowed in a selector');
	                }
	                inNot = true;
	                current = new CssSelector();
	                cssSelector.notSelectors.push(current);
	            }
	            if (lang_1.isPresent(match[2])) {
	                current.setElement(match[2]);
	            }
	            if (lang_1.isPresent(match[3])) {
	                current.addClassName(match[3]);
	            }
	            if (lang_1.isPresent(match[4])) {
	                current.addAttribute(match[4], match[5]);
	            }
	            if (lang_1.isPresent(match[6])) {
	                inNot = false;
	                current = cssSelector;
	            }
	            if (lang_1.isPresent(match[7])) {
	                if (inNot) {
	                    throw new exceptions_1.BaseException('Multiple selectors in :not are not supported');
	                }
	                _addResult(results, cssSelector);
	                cssSelector = current = new CssSelector();
	            }
	        }
	        _addResult(results, cssSelector);
	        return results;
	    };
	    CssSelector.prototype.isElementSelector = function () {
	        return lang_1.isPresent(this.element) && collection_1.ListWrapper.isEmpty(this.classNames) &&
	            collection_1.ListWrapper.isEmpty(this.attrs) && this.notSelectors.length === 0;
	    };
	    CssSelector.prototype.setElement = function (element) {
	        if (element === void 0) { element = null; }
	        this.element = element;
	    };
	    /** Gets a template string for an element that matches the selector. */
	    CssSelector.prototype.getMatchingElementTemplate = function () {
	        var tagName = lang_1.isPresent(this.element) ? this.element : 'div';
	        var classAttr = this.classNames.length > 0 ? " class=\"" + this.classNames.join(' ') + "\"" : '';
	        var attrs = '';
	        for (var i = 0; i < this.attrs.length; i += 2) {
	            var attrName = this.attrs[i];
	            var attrValue = this.attrs[i + 1] !== '' ? "=\"" + this.attrs[i + 1] + "\"" : '';
	            attrs += " " + attrName + attrValue;
	        }
	        return "<" + tagName + classAttr + attrs + "></" + tagName + ">";
	    };
	    CssSelector.prototype.addAttribute = function (name, value) {
	        if (value === void 0) { value = _EMPTY_ATTR_VALUE; }
	        this.attrs.push(name);
	        if (lang_1.isPresent(value)) {
	            value = value.toLowerCase();
	        }
	        else {
	            value = _EMPTY_ATTR_VALUE;
	        }
	        this.attrs.push(value);
	    };
	    CssSelector.prototype.addClassName = function (name) { this.classNames.push(name.toLowerCase()); };
	    CssSelector.prototype.toString = function () {
	        var res = '';
	        if (lang_1.isPresent(this.element)) {
	            res += this.element;
	        }
	        if (lang_1.isPresent(this.classNames)) {
	            for (var i = 0; i < this.classNames.length; i++) {
	                res += '.' + this.classNames[i];
	            }
	        }
	        if (lang_1.isPresent(this.attrs)) {
	            for (var i = 0; i < this.attrs.length;) {
	                var attrName = this.attrs[i++];
	                var attrValue = this.attrs[i++];
	                res += '[' + attrName;
	                if (attrValue.length > 0) {
	                    res += '=' + attrValue;
	                }
	                res += ']';
	            }
	        }
	        this.notSelectors.forEach(function (notSelector) { return res += ":not(" + notSelector + ")"; });
	        return res;
	    };
	    return CssSelector;
	}());
	exports.CssSelector = CssSelector;
	/**
	 * Reads a list of CssSelectors and allows to calculate which ones
	 * are contained in a given CssSelector.
	 */
	var SelectorMatcher = (function () {
	    function SelectorMatcher() {
	        this._elementMap = new collection_1.Map();
	        this._elementPartialMap = new collection_1.Map();
	        this._classMap = new collection_1.Map();
	        this._classPartialMap = new collection_1.Map();
	        this._attrValueMap = new collection_1.Map();
	        this._attrValuePartialMap = new collection_1.Map();
	        this._listContexts = [];
	    }
	    SelectorMatcher.createNotMatcher = function (notSelectors) {
	        var notMatcher = new SelectorMatcher();
	        notMatcher.addSelectables(notSelectors, null);
	        return notMatcher;
	    };
	    SelectorMatcher.prototype.addSelectables = function (cssSelectors, callbackCtxt) {
	        var listContext = null;
	        if (cssSelectors.length > 1) {
	            listContext = new SelectorListContext(cssSelectors);
	            this._listContexts.push(listContext);
	        }
	        for (var i = 0; i < cssSelectors.length; i++) {
	            this._addSelectable(cssSelectors[i], callbackCtxt, listContext);
	        }
	    };
	    /**
	     * Add an object that can be found later on by calling `match`.
	     * @param cssSelector A css selector
	     * @param callbackCtxt An opaque object that will be given to the callback of the `match` function
	     */
	    SelectorMatcher.prototype._addSelectable = function (cssSelector, callbackCtxt, listContext) {
	        var matcher = this;
	        var element = cssSelector.element;
	        var classNames = cssSelector.classNames;
	        var attrs = cssSelector.attrs;
	        var selectable = new SelectorContext(cssSelector, callbackCtxt, listContext);
	        if (lang_1.isPresent(element)) {
	            var isTerminal = attrs.length === 0 && classNames.length === 0;
	            if (isTerminal) {
	                this._addTerminal(matcher._elementMap, element, selectable);
	            }
	            else {
	                matcher = this._addPartial(matcher._elementPartialMap, element);
	            }
	        }
	        if (lang_1.isPresent(classNames)) {
	            for (var index = 0; index < classNames.length; index++) {
	                var isTerminal = attrs.length === 0 && index === classNames.length - 1;
	                var className = classNames[index];
	                if (isTerminal) {
	                    this._addTerminal(matcher._classMap, className, selectable);
	                }
	                else {
	                    matcher = this._addPartial(matcher._classPartialMap, className);
	                }
	            }
	        }
	        if (lang_1.isPresent(attrs)) {
	            for (var index = 0; index < attrs.length;) {
	                var isTerminal = index === attrs.length - 2;
	                var attrName = attrs[index++];
	                var attrValue = attrs[index++];
	                if (isTerminal) {
	                    var terminalMap = matcher._attrValueMap;
	                    var terminalValuesMap = terminalMap.get(attrName);
	                    if (lang_1.isBlank(terminalValuesMap)) {
	                        terminalValuesMap = new collection_1.Map();
	                        terminalMap.set(attrName, terminalValuesMap);
	                    }
	                    this._addTerminal(terminalValuesMap, attrValue, selectable);
	                }
	                else {
	                    var parttialMap = matcher._attrValuePartialMap;
	                    var partialValuesMap = parttialMap.get(attrName);
	                    if (lang_1.isBlank(partialValuesMap)) {
	                        partialValuesMap = new collection_1.Map();
	                        parttialMap.set(attrName, partialValuesMap);
	                    }
	                    matcher = this._addPartial(partialValuesMap, attrValue);
	                }
	            }
	        }
	    };
	    SelectorMatcher.prototype._addTerminal = function (map, name, selectable) {
	        var terminalList = map.get(name);
	        if (lang_1.isBlank(terminalList)) {
	            terminalList = [];
	            map.set(name, terminalList);
	        }
	        terminalList.push(selectable);
	    };
	    SelectorMatcher.prototype._addPartial = function (map, name) {
	        var matcher = map.get(name);
	        if (lang_1.isBlank(matcher)) {
	            matcher = new SelectorMatcher();
	            map.set(name, matcher);
	        }
	        return matcher;
	    };
	    /**
	     * Find the objects that have been added via `addSelectable`
	     * whose css selector is contained in the given css selector.
	     * @param cssSelector A css selector
	     * @param matchedCallback This callback will be called with the object handed into `addSelectable`
	     * @return boolean true if a match was found
	    */
	    SelectorMatcher.prototype.match = function (cssSelector, matchedCallback) {
	        var result = false;
	        var element = cssSelector.element;
	        var classNames = cssSelector.classNames;
	        var attrs = cssSelector.attrs;
	        for (var i = 0; i < this._listContexts.length; i++) {
	            this._listContexts[i].alreadyMatched = false;
	        }
	        result = this._matchTerminal(this._elementMap, element, cssSelector, matchedCallback) || result;
	        result = this._matchPartial(this._elementPartialMap, element, cssSelector, matchedCallback) ||
	            result;
	        if (lang_1.isPresent(classNames)) {
	            for (var index = 0; index < classNames.length; index++) {
	                var className = classNames[index];
	                result =
	                    this._matchTerminal(this._classMap, className, cssSelector, matchedCallback) || result;
	                result =
	                    this._matchPartial(this._classPartialMap, className, cssSelector, matchedCallback) ||
	                        result;
	            }
	        }
	        if (lang_1.isPresent(attrs)) {
	            for (var index = 0; index < attrs.length;) {
	                var attrName = attrs[index++];
	                var attrValue = attrs[index++];
	                var terminalValuesMap = this._attrValueMap.get(attrName);
	                if (!lang_1.StringWrapper.equals(attrValue, _EMPTY_ATTR_VALUE)) {
	                    result = this._matchTerminal(terminalValuesMap, _EMPTY_ATTR_VALUE, cssSelector, matchedCallback) ||
	                        result;
	                }
	                result = this._matchTerminal(terminalValuesMap, attrValue, cssSelector, matchedCallback) ||
	                    result;
	                var partialValuesMap = this._attrValuePartialMap.get(attrName);
	                if (!lang_1.StringWrapper.equals(attrValue, _EMPTY_ATTR_VALUE)) {
	                    result = this._matchPartial(partialValuesMap, _EMPTY_ATTR_VALUE, cssSelector, matchedCallback) ||
	                        result;
	                }
	                result =
	                    this._matchPartial(partialValuesMap, attrValue, cssSelector, matchedCallback) || result;
	            }
	        }
	        return result;
	    };
	    /** @internal */
	    SelectorMatcher.prototype._matchTerminal = function (map, name, cssSelector, matchedCallback) {
	        if (lang_1.isBlank(map) || lang_1.isBlank(name)) {
	            return false;
	        }
	        var selectables = map.get(name);
	        var starSelectables = map.get("*");
	        if (lang_1.isPresent(starSelectables)) {
	            selectables = selectables.concat(starSelectables);
	        }
	        if (lang_1.isBlank(selectables)) {
	            return false;
	        }
	        var selectable;
	        var result = false;
	        for (var index = 0; index < selectables.length; index++) {
	            selectable = selectables[index];
	            result = selectable.finalize(cssSelector, matchedCallback) || result;
	        }
	        return result;
	    };
	    /** @internal */
	    SelectorMatcher.prototype._matchPartial = function (map, name, cssSelector, matchedCallback /*: (c: CssSelector, a: any) => void*/) {
	        if (lang_1.isBlank(map) || lang_1.isBlank(name)) {
	            return false;
	        }
	        var nestedSelector = map.get(name);
	        if (lang_1.isBlank(nestedSelector)) {
	            return false;
	        }
	        // TODO(perf): get rid of recursion and measure again
	        // TODO(perf): don't pass the whole selector into the recursion,
	        // but only the not processed parts
	        return nestedSelector.match(cssSelector, matchedCallback);
	    };
	    return SelectorMatcher;
	}());
	exports.SelectorMatcher = SelectorMatcher;
	var SelectorListContext = (function () {
	    function SelectorListContext(selectors) {
	        this.selectors = selectors;
	        this.alreadyMatched = false;
	    }
	    return SelectorListContext;
	}());
	exports.SelectorListContext = SelectorListContext;
	// Store context to pass back selector and context when a selector is matched
	var SelectorContext = (function () {
	    function SelectorContext(selector, cbContext, listContext) {
	        this.selector = selector;
	        this.cbContext = cbContext;
	        this.listContext = listContext;
	        this.notSelectors = selector.notSelectors;
	    }
	    SelectorContext.prototype.finalize = function (cssSelector, callback) {
	        var result = true;
	        if (this.notSelectors.length > 0 &&
	            (lang_1.isBlank(this.listContext) || !this.listContext.alreadyMatched)) {
	            var notMatcher = SelectorMatcher.createNotMatcher(this.notSelectors);
	            result = !notMatcher.match(cssSelector, null);
	        }
	        if (result && lang_1.isPresent(callback) &&
	            (lang_1.isBlank(this.listContext) || !this.listContext.alreadyMatched)) {
	            if (lang_1.isPresent(this.listContext)) {
	                this.listContext.alreadyMatched = true;
	            }
	            callback(this.selector, this.cbContext);
	        }
	        return result;
	    };
	    return SelectorContext;
	}());
	exports.SelectorContext = SelectorContext;
	//# sourceMappingURL=selector.js.map

/***/ },
/* 94 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	// Some of the code comes from WebComponents.JS
	// https://github.com/webcomponents/webcomponentsjs/blob/master/src/HTMLImports/path.js
	var lang_1 = __webpack_require__(3);
	var StyleWithImports = (function () {
	    function StyleWithImports(style, styleUrls) {
	        this.style = style;
	        this.styleUrls = styleUrls;
	    }
	    return StyleWithImports;
	}());
	exports.StyleWithImports = StyleWithImports;
	function isStyleUrlResolvable(url) {
	    if (lang_1.isBlank(url) || url.length === 0 || url[0] == '/')
	        return false;
	    var schemeMatch = lang_1.RegExpWrapper.firstMatch(_urlWithSchemaRe, url);
	    return lang_1.isBlank(schemeMatch) || schemeMatch[1] == 'package' || schemeMatch[1] == 'asset';
	}
	exports.isStyleUrlResolvable = isStyleUrlResolvable;
	/**
	 * Rewrites stylesheets by resolving and removing the @import urls that
	 * are either relative or don't have a `package:` scheme
	 */
	function extractStyleUrls(resolver, baseUrl, cssText) {
	    var foundUrls = [];
	    var modifiedCssText = lang_1.StringWrapper.replaceAllMapped(cssText, _cssImportRe, function (m) {
	        var url = lang_1.isPresent(m[1]) ? m[1] : m[2];
	        if (!isStyleUrlResolvable(url)) {
	            // Do not attempt to resolve non-package absolute URLs with URI scheme
	            return m[0];
	        }
	        foundUrls.push(resolver.resolve(baseUrl, url));
	        return '';
	    });
	    return new StyleWithImports(modifiedCssText, foundUrls);
	}
	exports.extractStyleUrls = extractStyleUrls;
	var _cssImportRe = /@import\s+(?:url\()?\s*(?:(?:['"]([^'"]*))|([^;\)\s]*))[^;]*;?/g;
	// TODO: can't use /^[^:/?#.]+:/g due to clang-format bug:
	//       https://github.com/angular/angular/issues/4596
	var _urlWithSchemaRe = /^([a-zA-Z\-\+\.]+):/g;
	//# sourceMappingURL=style_url_resolver.js.map

/***/ },
/* 95 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var core_1 = __webpack_require__(1);
	var core_private_1 = __webpack_require__(13);
	var collection_1 = __webpack_require__(7);
	var lang_1 = __webpack_require__(3);
	var exceptions_1 = __webpack_require__(8);
	var ast_1 = __webpack_require__(165);
	var parser_1 = __webpack_require__(167);
	var html_parser_1 = __webpack_require__(91);
	var html_tags_1 = __webpack_require__(54);
	var parse_util_1 = __webpack_require__(56);
	var template_ast_1 = __webpack_require__(24);
	var selector_1 = __webpack_require__(93);
	var element_schema_registry_1 = __webpack_require__(57);
	var template_preparser_1 = __webpack_require__(173);
	var style_url_resolver_1 = __webpack_require__(94);
	var html_ast_1 = __webpack_require__(90);
	var util_1 = __webpack_require__(25);
	var identifiers_1 = __webpack_require__(17);
	var provider_parser_1 = __webpack_require__(371);
	// Group 1 = "bind-"
	// Group 2 = "var-"
	// Group 3 = "let-"
	// Group 4 = "ref-/#"
	// Group 5 = "on-"
	// Group 6 = "bindon-"
	// Group 7 = the identifier after "bind-", "var-/#", or "on-"
	// Group 8 = identifier inside [()]
	// Group 9 = identifier inside []
	// Group 10 = identifier inside ()
	var BIND_NAME_REGEXP = /^(?:(?:(?:(bind-)|(var-)|(let-)|(ref-|#)|(on-)|(bindon-))(.+))|\[\(([^\)]+)\)\]|\[([^\]]+)\]|\(([^\)]+)\))$/g;
	var TEMPLATE_ELEMENT = 'template';
	var TEMPLATE_ATTR = 'template';
	var TEMPLATE_ATTR_PREFIX = '*';
	var CLASS_ATTR = 'class';
	var PROPERTY_PARTS_SEPARATOR = '.';
	var ATTRIBUTE_PREFIX = 'attr';
	var CLASS_PREFIX = 'class';
	var STYLE_PREFIX = 'style';
	var TEXT_CSS_SELECTOR = selector_1.CssSelector.parse('*')[0];
	/**
	 * Provides an array of {@link TemplateAstVisitor}s which will be used to transform
	 * parsed templates before compilation is invoked, allowing custom expression syntax
	 * and other advanced transformations.
	 *
	 * This is currently an internal-only feature and not meant for general use.
	 */
	exports.TEMPLATE_TRANSFORMS = new core_1.OpaqueToken('TemplateTransforms');
	var TemplateParseError = (function (_super) {
	    __extends(TemplateParseError, _super);
	    function TemplateParseError(message, span, level) {
	        _super.call(this, span, message, level);
	    }
	    return TemplateParseError;
	}(parse_util_1.ParseError));
	exports.TemplateParseError = TemplateParseError;
	var TemplateParseResult = (function () {
	    function TemplateParseResult(templateAst, errors) {
	        this.templateAst = templateAst;
	        this.errors = errors;
	    }
	    return TemplateParseResult;
	}());
	exports.TemplateParseResult = TemplateParseResult;
	var TemplateParser = (function () {
	    function TemplateParser(_exprParser, _schemaRegistry, _htmlParser, _console, transforms) {
	        this._exprParser = _exprParser;
	        this._schemaRegistry = _schemaRegistry;
	        this._htmlParser = _htmlParser;
	        this._console = _console;
	        this.transforms = transforms;
	    }
	    TemplateParser.prototype.parse = function (component, template, directives, pipes, templateUrl) {
	        var result = this.tryParse(component, template, directives, pipes, templateUrl);
	        var warnings = result.errors.filter(function (error) { return error.level === parse_util_1.ParseErrorLevel.WARNING; });
	        var errors = result.errors.filter(function (error) { return error.level === parse_util_1.ParseErrorLevel.FATAL; });
	        if (warnings.length > 0) {
	            this._console.warn("Template parse warnings:\n" + warnings.join('\n'));
	        }
	        if (errors.length > 0) {
	            var errorString = errors.join('\n');
	            throw new exceptions_1.BaseException("Template parse errors:\n" + errorString);
	        }
	        return result.templateAst;
	    };
	    TemplateParser.prototype.tryParse = function (component, template, directives, pipes, templateUrl) {
	        var htmlAstWithErrors = this._htmlParser.parse(template, templateUrl);
	        var errors = htmlAstWithErrors.errors;
	        var result;
	        if (htmlAstWithErrors.rootNodes.length > 0) {
	            var uniqDirectives = removeDuplicates(directives);
	            var uniqPipes = removeDuplicates(pipes);
	            var providerViewContext = new provider_parser_1.ProviderViewContext(component, htmlAstWithErrors.rootNodes[0].sourceSpan);
	            var parseVisitor = new TemplateParseVisitor(providerViewContext, uniqDirectives, uniqPipes, this._exprParser, this._schemaRegistry);
	            result = html_ast_1.htmlVisitAll(parseVisitor, htmlAstWithErrors.rootNodes, EMPTY_ELEMENT_CONTEXT);
	            errors = errors.concat(parseVisitor.errors).concat(providerViewContext.errors);
	        }
	        else {
	            result = [];
	        }
	        if (errors.length > 0) {
	            return new TemplateParseResult(result, errors);
	        }
	        if (lang_1.isPresent(this.transforms)) {
	            this.transforms.forEach(function (transform) { result = template_ast_1.templateVisitAll(transform, result); });
	        }
	        return new TemplateParseResult(result, errors);
	    };
	    TemplateParser.decorators = [
	        { type: core_1.Injectable },
	    ];
	    TemplateParser.ctorParameters = [
	        { type: parser_1.Parser, },
	        { type: element_schema_registry_1.ElementSchemaRegistry, },
	        { type: html_parser_1.HtmlParser, },
	        { type: core_private_1.Console, },
	        { type: undefined, decorators: [{ type: core_1.Optional }, { type: core_1.Inject, args: [exports.TEMPLATE_TRANSFORMS,] },] },
	    ];
	    return TemplateParser;
	}());
	exports.TemplateParser = TemplateParser;
	var TemplateParseVisitor = (function () {
	    function TemplateParseVisitor(providerViewContext, directives, pipes, _exprParser, _schemaRegistry) {
	        var _this = this;
	        this.providerViewContext = providerViewContext;
	        this._exprParser = _exprParser;
	        this._schemaRegistry = _schemaRegistry;
	        this.errors = [];
	        this.directivesIndex = new Map();
	        this.ngContentCount = 0;
	        this.selectorMatcher = new selector_1.SelectorMatcher();
	        collection_1.ListWrapper.forEachWithIndex(directives, function (directive, index) {
	            var selector = selector_1.CssSelector.parse(directive.selector);
	            _this.selectorMatcher.addSelectables(selector, directive);
	            _this.directivesIndex.set(directive, index);
	        });
	        this.pipesByName = new Map();
	        pipes.forEach(function (pipe) { return _this.pipesByName.set(pipe.name, pipe); });
	    }
	    TemplateParseVisitor.prototype._reportError = function (message, sourceSpan, level) {
	        if (level === void 0) { level = parse_util_1.ParseErrorLevel.FATAL; }
	        this.errors.push(new TemplateParseError(message, sourceSpan, level));
	    };
	    TemplateParseVisitor.prototype._parseInterpolation = function (value, sourceSpan) {
	        var sourceInfo = sourceSpan.start.toString();
	        try {
	            var ast = this._exprParser.parseInterpolation(value, sourceInfo);
	            this._checkPipes(ast, sourceSpan);
	            if (lang_1.isPresent(ast) &&
	                ast.ast.expressions.length > core_private_1.MAX_INTERPOLATION_VALUES) {
	                throw new exceptions_1.BaseException("Only support at most " + core_private_1.MAX_INTERPOLATION_VALUES + " interpolation values!");
	            }
	            return ast;
	        }
	        catch (e) {
	            this._reportError("" + e, sourceSpan);
	            return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);
	        }
	    };
	    TemplateParseVisitor.prototype._parseAction = function (value, sourceSpan) {
	        var sourceInfo = sourceSpan.start.toString();
	        try {
	            var ast = this._exprParser.parseAction(value, sourceInfo);
	            this._checkPipes(ast, sourceSpan);
	            return ast;
	        }
	        catch (e) {
	            this._reportError("" + e, sourceSpan);
	            return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);
	        }
	    };
	    TemplateParseVisitor.prototype._parseBinding = function (value, sourceSpan) {
	        var sourceInfo = sourceSpan.start.toString();
	        try {
	            var ast = this._exprParser.parseBinding(value, sourceInfo);
	            this._checkPipes(ast, sourceSpan);
	            return ast;
	        }
	        catch (e) {
	            this._reportError("" + e, sourceSpan);
	            return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);
	        }
	    };
	    TemplateParseVisitor.prototype._parseTemplateBindings = function (value, sourceSpan) {
	        var _this = this;
	        var sourceInfo = sourceSpan.start.toString();
	        try {
	            var bindingsResult = this._exprParser.parseTemplateBindings(value, sourceInfo);
	            bindingsResult.templateBindings.forEach(function (binding) {
	                if (lang_1.isPresent(binding.expression)) {
	                    _this._checkPipes(binding.expression, sourceSpan);
	                }
	            });
	            bindingsResult.warnings.forEach(function (warning) { _this._reportError(warning, sourceSpan, parse_util_1.ParseErrorLevel.WARNING); });
	            return bindingsResult.templateBindings;
	        }
	        catch (e) {
	            this._reportError("" + e, sourceSpan);
	            return [];
	        }
	    };
	    TemplateParseVisitor.prototype._checkPipes = function (ast, sourceSpan) {
	        var _this = this;
	        if (lang_1.isPresent(ast)) {
	            var collector = new PipeCollector();
	            ast.visit(collector);
	            collector.pipes.forEach(function (pipeName) {
	                if (!_this.pipesByName.has(pipeName)) {
	                    _this._reportError("The pipe '" + pipeName + "' could not be found", sourceSpan);
	                }
	            });
	        }
	    };
	    TemplateParseVisitor.prototype.visitExpansion = function (ast, context) { return null; };
	    TemplateParseVisitor.prototype.visitExpansionCase = function (ast, context) { return null; };
	    TemplateParseVisitor.prototype.visitText = function (ast, parent) {
	        var ngContentIndex = parent.findNgContentIndex(TEXT_CSS_SELECTOR);
	        var expr = this._parseInterpolation(ast.value, ast.sourceSpan);
	        if (lang_1.isPresent(expr)) {
	            return new template_ast_1.BoundTextAst(expr, ngContentIndex, ast.sourceSpan);
	        }
	        else {
	            return new template_ast_1.TextAst(ast.value, ngContentIndex, ast.sourceSpan);
	        }
	    };
	    TemplateParseVisitor.prototype.visitAttr = function (ast, contex) {
	        return new template_ast_1.AttrAst(ast.name, ast.value, ast.sourceSpan);
	    };
	    TemplateParseVisitor.prototype.visitComment = function (ast, context) { return null; };
	    TemplateParseVisitor.prototype.visitElement = function (element, parent) {
	        var _this = this;
	        var nodeName = element.name;
	        var preparsedElement = template_preparser_1.preparseElement(element);
	        if (preparsedElement.type === template_preparser_1.PreparsedElementType.SCRIPT ||
	            preparsedElement.type === template_preparser_1.PreparsedElementType.STYLE) {
	            // Skipping <script> for security reasons
	            // Skipping <style> as we already processed them
	            // in the StyleCompiler
	            return null;
	        }
	        if (preparsedElement.type === template_preparser_1.PreparsedElementType.STYLESHEET &&
	            style_url_resolver_1.isStyleUrlResolvable(preparsedElement.hrefAttr)) {
	            // Skipping stylesheets with either relative urls or package scheme as we already processed
	            // them in the StyleCompiler
	            return null;
	        }
	        var matchableAttrs = [];
	        var elementOrDirectiveProps = [];
	        var elementOrDirectiveRefs = [];
	        var elementVars = [];
	        var events = [];
	        var templateElementOrDirectiveProps = [];
	        var templateMatchableAttrs = [];
	        var templateElementVars = [];
	        var hasInlineTemplates = false;
	        var attrs = [];
	        var lcElName = html_tags_1.splitNsName(nodeName.toLowerCase())[1];
	        var isTemplateElement = lcElName == TEMPLATE_ELEMENT;
	        element.attrs.forEach(function (attr) {
	            var hasBinding = _this._parseAttr(isTemplateElement, attr, matchableAttrs, elementOrDirectiveProps, events, elementOrDirectiveRefs, elementVars);
	            var hasTemplateBinding = _this._parseInlineTemplateBinding(attr, templateMatchableAttrs, templateElementOrDirectiveProps, templateElementVars);
	            if (!hasBinding && !hasTemplateBinding) {
	                // don't include the bindings as attributes as well in the AST
	                attrs.push(_this.visitAttr(attr, null));
	                matchableAttrs.push([attr.name, attr.value]);
	            }
	            if (hasTemplateBinding) {
	                hasInlineTemplates = true;
	            }
	        });
	        var elementCssSelector = createElementCssSelector(nodeName, matchableAttrs);
	        var directiveMetas = this._parseDirectives(this.selectorMatcher, elementCssSelector);
	        var references = [];
	        var directiveAsts = this._createDirectiveAsts(isTemplateElement, element.name, directiveMetas, elementOrDirectiveProps, elementOrDirectiveRefs, element.sourceSpan, references);
	        var elementProps = this._createElementPropertyAsts(element.name, elementOrDirectiveProps, directiveAsts);
	        var isViewRoot = parent.isTemplateElement || hasInlineTemplates;
	        var providerContext = new provider_parser_1.ProviderElementContext(this.providerViewContext, parent.providerContext, isViewRoot, directiveAsts, attrs, references, element.sourceSpan);
	        var children = html_ast_1.htmlVisitAll(preparsedElement.nonBindable ? NON_BINDABLE_VISITOR : this, element.children, ElementContext.create(isTemplateElement, directiveAsts, isTemplateElement ? parent.providerContext : providerContext));
	        providerContext.afterElement();
	        // Override the actual selector when the `ngProjectAs` attribute is provided
	        var projectionSelector = lang_1.isPresent(preparsedElement.projectAs) ?
	            selector_1.CssSelector.parse(preparsedElement.projectAs)[0] :
	            elementCssSelector;
	        var ngContentIndex = parent.findNgContentIndex(projectionSelector);
	        var parsedElement;
	        if (preparsedElement.type === template_preparser_1.PreparsedElementType.NG_CONTENT) {
	            if (lang_1.isPresent(element.children) && element.children.length > 0) {
	                this._reportError("<ng-content> element cannot have content. <ng-content> must be immediately followed by </ng-content>", element.sourceSpan);
	            }
	            parsedElement = new template_ast_1.NgContentAst(this.ngContentCount++, hasInlineTemplates ? null : ngContentIndex, element.sourceSpan);
	        }
	        else if (isTemplateElement) {
	            this._assertAllEventsPublishedByDirectives(directiveAsts, events);
	            this._assertNoComponentsNorElementBindingsOnTemplate(directiveAsts, elementProps, element.sourceSpan);
	            parsedElement = new template_ast_1.EmbeddedTemplateAst(attrs, events, references, elementVars, providerContext.transformedDirectiveAsts, providerContext.transformProviders, providerContext.transformedHasViewContainer, children, hasInlineTemplates ? null : ngContentIndex, element.sourceSpan);
	        }
	        else {
	            this._assertOnlyOneComponent(directiveAsts, element.sourceSpan);
	            var ngContentIndex_1 = hasInlineTemplates ? null : parent.findNgContentIndex(projectionSelector);
	            parsedElement = new template_ast_1.ElementAst(nodeName, attrs, elementProps, events, references, providerContext.transformedDirectiveAsts, providerContext.transformProviders, providerContext.transformedHasViewContainer, children, hasInlineTemplates ? null : ngContentIndex_1, element.sourceSpan);
	        }
	        if (hasInlineTemplates) {
	            var templateCssSelector = createElementCssSelector(TEMPLATE_ELEMENT, templateMatchableAttrs);
	            var templateDirectiveMetas = this._parseDirectives(this.selectorMatcher, templateCssSelector);
	            var templateDirectiveAsts = this._createDirectiveAsts(true, element.name, templateDirectiveMetas, templateElementOrDirectiveProps, [], element.sourceSpan, []);
	            var templateElementProps = this._createElementPropertyAsts(element.name, templateElementOrDirectiveProps, templateDirectiveAsts);
	            this._assertNoComponentsNorElementBindingsOnTemplate(templateDirectiveAsts, templateElementProps, element.sourceSpan);
	            var templateProviderContext = new provider_parser_1.ProviderElementContext(this.providerViewContext, parent.providerContext, parent.isTemplateElement, templateDirectiveAsts, [], [], element.sourceSpan);
	            templateProviderContext.afterElement();
	            parsedElement = new template_ast_1.EmbeddedTemplateAst([], [], [], templateElementVars, templateProviderContext.transformedDirectiveAsts, templateProviderContext.transformProviders, templateProviderContext.transformedHasViewContainer, [parsedElement], ngContentIndex, element.sourceSpan);
	        }
	        return parsedElement;
	    };
	    TemplateParseVisitor.prototype._parseInlineTemplateBinding = function (attr, targetMatchableAttrs, targetProps, targetVars) {
	        var templateBindingsSource = null;
	        if (attr.name == TEMPLATE_ATTR) {
	            templateBindingsSource = attr.value;
	        }
	        else if (attr.name.startsWith(TEMPLATE_ATTR_PREFIX)) {
	            var key = attr.name.substring(TEMPLATE_ATTR_PREFIX.length); // remove the star
	            templateBindingsSource = (attr.value.length == 0) ? key : key + ' ' + attr.value;
	        }
	        if (lang_1.isPresent(templateBindingsSource)) {
	            var bindings = this._parseTemplateBindings(templateBindingsSource, attr.sourceSpan);
	            for (var i = 0; i < bindings.length; i++) {
	                var binding = bindings[i];
	                if (binding.keyIsVar) {
	                    targetVars.push(new template_ast_1.VariableAst(binding.key, binding.name, attr.sourceSpan));
	                }
	                else if (lang_1.isPresent(binding.expression)) {
	                    this._parsePropertyAst(binding.key, binding.expression, attr.sourceSpan, targetMatchableAttrs, targetProps);
	                }
	                else {
	                    targetMatchableAttrs.push([binding.key, '']);
	                    this._parseLiteralAttr(binding.key, null, attr.sourceSpan, targetProps);
	                }
	            }
	            return true;
	        }
	        return false;
	    };
	    TemplateParseVisitor.prototype._parseAttr = function (isTemplateElement, attr, targetMatchableAttrs, targetProps, targetEvents, targetRefs, targetVars) {
	        var attrName = this._normalizeAttributeName(attr.name);
	        var attrValue = attr.value;
	        var bindParts = lang_1.RegExpWrapper.firstMatch(BIND_NAME_REGEXP, attrName);
	        var hasBinding = false;
	        if (lang_1.isPresent(bindParts)) {
	            hasBinding = true;
	            if (lang_1.isPresent(bindParts[1])) {
	                this._parseProperty(bindParts[7], attrValue, attr.sourceSpan, targetMatchableAttrs, targetProps);
	            }
	            else if (lang_1.isPresent(bindParts[2])) {
	                var identifier = bindParts[7];
	                if (isTemplateElement) {
	                    this._reportError("\"var-\" on <template> elements is deprecated. Use \"let-\" instead!", attr.sourceSpan, parse_util_1.ParseErrorLevel.WARNING);
	                    this._parseVariable(identifier, attrValue, attr.sourceSpan, targetVars);
	                }
	                else {
	                    this._reportError("\"var-\" on non <template> elements is deprecated. Use \"ref-\" instead!", attr.sourceSpan, parse_util_1.ParseErrorLevel.WARNING);
	                    this._parseReference(identifier, attrValue, attr.sourceSpan, targetRefs);
	                }
	            }
	            else if (lang_1.isPresent(bindParts[3])) {
	                if (isTemplateElement) {
	                    var identifier = bindParts[7];
	                    this._parseVariable(identifier, attrValue, attr.sourceSpan, targetVars);
	                }
	                else {
	                    this._reportError("\"let-\" is only supported on template elements.", attr.sourceSpan);
	                }
	            }
	            else if (lang_1.isPresent(bindParts[4])) {
	                var identifier = bindParts[7];
	                this._parseReference(identifier, attrValue, attr.sourceSpan, targetRefs);
	            }
	            else if (lang_1.isPresent(bindParts[5])) {
	                this._parseEvent(bindParts[7], attrValue, attr.sourceSpan, targetMatchableAttrs, targetEvents);
	            }
	            else if (lang_1.isPresent(bindParts[6])) {
	                this._parseProperty(bindParts[7], attrValue, attr.sourceSpan, targetMatchableAttrs, targetProps);
	                this._parseAssignmentEvent(bindParts[7], attrValue, attr.sourceSpan, targetMatchableAttrs, targetEvents);
	            }
	            else if (lang_1.isPresent(bindParts[8])) {
	                this._parseProperty(bindParts[8], attrValue, attr.sourceSpan, targetMatchableAttrs, targetProps);
	                this._parseAssignmentEvent(bindParts[8], attrValue, attr.sourceSpan, targetMatchableAttrs, targetEvents);
	            }
	            else if (lang_1.isPresent(bindParts[9])) {
	                this._parseProperty(bindParts[9], attrValue, attr.sourceSpan, targetMatchableAttrs, targetProps);
	            }
	            else if (lang_1.isPresent(bindParts[10])) {
	                this._parseEvent(bindParts[10], attrValue, attr.sourceSpan, targetMatchableAttrs, targetEvents);
	            }
	        }
	        else {
	            hasBinding = this._parsePropertyInterpolation(attrName, attrValue, attr.sourceSpan, targetMatchableAttrs, targetProps);
	        }
	        if (!hasBinding) {
	            this._parseLiteralAttr(attrName, attrValue, attr.sourceSpan, targetProps);
	        }
	        return hasBinding;
	    };
	    TemplateParseVisitor.prototype._normalizeAttributeName = function (attrName) {
	        return attrName.toLowerCase().startsWith('data-') ? attrName.substring(5) : attrName;
	    };
	    TemplateParseVisitor.prototype._parseVariable = function (identifier, value, sourceSpan, targetVars) {
	        if (identifier.indexOf('-') > -1) {
	            this._reportError("\"-\" is not allowed in variable names", sourceSpan);
	        }
	        targetVars.push(new template_ast_1.VariableAst(identifier, value, sourceSpan));
	    };
	    TemplateParseVisitor.prototype._parseReference = function (identifier, value, sourceSpan, targetRefs) {
	        if (identifier.indexOf('-') > -1) {
	            this._reportError("\"-\" is not allowed in reference names", sourceSpan);
	        }
	        targetRefs.push(new ElementOrDirectiveRef(identifier, value, sourceSpan));
	    };
	    TemplateParseVisitor.prototype._parseProperty = function (name, expression, sourceSpan, targetMatchableAttrs, targetProps) {
	        this._parsePropertyAst(name, this._parseBinding(expression, sourceSpan), sourceSpan, targetMatchableAttrs, targetProps);
	    };
	    TemplateParseVisitor.prototype._parsePropertyInterpolation = function (name, value, sourceSpan, targetMatchableAttrs, targetProps) {
	        var expr = this._parseInterpolation(value, sourceSpan);
	        if (lang_1.isPresent(expr)) {
	            this._parsePropertyAst(name, expr, sourceSpan, targetMatchableAttrs, targetProps);
	            return true;
	        }
	        return false;
	    };
	    TemplateParseVisitor.prototype._parsePropertyAst = function (name, ast, sourceSpan, targetMatchableAttrs, targetProps) {
	        targetMatchableAttrs.push([name, ast.source]);
	        targetProps.push(new BoundElementOrDirectiveProperty(name, ast, false, sourceSpan));
	    };
	    TemplateParseVisitor.prototype._parseAssignmentEvent = function (name, expression, sourceSpan, targetMatchableAttrs, targetEvents) {
	        this._parseEvent(name + "Change", expression + "=$event", sourceSpan, targetMatchableAttrs, targetEvents);
	    };
	    TemplateParseVisitor.prototype._parseEvent = function (name, expression, sourceSpan, targetMatchableAttrs, targetEvents) {
	        // long format: 'target: eventName'
	        var parts = util_1.splitAtColon(name, [null, name]);
	        var target = parts[0];
	        var eventName = parts[1];
	        var ast = this._parseAction(expression, sourceSpan);
	        targetMatchableAttrs.push([name, ast.source]);
	        targetEvents.push(new template_ast_1.BoundEventAst(eventName, target, ast, sourceSpan));
	        // Don't detect directives for event names for now,
	        // so don't add the event name to the matchableAttrs
	    };
	    TemplateParseVisitor.prototype._parseLiteralAttr = function (name, value, sourceSpan, targetProps) {
	        targetProps.push(new BoundElementOrDirectiveProperty(name, this._exprParser.wrapLiteralPrimitive(value, ''), true, sourceSpan));
	    };
	    TemplateParseVisitor.prototype._parseDirectives = function (selectorMatcher, elementCssSelector) {
	        var _this = this;
	        // Need to sort the directives so that we get consistent results throughout,
	        // as selectorMatcher uses Maps inside.
	        // Also dedupe directives as they might match more than one time!
	        var directives = collection_1.ListWrapper.createFixedSize(this.directivesIndex.size);
	        selectorMatcher.match(elementCssSelector, function (selector, directive) {
	            directives[_this.directivesIndex.get(directive)] = directive;
	        });
	        return directives.filter(function (dir) { return lang_1.isPresent(dir); });
	    };
	    TemplateParseVisitor.prototype._createDirectiveAsts = function (isTemplateElement, elementName, directives, props, elementOrDirectiveRefs, sourceSpan, targetReferences) {
	        var _this = this;
	        var matchedReferences = new Set();
	        var component = null;
	        var directiveAsts = directives.map(function (directive) {
	            if (directive.isComponent) {
	                component = directive;
	            }
	            var hostProperties = [];
	            var hostEvents = [];
	            var directiveProperties = [];
	            _this._createDirectiveHostPropertyAsts(elementName, directive.hostProperties, sourceSpan, hostProperties);
	            _this._createDirectiveHostEventAsts(directive.hostListeners, sourceSpan, hostEvents);
	            _this._createDirectivePropertyAsts(directive.inputs, props, directiveProperties);
	            elementOrDirectiveRefs.forEach(function (elOrDirRef) {
	                if ((elOrDirRef.value.length === 0 && directive.isComponent) ||
	                    (directive.exportAs == elOrDirRef.value)) {
	                    targetReferences.push(new template_ast_1.ReferenceAst(elOrDirRef.name, identifiers_1.identifierToken(directive.type), elOrDirRef.sourceSpan));
	                    matchedReferences.add(elOrDirRef.name);
	                }
	            });
	            return new template_ast_1.DirectiveAst(directive, directiveProperties, hostProperties, hostEvents, sourceSpan);
	        });
	        elementOrDirectiveRefs.forEach(function (elOrDirRef) {
	            if (elOrDirRef.value.length > 0) {
	                if (!collection_1.SetWrapper.has(matchedReferences, elOrDirRef.name)) {
	                    _this._reportError("There is no directive with \"exportAs\" set to \"" + elOrDirRef.value + "\"", elOrDirRef.sourceSpan);
	                }
	                ;
	            }
	            else if (lang_1.isBlank(component)) {
	                var refToken = null;
	                if (isTemplateElement) {
	                    refToken = identifiers_1.identifierToken(identifiers_1.Identifiers.TemplateRef);
	                }
	                targetReferences.push(new template_ast_1.ReferenceAst(elOrDirRef.name, refToken, elOrDirRef.sourceSpan));
	            }
	        }); // fix syntax highlighting issue: `
	        return directiveAsts;
	    };
	    TemplateParseVisitor.prototype._createDirectiveHostPropertyAsts = function (elementName, hostProps, sourceSpan, targetPropertyAsts) {
	        var _this = this;
	        if (lang_1.isPresent(hostProps)) {
	            collection_1.StringMapWrapper.forEach(hostProps, function (expression, propName) {
	                var exprAst = _this._parseBinding(expression, sourceSpan);
	                targetPropertyAsts.push(_this._createElementPropertyAst(elementName, propName, exprAst, sourceSpan));
	            });
	        }
	    };
	    TemplateParseVisitor.prototype._createDirectiveHostEventAsts = function (hostListeners, sourceSpan, targetEventAsts) {
	        var _this = this;
	        if (lang_1.isPresent(hostListeners)) {
	            collection_1.StringMapWrapper.forEach(hostListeners, function (expression, propName) {
	                _this._parseEvent(propName, expression, sourceSpan, [], targetEventAsts);
	            });
	        }
	    };
	    TemplateParseVisitor.prototype._createDirectivePropertyAsts = function (directiveProperties, boundProps, targetBoundDirectiveProps) {
	        if (lang_1.isPresent(directiveProperties)) {
	            var boundPropsByName = new Map();
	            boundProps.forEach(function (boundProp) {
	                var prevValue = boundPropsByName.get(boundProp.name);
	                if (lang_1.isBlank(prevValue) || prevValue.isLiteral) {
	                    // give [a]="b" a higher precedence than a="b" on the same element
	                    boundPropsByName.set(boundProp.name, boundProp);
	                }
	            });
	            collection_1.StringMapWrapper.forEach(directiveProperties, function (elProp, dirProp) {
	                var boundProp = boundPropsByName.get(elProp);
	                // Bindings are optional, so this binding only needs to be set up if an expression is given.
	                if (lang_1.isPresent(boundProp)) {
	                    targetBoundDirectiveProps.push(new template_ast_1.BoundDirectivePropertyAst(dirProp, boundProp.name, boundProp.expression, boundProp.sourceSpan));
	                }
	            });
	        }
	    };
	    TemplateParseVisitor.prototype._createElementPropertyAsts = function (elementName, props, directives) {
	        var _this = this;
	        var boundElementProps = [];
	        var boundDirectivePropsIndex = new Map();
	        directives.forEach(function (directive) {
	            directive.inputs.forEach(function (prop) {
	                boundDirectivePropsIndex.set(prop.templateName, prop);
	            });
	        });
	        props.forEach(function (prop) {
	            if (!prop.isLiteral && lang_1.isBlank(boundDirectivePropsIndex.get(prop.name))) {
	                boundElementProps.push(_this._createElementPropertyAst(elementName, prop.name, prop.expression, prop.sourceSpan));
	            }
	        });
	        return boundElementProps;
	    };
	    TemplateParseVisitor.prototype._createElementPropertyAst = function (elementName, name, ast, sourceSpan) {
	        var unit = null;
	        var bindingType;
	        var boundPropertyName;
	        var parts = name.split(PROPERTY_PARTS_SEPARATOR);
	        var securityContext;
	        if (parts.length === 1) {
	            boundPropertyName = this._schemaRegistry.getMappedPropName(parts[0]);
	            securityContext = this._schemaRegistry.securityContext(elementName, boundPropertyName);
	            bindingType = template_ast_1.PropertyBindingType.Property;
	            if (!this._schemaRegistry.hasProperty(elementName, boundPropertyName)) {
	                this._reportError("Can't bind to '" + boundPropertyName + "' since it isn't a known native property", sourceSpan);
	            }
	        }
	        else {
	            if (parts[0] == ATTRIBUTE_PREFIX) {
	                boundPropertyName = parts[1];
	                if (boundPropertyName.toLowerCase().startsWith('on')) {
	                    this._reportError(("Binding to event attribute '" + boundPropertyName + "' is disallowed ") +
	                        ("for security reasons, please use (" + boundPropertyName.slice(2) + ")=..."), sourceSpan);
	                }
	                // NB: For security purposes, use the mapped property name, not the attribute name.
	                securityContext = this._schemaRegistry.securityContext(elementName, this._schemaRegistry.getMappedPropName(boundPropertyName));
	                var nsSeparatorIdx = boundPropertyName.indexOf(':');
	                if (nsSeparatorIdx > -1) {
	                    var ns = boundPropertyName.substring(0, nsSeparatorIdx);
	                    var name_1 = boundPropertyName.substring(nsSeparatorIdx + 1);
	                    boundPropertyName = html_tags_1.mergeNsAndName(ns, name_1);
	                }
	                bindingType = template_ast_1.PropertyBindingType.Attribute;
	            }
	            else if (parts[0] == CLASS_PREFIX) {
	                boundPropertyName = parts[1];
	                bindingType = template_ast_1.PropertyBindingType.Class;
	                securityContext = core_private_1.SecurityContext.NONE;
	            }
	            else if (parts[0] == STYLE_PREFIX) {
	                unit = parts.length > 2 ? parts[2] : null;
	                boundPropertyName = parts[1];
	                bindingType = template_ast_1.PropertyBindingType.Style;
	                securityContext = core_private_1.SecurityContext.STYLE;
	            }
	            else {
	                this._reportError("Invalid property name '" + name + "'", sourceSpan);
	                bindingType = null;
	                securityContext = null;
	            }
	        }
	        return new template_ast_1.BoundElementPropertyAst(boundPropertyName, bindingType, securityContext, ast, unit, sourceSpan);
	    };
	    TemplateParseVisitor.prototype._findComponentDirectiveNames = function (directives) {
	        var componentTypeNames = [];
	        directives.forEach(function (directive) {
	            var typeName = directive.directive.type.name;
	            if (directive.directive.isComponent) {
	                componentTypeNames.push(typeName);
	            }
	        });
	        return componentTypeNames;
	    };
	    TemplateParseVisitor.prototype._assertOnlyOneComponent = function (directives, sourceSpan) {
	        var componentTypeNames = this._findComponentDirectiveNames(directives);
	        if (componentTypeNames.length > 1) {
	            this._reportError("More than one component: " + componentTypeNames.join(','), sourceSpan);
	        }
	    };
	    TemplateParseVisitor.prototype._assertNoComponentsNorElementBindingsOnTemplate = function (directives, elementProps, sourceSpan) {
	        var _this = this;
	        var componentTypeNames = this._findComponentDirectiveNames(directives);
	        if (componentTypeNames.length > 0) {
	            this._reportError("Components on an embedded template: " + componentTypeNames.join(','), sourceSpan);
	        }
	        elementProps.forEach(function (prop) {
	            _this._reportError("Property binding " + prop.name + " not used by any directive on an embedded template", sourceSpan);
	        });
	    };
	    TemplateParseVisitor.prototype._assertAllEventsPublishedByDirectives = function (directives, events) {
	        var _this = this;
	        var allDirectiveEvents = new Set();
	        directives.forEach(function (directive) {
	            collection_1.StringMapWrapper.forEach(directive.directive.outputs, function (eventName, _) { allDirectiveEvents.add(eventName); });
	        });
	        events.forEach(function (event) {
	            if (lang_1.isPresent(event.target) || !collection_1.SetWrapper.has(allDirectiveEvents, event.name)) {
	                _this._reportError("Event binding " + event.fullName + " not emitted by any directive on an embedded template", event.sourceSpan);
	            }
	        });
	    };
	    return TemplateParseVisitor;
	}());
	var NonBindableVisitor = (function () {
	    function NonBindableVisitor() {
	    }
	    NonBindableVisitor.prototype.visitElement = function (ast, parent) {
	        var preparsedElement = template_preparser_1.preparseElement(ast);
	        if (preparsedElement.type === template_preparser_1.PreparsedElementType.SCRIPT ||
	            preparsedElement.type === template_preparser_1.PreparsedElementType.STYLE ||
	            preparsedElement.type === template_preparser_1.PreparsedElementType.STYLESHEET) {
	            // Skipping <script> for security reasons
	            // Skipping <style> and stylesheets as we already processed them
	            // in the StyleCompiler
	            return null;
	        }
	        var attrNameAndValues = ast.attrs.map(function (attrAst) { return [attrAst.name, attrAst.value]; });
	        var selector = createElementCssSelector(ast.name, attrNameAndValues);
	        var ngContentIndex = parent.findNgContentIndex(selector);
	        var children = html_ast_1.htmlVisitAll(this, ast.children, EMPTY_ELEMENT_CONTEXT);
	        return new template_ast_1.ElementAst(ast.name, html_ast_1.htmlVisitAll(this, ast.attrs), [], [], [], [], [], false, children, ngContentIndex, ast.sourceSpan);
	    };
	    NonBindableVisitor.prototype.visitComment = function (ast, context) { return null; };
	    NonBindableVisitor.prototype.visitAttr = function (ast, context) {
	        return new template_ast_1.AttrAst(ast.name, ast.value, ast.sourceSpan);
	    };
	    NonBindableVisitor.prototype.visitText = function (ast, parent) {
	        var ngContentIndex = parent.findNgContentIndex(TEXT_CSS_SELECTOR);
	        return new template_ast_1.TextAst(ast.value, ngContentIndex, ast.sourceSpan);
	    };
	    NonBindableVisitor.prototype.visitExpansion = function (ast, context) { return ast; };
	    NonBindableVisitor.prototype.visitExpansionCase = function (ast, context) { return ast; };
	    return NonBindableVisitor;
	}());
	var BoundElementOrDirectiveProperty = (function () {
	    function BoundElementOrDirectiveProperty(name, expression, isLiteral, sourceSpan) {
	        this.name = name;
	        this.expression = expression;
	        this.isLiteral = isLiteral;
	        this.sourceSpan = sourceSpan;
	    }
	    return BoundElementOrDirectiveProperty;
	}());
	var ElementOrDirectiveRef = (function () {
	    function ElementOrDirectiveRef(name, value, sourceSpan) {
	        this.name = name;
	        this.value = value;
	        this.sourceSpan = sourceSpan;
	    }
	    return ElementOrDirectiveRef;
	}());
	function splitClasses(classAttrValue) {
	    return lang_1.StringWrapper.split(classAttrValue.trim(), /\s+/g);
	}
	exports.splitClasses = splitClasses;
	var ElementContext = (function () {
	    function ElementContext(isTemplateElement, _ngContentIndexMatcher, _wildcardNgContentIndex, providerContext) {
	        this.isTemplateElement = isTemplateElement;
	        this._ngContentIndexMatcher = _ngContentIndexMatcher;
	        this._wildcardNgContentIndex = _wildcardNgContentIndex;
	        this.providerContext = providerContext;
	    }
	    ElementContext.create = function (isTemplateElement, directives, providerContext) {
	        var matcher = new selector_1.SelectorMatcher();
	        var wildcardNgContentIndex = null;
	        var component = directives.find(function (directive) { return directive.directive.isComponent; });
	        if (lang_1.isPresent(component)) {
	            var ngContentSelectors = component.directive.template.ngContentSelectors;
	            for (var i = 0; i < ngContentSelectors.length; i++) {
	                var selector = ngContentSelectors[i];
	                if (lang_1.StringWrapper.equals(selector, '*')) {
	                    wildcardNgContentIndex = i;
	                }
	                else {
	                    matcher.addSelectables(selector_1.CssSelector.parse(ngContentSelectors[i]), i);
	                }
	            }
	        }
	        return new ElementContext(isTemplateElement, matcher, wildcardNgContentIndex, providerContext);
	    };
	    ElementContext.prototype.findNgContentIndex = function (selector) {
	        var ngContentIndices = [];
	        this._ngContentIndexMatcher.match(selector, function (selector, ngContentIndex) { ngContentIndices.push(ngContentIndex); });
	        collection_1.ListWrapper.sort(ngContentIndices);
	        if (lang_1.isPresent(this._wildcardNgContentIndex)) {
	            ngContentIndices.push(this._wildcardNgContentIndex);
	        }
	        return ngContentIndices.length > 0 ? ngContentIndices[0] : null;
	    };
	    return ElementContext;
	}());
	function createElementCssSelector(elementName, matchableAttrs) {
	    var cssSelector = new selector_1.CssSelector();
	    var elNameNoNs = html_tags_1.splitNsName(elementName)[1];
	    cssSelector.setElement(elNameNoNs);
	    for (var i = 0; i < matchableAttrs.length; i++) {
	        var attrName = matchableAttrs[i][0];
	        var attrNameNoNs = html_tags_1.splitNsName(attrName)[1];
	        var attrValue = matchableAttrs[i][1];
	        cssSelector.addAttribute(attrNameNoNs, attrValue);
	        if (attrName.toLowerCase() == CLASS_ATTR) {
	            var classes = splitClasses(attrValue);
	            classes.forEach(function (className) { return cssSelector.addClassName(className); });
	        }
	    }
	    return cssSelector;
	}
	var EMPTY_ELEMENT_CONTEXT = new ElementContext(true, new selector_1.SelectorMatcher(), null, null);
	var NON_BINDABLE_VISITOR = new NonBindableVisitor();
	var PipeCollector = (function (_super) {
	    __extends(PipeCollector, _super);
	    function PipeCollector() {
	        _super.apply(this, arguments);
	        this.pipes = new Set();
	    }
	    PipeCollector.prototype.visitPipe = function (ast, context) {
	        this.pipes.add(ast.name);
	        ast.exp.visit(this);
	        this.visitAll(ast.args, context);
	        return null;
	    };
	    return PipeCollector;
	}(ast_1.RecursiveAstVisitor));
	exports.PipeCollector = PipeCollector;
	function removeDuplicates(items) {
	    var res = [];
	    items.forEach(function (item) {
	        var hasMatch = res.filter(function (r) { return r.type.name == item.type.name && r.type.moduleUrl == item.type.moduleUrl &&
	            r.type.runtime == item.type.runtime; })
	            .length > 0;
	        if (!hasMatch) {
	            res.push(item);
	        }
	    });
	    return res;
	}
	//# sourceMappingURL=template_parser.js.map

/***/ },
/* 96 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var lang_1 = __webpack_require__(3);
	var collection_1 = __webpack_require__(7);
	var o = __webpack_require__(10);
	var _DebugState = (function () {
	    function _DebugState(nodeIndex, sourceAst) {
	        this.nodeIndex = nodeIndex;
	        this.sourceAst = sourceAst;
	    }
	    return _DebugState;
	}());
	var NULL_DEBUG_STATE = new _DebugState(null, null);
	var CompileMethod = (function () {
	    function CompileMethod(_view) {
	        this._view = _view;
	        this._newState = NULL_DEBUG_STATE;
	        this._currState = NULL_DEBUG_STATE;
	        this._bodyStatements = [];
	        this._debugEnabled = this._view.genConfig.genDebugInfo;
	    }
	    CompileMethod.prototype._updateDebugContextIfNeeded = function () {
	        if (this._newState.nodeIndex !== this._currState.nodeIndex ||
	            this._newState.sourceAst !== this._currState.sourceAst) {
	            var expr = this._updateDebugContext(this._newState);
	            if (lang_1.isPresent(expr)) {
	                this._bodyStatements.push(expr.toStmt());
	            }
	        }
	    };
	    CompileMethod.prototype._updateDebugContext = function (newState) {
	        this._currState = this._newState = newState;
	        if (this._debugEnabled) {
	            var sourceLocation = lang_1.isPresent(newState.sourceAst) ? newState.sourceAst.sourceSpan.start : null;
	            return o.THIS_EXPR.callMethod('debug', [
	                o.literal(newState.nodeIndex),
	                lang_1.isPresent(sourceLocation) ? o.literal(sourceLocation.line) : o.NULL_EXPR,
	                lang_1.isPresent(sourceLocation) ? o.literal(sourceLocation.col) : o.NULL_EXPR
	            ]);
	        }
	        else {
	            return null;
	        }
	    };
	    CompileMethod.prototype.resetDebugInfoExpr = function (nodeIndex, templateAst) {
	        var res = this._updateDebugContext(new _DebugState(nodeIndex, templateAst));
	        return lang_1.isPresent(res) ? res : o.NULL_EXPR;
	    };
	    CompileMethod.prototype.resetDebugInfo = function (nodeIndex, templateAst) {
	        this._newState = new _DebugState(nodeIndex, templateAst);
	    };
	    CompileMethod.prototype.addStmt = function (stmt) {
	        this._updateDebugContextIfNeeded();
	        this._bodyStatements.push(stmt);
	    };
	    CompileMethod.prototype.addStmts = function (stmts) {
	        this._updateDebugContextIfNeeded();
	        collection_1.ListWrapper.addAll(this._bodyStatements, stmts);
	    };
	    CompileMethod.prototype.finish = function () { return this._bodyStatements; };
	    CompileMethod.prototype.isEmpty = function () { return this._bodyStatements.length === 0; };
	    return CompileMethod;
	}());
	exports.CompileMethod = CompileMethod;
	//# sourceMappingURL=compile_method.js.map

/***/ },
/* 97 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var core_1 = __webpack_require__(1);
	var core_private_1 = __webpack_require__(13);
	var lang_1 = __webpack_require__(3);
	var exceptions_1 = __webpack_require__(8);
	var collection_1 = __webpack_require__(7);
	var ViewResolver = (function () {
	    function ViewResolver(_reflector) {
	        /** @internal */
	        this._cache = new collection_1.Map();
	        if (lang_1.isPresent(_reflector)) {
	            this._reflector = _reflector;
	        }
	        else {
	            this._reflector = core_1.reflector;
	        }
	    }
	    ViewResolver.prototype.resolve = function (component) {
	        var view = this._cache.get(component);
	        if (lang_1.isBlank(view)) {
	            view = this._resolve(component);
	            this._cache.set(component, view);
	        }
	        return view;
	    };
	    /** @internal */
	    ViewResolver.prototype._resolve = function (component) {
	        var compMeta;
	        var viewMeta;
	        this._reflector.annotations(component).forEach(function (m) {
	            if (m instanceof core_1.ViewMetadata) {
	                viewMeta = m;
	            }
	            if (m instanceof core_1.ComponentMetadata) {
	                compMeta = m;
	            }
	        });
	        if (lang_1.isPresent(compMeta)) {
	            if (lang_1.isBlank(compMeta.template) && lang_1.isBlank(compMeta.templateUrl) && lang_1.isBlank(viewMeta)) {
	                throw new exceptions_1.BaseException("Component '" + lang_1.stringify(component) + "' must have either 'template' or 'templateUrl' set.");
	            }
	            else if (lang_1.isPresent(compMeta.template) && lang_1.isPresent(viewMeta)) {
	                this._throwMixingViewAndComponent("template", component);
	            }
	            else if (lang_1.isPresent(compMeta.templateUrl) && lang_1.isPresent(viewMeta)) {
	                this._throwMixingViewAndComponent("templateUrl", component);
	            }
	            else if (lang_1.isPresent(compMeta.directives) && lang_1.isPresent(viewMeta)) {
	                this._throwMixingViewAndComponent("directives", component);
	            }
	            else if (lang_1.isPresent(compMeta.pipes) && lang_1.isPresent(viewMeta)) {
	                this._throwMixingViewAndComponent("pipes", component);
	            }
	            else if (lang_1.isPresent(compMeta.encapsulation) && lang_1.isPresent(viewMeta)) {
	                this._throwMixingViewAndComponent("encapsulation", component);
	            }
	            else if (lang_1.isPresent(compMeta.styles) && lang_1.isPresent(viewMeta)) {
	                this._throwMixingViewAndComponent("styles", component);
	            }
	            else if (lang_1.isPresent(compMeta.styleUrls) && lang_1.isPresent(viewMeta)) {
	                this._throwMixingViewAndComponent("styleUrls", component);
	            }
	            else if (lang_1.isPresent(viewMeta)) {
	                return viewMeta;
	            }
	            else {
	                return new core_1.ViewMetadata({
	                    templateUrl: compMeta.templateUrl,
	                    template: compMeta.template,
	                    directives: compMeta.directives,
	                    pipes: compMeta.pipes,
	                    encapsulation: compMeta.encapsulation,
	                    styles: compMeta.styles,
	                    styleUrls: compMeta.styleUrls
	                });
	            }
	        }
	        else {
	            if (lang_1.isBlank(viewMeta)) {
	                throw new exceptions_1.BaseException("Could not compile '" + lang_1.stringify(component) + "' because it is not a component.");
	            }
	            else {
	                return viewMeta;
	            }
	        }
	        return null;
	    };
	    /** @internal */
	    ViewResolver.prototype._throwMixingViewAndComponent = function (propertyName, component) {
	        throw new exceptions_1.BaseException("Component '" + lang_1.stringify(component) + "' cannot have both '" + propertyName + "' and '@View' set at the same time\"");
	    };
	    ViewResolver.decorators = [
	        { type: core_1.Injectable },
	    ];
	    ViewResolver.ctorParameters = [
	        { type: core_private_1.ReflectorReader, },
	    ];
	    return ViewResolver;
	}());
	exports.ViewResolver = ViewResolver;
	//# sourceMappingURL=view_resolver.js.map

/***/ },
/* 98 */
/***/ function(module, exports) {

	"use strict";
	// TODO: vsavkin rename it into TemplateLoader
	/**
	 * An interface for retrieving documents by URL that the compiler uses
	 * to load templates.
	 */
	var XHR = (function () {
	    function XHR() {
	    }
	    XHR.prototype.get = function (url) { return null; };
	    return XHR;
	}());
	exports.XHR = XHR;
	//# sourceMappingURL=xhr.js.map

/***/ },
/* 99 */,
/* 100 */,
/* 101 */,
/* 102 */,
/* 103 */,
/* 104 */,
/* 105 */,
/* 106 */,
/* 107 */,
/* 108 */,
/* 109 */,
/* 110 */,
/* 111 */,
/* 112 */,
/* 113 */,
/* 114 */,
/* 115 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var core_1 = __webpack_require__(1);
	exports.RenderDebugInfo = core_1.__core_private__.RenderDebugInfo;
	exports.wtfInit = core_1.__core_private__.wtfInit;
	exports.ReflectionCapabilities = core_1.__core_private__.ReflectionCapabilities;
	exports.VIEW_ENCAPSULATION_VALUES = core_1.__core_private__.VIEW_ENCAPSULATION_VALUES;
	exports.DebugDomRootRenderer = core_1.__core_private__.DebugDomRootRenderer;
	exports.SecurityContext = core_1.__core_private__.SecurityContext;
	exports.SanitizationService = core_1.__core_private__.SanitizationService;
	//# sourceMappingURL=core_private.js.map

/***/ },
/* 116 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var core_1 = __webpack_require__(1);
	var css_animation_builder_1 = __webpack_require__(205);
	var browser_details_1 = __webpack_require__(117);
	var AnimationBuilder = (function () {
	    /**
	     * Used for DI
	     * @param browserDetails
	     */
	    function AnimationBuilder(browserDetails) {
	        this.browserDetails = browserDetails;
	    }
	    /**
	     * Creates a new CSS Animation
	     * @returns {CssAnimationBuilder}
	     */
	    AnimationBuilder.prototype.css = function () { return new css_animation_builder_1.CssAnimationBuilder(this.browserDetails); };
	    AnimationBuilder.decorators = [
	        { type: core_1.Injectable },
	    ];
	    AnimationBuilder.ctorParameters = [
	        { type: browser_details_1.BrowserDetails, },
	    ];
	    return AnimationBuilder;
	}());
	exports.AnimationBuilder = AnimationBuilder;
	//# sourceMappingURL=animation_builder.js.map

/***/ },
/* 117 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var core_1 = __webpack_require__(1);
	var math_1 = __webpack_require__(213);
	var dom_adapter_1 = __webpack_require__(15);
	var BrowserDetails = (function () {
	    function BrowserDetails() {
	        this.elapsedTimeIncludesDelay = false;
	        this.doesElapsedTimeIncludesDelay();
	    }
	    /**
	     * Determines if `event.elapsedTime` includes transition delay in the current browser.  At this
	     * time, Chrome and Opera seem to be the only browsers that include this.
	     */
	    BrowserDetails.prototype.doesElapsedTimeIncludesDelay = function () {
	        var _this = this;
	        var div = dom_adapter_1.getDOM().createElement('div');
	        dom_adapter_1.getDOM().setAttribute(div, 'style', "position: absolute; top: -9999px; left: -9999px; width: 1px;\n      height: 1px; transition: all 1ms linear 1ms;");
	        // Firefox requires that we wait for 2 frames for some reason
	        this.raf(function (timestamp) {
	            dom_adapter_1.getDOM().on(div, 'transitionend', function (event) {
	                var elapsed = math_1.Math.round(event.elapsedTime * 1000);
	                _this.elapsedTimeIncludesDelay = elapsed == 2;
	                dom_adapter_1.getDOM().remove(div);
	            });
	            dom_adapter_1.getDOM().setStyle(div, 'width', '2px');
	        }, 2);
	    };
	    BrowserDetails.prototype.raf = function (callback, frames) {
	        if (frames === void 0) { frames = 1; }
	        var queue = new RafQueue(callback, frames);
	        return function () { return queue.cancel(); };
	    };
	    BrowserDetails.decorators = [
	        { type: core_1.Injectable },
	    ];
	    BrowserDetails.ctorParameters = [];
	    return BrowserDetails;
	}());
	exports.BrowserDetails = BrowserDetails;
	var RafQueue = (function () {
	    function RafQueue(callback, frames) {
	        this.callback = callback;
	        this.frames = frames;
	        this._raf();
	    }
	    RafQueue.prototype._raf = function () {
	        var _this = this;
	        this.currentFrameId =
	            dom_adapter_1.getDOM().requestAnimationFrame(function (timestamp) { return _this._nextFrame(timestamp); });
	    };
	    RafQueue.prototype._nextFrame = function (timestamp) {
	        this.frames--;
	        if (this.frames > 0) {
	            this._raf();
	        }
	        else {
	            this.callback(timestamp);
	        }
	    };
	    RafQueue.prototype.cancel = function () {
	        dom_adapter_1.getDOM().cancelAnimationFrame(this.currentFrameId);
	        this.currentFrameId = null;
	    };
	    return RafQueue;
	}());
	//# sourceMappingURL=browser_details.js.map

/***/ },
/* 118 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var collection_1 = __webpack_require__(22);
	var lang_1 = __webpack_require__(12);
	var generic_browser_adapter_1 = __webpack_require__(409);
	var dom_adapter_1 = __webpack_require__(15);
	var _attrToPropMap = {
	    'class': 'className',
	    'innerHtml': 'innerHTML',
	    'readonly': 'readOnly',
	    'tabindex': 'tabIndex'
	};
	var DOM_KEY_LOCATION_NUMPAD = 3;
	// Map to convert some key or keyIdentifier values to what will be returned by getEventKey
	var _keyMap = {
	    // The following values are here for cross-browser compatibility and to match the W3C standard
	    // cf http://www.w3.org/TR/DOM-Level-3-Events-key/
	    '\b': 'Backspace',
	    '\t': 'Tab',
	    '\x7F': 'Delete',
	    '\x1B': 'Escape',
	    'Del': 'Delete',
	    'Esc': 'Escape',
	    'Left': 'ArrowLeft',
	    'Right': 'ArrowRight',
	    'Up': 'ArrowUp',
	    'Down': 'ArrowDown',
	    'Menu': 'ContextMenu',
	    'Scroll': 'ScrollLock',
	    'Win': 'OS'
	};
	// There is a bug in Chrome for numeric keypad keys:
	// https://code.google.com/p/chromium/issues/detail?id=155654
	// 1, 2, 3 ... are reported as A, B, C ...
	var _chromeNumKeyPadMap = {
	    'A': '1',
	    'B': '2',
	    'C': '3',
	    'D': '4',
	    'E': '5',
	    'F': '6',
	    'G': '7',
	    'H': '8',
	    'I': '9',
	    'J': '*',
	    'K': '+',
	    'M': '-',
	    'N': '.',
	    'O': '/',
	    '\x60': '0',
	    '\x90': 'NumLock'
	};
	/**
	 * A `DomAdapter` powered by full browser DOM APIs.
	 */
	/* tslint:disable:requireParameterType */
	var BrowserDomAdapter = (function (_super) {
	    __extends(BrowserDomAdapter, _super);
	    function BrowserDomAdapter() {
	        _super.apply(this, arguments);
	    }
	    BrowserDomAdapter.prototype.parse = function (templateHtml) { throw new Error("parse not implemented"); };
	    BrowserDomAdapter.makeCurrent = function () { dom_adapter_1.setRootDomAdapter(new BrowserDomAdapter()); };
	    BrowserDomAdapter.prototype.hasProperty = function (element, name) { return name in element; };
	    BrowserDomAdapter.prototype.setProperty = function (el, name, value) { el[name] = value; };
	    BrowserDomAdapter.prototype.getProperty = function (el, name) { return el[name]; };
	    BrowserDomAdapter.prototype.invoke = function (el, methodName, args) {
	        el[methodName].apply(el, args);
	    };
	    // TODO(tbosch): move this into a separate environment class once we have it
	    BrowserDomAdapter.prototype.logError = function (error) {
	        if (window.console.error) {
	            window.console.error(error);
	        }
	        else {
	            window.console.log(error);
	        }
	    };
	    BrowserDomAdapter.prototype.log = function (error) { window.console.log(error); };
	    BrowserDomAdapter.prototype.logGroup = function (error) {
	        if (window.console.group) {
	            window.console.group(error);
	            this.logError(error);
	        }
	        else {
	            window.console.log(error);
	        }
	    };
	    BrowserDomAdapter.prototype.logGroupEnd = function () {
	        if (window.console.groupEnd) {
	            window.console.groupEnd();
	        }
	    };
	    Object.defineProperty(BrowserDomAdapter.prototype, "attrToPropMap", {
	        get: function () { return _attrToPropMap; },
	        enumerable: true,
	        configurable: true
	    });
	    BrowserDomAdapter.prototype.query = function (selector) { return document.querySelector(selector); };
	    BrowserDomAdapter.prototype.querySelector = function (el, selector) { return el.querySelector(selector); };
	    BrowserDomAdapter.prototype.querySelectorAll = function (el, selector) { return el.querySelectorAll(selector); };
	    BrowserDomAdapter.prototype.on = function (el, evt, listener) { el.addEventListener(evt, listener, false); };
	    BrowserDomAdapter.prototype.onAndCancel = function (el, evt, listener) {
	        el.addEventListener(evt, listener, false);
	        // Needed to follow Dart's subscription semantic, until fix of
	        // https://code.google.com/p/dart/issues/detail?id=17406
	        return function () { el.removeEventListener(evt, listener, false); };
	    };
	    BrowserDomAdapter.prototype.dispatchEvent = function (el, evt) { el.dispatchEvent(evt); };
	    BrowserDomAdapter.prototype.createMouseEvent = function (eventType) {
	        var evt = document.createEvent('MouseEvent');
	        evt.initEvent(eventType, true, true);
	        return evt;
	    };
	    BrowserDomAdapter.prototype.createEvent = function (eventType) {
	        var evt = document.createEvent('Event');
	        evt.initEvent(eventType, true, true);
	        return evt;
	    };
	    BrowserDomAdapter.prototype.preventDefault = function (evt) {
	        evt.preventDefault();
	        evt.returnValue = false;
	    };
	    BrowserDomAdapter.prototype.isPrevented = function (evt) {
	        return evt.defaultPrevented || lang_1.isPresent(evt.returnValue) && !evt.returnValue;
	    };
	    BrowserDomAdapter.prototype.getInnerHTML = function (el) { return el.innerHTML; };
	    BrowserDomAdapter.prototype.getOuterHTML = function (el) { return el.outerHTML; };
	    BrowserDomAdapter.prototype.nodeName = function (node) { return node.nodeName; };
	    BrowserDomAdapter.prototype.nodeValue = function (node) { return node.nodeValue; };
	    BrowserDomAdapter.prototype.type = function (node) { return node.type; };
	    BrowserDomAdapter.prototype.content = function (node) {
	        if (this.hasProperty(node, "content")) {
	            return node.content;
	        }
	        else {
	            return node;
	        }
	    };
	    BrowserDomAdapter.prototype.firstChild = function (el) { return el.firstChild; };
	    BrowserDomAdapter.prototype.nextSibling = function (el) { return el.nextSibling; };
	    BrowserDomAdapter.prototype.parentElement = function (el) { return el.parentNode; };
	    BrowserDomAdapter.prototype.childNodes = function (el) { return el.childNodes; };
	    BrowserDomAdapter.prototype.childNodesAsList = function (el) {
	        var childNodes = el.childNodes;
	        var res = collection_1.ListWrapper.createFixedSize(childNodes.length);
	        for (var i = 0; i < childNodes.length; i++) {
	            res[i] = childNodes[i];
	        }
	        return res;
	    };
	    BrowserDomAdapter.prototype.clearNodes = function (el) {
	        while (el.firstChild) {
	            el.removeChild(el.firstChild);
	        }
	    };
	    BrowserDomAdapter.prototype.appendChild = function (el, node) { el.appendChild(node); };
	    BrowserDomAdapter.prototype.removeChild = function (el, node) { el.removeChild(node); };
	    BrowserDomAdapter.prototype.replaceChild = function (el, newChild, oldChild) { el.replaceChild(newChild, oldChild); };
	    BrowserDomAdapter.prototype.remove = function (node) {
	        if (node.parentNode) {
	            node.parentNode.removeChild(node);
	        }
	        return node;
	    };
	    BrowserDomAdapter.prototype.insertBefore = function (el, node) { el.parentNode.insertBefore(node, el); };
	    BrowserDomAdapter.prototype.insertAllBefore = function (el, nodes) { nodes.forEach(function (n) { return el.parentNode.insertBefore(n, el); }); };
	    BrowserDomAdapter.prototype.insertAfter = function (el, node) { el.parentNode.insertBefore(node, el.nextSibling); };
	    BrowserDomAdapter.prototype.setInnerHTML = function (el, value) { el.innerHTML = value; };
	    BrowserDomAdapter.prototype.getText = function (el) { return el.textContent; };
	    // TODO(vicb): removed Element type because it does not support StyleElement
	    BrowserDomAdapter.prototype.setText = function (el, value) { el.textContent = value; };
	    BrowserDomAdapter.prototype.getValue = function (el) { return el.value; };
	    BrowserDomAdapter.prototype.setValue = function (el, value) { el.value = value; };
	    BrowserDomAdapter.prototype.getChecked = function (el) { return el.checked; };
	    BrowserDomAdapter.prototype.setChecked = function (el, value) { el.checked = value; };
	    BrowserDomAdapter.prototype.createComment = function (text) { return document.createComment(text); };
	    BrowserDomAdapter.prototype.createTemplate = function (html) {
	        var t = document.createElement('template');
	        t.innerHTML = html;
	        return t;
	    };
	    BrowserDomAdapter.prototype.createElement = function (tagName, doc) {
	        if (doc === void 0) { doc = document; }
	        return doc.createElement(tagName);
	    };
	    BrowserDomAdapter.prototype.createElementNS = function (ns, tagName, doc) {
	        if (doc === void 0) { doc = document; }
	        return doc.createElementNS(ns, tagName);
	    };
	    BrowserDomAdapter.prototype.createTextNode = function (text, doc) {
	        if (doc === void 0) { doc = document; }
	        return doc.createTextNode(text);
	    };
	    BrowserDomAdapter.prototype.createScriptTag = function (attrName, attrValue, doc) {
	        if (doc === void 0) { doc = document; }
	        var el = doc.createElement('SCRIPT');
	        el.setAttribute(attrName, attrValue);
	        return el;
	    };
	    BrowserDomAdapter.prototype.createStyleElement = function (css, doc) {
	        if (doc === void 0) { doc = document; }
	        var style = doc.createElement('style');
	        this.appendChild(style, this.createTextNode(css));
	        return style;
	    };
	    BrowserDomAdapter.prototype.createShadowRoot = function (el) { return el.createShadowRoot(); };
	    BrowserDomAdapter.prototype.getShadowRoot = function (el) { return el.shadowRoot; };
	    BrowserDomAdapter.prototype.getHost = function (el) { return el.host; };
	    BrowserDomAdapter.prototype.clone = function (node) { return node.cloneNode(true); };
	    BrowserDomAdapter.prototype.getElementsByClassName = function (element, name) {
	        return element.getElementsByClassName(name);
	    };
	    BrowserDomAdapter.prototype.getElementsByTagName = function (element, name) {
	        return element.getElementsByTagName(name);
	    };
	    BrowserDomAdapter.prototype.classList = function (element) { return Array.prototype.slice.call(element.classList, 0); };
	    BrowserDomAdapter.prototype.addClass = function (element, className) { element.classList.add(className); };
	    BrowserDomAdapter.prototype.removeClass = function (element, className) { element.classList.remove(className); };
	    BrowserDomAdapter.prototype.hasClass = function (element, className) { return element.classList.contains(className); };
	    BrowserDomAdapter.prototype.setStyle = function (element, styleName, styleValue) {
	        element.style[styleName] = styleValue;
	    };
	    BrowserDomAdapter.prototype.removeStyle = function (element, stylename) { element.style[stylename] = null; };
	    BrowserDomAdapter.prototype.getStyle = function (element, stylename) { return element.style[stylename]; };
	    BrowserDomAdapter.prototype.hasStyle = function (element, styleName, styleValue) {
	        if (styleValue === void 0) { styleValue = null; }
	        var value = this.getStyle(element, styleName) || '';
	        return styleValue ? value == styleValue : value.length > 0;
	    };
	    BrowserDomAdapter.prototype.tagName = function (element) { return element.tagName; };
	    BrowserDomAdapter.prototype.attributeMap = function (element) {
	        var res = new Map();
	        var elAttrs = element.attributes;
	        for (var i = 0; i < elAttrs.length; i++) {
	            var attrib = elAttrs[i];
	            res.set(attrib.name, attrib.value);
	        }
	        return res;
	    };
	    BrowserDomAdapter.prototype.hasAttribute = function (element, attribute) { return element.hasAttribute(attribute); };
	    BrowserDomAdapter.prototype.hasAttributeNS = function (element, ns, attribute) {
	        return element.hasAttributeNS(ns, attribute);
	    };
	    BrowserDomAdapter.prototype.getAttribute = function (element, attribute) { return element.getAttribute(attribute); };
	    BrowserDomAdapter.prototype.getAttributeNS = function (element, ns, name) {
	        return element.getAttributeNS(ns, name);
	    };
	    BrowserDomAdapter.prototype.setAttribute = function (element, name, value) { element.setAttribute(name, value); };
	    BrowserDomAdapter.prototype.setAttributeNS = function (element, ns, name, value) {
	        element.setAttributeNS(ns, name, value);
	    };
	    BrowserDomAdapter.prototype.removeAttribute = function (element, attribute) { element.removeAttribute(attribute); };
	    BrowserDomAdapter.prototype.removeAttributeNS = function (element, ns, name) { element.removeAttributeNS(ns, name); };
	    BrowserDomAdapter.prototype.templateAwareRoot = function (el) { return this.isTemplateElement(el) ? this.content(el) : el; };
	    BrowserDomAdapter.prototype.createHtmlDocument = function () {
	        return document.implementation.createHTMLDocument('fakeTitle');
	    };
	    BrowserDomAdapter.prototype.defaultDoc = function () { return document; };
	    BrowserDomAdapter.prototype.getBoundingClientRect = function (el) {
	        try {
	            return el.getBoundingClientRect();
	        }
	        catch (e) {
	            return { top: 0, bottom: 0, left: 0, right: 0, width: 0, height: 0 };
	        }
	    };
	    BrowserDomAdapter.prototype.getTitle = function () { return document.title; };
	    BrowserDomAdapter.prototype.setTitle = function (newTitle) { document.title = newTitle || ''; };
	    BrowserDomAdapter.prototype.elementMatches = function (n, selector) {
	        var matches = false;
	        if (n instanceof HTMLElement) {
	            if (n.matches) {
	                matches = n.matches(selector);
	            }
	            else if (n.msMatchesSelector) {
	                matches = n.msMatchesSelector(selector);
	            }
	            else if (n.webkitMatchesSelector) {
	                matches = n.webkitMatchesSelector(selector);
	            }
	        }
	        return matches;
	    };
	    BrowserDomAdapter.prototype.isTemplateElement = function (el) {
	        return el instanceof HTMLElement && el.nodeName == "TEMPLATE";
	    };
	    BrowserDomAdapter.prototype.isTextNode = function (node) { return node.nodeType === Node.TEXT_NODE; };
	    BrowserDomAdapter.prototype.isCommentNode = function (node) { return node.nodeType === Node.COMMENT_NODE; };
	    BrowserDomAdapter.prototype.isElementNode = function (node) { return node.nodeType === Node.ELEMENT_NODE; };
	    BrowserDomAdapter.prototype.hasShadowRoot = function (node) { return node instanceof HTMLElement && lang_1.isPresent(node.shadowRoot); };
	    BrowserDomAdapter.prototype.isShadowRoot = function (node) { return node instanceof DocumentFragment; };
	    BrowserDomAdapter.prototype.importIntoDoc = function (node) {
	        var toImport = node;
	        if (this.isTemplateElement(node)) {
	            toImport = this.content(node);
	        }
	        return document.importNode(toImport, true);
	    };
	    BrowserDomAdapter.prototype.adoptNode = function (node) { return document.adoptNode(node); };
	    BrowserDomAdapter.prototype.getHref = function (el) { return el.href; };
	    BrowserDomAdapter.prototype.getEventKey = function (event) {
	        var key = event.key;
	        if (lang_1.isBlank(key)) {
	            key = event.keyIdentifier;
	            // keyIdentifier is defined in the old draft of DOM Level 3 Events implemented by Chrome and
	            // Safari
	            // cf
	            // http://www.w3.org/TR/2007/WD-DOM-Level-3-Events-20071221/events.html#Events-KeyboardEvents-Interfaces
	            if (lang_1.isBlank(key)) {
	                return 'Unidentified';
	            }
	            if (key.startsWith('U+')) {
	                key = String.fromCharCode(parseInt(key.substring(2), 16));
	                if (event.location === DOM_KEY_LOCATION_NUMPAD && _chromeNumKeyPadMap.hasOwnProperty(key)) {
	                    // There is a bug in Chrome for numeric keypad keys:
	                    // https://code.google.com/p/chromium/issues/detail?id=155654
	                    // 1, 2, 3 ... are reported as A, B, C ...
	                    key = _chromeNumKeyPadMap[key];
	                }
	            }
	        }
	        if (_keyMap.hasOwnProperty(key)) {
	            key = _keyMap[key];
	        }
	        return key;
	    };
	    BrowserDomAdapter.prototype.getGlobalEventTarget = function (target) {
	        if (target == "window") {
	            return window;
	        }
	        else if (target == "document") {
	            return document;
	        }
	        else if (target == "body") {
	            return document.body;
	        }
	    };
	    BrowserDomAdapter.prototype.getHistory = function () { return window.history; };
	    BrowserDomAdapter.prototype.getLocation = function () { return window.location; };
	    BrowserDomAdapter.prototype.getBaseHref = function () {
	        var href = getBaseElementHref();
	        if (lang_1.isBlank(href)) {
	            return null;
	        }
	        return relativePath(href);
	    };
	    BrowserDomAdapter.prototype.resetBaseElement = function () { baseElement = null; };
	    BrowserDomAdapter.prototype.getUserAgent = function () { return window.navigator.userAgent; };
	    BrowserDomAdapter.prototype.setData = function (element, name, value) {
	        this.setAttribute(element, 'data-' + name, value);
	    };
	    BrowserDomAdapter.prototype.getData = function (element, name) { return this.getAttribute(element, 'data-' + name); };
	    BrowserDomAdapter.prototype.getComputedStyle = function (element) { return getComputedStyle(element); };
	    // TODO(tbosch): move this into a separate environment class once we have it
	    BrowserDomAdapter.prototype.setGlobalVar = function (path, value) { lang_1.setValueOnPath(lang_1.global, path, value); };
	    BrowserDomAdapter.prototype.requestAnimationFrame = function (callback) { return window.requestAnimationFrame(callback); };
	    BrowserDomAdapter.prototype.cancelAnimationFrame = function (id) { window.cancelAnimationFrame(id); };
	    BrowserDomAdapter.prototype.performanceNow = function () {
	        // performance.now() is not available in all browsers, see
	        // http://caniuse.com/#search=performance.now
	        if (lang_1.isPresent(window.performance) && lang_1.isPresent(window.performance.now)) {
	            return window.performance.now();
	        }
	        else {
	            return lang_1.DateWrapper.toMillis(lang_1.DateWrapper.now());
	        }
	    };
	    return BrowserDomAdapter;
	}(generic_browser_adapter_1.GenericBrowserDomAdapter));
	exports.BrowserDomAdapter = BrowserDomAdapter;
	var baseElement = null;
	function getBaseElementHref() {
	    if (lang_1.isBlank(baseElement)) {
	        baseElement = document.querySelector('base');
	        if (lang_1.isBlank(baseElement)) {
	            return null;
	        }
	    }
	    return baseElement.getAttribute('href');
	}
	// based on urlUtils.js in AngularJS 1
	var urlParsingNode = null;
	function relativePath(url) {
	    if (lang_1.isBlank(urlParsingNode)) {
	        urlParsingNode = document.createElement("a");
	    }
	    urlParsingNode.setAttribute('href', url);
	    return (urlParsingNode.pathname.charAt(0) === '/') ? urlParsingNode.pathname :
	        '/' + urlParsingNode.pathname;
	}
	//# sourceMappingURL=browser_adapter.js.map

/***/ },
/* 119 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var core_1 = __webpack_require__(1);
	var core_private_1 = __webpack_require__(115);
	var lang_1 = __webpack_require__(12);
	var dom_adapter_1 = __webpack_require__(15);
	var dom_renderer_1 = __webpack_require__(207);
	var CORE_TOKENS = { 'ApplicationRef': core_1.ApplicationRef, 'NgZone': core_1.NgZone };
	var INSPECT_GLOBAL_NAME = 'ng.probe';
	var CORE_TOKENS_GLOBAL_NAME = 'ng.coreTokens';
	/**
	 * Returns a {@link DebugElement} for the given native DOM element, or
	 * null if the given native element does not have an Angular view associated
	 * with it.
	 */
	function inspectNativeElement(element) {
	    return core_1.getDebugNode(element);
	}
	exports.inspectNativeElement = inspectNativeElement;
	function _createConditionalRootRenderer(rootRenderer) {
	    if (lang_1.assertionsEnabled()) {
	        return _createRootRenderer(rootRenderer);
	    }
	    return rootRenderer;
	}
	function _createRootRenderer(rootRenderer) {
	    dom_adapter_1.getDOM().setGlobalVar(INSPECT_GLOBAL_NAME, inspectNativeElement);
	    dom_adapter_1.getDOM().setGlobalVar(CORE_TOKENS_GLOBAL_NAME, CORE_TOKENS);
	    return new core_private_1.DebugDomRootRenderer(rootRenderer);
	}
	/**
	 * Providers which support debugging Angular applications (e.g. via `ng.probe`).
	 */
	exports.ELEMENT_PROBE_PROVIDERS = [
	    /*@ts2dart_Provider*/ {
	        provide: core_1.RootRenderer,
	        useFactory: _createConditionalRootRenderer,
	        deps: [dom_renderer_1.DomRootRenderer]
	    }
	];
	exports.ELEMENT_PROBE_PROVIDERS_PROD_MODE = [
	    /*@ts2dart_Provider*/ {
	        provide: core_1.RootRenderer,
	        useFactory: _createRootRenderer,
	        deps: [dom_renderer_1.DomRootRenderer]
	    }
	];
	//# sourceMappingURL=ng_probe.js.map

/***/ },
/* 120 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var core_1 = __webpack_require__(1);
	var collection_1 = __webpack_require__(22);
	var dom_adapter_1 = __webpack_require__(15);
	var dom_tokens_1 = __webpack_require__(68);
	var SharedStylesHost = (function () {
	    function SharedStylesHost() {
	        /** @internal */
	        this._styles = [];
	        /** @internal */
	        this._stylesSet = new Set();
	    }
	    SharedStylesHost.prototype.addStyles = function (styles) {
	        var _this = this;
	        var additions = [];
	        styles.forEach(function (style) {
	            if (!collection_1.SetWrapper.has(_this._stylesSet, style)) {
	                _this._stylesSet.add(style);
	                _this._styles.push(style);
	                additions.push(style);
	            }
	        });
	        this.onStylesAdded(additions);
	    };
	    SharedStylesHost.prototype.onStylesAdded = function (additions) { };
	    SharedStylesHost.prototype.getAllStyles = function () { return this._styles; };
	    SharedStylesHost.decorators = [
	        { type: core_1.Injectable },
	    ];
	    SharedStylesHost.ctorParameters = [];
	    return SharedStylesHost;
	}());
	exports.SharedStylesHost = SharedStylesHost;
	var DomSharedStylesHost = (function (_super) {
	    __extends(DomSharedStylesHost, _super);
	    function DomSharedStylesHost(doc) {
	        _super.call(this);
	        this._hostNodes = new Set();
	        this._hostNodes.add(doc.head);
	    }
	    /** @internal */
	    DomSharedStylesHost.prototype._addStylesToHost = function (styles, host) {
	        for (var i = 0; i < styles.length; i++) {
	            var style = styles[i];
	            dom_adapter_1.getDOM().appendChild(host, dom_adapter_1.getDOM().createStyleElement(style));
	        }
	    };
	    DomSharedStylesHost.prototype.addHost = function (hostNode) {
	        this._addStylesToHost(this._styles, hostNode);
	        this._hostNodes.add(hostNode);
	    };
	    DomSharedStylesHost.prototype.removeHost = function (hostNode) { collection_1.SetWrapper.delete(this._hostNodes, hostNode); };
	    DomSharedStylesHost.prototype.onStylesAdded = function (additions) {
	        var _this = this;
	        this._hostNodes.forEach(function (hostNode) { _this._addStylesToHost(additions, hostNode); });
	    };
	    DomSharedStylesHost.decorators = [
	        { type: core_1.Injectable },
	    ];
	    DomSharedStylesHost.ctorParameters = [
	        { type: undefined, decorators: [{ type: core_1.Inject, args: [dom_tokens_1.DOCUMENT,] },] },
	    ];
	    return DomSharedStylesHost;
	}(SharedStylesHost));
	exports.DomSharedStylesHost = DomSharedStylesHost;
	//# sourceMappingURL=shared_styles_host.js.map

/***/ },
/* 121 */
[462, 211, 212, 212],
/* 122 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	// todo: support template url
	var AccordionComponent = (function () {
	    function AccordionComponent() {
	        /* tslint:disable:no-unused-variable */
	        this.addClass = true;
	        /* tslint:enable:no-unused-variable */
	        this.groups = [];
	    }
	    AccordionComponent.prototype.closeOtherPanels = function (openGroup) {
	        if (!this.closeOthers) {
	            return;
	        }
	        this.groups.forEach(function (group) {
	            if (group !== openGroup) {
	                group.isOpen = false;
	            }
	        });
	    };
	    AccordionComponent.prototype.addGroup = function (group) {
	        this.groups.push(group);
	    };
	    AccordionComponent.prototype.removeGroup = function (group) {
	        var index = this.groups.indexOf(group);
	        if (index !== -1) {
	            this.groups.splice(index, 1);
	        }
	    };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], AccordionComponent.prototype, "closeOthers", void 0);
	    __decorate([
	        core_1.HostBinding('class.panel-group'), 
	        __metadata('design:type', Boolean)
	    ], AccordionComponent.prototype, "addClass", void 0);
	    AccordionComponent = __decorate([
	        core_1.Component({
	            selector: 'accordion',
	            template: "<ng-content></ng-content>"
	        }), 
	        __metadata('design:paramtypes', [])
	    ], AccordionComponent);
	    return AccordionComponent;
	}());
	exports.AccordionComponent = AccordionComponent;


/***/ },
/* 123 */
/***/ function(module, exports, __webpack_require__) {

	// todo: add animate
	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(6);
	var ng2_bootstrap_config_1 = __webpack_require__(36);
	(function (Direction) {
	    Direction[Direction["UNKNOWN"] = 0] = "UNKNOWN";
	    Direction[Direction["NEXT"] = 1] = "NEXT";
	    Direction[Direction["PREV"] = 2] = "PREV";
	})(exports.Direction || (exports.Direction = {}));
	var Direction = exports.Direction;
	var NAVIGATION = (_a = {},
	    _a[ng2_bootstrap_config_1.Ng2BootstrapTheme.BS4] = "\n    <a class=\"left carousel-control\" (click)=\"prev()\" *ngIf=\"slides.length\">\n      <span class=\"icon-prev\" aria-hidden=\"true\"></span>\n      <span class=\"sr-only\">Previous</span>\n    </a>\n    <a class=\"right carousel-control\" (click)=\"next()\" *ngIf=\"slides.length\">\n      <span class=\"icon-next\" aria-hidden=\"true\"></span>\n      <span class=\"sr-only\">Next</span>\n    </a>\n  ",
	    _a[ng2_bootstrap_config_1.Ng2BootstrapTheme.BS3] = "\n    <a class=\"left carousel-control\" (click)=\"prev()\" *ngIf=\"slides.length\">\n      <span class=\"glyphicon glyphicon-chevron-left\"></span>\n    </a>\n    <a class=\"right carousel-control\" (click)=\"next()\" *ngIf=\"slides.length\">\n      <span class=\"glyphicon glyphicon-chevron-right\"></span>\n    </a>\n  ",
	    _a
	);
	// todo:
	// (ng-swipe-right)="prev()" (ng-swipe-left)="next()"
	var CarouselComponent = (function () {
	    function CarouselComponent() {
	        this.slides = [];
	        this.destroyed = false;
	    }
	    Object.defineProperty(CarouselComponent.prototype, "interval", {
	        get: function () {
	            return this._interval;
	        },
	        set: function (value) {
	            this._interval = value;
	            this.restartTimer();
	        },
	        enumerable: true,
	        configurable: true
	    });
	    CarouselComponent.prototype.ngOnDestroy = function () {
	        this.destroyed = true;
	    };
	    CarouselComponent.prototype.select = function (nextSlide, direction) {
	        if (direction === void 0) { direction = Direction.UNKNOWN; }
	        var nextIndex = nextSlide.index;
	        if (direction === Direction.UNKNOWN) {
	            direction = nextIndex > this.getCurrentIndex()
	                ? Direction.NEXT
	                : Direction.PREV;
	        }
	        // Prevent this user-triggered transition from occurring if there is
	        // already one in progress
	        if (nextSlide && nextSlide !== this.currentSlide) {
	            this.goNext(nextSlide, direction);
	        }
	    };
	    CarouselComponent.prototype.play = function () {
	        if (!this.isPlaying) {
	            this.isPlaying = true;
	            this.restartTimer();
	        }
	    };
	    CarouselComponent.prototype.pause = function () {
	        if (!this.noPause) {
	            this.isPlaying = false;
	            this.resetTimer();
	        }
	    };
	    CarouselComponent.prototype.next = function () {
	        var newIndex = (this.getCurrentIndex() + 1) % this.slides.length;
	        if (newIndex === 0 && this.noWrap) {
	            this.pause();
	            return;
	        }
	        return this.select(this.getSlideByIndex(newIndex), Direction.NEXT);
	    };
	    CarouselComponent.prototype.prev = function () {
	        var newIndex = this.getCurrentIndex() - 1 < 0
	            ? this.slides.length - 1
	            : this.getCurrentIndex() - 1;
	        if (this.noWrap && newIndex === this.slides.length - 1) {
	            this.pause();
	            return;
	        }
	        return this.select(this.getSlideByIndex(newIndex), Direction.PREV);
	    };
	    CarouselComponent.prototype.addSlide = function (slide) {
	        slide.index = this.slides.length;
	        this.slides.push(slide);
	        if (this.slides.length === 1 || slide.active) {
	            this.select(this.slides[this.slides.length - 1]);
	            if (this.slides.length === 1) {
	                this.play();
	            }
	        }
	        else {
	            slide.active = false;
	        }
	    };
	    CarouselComponent.prototype.removeSlide = function (slide) {
	        this.slides.splice(slide.index, 1);
	        if (this.slides.length === 0) {
	            this.currentSlide = void 0;
	            return;
	        }
	        for (var i = 0; i < this.slides.length; i++) {
	            this.slides[i].index = i;
	        }
	    };
	    CarouselComponent.prototype.goNext = function (slide, direction) {
	        if (this.destroyed) {
	            return;
	        }
	        slide.direction = direction;
	        slide.active = true;
	        if (this.currentSlide) {
	            this.currentSlide.direction = direction;
	            this.currentSlide.active = false;
	        }
	        this.currentSlide = slide;
	        // every time you change slides, reset the timer
	        this.restartTimer();
	    };
	    CarouselComponent.prototype.getSlideByIndex = function (index) {
	        var len = this.slides.length;
	        for (var i = 0; i < len; ++i) {
	            if (this.slides[i].index === index) {
	                return this.slides[i];
	            }
	        }
	        return void 0;
	    };
	    CarouselComponent.prototype.getCurrentIndex = function () {
	        return !this.currentSlide ? 0 : this.currentSlide.index;
	    };
	    CarouselComponent.prototype.restartTimer = function () {
	        var _this = this;
	        this.resetTimer();
	        var interval = +this.interval;
	        if (!isNaN(interval) && interval > 0) {
	            this.currentInterval = setInterval(function () {
	                var nInterval = +_this.interval;
	                if (_this.isPlaying && !isNaN(_this.interval) && nInterval > 0 && _this.slides.length) {
	                    _this.next();
	                }
	                else {
	                    _this.pause();
	                }
	            }, interval);
	        }
	    };
	    CarouselComponent.prototype.resetTimer = function () {
	        if (this.currentInterval) {
	            clearInterval(this.currentInterval);
	            this.currentInterval = void 0;
	        }
	    };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], CarouselComponent.prototype, "noWrap", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], CarouselComponent.prototype, "noPause", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], CarouselComponent.prototype, "noTransition", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], CarouselComponent.prototype, "interval", null);
	    CarouselComponent = __decorate([
	        core_1.Component({
	            selector: 'carousel',
	            directives: [common_1.NgFor],
	            template: "\n    <div (mouseenter)=\"pause()\" (mouseleave)=\"play()\" class=\"carousel slide\">\n      <ol class=\"carousel-indicators\" *ngIf=\"slides.length > 1\">\n         <li *ngFor=\"let slidez of slides\" [class.active]=\"slidez.active === true\" (click)=\"select(slidez)\"></li>\n      </ol>\n      <div class=\"carousel-inner\"><ng-content></ng-content></div>\n      " + NAVIGATION[ng2_bootstrap_config_1.Ng2BootstrapConfig.theme] + "\n    </div>\n  "
	        }), 
	        __metadata('design:paramtypes', [])
	    ], CarouselComponent);
	    return CarouselComponent;
	}());
	exports.CarouselComponent = CarouselComponent;
	var _a;


/***/ },
/* 124 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var collapse_directive_1 = __webpack_require__(429);
	exports.CollapseDirective = collapse_directive_1.CollapseDirective;


/***/ },
/* 125 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var __param = (this && this.__param) || function (paramIndex, decorator) {
	    return function (target, key) { decorator(target, key, paramIndex); }
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(6);
	var datepicker_inner_component_1 = __webpack_require__(69);
	var daypicker_component_1 = __webpack_require__(431);
	var monthpicker_component_1 = __webpack_require__(432);
	var yearpicker_component_1 = __webpack_require__(433);
	// import {DatePickerPopup} from './datepicker-popup';
	/* tslint:disable:component-selector-name component-selector-type */
	var DatePickerComponent = (function () {
	    function DatePickerComponent(cd) {
	        this.onChange = Function.prototype;
	        this.onTouched = Function.prototype;
	        this._now = new Date();
	        this.cd = cd;
	        // hack
	        cd.valueAccessor = this;
	    }
	    Object.defineProperty(DatePickerComponent.prototype, "activeDate", {
	        get: function () {
	            return this._activeDate || this._now;
	        },
	        set: function (value) {
	            this._activeDate = value;
	        },
	        enumerable: true,
	        configurable: true
	    });
	    DatePickerComponent.prototype.onUpdate = function (event) {
	        this.writeValue(event);
	        this.cd.viewToModelUpdate(event);
	    };
	    // todo: support null value
	    DatePickerComponent.prototype.writeValue = function (value) {
	        // todo: fix something sends here new date all the time
	        // if (value) {
	        //  if (typeof value !== 'Date') {
	        //    value = new Date(value);
	        //  }
	        //
	        //  this.activeDate = value;
	        // }
	        if (value === this._activeDate) {
	            return;
	        }
	        if (value && value instanceof Date) {
	            this.activeDate = value;
	            return;
	        }
	        this.activeDate = value ? new Date(value) : void 0;
	    };
	    DatePickerComponent.prototype.registerOnChange = function (fn) { this.onChange = fn; };
	    DatePickerComponent.prototype.registerOnTouched = function (fn) { this.onTouched = fn; };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], DatePickerComponent.prototype, "datepickerMode", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Date)
	    ], DatePickerComponent.prototype, "initDate", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Date)
	    ], DatePickerComponent.prototype, "minDate", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Date)
	    ], DatePickerComponent.prototype, "maxDate", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], DatePickerComponent.prototype, "minMode", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], DatePickerComponent.prototype, "maxMode", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], DatePickerComponent.prototype, "showWeeks", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], DatePickerComponent.prototype, "formatDay", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], DatePickerComponent.prototype, "formatMonth", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], DatePickerComponent.prototype, "formatYear", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], DatePickerComponent.prototype, "formatDayHeader", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], DatePickerComponent.prototype, "formatDayTitle", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], DatePickerComponent.prototype, "formatMonthTitle", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], DatePickerComponent.prototype, "startingDay", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], DatePickerComponent.prototype, "yearRange", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], DatePickerComponent.prototype, "onlyCurrentMonth", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], DatePickerComponent.prototype, "shortcutPropagation", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Array)
	    ], DatePickerComponent.prototype, "customClass", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], DatePickerComponent.prototype, "dateDisabled", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Date)
	    ], DatePickerComponent.prototype, "activeDate", null);
	    DatePickerComponent = __decorate([
	        core_1.Component({
	            selector: 'datepicker[ngModel]',
	            template: "\n    <datepicker-inner [activeDate]=\"activeDate\"\n                      (update)=\"onUpdate($event)\"\n                      [datepickerMode]=\"datepickerMode\"\n                      [initDate]=\"initDate\"\n                      [minDate]=\"minDate\"\n                      [maxDate]=\"maxDate\"\n                      [minMode]=\"minMode\"\n                      [maxMode]=\"maxMode\"\n                      [showWeeks]=\"showWeeks\"\n                      [formatDay]=\"formatDay\"\n                      [formatMonth]=\"formatMonth\"\n                      [formatYear]=\"formatYear\"\n                      [formatDayHeader]=\"formatDayHeader\"\n                      [formatDayTitle]=\"formatDayTitle\"\n                      [formatMonthTitle]=\"formatMonthTitle\"\n                      [startingDay]=\"startingDay\"\n                      [yearRange]=\"yearRange\"\n                      [customClass]=\"customClass\"\n                      [dateDisabled]=\"dateDisabled\"\n                      [templateUrl]=\"templateUrl\"\n                      [onlyCurrentMonth]=\"onlyCurrentMonth\"\n                      [shortcutPropagation]=\"shortcutPropagation\">\n      <daypicker tabindex=\"0\"></daypicker>\n      <monthpicker tabindex=\"0\"></monthpicker>\n      <yearpicker tabindex=\"0\"></yearpicker>\n    </datepicker-inner>\n    ",
	            directives: [datepicker_inner_component_1.DatePickerInnerComponent, daypicker_component_1.DayPickerComponent, monthpicker_component_1.MonthPickerComponent, yearpicker_component_1.YearPickerComponent,
	                common_1.FORM_DIRECTIVES, common_1.CORE_DIRECTIVES]
	        }),
	        __param(0, core_1.Self()), 
	        __metadata('design:paramtypes', [common_1.NgModel])
	    ], DatePickerComponent);
	    return DatePickerComponent;
	}());
	exports.DatePickerComponent = DatePickerComponent;


/***/ },
/* 126 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var __param = (this && this.__param) || function (paramIndex, decorator) {
	    return function (target, key) { decorator(target, key, paramIndex); }
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(6);
	var paginationConfig = {
	    maxSize: void 0,
	    itemsPerPage: 10,
	    boundaryLinks: false,
	    directionLinks: true,
	    firstText: 'First',
	    previousText: 'Previous',
	    nextText: 'Next',
	    lastText: 'Last',
	    rotate: true
	};
	var PAGINATION_TEMPLATE = "\n  <ul class=\"pagination\" [ngClass]=\"classMap\">\n    <li class=\"pagination-first page-item\"\n        *ngIf=\"boundaryLinks\"\n        [class.disabled]=\"noPrevious()||disabled\">\n      <a class=\"page-link\" href (click)=\"selectPage(1, $event)\" [innerHTML]=\"getText('first')\"></a>\n    </li>\n\n    <li class=\"pagination-prev page-item\"\n        *ngIf=\"directionLinks\"\n        [class.disabled]=\"noPrevious()||disabled\">\n      <a class=\"page-link\" href (click)=\"selectPage(page - 1, $event)\" [innerHTML]=\"getText('previous')\"></a>\n      </li>\n\n    <li *ngFor=\"let pg of pages\"\n        [class.active]=\"pg.active\"\n        [class.disabled]=\"disabled&&!pg.active\"\n        class=\"pagination-page page-item\">\n      <a class=\"page-link\" href (click)=\"selectPage(pg.number, $event)\" [innerHTML]=\"pg.text\"></a>\n    </li>\n\n    <li class=\"pagination-next page-item\"\n        *ngIf=\"directionLinks\"\n        [class.disabled]=\"noNext()\">\n      <a class=\"page-link\" href (click)=\"selectPage(page + 1, $event)\" [innerHTML]=\"getText('next')\"></a></li>\n\n    <li class=\"pagination-last page-item\"\n        *ngIf=\"boundaryLinks\"\n        [class.disabled]=\"noNext()\">\n      <a class=\"page-link\" href (click)=\"selectPage(totalPages, $event)\" [innerHTML]=\"getText('last')\"></a></li>\n  </ul>\n  ";
	/* tslint:disable */
	var PaginationComponent = (function () {
	    function PaginationComponent(cd, renderer, elementRef) {
	        this.numPages = new core_1.EventEmitter(false);
	        this.pageChanged = new core_1.EventEmitter(false);
	        this.onChange = Function.prototype;
	        this.onTouched = Function.prototype;
	        this.inited = false;
	        this.cd = cd;
	        this.renderer = renderer;
	        this.elementRef = elementRef;
	        cd.valueAccessor = this;
	        this.config = this.config || paginationConfig;
	    }
	    Object.defineProperty(PaginationComponent.prototype, "itemsPerPage", {
	        get: function () {
	            return this._itemsPerPage;
	        },
	        set: function (v) {
	            this._itemsPerPage = v;
	            this.totalPages = this.calculateTotalPages();
	        },
	        enumerable: true,
	        configurable: true
	    });
	    Object.defineProperty(PaginationComponent.prototype, "totalItems", {
	        get: function () {
	            return this._totalItems;
	        },
	        set: function (v) {
	            this._totalItems = v;
	            this.totalPages = this.calculateTotalPages();
	        },
	        enumerable: true,
	        configurable: true
	    });
	    Object.defineProperty(PaginationComponent.prototype, "totalPages", {
	        get: function () {
	            return this._totalPages;
	        },
	        set: function (v) {
	            this._totalPages = v;
	            this.numPages.emit(v);
	            if (this.inited) {
	                this.selectPage(this.page);
	            }
	        },
	        enumerable: true,
	        configurable: true
	    });
	    Object.defineProperty(PaginationComponent.prototype, "page", {
	        get: function () {
	            return this._page;
	        },
	        set: function (value) {
	            var _previous = this._page;
	            this._page = (value > this.totalPages) ? this.totalPages : (value || 1);
	            if (_previous === this._page || typeof _previous === 'undefined') {
	                return;
	            }
	            this.pageChanged.emit({
	                page: this._page,
	                itemsPerPage: this.itemsPerPage
	            });
	        },
	        enumerable: true,
	        configurable: true
	    });
	    PaginationComponent.prototype.ngOnInit = function () {
	        this.classMap = this.elementRef.nativeElement.getAttribute('class') || '';
	        // watch for maxSize
	        this.maxSize = typeof this.maxSize !== 'undefined'
	            ? this.maxSize
	            : paginationConfig.maxSize;
	        this.rotate = typeof this.rotate !== 'undefined'
	            ? this.rotate
	            : paginationConfig.rotate;
	        this.boundaryLinks = typeof this.boundaryLinks !== 'undefined'
	            ? this.boundaryLinks
	            : paginationConfig.boundaryLinks;
	        this.directionLinks = typeof this.directionLinks !== 'undefined'
	            ? this.directionLinks
	            : paginationConfig.directionLinks;
	        // base class
	        this.itemsPerPage = typeof this.itemsPerPage !== 'undefined'
	            ? this.itemsPerPage
	            : paginationConfig.itemsPerPage;
	        this.totalPages = this.calculateTotalPages();
	        // this class
	        this.pages = this.getPages(this.page, this.totalPages);
	        this.page = this.cd.value;
	        this.inited = true;
	    };
	    PaginationComponent.prototype.writeValue = function (value) {
	        this.page = value;
	        this.pages = this.getPages(this.page, this.totalPages);
	    };
	    PaginationComponent.prototype.getText = function (key) {
	        return this[key + 'Text'] || paginationConfig[key + 'Text'];
	    };
	    PaginationComponent.prototype.noPrevious = function () {
	        return this.page === 1;
	    };
	    PaginationComponent.prototype.noNext = function () {
	        return this.page === this.totalPages;
	    };
	    PaginationComponent.prototype.registerOnChange = function (fn) { this.onChange = fn; };
	    PaginationComponent.prototype.registerOnTouched = function (fn) { this.onTouched = fn; };
	    PaginationComponent.prototype.selectPage = function (page, event) {
	        if (event) {
	            event.preventDefault();
	        }
	        if (!this.disabled) {
	            if (event && event.target) {
	                var target = event.target;
	                target.blur();
	            }
	            this.writeValue(page);
	            this.cd.viewToModelUpdate(this.page);
	        }
	    };
	    // Create page object used in template
	    PaginationComponent.prototype.makePage = function (num, text, isActive) {
	        return {
	            number: num,
	            text: text,
	            active: isActive
	        };
	    };
	    PaginationComponent.prototype.getPages = function (currentPage, totalPages) {
	        var pages = [];
	        // Default page limits
	        var startPage = 1;
	        var endPage = totalPages;
	        var isMaxSized = typeof this.maxSize !== 'undefined' && this.maxSize < totalPages;
	        // recompute if maxSize
	        if (isMaxSized) {
	            if (this.rotate) {
	                // Current page is displayed in the middle of the visible ones
	                startPage = Math.max(currentPage - Math.floor(this.maxSize / 2), 1);
	                endPage = startPage + this.maxSize - 1;
	                // Adjust if limit is exceeded
	                if (endPage > totalPages) {
	                    endPage = totalPages;
	                    startPage = endPage - this.maxSize + 1;
	                }
	            }
	            else {
	                // Visible pages are paginated with maxSize
	                startPage = ((Math.ceil(currentPage / this.maxSize) - 1) * this.maxSize) + 1;
	                // Adjust last page if limit is exceeded
	                endPage = Math.min(startPage + this.maxSize - 1, totalPages);
	            }
	        }
	        // Add page number links
	        for (var num = startPage; num <= endPage; num++) {
	            var page = this.makePage(num, num.toString(), num === currentPage);
	            pages.push(page);
	        }
	        // Add links to move between page sets
	        if (isMaxSized && !this.rotate) {
	            if (startPage > 1) {
	                var previousPageSet = this.makePage(startPage - 1, '...', false);
	                pages.unshift(previousPageSet);
	            }
	            if (endPage < totalPages) {
	                var nextPageSet = this.makePage(endPage + 1, '...', false);
	                pages.push(nextPageSet);
	            }
	        }
	        return pages;
	    };
	    // base class
	    PaginationComponent.prototype.calculateTotalPages = function () {
	        var totalPages = this.itemsPerPage < 1
	            ? 1
	            : Math.ceil(this.totalItems / this.itemsPerPage);
	        return Math.max(totalPages || 0, 1);
	    };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], PaginationComponent.prototype, "maxSize", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], PaginationComponent.prototype, "boundaryLinks", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], PaginationComponent.prototype, "directionLinks", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], PaginationComponent.prototype, "firstText", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], PaginationComponent.prototype, "previousText", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], PaginationComponent.prototype, "nextText", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], PaginationComponent.prototype, "lastText", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], PaginationComponent.prototype, "rotate", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], PaginationComponent.prototype, "disabled", void 0);
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', core_1.EventEmitter)
	    ], PaginationComponent.prototype, "numPages", void 0);
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', core_1.EventEmitter)
	    ], PaginationComponent.prototype, "pageChanged", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], PaginationComponent.prototype, "itemsPerPage", null);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], PaginationComponent.prototype, "totalItems", null);
	    PaginationComponent = __decorate([
	        core_1.Component({
	            selector: 'pagination[ngModel]',
	            template: PAGINATION_TEMPLATE,
	            directives: [common_1.NgFor, common_1.NgIf]
	        }),
	        __param(0, core_1.Self()), 
	        __metadata('design:paramtypes', [common_1.NgModel, core_1.Renderer, core_1.ElementRef])
	    ], PaginationComponent);
	    return PaginationComponent;
	}());
	exports.PaginationComponent = PaginationComponent;


/***/ },
/* 127 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var __param = (this && this.__param) || function (paramIndex, decorator) {
	    return function (target, key) { decorator(target, key, paramIndex); }
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(6);
	var progress_directive_1 = __webpack_require__(72);
	// todo: number pipe
	// todo: use query from progress?
	var BarComponent = (function () {
	    function BarComponent(progress) {
	        this.percent = 0;
	        this.progress = progress;
	    }
	    Object.defineProperty(BarComponent.prototype, "value", {
	        get: function () {
	            return this._value;
	        },
	        set: function (v) {
	            if (!v && v !== 0) {
	                return;
	            }
	            this._value = v;
	            this.recalculatePercentage();
	        },
	        enumerable: true,
	        configurable: true
	    });
	    BarComponent.prototype.ngOnInit = function () {
	        this.progress.addBar(this);
	    };
	    BarComponent.prototype.ngOnDestroy = function () {
	        this.progress.removeBar(this);
	    };
	    BarComponent.prototype.recalculatePercentage = function () {
	        this.percent = +(100 * this.value / this.progress.max).toFixed(2);
	        var totalPercentage = this.progress.bars.reduce(function (total, bar) {
	            return total + bar.percent;
	        }, 0);
	        if (totalPercentage > 100) {
	            this.percent -= totalPercentage - 100;
	        }
	    };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], BarComponent.prototype, "type", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], BarComponent.prototype, "value", null);
	    BarComponent = __decorate([
	        core_1.Component({
	            selector: 'bar',
	            directives: [common_1.NgClass, common_1.NgStyle],
	            template: "\n  <div class=\"progress-bar\"\n    style=\"min-width: 0;\"\n    role=\"progressbar\"\n    [ngClass]=\"type && 'progress-bar-' + type\"\n    [ngStyle]=\"{width: (percent < 100 ? percent : 100) + '%', transition: transition}\"\n    aria-valuemin=\"0\"\n    [attr.aria-valuenow]=\"value\"\n    [attr.aria-valuetext]=\"percent.toFixed(0) + '%'\"\n    [attr.aria-valuemax]=\"max\"><ng-content></ng-content></div>\n"
	        }),
	        __param(0, core_1.Host()), 
	        __metadata('design:paramtypes', [progress_directive_1.ProgressDirective])
	    ], BarComponent);
	    return BarComponent;
	}());
	exports.BarComponent = BarComponent;


/***/ },
/* 128 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var tabset_component_1 = __webpack_require__(129);
	/* tslint:disable */
	var TabDirective = (function () {
	    function TabDirective(tabset) {
	        this.select = new core_1.EventEmitter(false);
	        this.deselect = new core_1.EventEmitter(false);
	        this.removed = new core_1.EventEmitter(false);
	        this.addClass = true;
	        this.tabset = tabset;
	        this.tabset.addTab(this);
	    }
	    Object.defineProperty(TabDirective.prototype, "active", {
	        /** tab active state toggle */
	        get: function () {
	            return this._active;
	        },
	        set: function (active) {
	            var _this = this;
	            if (this.disabled && active || !active) {
	                if (!active) {
	                    this._active = active;
	                }
	                this.deselect.emit(this);
	                return;
	            }
	            this._active = active;
	            this.select.emit(this);
	            this.tabset.tabs.forEach(function (tab) {
	                if (tab !== _this) {
	                    tab.active = false;
	                }
	            });
	        },
	        enumerable: true,
	        configurable: true
	    });
	    TabDirective.prototype.ngOnInit = function () { this.removable = !!this.removable; };
	    TabDirective.prototype.ngOnDestroy = function () {
	        this.tabset.removeTab(this);
	    };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], TabDirective.prototype, "heading", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], TabDirective.prototype, "disabled", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], TabDirective.prototype, "removable", void 0);
	    __decorate([
	        core_1.HostBinding('class.active'),
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], TabDirective.prototype, "active", null);
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', core_1.EventEmitter)
	    ], TabDirective.prototype, "select", void 0);
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', core_1.EventEmitter)
	    ], TabDirective.prototype, "deselect", void 0);
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', core_1.EventEmitter)
	    ], TabDirective.prototype, "removed", void 0);
	    __decorate([
	        core_1.HostBinding('class.tab-pane'), 
	        __metadata('design:type', Boolean)
	    ], TabDirective.prototype, "addClass", void 0);
	    TabDirective = __decorate([
	        core_1.Directive({ selector: 'tab, [tab]' }), 
	        __metadata('design:paramtypes', [tabset_component_1.TabsetComponent])
	    ], TabDirective);
	    return TabDirective;
	}());
	exports.TabDirective = TabDirective;


/***/ },
/* 129 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(6);
	var common_2 = __webpack_require__(323);
	// todo: add active event to tab
	// todo: fix? mixing static and dynamic tabs position tabs in order of creation
	var TabsetComponent = (function () {
	    function TabsetComponent() {
	        this.clazz = true;
	        this.tabs = [];
	        this.classMap = {};
	    }
	    Object.defineProperty(TabsetComponent.prototype, "vertical", {
	        get: function () { return this._vertical; },
	        set: function (value) {
	            this._vertical = value;
	            this.setClassMap();
	        },
	        enumerable: true,
	        configurable: true
	    });
	    ;
	    Object.defineProperty(TabsetComponent.prototype, "justified", {
	        get: function () { return this._justified; },
	        set: function (value) {
	            this._justified = value;
	            this.setClassMap();
	        },
	        enumerable: true,
	        configurable: true
	    });
	    ;
	    Object.defineProperty(TabsetComponent.prototype, "type", {
	        get: function () { return this._type; },
	        set: function (value) {
	            this._type = value;
	            this.setClassMap();
	        },
	        enumerable: true,
	        configurable: true
	    });
	    ;
	    TabsetComponent.prototype.ngOnInit = function () {
	        this.type = this.type !== 'undefined' ? this.type : 'tabs';
	    };
	    TabsetComponent.prototype.ngOnDestroy = function () {
	        this.isDestroyed = true;
	    };
	    TabsetComponent.prototype.addTab = function (tab) {
	        this.tabs.push(tab);
	        tab.active = this.tabs.length === 1 && tab.active !== false;
	    };
	    TabsetComponent.prototype.removeTab = function (tab) {
	        var index = this.tabs.indexOf(tab);
	        if (index === -1 || this.isDestroyed) {
	            return;
	        }
	        // Select a new tab if the tab to be removed is selected and not destroyed
	        if (tab.active && this.hasAvailableTabs(index)) {
	            var newActiveIndex = this.getClosestTabIndex(index);
	            this.tabs[newActiveIndex].active = true;
	        }
	        tab.removed.emit(tab);
	        this.tabs.splice(index, 1);
	    };
	    TabsetComponent.prototype.getClosestTabIndex = function (index) {
	        var tabsLength = this.tabs.length;
	        if (!tabsLength) {
	            return -1;
	        }
	        for (var step = 1; step <= tabsLength; step += 1) {
	            var prevIndex = index - step;
	            var nextIndex = index + step;
	            if (this.tabs[prevIndex] && !this.tabs[prevIndex].disabled) {
	                return prevIndex;
	            }
	            if (this.tabs[nextIndex] && !this.tabs[nextIndex].disabled) {
	                return nextIndex;
	            }
	        }
	        return -1;
	    };
	    TabsetComponent.prototype.hasAvailableTabs = function (index) {
	        var tabsLength = this.tabs.length;
	        if (!tabsLength) {
	            return false;
	        }
	        for (var i = 0; i < tabsLength; i += 1) {
	            if (!this.tabs[i].disabled && i !== index) {
	                return true;
	            }
	        }
	        return false;
	    };
	    TabsetComponent.prototype.setClassMap = function () {
	        this.classMap = (_a = {
	                'nav-stacked': this.vertical,
	                'nav-justified': this.justified
	            },
	            _a['nav-' + (this.type || 'tabs')] = true,
	            _a
	        );
	        var _a;
	    };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], TabsetComponent.prototype, "vertical", null);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], TabsetComponent.prototype, "justified", null);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], TabsetComponent.prototype, "type", null);
	    __decorate([
	        core_1.HostBinding('class.tab-container'), 
	        __metadata('design:type', Boolean)
	    ], TabsetComponent.prototype, "clazz", void 0);
	    TabsetComponent = __decorate([
	        core_1.Component({
	            selector: 'tabset',
	            directives: [common_1.NgClass, common_2.NgTranscludeDirective],
	            template: "\n    <ul class=\"nav\" [ngClass]=\"classMap\" (click)=\"$event.preventDefault()\">\n        <li *ngFor=\"let tabz of tabs\" class=\"nav-item\"\n          [class.active]=\"tabz.active\" [class.disabled]=\"tabz.disabled\">\n          <a href class=\"nav-link\"\n            [class.active]=\"tabz.active\" [class.disabled]=\"tabz.disabled\"\n            (click)=\"tabz.active = true\">\n            <span [ngTransclude]=\"tabz.headingRef\">{{tabz.heading}}</span>\n            <span *ngIf=\"tabz.removable\">\n              <span (click)=\"$event.preventDefault(); removeTab(tabz);\" class=\"glyphicon glyphicon-remove-circle\"></span>\n            </span>\n          </a>\n        </li>\n    </ul>\n    <div class=\"tab-content\">\n      <ng-content></ng-content>\n    </div>\n  "
	        }), 
	        __metadata('design:paramtypes', [])
	    ], TabsetComponent);
	    return TabsetComponent;
	}());
	exports.TabsetComponent = TabsetComponent;


/***/ },
/* 130 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var __param = (this && this.__param) || function (paramIndex, decorator) {
	    return function (target, key) { decorator(target, key, paramIndex); }
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(6);
	var position_1 = __webpack_require__(71);
	var tooltip_options_class_1 = __webpack_require__(338);
	var TooltipContainerComponent = (function () {
	    function TooltipContainerComponent(element, cdr, options) {
	        this.top = '-1000px';
	        this.left = '-1000px';
	        this.display = 'block';
	        this.element = element;
	        this.cdr = cdr;
	        Object.assign(this, options);
	        this.classMap = { 'in': false, 'fade': false };
	        this.classMap[options.placement] = true;
	    }
	    TooltipContainerComponent.prototype.ngAfterViewInit = function () {
	        var p = position_1.positionService
	            .positionElements(this.hostEl.nativeElement, this.element.nativeElement.children[0], this.placement, this.appendToBody);
	        this.top = p.top + 'px';
	        this.left = p.left + 'px';
	        this.classMap.in = true;
	        if (this.animation) {
	            this.classMap.fade = true;
	        }
	        this.cdr.detectChanges();
	    };
	    TooltipContainerComponent = __decorate([
	        core_1.Component({
	            selector: 'tooltip-container',
	            directives: [common_1.NgClass, common_1.NgStyle],
	            // changeDetection: ChangeDetectionStrategy.OnPush,
	            template: "<div class=\"tooltip\" role=\"tooltip\"\n     [ngStyle]=\"{top: top, left: left, display: display}\"\n     [ngClass]=\"classMap\">\n      <div class=\"tooltip-arrow\"></div>\n      <div class=\"tooltip-inner\">\n        {{content}}\n      </div>\n    </div>"
	        }),
	        __param(2, core_1.Inject(tooltip_options_class_1.TooltipOptions)), 
	        __metadata('design:paramtypes', [core_1.ElementRef, core_1.ChangeDetectorRef, tooltip_options_class_1.TooltipOptions])
	    ], TooltipContainerComponent);
	    return TooltipContainerComponent;
	}());
	exports.TooltipContainerComponent = TooltipContainerComponent;


/***/ },
/* 131 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(6);
	var typeahead_utils_1 = __webpack_require__(341);
	var typeahead_options_class_1 = __webpack_require__(132);
	var position_1 = __webpack_require__(71);
	var ng2_bootstrap_config_1 = __webpack_require__(36);
	var TEMPLATE = (_a = {},
	    _a[ng2_bootstrap_config_1.Ng2BootstrapTheme.BS4] = "\n  <div class=\"dropdown-menu\"\n       style=\"display: block\"\n      [ngStyle]=\"{top: top, left: left, display: display}\"\n      (mouseleave)=\"focusLost()\">\n      <a href=\"#\"\n         *ngFor=\"let match of matches\"\n         class=\"dropdown-item\"\n         (click)=\"selectMatch(match, $event)\"\n         (mouseenter)=\"selectActive(match)\"\n         [class.active]=\"isActive(match)\"\n         [innerHtml]=\"hightlight(match, query)\"></a>\n  </div>\n  ",
	    _a[ng2_bootstrap_config_1.Ng2BootstrapTheme.BS3] = "\n  <ul class=\"dropdown-menu\"\n      style=\"display: block\"\n      [ngStyle]=\"{top: top, left: left, display: display}\"\n      (mouseleave)=\"focusLost()\">\n    <li *ngFor=\"let match of matches\"\n        [class.active]=\"isActive(match)\"\n        (mouseenter)=\"selectActive(match)\">\n        <a href=\"#\" (click)=\"selectMatch(match, $event)\" tabindex=\"-1\" [innerHtml]=\"hightlight(match, query)\"></a>\n    </li>\n  </ul>\n  ",
	    _a
	);
	var TypeaheadContainerComponent = (function () {
	    function TypeaheadContainerComponent(element, options) {
	        this.isFocused = false;
	        this._matches = [];
	        this.element = element;
	        Object.assign(this, options);
	    }
	    Object.defineProperty(TypeaheadContainerComponent.prototype, "matches", {
	        get: function () {
	            return this._matches;
	        },
	        set: function (value) {
	            this._matches = value;
	            if (this._matches.length > 0) {
	                this._active = this._matches[0];
	            }
	        },
	        enumerable: true,
	        configurable: true
	    });
	    Object.defineProperty(TypeaheadContainerComponent.prototype, "field", {
	        set: function (value) {
	            this._field = value;
	        },
	        enumerable: true,
	        configurable: true
	    });
	    TypeaheadContainerComponent.prototype.position = function (hostEl) {
	        this.display = 'block';
	        this.top = '0px';
	        this.left = '0px';
	        var p = position_1.positionService
	            .positionElements(hostEl.nativeElement, this.element.nativeElement.children[0], this.placement, false);
	        this.top = p.top + 'px';
	        this.left = p.left + 'px';
	    };
	    TypeaheadContainerComponent.prototype.selectActiveMatch = function () {
	        this.selectMatch(this._active);
	    };
	    TypeaheadContainerComponent.prototype.prevActiveMatch = function () {
	        var index = this.matches.indexOf(this._active);
	        this._active = this.matches[index - 1 < 0
	            ? this.matches.length - 1
	            : index - 1];
	    };
	    TypeaheadContainerComponent.prototype.nextActiveMatch = function () {
	        var index = this.matches.indexOf(this._active);
	        this._active = this.matches[index + 1 > this.matches.length - 1
	            ? 0
	            : index + 1];
	    };
	    TypeaheadContainerComponent.prototype.selectActive = function (value) {
	        this.isFocused = true;
	        this._active = value;
	    };
	    TypeaheadContainerComponent.prototype.hightlight = function (item, query) {
	        var itemStr = (typeof item === 'object' && this._field
	            ? item[this._field]
	            : item).toString();
	        var itemStrHelper = (this.parent.typeaheadLatinize
	            ? typeahead_utils_1.TypeaheadUtils.latinize(itemStr)
	            : itemStr).toLowerCase();
	        var startIdx;
	        var tokenLen;
	        // Replaces the capture string with the same string inside of a "strong" tag
	        if (typeof query === 'object') {
	            var queryLen = query.length;
	            for (var i = 0; i < queryLen; i += 1) {
	                // query[i] is already latinized and lower case
	                startIdx = itemStrHelper.indexOf(query[i]);
	                tokenLen = query[i].length;
	                if (startIdx >= 0 && tokenLen > 0) {
	                    itemStr = itemStr.substring(0, startIdx) + '<strong>' + itemStr.substring(startIdx, startIdx + tokenLen) + '</strong>' + itemStr.substring(startIdx + tokenLen);
	                    itemStrHelper = itemStrHelper.substring(0, startIdx) + '        ' + ' '.repeat(tokenLen) + '         ' + itemStrHelper.substring(startIdx + tokenLen);
	                }
	            }
	        }
	        else if (query) {
	            // query is already latinized and lower case
	            startIdx = itemStrHelper.indexOf(query);
	            tokenLen = query.length;
	            if (startIdx >= 0 && tokenLen > 0) {
	                itemStr = itemStr.substring(0, startIdx) + '<strong>' + itemStr.substring(startIdx, startIdx + tokenLen) + '</strong>' + itemStr.substring(startIdx + tokenLen);
	            }
	        }
	        return itemStr;
	    };
	    TypeaheadContainerComponent.prototype.focusLost = function () {
	        this.isFocused = false;
	    };
	    TypeaheadContainerComponent.prototype.isActive = function (value) {
	        return this._active === value;
	    };
	    TypeaheadContainerComponent.prototype.selectMatch = function (value, e) {
	        if (e === void 0) { e = void 0; }
	        if (e) {
	            e.stopPropagation();
	            e.preventDefault();
	        }
	        this.parent.changeModel(value);
	        this.parent.typeaheadOnSelect.emit({
	            item: value
	        });
	        return false;
	    };
	    TypeaheadContainerComponent = __decorate([
	        core_1.Component({
	            selector: 'typeahead-container',
	            directives: [common_1.CORE_DIRECTIVES],
	            template: TEMPLATE[ng2_bootstrap_config_1.Ng2BootstrapConfig.theme],
	            encapsulation: core_1.ViewEncapsulation.None
	        }), 
	        __metadata('design:paramtypes', [core_1.ElementRef, typeahead_options_class_1.TypeaheadOptions])
	    ], TypeaheadContainerComponent);
	    return TypeaheadContainerComponent;
	}());
	exports.TypeaheadContainerComponent = TypeaheadContainerComponent;
	var _a;


/***/ },
/* 132 */
/***/ function(module, exports) {

	"use strict";
	var TypeaheadOptions = (function () {
	    function TypeaheadOptions(options) {
	        Object.assign(this, options);
	    }
	    return TypeaheadOptions;
	}());
	exports.TypeaheadOptions = TypeaheadOptions;


/***/ },
/* 133 */,
/* 134 */,
/* 135 */,
/* 136 */,
/* 137 */,
/* 138 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var core_1 = __webpack_require__(1);
	var file_like_object_class_1 = __webpack_require__(45);
	var FileItem = (function () {
	    function FileItem(uploader, some, options) {
	        this.alias = 'file';
	        this.url = '/';
	        this.method = 'POST';
	        this.headers = [];
	        this.withCredentials = true;
	        this.formData = [];
	        this.isReady = false;
	        this.isUploading = false;
	        this.isUploaded = false;
	        this.isSuccess = false;
	        this.isCancel = false;
	        this.isError = false;
	        this.progress = 0;
	        this.index = void 0;
	        this.uploader = uploader;
	        this.some = some;
	        this.options = options;
	        this.file = new file_like_object_class_1.FileLikeObject(some);
	        this._file = some;
	        this.url = uploader.options.url;
	        this._zone = new core_1.NgZone({ enableLongStackTrace: false });
	    }
	    FileItem.prototype.upload = function () {
	        try {
	            this.uploader.uploadItem(this);
	        }
	        catch (e) {
	            this.uploader._onCompleteItem(this, '', 0, []);
	            this.uploader._onErrorItem(this, '', 0, []);
	        }
	    };
	    FileItem.prototype.cancel = function () {
	        this.uploader.cancelItem(this);
	    };
	    FileItem.prototype.remove = function () {
	        this.uploader.removeFromQueue(this);
	    };
	    FileItem.prototype.onBeforeUpload = function () {
	        return void 0;
	    };
	    FileItem.prototype.onBuildForm = function (form) {
	        return { form: form };
	    };
	    FileItem.prototype.onProgress = function (progress) {
	        return { progress: progress };
	    };
	    FileItem.prototype.onSuccess = function (response, status, headers) {
	        return { response: response, status: status, headers: headers };
	    };
	    FileItem.prototype.onError = function (response, status, headers) {
	        return { response: response, status: status, headers: headers };
	    };
	    FileItem.prototype.onCancel = function (response, status, headers) {
	        return { response: response, status: status, headers: headers };
	    };
	    FileItem.prototype.onComplete = function (response, status, headers) {
	        return { response: response, status: status, headers: headers };
	    };
	    FileItem.prototype._onBeforeUpload = function () {
	        this.isReady = true;
	        this.isUploading = true;
	        this.isUploaded = false;
	        this.isSuccess = false;
	        this.isCancel = false;
	        this.isError = false;
	        this.progress = 0;
	        this.onBeforeUpload();
	    };
	    FileItem.prototype._onBuildForm = function (form) {
	        this.onBuildForm(form);
	    };
	    FileItem.prototype._onProgress = function (progress) {
	        var _this = this;
	        this._zone.run(function () {
	            _this.progress = progress;
	        });
	        this.onProgress(progress);
	    };
	    FileItem.prototype._onSuccess = function (response, status, headers) {
	        this.isReady = false;
	        this.isUploading = false;
	        this.isUploaded = true;
	        this.isSuccess = true;
	        this.isCancel = false;
	        this.isError = false;
	        this.progress = 100;
	        this.index = void 0;
	        this.onSuccess(response, status, headers);
	    };
	    FileItem.prototype._onError = function (response, status, headers) {
	        this.isReady = false;
	        this.isUploading = false;
	        this.isUploaded = true;
	        this.isSuccess = false;
	        this.isCancel = false;
	        this.isError = true;
	        this.progress = 0;
	        this.index = void 0;
	        this.onError(response, status, headers);
	    };
	    FileItem.prototype._onCancel = function (response, status, headers) {
	        this.isReady = false;
	        this.isUploading = false;
	        this.isUploaded = false;
	        this.isSuccess = false;
	        this.isCancel = true;
	        this.isError = false;
	        this.progress = 0;
	        this.index = void 0;
	        this.onCancel(response, status, headers);
	    };
	    FileItem.prototype._onComplete = function (response, status, headers) {
	        this.onComplete(response, status, headers);
	        if (this.uploader.options.removeAfterUpload) {
	            this.remove();
	        }
	    };
	    FileItem.prototype._prepareToUploading = function () {
	        this.index = this.index || ++this.uploader._nextIndex;
	        this.isReady = true;
	    };
	    return FileItem;
	}());
	exports.FileItem = FileItem;


/***/ },
/* 139 */
/***/ function(module, exports) {

	"use strict";
	var FileType = (function () {
	    function FileType() {
	    }
	    FileType.getMimeClass = function (file) {
	        var mimeClass = 'application';
	        if (this.mime_psd.indexOf(file.type) !== -1) {
	            mimeClass = 'image';
	        }
	        else if (file.type.match('image.*')) {
	            mimeClass = 'image';
	        }
	        else if (file.type.match('video.*')) {
	            mimeClass = 'video';
	        }
	        else if (file.type.match('audio.*')) {
	            mimeClass = 'audio';
	        }
	        else if (file.type === 'application/pdf') {
	            mimeClass = 'pdf';
	        }
	        else if (this.mime_compress.indexOf(file.type) !== -1) {
	            mimeClass = 'compress';
	        }
	        else if (this.mime_doc.indexOf(file.type) !== -1) {
	            mimeClass = 'doc';
	        }
	        else if (this.mime_xsl.indexOf(file.type) !== -1) {
	            mimeClass = 'xls';
	        }
	        else if (this.mime_ppt.indexOf(file.type) !== -1) {
	            mimeClass = 'ppt';
	        }
	        if (mimeClass === 'application') {
	            mimeClass = this.fileTypeDetection(file.name);
	        }
	        return mimeClass;
	    };
	    FileType.fileTypeDetection = function (inputFilename) {
	        var types = {
	            'jpg': 'image',
	            'jpeg': 'image',
	            'tif': 'image',
	            'psd': 'image',
	            'bmp': 'image',
	            'png': 'image',
	            'nef': 'image',
	            'tiff': 'image',
	            'cr2': 'image',
	            'dwg': 'image',
	            'cdr': 'image',
	            'ai': 'image',
	            'indd': 'image',
	            'pin': 'image',
	            'cdp': 'image',
	            'skp': 'image',
	            'stp': 'image',
	            '3dm': 'image',
	            'mp3': 'audio',
	            'wav': 'audio',
	            'wma': 'audio',
	            'mod': 'audio',
	            'm4a': 'audio',
	            'compress': 'compress',
	            'rar': 'compress',
	            '7z': 'compress',
	            'lz': 'compress',
	            'z01': 'compress',
	            'pdf': 'pdf',
	            'xls': 'xls',
	            'xlsx': 'xls',
	            'ods': 'xls',
	            'mp4': 'video',
	            'avi': 'video',
	            'wmv': 'video',
	            'mpg': 'video',
	            'mts': 'video',
	            'flv': 'video',
	            '3gp': 'video',
	            'vob': 'video',
	            'm4v': 'video',
	            'mpeg': 'video',
	            'm2ts': 'video',
	            'mov': 'video',
	            'doc': 'doc',
	            'docx': 'doc',
	            'eps': 'doc',
	            'txt': 'doc',
	            'odt': 'doc',
	            'rtf': 'doc',
	            'ppt': 'ppt',
	            'pptx': 'ppt',
	            'pps': 'ppt',
	            'ppsx': 'ppt',
	            'odp': 'ppt'
	        };
	        var chunks = inputFilename.split('.');
	        if (chunks.length < 2) {
	            return 'application';
	        }
	        var extension = chunks[chunks.length - 1].toLowerCase();
	        if (types[extension] === undefined) {
	            return 'application';
	        }
	        else {
	            return types[extension];
	        }
	    };
	    FileType.mime_doc = [
	        'application/msword',
	        'application/msword',
	        'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
	        'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
	        'application/vnd.ms-word.document.macroEnabled.12',
	        'application/vnd.ms-word.template.macroEnabled.12'
	    ];
	    FileType.mime_xsl = [
	        'application/vnd.ms-excel',
	        'application/vnd.ms-excel',
	        'application/vnd.ms-excel',
	        'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
	        'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
	        'application/vnd.ms-excel.sheet.macroEnabled.12',
	        'application/vnd.ms-excel.template.macroEnabled.12',
	        'application/vnd.ms-excel.addin.macroEnabled.12',
	        'application/vnd.ms-excel.sheet.binary.macroEnabled.12'
	    ];
	    FileType.mime_ppt = [
	        'application/vnd.ms-powerpoint',
	        'application/vnd.ms-powerpoint',
	        'application/vnd.ms-powerpoint',
	        'application/vnd.ms-powerpoint',
	        'application/vnd.openxmlformats-officedocument.presentationml.presentation',
	        'application/vnd.openxmlformats-officedocument.presentationml.template',
	        'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
	        'application/vnd.ms-powerpoint.addin.macroEnabled.12',
	        'application/vnd.ms-powerpoint.presentation.macroEnabled.12',
	        'application/vnd.ms-powerpoint.presentation.macroEnabled.12',
	        'application/vnd.ms-powerpoint.slideshow.macroEnabled.12'
	    ];
	    FileType.mime_psd = [
	        'image/photoshop',
	        'image/x-photoshop',
	        'image/psd',
	        'application/photoshop',
	        'application/psd',
	        'zz-application/zz-winassoc-psd'
	    ];
	    FileType.mime_compress = [
	        'application/x-gtar',
	        'application/x-gcompress',
	        'application/compress',
	        'application/x-tar',
	        'application/x-rar-compressed',
	        'application/octet-stream'
	    ];
	    return FileType;
	}());
	exports.FileType = FileType;


/***/ },
/* 140 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	function __export(m) {
	    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
	}
	__export(__webpack_require__(46));
	__export(__webpack_require__(44));
	__export(__webpack_require__(28));
	var file_select_directive_2 = __webpack_require__(46);
	var file_drop_directive_2 = __webpack_require__(44);
	exports.FILE_UPLOAD_DIRECTIVES = [file_select_directive_2.FileSelectDirective, file_drop_directive_2.FileDropDirective];
	Object.defineProperty(exports, "__esModule", { value: true });
	exports.default = {
	    directives: [
	        exports.FILE_UPLOAD_DIRECTIVES
	    ]
	};


/***/ },
/* 141 */,
/* 142 */,
/* 143 */,
/* 144 */,
/* 145 */,
/* 146 */,
/* 147 */,
/* 148 */,
/* 149 */,
/* 150 */,
/* 151 */,
/* 152 */,
/* 153 */,
/* 154 */,
/* 155 */,
/* 156 */,
/* 157 */,
/* 158 */,
/* 159 */,
/* 160 */,
/* 161 */,
/* 162 */,
/* 163 */,
/* 164 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var core_1 = __webpack_require__(1);
	var lang_1 = __webpack_require__(3);
	var exceptions_1 = __webpack_require__(8);
	var async_1 = __webpack_require__(89);
	var compile_metadata_1 = __webpack_require__(16);
	var xhr_1 = __webpack_require__(98);
	var url_resolver_1 = __webpack_require__(30);
	var style_url_resolver_1 = __webpack_require__(94);
	var html_ast_1 = __webpack_require__(90);
	var html_parser_1 = __webpack_require__(91);
	var template_preparser_1 = __webpack_require__(173);
	var DirectiveNormalizer = (function () {
	    function DirectiveNormalizer(_xhr, _urlResolver, _htmlParser) {
	        this._xhr = _xhr;
	        this._urlResolver = _urlResolver;
	        this._htmlParser = _htmlParser;
	    }
	    DirectiveNormalizer.prototype.normalizeDirective = function (directive) {
	        if (!directive.isComponent) {
	            // For non components there is nothing to be normalized yet.
	            return async_1.PromiseWrapper.resolve(directive);
	        }
	        return this.normalizeTemplate(directive.type, directive.template)
	            .then(function (normalizedTemplate) { return new compile_metadata_1.CompileDirectiveMetadata({
	            type: directive.type,
	            isComponent: directive.isComponent,
	            selector: directive.selector,
	            exportAs: directive.exportAs,
	            changeDetection: directive.changeDetection,
	            inputs: directive.inputs,
	            outputs: directive.outputs,
	            hostListeners: directive.hostListeners,
	            hostProperties: directive.hostProperties,
	            hostAttributes: directive.hostAttributes,
	            lifecycleHooks: directive.lifecycleHooks,
	            providers: directive.providers,
	            viewProviders: directive.viewProviders,
	            queries: directive.queries,
	            viewQueries: directive.viewQueries,
	            template: normalizedTemplate
	        }); });
	    };
	    DirectiveNormalizer.prototype.normalizeTemplate = function (directiveType, template) {
	        var _this = this;
	        if (lang_1.isPresent(template.template)) {
	            return async_1.PromiseWrapper.resolve(this.normalizeLoadedTemplate(directiveType, template, template.template, directiveType.moduleUrl));
	        }
	        else if (lang_1.isPresent(template.templateUrl)) {
	            var sourceAbsUrl = this._urlResolver.resolve(directiveType.moduleUrl, template.templateUrl);
	            return this._xhr.get(sourceAbsUrl)
	                .then(function (templateContent) { return _this.normalizeLoadedTemplate(directiveType, template, templateContent, sourceAbsUrl); });
	        }
	        else {
	            throw new exceptions_1.BaseException("No template specified for component " + directiveType.name);
	        }
	    };
	    DirectiveNormalizer.prototype.normalizeLoadedTemplate = function (directiveType, templateMeta, template, templateAbsUrl) {
	        var _this = this;
	        var rootNodesAndErrors = this._htmlParser.parse(template, directiveType.name);
	        if (rootNodesAndErrors.errors.length > 0) {
	            var errorString = rootNodesAndErrors.errors.join('\n');
	            throw new exceptions_1.BaseException("Template parse errors:\n" + errorString);
	        }
	        var visitor = new TemplatePreparseVisitor();
	        html_ast_1.htmlVisitAll(visitor, rootNodesAndErrors.rootNodes);
	        var allStyles = templateMeta.styles.concat(visitor.styles);
	        var allStyleAbsUrls = visitor.styleUrls.filter(style_url_resolver_1.isStyleUrlResolvable)
	            .map(function (url) { return _this._urlResolver.resolve(templateAbsUrl, url); })
	            .concat(templateMeta.styleUrls.filter(style_url_resolver_1.isStyleUrlResolvable)
	            .map(function (url) { return _this._urlResolver.resolve(directiveType.moduleUrl, url); }));
	        var allResolvedStyles = allStyles.map(function (style) {
	            var styleWithImports = style_url_resolver_1.extractStyleUrls(_this._urlResolver, templateAbsUrl, style);
	            styleWithImports.styleUrls.forEach(function (styleUrl) { return allStyleAbsUrls.push(styleUrl); });
	            return styleWithImports.style;
	        });
	        var encapsulation = templateMeta.encapsulation;
	        if (encapsulation === core_1.ViewEncapsulation.Emulated && allResolvedStyles.length === 0 &&
	            allStyleAbsUrls.length === 0) {
	            encapsulation = core_1.ViewEncapsulation.None;
	        }
	        return new compile_metadata_1.CompileTemplateMetadata({
	            encapsulation: encapsulation,
	            template: template,
	            templateUrl: templateAbsUrl,
	            styles: allResolvedStyles,
	            styleUrls: allStyleAbsUrls,
	            ngContentSelectors: visitor.ngContentSelectors
	        });
	    };
	    DirectiveNormalizer.decorators = [
	        { type: core_1.Injectable },
	    ];
	    DirectiveNormalizer.ctorParameters = [
	        { type: xhr_1.XHR, },
	        { type: url_resolver_1.UrlResolver, },
	        { type: html_parser_1.HtmlParser, },
	    ];
	    return DirectiveNormalizer;
	}());
	exports.DirectiveNormalizer = DirectiveNormalizer;
	var TemplatePreparseVisitor = (function () {
	    function TemplatePreparseVisitor() {
	        this.ngContentSelectors = [];
	        this.styles = [];
	        this.styleUrls = [];
	        this.ngNonBindableStackCount = 0;
	    }
	    TemplatePreparseVisitor.prototype.visitElement = function (ast, context) {
	        var preparsedElement = template_preparser_1.preparseElement(ast);
	        switch (preparsedElement.type) {
	            case template_preparser_1.PreparsedElementType.NG_CONTENT:
	                if (this.ngNonBindableStackCount === 0) {
	                    this.ngContentSelectors.push(preparsedElement.selectAttr);
	                }
	                break;
	            case template_preparser_1.PreparsedElementType.STYLE:
	                var textContent = '';
	                ast.children.forEach(function (child) {
	                    if (child instanceof html_ast_1.HtmlTextAst) {
	                        textContent += child.value;
	                    }
	                });
	                this.styles.push(textContent);
	                break;
	            case template_preparser_1.PreparsedElementType.STYLESHEET:
	                this.styleUrls.push(preparsedElement.hrefAttr);
	                break;
	            default:
	                // DDC reports this as error. See:
	                // https://github.com/dart-lang/dev_compiler/issues/428
	                break;
	        }
	        if (preparsedElement.nonBindable) {
	            this.ngNonBindableStackCount++;
	        }
	        html_ast_1.htmlVisitAll(this, ast.children);
	        if (preparsedElement.nonBindable) {
	            this.ngNonBindableStackCount--;
	        }
	        return null;
	    };
	    TemplatePreparseVisitor.prototype.visitComment = function (ast, context) { return null; };
	    TemplatePreparseVisitor.prototype.visitAttr = function (ast, context) { return null; };
	    TemplatePreparseVisitor.prototype.visitText = function (ast, context) { return null; };
	    TemplatePreparseVisitor.prototype.visitExpansion = function (ast, context) { return null; };
	    TemplatePreparseVisitor.prototype.visitExpansionCase = function (ast, context) { return null; };
	    return TemplatePreparseVisitor;
	}());
	//# sourceMappingURL=directive_normalizer.js.map

/***/ },
/* 165 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var collection_1 = __webpack_require__(7);
	var AST = (function () {
	    function AST() {
	    }
	    AST.prototype.visit = function (visitor, context) {
	        if (context === void 0) { context = null; }
	        return null;
	    };
	    AST.prototype.toString = function () { return "AST"; };
	    return AST;
	}());
	exports.AST = AST;
	/**
	 * Represents a quoted expression of the form:
	 *
	 * quote = prefix `:` uninterpretedExpression
	 * prefix = identifier
	 * uninterpretedExpression = arbitrary string
	 *
	 * A quoted expression is meant to be pre-processed by an AST transformer that
	 * converts it into another AST that no longer contains quoted expressions.
	 * It is meant to allow third-party developers to extend Angular template
	 * expression language. The `uninterpretedExpression` part of the quote is
	 * therefore not interpreted by the Angular's own expression parser.
	 */
	var Quote = (function (_super) {
	    __extends(Quote, _super);
	    function Quote(prefix, uninterpretedExpression, location) {
	        _super.call(this);
	        this.prefix = prefix;
	        this.uninterpretedExpression = uninterpretedExpression;
	        this.location = location;
	    }
	    Quote.prototype.visit = function (visitor, context) {
	        if (context === void 0) { context = null; }
	        return visitor.visitQuote(this, context);
	    };
	    Quote.prototype.toString = function () { return "Quote"; };
	    return Quote;
	}(AST));
	exports.Quote = Quote;
	var EmptyExpr = (function (_super) {
	    __extends(EmptyExpr, _super);
	    function EmptyExpr() {
	        _super.apply(this, arguments);
	    }
	    EmptyExpr.prototype.visit = function (visitor, context) {
	        if (context === void 0) { context = null; }
	        // do nothing
	    };
	    return EmptyExpr;
	}(AST));
	exports.EmptyExpr = EmptyExpr;
	var ImplicitReceiver = (function (_super) {
	    __extends(ImplicitReceiver, _super);
	    function ImplicitReceiver() {
	        _super.apply(this, arguments);
	    }
	    ImplicitReceiver.prototype.visit = function (visitor, context) {
	        if (context === void 0) { context = null; }
	        return visitor.visitImplicitReceiver(this, context);
	    };
	    return ImplicitReceiver;
	}(AST));
	exports.ImplicitReceiver = ImplicitReceiver;
	/**
	 * Multiple expressions separated by a semicolon.
	 */
	var Chain = (function (_super) {
	    __extends(Chain, _super);
	    function Chain(expressions) {
	        _super.call(this);
	        this.expressions = expressions;
	    }
	    Chain.prototype.visit = function (visitor, context) {
	        if (context === void 0) { context = null; }
	        return visitor.visitChain(this, context);
	    };
	    return Chain;
	}(AST));
	exports.Chain = Chain;
	var Conditional = (function (_super) {
	    __extends(Conditional, _super);
	    function Conditional(condition, trueExp, falseExp) {
	        _super.call(this);
	        this.condition = condition;
	        this.trueExp = trueExp;
	        this.falseExp = falseExp;
	    }
	    Conditional.prototype.visit = function (visitor, context) {
	        if (context === void 0) { context = null; }
	        return visitor.visitConditional(this, context);
	    };
	    return Conditional;
	}(AST));
	exports.Conditional = Conditional;
	var PropertyRead = (function (_super) {
	    __extends(PropertyRead, _super);
	    function PropertyRead(receiver, name) {
	        _super.call(this);
	        this.receiver = receiver;
	        this.name = name;
	    }
	    PropertyRead.prototype.visit = function (visitor, context) {
	        if (context === void 0) { context = null; }
	        return visitor.visitPropertyRead(this, context);
	    };
	    return PropertyRead;
	}(AST));
	exports.PropertyRead = PropertyRead;
	var PropertyWrite = (function (_super) {
	    __extends(PropertyWrite, _super);
	    function PropertyWrite(receiver, name, value) {
	        _super.call(this);
	        this.receiver = receiver;
	        this.name = name;
	        this.value = value;
	    }
	    PropertyWrite.prototype.visit = function (visitor, context) {
	        if (context === void 0) { context = null; }
	        return visitor.visitPropertyWrite(this, context);
	    };
	    return PropertyWrite;
	}(AST));
	exports.PropertyWrite = PropertyWrite;
	var SafePropertyRead = (function (_super) {
	    __extends(SafePropertyRead, _super);
	    function SafePropertyRead(receiver, name) {
	        _super.call(this);
	        this.receiver = receiver;
	        this.name = name;
	    }
	    SafePropertyRead.prototype.visit = function (visitor, context) {
	        if (context === void 0) { context = null; }
	        return visitor.visitSafePropertyRead(this, context);
	    };
	    return SafePropertyRead;
	}(AST));
	exports.SafePropertyRead = SafePropertyRead;
	var KeyedRead = (function (_super) {
	    __extends(KeyedRead, _super);
	    function KeyedRead(obj, key) {
	        _super.call(this);
	        this.obj = obj;
	        this.key = key;
	    }
	    KeyedRead.prototype.visit = function (visitor, context) {
	        if (context === void 0) { context = null; }
	        return visitor.visitKeyedRead(this, context);
	    };
	    return KeyedRead;
	}(AST));
	exports.KeyedRead = KeyedRead;
	var KeyedWrite = (function (_super) {
	    __extends(KeyedWrite, _super);
	    function KeyedWrite(obj, key, value) {
	        _super.call(this);
	        this.obj = obj;
	        this.key = key;
	        this.value = value;
	    }
	    KeyedWrite.prototype.visit = function (visitor, context) {
	        if (context === void 0) { context = null; }
	        return visitor.visitKeyedWrite(this, context);
	    };
	    return KeyedWrite;
	}(AST));
	exports.KeyedWrite = KeyedWrite;
	var BindingPipe = (function (_super) {
	    __extends(BindingPipe, _super);
	    function BindingPipe(exp, name, args) {
	        _super.call(this);
	        this.exp = exp;
	        this.name = name;
	        this.args = args;
	    }
	    BindingPipe.prototype.visit = function (visitor, context) {
	        if (context === void 0) { context = null; }
	        return visitor.visitPipe(this, context);
	    };
	    return BindingPipe;
	}(AST));
	exports.BindingPipe = BindingPipe;
	var LiteralPrimitive = (function (_super) {
	    __extends(LiteralPrimitive, _super);
	    function LiteralPrimitive(value) {
	        _super.call(this);
	        this.value = value;
	    }
	    LiteralPrimitive.prototype.visit = function (visitor, context) {
	        if (context === void 0) { context = null; }
	        return visitor.visitLiteralPrimitive(this, context);
	    };
	    return LiteralPrimitive;
	}(AST));
	exports.LiteralPrimitive = LiteralPrimitive;
	var LiteralArray = (function (_super) {
	    __extends(LiteralArray, _super);
	    function LiteralArray(expressions) {
	        _super.call(this);
	        this.expressions = expressions;
	    }
	    LiteralArray.prototype.visit = function (visitor, context) {
	        if (context === void 0) { context = null; }
	        return visitor.visitLiteralArray(this, context);
	    };
	    return LiteralArray;
	}(AST));
	exports.LiteralArray = LiteralArray;
	var LiteralMap = (function (_super) {
	    __extends(LiteralMap, _super);
	    function LiteralMap(keys, values) {
	        _super.call(this);
	        this.keys = keys;
	        this.values = values;
	    }
	    LiteralMap.prototype.visit = function (visitor, context) {
	        if (context === void 0) { context = null; }
	        return visitor.visitLiteralMap(this, context);
	    };
	    return LiteralMap;
	}(AST));
	exports.LiteralMap = LiteralMap;
	var Interpolation = (function (_super) {
	    __extends(Interpolation, _super);
	    function Interpolation(strings, expressions) {
	        _super.call(this);
	        this.strings = strings;
	        this.expressions = expressions;
	    }
	    Interpolation.prototype.visit = function (visitor, context) {
	        if (context === void 0) { context = null; }
	        return visitor.visitInterpolation(this, context);
	    };
	    return Interpolation;
	}(AST));
	exports.Interpolation = Interpolation;
	var Binary = (function (_super) {
	    __extends(Binary, _super);
	    function Binary(operation, left, right) {
	        _super.call(this);
	        this.operation = operation;
	        this.left = left;
	        this.right = right;
	    }
	    Binary.prototype.visit = function (visitor, context) {
	        if (context === void 0) { context = null; }
	        return visitor.visitBinary(this, context);
	    };
	    return Binary;
	}(AST));
	exports.Binary = Binary;
	var PrefixNot = (function (_super) {
	    __extends(PrefixNot, _super);
	    function PrefixNot(expression) {
	        _super.call(this);
	        this.expression = expression;
	    }
	    PrefixNot.prototype.visit = function (visitor, context) {
	        if (context === void 0) { context = null; }
	        return visitor.visitPrefixNot(this, context);
	    };
	    return PrefixNot;
	}(AST));
	exports.PrefixNot = PrefixNot;
	var MethodCall = (function (_super) {
	    __extends(MethodCall, _super);
	    function MethodCall(receiver, name, args) {
	        _super.call(this);
	        this.receiver = receiver;
	        this.name = name;
	        this.args = args;
	    }
	    MethodCall.prototype.visit = function (visitor, context) {
	        if (context === void 0) { context = null; }
	        return visitor.visitMethodCall(this, context);
	    };
	    return MethodCall;
	}(AST));
	exports.MethodCall = MethodCall;
	var SafeMethodCall = (function (_super) {
	    __extends(SafeMethodCall, _super);
	    function SafeMethodCall(receiver, name, args) {
	        _super.call(this);
	        this.receiver = receiver;
	        this.name = name;
	        this.args = args;
	    }
	    SafeMethodCall.prototype.visit = function (visitor, context) {
	        if (context === void 0) { context = null; }
	        return visitor.visitSafeMethodCall(this, context);
	    };
	    return SafeMethodCall;
	}(AST));
	exports.SafeMethodCall = SafeMethodCall;
	var FunctionCall = (function (_super) {
	    __extends(FunctionCall, _super);
	    function FunctionCall(target, args) {
	        _super.call(this);
	        this.target = target;
	        this.args = args;
	    }
	    FunctionCall.prototype.visit = function (visitor, context) {
	        if (context === void 0) { context = null; }
	        return visitor.visitFunctionCall(this, context);
	    };
	    return FunctionCall;
	}(AST));
	exports.FunctionCall = FunctionCall;
	var ASTWithSource = (function (_super) {
	    __extends(ASTWithSource, _super);
	    function ASTWithSource(ast, source, location) {
	        _super.call(this);
	        this.ast = ast;
	        this.source = source;
	        this.location = location;
	    }
	    ASTWithSource.prototype.visit = function (visitor, context) {
	        if (context === void 0) { context = null; }
	        return this.ast.visit(visitor, context);
	    };
	    ASTWithSource.prototype.toString = function () { return this.source + " in " + this.location; };
	    return ASTWithSource;
	}(AST));
	exports.ASTWithSource = ASTWithSource;
	var TemplateBinding = (function () {
	    function TemplateBinding(key, keyIsVar, name, expression) {
	        this.key = key;
	        this.keyIsVar = keyIsVar;
	        this.name = name;
	        this.expression = expression;
	    }
	    return TemplateBinding;
	}());
	exports.TemplateBinding = TemplateBinding;
	var RecursiveAstVisitor = (function () {
	    function RecursiveAstVisitor() {
	    }
	    RecursiveAstVisitor.prototype.visitBinary = function (ast, context) {
	        ast.left.visit(this);
	        ast.right.visit(this);
	        return null;
	    };
	    RecursiveAstVisitor.prototype.visitChain = function (ast, context) { return this.visitAll(ast.expressions, context); };
	    RecursiveAstVisitor.prototype.visitConditional = function (ast, context) {
	        ast.condition.visit(this);
	        ast.trueExp.visit(this);
	        ast.falseExp.visit(this);
	        return null;
	    };
	    RecursiveAstVisitor.prototype.visitPipe = function (ast, context) {
	        ast.exp.visit(this);
	        this.visitAll(ast.args, context);
	        return null;
	    };
	    RecursiveAstVisitor.prototype.visitFunctionCall = function (ast, context) {
	        ast.target.visit(this);
	        this.visitAll(ast.args, context);
	        return null;
	    };
	    RecursiveAstVisitor.prototype.visitImplicitReceiver = function (ast, context) { return null; };
	    RecursiveAstVisitor.prototype.visitInterpolation = function (ast, context) {
	        return this.visitAll(ast.expressions, context);
	    };
	    RecursiveAstVisitor.prototype.visitKeyedRead = function (ast, context) {
	        ast.obj.visit(this);
	        ast.key.visit(this);
	        return null;
	    };
	    RecursiveAstVisitor.prototype.visitKeyedWrite = function (ast, context) {
	        ast.obj.visit(this);
	        ast.key.visit(this);
	        ast.value.visit(this);
	        return null;
	    };
	    RecursiveAstVisitor.prototype.visitLiteralArray = function (ast, context) {
	        return this.visitAll(ast.expressions, context);
	    };
	    RecursiveAstVisitor.prototype.visitLiteralMap = function (ast, context) { return this.visitAll(ast.values, context); };
	    RecursiveAstVisitor.prototype.visitLiteralPrimitive = function (ast, context) { return null; };
	    RecursiveAstVisitor.prototype.visitMethodCall = function (ast, context) {
	        ast.receiver.visit(this);
	        return this.visitAll(ast.args, context);
	    };
	    RecursiveAstVisitor.prototype.visitPrefixNot = function (ast, context) {
	        ast.expression.visit(this);
	        return null;
	    };
	    RecursiveAstVisitor.prototype.visitPropertyRead = function (ast, context) {
	        ast.receiver.visit(this);
	        return null;
	    };
	    RecursiveAstVisitor.prototype.visitPropertyWrite = function (ast, context) {
	        ast.receiver.visit(this);
	        ast.value.visit(this);
	        return null;
	    };
	    RecursiveAstVisitor.prototype.visitSafePropertyRead = function (ast, context) {
	        ast.receiver.visit(this);
	        return null;
	    };
	    RecursiveAstVisitor.prototype.visitSafeMethodCall = function (ast, context) {
	        ast.receiver.visit(this);
	        return this.visitAll(ast.args, context);
	    };
	    RecursiveAstVisitor.prototype.visitAll = function (asts, context) {
	        var _this = this;
	        asts.forEach(function (ast) { return ast.visit(_this, context); });
	        return null;
	    };
	    RecursiveAstVisitor.prototype.visitQuote = function (ast, context) { return null; };
	    return RecursiveAstVisitor;
	}());
	exports.RecursiveAstVisitor = RecursiveAstVisitor;
	var AstTransformer = (function () {
	    function AstTransformer() {
	    }
	    AstTransformer.prototype.visitImplicitReceiver = function (ast, context) { return ast; };
	    AstTransformer.prototype.visitInterpolation = function (ast, context) {
	        return new Interpolation(ast.strings, this.visitAll(ast.expressions));
	    };
	    AstTransformer.prototype.visitLiteralPrimitive = function (ast, context) {
	        return new LiteralPrimitive(ast.value);
	    };
	    AstTransformer.prototype.visitPropertyRead = function (ast, context) {
	        return new PropertyRead(ast.receiver.visit(this), ast.name);
	    };
	    AstTransformer.prototype.visitPropertyWrite = function (ast, context) {
	        return new PropertyWrite(ast.receiver.visit(this), ast.name, ast.value);
	    };
	    AstTransformer.prototype.visitSafePropertyRead = function (ast, context) {
	        return new SafePropertyRead(ast.receiver.visit(this), ast.name);
	    };
	    AstTransformer.prototype.visitMethodCall = function (ast, context) {
	        return new MethodCall(ast.receiver.visit(this), ast.name, this.visitAll(ast.args));
	    };
	    AstTransformer.prototype.visitSafeMethodCall = function (ast, context) {
	        return new SafeMethodCall(ast.receiver.visit(this), ast.name, this.visitAll(ast.args));
	    };
	    AstTransformer.prototype.visitFunctionCall = function (ast, context) {
	        return new FunctionCall(ast.target.visit(this), this.visitAll(ast.args));
	    };
	    AstTransformer.prototype.visitLiteralArray = function (ast, context) {
	        return new LiteralArray(this.visitAll(ast.expressions));
	    };
	    AstTransformer.prototype.visitLiteralMap = function (ast, context) {
	        return new LiteralMap(ast.keys, this.visitAll(ast.values));
	    };
	    AstTransformer.prototype.visitBinary = function (ast, context) {
	        return new Binary(ast.operation, ast.left.visit(this), ast.right.visit(this));
	    };
	    AstTransformer.prototype.visitPrefixNot = function (ast, context) {
	        return new PrefixNot(ast.expression.visit(this));
	    };
	    AstTransformer.prototype.visitConditional = function (ast, context) {
	        return new Conditional(ast.condition.visit(this), ast.trueExp.visit(this), ast.falseExp.visit(this));
	    };
	    AstTransformer.prototype.visitPipe = function (ast, context) {
	        return new BindingPipe(ast.exp.visit(this), ast.name, this.visitAll(ast.args));
	    };
	    AstTransformer.prototype.visitKeyedRead = function (ast, context) {
	        return new KeyedRead(ast.obj.visit(this), ast.key.visit(this));
	    };
	    AstTransformer.prototype.visitKeyedWrite = function (ast, context) {
	        return new KeyedWrite(ast.obj.visit(this), ast.key.visit(this), ast.value.visit(this));
	    };
	    AstTransformer.prototype.visitAll = function (asts) {
	        var res = collection_1.ListWrapper.createFixedSize(asts.length);
	        for (var i = 0; i < asts.length; ++i) {
	            res[i] = asts[i].visit(this);
	        }
	        return res;
	    };
	    AstTransformer.prototype.visitChain = function (ast, context) { return new Chain(this.visitAll(ast.expressions)); };
	    AstTransformer.prototype.visitQuote = function (ast, context) {
	        return new Quote(ast.prefix, ast.uninterpretedExpression, ast.location);
	    };
	    return AstTransformer;
	}());
	exports.AstTransformer = AstTransformer;
	//# sourceMappingURL=ast.js.map

/***/ },
/* 166 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var core_1 = __webpack_require__(1);
	var collection_1 = __webpack_require__(7);
	var lang_1 = __webpack_require__(3);
	var exceptions_1 = __webpack_require__(8);
	(function (TokenType) {
	    TokenType[TokenType["Character"] = 0] = "Character";
	    TokenType[TokenType["Identifier"] = 1] = "Identifier";
	    TokenType[TokenType["Keyword"] = 2] = "Keyword";
	    TokenType[TokenType["String"] = 3] = "String";
	    TokenType[TokenType["Operator"] = 4] = "Operator";
	    TokenType[TokenType["Number"] = 5] = "Number";
	})(exports.TokenType || (exports.TokenType = {}));
	var TokenType = exports.TokenType;
	var Lexer = (function () {
	    function Lexer() {
	    }
	    Lexer.prototype.tokenize = function (text) {
	        var scanner = new _Scanner(text);
	        var tokens = [];
	        var token = scanner.scanToken();
	        while (token != null) {
	            tokens.push(token);
	            token = scanner.scanToken();
	        }
	        return tokens;
	    };
	    Lexer.decorators = [
	        { type: core_1.Injectable },
	    ];
	    return Lexer;
	}());
	exports.Lexer = Lexer;
	var Token = (function () {
	    function Token(index, type, numValue, strValue) {
	        this.index = index;
	        this.type = type;
	        this.numValue = numValue;
	        this.strValue = strValue;
	    }
	    Token.prototype.isCharacter = function (code) {
	        return (this.type == TokenType.Character && this.numValue == code);
	    };
	    Token.prototype.isNumber = function () { return (this.type == TokenType.Number); };
	    Token.prototype.isString = function () { return (this.type == TokenType.String); };
	    Token.prototype.isOperator = function (operater) {
	        return (this.type == TokenType.Operator && this.strValue == operater);
	    };
	    Token.prototype.isIdentifier = function () { return (this.type == TokenType.Identifier); };
	    Token.prototype.isKeyword = function () { return (this.type == TokenType.Keyword); };
	    Token.prototype.isKeywordDeprecatedVar = function () {
	        return (this.type == TokenType.Keyword && this.strValue == "var");
	    };
	    Token.prototype.isKeywordLet = function () { return (this.type == TokenType.Keyword && this.strValue == "let"); };
	    Token.prototype.isKeywordNull = function () { return (this.type == TokenType.Keyword && this.strValue == "null"); };
	    Token.prototype.isKeywordUndefined = function () {
	        return (this.type == TokenType.Keyword && this.strValue == "undefined");
	    };
	    Token.prototype.isKeywordTrue = function () { return (this.type == TokenType.Keyword && this.strValue == "true"); };
	    Token.prototype.isKeywordFalse = function () { return (this.type == TokenType.Keyword && this.strValue == "false"); };
	    Token.prototype.toNumber = function () {
	        // -1 instead of NULL ok?
	        return (this.type == TokenType.Number) ? this.numValue : -1;
	    };
	    Token.prototype.toString = function () {
	        switch (this.type) {
	            case TokenType.Character:
	            case TokenType.Identifier:
	            case TokenType.Keyword:
	            case TokenType.Operator:
	            case TokenType.String:
	                return this.strValue;
	            case TokenType.Number:
	                return this.numValue.toString();
	            default:
	                return null;
	        }
	    };
	    return Token;
	}());
	exports.Token = Token;
	function newCharacterToken(index, code) {
	    return new Token(index, TokenType.Character, code, lang_1.StringWrapper.fromCharCode(code));
	}
	function newIdentifierToken(index, text) {
	    return new Token(index, TokenType.Identifier, 0, text);
	}
	function newKeywordToken(index, text) {
	    return new Token(index, TokenType.Keyword, 0, text);
	}
	function newOperatorToken(index, text) {
	    return new Token(index, TokenType.Operator, 0, text);
	}
	function newStringToken(index, text) {
	    return new Token(index, TokenType.String, 0, text);
	}
	function newNumberToken(index, n) {
	    return new Token(index, TokenType.Number, n, "");
	}
	exports.EOF = new Token(-1, TokenType.Character, 0, "");
	exports.$EOF = 0;
	exports.$TAB = 9;
	exports.$LF = 10;
	exports.$VTAB = 11;
	exports.$FF = 12;
	exports.$CR = 13;
	exports.$SPACE = 32;
	exports.$BANG = 33;
	exports.$DQ = 34;
	exports.$HASH = 35;
	exports.$$ = 36;
	exports.$PERCENT = 37;
	exports.$AMPERSAND = 38;
	exports.$SQ = 39;
	exports.$LPAREN = 40;
	exports.$RPAREN = 41;
	exports.$STAR = 42;
	exports.$PLUS = 43;
	exports.$COMMA = 44;
	exports.$MINUS = 45;
	exports.$PERIOD = 46;
	exports.$SLASH = 47;
	exports.$COLON = 58;
	exports.$SEMICOLON = 59;
	exports.$LT = 60;
	exports.$EQ = 61;
	exports.$GT = 62;
	exports.$QUESTION = 63;
	var $0 = 48;
	var $9 = 57;
	var $A = 65, $E = 69, $Z = 90;
	exports.$LBRACKET = 91;
	exports.$BACKSLASH = 92;
	exports.$RBRACKET = 93;
	var $CARET = 94;
	var $_ = 95;
	exports.$BT = 96;
	var $a = 97, $e = 101, $f = 102;
	var $n = 110, $r = 114, $t = 116, $u = 117, $v = 118, $z = 122;
	exports.$LBRACE = 123;
	exports.$BAR = 124;
	exports.$RBRACE = 125;
	var $NBSP = 160;
	var ScannerError = (function (_super) {
	    __extends(ScannerError, _super);
	    function ScannerError(message) {
	        _super.call(this);
	        this.message = message;
	    }
	    ScannerError.prototype.toString = function () { return this.message; };
	    return ScannerError;
	}(exceptions_1.BaseException));
	exports.ScannerError = ScannerError;
	var _Scanner = (function () {
	    function _Scanner(input) {
	        this.input = input;
	        this.peek = 0;
	        this.index = -1;
	        this.length = input.length;
	        this.advance();
	    }
	    _Scanner.prototype.advance = function () {
	        this.peek =
	            ++this.index >= this.length ? exports.$EOF : lang_1.StringWrapper.charCodeAt(this.input, this.index);
	    };
	    _Scanner.prototype.scanToken = function () {
	        var input = this.input, length = this.length, peek = this.peek, index = this.index;
	        // Skip whitespace.
	        while (peek <= exports.$SPACE) {
	            if (++index >= length) {
	                peek = exports.$EOF;
	                break;
	            }
	            else {
	                peek = lang_1.StringWrapper.charCodeAt(input, index);
	            }
	        }
	        this.peek = peek;
	        this.index = index;
	        if (index >= length) {
	            return null;
	        }
	        // Handle identifiers and numbers.
	        if (isIdentifierStart(peek))
	            return this.scanIdentifier();
	        if (isDigit(peek))
	            return this.scanNumber(index);
	        var start = index;
	        switch (peek) {
	            case exports.$PERIOD:
	                this.advance();
	                return isDigit(this.peek) ? this.scanNumber(start) : newCharacterToken(start, exports.$PERIOD);
	            case exports.$LPAREN:
	            case exports.$RPAREN:
	            case exports.$LBRACE:
	            case exports.$RBRACE:
	            case exports.$LBRACKET:
	            case exports.$RBRACKET:
	            case exports.$COMMA:
	            case exports.$COLON:
	            case exports.$SEMICOLON:
	                return this.scanCharacter(start, peek);
	            case exports.$SQ:
	            case exports.$DQ:
	                return this.scanString();
	            case exports.$HASH:
	            case exports.$PLUS:
	            case exports.$MINUS:
	            case exports.$STAR:
	            case exports.$SLASH:
	            case exports.$PERCENT:
	            case $CARET:
	                return this.scanOperator(start, lang_1.StringWrapper.fromCharCode(peek));
	            case exports.$QUESTION:
	                return this.scanComplexOperator(start, '?', exports.$PERIOD, '.');
	            case exports.$LT:
	            case exports.$GT:
	                return this.scanComplexOperator(start, lang_1.StringWrapper.fromCharCode(peek), exports.$EQ, '=');
	            case exports.$BANG:
	            case exports.$EQ:
	                return this.scanComplexOperator(start, lang_1.StringWrapper.fromCharCode(peek), exports.$EQ, '=', exports.$EQ, '=');
	            case exports.$AMPERSAND:
	                return this.scanComplexOperator(start, '&', exports.$AMPERSAND, '&');
	            case exports.$BAR:
	                return this.scanComplexOperator(start, '|', exports.$BAR, '|');
	            case $NBSP:
	                while (isWhitespace(this.peek))
	                    this.advance();
	                return this.scanToken();
	        }
	        this.error("Unexpected character [" + lang_1.StringWrapper.fromCharCode(peek) + "]", 0);
	        return null;
	    };
	    _Scanner.prototype.scanCharacter = function (start, code) {
	        this.advance();
	        return newCharacterToken(start, code);
	    };
	    _Scanner.prototype.scanOperator = function (start, str) {
	        this.advance();
	        return newOperatorToken(start, str);
	    };
	    /**
	     * Tokenize a 2/3 char long operator
	     *
	     * @param start start index in the expression
	     * @param one first symbol (always part of the operator)
	     * @param twoCode code point for the second symbol
	     * @param two second symbol (part of the operator when the second code point matches)
	     * @param threeCode code point for the third symbol
	     * @param three third symbol (part of the operator when provided and matches source expression)
	     * @returns {Token}
	     */
	    _Scanner.prototype.scanComplexOperator = function (start, one, twoCode, two, threeCode, three) {
	        this.advance();
	        var str = one;
	        if (this.peek == twoCode) {
	            this.advance();
	            str += two;
	        }
	        if (lang_1.isPresent(threeCode) && this.peek == threeCode) {
	            this.advance();
	            str += three;
	        }
	        return newOperatorToken(start, str);
	    };
	    _Scanner.prototype.scanIdentifier = function () {
	        var start = this.index;
	        this.advance();
	        while (isIdentifierPart(this.peek))
	            this.advance();
	        var str = this.input.substring(start, this.index);
	        if (collection_1.SetWrapper.has(KEYWORDS, str)) {
	            return newKeywordToken(start, str);
	        }
	        else {
	            return newIdentifierToken(start, str);
	        }
	    };
	    _Scanner.prototype.scanNumber = function (start) {
	        var simple = (this.index === start);
	        this.advance(); // Skip initial digit.
	        while (true) {
	            if (isDigit(this.peek)) {
	            }
	            else if (this.peek == exports.$PERIOD) {
	                simple = false;
	            }
	            else if (isExponentStart(this.peek)) {
	                this.advance();
	                if (isExponentSign(this.peek))
	                    this.advance();
	                if (!isDigit(this.peek))
	                    this.error('Invalid exponent', -1);
	                simple = false;
	            }
	            else {
	                break;
	            }
	            this.advance();
	        }
	        var str = this.input.substring(start, this.index);
	        // TODO
	        var value = simple ? lang_1.NumberWrapper.parseIntAutoRadix(str) : lang_1.NumberWrapper.parseFloat(str);
	        return newNumberToken(start, value);
	    };
	    _Scanner.prototype.scanString = function () {
	        var start = this.index;
	        var quote = this.peek;
	        this.advance(); // Skip initial quote.
	        var buffer;
	        var marker = this.index;
	        var input = this.input;
	        while (this.peek != quote) {
	            if (this.peek == exports.$BACKSLASH) {
	                if (buffer == null)
	                    buffer = new lang_1.StringJoiner();
	                buffer.add(input.substring(marker, this.index));
	                this.advance();
	                var unescapedCode;
	                if (this.peek == $u) {
	                    // 4 character hex code for unicode character.
	                    var hex = input.substring(this.index + 1, this.index + 5);
	                    try {
	                        unescapedCode = lang_1.NumberWrapper.parseInt(hex, 16);
	                    }
	                    catch (e) {
	                        this.error("Invalid unicode escape [\\u" + hex + "]", 0);
	                    }
	                    for (var i = 0; i < 5; i++) {
	                        this.advance();
	                    }
	                }
	                else {
	                    unescapedCode = unescape(this.peek);
	                    this.advance();
	                }
	                buffer.add(lang_1.StringWrapper.fromCharCode(unescapedCode));
	                marker = this.index;
	            }
	            else if (this.peek == exports.$EOF) {
	                this.error('Unterminated quote', 0);
	            }
	            else {
	                this.advance();
	            }
	        }
	        var last = input.substring(marker, this.index);
	        this.advance(); // Skip terminating quote.
	        // Compute the unescaped string value.
	        var unescaped = last;
	        if (buffer != null) {
	            buffer.add(last);
	            unescaped = buffer.toString();
	        }
	        return newStringToken(start, unescaped);
	    };
	    _Scanner.prototype.error = function (message, offset) {
	        var position = this.index + offset;
	        throw new ScannerError("Lexer Error: " + message + " at column " + position + " in expression [" + this.input + "]");
	    };
	    return _Scanner;
	}());
	function isWhitespace(code) {
	    return (code >= exports.$TAB && code <= exports.$SPACE) || (code == $NBSP);
	}
	function isIdentifierStart(code) {
	    return ($a <= code && code <= $z) || ($A <= code && code <= $Z) || (code == $_) || (code == exports.$$);
	}
	function isIdentifier(input) {
	    if (input.length == 0)
	        return false;
	    var scanner = new _Scanner(input);
	    if (!isIdentifierStart(scanner.peek))
	        return false;
	    scanner.advance();
	    while (scanner.peek !== exports.$EOF) {
	        if (!isIdentifierPart(scanner.peek))
	            return false;
	        scanner.advance();
	    }
	    return true;
	}
	exports.isIdentifier = isIdentifier;
	function isIdentifierPart(code) {
	    return ($a <= code && code <= $z) || ($A <= code && code <= $Z) || ($0 <= code && code <= $9) ||
	        (code == $_) || (code == exports.$$);
	}
	function isDigit(code) {
	    return $0 <= code && code <= $9;
	}
	function isExponentStart(code) {
	    return code == $e || code == $E;
	}
	function isExponentSign(code) {
	    return code == exports.$MINUS || code == exports.$PLUS;
	}
	function isQuote(code) {
	    return code === exports.$SQ || code === exports.$DQ || code === exports.$BT;
	}
	exports.isQuote = isQuote;
	function unescape(code) {
	    switch (code) {
	        case $n:
	            return exports.$LF;
	        case $f:
	            return exports.$FF;
	        case $r:
	            return exports.$CR;
	        case $t:
	            return exports.$TAB;
	        case $v:
	            return exports.$VTAB;
	        default:
	            return code;
	    }
	}
	var OPERATORS = collection_1.SetWrapper.createFromList([
	    '+',
	    '-',
	    '*',
	    '/',
	    '%',
	    '^',
	    '=',
	    '==',
	    '!=',
	    '===',
	    '!==',
	    '<',
	    '>',
	    '<=',
	    '>=',
	    '&&',
	    '||',
	    '&',
	    '|',
	    '!',
	    '?',
	    '#',
	    '?.'
	]);
	var KEYWORDS = collection_1.SetWrapper.createFromList(['var', 'let', 'null', 'undefined', 'true', 'false', 'if', 'else']);
	//# sourceMappingURL=lexer.js.map

/***/ },
/* 167 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var core_1 = __webpack_require__(1);
	var lang_1 = __webpack_require__(3);
	var exceptions_1 = __webpack_require__(8);
	var collection_1 = __webpack_require__(7);
	var lexer_1 = __webpack_require__(166);
	var ast_1 = __webpack_require__(165);
	var _implicitReceiver = new ast_1.ImplicitReceiver();
	// TODO(tbosch): Cannot make this const/final right now because of the transpiler...
	var INTERPOLATION_REGEXP = /\{\{([\s\S]*?)\}\}/g;
	var ParseException = (function (_super) {
	    __extends(ParseException, _super);
	    function ParseException(message, input, errLocation, ctxLocation) {
	        _super.call(this, "Parser Error: " + message + " " + errLocation + " [" + input + "] in " + ctxLocation);
	    }
	    return ParseException;
	}(exceptions_1.BaseException));
	var SplitInterpolation = (function () {
	    function SplitInterpolation(strings, expressions) {
	        this.strings = strings;
	        this.expressions = expressions;
	    }
	    return SplitInterpolation;
	}());
	exports.SplitInterpolation = SplitInterpolation;
	var TemplateBindingParseResult = (function () {
	    function TemplateBindingParseResult(templateBindings, warnings) {
	        this.templateBindings = templateBindings;
	        this.warnings = warnings;
	    }
	    return TemplateBindingParseResult;
	}());
	exports.TemplateBindingParseResult = TemplateBindingParseResult;
	var Parser = (function () {
	    function Parser(/** @internal */ _lexer) {
	        this._lexer = _lexer;
	    }
	    Parser.prototype.parseAction = function (input, location) {
	        this._checkNoInterpolation(input, location);
	        var tokens = this._lexer.tokenize(this._stripComments(input));
	        var ast = new _ParseAST(input, location, tokens, true).parseChain();
	        return new ast_1.ASTWithSource(ast, input, location);
	    };
	    Parser.prototype.parseBinding = function (input, location) {
	        var ast = this._parseBindingAst(input, location);
	        return new ast_1.ASTWithSource(ast, input, location);
	    };
	    Parser.prototype.parseSimpleBinding = function (input, location) {
	        var ast = this._parseBindingAst(input, location);
	        if (!SimpleExpressionChecker.check(ast)) {
	            throw new ParseException('Host binding expression can only contain field access and constants', input, location);
	        }
	        return new ast_1.ASTWithSource(ast, input, location);
	    };
	    Parser.prototype._parseBindingAst = function (input, location) {
	        // Quotes expressions use 3rd-party expression language. We don't want to use
	        // our lexer or parser for that, so we check for that ahead of time.
	        var quote = this._parseQuote(input, location);
	        if (lang_1.isPresent(quote)) {
	            return quote;
	        }
	        this._checkNoInterpolation(input, location);
	        var tokens = this._lexer.tokenize(this._stripComments(input));
	        return new _ParseAST(input, location, tokens, false).parseChain();
	    };
	    Parser.prototype._parseQuote = function (input, location) {
	        if (lang_1.isBlank(input))
	            return null;
	        var prefixSeparatorIndex = input.indexOf(':');
	        if (prefixSeparatorIndex == -1)
	            return null;
	        var prefix = input.substring(0, prefixSeparatorIndex).trim();
	        if (!lexer_1.isIdentifier(prefix))
	            return null;
	        var uninterpretedExpression = input.substring(prefixSeparatorIndex + 1);
	        return new ast_1.Quote(prefix, uninterpretedExpression, location);
	    };
	    Parser.prototype.parseTemplateBindings = function (input, location) {
	        var tokens = this._lexer.tokenize(input);
	        return new _ParseAST(input, location, tokens, false).parseTemplateBindings();
	    };
	    Parser.prototype.parseInterpolation = function (input, location) {
	        var split = this.splitInterpolation(input, location);
	        if (split == null)
	            return null;
	        var expressions = [];
	        for (var i = 0; i < split.expressions.length; ++i) {
	            var tokens = this._lexer.tokenize(this._stripComments(split.expressions[i]));
	            var ast = new _ParseAST(input, location, tokens, false).parseChain();
	            expressions.push(ast);
	        }
	        return new ast_1.ASTWithSource(new ast_1.Interpolation(split.strings, expressions), input, location);
	    };
	    Parser.prototype.splitInterpolation = function (input, location) {
	        var parts = lang_1.StringWrapper.split(input, INTERPOLATION_REGEXP);
	        if (parts.length <= 1) {
	            return null;
	        }
	        var strings = [];
	        var expressions = [];
	        for (var i = 0; i < parts.length; i++) {
	            var part = parts[i];
	            if (i % 2 === 0) {
	                // fixed string
	                strings.push(part);
	            }
	            else if (part.trim().length > 0) {
	                expressions.push(part);
	            }
	            else {
	                throw new ParseException('Blank expressions are not allowed in interpolated strings', input, "at column " + this._findInterpolationErrorColumn(parts, i) + " in", location);
	            }
	        }
	        return new SplitInterpolation(strings, expressions);
	    };
	    Parser.prototype.wrapLiteralPrimitive = function (input, location) {
	        return new ast_1.ASTWithSource(new ast_1.LiteralPrimitive(input), input, location);
	    };
	    Parser.prototype._stripComments = function (input) {
	        var i = this._commentStart(input);
	        return lang_1.isPresent(i) ? input.substring(0, i).trim() : input;
	    };
	    Parser.prototype._commentStart = function (input) {
	        var outerQuote = null;
	        for (var i = 0; i < input.length - 1; i++) {
	            var char = lang_1.StringWrapper.charCodeAt(input, i);
	            var nextChar = lang_1.StringWrapper.charCodeAt(input, i + 1);
	            if (char === lexer_1.$SLASH && nextChar == lexer_1.$SLASH && lang_1.isBlank(outerQuote))
	                return i;
	            if (outerQuote === char) {
	                outerQuote = null;
	            }
	            else if (lang_1.isBlank(outerQuote) && lexer_1.isQuote(char)) {
	                outerQuote = char;
	            }
	        }
	        return null;
	    };
	    Parser.prototype._checkNoInterpolation = function (input, location) {
	        var parts = lang_1.StringWrapper.split(input, INTERPOLATION_REGEXP);
	        if (parts.length > 1) {
	            throw new ParseException('Got interpolation ({{}}) where expression was expected', input, "at column " + this._findInterpolationErrorColumn(parts, 1) + " in", location);
	        }
	    };
	    Parser.prototype._findInterpolationErrorColumn = function (parts, partInErrIdx) {
	        var errLocation = '';
	        for (var j = 0; j < partInErrIdx; j++) {
	            errLocation += j % 2 === 0 ? parts[j] : "{{" + parts[j] + "}}";
	        }
	        return errLocation.length;
	    };
	    Parser.decorators = [
	        { type: core_1.Injectable },
	    ];
	    Parser.ctorParameters = [
	        { type: lexer_1.Lexer, },
	    ];
	    return Parser;
	}());
	exports.Parser = Parser;
	var _ParseAST = (function () {
	    function _ParseAST(input, location, tokens, parseAction) {
	        this.input = input;
	        this.location = location;
	        this.tokens = tokens;
	        this.parseAction = parseAction;
	        this.index = 0;
	    }
	    _ParseAST.prototype.peek = function (offset) {
	        var i = this.index + offset;
	        return i < this.tokens.length ? this.tokens[i] : lexer_1.EOF;
	    };
	    Object.defineProperty(_ParseAST.prototype, "next", {
	        get: function () { return this.peek(0); },
	        enumerable: true,
	        configurable: true
	    });
	    Object.defineProperty(_ParseAST.prototype, "inputIndex", {
	        get: function () {
	            return (this.index < this.tokens.length) ? this.next.index : this.input.length;
	        },
	        enumerable: true,
	        configurable: true
	    });
	    _ParseAST.prototype.advance = function () { this.index++; };
	    _ParseAST.prototype.optionalCharacter = function (code) {
	        if (this.next.isCharacter(code)) {
	            this.advance();
	            return true;
	        }
	        else {
	            return false;
	        }
	    };
	    _ParseAST.prototype.peekKeywordLet = function () { return this.next.isKeywordLet(); };
	    _ParseAST.prototype.peekDeprecatedKeywordVar = function () { return this.next.isKeywordDeprecatedVar(); };
	    _ParseAST.prototype.peekDeprecatedOperatorHash = function () { return this.next.isOperator('#'); };
	    _ParseAST.prototype.expectCharacter = function (code) {
	        if (this.optionalCharacter(code))
	            return;
	        this.error("Missing expected " + lang_1.StringWrapper.fromCharCode(code));
	    };
	    _ParseAST.prototype.optionalOperator = function (op) {
	        if (this.next.isOperator(op)) {
	            this.advance();
	            return true;
	        }
	        else {
	            return false;
	        }
	    };
	    _ParseAST.prototype.expectOperator = function (operator) {
	        if (this.optionalOperator(operator))
	            return;
	        this.error("Missing expected operator " + operator);
	    };
	    _ParseAST.prototype.expectIdentifierOrKeyword = function () {
	        var n = this.next;
	        if (!n.isIdentifier() && !n.isKeyword()) {
	            this.error("Unexpected token " + n + ", expected identifier or keyword");
	        }
	        this.advance();
	        return n.toString();
	    };
	    _ParseAST.prototype.expectIdentifierOrKeywordOrString = function () {
	        var n = this.next;
	        if (!n.isIdentifier() && !n.isKeyword() && !n.isString()) {
	            this.error("Unexpected token " + n + ", expected identifier, keyword, or string");
	        }
	        this.advance();
	        return n.toString();
	    };
	    _ParseAST.prototype.parseChain = function () {
	        var exprs = [];
	        while (this.index < this.tokens.length) {
	            var expr = this.parsePipe();
	            exprs.push(expr);
	            if (this.optionalCharacter(lexer_1.$SEMICOLON)) {
	                if (!this.parseAction) {
	                    this.error("Binding expression cannot contain chained expression");
	                }
	                while (this.optionalCharacter(lexer_1.$SEMICOLON)) {
	                } // read all semicolons
	            }
	            else if (this.index < this.tokens.length) {
	                this.error("Unexpected token '" + this.next + "'");
	            }
	        }
	        if (exprs.length == 0)
	            return new ast_1.EmptyExpr();
	        if (exprs.length == 1)
	            return exprs[0];
	        return new ast_1.Chain(exprs);
	    };
	    _ParseAST.prototype.parsePipe = function () {
	        var result = this.parseExpression();
	        if (this.optionalOperator("|")) {
	            if (this.parseAction) {
	                this.error("Cannot have a pipe in an action expression");
	            }
	            do {
	                var name = this.expectIdentifierOrKeyword();
	                var args = [];
	                while (this.optionalCharacter(lexer_1.$COLON)) {
	                    args.push(this.parseExpression());
	                }
	                result = new ast_1.BindingPipe(result, name, args);
	            } while (this.optionalOperator("|"));
	        }
	        return result;
	    };
	    _ParseAST.prototype.parseExpression = function () { return this.parseConditional(); };
	    _ParseAST.prototype.parseConditional = function () {
	        var start = this.inputIndex;
	        var result = this.parseLogicalOr();
	        if (this.optionalOperator('?')) {
	            var yes = this.parsePipe();
	            if (!this.optionalCharacter(lexer_1.$COLON)) {
	                var end = this.inputIndex;
	                var expression = this.input.substring(start, end);
	                this.error("Conditional expression " + expression + " requires all 3 expressions");
	            }
	            var no = this.parsePipe();
	            return new ast_1.Conditional(result, yes, no);
	        }
	        else {
	            return result;
	        }
	    };
	    _ParseAST.prototype.parseLogicalOr = function () {
	        // '||'
	        var result = this.parseLogicalAnd();
	        while (this.optionalOperator('||')) {
	            result = new ast_1.Binary('||', result, this.parseLogicalAnd());
	        }
	        return result;
	    };
	    _ParseAST.prototype.parseLogicalAnd = function () {
	        // '&&'
	        var result = this.parseEquality();
	        while (this.optionalOperator('&&')) {
	            result = new ast_1.Binary('&&', result, this.parseEquality());
	        }
	        return result;
	    };
	    _ParseAST.prototype.parseEquality = function () {
	        // '==','!=','===','!=='
	        var result = this.parseRelational();
	        while (true) {
	            if (this.optionalOperator('==')) {
	                result = new ast_1.Binary('==', result, this.parseRelational());
	            }
	            else if (this.optionalOperator('===')) {
	                result = new ast_1.Binary('===', result, this.parseRelational());
	            }
	            else if (this.optionalOperator('!=')) {
	                result = new ast_1.Binary('!=', result, this.parseRelational());
	            }
	            else if (this.optionalOperator('!==')) {
	                result = new ast_1.Binary('!==', result, this.parseRelational());
	            }
	            else {
	                return result;
	            }
	        }
	    };
	    _ParseAST.prototype.parseRelational = function () {
	        // '<', '>', '<=', '>='
	        var result = this.parseAdditive();
	        while (true) {
	            if (this.optionalOperator('<')) {
	                result = new ast_1.Binary('<', result, this.parseAdditive());
	            }
	            else if (this.optionalOperator('>')) {
	                result = new ast_1.Binary('>', result, this.parseAdditive());
	            }
	            else if (this.optionalOperator('<=')) {
	                result = new ast_1.Binary('<=', result, this.parseAdditive());
	            }
	            else if (this.optionalOperator('>=')) {
	                result = new ast_1.Binary('>=', result, this.parseAdditive());
	            }
	            else {
	                return result;
	            }
	        }
	    };
	    _ParseAST.prototype.parseAdditive = function () {
	        // '+', '-'
	        var result = this.parseMultiplicative();
	        while (true) {
	            if (this.optionalOperator('+')) {
	                result = new ast_1.Binary('+', result, this.parseMultiplicative());
	            }
	            else if (this.optionalOperator('-')) {
	                result = new ast_1.Binary('-', result, this.parseMultiplicative());
	            }
	            else {
	                return result;
	            }
	        }
	    };
	    _ParseAST.prototype.parseMultiplicative = function () {
	        // '*', '%', '/'
	        var result = this.parsePrefix();
	        while (true) {
	            if (this.optionalOperator('*')) {
	                result = new ast_1.Binary('*', result, this.parsePrefix());
	            }
	            else if (this.optionalOperator('%')) {
	                result = new ast_1.Binary('%', result, this.parsePrefix());
	            }
	            else if (this.optionalOperator('/')) {
	                result = new ast_1.Binary('/', result, this.parsePrefix());
	            }
	            else {
	                return result;
	            }
	        }
	    };
	    _ParseAST.prototype.parsePrefix = function () {
	        if (this.optionalOperator('+')) {
	            return this.parsePrefix();
	        }
	        else if (this.optionalOperator('-')) {
	            return new ast_1.Binary('-', new ast_1.LiteralPrimitive(0), this.parsePrefix());
	        }
	        else if (this.optionalOperator('!')) {
	            return new ast_1.PrefixNot(this.parsePrefix());
	        }
	        else {
	            return this.parseCallChain();
	        }
	    };
	    _ParseAST.prototype.parseCallChain = function () {
	        var result = this.parsePrimary();
	        while (true) {
	            if (this.optionalCharacter(lexer_1.$PERIOD)) {
	                result = this.parseAccessMemberOrMethodCall(result, false);
	            }
	            else if (this.optionalOperator('?.')) {
	                result = this.parseAccessMemberOrMethodCall(result, true);
	            }
	            else if (this.optionalCharacter(lexer_1.$LBRACKET)) {
	                var key = this.parsePipe();
	                this.expectCharacter(lexer_1.$RBRACKET);
	                if (this.optionalOperator("=")) {
	                    var value = this.parseConditional();
	                    result = new ast_1.KeyedWrite(result, key, value);
	                }
	                else {
	                    result = new ast_1.KeyedRead(result, key);
	                }
	            }
	            else if (this.optionalCharacter(lexer_1.$LPAREN)) {
	                var args = this.parseCallArguments();
	                this.expectCharacter(lexer_1.$RPAREN);
	                result = new ast_1.FunctionCall(result, args);
	            }
	            else {
	                return result;
	            }
	        }
	    };
	    _ParseAST.prototype.parsePrimary = function () {
	        if (this.optionalCharacter(lexer_1.$LPAREN)) {
	            var result = this.parsePipe();
	            this.expectCharacter(lexer_1.$RPAREN);
	            return result;
	        }
	        else if (this.next.isKeywordNull() || this.next.isKeywordUndefined()) {
	            this.advance();
	            return new ast_1.LiteralPrimitive(null);
	        }
	        else if (this.next.isKeywordTrue()) {
	            this.advance();
	            return new ast_1.LiteralPrimitive(true);
	        }
	        else if (this.next.isKeywordFalse()) {
	            this.advance();
	            return new ast_1.LiteralPrimitive(false);
	        }
	        else if (this.optionalCharacter(lexer_1.$LBRACKET)) {
	            var elements = this.parseExpressionList(lexer_1.$RBRACKET);
	            this.expectCharacter(lexer_1.$RBRACKET);
	            return new ast_1.LiteralArray(elements);
	        }
	        else if (this.next.isCharacter(lexer_1.$LBRACE)) {
	            return this.parseLiteralMap();
	        }
	        else if (this.next.isIdentifier()) {
	            return this.parseAccessMemberOrMethodCall(_implicitReceiver, false);
	        }
	        else if (this.next.isNumber()) {
	            var value = this.next.toNumber();
	            this.advance();
	            return new ast_1.LiteralPrimitive(value);
	        }
	        else if (this.next.isString()) {
	            var literalValue = this.next.toString();
	            this.advance();
	            return new ast_1.LiteralPrimitive(literalValue);
	        }
	        else if (this.index >= this.tokens.length) {
	            this.error("Unexpected end of expression: " + this.input);
	        }
	        else {
	            this.error("Unexpected token " + this.next);
	        }
	        // error() throws, so we don't reach here.
	        throw new exceptions_1.BaseException("Fell through all cases in parsePrimary");
	    };
	    _ParseAST.prototype.parseExpressionList = function (terminator) {
	        var result = [];
	        if (!this.next.isCharacter(terminator)) {
	            do {
	                result.push(this.parsePipe());
	            } while (this.optionalCharacter(lexer_1.$COMMA));
	        }
	        return result;
	    };
	    _ParseAST.prototype.parseLiteralMap = function () {
	        var keys = [];
	        var values = [];
	        this.expectCharacter(lexer_1.$LBRACE);
	        if (!this.optionalCharacter(lexer_1.$RBRACE)) {
	            do {
	                var key = this.expectIdentifierOrKeywordOrString();
	                keys.push(key);
	                this.expectCharacter(lexer_1.$COLON);
	                values.push(this.parsePipe());
	            } while (this.optionalCharacter(lexer_1.$COMMA));
	            this.expectCharacter(lexer_1.$RBRACE);
	        }
	        return new ast_1.LiteralMap(keys, values);
	    };
	    _ParseAST.prototype.parseAccessMemberOrMethodCall = function (receiver, isSafe) {
	        if (isSafe === void 0) { isSafe = false; }
	        var id = this.expectIdentifierOrKeyword();
	        if (this.optionalCharacter(lexer_1.$LPAREN)) {
	            var args = this.parseCallArguments();
	            this.expectCharacter(lexer_1.$RPAREN);
	            return isSafe ? new ast_1.SafeMethodCall(receiver, id, args) : new ast_1.MethodCall(receiver, id, args);
	        }
	        else {
	            if (isSafe) {
	                if (this.optionalOperator("=")) {
	                    this.error("The '?.' operator cannot be used in the assignment");
	                }
	                else {
	                    return new ast_1.SafePropertyRead(receiver, id);
	                }
	            }
	            else {
	                if (this.optionalOperator("=")) {
	                    if (!this.parseAction) {
	                        this.error("Bindings cannot contain assignments");
	                    }
	                    var value = this.parseConditional();
	                    return new ast_1.PropertyWrite(receiver, id, value);
	                }
	                else {
	                    return new ast_1.PropertyRead(receiver, id);
	                }
	            }
	        }
	        return null;
	    };
	    _ParseAST.prototype.parseCallArguments = function () {
	        if (this.next.isCharacter(lexer_1.$RPAREN))
	            return [];
	        var positionals = [];
	        do {
	            positionals.push(this.parsePipe());
	        } while (this.optionalCharacter(lexer_1.$COMMA));
	        return positionals;
	    };
	    _ParseAST.prototype.parseBlockContent = function () {
	        if (!this.parseAction) {
	            this.error("Binding expression cannot contain chained expression");
	        }
	        var exprs = [];
	        while (this.index < this.tokens.length && !this.next.isCharacter(lexer_1.$RBRACE)) {
	            var expr = this.parseExpression();
	            exprs.push(expr);
	            if (this.optionalCharacter(lexer_1.$SEMICOLON)) {
	                while (this.optionalCharacter(lexer_1.$SEMICOLON)) {
	                } // read all semicolons
	            }
	        }
	        if (exprs.length == 0)
	            return new ast_1.EmptyExpr();
	        if (exprs.length == 1)
	            return exprs[0];
	        return new ast_1.Chain(exprs);
	    };
	    /**
	     * An identifier, a keyword, a string with an optional `-` inbetween.
	     */
	    _ParseAST.prototype.expectTemplateBindingKey = function () {
	        var result = '';
	        var operatorFound = false;
	        do {
	            result += this.expectIdentifierOrKeywordOrString();
	            operatorFound = this.optionalOperator('-');
	            if (operatorFound) {
	                result += '-';
	            }
	        } while (operatorFound);
	        return result.toString();
	    };
	    _ParseAST.prototype.parseTemplateBindings = function () {
	        var bindings = [];
	        var prefix = null;
	        var warnings = [];
	        while (this.index < this.tokens.length) {
	            var keyIsVar = this.peekKeywordLet();
	            if (!keyIsVar && this.peekDeprecatedKeywordVar()) {
	                keyIsVar = true;
	                warnings.push("\"var\" inside of expressions is deprecated. Use \"let\" instead!");
	            }
	            if (!keyIsVar && this.peekDeprecatedOperatorHash()) {
	                keyIsVar = true;
	                warnings.push("\"#\" inside of expressions is deprecated. Use \"let\" instead!");
	            }
	            if (keyIsVar) {
	                this.advance();
	            }
	            var key = this.expectTemplateBindingKey();
	            if (!keyIsVar) {
	                if (prefix == null) {
	                    prefix = key;
	                }
	                else {
	                    key = prefix + key[0].toUpperCase() + key.substring(1);
	                }
	            }
	            this.optionalCharacter(lexer_1.$COLON);
	            var name = null;
	            var expression = null;
	            if (keyIsVar) {
	                if (this.optionalOperator("=")) {
	                    name = this.expectTemplateBindingKey();
	                }
	                else {
	                    name = '\$implicit';
	                }
	            }
	            else if (this.next !== lexer_1.EOF && !this.peekKeywordLet() && !this.peekDeprecatedKeywordVar() &&
	                !this.peekDeprecatedOperatorHash()) {
	                var start = this.inputIndex;
	                var ast = this.parsePipe();
	                var source = this.input.substring(start, this.inputIndex);
	                expression = new ast_1.ASTWithSource(ast, source, this.location);
	            }
	            bindings.push(new ast_1.TemplateBinding(key, keyIsVar, name, expression));
	            if (!this.optionalCharacter(lexer_1.$SEMICOLON)) {
	                this.optionalCharacter(lexer_1.$COMMA);
	            }
	        }
	        return new TemplateBindingParseResult(bindings, warnings);
	    };
	    _ParseAST.prototype.error = function (message, index) {
	        if (index === void 0) { index = null; }
	        if (lang_1.isBlank(index))
	            index = this.index;
	        var location = (index < this.tokens.length) ? "at column " + (this.tokens[index].index + 1) + " in" :
	            "at the end of the expression";
	        throw new ParseException(message, this.input, location, this.location);
	    };
	    return _ParseAST;
	}());
	exports._ParseAST = _ParseAST;
	var SimpleExpressionChecker = (function () {
	    function SimpleExpressionChecker() {
	        this.simple = true;
	    }
	    SimpleExpressionChecker.check = function (ast) {
	        var s = new SimpleExpressionChecker();
	        ast.visit(s);
	        return s.simple;
	    };
	    SimpleExpressionChecker.prototype.visitImplicitReceiver = function (ast, context) { };
	    SimpleExpressionChecker.prototype.visitInterpolation = function (ast, context) { this.simple = false; };
	    SimpleExpressionChecker.prototype.visitLiteralPrimitive = function (ast, context) { };
	    SimpleExpressionChecker.prototype.visitPropertyRead = function (ast, context) { };
	    SimpleExpressionChecker.prototype.visitPropertyWrite = function (ast, context) { this.simple = false; };
	    SimpleExpressionChecker.prototype.visitSafePropertyRead = function (ast, context) { this.simple = false; };
	    SimpleExpressionChecker.prototype.visitMethodCall = function (ast, context) { this.simple = false; };
	    SimpleExpressionChecker.prototype.visitSafeMethodCall = function (ast, context) { this.simple = false; };
	    SimpleExpressionChecker.prototype.visitFunctionCall = function (ast, context) { this.simple = false; };
	    SimpleExpressionChecker.prototype.visitLiteralArray = function (ast, context) { this.visitAll(ast.expressions); };
	    SimpleExpressionChecker.prototype.visitLiteralMap = function (ast, context) { this.visitAll(ast.values); };
	    SimpleExpressionChecker.prototype.visitBinary = function (ast, context) { this.simple = false; };
	    SimpleExpressionChecker.prototype.visitPrefixNot = function (ast, context) { this.simple = false; };
	    SimpleExpressionChecker.prototype.visitConditional = function (ast, context) { this.simple = false; };
	    SimpleExpressionChecker.prototype.visitPipe = function (ast, context) { this.simple = false; };
	    SimpleExpressionChecker.prototype.visitKeyedRead = function (ast, context) { this.simple = false; };
	    SimpleExpressionChecker.prototype.visitKeyedWrite = function (ast, context) { this.simple = false; };
	    SimpleExpressionChecker.prototype.visitAll = function (asts) {
	        var res = collection_1.ListWrapper.createFixedSize(asts.length);
	        for (var i = 0; i < asts.length; ++i) {
	            res[i] = asts[i].visit(this);
	        }
	        return res;
	    };
	    SimpleExpressionChecker.prototype.visitChain = function (ast, context) { this.simple = false; };
	    SimpleExpressionChecker.prototype.visitQuote = function (ast, context) { this.simple = false; };
	    return SimpleExpressionChecker;
	}());
	//# sourceMappingURL=parser.js.map

/***/ },
/* 168 */
149,
/* 169 */
[461, 3, 168, 7],
/* 170 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var core_1 = __webpack_require__(1);
	var core_private_1 = __webpack_require__(13);
	var lang_1 = __webpack_require__(3);
	var collection_1 = __webpack_require__(7);
	var exceptions_1 = __webpack_require__(8);
	var cpl = __webpack_require__(16);
	var directive_resolver_1 = __webpack_require__(88);
	var pipe_resolver_1 = __webpack_require__(92);
	var view_resolver_1 = __webpack_require__(97);
	var directive_lifecycle_reflector_1 = __webpack_require__(360);
	var util_1 = __webpack_require__(25);
	var assertions_1 = __webpack_require__(358);
	var url_resolver_1 = __webpack_require__(30);
	var core_private_2 = __webpack_require__(13);
	var CompileMetadataResolver = (function () {
	    function CompileMetadataResolver(_directiveResolver, _pipeResolver, _viewResolver, _platformDirectives, _platformPipes, _reflector) {
	        this._directiveResolver = _directiveResolver;
	        this._pipeResolver = _pipeResolver;
	        this._viewResolver = _viewResolver;
	        this._platformDirectives = _platformDirectives;
	        this._platformPipes = _platformPipes;
	        this._directiveCache = new Map();
	        this._pipeCache = new Map();
	        this._anonymousTypes = new Map();
	        this._anonymousTypeIndex = 0;
	        if (lang_1.isPresent(_reflector)) {
	            this._reflector = _reflector;
	        }
	        else {
	            this._reflector = core_1.reflector;
	        }
	    }
	    CompileMetadataResolver.prototype.sanitizeTokenName = function (token) {
	        var identifier = lang_1.stringify(token);
	        if (identifier.indexOf('(') >= 0) {
	            // case: anonymous functions!
	            var found = this._anonymousTypes.get(token);
	            if (lang_1.isBlank(found)) {
	                this._anonymousTypes.set(token, this._anonymousTypeIndex++);
	                found = this._anonymousTypes.get(token);
	            }
	            identifier = "anonymous_token_" + found + "_";
	        }
	        return util_1.sanitizeIdentifier(identifier);
	    };
	    CompileMetadataResolver.prototype.getDirectiveMetadata = function (directiveType) {
	        var meta = this._directiveCache.get(directiveType);
	        if (lang_1.isBlank(meta)) {
	            var dirMeta = this._directiveResolver.resolve(directiveType);
	            var templateMeta = null;
	            var changeDetectionStrategy = null;
	            var viewProviders = [];
	            var moduleUrl = staticTypeModuleUrl(directiveType);
	            if (dirMeta instanceof core_1.ComponentMetadata) {
	                assertions_1.assertArrayOfStrings('styles', dirMeta.styles);
	                var cmpMeta = dirMeta;
	                var viewMeta = this._viewResolver.resolve(directiveType);
	                assertions_1.assertArrayOfStrings('styles', viewMeta.styles);
	                templateMeta = new cpl.CompileTemplateMetadata({
	                    encapsulation: viewMeta.encapsulation,
	                    template: viewMeta.template,
	                    templateUrl: viewMeta.templateUrl,
	                    styles: viewMeta.styles,
	                    styleUrls: viewMeta.styleUrls
	                });
	                changeDetectionStrategy = cmpMeta.changeDetection;
	                if (lang_1.isPresent(dirMeta.viewProviders)) {
	                    viewProviders = this.getProvidersMetadata(dirMeta.viewProviders);
	                }
	                moduleUrl = componentModuleUrl(this._reflector, directiveType, cmpMeta);
	            }
	            var providers = [];
	            if (lang_1.isPresent(dirMeta.providers)) {
	                providers = this.getProvidersMetadata(dirMeta.providers);
	            }
	            var queries = [];
	            var viewQueries = [];
	            if (lang_1.isPresent(dirMeta.queries)) {
	                queries = this.getQueriesMetadata(dirMeta.queries, false);
	                viewQueries = this.getQueriesMetadata(dirMeta.queries, true);
	            }
	            meta = cpl.CompileDirectiveMetadata.create({
	                selector: dirMeta.selector,
	                exportAs: dirMeta.exportAs,
	                isComponent: lang_1.isPresent(templateMeta),
	                type: this.getTypeMetadata(directiveType, moduleUrl),
	                template: templateMeta,
	                changeDetection: changeDetectionStrategy,
	                inputs: dirMeta.inputs,
	                outputs: dirMeta.outputs,
	                host: dirMeta.host,
	                lifecycleHooks: core_private_1.LIFECYCLE_HOOKS_VALUES.filter(function (hook) { return directive_lifecycle_reflector_1.hasLifecycleHook(hook, directiveType); }),
	                providers: providers,
	                viewProviders: viewProviders,
	                queries: queries,
	                viewQueries: viewQueries
	            });
	            this._directiveCache.set(directiveType, meta);
	        }
	        return meta;
	    };
	    /**
	     * @param someType a symbol which may or may not be a directive type
	     * @returns {cpl.CompileDirectiveMetadata} if possible, otherwise null.
	     */
	    CompileMetadataResolver.prototype.maybeGetDirectiveMetadata = function (someType) {
	        try {
	            return this.getDirectiveMetadata(someType);
	        }
	        catch (e) {
	            if (e.message.indexOf('No Directive annotation') !== -1) {
	                return null;
	            }
	            throw e;
	        }
	    };
	    CompileMetadataResolver.prototype.getTypeMetadata = function (type, moduleUrl) {
	        return new cpl.CompileTypeMetadata({
	            name: this.sanitizeTokenName(type),
	            moduleUrl: moduleUrl,
	            runtime: type,
	            diDeps: this.getDependenciesMetadata(type, null)
	        });
	    };
	    CompileMetadataResolver.prototype.getFactoryMetadata = function (factory, moduleUrl) {
	        return new cpl.CompileFactoryMetadata({
	            name: this.sanitizeTokenName(factory),
	            moduleUrl: moduleUrl,
	            runtime: factory,
	            diDeps: this.getDependenciesMetadata(factory, null)
	        });
	    };
	    CompileMetadataResolver.prototype.getPipeMetadata = function (pipeType) {
	        var meta = this._pipeCache.get(pipeType);
	        if (lang_1.isBlank(meta)) {
	            var pipeMeta = this._pipeResolver.resolve(pipeType);
	            meta = new cpl.CompilePipeMetadata({
	                type: this.getTypeMetadata(pipeType, staticTypeModuleUrl(pipeType)),
	                name: pipeMeta.name,
	                pure: pipeMeta.pure,
	                lifecycleHooks: core_private_1.LIFECYCLE_HOOKS_VALUES.filter(function (hook) { return directive_lifecycle_reflector_1.hasLifecycleHook(hook, pipeType); }),
	            });
	            this._pipeCache.set(pipeType, meta);
	        }
	        return meta;
	    };
	    CompileMetadataResolver.prototype.getViewDirectivesMetadata = function (component) {
	        var _this = this;
	        var view = this._viewResolver.resolve(component);
	        var directives = flattenDirectives(view, this._platformDirectives);
	        for (var i = 0; i < directives.length; i++) {
	            if (!isValidType(directives[i])) {
	                throw new exceptions_1.BaseException("Unexpected directive value '" + lang_1.stringify(directives[i]) + "' on the View of component '" + lang_1.stringify(component) + "'");
	            }
	        }
	        return directives.map(function (type) { return _this.getDirectiveMetadata(type); });
	    };
	    CompileMetadataResolver.prototype.getViewPipesMetadata = function (component) {
	        var _this = this;
	        var view = this._viewResolver.resolve(component);
	        var pipes = flattenPipes(view, this._platformPipes);
	        for (var i = 0; i < pipes.length; i++) {
	            if (!isValidType(pipes[i])) {
	                throw new exceptions_1.BaseException("Unexpected piped value '" + lang_1.stringify(pipes[i]) + "' on the View of component '" + lang_1.stringify(component) + "'");
	            }
	        }
	        return pipes.map(function (type) { return _this.getPipeMetadata(type); });
	    };
	    CompileMetadataResolver.prototype.getDependenciesMetadata = function (typeOrFunc, dependencies) {
	        var _this = this;
	        var params = lang_1.isPresent(dependencies) ? dependencies : this._reflector.parameters(typeOrFunc);
	        if (lang_1.isBlank(params)) {
	            params = [];
	        }
	        return params.map(function (param) {
	            if (lang_1.isBlank(param)) {
	                return null;
	            }
	            var isAttribute = false;
	            var isHost = false;
	            var isSelf = false;
	            var isSkipSelf = false;
	            var isOptional = false;
	            var query = null;
	            var viewQuery = null;
	            var token = null;
	            if (lang_1.isArray(param)) {
	                param
	                    .forEach(function (paramEntry) {
	                    if (paramEntry instanceof core_1.HostMetadata) {
	                        isHost = true;
	                    }
	                    else if (paramEntry instanceof core_1.SelfMetadata) {
	                        isSelf = true;
	                    }
	                    else if (paramEntry instanceof core_1.SkipSelfMetadata) {
	                        isSkipSelf = true;
	                    }
	                    else if (paramEntry instanceof core_1.OptionalMetadata) {
	                        isOptional = true;
	                    }
	                    else if (paramEntry instanceof core_1.AttributeMetadata) {
	                        isAttribute = true;
	                        token = paramEntry.attributeName;
	                    }
	                    else if (paramEntry instanceof core_1.QueryMetadata) {
	                        if (paramEntry.isViewQuery) {
	                            viewQuery = paramEntry;
	                        }
	                        else {
	                            query = paramEntry;
	                        }
	                    }
	                    else if (paramEntry instanceof core_1.InjectMetadata) {
	                        token = paramEntry.token;
	                    }
	                    else if (isValidType(paramEntry) && lang_1.isBlank(token)) {
	                        token = paramEntry;
	                    }
	                });
	            }
	            else {
	                token = param;
	            }
	            if (lang_1.isBlank(token)) {
	                return null;
	            }
	            return new cpl.CompileDiDependencyMetadata({
	                isAttribute: isAttribute,
	                isHost: isHost,
	                isSelf: isSelf,
	                isSkipSelf: isSkipSelf,
	                isOptional: isOptional,
	                query: lang_1.isPresent(query) ? _this.getQueryMetadata(query, null) : null,
	                viewQuery: lang_1.isPresent(viewQuery) ? _this.getQueryMetadata(viewQuery, null) : null,
	                token: _this.getTokenMetadata(token)
	            });
	        });
	    };
	    CompileMetadataResolver.prototype.getTokenMetadata = function (token) {
	        token = core_1.resolveForwardRef(token);
	        var compileToken;
	        if (lang_1.isString(token)) {
	            compileToken = new cpl.CompileTokenMetadata({ value: token });
	        }
	        else {
	            compileToken = new cpl.CompileTokenMetadata({
	                identifier: new cpl.CompileIdentifierMetadata({
	                    runtime: token,
	                    name: this.sanitizeTokenName(token),
	                    moduleUrl: staticTypeModuleUrl(token)
	                })
	            });
	        }
	        return compileToken;
	    };
	    CompileMetadataResolver.prototype.getProvidersMetadata = function (providers) {
	        var _this = this;
	        return providers.map(function (provider) {
	            provider = core_1.resolveForwardRef(provider);
	            if (lang_1.isArray(provider)) {
	                return _this.getProvidersMetadata(provider);
	            }
	            else if (provider instanceof core_1.Provider) {
	                return _this.getProviderMetadata(provider);
	            }
	            else if (core_private_2.isProviderLiteral(provider)) {
	                return _this.getProviderMetadata(core_private_2.createProvider(provider));
	            }
	            else {
	                return _this.getTypeMetadata(provider, staticTypeModuleUrl(provider));
	            }
	        });
	    };
	    CompileMetadataResolver.prototype.getProviderMetadata = function (provider) {
	        var compileDeps;
	        if (lang_1.isPresent(provider.useClass)) {
	            compileDeps = this.getDependenciesMetadata(provider.useClass, provider.dependencies);
	        }
	        else if (lang_1.isPresent(provider.useFactory)) {
	            compileDeps = this.getDependenciesMetadata(provider.useFactory, provider.dependencies);
	        }
	        return new cpl.CompileProviderMetadata({
	            token: this.getTokenMetadata(provider.token),
	            useClass: lang_1.isPresent(provider.useClass) ?
	                this.getTypeMetadata(provider.useClass, staticTypeModuleUrl(provider.useClass)) :
	                null,
	            useValue: convertToCompileValue(provider.useValue),
	            useFactory: lang_1.isPresent(provider.useFactory) ?
	                this.getFactoryMetadata(provider.useFactory, staticTypeModuleUrl(provider.useFactory)) :
	                null,
	            useExisting: lang_1.isPresent(provider.useExisting) ? this.getTokenMetadata(provider.useExisting) :
	                null,
	            deps: compileDeps,
	            multi: provider.multi
	        });
	    };
	    CompileMetadataResolver.prototype.getQueriesMetadata = function (queries, isViewQuery) {
	        var _this = this;
	        var compileQueries = [];
	        collection_1.StringMapWrapper.forEach(queries, function (query, propertyName) {
	            if (query.isViewQuery === isViewQuery) {
	                compileQueries.push(_this.getQueryMetadata(query, propertyName));
	            }
	        });
	        return compileQueries;
	    };
	    CompileMetadataResolver.prototype.getQueryMetadata = function (q, propertyName) {
	        var _this = this;
	        var selectors;
	        if (q.isVarBindingQuery) {
	            selectors = q.varBindings.map(function (varName) { return _this.getTokenMetadata(varName); });
	        }
	        else {
	            selectors = [this.getTokenMetadata(q.selector)];
	        }
	        return new cpl.CompileQueryMetadata({
	            selectors: selectors,
	            first: q.first,
	            descendants: q.descendants,
	            propertyName: propertyName,
	            read: lang_1.isPresent(q.read) ? this.getTokenMetadata(q.read) : null
	        });
	    };
	    CompileMetadataResolver.decorators = [
	        { type: core_1.Injectable },
	    ];
	    CompileMetadataResolver.ctorParameters = [
	        { type: directive_resolver_1.DirectiveResolver, },
	        { type: pipe_resolver_1.PipeResolver, },
	        { type: view_resolver_1.ViewResolver, },
	        { type: undefined, decorators: [{ type: core_1.Optional }, { type: core_1.Inject, args: [core_1.PLATFORM_DIRECTIVES,] },] },
	        { type: undefined, decorators: [{ type: core_1.Optional }, { type: core_1.Inject, args: [core_1.PLATFORM_PIPES,] },] },
	        { type: core_private_1.ReflectorReader, },
	    ];
	    return CompileMetadataResolver;
	}());
	exports.CompileMetadataResolver = CompileMetadataResolver;
	function flattenDirectives(view, platformDirectives) {
	    var directives = [];
	    if (lang_1.isPresent(platformDirectives)) {
	        flattenArray(platformDirectives, directives);
	    }
	    if (lang_1.isPresent(view.directives)) {
	        flattenArray(view.directives, directives);
	    }
	    return directives;
	}
	function flattenPipes(view, platformPipes) {
	    var pipes = [];
	    if (lang_1.isPresent(platformPipes)) {
	        flattenArray(platformPipes, pipes);
	    }
	    if (lang_1.isPresent(view.pipes)) {
	        flattenArray(view.pipes, pipes);
	    }
	    return pipes;
	}
	function flattenArray(tree, out) {
	    for (var i = 0; i < tree.length; i++) {
	        var item = core_1.resolveForwardRef(tree[i]);
	        if (lang_1.isArray(item)) {
	            flattenArray(item, out);
	        }
	        else {
	            out.push(item);
	        }
	    }
	}
	function isStaticType(value) {
	    return lang_1.isStringMap(value) && lang_1.isPresent(value['name']) && lang_1.isPresent(value['filePath']);
	}
	function isValidType(value) {
	    return isStaticType(value) || (value instanceof lang_1.Type);
	}
	function staticTypeModuleUrl(value) {
	    return isStaticType(value) ? value['filePath'] : null;
	}
	function componentModuleUrl(reflector, type, cmpMetadata) {
	    if (isStaticType(type)) {
	        return staticTypeModuleUrl(type);
	    }
	    if (lang_1.isPresent(cmpMetadata.moduleId)) {
	        var moduleId = cmpMetadata.moduleId;
	        var scheme = url_resolver_1.getUrlScheme(moduleId);
	        return lang_1.isPresent(scheme) && scheme.length > 0 ? moduleId :
	            "package:" + moduleId + util_1.MODULE_SUFFIX;
	    }
	    return reflector.importUri(type);
	}
	// Only fill CompileIdentifierMetadata.runtime if needed...
	function convertToCompileValue(value) {
	    return util_1.visitValue(value, new _CompileValueConverter(), null);
	}
	var _CompileValueConverter = (function (_super) {
	    __extends(_CompileValueConverter, _super);
	    function _CompileValueConverter() {
	        _super.apply(this, arguments);
	    }
	    _CompileValueConverter.prototype.visitOther = function (value, context) {
	        if (isStaticType(value)) {
	            return new cpl.CompileIdentifierMetadata({ name: value['name'], moduleUrl: staticTypeModuleUrl(value) });
	        }
	        else {
	            return new cpl.CompileIdentifierMetadata({ runtime: value });
	        }
	    };
	    return _CompileValueConverter;
	}(util_1.ValueTransformer));
	//# sourceMappingURL=metadata_resolver.js.map

/***/ },
/* 171 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var core_1 = __webpack_require__(1);
	var lang_1 = __webpack_require__(3);
	var exceptions_1 = __webpack_require__(8);
	var collection_1 = __webpack_require__(7);
	var async_1 = __webpack_require__(89);
	var compile_metadata_1 = __webpack_require__(16);
	var style_compiler_1 = __webpack_require__(172);
	var view_compiler_1 = __webpack_require__(179);
	var template_parser_1 = __webpack_require__(95);
	var directive_normalizer_1 = __webpack_require__(164);
	var metadata_resolver_1 = __webpack_require__(170);
	var config_1 = __webpack_require__(53);
	var ir = __webpack_require__(10);
	var output_jit_1 = __webpack_require__(368);
	var output_interpreter_1 = __webpack_require__(367);
	var interpretive_view_1 = __webpack_require__(366);
	var xhr_1 = __webpack_require__(98);
	var RuntimeCompiler = (function () {
	    function RuntimeCompiler(_metadataResolver, _templateNormalizer, _templateParser, _styleCompiler, _viewCompiler, _xhr, _genConfig) {
	        this._metadataResolver = _metadataResolver;
	        this._templateNormalizer = _templateNormalizer;
	        this._templateParser = _templateParser;
	        this._styleCompiler = _styleCompiler;
	        this._viewCompiler = _viewCompiler;
	        this._xhr = _xhr;
	        this._genConfig = _genConfig;
	        this._styleCache = new Map();
	        this._hostCacheKeys = new Map();
	        this._compiledTemplateCache = new Map();
	        this._compiledTemplateDone = new Map();
	    }
	    RuntimeCompiler.prototype.resolveComponent = function (componentType) {
	        var compMeta = this._metadataResolver.getDirectiveMetadata(componentType);
	        var hostCacheKey = this._hostCacheKeys.get(componentType);
	        if (lang_1.isBlank(hostCacheKey)) {
	            hostCacheKey = new Object();
	            this._hostCacheKeys.set(componentType, hostCacheKey);
	            assertComponent(compMeta);
	            var hostMeta = compile_metadata_1.createHostComponentMeta(compMeta.type, compMeta.selector);
	            this._loadAndCompileComponent(hostCacheKey, hostMeta, [compMeta], [], []);
	        }
	        return this._compiledTemplateDone.get(hostCacheKey)
	            .then(function (compiledTemplate) { return new core_1.ComponentFactory(compMeta.selector, compiledTemplate.viewFactory, componentType); });
	    };
	    RuntimeCompiler.prototype.clearCache = function () {
	        this._styleCache.clear();
	        this._compiledTemplateCache.clear();
	        this._compiledTemplateDone.clear();
	        this._hostCacheKeys.clear();
	    };
	    RuntimeCompiler.prototype._loadAndCompileComponent = function (cacheKey, compMeta, viewDirectives, pipes, compilingComponentsPath) {
	        var _this = this;
	        var compiledTemplate = this._compiledTemplateCache.get(cacheKey);
	        var done = this._compiledTemplateDone.get(cacheKey);
	        if (lang_1.isBlank(compiledTemplate)) {
	            compiledTemplate = new CompiledTemplate();
	            this._compiledTemplateCache.set(cacheKey, compiledTemplate);
	            done =
	                async_1.PromiseWrapper.all([this._compileComponentStyles(compMeta)].concat(viewDirectives.map(function (dirMeta) { return _this._templateNormalizer.normalizeDirective(dirMeta); })))
	                    .then(function (stylesAndNormalizedViewDirMetas) {
	                    var normalizedViewDirMetas = stylesAndNormalizedViewDirMetas.slice(1);
	                    var styles = stylesAndNormalizedViewDirMetas[0];
	                    var parsedTemplate = _this._templateParser.parse(compMeta, compMeta.template.template, normalizedViewDirMetas, pipes, compMeta.type.name);
	                    var childPromises = [];
	                    compiledTemplate.init(_this._compileComponent(compMeta, parsedTemplate, styles, pipes, compilingComponentsPath, childPromises));
	                    return async_1.PromiseWrapper.all(childPromises).then(function (_) { return compiledTemplate; });
	                });
	            this._compiledTemplateDone.set(cacheKey, done);
	        }
	        return compiledTemplate;
	    };
	    RuntimeCompiler.prototype._compileComponent = function (compMeta, parsedTemplate, styles, pipes, compilingComponentsPath, childPromises) {
	        var _this = this;
	        var compileResult = this._viewCompiler.compileComponent(compMeta, parsedTemplate, new ir.ExternalExpr(new compile_metadata_1.CompileIdentifierMetadata({ runtime: styles })), pipes);
	        compileResult.dependencies.forEach(function (dep) {
	            var childCompilingComponentsPath = collection_1.ListWrapper.clone(compilingComponentsPath);
	            var childCacheKey = dep.comp.type.runtime;
	            var childViewDirectives = _this._metadataResolver.getViewDirectivesMetadata(dep.comp.type.runtime);
	            var childViewPipes = _this._metadataResolver.getViewPipesMetadata(dep.comp.type.runtime);
	            var childIsRecursive = collection_1.ListWrapper.contains(childCompilingComponentsPath, childCacheKey);
	            childCompilingComponentsPath.push(childCacheKey);
	            var childComp = _this._loadAndCompileComponent(dep.comp.type.runtime, dep.comp, childViewDirectives, childViewPipes, childCompilingComponentsPath);
	            dep.factoryPlaceholder.runtime = childComp.proxyViewFactory;
	            dep.factoryPlaceholder.name = "viewFactory_" + dep.comp.type.name;
	            if (!childIsRecursive) {
	                // Only wait for a child if it is not a cycle
	                childPromises.push(_this._compiledTemplateDone.get(childCacheKey));
	            }
	        });
	        var factory;
	        if (lang_1.IS_DART || !this._genConfig.useJit) {
	            factory = output_interpreter_1.interpretStatements(compileResult.statements, compileResult.viewFactoryVar, new interpretive_view_1.InterpretiveAppViewInstanceFactory());
	        }
	        else {
	            factory = output_jit_1.jitStatements(compMeta.type.name + ".template.js", compileResult.statements, compileResult.viewFactoryVar);
	        }
	        return factory;
	    };
	    RuntimeCompiler.prototype._compileComponentStyles = function (compMeta) {
	        var compileResult = this._styleCompiler.compileComponent(compMeta);
	        return this._resolveStylesCompileResult(compMeta.type.name, compileResult);
	    };
	    RuntimeCompiler.prototype._resolveStylesCompileResult = function (sourceUrl, result) {
	        var _this = this;
	        var promises = result.dependencies.map(function (dep) { return _this._loadStylesheetDep(dep); });
	        return async_1.PromiseWrapper.all(promises)
	            .then(function (cssTexts) {
	            var nestedCompileResultPromises = [];
	            for (var i = 0; i < result.dependencies.length; i++) {
	                var dep = result.dependencies[i];
	                var cssText = cssTexts[i];
	                var nestedCompileResult = _this._styleCompiler.compileStylesheet(dep.moduleUrl, cssText, dep.isShimmed);
	                nestedCompileResultPromises.push(_this._resolveStylesCompileResult(dep.moduleUrl, nestedCompileResult));
	            }
	            return async_1.PromiseWrapper.all(nestedCompileResultPromises);
	        })
	            .then(function (nestedStylesArr) {
	            for (var i = 0; i < result.dependencies.length; i++) {
	                var dep = result.dependencies[i];
	                dep.valuePlaceholder.runtime = nestedStylesArr[i];
	                dep.valuePlaceholder.name = "importedStyles" + i;
	            }
	            if (lang_1.IS_DART || !_this._genConfig.useJit) {
	                return output_interpreter_1.interpretStatements(result.statements, result.stylesVar, new interpretive_view_1.InterpretiveAppViewInstanceFactory());
	            }
	            else {
	                return output_jit_1.jitStatements(sourceUrl + ".css.js", result.statements, result.stylesVar);
	            }
	        });
	    };
	    RuntimeCompiler.prototype._loadStylesheetDep = function (dep) {
	        var cacheKey = "" + dep.moduleUrl + (dep.isShimmed ? '.shim' : '');
	        var cssTextPromise = this._styleCache.get(cacheKey);
	        if (lang_1.isBlank(cssTextPromise)) {
	            cssTextPromise = this._xhr.get(dep.moduleUrl);
	            this._styleCache.set(cacheKey, cssTextPromise);
	        }
	        return cssTextPromise;
	    };
	    RuntimeCompiler.decorators = [
	        { type: core_1.Injectable },
	    ];
	    RuntimeCompiler.ctorParameters = [
	        { type: metadata_resolver_1.CompileMetadataResolver, },
	        { type: directive_normalizer_1.DirectiveNormalizer, },
	        { type: template_parser_1.TemplateParser, },
	        { type: style_compiler_1.StyleCompiler, },
	        { type: view_compiler_1.ViewCompiler, },
	        { type: xhr_1.XHR, },
	        { type: config_1.CompilerConfig, },
	    ];
	    return RuntimeCompiler;
	}());
	exports.RuntimeCompiler = RuntimeCompiler;
	var CompiledTemplate = (function () {
	    function CompiledTemplate() {
	        var _this = this;
	        this.viewFactory = null;
	        this.proxyViewFactory = function (viewUtils, childInjector, contextEl) {
	            return _this.viewFactory(viewUtils, childInjector, contextEl);
	        };
	    }
	    CompiledTemplate.prototype.init = function (viewFactory) { this.viewFactory = viewFactory; };
	    return CompiledTemplate;
	}());
	function assertComponent(meta) {
	    if (!meta.isComponent) {
	        throw new exceptions_1.BaseException("Could not compile '" + meta.type.name + "' because it is not a component.");
	    }
	}
	//# sourceMappingURL=runtime_compiler.js.map

/***/ },
/* 172 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var core_1 = __webpack_require__(1);
	var compile_metadata_1 = __webpack_require__(16);
	var o = __webpack_require__(10);
	var shadow_css_1 = __webpack_require__(373);
	var url_resolver_1 = __webpack_require__(30);
	var style_url_resolver_1 = __webpack_require__(94);
	var lang_1 = __webpack_require__(3);
	var COMPONENT_VARIABLE = '%COMP%';
	var HOST_ATTR = "_nghost-" + COMPONENT_VARIABLE;
	var CONTENT_ATTR = "_ngcontent-" + COMPONENT_VARIABLE;
	var StylesCompileDependency = (function () {
	    function StylesCompileDependency(moduleUrl, isShimmed, valuePlaceholder) {
	        this.moduleUrl = moduleUrl;
	        this.isShimmed = isShimmed;
	        this.valuePlaceholder = valuePlaceholder;
	    }
	    return StylesCompileDependency;
	}());
	exports.StylesCompileDependency = StylesCompileDependency;
	var StylesCompileResult = (function () {
	    function StylesCompileResult(statements, stylesVar, dependencies) {
	        this.statements = statements;
	        this.stylesVar = stylesVar;
	        this.dependencies = dependencies;
	    }
	    return StylesCompileResult;
	}());
	exports.StylesCompileResult = StylesCompileResult;
	var StyleCompiler = (function () {
	    function StyleCompiler(_urlResolver) {
	        this._urlResolver = _urlResolver;
	        this._shadowCss = new shadow_css_1.ShadowCss();
	    }
	    StyleCompiler.prototype.compileComponent = function (comp) {
	        var shim = comp.template.encapsulation === core_1.ViewEncapsulation.Emulated;
	        return this._compileStyles(getStylesVarName(comp), comp.template.styles, comp.template.styleUrls, shim);
	    };
	    StyleCompiler.prototype.compileStylesheet = function (stylesheetUrl, cssText, isShimmed) {
	        var styleWithImports = style_url_resolver_1.extractStyleUrls(this._urlResolver, stylesheetUrl, cssText);
	        return this._compileStyles(getStylesVarName(null), [styleWithImports.style], styleWithImports.styleUrls, isShimmed);
	    };
	    StyleCompiler.prototype._compileStyles = function (stylesVar, plainStyles, absUrls, shim) {
	        var _this = this;
	        var styleExpressions = plainStyles.map(function (plainStyle) { return o.literal(_this._shimIfNeeded(plainStyle, shim)); });
	        var dependencies = [];
	        for (var i = 0; i < absUrls.length; i++) {
	            var identifier = new compile_metadata_1.CompileIdentifierMetadata({ name: getStylesVarName(null) });
	            dependencies.push(new StylesCompileDependency(absUrls[i], shim, identifier));
	            styleExpressions.push(new o.ExternalExpr(identifier));
	        }
	        // styles variable contains plain strings and arrays of other styles arrays (recursive),
	        // so we set its type to dynamic.
	        var stmt = o.variable(stylesVar)
	            .set(o.literalArr(styleExpressions, new o.ArrayType(o.DYNAMIC_TYPE, [o.TypeModifier.Const])))
	            .toDeclStmt(null, [o.StmtModifier.Final]);
	        return new StylesCompileResult([stmt], stylesVar, dependencies);
	    };
	    StyleCompiler.prototype._shimIfNeeded = function (style, shim) {
	        return shim ? this._shadowCss.shimCssText(style, CONTENT_ATTR, HOST_ATTR) : style;
	    };
	    StyleCompiler.decorators = [
	        { type: core_1.Injectable },
	    ];
	    StyleCompiler.ctorParameters = [
	        { type: url_resolver_1.UrlResolver, },
	    ];
	    return StyleCompiler;
	}());
	exports.StyleCompiler = StyleCompiler;
	function getStylesVarName(component) {
	    var result = "styles";
	    if (lang_1.isPresent(component)) {
	        result += "_" + component.type.name;
	    }
	    return result;
	}
	//# sourceMappingURL=style_compiler.js.map

/***/ },
/* 173 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var lang_1 = __webpack_require__(3);
	var html_tags_1 = __webpack_require__(54);
	var NG_CONTENT_SELECT_ATTR = 'select';
	var NG_CONTENT_ELEMENT = 'ng-content';
	var LINK_ELEMENT = 'link';
	var LINK_STYLE_REL_ATTR = 'rel';
	var LINK_STYLE_HREF_ATTR = 'href';
	var LINK_STYLE_REL_VALUE = 'stylesheet';
	var STYLE_ELEMENT = 'style';
	var SCRIPT_ELEMENT = 'script';
	var NG_NON_BINDABLE_ATTR = 'ngNonBindable';
	var NG_PROJECT_AS = 'ngProjectAs';
	function preparseElement(ast) {
	    var selectAttr = null;
	    var hrefAttr = null;
	    var relAttr = null;
	    var nonBindable = false;
	    var projectAs = null;
	    ast.attrs.forEach(function (attr) {
	        var lcAttrName = attr.name.toLowerCase();
	        if (lcAttrName == NG_CONTENT_SELECT_ATTR) {
	            selectAttr = attr.value;
	        }
	        else if (lcAttrName == LINK_STYLE_HREF_ATTR) {
	            hrefAttr = attr.value;
	        }
	        else if (lcAttrName == LINK_STYLE_REL_ATTR) {
	            relAttr = attr.value;
	        }
	        else if (attr.name == NG_NON_BINDABLE_ATTR) {
	            nonBindable = true;
	        }
	        else if (attr.name == NG_PROJECT_AS) {
	            if (attr.value.length > 0) {
	                projectAs = attr.value;
	            }
	        }
	    });
	    selectAttr = normalizeNgContentSelect(selectAttr);
	    var nodeName = ast.name.toLowerCase();
	    var type = PreparsedElementType.OTHER;
	    if (html_tags_1.splitNsName(nodeName)[1] == NG_CONTENT_ELEMENT) {
	        type = PreparsedElementType.NG_CONTENT;
	    }
	    else if (nodeName == STYLE_ELEMENT) {
	        type = PreparsedElementType.STYLE;
	    }
	    else if (nodeName == SCRIPT_ELEMENT) {
	        type = PreparsedElementType.SCRIPT;
	    }
	    else if (nodeName == LINK_ELEMENT && relAttr == LINK_STYLE_REL_VALUE) {
	        type = PreparsedElementType.STYLESHEET;
	    }
	    return new PreparsedElement(type, selectAttr, hrefAttr, nonBindable, projectAs);
	}
	exports.preparseElement = preparseElement;
	(function (PreparsedElementType) {
	    PreparsedElementType[PreparsedElementType["NG_CONTENT"] = 0] = "NG_CONTENT";
	    PreparsedElementType[PreparsedElementType["STYLE"] = 1] = "STYLE";
	    PreparsedElementType[PreparsedElementType["STYLESHEET"] = 2] = "STYLESHEET";
	    PreparsedElementType[PreparsedElementType["SCRIPT"] = 3] = "SCRIPT";
	    PreparsedElementType[PreparsedElementType["OTHER"] = 4] = "OTHER";
	})(exports.PreparsedElementType || (exports.PreparsedElementType = {}));
	var PreparsedElementType = exports.PreparsedElementType;
	var PreparsedElement = (function () {
	    function PreparsedElement(type, selectAttr, hrefAttr, nonBindable, projectAs) {
	        this.type = type;
	        this.selectAttr = selectAttr;
	        this.hrefAttr = hrefAttr;
	        this.nonBindable = nonBindable;
	        this.projectAs = projectAs;
	    }
	    return PreparsedElement;
	}());
	exports.PreparsedElement = PreparsedElement;
	function normalizeNgContentSelect(selectAttr) {
	    if (lang_1.isBlank(selectAttr) || selectAttr.length === 0) {
	        return '*';
	    }
	    return selectAttr;
	}
	//# sourceMappingURL=template_preparser.js.map

/***/ },
/* 174 */
/***/ function(module, exports) {

	"use strict";
	var CompileBinding = (function () {
	    function CompileBinding(node, sourceAst) {
	        this.node = node;
	        this.sourceAst = sourceAst;
	    }
	    return CompileBinding;
	}());
	exports.CompileBinding = CompileBinding;
	//# sourceMappingURL=compile_binding.js.map

/***/ },
/* 175 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var core_1 = __webpack_require__(1);
	var lang_1 = __webpack_require__(3);
	var collection_1 = __webpack_require__(7);
	var o = __webpack_require__(10);
	var identifiers_1 = __webpack_require__(17);
	var constants_1 = __webpack_require__(31);
	var template_ast_1 = __webpack_require__(24);
	var compile_metadata_1 = __webpack_require__(16);
	var util_1 = __webpack_require__(39);
	var compile_query_1 = __webpack_require__(176);
	var compile_method_1 = __webpack_require__(96);
	var util_2 = __webpack_require__(25);
	var CompileNode = (function () {
	    function CompileNode(parent, view, nodeIndex, renderNode, sourceAst) {
	        this.parent = parent;
	        this.view = view;
	        this.nodeIndex = nodeIndex;
	        this.renderNode = renderNode;
	        this.sourceAst = sourceAst;
	    }
	    CompileNode.prototype.isNull = function () { return lang_1.isBlank(this.renderNode); };
	    CompileNode.prototype.isRootElement = function () { return this.view != this.parent.view; };
	    return CompileNode;
	}());
	exports.CompileNode = CompileNode;
	var CompileElement = (function (_super) {
	    __extends(CompileElement, _super);
	    function CompileElement(parent, view, nodeIndex, renderNode, sourceAst, component, _directives, _resolvedProvidersArray, hasViewContainer, hasEmbeddedView, references) {
	        var _this = this;
	        _super.call(this, parent, view, nodeIndex, renderNode, sourceAst);
	        this.component = component;
	        this._directives = _directives;
	        this._resolvedProvidersArray = _resolvedProvidersArray;
	        this.hasViewContainer = hasViewContainer;
	        this.hasEmbeddedView = hasEmbeddedView;
	        this._compViewExpr = null;
	        this._instances = new compile_metadata_1.CompileTokenMap();
	        this._queryCount = 0;
	        this._queries = new compile_metadata_1.CompileTokenMap();
	        this._componentConstructorViewQueryLists = [];
	        this.contentNodesByNgContentIndex = null;
	        this.referenceTokens = {};
	        references.forEach(function (ref) { return _this.referenceTokens[ref.name] = ref.value; });
	        this.elementRef = o.importExpr(identifiers_1.Identifiers.ElementRef).instantiate([this.renderNode]);
	        this._instances.add(identifiers_1.identifierToken(identifiers_1.Identifiers.ElementRef), this.elementRef);
	        this.injector = o.THIS_EXPR.callMethod('injector', [o.literal(this.nodeIndex)]);
	        this._instances.add(identifiers_1.identifierToken(identifiers_1.Identifiers.Injector), this.injector);
	        this._instances.add(identifiers_1.identifierToken(identifiers_1.Identifiers.Renderer), o.THIS_EXPR.prop('renderer'));
	        if (this.hasViewContainer || this.hasEmbeddedView || lang_1.isPresent(this.component)) {
	            this._createAppElement();
	        }
	    }
	    CompileElement.createNull = function () {
	        return new CompileElement(null, null, null, null, null, null, [], [], false, false, []);
	    };
	    CompileElement.prototype._createAppElement = function () {
	        var fieldName = "_appEl_" + this.nodeIndex;
	        var parentNodeIndex = this.isRootElement() ? null : this.parent.nodeIndex;
	        // private is fine here as no child view will reference an AppElement
	        this.view.fields.push(new o.ClassField(fieldName, o.importType(identifiers_1.Identifiers.AppElement), [o.StmtModifier.Private]));
	        var statement = o.THIS_EXPR.prop(fieldName)
	            .set(o.importExpr(identifiers_1.Identifiers.AppElement)
	            .instantiate([
	            o.literal(this.nodeIndex),
	            o.literal(parentNodeIndex),
	            o.THIS_EXPR,
	            this.renderNode
	        ]))
	            .toStmt();
	        this.view.createMethod.addStmt(statement);
	        this.appElement = o.THIS_EXPR.prop(fieldName);
	        this._instances.add(identifiers_1.identifierToken(identifiers_1.Identifiers.AppElement), this.appElement);
	    };
	    CompileElement.prototype.setComponentView = function (compViewExpr) {
	        this._compViewExpr = compViewExpr;
	        this.contentNodesByNgContentIndex =
	            collection_1.ListWrapper.createFixedSize(this.component.template.ngContentSelectors.length);
	        for (var i = 0; i < this.contentNodesByNgContentIndex.length; i++) {
	            this.contentNodesByNgContentIndex[i] = [];
	        }
	    };
	    CompileElement.prototype.setEmbeddedView = function (embeddedView) {
	        this.embeddedView = embeddedView;
	        if (lang_1.isPresent(embeddedView)) {
	            var createTemplateRefExpr = o.importExpr(identifiers_1.Identifiers.TemplateRef_)
	                .instantiate([this.appElement, this.embeddedView.viewFactory]);
	            var provider = new compile_metadata_1.CompileProviderMetadata({ token: identifiers_1.identifierToken(identifiers_1.Identifiers.TemplateRef), useValue: createTemplateRefExpr });
	            // Add TemplateRef as first provider as it does not have deps on other providers
	            this._resolvedProvidersArray.unshift(new template_ast_1.ProviderAst(provider.token, false, true, [provider], template_ast_1.ProviderAstType.Builtin, this.sourceAst.sourceSpan));
	        }
	    };
	    CompileElement.prototype.beforeChildren = function () {
	        var _this = this;
	        if (this.hasViewContainer) {
	            this._instances.add(identifiers_1.identifierToken(identifiers_1.Identifiers.ViewContainerRef), this.appElement.prop('vcRef'));
	        }
	        this._resolvedProviders = new compile_metadata_1.CompileTokenMap();
	        this._resolvedProvidersArray.forEach(function (provider) {
	            return _this._resolvedProviders.add(provider.token, provider);
	        });
	        // create all the provider instances, some in the view constructor,
	        // some as getters. We rely on the fact that they are already sorted topologically.
	        this._resolvedProviders.values().forEach(function (resolvedProvider) {
	            var providerValueExpressions = resolvedProvider.providers.map(function (provider) {
	                if (lang_1.isPresent(provider.useExisting)) {
	                    return _this._getDependency(resolvedProvider.providerType, new compile_metadata_1.CompileDiDependencyMetadata({ token: provider.useExisting }));
	                }
	                else if (lang_1.isPresent(provider.useFactory)) {
	                    var deps = lang_1.isPresent(provider.deps) ? provider.deps : provider.useFactory.diDeps;
	                    var depsExpr = deps.map(function (dep) { return _this._getDependency(resolvedProvider.providerType, dep); });
	                    return o.importExpr(provider.useFactory).callFn(depsExpr);
	                }
	                else if (lang_1.isPresent(provider.useClass)) {
	                    var deps = lang_1.isPresent(provider.deps) ? provider.deps : provider.useClass.diDeps;
	                    var depsExpr = deps.map(function (dep) { return _this._getDependency(resolvedProvider.providerType, dep); });
	                    return o.importExpr(provider.useClass)
	                        .instantiate(depsExpr, o.importType(provider.useClass));
	                }
	                else {
	                    return _convertValueToOutputAst(provider.useValue);
	                }
	            });
	            var propName = "_" + resolvedProvider.token.name + "_" + _this.nodeIndex + "_" + _this._instances.size;
	            var instance = createProviderProperty(propName, resolvedProvider, providerValueExpressions, resolvedProvider.multiProvider, resolvedProvider.eager, _this);
	            _this._instances.add(resolvedProvider.token, instance);
	        });
	        this.directiveInstances =
	            this._directives.map(function (directive) { return _this._instances.get(identifiers_1.identifierToken(directive.type)); });
	        for (var i = 0; i < this.directiveInstances.length; i++) {
	            var directiveInstance = this.directiveInstances[i];
	            var directive = this._directives[i];
	            directive.queries.forEach(function (queryMeta) { _this._addQuery(queryMeta, directiveInstance); });
	        }
	        var queriesWithReads = [];
	        this._resolvedProviders.values().forEach(function (resolvedProvider) {
	            var queriesForProvider = _this._getQueriesFor(resolvedProvider.token);
	            collection_1.ListWrapper.addAll(queriesWithReads, queriesForProvider.map(function (query) { return new _QueryWithRead(query, resolvedProvider.token); }));
	        });
	        collection_1.StringMapWrapper.forEach(this.referenceTokens, function (_, varName) {
	            var token = _this.referenceTokens[varName];
	            var varValue;
	            if (lang_1.isPresent(token)) {
	                varValue = _this._instances.get(token);
	            }
	            else {
	                varValue = _this.renderNode;
	            }
	            _this.view.locals.set(varName, varValue);
	            var varToken = new compile_metadata_1.CompileTokenMetadata({ value: varName });
	            collection_1.ListWrapper.addAll(queriesWithReads, _this._getQueriesFor(varToken)
	                .map(function (query) { return new _QueryWithRead(query, varToken); }));
	        });
	        queriesWithReads.forEach(function (queryWithRead) {
	            var value;
	            if (lang_1.isPresent(queryWithRead.read.identifier)) {
	                // query for an identifier
	                value = _this._instances.get(queryWithRead.read);
	            }
	            else {
	                // query for a reference
	                var token = _this.referenceTokens[queryWithRead.read.value];
	                if (lang_1.isPresent(token)) {
	                    value = _this._instances.get(token);
	                }
	                else {
	                    value = _this.elementRef;
	                }
	            }
	            if (lang_1.isPresent(value)) {
	                queryWithRead.query.addValue(value, _this.view);
	            }
	        });
	        if (lang_1.isPresent(this.component)) {
	            var componentConstructorViewQueryList = lang_1.isPresent(this.component) ? o.literalArr(this._componentConstructorViewQueryLists) :
	                o.NULL_EXPR;
	            var compExpr = lang_1.isPresent(this.getComponent()) ? this.getComponent() : o.NULL_EXPR;
	            this.view.createMethod.addStmt(this.appElement.callMethod('initComponent', [compExpr, componentConstructorViewQueryList, this._compViewExpr])
	                .toStmt());
	        }
	    };
	    CompileElement.prototype.afterChildren = function (childNodeCount) {
	        var _this = this;
	        this._resolvedProviders.values().forEach(function (resolvedProvider) {
	            // Note: afterChildren is called after recursing into children.
	            // This is good so that an injector match in an element that is closer to a requesting element
	            // matches first.
	            var providerExpr = _this._instances.get(resolvedProvider.token);
	            // Note: view providers are only visible on the injector of that element.
	            // This is not fully correct as the rules during codegen don't allow a directive
	            // to get hold of a view provdier on the same element. We still do this semantic
	            // as it simplifies our model to having only one runtime injector per element.
	            var providerChildNodeCount = resolvedProvider.providerType === template_ast_1.ProviderAstType.PrivateService ? 0 : childNodeCount;
	            _this.view.injectorGetMethod.addStmt(createInjectInternalCondition(_this.nodeIndex, providerChildNodeCount, resolvedProvider, providerExpr));
	        });
	        this._queries.values().forEach(function (queries) {
	            return queries.forEach(function (query) { return query.afterChildren(_this.view.updateContentQueriesMethod); });
	        });
	    };
	    CompileElement.prototype.addContentNode = function (ngContentIndex, nodeExpr) {
	        this.contentNodesByNgContentIndex[ngContentIndex].push(nodeExpr);
	    };
	    CompileElement.prototype.getComponent = function () {
	        return lang_1.isPresent(this.component) ? this._instances.get(identifiers_1.identifierToken(this.component.type)) :
	            null;
	    };
	    CompileElement.prototype.getProviderTokens = function () {
	        return this._resolvedProviders.values().map(function (resolvedProvider) { return util_1.createDiTokenExpression(resolvedProvider.token); });
	    };
	    CompileElement.prototype._getQueriesFor = function (token) {
	        var result = [];
	        var currentEl = this;
	        var distance = 0;
	        var queries;
	        while (!currentEl.isNull()) {
	            queries = currentEl._queries.get(token);
	            if (lang_1.isPresent(queries)) {
	                collection_1.ListWrapper.addAll(result, queries.filter(function (query) { return query.meta.descendants || distance <= 1; }));
	            }
	            if (currentEl._directives.length > 0) {
	                distance++;
	            }
	            currentEl = currentEl.parent;
	        }
	        queries = this.view.componentView.viewQueries.get(token);
	        if (lang_1.isPresent(queries)) {
	            collection_1.ListWrapper.addAll(result, queries);
	        }
	        return result;
	    };
	    CompileElement.prototype._addQuery = function (queryMeta, directiveInstance) {
	        var propName = "_query_" + queryMeta.selectors[0].name + "_" + this.nodeIndex + "_" + this._queryCount++;
	        var queryList = compile_query_1.createQueryList(queryMeta, directiveInstance, propName, this.view);
	        var query = new compile_query_1.CompileQuery(queryMeta, queryList, directiveInstance, this.view);
	        compile_query_1.addQueryToTokenMap(this._queries, query);
	        return query;
	    };
	    CompileElement.prototype._getLocalDependency = function (requestingProviderType, dep) {
	        var result = null;
	        // constructor content query
	        if (lang_1.isBlank(result) && lang_1.isPresent(dep.query)) {
	            result = this._addQuery(dep.query, null).queryList;
	        }
	        // constructor view query
	        if (lang_1.isBlank(result) && lang_1.isPresent(dep.viewQuery)) {
	            result = compile_query_1.createQueryList(dep.viewQuery, null, "_viewQuery_" + dep.viewQuery.selectors[0].name + "_" + this.nodeIndex + "_" + this._componentConstructorViewQueryLists.length, this.view);
	            this._componentConstructorViewQueryLists.push(result);
	        }
	        if (lang_1.isPresent(dep.token)) {
	            // access builtins with special visibility
	            if (lang_1.isBlank(result)) {
	                if (dep.token.equalsTo(identifiers_1.identifierToken(identifiers_1.Identifiers.ChangeDetectorRef))) {
	                    if (requestingProviderType === template_ast_1.ProviderAstType.Component) {
	                        return this._compViewExpr.prop('ref');
	                    }
	                    else {
	                        return util_1.getPropertyInView(o.THIS_EXPR.prop('ref'), this.view, this.view.componentView);
	                    }
	                }
	            }
	            // access regular providers on the element
	            if (lang_1.isBlank(result)) {
	                result = this._instances.get(dep.token);
	            }
	        }
	        return result;
	    };
	    CompileElement.prototype._getDependency = function (requestingProviderType, dep) {
	        var currElement = this;
	        var result = null;
	        if (dep.isValue) {
	            result = o.literal(dep.value);
	        }
	        if (lang_1.isBlank(result) && !dep.isSkipSelf) {
	            result = this._getLocalDependency(requestingProviderType, dep);
	        }
	        // check parent elements
	        while (lang_1.isBlank(result) && !currElement.parent.isNull()) {
	            currElement = currElement.parent;
	            result = currElement._getLocalDependency(template_ast_1.ProviderAstType.PublicService, new compile_metadata_1.CompileDiDependencyMetadata({ token: dep.token }));
	        }
	        if (lang_1.isBlank(result)) {
	            result = util_1.injectFromViewParentInjector(dep.token, dep.isOptional);
	        }
	        if (lang_1.isBlank(result)) {
	            result = o.NULL_EXPR;
	        }
	        return util_1.getPropertyInView(result, this.view, currElement.view);
	    };
	    return CompileElement;
	}(CompileNode));
	exports.CompileElement = CompileElement;
	function createInjectInternalCondition(nodeIndex, childNodeCount, provider, providerExpr) {
	    var indexCondition;
	    if (childNodeCount > 0) {
	        indexCondition = o.literal(nodeIndex)
	            .lowerEquals(constants_1.InjectMethodVars.requestNodeIndex)
	            .and(constants_1.InjectMethodVars.requestNodeIndex.lowerEquals(o.literal(nodeIndex + childNodeCount)));
	    }
	    else {
	        indexCondition = o.literal(nodeIndex).identical(constants_1.InjectMethodVars.requestNodeIndex);
	    }
	    return new o.IfStmt(constants_1.InjectMethodVars.token.identical(util_1.createDiTokenExpression(provider.token)).and(indexCondition), [new o.ReturnStatement(providerExpr)]);
	}
	function createProviderProperty(propName, provider, providerValueExpressions, isMulti, isEager, compileElement) {
	    var view = compileElement.view;
	    var resolvedProviderValueExpr;
	    var type;
	    if (isMulti) {
	        resolvedProviderValueExpr = o.literalArr(providerValueExpressions);
	        type = new o.ArrayType(o.DYNAMIC_TYPE);
	    }
	    else {
	        resolvedProviderValueExpr = providerValueExpressions[0];
	        type = providerValueExpressions[0].type;
	    }
	    if (lang_1.isBlank(type)) {
	        type = o.DYNAMIC_TYPE;
	    }
	    if (isEager) {
	        view.fields.push(new o.ClassField(propName, type));
	        view.createMethod.addStmt(o.THIS_EXPR.prop(propName).set(resolvedProviderValueExpr).toStmt());
	    }
	    else {
	        var internalField = "_" + propName;
	        view.fields.push(new o.ClassField(internalField, type));
	        var getter = new compile_method_1.CompileMethod(view);
	        getter.resetDebugInfo(compileElement.nodeIndex, compileElement.sourceAst);
	        // Note: Equals is important for JS so that it also checks the undefined case!
	        getter.addStmt(new o.IfStmt(o.THIS_EXPR.prop(internalField).isBlank(), [o.THIS_EXPR.prop(internalField).set(resolvedProviderValueExpr).toStmt()]));
	        getter.addStmt(new o.ReturnStatement(o.THIS_EXPR.prop(internalField)));
	        view.getters.push(new o.ClassGetter(propName, getter.finish(), type));
	    }
	    return o.THIS_EXPR.prop(propName);
	}
	var _QueryWithRead = (function () {
	    function _QueryWithRead(query, match) {
	        this.query = query;
	        this.read = lang_1.isPresent(query.meta.read) ? query.meta.read : match;
	    }
	    return _QueryWithRead;
	}());
	function _convertValueToOutputAst(value) {
	    return util_2.visitValue(value, new _ValueOutputAstTransformer(), null);
	}
	var _ValueOutputAstTransformer = (function (_super) {
	    __extends(_ValueOutputAstTransformer, _super);
	    function _ValueOutputAstTransformer() {
	        _super.apply(this, arguments);
	    }
	    _ValueOutputAstTransformer.prototype.visitArray = function (arr, context) {
	        var _this = this;
	        return o.literalArr(arr.map(function (value) { return util_2.visitValue(value, _this, context); }));
	    };
	    _ValueOutputAstTransformer.prototype.visitStringMap = function (map, context) {
	        var _this = this;
	        var entries = [];
	        collection_1.StringMapWrapper.forEach(map, function (value, key) { entries.push([key, util_2.visitValue(value, _this, context)]); });
	        return o.literalMap(entries);
	    };
	    _ValueOutputAstTransformer.prototype.visitPrimitive = function (value, context) { return o.literal(value); };
	    _ValueOutputAstTransformer.prototype.visitOther = function (value, context) {
	        if (value instanceof compile_metadata_1.CompileIdentifierMetadata) {
	            return o.importExpr(value);
	        }
	        else if (value instanceof o.Expression) {
	            return value;
	        }
	        else {
	            throw new core_1.BaseException("Illegal state: Don't now how to compile value " + value);
	        }
	    };
	    return _ValueOutputAstTransformer;
	}(util_2.ValueTransformer));
	//# sourceMappingURL=compile_element.js.map

/***/ },
/* 176 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var lang_1 = __webpack_require__(3);
	var collection_1 = __webpack_require__(7);
	var o = __webpack_require__(10);
	var identifiers_1 = __webpack_require__(17);
	var util_1 = __webpack_require__(39);
	var ViewQueryValues = (function () {
	    function ViewQueryValues(view, values) {
	        this.view = view;
	        this.values = values;
	    }
	    return ViewQueryValues;
	}());
	var CompileQuery = (function () {
	    function CompileQuery(meta, queryList, ownerDirectiveExpression, view) {
	        this.meta = meta;
	        this.queryList = queryList;
	        this.ownerDirectiveExpression = ownerDirectiveExpression;
	        this.view = view;
	        this._values = new ViewQueryValues(view, []);
	    }
	    CompileQuery.prototype.addValue = function (value, view) {
	        var currentView = view;
	        var elPath = [];
	        while (lang_1.isPresent(currentView) && currentView !== this.view) {
	            var parentEl = currentView.declarationElement;
	            elPath.unshift(parentEl);
	            currentView = parentEl.view;
	        }
	        var queryListForDirtyExpr = util_1.getPropertyInView(this.queryList, view, this.view);
	        var viewValues = this._values;
	        elPath.forEach(function (el) {
	            var last = viewValues.values.length > 0 ? viewValues.values[viewValues.values.length - 1] : null;
	            if (last instanceof ViewQueryValues && last.view === el.embeddedView) {
	                viewValues = last;
	            }
	            else {
	                var newViewValues = new ViewQueryValues(el.embeddedView, []);
	                viewValues.values.push(newViewValues);
	                viewValues = newViewValues;
	            }
	        });
	        viewValues.values.push(value);
	        if (elPath.length > 0) {
	            view.dirtyParentQueriesMethod.addStmt(queryListForDirtyExpr.callMethod('setDirty', []).toStmt());
	        }
	    };
	    CompileQuery.prototype.afterChildren = function (targetMethod) {
	        var values = createQueryValues(this._values);
	        var updateStmts = [this.queryList.callMethod('reset', [o.literalArr(values)]).toStmt()];
	        if (lang_1.isPresent(this.ownerDirectiveExpression)) {
	            var valueExpr = this.meta.first ? this.queryList.prop('first') : this.queryList;
	            updateStmts.push(this.ownerDirectiveExpression.prop(this.meta.propertyName).set(valueExpr).toStmt());
	        }
	        if (!this.meta.first) {
	            updateStmts.push(this.queryList.callMethod('notifyOnChanges', []).toStmt());
	        }
	        targetMethod.addStmt(new o.IfStmt(this.queryList.prop('dirty'), updateStmts));
	    };
	    return CompileQuery;
	}());
	exports.CompileQuery = CompileQuery;
	function createQueryValues(viewValues) {
	    return collection_1.ListWrapper.flatten(viewValues.values.map(function (entry) {
	        if (entry instanceof ViewQueryValues) {
	            return mapNestedViews(entry.view.declarationElement.appElement, entry.view, createQueryValues(entry));
	        }
	        else {
	            return entry;
	        }
	    }));
	}
	function mapNestedViews(declarationAppElement, view, expressions) {
	    var adjustedExpressions = expressions.map(function (expr) {
	        return o.replaceVarInExpression(o.THIS_EXPR.name, o.variable('nestedView'), expr);
	    });
	    return declarationAppElement.callMethod('mapNestedViews', [
	        o.variable(view.className),
	        o.fn([new o.FnParam('nestedView', view.classType)], [new o.ReturnStatement(o.literalArr(adjustedExpressions))])
	    ]);
	}
	function createQueryList(query, directiveInstance, propertyName, compileView) {
	    compileView.fields.push(new o.ClassField(propertyName, o.importType(identifiers_1.Identifiers.QueryList)));
	    var expr = o.THIS_EXPR.prop(propertyName);
	    compileView.createMethod.addStmt(o.THIS_EXPR.prop(propertyName)
	        .set(o.importExpr(identifiers_1.Identifiers.QueryList).instantiate([]))
	        .toStmt());
	    return expr;
	}
	exports.createQueryList = createQueryList;
	function addQueryToTokenMap(map, query) {
	    query.meta.selectors.forEach(function (selector) {
	        var entry = map.get(selector);
	        if (lang_1.isBlank(entry)) {
	            entry = [];
	            map.add(selector, entry);
	        }
	        entry.push(query);
	    });
	}
	exports.addQueryToTokenMap = addQueryToTokenMap;
	//# sourceMappingURL=compile_query.js.map

/***/ },
/* 177 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var core_private_1 = __webpack_require__(13);
	var lang_1 = __webpack_require__(3);
	var collection_1 = __webpack_require__(7);
	var o = __webpack_require__(10);
	var constants_1 = __webpack_require__(31);
	var compile_query_1 = __webpack_require__(176);
	var compile_method_1 = __webpack_require__(96);
	var compile_pipe_1 = __webpack_require__(374);
	var compile_metadata_1 = __webpack_require__(16);
	var util_1 = __webpack_require__(39);
	var identifiers_1 = __webpack_require__(17);
	var CompileView = (function () {
	    function CompileView(component, genConfig, pipeMetas, styles, viewIndex, declarationElement, templateVariableBindings) {
	        var _this = this;
	        this.component = component;
	        this.genConfig = genConfig;
	        this.pipeMetas = pipeMetas;
	        this.styles = styles;
	        this.viewIndex = viewIndex;
	        this.declarationElement = declarationElement;
	        this.templateVariableBindings = templateVariableBindings;
	        this.nodes = [];
	        // root nodes or AppElements for ViewContainers
	        this.rootNodesOrAppElements = [];
	        this.bindings = [];
	        this.classStatements = [];
	        this.eventHandlerMethods = [];
	        this.fields = [];
	        this.getters = [];
	        this.disposables = [];
	        this.subscriptions = [];
	        this.purePipes = new Map();
	        this.pipes = [];
	        this.locals = new Map();
	        this.literalArrayCount = 0;
	        this.literalMapCount = 0;
	        this.pipeCount = 0;
	        this.createMethod = new compile_method_1.CompileMethod(this);
	        this.injectorGetMethod = new compile_method_1.CompileMethod(this);
	        this.updateContentQueriesMethod = new compile_method_1.CompileMethod(this);
	        this.dirtyParentQueriesMethod = new compile_method_1.CompileMethod(this);
	        this.updateViewQueriesMethod = new compile_method_1.CompileMethod(this);
	        this.detectChangesInInputsMethod = new compile_method_1.CompileMethod(this);
	        this.detectChangesRenderPropertiesMethod = new compile_method_1.CompileMethod(this);
	        this.afterContentLifecycleCallbacksMethod = new compile_method_1.CompileMethod(this);
	        this.afterViewLifecycleCallbacksMethod = new compile_method_1.CompileMethod(this);
	        this.destroyMethod = new compile_method_1.CompileMethod(this);
	        this.viewType = getViewType(component, viewIndex);
	        this.className = "_View_" + component.type.name + viewIndex;
	        this.classType = o.importType(new compile_metadata_1.CompileIdentifierMetadata({ name: this.className }));
	        this.viewFactory = o.variable(util_1.getViewFactoryName(component, viewIndex));
	        if (this.viewType === core_private_1.ViewType.COMPONENT || this.viewType === core_private_1.ViewType.HOST) {
	            this.componentView = this;
	        }
	        else {
	            this.componentView = this.declarationElement.view.componentView;
	        }
	        this.componentContext =
	            util_1.getPropertyInView(o.THIS_EXPR.prop('context'), this, this.componentView);
	        var viewQueries = new compile_metadata_1.CompileTokenMap();
	        if (this.viewType === core_private_1.ViewType.COMPONENT) {
	            var directiveInstance = o.THIS_EXPR.prop('context');
	            collection_1.ListWrapper.forEachWithIndex(this.component.viewQueries, function (queryMeta, queryIndex) {
	                var propName = "_viewQuery_" + queryMeta.selectors[0].name + "_" + queryIndex;
	                var queryList = compile_query_1.createQueryList(queryMeta, directiveInstance, propName, _this);
	                var query = new compile_query_1.CompileQuery(queryMeta, queryList, directiveInstance, _this);
	                compile_query_1.addQueryToTokenMap(viewQueries, query);
	            });
	            var constructorViewQueryCount = 0;
	            this.component.type.diDeps.forEach(function (dep) {
	                if (lang_1.isPresent(dep.viewQuery)) {
	                    var queryList = o.THIS_EXPR.prop('declarationAppElement')
	                        .prop('componentConstructorViewQueries')
	                        .key(o.literal(constructorViewQueryCount++));
	                    var query = new compile_query_1.CompileQuery(dep.viewQuery, queryList, null, _this);
	                    compile_query_1.addQueryToTokenMap(viewQueries, query);
	                }
	            });
	        }
	        this.viewQueries = viewQueries;
	        templateVariableBindings.forEach(function (entry) { _this.locals.set(entry[1], o.THIS_EXPR.prop('context').prop(entry[0])); });
	        if (!this.declarationElement.isNull()) {
	            this.declarationElement.setEmbeddedView(this);
	        }
	    }
	    CompileView.prototype.callPipe = function (name, input, args) {
	        return compile_pipe_1.CompilePipe.call(this, name, [input].concat(args));
	    };
	    CompileView.prototype.getLocal = function (name) {
	        if (name == constants_1.EventHandlerVars.event.name) {
	            return constants_1.EventHandlerVars.event;
	        }
	        var currView = this;
	        var result = currView.locals.get(name);
	        while (lang_1.isBlank(result) && lang_1.isPresent(currView.declarationElement.view)) {
	            currView = currView.declarationElement.view;
	            result = currView.locals.get(name);
	        }
	        if (lang_1.isPresent(result)) {
	            return util_1.getPropertyInView(result, this, currView);
	        }
	        else {
	            return null;
	        }
	    };
	    CompileView.prototype.createLiteralArray = function (values) {
	        if (values.length === 0) {
	            return o.importExpr(identifiers_1.Identifiers.EMPTY_ARRAY);
	        }
	        var proxyExpr = o.THIS_EXPR.prop("_arr_" + this.literalArrayCount++);
	        var proxyParams = [];
	        var proxyReturnEntries = [];
	        for (var i = 0; i < values.length; i++) {
	            var paramName = "p" + i;
	            proxyParams.push(new o.FnParam(paramName));
	            proxyReturnEntries.push(o.variable(paramName));
	        }
	        util_1.createPureProxy(o.fn(proxyParams, [new o.ReturnStatement(o.literalArr(proxyReturnEntries))]), values.length, proxyExpr, this);
	        return proxyExpr.callFn(values);
	    };
	    CompileView.prototype.createLiteralMap = function (entries) {
	        if (entries.length === 0) {
	            return o.importExpr(identifiers_1.Identifiers.EMPTY_MAP);
	        }
	        var proxyExpr = o.THIS_EXPR.prop("_map_" + this.literalMapCount++);
	        var proxyParams = [];
	        var proxyReturnEntries = [];
	        var values = [];
	        for (var i = 0; i < entries.length; i++) {
	            var paramName = "p" + i;
	            proxyParams.push(new o.FnParam(paramName));
	            proxyReturnEntries.push([entries[i][0], o.variable(paramName)]);
	            values.push(entries[i][1]);
	        }
	        util_1.createPureProxy(o.fn(proxyParams, [new o.ReturnStatement(o.literalMap(proxyReturnEntries))]), entries.length, proxyExpr, this);
	        return proxyExpr.callFn(values);
	    };
	    CompileView.prototype.afterNodes = function () {
	        var _this = this;
	        this.pipes.forEach(function (pipe) { return pipe.create(); });
	        this.viewQueries.values().forEach(function (queries) { return queries.forEach(function (query) { return query.afterChildren(_this.updateViewQueriesMethod); }); });
	    };
	    return CompileView;
	}());
	exports.CompileView = CompileView;
	function getViewType(component, embeddedTemplateIndex) {
	    if (embeddedTemplateIndex > 0) {
	        return core_private_1.ViewType.EMBEDDED;
	    }
	    else if (component.type.isHost) {
	        return core_private_1.ViewType.HOST;
	    }
	    else {
	        return core_private_1.ViewType.COMPONENT;
	    }
	}
	//# sourceMappingURL=compile_view.js.map

/***/ },
/* 178 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var exceptions_1 = __webpack_require__(8);
	var lang_1 = __webpack_require__(3);
	var o = __webpack_require__(10);
	var identifiers_1 = __webpack_require__(17);
	var IMPLICIT_RECEIVER = o.variable('#implicit');
	var ExpressionWithWrappedValueInfo = (function () {
	    function ExpressionWithWrappedValueInfo(expression, needsValueUnwrapper) {
	        this.expression = expression;
	        this.needsValueUnwrapper = needsValueUnwrapper;
	    }
	    return ExpressionWithWrappedValueInfo;
	}());
	exports.ExpressionWithWrappedValueInfo = ExpressionWithWrappedValueInfo;
	function convertCdExpressionToIr(nameResolver, implicitReceiver, expression, valueUnwrapper) {
	    var visitor = new _AstToIrVisitor(nameResolver, implicitReceiver, valueUnwrapper);
	    var irAst = expression.visit(visitor, _Mode.Expression);
	    return new ExpressionWithWrappedValueInfo(irAst, visitor.needsValueUnwrapper);
	}
	exports.convertCdExpressionToIr = convertCdExpressionToIr;
	function convertCdStatementToIr(nameResolver, implicitReceiver, stmt) {
	    var visitor = new _AstToIrVisitor(nameResolver, implicitReceiver, null);
	    var statements = [];
	    flattenStatements(stmt.visit(visitor, _Mode.Statement), statements);
	    return statements;
	}
	exports.convertCdStatementToIr = convertCdStatementToIr;
	var _Mode;
	(function (_Mode) {
	    _Mode[_Mode["Statement"] = 0] = "Statement";
	    _Mode[_Mode["Expression"] = 1] = "Expression";
	})(_Mode || (_Mode = {}));
	function ensureStatementMode(mode, ast) {
	    if (mode !== _Mode.Statement) {
	        throw new exceptions_1.BaseException("Expected a statement, but saw " + ast);
	    }
	}
	function ensureExpressionMode(mode, ast) {
	    if (mode !== _Mode.Expression) {
	        throw new exceptions_1.BaseException("Expected an expression, but saw " + ast);
	    }
	}
	function convertToStatementIfNeeded(mode, expr) {
	    if (mode === _Mode.Statement) {
	        return expr.toStmt();
	    }
	    else {
	        return expr;
	    }
	}
	var _AstToIrVisitor = (function () {
	    function _AstToIrVisitor(_nameResolver, _implicitReceiver, _valueUnwrapper) {
	        this._nameResolver = _nameResolver;
	        this._implicitReceiver = _implicitReceiver;
	        this._valueUnwrapper = _valueUnwrapper;
	        this.needsValueUnwrapper = false;
	    }
	    _AstToIrVisitor.prototype.visitBinary = function (ast, mode) {
	        var op;
	        switch (ast.operation) {
	            case '+':
	                op = o.BinaryOperator.Plus;
	                break;
	            case '-':
	                op = o.BinaryOperator.Minus;
	                break;
	            case '*':
	                op = o.BinaryOperator.Multiply;
	                break;
	            case '/':
	                op = o.BinaryOperator.Divide;
	                break;
	            case '%':
	                op = o.BinaryOperator.Modulo;
	                break;
	            case '&&':
	                op = o.BinaryOperator.And;
	                break;
	            case '||':
	                op = o.BinaryOperator.Or;
	                break;
	            case '==':
	                op = o.BinaryOperator.Equals;
	                break;
	            case '!=':
	                op = o.BinaryOperator.NotEquals;
	                break;
	            case '===':
	                op = o.BinaryOperator.Identical;
	                break;
	            case '!==':
	                op = o.BinaryOperator.NotIdentical;
	                break;
	            case '<':
	                op = o.BinaryOperator.Lower;
	                break;
	            case '>':
	                op = o.BinaryOperator.Bigger;
	                break;
	            case '<=':
	                op = o.BinaryOperator.LowerEquals;
	                break;
	            case '>=':
	                op = o.BinaryOperator.BiggerEquals;
	                break;
	            default:
	                throw new exceptions_1.BaseException("Unsupported operation " + ast.operation);
	        }
	        return convertToStatementIfNeeded(mode, new o.BinaryOperatorExpr(op, ast.left.visit(this, _Mode.Expression), ast.right.visit(this, _Mode.Expression)));
	    };
	    _AstToIrVisitor.prototype.visitChain = function (ast, mode) {
	        ensureStatementMode(mode, ast);
	        return this.visitAll(ast.expressions, mode);
	    };
	    _AstToIrVisitor.prototype.visitConditional = function (ast, mode) {
	        var value = ast.condition.visit(this, _Mode.Expression);
	        return convertToStatementIfNeeded(mode, value.conditional(ast.trueExp.visit(this, _Mode.Expression), ast.falseExp.visit(this, _Mode.Expression)));
	    };
	    _AstToIrVisitor.prototype.visitPipe = function (ast, mode) {
	        var input = ast.exp.visit(this, _Mode.Expression);
	        var args = this.visitAll(ast.args, _Mode.Expression);
	        var value = this._nameResolver.callPipe(ast.name, input, args);
	        this.needsValueUnwrapper = true;
	        return convertToStatementIfNeeded(mode, this._valueUnwrapper.callMethod('unwrap', [value]));
	    };
	    _AstToIrVisitor.prototype.visitFunctionCall = function (ast, mode) {
	        return convertToStatementIfNeeded(mode, ast.target.visit(this, _Mode.Expression)
	            .callFn(this.visitAll(ast.args, _Mode.Expression)));
	    };
	    _AstToIrVisitor.prototype.visitImplicitReceiver = function (ast, mode) {
	        ensureExpressionMode(mode, ast);
	        return IMPLICIT_RECEIVER;
	    };
	    _AstToIrVisitor.prototype.visitInterpolation = function (ast, mode) {
	        ensureExpressionMode(mode, ast);
	        var args = [o.literal(ast.expressions.length)];
	        for (var i = 0; i < ast.strings.length - 1; i++) {
	            args.push(o.literal(ast.strings[i]));
	            args.push(ast.expressions[i].visit(this, _Mode.Expression));
	        }
	        args.push(o.literal(ast.strings[ast.strings.length - 1]));
	        return o.importExpr(identifiers_1.Identifiers.interpolate).callFn(args);
	    };
	    _AstToIrVisitor.prototype.visitKeyedRead = function (ast, mode) {
	        return convertToStatementIfNeeded(mode, ast.obj.visit(this, _Mode.Expression).key(ast.key.visit(this, _Mode.Expression)));
	    };
	    _AstToIrVisitor.prototype.visitKeyedWrite = function (ast, mode) {
	        var obj = ast.obj.visit(this, _Mode.Expression);
	        var key = ast.key.visit(this, _Mode.Expression);
	        var value = ast.value.visit(this, _Mode.Expression);
	        return convertToStatementIfNeeded(mode, obj.key(key).set(value));
	    };
	    _AstToIrVisitor.prototype.visitLiteralArray = function (ast, mode) {
	        return convertToStatementIfNeeded(mode, this._nameResolver.createLiteralArray(this.visitAll(ast.expressions, mode)));
	    };
	    _AstToIrVisitor.prototype.visitLiteralMap = function (ast, mode) {
	        var parts = [];
	        for (var i = 0; i < ast.keys.length; i++) {
	            parts.push([ast.keys[i], ast.values[i].visit(this, _Mode.Expression)]);
	        }
	        return convertToStatementIfNeeded(mode, this._nameResolver.createLiteralMap(parts));
	    };
	    _AstToIrVisitor.prototype.visitLiteralPrimitive = function (ast, mode) {
	        return convertToStatementIfNeeded(mode, o.literal(ast.value));
	    };
	    _AstToIrVisitor.prototype.visitMethodCall = function (ast, mode) {
	        var args = this.visitAll(ast.args, _Mode.Expression);
	        var result = null;
	        var receiver = ast.receiver.visit(this, _Mode.Expression);
	        if (receiver === IMPLICIT_RECEIVER) {
	            var varExpr = this._nameResolver.getLocal(ast.name);
	            if (lang_1.isPresent(varExpr)) {
	                result = varExpr.callFn(args);
	            }
	            else {
	                receiver = this._implicitReceiver;
	            }
	        }
	        if (lang_1.isBlank(result)) {
	            result = receiver.callMethod(ast.name, args);
	        }
	        return convertToStatementIfNeeded(mode, result);
	    };
	    _AstToIrVisitor.prototype.visitPrefixNot = function (ast, mode) {
	        return convertToStatementIfNeeded(mode, o.not(ast.expression.visit(this, _Mode.Expression)));
	    };
	    _AstToIrVisitor.prototype.visitPropertyRead = function (ast, mode) {
	        var result = null;
	        var receiver = ast.receiver.visit(this, _Mode.Expression);
	        if (receiver === IMPLICIT_RECEIVER) {
	            result = this._nameResolver.getLocal(ast.name);
	            if (lang_1.isBlank(result)) {
	                receiver = this._implicitReceiver;
	            }
	        }
	        if (lang_1.isBlank(result)) {
	            result = receiver.prop(ast.name);
	        }
	        return convertToStatementIfNeeded(mode, result);
	    };
	    _AstToIrVisitor.prototype.visitPropertyWrite = function (ast, mode) {
	        var receiver = ast.receiver.visit(this, _Mode.Expression);
	        if (receiver === IMPLICIT_RECEIVER) {
	            var varExpr = this._nameResolver.getLocal(ast.name);
	            if (lang_1.isPresent(varExpr)) {
	                throw new exceptions_1.BaseException('Cannot assign to a reference or variable!');
	            }
	            receiver = this._implicitReceiver;
	        }
	        return convertToStatementIfNeeded(mode, receiver.prop(ast.name).set(ast.value.visit(this, _Mode.Expression)));
	    };
	    _AstToIrVisitor.prototype.visitSafePropertyRead = function (ast, mode) {
	        var receiver = ast.receiver.visit(this, _Mode.Expression);
	        return convertToStatementIfNeeded(mode, receiver.isBlank().conditional(o.NULL_EXPR, receiver.prop(ast.name)));
	    };
	    _AstToIrVisitor.prototype.visitSafeMethodCall = function (ast, mode) {
	        var receiver = ast.receiver.visit(this, _Mode.Expression);
	        var args = this.visitAll(ast.args, _Mode.Expression);
	        return convertToStatementIfNeeded(mode, receiver.isBlank().conditional(o.NULL_EXPR, receiver.callMethod(ast.name, args)));
	    };
	    _AstToIrVisitor.prototype.visitAll = function (asts, mode) {
	        var _this = this;
	        return asts.map(function (ast) { return ast.visit(_this, mode); });
	    };
	    _AstToIrVisitor.prototype.visitQuote = function (ast, mode) {
	        throw new exceptions_1.BaseException('Quotes are not supported for evaluation!');
	    };
	    return _AstToIrVisitor;
	}());
	function flattenStatements(arg, output) {
	    if (lang_1.isArray(arg)) {
	        arg.forEach(function (entry) { return flattenStatements(entry, output); });
	    }
	    else {
	        output.push(arg);
	    }
	}
	//# sourceMappingURL=expression_converter.js.map

/***/ },
/* 179 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var core_1 = __webpack_require__(1);
	var compile_element_1 = __webpack_require__(175);
	var compile_view_1 = __webpack_require__(177);
	var view_builder_1 = __webpack_require__(379);
	var view_binder_1 = __webpack_require__(378);
	var config_1 = __webpack_require__(53);
	var ViewCompileResult = (function () {
	    function ViewCompileResult(statements, viewFactoryVar, dependencies) {
	        this.statements = statements;
	        this.viewFactoryVar = viewFactoryVar;
	        this.dependencies = dependencies;
	    }
	    return ViewCompileResult;
	}());
	exports.ViewCompileResult = ViewCompileResult;
	var ViewCompiler = (function () {
	    function ViewCompiler(_genConfig) {
	        this._genConfig = _genConfig;
	    }
	    ViewCompiler.prototype.compileComponent = function (component, template, styles, pipes) {
	        var statements = [];
	        var dependencies = [];
	        var view = new compile_view_1.CompileView(component, this._genConfig, pipes, styles, 0, compile_element_1.CompileElement.createNull(), []);
	        view_builder_1.buildView(view, template, dependencies);
	        // Need to separate binding from creation to be able to refer to
	        // variables that have been declared after usage.
	        view_binder_1.bindView(view, template);
	        view_builder_1.finishView(view, statements);
	        return new ViewCompileResult(statements, view.viewFactory.name, dependencies);
	    };
	    ViewCompiler.decorators = [
	        { type: core_1.Injectable },
	    ];
	    ViewCompiler.ctorParameters = [
	        { type: config_1.CompilerConfig, },
	    ];
	    return ViewCompiler;
	}());
	exports.ViewCompiler = ViewCompiler;
	//# sourceMappingURL=view_compiler.js.map

/***/ },
/* 180 */,
/* 181 */,
/* 182 */,
/* 183 */,
/* 184 */,
/* 185 */,
/* 186 */,
/* 187 */,
/* 188 */,
/* 189 */,
/* 190 */,
/* 191 */,
/* 192 */,
/* 193 */,
/* 194 */,
/* 195 */,
/* 196 */,
/* 197 */,
/* 198 */,
/* 199 */,
/* 200 */,
/* 201 */
149,
/* 202 */
[461, 41, 201, 403],
/* 203 */
74,
/* 204 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var lang_1 = __webpack_require__(12);
	var math_1 = __webpack_require__(213);
	var collection_1 = __webpack_require__(22);
	var util_1 = __webpack_require__(210);
	var dom_adapter_1 = __webpack_require__(15);
	var Animation = (function () {
	    /**
	     * Stores the start time and starts the animation
	     * @param element
	     * @param data
	     * @param browserDetails
	     */
	    function Animation(element, data, browserDetails) {
	        var _this = this;
	        this.element = element;
	        this.data = data;
	        this.browserDetails = browserDetails;
	        /** functions to be called upon completion */
	        this.callbacks = [];
	        /** functions for removing event listeners */
	        this.eventClearFunctions = [];
	        /** flag used to track whether or not the animation has finished */
	        this.completed = false;
	        this._stringPrefix = '';
	        this.startTime = lang_1.DateWrapper.toMillis(lang_1.DateWrapper.now());
	        this._stringPrefix = dom_adapter_1.getDOM().getAnimationPrefix();
	        this.setup();
	        this.wait(function (timestamp) { return _this.start(); });
	    }
	    Object.defineProperty(Animation.prototype, "totalTime", {
	        /** total amount of time that the animation should take including delay */
	        get: function () {
	            var delay = this.computedDelay != null ? this.computedDelay : 0;
	            var duration = this.computedDuration != null ? this.computedDuration : 0;
	            return delay + duration;
	        },
	        enumerable: true,
	        configurable: true
	    });
	    Animation.prototype.wait = function (callback) {
	        // Firefox requires 2 frames for some reason
	        this.browserDetails.raf(callback, 2);
	    };
	    /**
	     * Sets up the initial styles before the animation is started
	     */
	    Animation.prototype.setup = function () {
	        if (this.data.fromStyles != null)
	            this.applyStyles(this.data.fromStyles);
	        if (this.data.duration != null)
	            this.applyStyles({ 'transitionDuration': this.data.duration.toString() + 'ms' });
	        if (this.data.delay != null)
	            this.applyStyles({ 'transitionDelay': this.data.delay.toString() + 'ms' });
	    };
	    /**
	     * After the initial setup has occurred, this method adds the animation styles
	     */
	    Animation.prototype.start = function () {
	        this.addClasses(this.data.classesToAdd);
	        this.addClasses(this.data.animationClasses);
	        this.removeClasses(this.data.classesToRemove);
	        if (this.data.toStyles != null)
	            this.applyStyles(this.data.toStyles);
	        var computedStyles = dom_adapter_1.getDOM().getComputedStyle(this.element);
	        this.computedDelay =
	            math_1.Math.max(this.parseDurationString(computedStyles.getPropertyValue(this._stringPrefix + 'transition-delay')), this.parseDurationString(this.element.style.getPropertyValue(this._stringPrefix + 'transition-delay')));
	        this.computedDuration = math_1.Math.max(this.parseDurationString(computedStyles.getPropertyValue(this._stringPrefix + 'transition-duration')), this.parseDurationString(this.element.style.getPropertyValue(this._stringPrefix + 'transition-duration')));
	        this.addEvents();
	    };
	    /**
	     * Applies the provided styles to the element
	     * @param styles
	     */
	    Animation.prototype.applyStyles = function (styles) {
	        var _this = this;
	        collection_1.StringMapWrapper.forEach(styles, function (value, key) {
	            var dashCaseKey = util_1.camelCaseToDashCase(key);
	            if (lang_1.isPresent(dom_adapter_1.getDOM().getStyle(_this.element, dashCaseKey))) {
	                dom_adapter_1.getDOM().setStyle(_this.element, dashCaseKey, value.toString());
	            }
	            else {
	                dom_adapter_1.getDOM().setStyle(_this.element, _this._stringPrefix + dashCaseKey, value.toString());
	            }
	        });
	    };
	    /**
	     * Adds the provided classes to the element
	     * @param classes
	     */
	    Animation.prototype.addClasses = function (classes) {
	        for (var i = 0, len = classes.length; i < len; i++)
	            dom_adapter_1.getDOM().addClass(this.element, classes[i]);
	    };
	    /**
	     * Removes the provided classes from the element
	     * @param classes
	     */
	    Animation.prototype.removeClasses = function (classes) {
	        for (var i = 0, len = classes.length; i < len; i++)
	            dom_adapter_1.getDOM().removeClass(this.element, classes[i]);
	    };
	    /**
	     * Adds events to track when animations have finished
	     */
	    Animation.prototype.addEvents = function () {
	        var _this = this;
	        if (this.totalTime > 0) {
	            this.eventClearFunctions.push(dom_adapter_1.getDOM().onAndCancel(this.element, dom_adapter_1.getDOM().getTransitionEnd(), function (event) { return _this.handleAnimationEvent(event); }));
	        }
	        else {
	            this.handleAnimationCompleted();
	        }
	    };
	    Animation.prototype.handleAnimationEvent = function (event) {
	        var elapsedTime = math_1.Math.round(event.elapsedTime * 1000);
	        if (!this.browserDetails.elapsedTimeIncludesDelay)
	            elapsedTime += this.computedDelay;
	        event.stopPropagation();
	        if (elapsedTime >= this.totalTime)
	            this.handleAnimationCompleted();
	    };
	    /**
	     * Runs all animation callbacks and removes temporary classes
	     */
	    Animation.prototype.handleAnimationCompleted = function () {
	        this.removeClasses(this.data.animationClasses);
	        this.callbacks.forEach(function (callback) { return callback(); });
	        this.callbacks = [];
	        this.eventClearFunctions.forEach(function (fn) { return fn(); });
	        this.eventClearFunctions = [];
	        this.completed = true;
	    };
	    /**
	     * Adds animation callbacks to be called upon completion
	     * @param callback
	     * @returns {Animation}
	     */
	    Animation.prototype.onComplete = function (callback) {
	        if (this.completed) {
	            callback();
	        }
	        else {
	            this.callbacks.push(callback);
	        }
	        return this;
	    };
	    /**
	     * Converts the duration string to the number of milliseconds
	     * @param duration
	     * @returns {number}
	     */
	    Animation.prototype.parseDurationString = function (duration) {
	        var maxValue = 0;
	        // duration must have at least 2 characters to be valid. (number + type)
	        if (duration == null || duration.length < 2) {
	            return maxValue;
	        }
	        else if (duration.substring(duration.length - 2) == 'ms') {
	            var value = lang_1.NumberWrapper.parseInt(this.stripLetters(duration), 10);
	            if (value > maxValue)
	                maxValue = value;
	        }
	        else if (duration.substring(duration.length - 1) == 's') {
	            var ms = lang_1.NumberWrapper.parseFloat(this.stripLetters(duration)) * 1000;
	            var value = math_1.Math.floor(ms);
	            if (value > maxValue)
	                maxValue = value;
	        }
	        return maxValue;
	    };
	    /**
	     * Strips the letters from the duration string
	     * @param str
	     * @returns {string}
	     */
	    Animation.prototype.stripLetters = function (str) {
	        return lang_1.StringWrapper.replaceAll(str, lang_1.RegExpWrapper.create('[^0-9]+$', ''), '');
	    };
	    return Animation;
	}());
	exports.Animation = Animation;
	//# sourceMappingURL=animation.js.map

/***/ },
/* 205 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var css_animation_options_1 = __webpack_require__(206);
	var animation_1 = __webpack_require__(204);
	var CssAnimationBuilder = (function () {
	    /**
	     * Accepts public properties for CssAnimationBuilder
	     */
	    function CssAnimationBuilder(browserDetails) {
	        this.browserDetails = browserDetails;
	        /** @type {CssAnimationOptions} */
	        this.data = new css_animation_options_1.CssAnimationOptions();
	    }
	    /**
	     * Adds a temporary class that will be removed at the end of the animation
	     * @param className
	     */
	    CssAnimationBuilder.prototype.addAnimationClass = function (className) {
	        this.data.animationClasses.push(className);
	        return this;
	    };
	    /**
	     * Adds a class that will remain on the element after the animation has finished
	     * @param className
	     */
	    CssAnimationBuilder.prototype.addClass = function (className) {
	        this.data.classesToAdd.push(className);
	        return this;
	    };
	    /**
	     * Removes a class from the element
	     * @param className
	     */
	    CssAnimationBuilder.prototype.removeClass = function (className) {
	        this.data.classesToRemove.push(className);
	        return this;
	    };
	    /**
	     * Sets the animation duration (and overrides any defined through CSS)
	     * @param duration
	     */
	    CssAnimationBuilder.prototype.setDuration = function (duration) {
	        this.data.duration = duration;
	        return this;
	    };
	    /**
	     * Sets the animation delay (and overrides any defined through CSS)
	     * @param delay
	     */
	    CssAnimationBuilder.prototype.setDelay = function (delay) {
	        this.data.delay = delay;
	        return this;
	    };
	    /**
	     * Sets styles for both the initial state and the destination state
	     * @param from
	     * @param to
	     */
	    CssAnimationBuilder.prototype.setStyles = function (from, to) {
	        return this.setFromStyles(from).setToStyles(to);
	    };
	    /**
	     * Sets the initial styles for the animation
	     * @param from
	     */
	    CssAnimationBuilder.prototype.setFromStyles = function (from) {
	        this.data.fromStyles = from;
	        return this;
	    };
	    /**
	     * Sets the destination styles for the animation
	     * @param to
	     */
	    CssAnimationBuilder.prototype.setToStyles = function (to) {
	        this.data.toStyles = to;
	        return this;
	    };
	    /**
	     * Starts the animation and returns a promise
	     * @param element
	     */
	    CssAnimationBuilder.prototype.start = function (element) {
	        return new animation_1.Animation(element, this.data, this.browserDetails);
	    };
	    return CssAnimationBuilder;
	}());
	exports.CssAnimationBuilder = CssAnimationBuilder;
	//# sourceMappingURL=css_animation_builder.js.map

/***/ },
/* 206 */
/***/ function(module, exports) {

	"use strict";
	var CssAnimationOptions = (function () {
	    function CssAnimationOptions() {
	        /** classes to be added to the element */
	        this.classesToAdd = [];
	        /** classes to be removed from the element */
	        this.classesToRemove = [];
	        /** classes to be added for the duration of the animation */
	        this.animationClasses = [];
	    }
	    return CssAnimationOptions;
	}());
	exports.CssAnimationOptions = CssAnimationOptions;
	//# sourceMappingURL=css_animation_options.js.map

/***/ },
/* 207 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var core_1 = __webpack_require__(1);
	var animation_builder_1 = __webpack_require__(116);
	var lang_1 = __webpack_require__(12);
	var exceptions_1 = __webpack_require__(121);
	var shared_styles_host_1 = __webpack_require__(120);
	var event_manager_1 = __webpack_require__(35);
	var dom_tokens_1 = __webpack_require__(68);
	var dom_adapter_1 = __webpack_require__(15);
	var util_1 = __webpack_require__(210);
	var NAMESPACE_URIS = 
	/*@ts2dart_const*/
	{ 'xlink': 'http://www.w3.org/1999/xlink', 'svg': 'http://www.w3.org/2000/svg' };
	var TEMPLATE_COMMENT_TEXT = 'template bindings={}';
	var TEMPLATE_BINDINGS_EXP = /^template bindings=(.*)$/g;
	var DomRootRenderer = (function () {
	    function DomRootRenderer(document, eventManager, sharedStylesHost, animate) {
	        this.document = document;
	        this.eventManager = eventManager;
	        this.sharedStylesHost = sharedStylesHost;
	        this.animate = animate;
	        this._registeredComponents = new Map();
	    }
	    DomRootRenderer.prototype.renderComponent = function (componentProto) {
	        var renderer = this._registeredComponents.get(componentProto.id);
	        if (lang_1.isBlank(renderer)) {
	            renderer = new DomRenderer(this, componentProto);
	            this._registeredComponents.set(componentProto.id, renderer);
	        }
	        return renderer;
	    };
	    return DomRootRenderer;
	}());
	exports.DomRootRenderer = DomRootRenderer;
	var DomRootRenderer_ = (function (_super) {
	    __extends(DomRootRenderer_, _super);
	    function DomRootRenderer_(_document, _eventManager, sharedStylesHost, animate) {
	        _super.call(this, _document, _eventManager, sharedStylesHost, animate);
	    }
	    DomRootRenderer_.decorators = [
	        { type: core_1.Injectable },
	    ];
	    DomRootRenderer_.ctorParameters = [
	        { type: undefined, decorators: [{ type: core_1.Inject, args: [dom_tokens_1.DOCUMENT,] },] },
	        { type: event_manager_1.EventManager, },
	        { type: shared_styles_host_1.DomSharedStylesHost, },
	        { type: animation_builder_1.AnimationBuilder, },
	    ];
	    return DomRootRenderer_;
	}(DomRootRenderer));
	exports.DomRootRenderer_ = DomRootRenderer_;
	var DomRenderer = (function () {
	    function DomRenderer(_rootRenderer, componentProto) {
	        this._rootRenderer = _rootRenderer;
	        this.componentProto = componentProto;
	        this._styles = _flattenStyles(componentProto.id, componentProto.styles, []);
	        if (componentProto.encapsulation !== core_1.ViewEncapsulation.Native) {
	            this._rootRenderer.sharedStylesHost.addStyles(this._styles);
	        }
	        if (this.componentProto.encapsulation === core_1.ViewEncapsulation.Emulated) {
	            this._contentAttr = _shimContentAttribute(componentProto.id);
	            this._hostAttr = _shimHostAttribute(componentProto.id);
	        }
	        else {
	            this._contentAttr = null;
	            this._hostAttr = null;
	        }
	    }
	    DomRenderer.prototype.selectRootElement = function (selectorOrNode, debugInfo) {
	        var el;
	        if (lang_1.isString(selectorOrNode)) {
	            el = dom_adapter_1.getDOM().querySelector(this._rootRenderer.document, selectorOrNode);
	            if (lang_1.isBlank(el)) {
	                throw new exceptions_1.BaseException("The selector \"" + selectorOrNode + "\" did not match any elements");
	            }
	        }
	        else {
	            el = selectorOrNode;
	        }
	        dom_adapter_1.getDOM().clearNodes(el);
	        return el;
	    };
	    DomRenderer.prototype.createElement = function (parent, name, debugInfo) {
	        var nsAndName = splitNamespace(name);
	        var el = lang_1.isPresent(nsAndName[0]) ?
	            dom_adapter_1.getDOM().createElementNS(NAMESPACE_URIS[nsAndName[0]], nsAndName[1]) :
	            dom_adapter_1.getDOM().createElement(nsAndName[1]);
	        if (lang_1.isPresent(this._contentAttr)) {
	            dom_adapter_1.getDOM().setAttribute(el, this._contentAttr, '');
	        }
	        if (lang_1.isPresent(parent)) {
	            dom_adapter_1.getDOM().appendChild(parent, el);
	        }
	        return el;
	    };
	    DomRenderer.prototype.createViewRoot = function (hostElement) {
	        var nodesParent;
	        if (this.componentProto.encapsulation === core_1.ViewEncapsulation.Native) {
	            nodesParent = dom_adapter_1.getDOM().createShadowRoot(hostElement);
	            this._rootRenderer.sharedStylesHost.addHost(nodesParent);
	            for (var i = 0; i < this._styles.length; i++) {
	                dom_adapter_1.getDOM().appendChild(nodesParent, dom_adapter_1.getDOM().createStyleElement(this._styles[i]));
	            }
	        }
	        else {
	            if (lang_1.isPresent(this._hostAttr)) {
	                dom_adapter_1.getDOM().setAttribute(hostElement, this._hostAttr, '');
	            }
	            nodesParent = hostElement;
	        }
	        return nodesParent;
	    };
	    DomRenderer.prototype.createTemplateAnchor = function (parentElement, debugInfo) {
	        var comment = dom_adapter_1.getDOM().createComment(TEMPLATE_COMMENT_TEXT);
	        if (lang_1.isPresent(parentElement)) {
	            dom_adapter_1.getDOM().appendChild(parentElement, comment);
	        }
	        return comment;
	    };
	    DomRenderer.prototype.createText = function (parentElement, value, debugInfo) {
	        var node = dom_adapter_1.getDOM().createTextNode(value);
	        if (lang_1.isPresent(parentElement)) {
	            dom_adapter_1.getDOM().appendChild(parentElement, node);
	        }
	        return node;
	    };
	    DomRenderer.prototype.projectNodes = function (parentElement, nodes) {
	        if (lang_1.isBlank(parentElement))
	            return;
	        appendNodes(parentElement, nodes);
	    };
	    DomRenderer.prototype.attachViewAfter = function (node, viewRootNodes) {
	        moveNodesAfterSibling(node, viewRootNodes);
	        for (var i = 0; i < viewRootNodes.length; i++)
	            this.animateNodeEnter(viewRootNodes[i]);
	    };
	    DomRenderer.prototype.detachView = function (viewRootNodes) {
	        for (var i = 0; i < viewRootNodes.length; i++) {
	            var node = viewRootNodes[i];
	            dom_adapter_1.getDOM().remove(node);
	            this.animateNodeLeave(node);
	        }
	    };
	    DomRenderer.prototype.destroyView = function (hostElement, viewAllNodes) {
	        if (this.componentProto.encapsulation === core_1.ViewEncapsulation.Native && lang_1.isPresent(hostElement)) {
	            this._rootRenderer.sharedStylesHost.removeHost(dom_adapter_1.getDOM().getShadowRoot(hostElement));
	        }
	    };
	    DomRenderer.prototype.listen = function (renderElement, name, callback) {
	        return this._rootRenderer.eventManager.addEventListener(renderElement, name, decoratePreventDefault(callback));
	    };
	    DomRenderer.prototype.listenGlobal = function (target, name, callback) {
	        return this._rootRenderer.eventManager.addGlobalEventListener(target, name, decoratePreventDefault(callback));
	    };
	    DomRenderer.prototype.setElementProperty = function (renderElement, propertyName, propertyValue) {
	        dom_adapter_1.getDOM().setProperty(renderElement, propertyName, propertyValue);
	    };
	    DomRenderer.prototype.setElementAttribute = function (renderElement, attributeName, attributeValue) {
	        var attrNs;
	        var nsAndName = splitNamespace(attributeName);
	        if (lang_1.isPresent(nsAndName[0])) {
	            attributeName = nsAndName[0] + ':' + nsAndName[1];
	            attrNs = NAMESPACE_URIS[nsAndName[0]];
	        }
	        if (lang_1.isPresent(attributeValue)) {
	            if (lang_1.isPresent(attrNs)) {
	                dom_adapter_1.getDOM().setAttributeNS(renderElement, attrNs, attributeName, attributeValue);
	            }
	            else {
	                dom_adapter_1.getDOM().setAttribute(renderElement, attributeName, attributeValue);
	            }
	        }
	        else {
	            if (lang_1.isPresent(attrNs)) {
	                dom_adapter_1.getDOM().removeAttributeNS(renderElement, attrNs, nsAndName[1]);
	            }
	            else {
	                dom_adapter_1.getDOM().removeAttribute(renderElement, attributeName);
	            }
	        }
	    };
	    DomRenderer.prototype.setBindingDebugInfo = function (renderElement, propertyName, propertyValue) {
	        var dashCasedPropertyName = util_1.camelCaseToDashCase(propertyName);
	        if (dom_adapter_1.getDOM().isCommentNode(renderElement)) {
	            var existingBindings = lang_1.RegExpWrapper.firstMatch(TEMPLATE_BINDINGS_EXP, lang_1.StringWrapper.replaceAll(dom_adapter_1.getDOM().getText(renderElement), /\n/g, ''));
	            var parsedBindings = lang_1.Json.parse(existingBindings[1]);
	            parsedBindings[dashCasedPropertyName] = propertyValue;
	            dom_adapter_1.getDOM().setText(renderElement, lang_1.StringWrapper.replace(TEMPLATE_COMMENT_TEXT, '{}', lang_1.Json.stringify(parsedBindings)));
	        }
	        else {
	            this.setElementAttribute(renderElement, propertyName, propertyValue);
	        }
	    };
	    DomRenderer.prototype.setElementClass = function (renderElement, className, isAdd) {
	        if (isAdd) {
	            dom_adapter_1.getDOM().addClass(renderElement, className);
	        }
	        else {
	            dom_adapter_1.getDOM().removeClass(renderElement, className);
	        }
	    };
	    DomRenderer.prototype.setElementStyle = function (renderElement, styleName, styleValue) {
	        if (lang_1.isPresent(styleValue)) {
	            dom_adapter_1.getDOM().setStyle(renderElement, styleName, lang_1.stringify(styleValue));
	        }
	        else {
	            dom_adapter_1.getDOM().removeStyle(renderElement, styleName);
	        }
	    };
	    DomRenderer.prototype.invokeElementMethod = function (renderElement, methodName, args) {
	        dom_adapter_1.getDOM().invoke(renderElement, methodName, args);
	    };
	    DomRenderer.prototype.setText = function (renderNode, text) { dom_adapter_1.getDOM().setText(renderNode, text); };
	    /**
	     * Performs animations if necessary
	     * @param node
	     */
	    DomRenderer.prototype.animateNodeEnter = function (node) {
	        if (dom_adapter_1.getDOM().isElementNode(node) && dom_adapter_1.getDOM().hasClass(node, 'ng-animate')) {
	            dom_adapter_1.getDOM().addClass(node, 'ng-enter');
	            this._rootRenderer.animate.css()
	                .addAnimationClass('ng-enter-active')
	                .start(node)
	                .onComplete(function () { dom_adapter_1.getDOM().removeClass(node, 'ng-enter'); });
	        }
	    };
	    /**
	     * If animations are necessary, performs animations then removes the element; otherwise, it just
	     * removes the element.
	     * @param node
	     */
	    DomRenderer.prototype.animateNodeLeave = function (node) {
	        if (dom_adapter_1.getDOM().isElementNode(node) && dom_adapter_1.getDOM().hasClass(node, 'ng-animate')) {
	            dom_adapter_1.getDOM().addClass(node, 'ng-leave');
	            this._rootRenderer.animate.css()
	                .addAnimationClass('ng-leave-active')
	                .start(node)
	                .onComplete(function () {
	                dom_adapter_1.getDOM().removeClass(node, 'ng-leave');
	                dom_adapter_1.getDOM().remove(node);
	            });
	        }
	        else {
	            dom_adapter_1.getDOM().remove(node);
	        }
	    };
	    return DomRenderer;
	}());
	exports.DomRenderer = DomRenderer;
	function moveNodesAfterSibling(sibling, nodes) {
	    var parent = dom_adapter_1.getDOM().parentElement(sibling);
	    if (nodes.length > 0 && lang_1.isPresent(parent)) {
	        var nextSibling = dom_adapter_1.getDOM().nextSibling(sibling);
	        if (lang_1.isPresent(nextSibling)) {
	            for (var i = 0; i < nodes.length; i++) {
	                dom_adapter_1.getDOM().insertBefore(nextSibling, nodes[i]);
	            }
	        }
	        else {
	            for (var i = 0; i < nodes.length; i++) {
	                dom_adapter_1.getDOM().appendChild(parent, nodes[i]);
	            }
	        }
	    }
	}
	function appendNodes(parent, nodes) {
	    for (var i = 0; i < nodes.length; i++) {
	        dom_adapter_1.getDOM().appendChild(parent, nodes[i]);
	    }
	}
	function decoratePreventDefault(eventHandler) {
	    return function (event) {
	        var allowDefaultBehavior = eventHandler(event);
	        if (allowDefaultBehavior === false) {
	            // TODO(tbosch): move preventDefault into event plugins...
	            dom_adapter_1.getDOM().preventDefault(event);
	        }
	    };
	}
	var COMPONENT_REGEX = /%COMP%/g;
	exports.COMPONENT_VARIABLE = '%COMP%';
	exports.HOST_ATTR = "_nghost-" + exports.COMPONENT_VARIABLE;
	exports.CONTENT_ATTR = "_ngcontent-" + exports.COMPONENT_VARIABLE;
	function _shimContentAttribute(componentShortId) {
	    return lang_1.StringWrapper.replaceAll(exports.CONTENT_ATTR, COMPONENT_REGEX, componentShortId);
	}
	function _shimHostAttribute(componentShortId) {
	    return lang_1.StringWrapper.replaceAll(exports.HOST_ATTR, COMPONENT_REGEX, componentShortId);
	}
	function _flattenStyles(compId, styles, target) {
	    for (var i = 0; i < styles.length; i++) {
	        var style = styles[i];
	        if (lang_1.isArray(style)) {
	            _flattenStyles(compId, style, target);
	        }
	        else {
	            style = lang_1.StringWrapper.replaceAll(style, COMPONENT_REGEX, compId);
	            target.push(style);
	        }
	    }
	    return target;
	}
	var NS_PREFIX_RE = /^@([^:]+):(.+)/g;
	function splitNamespace(name) {
	    if (name[0] != '@') {
	        return [null, name];
	    }
	    var match = lang_1.RegExpWrapper.firstMatch(NS_PREFIX_RE, name);
	    return [match[1], match[2]];
	}
	//# sourceMappingURL=dom_renderer.js.map

/***/ },
/* 208 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var core_1 = __webpack_require__(1);
	var dom_adapter_1 = __webpack_require__(15);
	var event_manager_1 = __webpack_require__(35);
	var DomEventsPlugin = (function (_super) {
	    __extends(DomEventsPlugin, _super);
	    function DomEventsPlugin() {
	        _super.apply(this, arguments);
	    }
	    // This plugin should come last in the list of plugins, because it accepts all
	    // events.
	    DomEventsPlugin.prototype.supports = function (eventName) { return true; };
	    DomEventsPlugin.prototype.addEventListener = function (element, eventName, handler) {
	        var zone = this.manager.getZone();
	        var outsideHandler = function (event) { return zone.runGuarded(function () { return handler(event); }); };
	        return this.manager.getZone().runOutsideAngular(function () { return dom_adapter_1.getDOM().onAndCancel(element, eventName, outsideHandler); });
	    };
	    DomEventsPlugin.prototype.addGlobalEventListener = function (target, eventName, handler) {
	        var element = dom_adapter_1.getDOM().getGlobalEventTarget(target);
	        var zone = this.manager.getZone();
	        var outsideHandler = function (event) { return zone.runGuarded(function () { return handler(event); }); };
	        return this.manager.getZone().runOutsideAngular(function () { return dom_adapter_1.getDOM().onAndCancel(element, eventName, outsideHandler); });
	    };
	    DomEventsPlugin.decorators = [
	        { type: core_1.Injectable },
	    ];
	    return DomEventsPlugin;
	}(event_manager_1.EventManagerPlugin));
	exports.DomEventsPlugin = DomEventsPlugin;
	//# sourceMappingURL=dom_events.js.map

/***/ },
/* 209 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var core_1 = __webpack_require__(1);
	var lang_1 = __webpack_require__(12);
	var exceptions_1 = __webpack_require__(121);
	var hammer_common_1 = __webpack_require__(416);
	exports.HAMMER_GESTURE_CONFIG = 
	/*@ts2dart_const*/ new core_1.OpaqueToken("HammerGestureConfig");
	var HammerGestureConfig = (function () {
	    function HammerGestureConfig() {
	        this.events = [];
	        this.overrides = {};
	    }
	    HammerGestureConfig.prototype.buildHammer = function (element) {
	        var mc = new Hammer(element);
	        mc.get('pinch').set({ enable: true });
	        mc.get('rotate').set({ enable: true });
	        for (var eventName in this.overrides) {
	            mc.get(eventName).set(this.overrides[eventName]);
	        }
	        return mc;
	    };
	    HammerGestureConfig.decorators = [
	        { type: core_1.Injectable },
	    ];
	    return HammerGestureConfig;
	}());
	exports.HammerGestureConfig = HammerGestureConfig;
	var HammerGesturesPlugin = (function (_super) {
	    __extends(HammerGesturesPlugin, _super);
	    function HammerGesturesPlugin(_config) {
	        _super.call(this);
	        this._config = _config;
	    }
	    HammerGesturesPlugin.prototype.supports = function (eventName) {
	        if (!_super.prototype.supports.call(this, eventName) && !this.isCustomEvent(eventName))
	            return false;
	        if (!lang_1.isPresent(window['Hammer'])) {
	            throw new exceptions_1.BaseException("Hammer.js is not loaded, can not bind " + eventName + " event");
	        }
	        return true;
	    };
	    HammerGesturesPlugin.prototype.addEventListener = function (element, eventName, handler) {
	        var _this = this;
	        var zone = this.manager.getZone();
	        eventName = eventName.toLowerCase();
	        return zone.runOutsideAngular(function () {
	            // Creating the manager bind events, must be done outside of angular
	            var mc = _this._config.buildHammer(element);
	            var callback = function (eventObj) { zone.runGuarded(function () { handler(eventObj); }); };
	            mc.on(eventName, callback);
	            return function () { mc.off(eventName, callback); };
	        });
	    };
	    HammerGesturesPlugin.prototype.isCustomEvent = function (eventName) { return this._config.events.indexOf(eventName) > -1; };
	    HammerGesturesPlugin.decorators = [
	        { type: core_1.Injectable },
	    ];
	    HammerGesturesPlugin.ctorParameters = [
	        { type: HammerGestureConfig, decorators: [{ type: core_1.Inject, args: [exports.HAMMER_GESTURE_CONFIG,] },] },
	    ];
	    return HammerGesturesPlugin;
	}(hammer_common_1.HammerGesturesPluginCommon));
	exports.HammerGesturesPlugin = HammerGesturesPlugin;
	//# sourceMappingURL=hammer_gestures.js.map

/***/ },
/* 210 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var lang_1 = __webpack_require__(12);
	var CAMEL_CASE_REGEXP = /([A-Z])/g;
	var DASH_CASE_REGEXP = /-([a-z])/g;
	function camelCaseToDashCase(input) {
	    return lang_1.StringWrapper.replaceAllMapped(input, CAMEL_CASE_REGEXP, function (m) { return '-' + m[1].toLowerCase(); });
	}
	exports.camelCaseToDashCase = camelCaseToDashCase;
	function dashCaseToCamelCase(input) {
	    return lang_1.StringWrapper.replaceAllMapped(input, DASH_CASE_REGEXP, function (m) { return m[1].toUpperCase(); });
	}
	exports.dashCaseToCamelCase = dashCaseToCamelCase;
	//# sourceMappingURL=util.js.map

/***/ },
/* 211 */
149,
/* 212 */
[461, 12, 211, 22],
/* 213 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var lang_1 = __webpack_require__(12);
	exports.Math = lang_1.global.Math;
	exports.NaN = typeof exports.NaN;
	//# sourceMappingURL=math.js.map

/***/ },
/* 214 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var url_sanitizer_1 = __webpack_require__(422);
	var style_sanitizer_1 = __webpack_require__(421);
	var core_private_1 = __webpack_require__(115);
	exports.SecurityContext = core_private_1.SecurityContext;
	var core_1 = __webpack_require__(1);
	/**
	 * DomSanitizationService helps preventing Cross Site Scripting Security bugs (XSS) by sanitizing
	 * values to be safe to use in the different DOM contexts.
	 *
	 * For example, when binding a URL in an `<a [href]="someValue">` hyperlink, `someValue` will be
	 * sanitized so that an attacker cannot inject e.g. a `javascript:` URL that would execute code on
	 * the website.
	 *
	 * In specific situations, it might be necessary to disable sanitization, for example if the
	 * application genuinely needs to produce a `javascript:` style link with a dynamic value in it.
	 * Users can bypass security by constructing a value with one of the `bypassSecurityTrust...`
	 * methods, and then binding to that value from the template.
	 *
	 * These situations should be very rare, and extraordinary care must be taken to avoid creating a
	 * Cross Site Scripting (XSS) security bug!
	 *
	 * When using `bypassSecurityTrust...`, make sure to call the method as early as possible and as
	 * close as possible to the source of the value, to make it easy to verify no security bug is
	 * created by its use.
	 *
	 * It is not required (and not recommended) to bypass security if the value is safe, e.g. a URL that
	 * does not start with a suspicious protocol, or an HTML snippet that does not contain dangerous
	 * code. The sanitizer leaves safe values intact.
	 */
	var DomSanitizationService = (function () {
	    function DomSanitizationService() {
	    }
	    return DomSanitizationService;
	}());
	exports.DomSanitizationService = DomSanitizationService;
	var DomSanitizationServiceImpl = (function (_super) {
	    __extends(DomSanitizationServiceImpl, _super);
	    function DomSanitizationServiceImpl() {
	        _super.apply(this, arguments);
	    }
	    DomSanitizationServiceImpl.prototype.sanitize = function (ctx, value) {
	        if (value == null)
	            return null;
	        switch (ctx) {
	            case core_private_1.SecurityContext.NONE:
	                return value;
	            case core_private_1.SecurityContext.HTML:
	                if (value instanceof SafeHtmlImpl)
	                    return value.changingThisBreaksApplicationSecurity;
	                this.checkNotSafeValue(value, 'HTML');
	                return this.sanitizeHtml(String(value));
	            case core_private_1.SecurityContext.STYLE:
	                if (value instanceof SafeStyleImpl)
	                    return value.changingThisBreaksApplicationSecurity;
	                this.checkNotSafeValue(value, 'Style');
	                return style_sanitizer_1.sanitizeStyle(value);
	            case core_private_1.SecurityContext.SCRIPT:
	                if (value instanceof SafeScriptImpl)
	                    return value.changingThisBreaksApplicationSecurity;
	                this.checkNotSafeValue(value, 'Script');
	                throw new Error('unsafe value used in a script context');
	            case core_private_1.SecurityContext.URL:
	                if (value instanceof SafeUrlImpl)
	                    return value.changingThisBreaksApplicationSecurity;
	                this.checkNotSafeValue(value, 'URL');
	                return url_sanitizer_1.sanitizeUrl(String(value));
	            case core_private_1.SecurityContext.RESOURCE_URL:
	                if (value instanceof SafeResourceUrlImpl) {
	                    return value.changingThisBreaksApplicationSecurity;
	                }
	                this.checkNotSafeValue(value, 'ResourceURL');
	                throw new Error('unsafe value used in a resource URL context');
	            default:
	                throw new Error("Unexpected SecurityContext " + ctx);
	        }
	    };
	    DomSanitizationServiceImpl.prototype.checkNotSafeValue = function (value, expectedType) {
	        if (value instanceof SafeValueImpl) {
	            throw new Error('Required a safe ' + expectedType + ', got a ' + value.getTypeName());
	        }
	    };
	    DomSanitizationServiceImpl.prototype.sanitizeHtml = function (value) {
	        // TODO(martinprobst): implement.
	        return value;
	    };
	    DomSanitizationServiceImpl.prototype.bypassSecurityTrustHtml = function (value) { return new SafeHtmlImpl(value); };
	    DomSanitizationServiceImpl.prototype.bypassSecurityTrustStyle = function (value) { return new SafeStyleImpl(value); };
	    DomSanitizationServiceImpl.prototype.bypassSecurityTrustScript = function (value) { return new SafeScriptImpl(value); };
	    DomSanitizationServiceImpl.prototype.bypassSecurityTrustUrl = function (value) { return new SafeUrlImpl(value); };
	    DomSanitizationServiceImpl.prototype.bypassSecurityTrustResourceUrl = function (value) {
	        return new SafeResourceUrlImpl(value);
	    };
	    DomSanitizationServiceImpl.decorators = [
	        { type: core_1.Injectable },
	    ];
	    return DomSanitizationServiceImpl;
	}(DomSanitizationService));
	exports.DomSanitizationServiceImpl = DomSanitizationServiceImpl;
	var SafeValueImpl = (function () {
	    function SafeValueImpl(changingThisBreaksApplicationSecurity) {
	        this.changingThisBreaksApplicationSecurity = changingThisBreaksApplicationSecurity;
	        // empty
	    }
	    return SafeValueImpl;
	}());
	var SafeHtmlImpl = (function (_super) {
	    __extends(SafeHtmlImpl, _super);
	    function SafeHtmlImpl() {
	        _super.apply(this, arguments);
	    }
	    SafeHtmlImpl.prototype.getTypeName = function () { return 'HTML'; };
	    return SafeHtmlImpl;
	}(SafeValueImpl));
	var SafeStyleImpl = (function (_super) {
	    __extends(SafeStyleImpl, _super);
	    function SafeStyleImpl() {
	        _super.apply(this, arguments);
	    }
	    SafeStyleImpl.prototype.getTypeName = function () { return 'Style'; };
	    return SafeStyleImpl;
	}(SafeValueImpl));
	var SafeScriptImpl = (function (_super) {
	    __extends(SafeScriptImpl, _super);
	    function SafeScriptImpl() {
	        _super.apply(this, arguments);
	    }
	    SafeScriptImpl.prototype.getTypeName = function () { return 'Script'; };
	    return SafeScriptImpl;
	}(SafeValueImpl));
	var SafeUrlImpl = (function (_super) {
	    __extends(SafeUrlImpl, _super);
	    function SafeUrlImpl() {
	        _super.apply(this, arguments);
	    }
	    SafeUrlImpl.prototype.getTypeName = function () { return 'URL'; };
	    return SafeUrlImpl;
	}(SafeValueImpl));
	var SafeResourceUrlImpl = (function (_super) {
	    __extends(SafeResourceUrlImpl, _super);
	    function SafeResourceUrlImpl() {
	        _super.apply(this, arguments);
	    }
	    SafeResourceUrlImpl.prototype.getTypeName = function () { return 'ResourceURL'; };
	    return SafeResourceUrlImpl;
	}(SafeValueImpl));
	//# sourceMappingURL=dom_sanitization_service.js.map

/***/ },
/* 215 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : afrikaans (af)
	//! author : Werner Mollentze : https://github.com/wernerm
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var af = moment.defineLocale('af', {
	        months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),
	        monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
	        weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),
	        weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
	        weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
	        meridiemParse: /vm|nm/i,
	        isPM : function (input) {
	            return /^nm$/i.test(input);
	        },
	        meridiem : function (hours, minutes, isLower) {
	            if (hours < 12) {
	                return isLower ? 'vm' : 'VM';
	            } else {
	                return isLower ? 'nm' : 'NM';
	            }
	        },
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY HH:mm',
	            LLLL : 'dddd, D MMMM YYYY HH:mm'
	        },
	        calendar : {
	            sameDay : '[Vandag om] LT',
	            nextDay : '[Môre om] LT',
	            nextWeek : 'dddd [om] LT',
	            lastDay : '[Gister om] LT',
	            lastWeek : '[Laas] dddd [om] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'oor %s',
	            past : '%s gelede',
	            s : '\'n paar sekondes',
	            m : '\'n minuut',
	            mm : '%d minute',
	            h : '\'n uur',
	            hh : '%d ure',
	            d : '\'n dag',
	            dd : '%d dae',
	            M : '\'n maand',
	            MM : '%d maande',
	            y : '\'n jaar',
	            yy : '%d jaar'
	        },
	        ordinalParse: /\d{1,2}(ste|de)/,
	        ordinal : function (number) {
	            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter
	        },
	        week : {
	            dow : 1, // Maandag is die eerste dag van die week.
	            doy : 4  // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
	        }
	    });
	
	    return af;
	
	}));

/***/ },
/* 216 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : Moroccan Arabic (ar-ma)
	//! author : ElFadili Yassine : https://github.com/ElFadiliY
	//! author : Abdel Said : https://github.com/abdelsaid
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var ar_ma = moment.defineLocale('ar-ma', {
	        months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
	        monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
	        weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
	        weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
	        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY HH:mm',
	            LLLL : 'dddd D MMMM YYYY HH:mm'
	        },
	        calendar : {
	            sameDay: '[اليوم على الساعة] LT',
	            nextDay: '[غدا على الساعة] LT',
	            nextWeek: 'dddd [على الساعة] LT',
	            lastDay: '[أمس على الساعة] LT',
	            lastWeek: 'dddd [على الساعة] LT',
	            sameElse: 'L'
	        },
	        relativeTime : {
	            future : 'في %s',
	            past : 'منذ %s',
	            s : 'ثوان',
	            m : 'دقيقة',
	            mm : '%d دقائق',
	            h : 'ساعة',
	            hh : '%d ساعات',
	            d : 'يوم',
	            dd : '%d أيام',
	            M : 'شهر',
	            MM : '%d أشهر',
	            y : 'سنة',
	            yy : '%d سنوات'
	        },
	        week : {
	            dow : 6, // Saturday is the first day of the week.
	            doy : 12  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return ar_ma;
	
	}));

/***/ },
/* 217 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : Arabic Saudi Arabia (ar-sa)
	//! author : Suhail Alkowaileet : https://github.com/xsoh
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var symbolMap = {
	        '1': '١',
	        '2': '٢',
	        '3': '٣',
	        '4': '٤',
	        '5': '٥',
	        '6': '٦',
	        '7': '٧',
	        '8': '٨',
	        '9': '٩',
	        '0': '٠'
	    }, numberMap = {
	        '١': '1',
	        '٢': '2',
	        '٣': '3',
	        '٤': '4',
	        '٥': '5',
	        '٦': '6',
	        '٧': '7',
	        '٨': '8',
	        '٩': '9',
	        '٠': '0'
	    };
	
	    var ar_sa = moment.defineLocale('ar-sa', {
	        months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
	        monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
	        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
	        weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
	        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY HH:mm',
	            LLLL : 'dddd D MMMM YYYY HH:mm'
	        },
	        meridiemParse: /ص|م/,
	        isPM : function (input) {
	            return 'م' === input;
	        },
	        meridiem : function (hour, minute, isLower) {
	            if (hour < 12) {
	                return 'ص';
	            } else {
	                return 'م';
	            }
	        },
	        calendar : {
	            sameDay: '[اليوم على الساعة] LT',
	            nextDay: '[غدا على الساعة] LT',
	            nextWeek: 'dddd [على الساعة] LT',
	            lastDay: '[أمس على الساعة] LT',
	            lastWeek: 'dddd [على الساعة] LT',
	            sameElse: 'L'
	        },
	        relativeTime : {
	            future : 'في %s',
	            past : 'منذ %s',
	            s : 'ثوان',
	            m : 'دقيقة',
	            mm : '%d دقائق',
	            h : 'ساعة',
	            hh : '%d ساعات',
	            d : 'يوم',
	            dd : '%d أيام',
	            M : 'شهر',
	            MM : '%d أشهر',
	            y : 'سنة',
	            yy : '%d سنوات'
	        },
	        preparse: function (string) {
	            return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
	                return numberMap[match];
	            }).replace(/،/g, ',');
	        },
	        postformat: function (string) {
	            return string.replace(/\d/g, function (match) {
	                return symbolMap[match];
	            }).replace(/,/g, '،');
	        },
	        week : {
	            dow : 6, // Saturday is the first day of the week.
	            doy : 12  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return ar_sa;
	
	}));

/***/ },
/* 218 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale  : Tunisian Arabic (ar-tn)
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var ar_tn = moment.defineLocale('ar-tn', {
	        months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
	        monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
	        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
	        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
	        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat: {
	            LT: 'HH:mm',
	            LTS: 'HH:mm:ss',
	            L: 'DD/MM/YYYY',
	            LL: 'D MMMM YYYY',
	            LLL: 'D MMMM YYYY HH:mm',
	            LLLL: 'dddd D MMMM YYYY HH:mm'
	        },
	        calendar: {
	            sameDay: '[اليوم على الساعة] LT',
	            nextDay: '[غدا على الساعة] LT',
	            nextWeek: 'dddd [على الساعة] LT',
	            lastDay: '[أمس على الساعة] LT',
	            lastWeek: 'dddd [على الساعة] LT',
	            sameElse: 'L'
	        },
	        relativeTime: {
	            future: 'في %s',
	            past: 'منذ %s',
	            s: 'ثوان',
	            m: 'دقيقة',
	            mm: '%d دقائق',
	            h: 'ساعة',
	            hh: '%d ساعات',
	            d: 'يوم',
	            dd: '%d أيام',
	            M: 'شهر',
	            MM: '%d أشهر',
	            y: 'سنة',
	            yy: '%d سنوات'
	        },
	        week: {
	            dow: 1, // Monday is the first day of the week.
	            doy: 4 // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return ar_tn;
	
	}));

/***/ },
/* 219 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! Locale: Arabic (ar)
	//! Author: Abdel Said: https://github.com/abdelsaid
	//! Changes in months, weekdays: Ahmed Elkhatib
	//! Native plural forms: forabi https://github.com/forabi
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var symbolMap = {
	        '1': '١',
	        '2': '٢',
	        '3': '٣',
	        '4': '٤',
	        '5': '٥',
	        '6': '٦',
	        '7': '٧',
	        '8': '٨',
	        '9': '٩',
	        '0': '٠'
	    }, numberMap = {
	        '١': '1',
	        '٢': '2',
	        '٣': '3',
	        '٤': '4',
	        '٥': '5',
	        '٦': '6',
	        '٧': '7',
	        '٨': '8',
	        '٩': '9',
	        '٠': '0'
	    }, pluralForm = function (n) {
	        return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;
	    }, plurals = {
	        s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],
	        m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],
	        h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],
	        d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],
	        M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],
	        y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']
	    }, pluralize = function (u) {
	        return function (number, withoutSuffix, string, isFuture) {
	            var f = pluralForm(number),
	                str = plurals[u][pluralForm(number)];
	            if (f === 2) {
	                str = str[withoutSuffix ? 0 : 1];
	            }
	            return str.replace(/%d/i, number);
	        };
	    }, months = [
	        'كانون الثاني يناير',
	        'شباط فبراير',
	        'آذار مارس',
	        'نيسان أبريل',
	        'أيار مايو',
	        'حزيران يونيو',
	        'تموز يوليو',
	        'آب أغسطس',
	        'أيلول سبتمبر',
	        'تشرين الأول أكتوبر',
	        'تشرين الثاني نوفمبر',
	        'كانون الأول ديسمبر'
	    ];
	
	    var ar = moment.defineLocale('ar', {
	        months : months,
	        monthsShort : months,
	        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
	        weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
	        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'D/\u200FM/\u200FYYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY HH:mm',
	            LLLL : 'dddd D MMMM YYYY HH:mm'
	        },
	        meridiemParse: /ص|م/,
	        isPM : function (input) {
	            return 'م' === input;
	        },
	        meridiem : function (hour, minute, isLower) {
	            if (hour < 12) {
	                return 'ص';
	            } else {
	                return 'م';
	            }
	        },
	        calendar : {
	            sameDay: '[اليوم عند الساعة] LT',
	            nextDay: '[غدًا عند الساعة] LT',
	            nextWeek: 'dddd [عند الساعة] LT',
	            lastDay: '[أمس عند الساعة] LT',
	            lastWeek: 'dddd [عند الساعة] LT',
	            sameElse: 'L'
	        },
	        relativeTime : {
	            future : 'بعد %s',
	            past : 'منذ %s',
	            s : pluralize('s'),
	            m : pluralize('m'),
	            mm : pluralize('m'),
	            h : pluralize('h'),
	            hh : pluralize('h'),
	            d : pluralize('d'),
	            dd : pluralize('d'),
	            M : pluralize('M'),
	            MM : pluralize('M'),
	            y : pluralize('y'),
	            yy : pluralize('y')
	        },
	        preparse: function (string) {
	            return string.replace(/\u200f/g, '').replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
	                return numberMap[match];
	            }).replace(/،/g, ',');
	        },
	        postformat: function (string) {
	            return string.replace(/\d/g, function (match) {
	                return symbolMap[match];
	            }).replace(/,/g, '،');
	        },
	        week : {
	            dow : 6, // Saturday is the first day of the week.
	            doy : 12  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return ar;
	
	}));

/***/ },
/* 220 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : azerbaijani (az)
	//! author : topchiyev : https://github.com/topchiyev
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var suffixes = {
	        1: '-inci',
	        5: '-inci',
	        8: '-inci',
	        70: '-inci',
	        80: '-inci',
	        2: '-nci',
	        7: '-nci',
	        20: '-nci',
	        50: '-nci',
	        3: '-üncü',
	        4: '-üncü',
	        100: '-üncü',
	        6: '-ncı',
	        9: '-uncu',
	        10: '-uncu',
	        30: '-uncu',
	        60: '-ıncı',
	        90: '-ıncı'
	    };
	
	    var az = moment.defineLocale('az', {
	        months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),
	        monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
	        weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'),
	        weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
	        weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD.MM.YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY HH:mm',
	            LLLL : 'dddd, D MMMM YYYY HH:mm'
	        },
	        calendar : {
	            sameDay : '[bugün saat] LT',
	            nextDay : '[sabah saat] LT',
	            nextWeek : '[gələn həftə] dddd [saat] LT',
	            lastDay : '[dünən] LT',
	            lastWeek : '[keçən həftə] dddd [saat] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : '%s sonra',
	            past : '%s əvvəl',
	            s : 'birneçə saniyyə',
	            m : 'bir dəqiqə',
	            mm : '%d dəqiqə',
	            h : 'bir saat',
	            hh : '%d saat',
	            d : 'bir gün',
	            dd : '%d gün',
	            M : 'bir ay',
	            MM : '%d ay',
	            y : 'bir il',
	            yy : '%d il'
	        },
	        meridiemParse: /gecə|səhər|gündüz|axşam/,
	        isPM : function (input) {
	            return /^(gündüz|axşam)$/.test(input);
	        },
	        meridiem : function (hour, minute, isLower) {
	            if (hour < 4) {
	                return 'gecə';
	            } else if (hour < 12) {
	                return 'səhər';
	            } else if (hour < 17) {
	                return 'gündüz';
	            } else {
	                return 'axşam';
	            }
	        },
	        ordinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
	        ordinal : function (number) {
	            if (number === 0) {  // special case for zero
	                return number + '-ıncı';
	            }
	            var a = number % 10,
	                b = number % 100 - a,
	                c = number >= 100 ? 100 : null;
	            return number + (suffixes[a] || suffixes[b] || suffixes[c]);
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 7  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return az;
	
	}));

/***/ },
/* 221 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : belarusian (be)
	//! author : Dmitry Demidov : https://github.com/demidov91
	//! author: Praleska: http://praleska.pro/
	//! Author : Menelion Elensúle : https://github.com/Oire
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    function plural(word, num) {
	        var forms = word.split('_');
	        return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
	    }
	    function relativeTimeWithPlural(number, withoutSuffix, key) {
	        var format = {
	            'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
	            'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',
	            'dd': 'дзень_дні_дзён',
	            'MM': 'месяц_месяцы_месяцаў',
	            'yy': 'год_гады_гадоў'
	        };
	        if (key === 'm') {
	            return withoutSuffix ? 'хвіліна' : 'хвіліну';
	        }
	        else if (key === 'h') {
	            return withoutSuffix ? 'гадзіна' : 'гадзіну';
	        }
	        else {
	            return number + ' ' + plural(format[key], +number);
	        }
	    }
	
	    var be = moment.defineLocale('be', {
	        months : {
	            format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'),
	            standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_')
	        },
	        monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),
	        weekdays : {
	            format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'),
	            standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'),
	            isFormat: /\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/
	        },
	        weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
	        weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD.MM.YYYY',
	            LL : 'D MMMM YYYY г.',
	            LLL : 'D MMMM YYYY г., HH:mm',
	            LLLL : 'dddd, D MMMM YYYY г., HH:mm'
	        },
	        calendar : {
	            sameDay: '[Сёння ў] LT',
	            nextDay: '[Заўтра ў] LT',
	            lastDay: '[Учора ў] LT',
	            nextWeek: function () {
	                return '[У] dddd [ў] LT';
	            },
	            lastWeek: function () {
	                switch (this.day()) {
	                case 0:
	                case 3:
	                case 5:
	                case 6:
	                    return '[У мінулую] dddd [ў] LT';
	                case 1:
	                case 2:
	                case 4:
	                    return '[У мінулы] dddd [ў] LT';
	                }
	            },
	            sameElse: 'L'
	        },
	        relativeTime : {
	            future : 'праз %s',
	            past : '%s таму',
	            s : 'некалькі секунд',
	            m : relativeTimeWithPlural,
	            mm : relativeTimeWithPlural,
	            h : relativeTimeWithPlural,
	            hh : relativeTimeWithPlural,
	            d : 'дзень',
	            dd : relativeTimeWithPlural,
	            M : 'месяц',
	            MM : relativeTimeWithPlural,
	            y : 'год',
	            yy : relativeTimeWithPlural
	        },
	        meridiemParse: /ночы|раніцы|дня|вечара/,
	        isPM : function (input) {
	            return /^(дня|вечара)$/.test(input);
	        },
	        meridiem : function (hour, minute, isLower) {
	            if (hour < 4) {
	                return 'ночы';
	            } else if (hour < 12) {
	                return 'раніцы';
	            } else if (hour < 17) {
	                return 'дня';
	            } else {
	                return 'вечара';
	            }
	        },
	        ordinalParse: /\d{1,2}-(і|ы|га)/,
	        ordinal: function (number, period) {
	            switch (period) {
	            case 'M':
	            case 'd':
	            case 'DDD':
	            case 'w':
	            case 'W':
	                return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы';
	            case 'D':
	                return number + '-га';
	            default:
	                return number;
	            }
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 7  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return be;
	
	}));

/***/ },
/* 222 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : bulgarian (bg)
	//! author : Krasen Borisov : https://github.com/kraz
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var bg = moment.defineLocale('bg', {
	        months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),
	        monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
	        weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),
	        weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
	        weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
	        longDateFormat : {
	            LT : 'H:mm',
	            LTS : 'H:mm:ss',
	            L : 'D.MM.YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY H:mm',
	            LLLL : 'dddd, D MMMM YYYY H:mm'
	        },
	        calendar : {
	            sameDay : '[Днес в] LT',
	            nextDay : '[Утре в] LT',
	            nextWeek : 'dddd [в] LT',
	            lastDay : '[Вчера в] LT',
	            lastWeek : function () {
	                switch (this.day()) {
	                case 0:
	                case 3:
	                case 6:
	                    return '[В изминалата] dddd [в] LT';
	                case 1:
	                case 2:
	                case 4:
	                case 5:
	                    return '[В изминалия] dddd [в] LT';
	                }
	            },
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'след %s',
	            past : 'преди %s',
	            s : 'няколко секунди',
	            m : 'минута',
	            mm : '%d минути',
	            h : 'час',
	            hh : '%d часа',
	            d : 'ден',
	            dd : '%d дни',
	            M : 'месец',
	            MM : '%d месеца',
	            y : 'година',
	            yy : '%d години'
	        },
	        ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
	        ordinal : function (number) {
	            var lastDigit = number % 10,
	                last2Digits = number % 100;
	            if (number === 0) {
	                return number + '-ев';
	            } else if (last2Digits === 0) {
	                return number + '-ен';
	            } else if (last2Digits > 10 && last2Digits < 20) {
	                return number + '-ти';
	            } else if (lastDigit === 1) {
	                return number + '-ви';
	            } else if (lastDigit === 2) {
	                return number + '-ри';
	            } else if (lastDigit === 7 || lastDigit === 8) {
	                return number + '-ми';
	            } else {
	                return number + '-ти';
	            }
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 7  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return bg;
	
	}));

/***/ },
/* 223 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : Bengali (bn)
	//! author : Kaushik Gandhi : https://github.com/kaushikgandhi
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var symbolMap = {
	        '1': '১',
	        '2': '২',
	        '3': '৩',
	        '4': '৪',
	        '5': '৫',
	        '6': '৬',
	        '7': '৭',
	        '8': '৮',
	        '9': '৯',
	        '0': '০'
	    },
	    numberMap = {
	        '১': '1',
	        '২': '2',
	        '৩': '3',
	        '৪': '4',
	        '৫': '5',
	        '৬': '6',
	        '৭': '7',
	        '৮': '8',
	        '৯': '9',
	        '০': '0'
	    };
	
	    var bn = moment.defineLocale('bn', {
	        months : 'জানুয়ারী_ফেবুয়ারী_মার্চ_এপ্রিল_মে_জুন_জুলাই_অগাস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),
	        monthsShort : 'জানু_ফেব_মার্চ_এপর_মে_জুন_জুল_অগ_সেপ্ট_অক্টো_নভ_ডিসেম্'.split('_'),
	        weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পত্তিবার_শুক্রবার_শনিবার'.split('_'),
	        weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পত্তি_শুক্র_শনি'.split('_'),
	        weekdaysMin : 'রব_সম_মঙ্গ_বু_ব্রিহ_শু_শনি'.split('_'),
	        longDateFormat : {
	            LT : 'A h:mm সময়',
	            LTS : 'A h:mm:ss সময়',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY, A h:mm সময়',
	            LLLL : 'dddd, D MMMM YYYY, A h:mm সময়'
	        },
	        calendar : {
	            sameDay : '[আজ] LT',
	            nextDay : '[আগামীকাল] LT',
	            nextWeek : 'dddd, LT',
	            lastDay : '[গতকাল] LT',
	            lastWeek : '[গত] dddd, LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : '%s পরে',
	            past : '%s আগে',
	            s : 'কয়েক সেকেন্ড',
	            m : 'এক মিনিট',
	            mm : '%d মিনিট',
	            h : 'এক ঘন্টা',
	            hh : '%d ঘন্টা',
	            d : 'এক দিন',
	            dd : '%d দিন',
	            M : 'এক মাস',
	            MM : '%d মাস',
	            y : 'এক বছর',
	            yy : '%d বছর'
	        },
	        preparse: function (string) {
	            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
	                return numberMap[match];
	            });
	        },
	        postformat: function (string) {
	            return string.replace(/\d/g, function (match) {
	                return symbolMap[match];
	            });
	        },
	        meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,
	        meridiemHour : function (hour, meridiem) {
	            if (hour === 12) {
	                hour = 0;
	            }
	            if ((meridiem === 'রাত' && hour >= 4) ||
	                    (meridiem === 'দুপুর' && hour < 5) ||
	                    meridiem === 'বিকাল') {
	                return hour + 12;
	            } else {
	                return hour;
	            }
	        },
	        meridiem : function (hour, minute, isLower) {
	            if (hour < 4) {
	                return 'রাত';
	            } else if (hour < 10) {
	                return 'সকাল';
	            } else if (hour < 17) {
	                return 'দুপুর';
	            } else if (hour < 20) {
	                return 'বিকাল';
	            } else {
	                return 'রাত';
	            }
	        },
	        week : {
	            dow : 0, // Sunday is the first day of the week.
	            doy : 6  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return bn;
	
	}));

/***/ },
/* 224 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : tibetan (bo)
	//! author : Thupten N. Chakrishar : https://github.com/vajradog
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var symbolMap = {
	        '1': '༡',
	        '2': '༢',
	        '3': '༣',
	        '4': '༤',
	        '5': '༥',
	        '6': '༦',
	        '7': '༧',
	        '8': '༨',
	        '9': '༩',
	        '0': '༠'
	    },
	    numberMap = {
	        '༡': '1',
	        '༢': '2',
	        '༣': '3',
	        '༤': '4',
	        '༥': '5',
	        '༦': '6',
	        '༧': '7',
	        '༨': '8',
	        '༩': '9',
	        '༠': '0'
	    };
	
	    var bo = moment.defineLocale('bo', {
	        months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),
	        monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),
	        weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),
	        weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
	        weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
	        longDateFormat : {
	            LT : 'A h:mm',
	            LTS : 'A h:mm:ss',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY, A h:mm',
	            LLLL : 'dddd, D MMMM YYYY, A h:mm'
	        },
	        calendar : {
	            sameDay : '[དི་རིང] LT',
	            nextDay : '[སང་ཉིན] LT',
	            nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT',
	            lastDay : '[ཁ་སང] LT',
	            lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : '%s ལ་',
	            past : '%s སྔན་ལ',
	            s : 'ལམ་སང',
	            m : 'སྐར་མ་གཅིག',
	            mm : '%d སྐར་མ',
	            h : 'ཆུ་ཚོད་གཅིག',
	            hh : '%d ཆུ་ཚོད',
	            d : 'ཉིན་གཅིག',
	            dd : '%d ཉིན་',
	            M : 'ཟླ་བ་གཅིག',
	            MM : '%d ཟླ་བ',
	            y : 'ལོ་གཅིག',
	            yy : '%d ལོ'
	        },
	        preparse: function (string) {
	            return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
	                return numberMap[match];
	            });
	        },
	        postformat: function (string) {
	            return string.replace(/\d/g, function (match) {
	                return symbolMap[match];
	            });
	        },
	        meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,
	        meridiemHour : function (hour, meridiem) {
	            if (hour === 12) {
	                hour = 0;
	            }
	            if ((meridiem === 'མཚན་མོ' && hour >= 4) ||
	                    (meridiem === 'ཉིན་གུང' && hour < 5) ||
	                    meridiem === 'དགོང་དག') {
	                return hour + 12;
	            } else {
	                return hour;
	            }
	        },
	        meridiem : function (hour, minute, isLower) {
	            if (hour < 4) {
	                return 'མཚན་མོ';
	            } else if (hour < 10) {
	                return 'ཞོགས་ཀས';
	            } else if (hour < 17) {
	                return 'ཉིན་གུང';
	            } else if (hour < 20) {
	                return 'དགོང་དག';
	            } else {
	                return 'མཚན་མོ';
	            }
	        },
	        week : {
	            dow : 0, // Sunday is the first day of the week.
	            doy : 6  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return bo;
	
	}));

/***/ },
/* 225 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : breton (br)
	//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    function relativeTimeWithMutation(number, withoutSuffix, key) {
	        var format = {
	            'mm': 'munutenn',
	            'MM': 'miz',
	            'dd': 'devezh'
	        };
	        return number + ' ' + mutation(format[key], number);
	    }
	    function specialMutationForYears(number) {
	        switch (lastNumber(number)) {
	        case 1:
	        case 3:
	        case 4:
	        case 5:
	        case 9:
	            return number + ' bloaz';
	        default:
	            return number + ' vloaz';
	        }
	    }
	    function lastNumber(number) {
	        if (number > 9) {
	            return lastNumber(number % 10);
	        }
	        return number;
	    }
	    function mutation(text, number) {
	        if (number === 2) {
	            return softMutation(text);
	        }
	        return text;
	    }
	    function softMutation(text) {
	        var mutationTable = {
	            'm': 'v',
	            'b': 'v',
	            'd': 'z'
	        };
	        if (mutationTable[text.charAt(0)] === undefined) {
	            return text;
	        }
	        return mutationTable[text.charAt(0)] + text.substring(1);
	    }
	
	    var br = moment.defineLocale('br', {
	        months : 'Genver_C\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),
	        monthsShort : 'Gen_C\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
	        weekdays : 'Sul_Lun_Meurzh_Merc\'her_Yaou_Gwener_Sadorn'.split('_'),
	        weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
	        weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT : 'h[e]mm A',
	            LTS : 'h[e]mm:ss A',
	            L : 'DD/MM/YYYY',
	            LL : 'D [a viz] MMMM YYYY',
	            LLL : 'D [a viz] MMMM YYYY h[e]mm A',
	            LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A'
	        },
	        calendar : {
	            sameDay : '[Hiziv da] LT',
	            nextDay : '[Warc\'hoazh da] LT',
	            nextWeek : 'dddd [da] LT',
	            lastDay : '[Dec\'h da] LT',
	            lastWeek : 'dddd [paset da] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'a-benn %s',
	            past : '%s \'zo',
	            s : 'un nebeud segondennoù',
	            m : 'ur vunutenn',
	            mm : relativeTimeWithMutation,
	            h : 'un eur',
	            hh : '%d eur',
	            d : 'un devezh',
	            dd : relativeTimeWithMutation,
	            M : 'ur miz',
	            MM : relativeTimeWithMutation,
	            y : 'ur bloaz',
	            yy : specialMutationForYears
	        },
	        ordinalParse: /\d{1,2}(añ|vet)/,
	        ordinal : function (number) {
	            var output = (number === 1) ? 'añ' : 'vet';
	            return number + output;
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return br;
	
	}));

/***/ },
/* 226 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : bosnian (bs)
	//! author : Nedim Cholich : https://github.com/frontyard
	//! based on (hr) translation by Bojan Marković
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    function translate(number, withoutSuffix, key) {
	        var result = number + ' ';
	        switch (key) {
	        case 'm':
	            return withoutSuffix ? 'jedna minuta' : 'jedne minute';
	        case 'mm':
	            if (number === 1) {
	                result += 'minuta';
	            } else if (number === 2 || number === 3 || number === 4) {
	                result += 'minute';
	            } else {
	                result += 'minuta';
	            }
	            return result;
	        case 'h':
	            return withoutSuffix ? 'jedan sat' : 'jednog sata';
	        case 'hh':
	            if (number === 1) {
	                result += 'sat';
	            } else if (number === 2 || number === 3 || number === 4) {
	                result += 'sata';
	            } else {
	                result += 'sati';
	            }
	            return result;
	        case 'dd':
	            if (number === 1) {
	                result += 'dan';
	            } else {
	                result += 'dana';
	            }
	            return result;
	        case 'MM':
	            if (number === 1) {
	                result += 'mjesec';
	            } else if (number === 2 || number === 3 || number === 4) {
	                result += 'mjeseca';
	            } else {
	                result += 'mjeseci';
	            }
	            return result;
	        case 'yy':
	            if (number === 1) {
	                result += 'godina';
	            } else if (number === 2 || number === 3 || number === 4) {
	                result += 'godine';
	            } else {
	                result += 'godina';
	            }
	            return result;
	        }
	    }
	
	    var bs = moment.defineLocale('bs', {
	        months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),
	        monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),
	        monthsParseExact: true,
	        weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
	        weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
	        weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT : 'H:mm',
	            LTS : 'H:mm:ss',
	            L : 'DD. MM. YYYY',
	            LL : 'D. MMMM YYYY',
	            LLL : 'D. MMMM YYYY H:mm',
	            LLLL : 'dddd, D. MMMM YYYY H:mm'
	        },
	        calendar : {
	            sameDay  : '[danas u] LT',
	            nextDay  : '[sutra u] LT',
	            nextWeek : function () {
	                switch (this.day()) {
	                case 0:
	                    return '[u] [nedjelju] [u] LT';
	                case 3:
	                    return '[u] [srijedu] [u] LT';
	                case 6:
	                    return '[u] [subotu] [u] LT';
	                case 1:
	                case 2:
	                case 4:
	                case 5:
	                    return '[u] dddd [u] LT';
	                }
	            },
	            lastDay  : '[jučer u] LT',
	            lastWeek : function () {
	                switch (this.day()) {
	                case 0:
	                case 3:
	                    return '[prošlu] dddd [u] LT';
	                case 6:
	                    return '[prošle] [subote] [u] LT';
	                case 1:
	                case 2:
	                case 4:
	                case 5:
	                    return '[prošli] dddd [u] LT';
	                }
	            },
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'za %s',
	            past   : 'prije %s',
	            s      : 'par sekundi',
	            m      : translate,
	            mm     : translate,
	            h      : translate,
	            hh     : translate,
	            d      : 'dan',
	            dd     : translate,
	            M      : 'mjesec',
	            MM     : translate,
	            y      : 'godinu',
	            yy     : translate
	        },
	        ordinalParse: /\d{1,2}\./,
	        ordinal : '%d.',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 7  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return bs;
	
	}));

/***/ },
/* 227 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : catalan (ca)
	//! author : Juan G. Hurtado : https://github.com/juanghurtado
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var ca = moment.defineLocale('ca', {
	        months : 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),
	        monthsShort : 'gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.'.split('_'),
	        monthsParseExact : true,
	        weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),
	        weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
	        weekdaysMin : 'Dg_Dl_Dt_Dc_Dj_Dv_Ds'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT : 'H:mm',
	            LTS : 'H:mm:ss',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY H:mm',
	            LLLL : 'dddd D MMMM YYYY H:mm'
	        },
	        calendar : {
	            sameDay : function () {
	                return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
	            },
	            nextDay : function () {
	                return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
	            },
	            nextWeek : function () {
	                return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
	            },
	            lastDay : function () {
	                return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
	            },
	            lastWeek : function () {
	                return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
	            },
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'en %s',
	            past : 'fa %s',
	            s : 'uns segons',
	            m : 'un minut',
	            mm : '%d minuts',
	            h : 'una hora',
	            hh : '%d hores',
	            d : 'un dia',
	            dd : '%d dies',
	            M : 'un mes',
	            MM : '%d mesos',
	            y : 'un any',
	            yy : '%d anys'
	        },
	        ordinalParse: /\d{1,2}(r|n|t|è|a)/,
	        ordinal : function (number, period) {
	            var output = (number === 1) ? 'r' :
	                (number === 2) ? 'n' :
	                (number === 3) ? 'r' :
	                (number === 4) ? 't' : 'è';
	            if (period === 'w' || period === 'W') {
	                output = 'a';
	            }
	            return number + output;
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return ca;
	
	}));

/***/ },
/* 228 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : czech (cs)
	//! author : petrbela : https://github.com/petrbela
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'),
	        monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_');
	    function plural(n) {
	        return (n > 1) && (n < 5) && (~~(n / 10) !== 1);
	    }
	    function translate(number, withoutSuffix, key, isFuture) {
	        var result = number + ' ';
	        switch (key) {
	        case 's':  // a few seconds / in a few seconds / a few seconds ago
	            return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami';
	        case 'm':  // a minute / in a minute / a minute ago
	            return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');
	        case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
	            if (withoutSuffix || isFuture) {
	                return result + (plural(number) ? 'minuty' : 'minut');
	            } else {
	                return result + 'minutami';
	            }
	            break;
	        case 'h':  // an hour / in an hour / an hour ago
	            return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');
	        case 'hh': // 9 hours / in 9 hours / 9 hours ago
	            if (withoutSuffix || isFuture) {
	                return result + (plural(number) ? 'hodiny' : 'hodin');
	            } else {
	                return result + 'hodinami';
	            }
	            break;
	        case 'd':  // a day / in a day / a day ago
	            return (withoutSuffix || isFuture) ? 'den' : 'dnem';
	        case 'dd': // 9 days / in 9 days / 9 days ago
	            if (withoutSuffix || isFuture) {
	                return result + (plural(number) ? 'dny' : 'dní');
	            } else {
	                return result + 'dny';
	            }
	            break;
	        case 'M':  // a month / in a month / a month ago
	            return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem';
	        case 'MM': // 9 months / in 9 months / 9 months ago
	            if (withoutSuffix || isFuture) {
	                return result + (plural(number) ? 'měsíce' : 'měsíců');
	            } else {
	                return result + 'měsíci';
	            }
	            break;
	        case 'y':  // a year / in a year / a year ago
	            return (withoutSuffix || isFuture) ? 'rok' : 'rokem';
	        case 'yy': // 9 years / in 9 years / 9 years ago
	            if (withoutSuffix || isFuture) {
	                return result + (plural(number) ? 'roky' : 'let');
	            } else {
	                return result + 'lety';
	            }
	            break;
	        }
	    }
	
	    var cs = moment.defineLocale('cs', {
	        months : months,
	        monthsShort : monthsShort,
	        monthsParse : (function (months, monthsShort) {
	            var i, _monthsParse = [];
	            for (i = 0; i < 12; i++) {
	                // use custom parser to solve problem with July (červenec)
	                _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');
	            }
	            return _monthsParse;
	        }(months, monthsShort)),
	        shortMonthsParse : (function (monthsShort) {
	            var i, _shortMonthsParse = [];
	            for (i = 0; i < 12; i++) {
	                _shortMonthsParse[i] = new RegExp('^' + monthsShort[i] + '$', 'i');
	            }
	            return _shortMonthsParse;
	        }(monthsShort)),
	        longMonthsParse : (function (months) {
	            var i, _longMonthsParse = [];
	            for (i = 0; i < 12; i++) {
	                _longMonthsParse[i] = new RegExp('^' + months[i] + '$', 'i');
	            }
	            return _longMonthsParse;
	        }(months)),
	        weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
	        weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'),
	        weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'),
	        longDateFormat : {
	            LT: 'H:mm',
	            LTS : 'H:mm:ss',
	            L : 'DD.MM.YYYY',
	            LL : 'D. MMMM YYYY',
	            LLL : 'D. MMMM YYYY H:mm',
	            LLLL : 'dddd D. MMMM YYYY H:mm'
	        },
	        calendar : {
	            sameDay: '[dnes v] LT',
	            nextDay: '[zítra v] LT',
	            nextWeek: function () {
	                switch (this.day()) {
	                case 0:
	                    return '[v neděli v] LT';
	                case 1:
	                case 2:
	                    return '[v] dddd [v] LT';
	                case 3:
	                    return '[ve středu v] LT';
	                case 4:
	                    return '[ve čtvrtek v] LT';
	                case 5:
	                    return '[v pátek v] LT';
	                case 6:
	                    return '[v sobotu v] LT';
	                }
	            },
	            lastDay: '[včera v] LT',
	            lastWeek: function () {
	                switch (this.day()) {
	                case 0:
	                    return '[minulou neděli v] LT';
	                case 1:
	                case 2:
	                    return '[minulé] dddd [v] LT';
	                case 3:
	                    return '[minulou středu v] LT';
	                case 4:
	                case 5:
	                    return '[minulý] dddd [v] LT';
	                case 6:
	                    return '[minulou sobotu v] LT';
	                }
	            },
	            sameElse: 'L'
	        },
	        relativeTime : {
	            future : 'za %s',
	            past : 'před %s',
	            s : translate,
	            m : translate,
	            mm : translate,
	            h : translate,
	            hh : translate,
	            d : translate,
	            dd : translate,
	            M : translate,
	            MM : translate,
	            y : translate,
	            yy : translate
	        },
	        ordinalParse : /\d{1,2}\./,
	        ordinal : '%d.',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return cs;
	
	}));

/***/ },
/* 229 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : chuvash (cv)
	//! author : Anatoly Mironov : https://github.com/mirontoli
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var cv = moment.defineLocale('cv', {
	        months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),
	        monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),
	        weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'),
	        weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),
	        weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD-MM-YYYY',
	            LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
	            LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
	            LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm'
	        },
	        calendar : {
	            sameDay: '[Паян] LT [сехетре]',
	            nextDay: '[Ыран] LT [сехетре]',
	            lastDay: '[Ӗнер] LT [сехетре]',
	            nextWeek: '[Ҫитес] dddd LT [сехетре]',
	            lastWeek: '[Иртнӗ] dddd LT [сехетре]',
	            sameElse: 'L'
	        },
	        relativeTime : {
	            future : function (output) {
	                var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран';
	                return output + affix;
	            },
	            past : '%s каялла',
	            s : 'пӗр-ик ҫеккунт',
	            m : 'пӗр минут',
	            mm : '%d минут',
	            h : 'пӗр сехет',
	            hh : '%d сехет',
	            d : 'пӗр кун',
	            dd : '%d кун',
	            M : 'пӗр уйӑх',
	            MM : '%d уйӑх',
	            y : 'пӗр ҫул',
	            yy : '%d ҫул'
	        },
	        ordinalParse: /\d{1,2}-мӗш/,
	        ordinal : '%d-мӗш',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 7  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return cv;
	
	}));

/***/ },
/* 230 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : Welsh (cy)
	//! author : Robert Allen
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var cy = moment.defineLocale('cy', {
	        months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),
	        monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),
	        weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),
	        weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),
	        weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),
	        weekdaysParseExact : true,
	        // time formats are the same as en-gb
	        longDateFormat: {
	            LT: 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L: 'DD/MM/YYYY',
	            LL: 'D MMMM YYYY',
	            LLL: 'D MMMM YYYY HH:mm',
	            LLLL: 'dddd, D MMMM YYYY HH:mm'
	        },
	        calendar: {
	            sameDay: '[Heddiw am] LT',
	            nextDay: '[Yfory am] LT',
	            nextWeek: 'dddd [am] LT',
	            lastDay: '[Ddoe am] LT',
	            lastWeek: 'dddd [diwethaf am] LT',
	            sameElse: 'L'
	        },
	        relativeTime: {
	            future: 'mewn %s',
	            past: '%s yn ôl',
	            s: 'ychydig eiliadau',
	            m: 'munud',
	            mm: '%d munud',
	            h: 'awr',
	            hh: '%d awr',
	            d: 'diwrnod',
	            dd: '%d diwrnod',
	            M: 'mis',
	            MM: '%d mis',
	            y: 'blwyddyn',
	            yy: '%d flynedd'
	        },
	        ordinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
	        // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
	        ordinal: function (number) {
	            var b = number,
	                output = '',
	                lookup = [
	                    '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed
	                    'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed
	                ];
	            if (b > 20) {
	                if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
	                    output = 'fed'; // not 30ain, 70ain or 90ain
	                } else {
	                    output = 'ain';
	                }
	            } else if (b > 0) {
	                output = lookup[b];
	            }
	            return number + output;
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return cy;
	
	}));

/***/ },
/* 231 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : danish (da)
	//! author : Ulrik Nielsen : https://github.com/mrbase
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var da = moment.defineLocale('da', {
	        months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),
	        monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
	        weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
	        weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'),
	        weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD/MM/YYYY',
	            LL : 'D. MMMM YYYY',
	            LLL : 'D. MMMM YYYY HH:mm',
	            LLLL : 'dddd [d.] D. MMMM YYYY HH:mm'
	        },
	        calendar : {
	            sameDay : '[I dag kl.] LT',
	            nextDay : '[I morgen kl.] LT',
	            nextWeek : 'dddd [kl.] LT',
	            lastDay : '[I går kl.] LT',
	            lastWeek : '[sidste] dddd [kl] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'om %s',
	            past : '%s siden',
	            s : 'få sekunder',
	            m : 'et minut',
	            mm : '%d minutter',
	            h : 'en time',
	            hh : '%d timer',
	            d : 'en dag',
	            dd : '%d dage',
	            M : 'en måned',
	            MM : '%d måneder',
	            y : 'et år',
	            yy : '%d år'
	        },
	        ordinalParse: /\d{1,2}\./,
	        ordinal : '%d.',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return da;
	
	}));

/***/ },
/* 232 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : austrian german (de-at)
	//! author : lluchs : https://github.com/lluchs
	//! author: Menelion Elensúle: https://github.com/Oire
	//! author : Martin Groller : https://github.com/MadMG
	//! author : Mikolaj Dadela : https://github.com/mik01aj
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    function processRelativeTime(number, withoutSuffix, key, isFuture) {
	        var format = {
	            'm': ['eine Minute', 'einer Minute'],
	            'h': ['eine Stunde', 'einer Stunde'],
	            'd': ['ein Tag', 'einem Tag'],
	            'dd': [number + ' Tage', number + ' Tagen'],
	            'M': ['ein Monat', 'einem Monat'],
	            'MM': [number + ' Monate', number + ' Monaten'],
	            'y': ['ein Jahr', 'einem Jahr'],
	            'yy': [number + ' Jahre', number + ' Jahren']
	        };
	        return withoutSuffix ? format[key][0] : format[key][1];
	    }
	
	    var de_at = moment.defineLocale('de-at', {
	        months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
	        monthsShort : 'Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
	        monthsParseExact : true,
	        weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
	        weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
	        weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT: 'HH:mm',
	            LTS: 'HH:mm:ss',
	            L : 'DD.MM.YYYY',
	            LL : 'D. MMMM YYYY',
	            LLL : 'D. MMMM YYYY HH:mm',
	            LLLL : 'dddd, D. MMMM YYYY HH:mm'
	        },
	        calendar : {
	            sameDay: '[heute um] LT [Uhr]',
	            sameElse: 'L',
	            nextDay: '[morgen um] LT [Uhr]',
	            nextWeek: 'dddd [um] LT [Uhr]',
	            lastDay: '[gestern um] LT [Uhr]',
	            lastWeek: '[letzten] dddd [um] LT [Uhr]'
	        },
	        relativeTime : {
	            future : 'in %s',
	            past : 'vor %s',
	            s : 'ein paar Sekunden',
	            m : processRelativeTime,
	            mm : '%d Minuten',
	            h : processRelativeTime,
	            hh : '%d Stunden',
	            d : processRelativeTime,
	            dd : processRelativeTime,
	            M : processRelativeTime,
	            MM : processRelativeTime,
	            y : processRelativeTime,
	            yy : processRelativeTime
	        },
	        ordinalParse: /\d{1,2}\./,
	        ordinal : '%d.',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return de_at;
	
	}));

/***/ },
/* 233 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : german (de)
	//! author : lluchs : https://github.com/lluchs
	//! author: Menelion Elensúle: https://github.com/Oire
	//! author : Mikolaj Dadela : https://github.com/mik01aj
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    function processRelativeTime(number, withoutSuffix, key, isFuture) {
	        var format = {
	            'm': ['eine Minute', 'einer Minute'],
	            'h': ['eine Stunde', 'einer Stunde'],
	            'd': ['ein Tag', 'einem Tag'],
	            'dd': [number + ' Tage', number + ' Tagen'],
	            'M': ['ein Monat', 'einem Monat'],
	            'MM': [number + ' Monate', number + ' Monaten'],
	            'y': ['ein Jahr', 'einem Jahr'],
	            'yy': [number + ' Jahre', number + ' Jahren']
	        };
	        return withoutSuffix ? format[key][0] : format[key][1];
	    }
	
	    var de = moment.defineLocale('de', {
	        months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
	        monthsShort : 'Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
	        monthsParseExact : true,
	        weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
	        weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
	        weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT: 'HH:mm',
	            LTS: 'HH:mm:ss',
	            L : 'DD.MM.YYYY',
	            LL : 'D. MMMM YYYY',
	            LLL : 'D. MMMM YYYY HH:mm',
	            LLLL : 'dddd, D. MMMM YYYY HH:mm'
	        },
	        calendar : {
	            sameDay: '[heute um] LT [Uhr]',
	            sameElse: 'L',
	            nextDay: '[morgen um] LT [Uhr]',
	            nextWeek: 'dddd [um] LT [Uhr]',
	            lastDay: '[gestern um] LT [Uhr]',
	            lastWeek: '[letzten] dddd [um] LT [Uhr]'
	        },
	        relativeTime : {
	            future : 'in %s',
	            past : 'vor %s',
	            s : 'ein paar Sekunden',
	            m : processRelativeTime,
	            mm : '%d Minuten',
	            h : processRelativeTime,
	            hh : '%d Stunden',
	            d : processRelativeTime,
	            dd : processRelativeTime,
	            M : processRelativeTime,
	            MM : processRelativeTime,
	            y : processRelativeTime,
	            yy : processRelativeTime
	        },
	        ordinalParse: /\d{1,2}\./,
	        ordinal : '%d.',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return de;
	
	}));

/***/ },
/* 234 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : dhivehi (dv)
	//! author : Jawish Hameed : https://github.com/jawish
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var months = [
	        'ޖެނުއަރީ',
	        'ފެބްރުއަރީ',
	        'މާރިޗު',
	        'އޭޕްރީލު',
	        'މޭ',
	        'ޖޫން',
	        'ޖުލައި',
	        'އޯގަސްޓު',
	        'ސެޕްޓެމްބަރު',
	        'އޮކްޓޯބަރު',
	        'ނޮވެމްބަރު',
	        'ޑިސެމްބަރު'
	    ], weekdays = [
	        'އާދިއްތަ',
	        'ހޯމަ',
	        'އަންގާރަ',
	        'ބުދަ',
	        'ބުރާސްފަތި',
	        'ހުކުރު',
	        'ހޮނިހިރު'
	    ];
	
	    var dv = moment.defineLocale('dv', {
	        months : months,
	        monthsShort : months,
	        weekdays : weekdays,
	        weekdaysShort : weekdays,
	        weekdaysMin : 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),
	        longDateFormat : {
	
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'D/M/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY HH:mm',
	            LLLL : 'dddd D MMMM YYYY HH:mm'
	        },
	        meridiemParse: /މކ|މފ/,
	        isPM : function (input) {
	            return 'މފ' === input;
	        },
	        meridiem : function (hour, minute, isLower) {
	            if (hour < 12) {
	                return 'މކ';
	            } else {
	                return 'މފ';
	            }
	        },
	        calendar : {
	            sameDay : '[މިއަދު] LT',
	            nextDay : '[މާދަމާ] LT',
	            nextWeek : 'dddd LT',
	            lastDay : '[އިއްޔެ] LT',
	            lastWeek : '[ފާއިތުވި] dddd LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'ތެރޭގައި %s',
	            past : 'ކުރިން %s',
	            s : 'ސިކުންތުކޮޅެއް',
	            m : 'މިނިޓެއް',
	            mm : 'މިނިޓު %d',
	            h : 'ގަޑިއިރެއް',
	            hh : 'ގަޑިއިރު %d',
	            d : 'ދުވަހެއް',
	            dd : 'ދުވަސް %d',
	            M : 'މަހެއް',
	            MM : 'މަސް %d',
	            y : 'އަހަރެއް',
	            yy : 'އަހަރު %d'
	        },
	        preparse: function (string) {
	            return string.replace(/،/g, ',');
	        },
	        postformat: function (string) {
	            return string.replace(/,/g, '،');
	        },
	        week : {
	            dow : 7,  // Sunday is the first day of the week.
	            doy : 12  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return dv;
	
	}));

/***/ },
/* 235 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : modern greek (el)
	//! author : Aggelos Karalias : https://github.com/mehiel
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	    function isFunction(input) {
	        return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';
	    }
	
	
	    var el = moment.defineLocale('el', {
	        monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),
	        monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'),
	        months : function (momentToFormat, format) {
	            if (/D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM'
	                return this._monthsGenitiveEl[momentToFormat.month()];
	            } else {
	                return this._monthsNominativeEl[momentToFormat.month()];
	            }
	        },
	        monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),
	        weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'),
	        weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),
	        weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),
	        meridiem : function (hours, minutes, isLower) {
	            if (hours > 11) {
	                return isLower ? 'μμ' : 'ΜΜ';
	            } else {
	                return isLower ? 'πμ' : 'ΠΜ';
	            }
	        },
	        isPM : function (input) {
	            return ((input + '').toLowerCase()[0] === 'μ');
	        },
	        meridiemParse : /[ΠΜ]\.?Μ?\.?/i,
	        longDateFormat : {
	            LT : 'h:mm A',
	            LTS : 'h:mm:ss A',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY h:mm A',
	            LLLL : 'dddd, D MMMM YYYY h:mm A'
	        },
	        calendarEl : {
	            sameDay : '[Σήμερα {}] LT',
	            nextDay : '[Αύριο {}] LT',
	            nextWeek : 'dddd [{}] LT',
	            lastDay : '[Χθες {}] LT',
	            lastWeek : function () {
	                switch (this.day()) {
	                    case 6:
	                        return '[το προηγούμενο] dddd [{}] LT';
	                    default:
	                        return '[την προηγούμενη] dddd [{}] LT';
	                }
	            },
	            sameElse : 'L'
	        },
	        calendar : function (key, mom) {
	            var output = this._calendarEl[key],
	                hours = mom && mom.hours();
	            if (isFunction(output)) {
	                output = output.apply(mom);
	            }
	            return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις'));
	        },
	        relativeTime : {
	            future : 'σε %s',
	            past : '%s πριν',
	            s : 'λίγα δευτερόλεπτα',
	            m : 'ένα λεπτό',
	            mm : '%d λεπτά',
	            h : 'μία ώρα',
	            hh : '%d ώρες',
	            d : 'μία μέρα',
	            dd : '%d μέρες',
	            M : 'ένας μήνας',
	            MM : '%d μήνες',
	            y : 'ένας χρόνος',
	            yy : '%d χρόνια'
	        },
	        ordinalParse: /\d{1,2}η/,
	        ordinal: '%dη',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4st is the first week of the year.
	        }
	    });
	
	    return el;
	
	}));

/***/ },
/* 236 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : australian english (en-au)
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var en_au = moment.defineLocale('en-au', {
	        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
	        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
	        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
	        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
	        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
	        longDateFormat : {
	            LT : 'h:mm A',
	            LTS : 'h:mm:ss A',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY h:mm A',
	            LLLL : 'dddd, D MMMM YYYY h:mm A'
	        },
	        calendar : {
	            sameDay : '[Today at] LT',
	            nextDay : '[Tomorrow at] LT',
	            nextWeek : 'dddd [at] LT',
	            lastDay : '[Yesterday at] LT',
	            lastWeek : '[Last] dddd [at] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'in %s',
	            past : '%s ago',
	            s : 'a few seconds',
	            m : 'a minute',
	            mm : '%d minutes',
	            h : 'an hour',
	            hh : '%d hours',
	            d : 'a day',
	            dd : '%d days',
	            M : 'a month',
	            MM : '%d months',
	            y : 'a year',
	            yy : '%d years'
	        },
	        ordinalParse: /\d{1,2}(st|nd|rd|th)/,
	        ordinal : function (number) {
	            var b = number % 10,
	                output = (~~(number % 100 / 10) === 1) ? 'th' :
	                (b === 1) ? 'st' :
	                (b === 2) ? 'nd' :
	                (b === 3) ? 'rd' : 'th';
	            return number + output;
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return en_au;
	
	}));

/***/ },
/* 237 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : canadian english (en-ca)
	//! author : Jonathan Abourbih : https://github.com/jonbca
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var en_ca = moment.defineLocale('en-ca', {
	        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
	        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
	        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
	        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
	        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
	        longDateFormat : {
	            LT : 'h:mm A',
	            LTS : 'h:mm:ss A',
	            L : 'YYYY-MM-DD',
	            LL : 'MMMM D, YYYY',
	            LLL : 'MMMM D, YYYY h:mm A',
	            LLLL : 'dddd, MMMM D, YYYY h:mm A'
	        },
	        calendar : {
	            sameDay : '[Today at] LT',
	            nextDay : '[Tomorrow at] LT',
	            nextWeek : 'dddd [at] LT',
	            lastDay : '[Yesterday at] LT',
	            lastWeek : '[Last] dddd [at] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'in %s',
	            past : '%s ago',
	            s : 'a few seconds',
	            m : 'a minute',
	            mm : '%d minutes',
	            h : 'an hour',
	            hh : '%d hours',
	            d : 'a day',
	            dd : '%d days',
	            M : 'a month',
	            MM : '%d months',
	            y : 'a year',
	            yy : '%d years'
	        },
	        ordinalParse: /\d{1,2}(st|nd|rd|th)/,
	        ordinal : function (number) {
	            var b = number % 10,
	                output = (~~(number % 100 / 10) === 1) ? 'th' :
	                (b === 1) ? 'st' :
	                (b === 2) ? 'nd' :
	                (b === 3) ? 'rd' : 'th';
	            return number + output;
	        }
	    });
	
	    return en_ca;
	
	}));

/***/ },
/* 238 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : great britain english (en-gb)
	//! author : Chris Gedrim : https://github.com/chrisgedrim
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var en_gb = moment.defineLocale('en-gb', {
	        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
	        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
	        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
	        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
	        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY HH:mm',
	            LLLL : 'dddd, D MMMM YYYY HH:mm'
	        },
	        calendar : {
	            sameDay : '[Today at] LT',
	            nextDay : '[Tomorrow at] LT',
	            nextWeek : 'dddd [at] LT',
	            lastDay : '[Yesterday at] LT',
	            lastWeek : '[Last] dddd [at] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'in %s',
	            past : '%s ago',
	            s : 'a few seconds',
	            m : 'a minute',
	            mm : '%d minutes',
	            h : 'an hour',
	            hh : '%d hours',
	            d : 'a day',
	            dd : '%d days',
	            M : 'a month',
	            MM : '%d months',
	            y : 'a year',
	            yy : '%d years'
	        },
	        ordinalParse: /\d{1,2}(st|nd|rd|th)/,
	        ordinal : function (number) {
	            var b = number % 10,
	                output = (~~(number % 100 / 10) === 1) ? 'th' :
	                (b === 1) ? 'st' :
	                (b === 2) ? 'nd' :
	                (b === 3) ? 'rd' : 'th';
	            return number + output;
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return en_gb;
	
	}));

/***/ },
/* 239 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : Irish english (en-ie)
	//! author : Chris Cartlidge : https://github.com/chriscartlidge
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var en_ie = moment.defineLocale('en-ie', {
	        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
	        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
	        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
	        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
	        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD-MM-YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY HH:mm',
	            LLLL : 'dddd D MMMM YYYY HH:mm'
	        },
	        calendar : {
	            sameDay : '[Today at] LT',
	            nextDay : '[Tomorrow at] LT',
	            nextWeek : 'dddd [at] LT',
	            lastDay : '[Yesterday at] LT',
	            lastWeek : '[Last] dddd [at] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'in %s',
	            past : '%s ago',
	            s : 'a few seconds',
	            m : 'a minute',
	            mm : '%d minutes',
	            h : 'an hour',
	            hh : '%d hours',
	            d : 'a day',
	            dd : '%d days',
	            M : 'a month',
	            MM : '%d months',
	            y : 'a year',
	            yy : '%d years'
	        },
	        ordinalParse: /\d{1,2}(st|nd|rd|th)/,
	        ordinal : function (number) {
	            var b = number % 10,
	                output = (~~(number % 100 / 10) === 1) ? 'th' :
	                (b === 1) ? 'st' :
	                (b === 2) ? 'nd' :
	                (b === 3) ? 'rd' : 'th';
	            return number + output;
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return en_ie;
	
	}));

/***/ },
/* 240 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : New Zealand english (en-nz)
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var en_nz = moment.defineLocale('en-nz', {
	        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
	        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
	        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
	        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
	        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
	        longDateFormat : {
	            LT : 'h:mm A',
	            LTS : 'h:mm:ss A',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY h:mm A',
	            LLLL : 'dddd, D MMMM YYYY h:mm A'
	        },
	        calendar : {
	            sameDay : '[Today at] LT',
	            nextDay : '[Tomorrow at] LT',
	            nextWeek : 'dddd [at] LT',
	            lastDay : '[Yesterday at] LT',
	            lastWeek : '[Last] dddd [at] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'in %s',
	            past : '%s ago',
	            s : 'a few seconds',
	            m : 'a minute',
	            mm : '%d minutes',
	            h : 'an hour',
	            hh : '%d hours',
	            d : 'a day',
	            dd : '%d days',
	            M : 'a month',
	            MM : '%d months',
	            y : 'a year',
	            yy : '%d years'
	        },
	        ordinalParse: /\d{1,2}(st|nd|rd|th)/,
	        ordinal : function (number) {
	            var b = number % 10,
	                output = (~~(number % 100 / 10) === 1) ? 'th' :
	                (b === 1) ? 'st' :
	                (b === 2) ? 'nd' :
	                (b === 3) ? 'rd' : 'th';
	            return number + output;
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return en_nz;
	
	}));

/***/ },
/* 241 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : esperanto (eo)
	//! author : Colin Dean : https://github.com/colindean
	//! komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko.
	//!          Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni!
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var eo = moment.defineLocale('eo', {
	        months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'),
	        monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'),
	        weekdays : 'Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato'.split('_'),
	        weekdaysShort : 'Dim_Lun_Mard_Merk_Ĵaŭ_Ven_Sab'.split('_'),
	        weekdaysMin : 'Di_Lu_Ma_Me_Ĵa_Ve_Sa'.split('_'),
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'YYYY-MM-DD',
	            LL : 'D[-an de] MMMM, YYYY',
	            LLL : 'D[-an de] MMMM, YYYY HH:mm',
	            LLLL : 'dddd, [la] D[-an de] MMMM, YYYY HH:mm'
	        },
	        meridiemParse: /[ap]\.t\.m/i,
	        isPM: function (input) {
	            return input.charAt(0).toLowerCase() === 'p';
	        },
	        meridiem : function (hours, minutes, isLower) {
	            if (hours > 11) {
	                return isLower ? 'p.t.m.' : 'P.T.M.';
	            } else {
	                return isLower ? 'a.t.m.' : 'A.T.M.';
	            }
	        },
	        calendar : {
	            sameDay : '[Hodiaŭ je] LT',
	            nextDay : '[Morgaŭ je] LT',
	            nextWeek : 'dddd [je] LT',
	            lastDay : '[Hieraŭ je] LT',
	            lastWeek : '[pasinta] dddd [je] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'je %s',
	            past : 'antaŭ %s',
	            s : 'sekundoj',
	            m : 'minuto',
	            mm : '%d minutoj',
	            h : 'horo',
	            hh : '%d horoj',
	            d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo
	            dd : '%d tagoj',
	            M : 'monato',
	            MM : '%d monatoj',
	            y : 'jaro',
	            yy : '%d jaroj'
	        },
	        ordinalParse: /\d{1,2}a/,
	        ordinal : '%da',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 7  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return eo;
	
	}));

/***/ },
/* 242 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : spanish (es)
	//! author : Julio Napurí : https://github.com/julionc
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),
	        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');
	
	    var es = moment.defineLocale('es', {
	        months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
	        monthsShort : function (m, format) {
	            if (/-MMM-/.test(format)) {
	                return monthsShort[m.month()];
	            } else {
	                return monthsShortDot[m.month()];
	            }
	        },
	        monthsParseExact : true,
	        weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
	        weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
	        weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT : 'H:mm',
	            LTS : 'H:mm:ss',
	            L : 'DD/MM/YYYY',
	            LL : 'D [de] MMMM [de] YYYY',
	            LLL : 'D [de] MMMM [de] YYYY H:mm',
	            LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'
	        },
	        calendar : {
	            sameDay : function () {
	                return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
	            },
	            nextDay : function () {
	                return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
	            },
	            nextWeek : function () {
	                return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
	            },
	            lastDay : function () {
	                return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
	            },
	            lastWeek : function () {
	                return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
	            },
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'en %s',
	            past : 'hace %s',
	            s : 'unos segundos',
	            m : 'un minuto',
	            mm : '%d minutos',
	            h : 'una hora',
	            hh : '%d horas',
	            d : 'un día',
	            dd : '%d días',
	            M : 'un mes',
	            MM : '%d meses',
	            y : 'un año',
	            yy : '%d años'
	        },
	        ordinalParse : /\d{1,2}º/,
	        ordinal : '%dº',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return es;
	
	}));

/***/ },
/* 243 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : estonian (et)
	//! author : Henry Kehlmann : https://github.com/madhenry
	//! improvements : Illimar Tambek : https://github.com/ragulka
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    function processRelativeTime(number, withoutSuffix, key, isFuture) {
	        var format = {
	            's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
	            'm' : ['ühe minuti', 'üks minut'],
	            'mm': [number + ' minuti', number + ' minutit'],
	            'h' : ['ühe tunni', 'tund aega', 'üks tund'],
	            'hh': [number + ' tunni', number + ' tundi'],
	            'd' : ['ühe päeva', 'üks päev'],
	            'M' : ['kuu aja', 'kuu aega', 'üks kuu'],
	            'MM': [number + ' kuu', number + ' kuud'],
	            'y' : ['ühe aasta', 'aasta', 'üks aasta'],
	            'yy': [number + ' aasta', number + ' aastat']
	        };
	        if (withoutSuffix) {
	            return format[key][2] ? format[key][2] : format[key][1];
	        }
	        return isFuture ? format[key][0] : format[key][1];
	    }
	
	    var et = moment.defineLocale('et', {
	        months        : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),
	        monthsShort   : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),
	        weekdays      : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),
	        weekdaysShort : 'P_E_T_K_N_R_L'.split('_'),
	        weekdaysMin   : 'P_E_T_K_N_R_L'.split('_'),
	        longDateFormat : {
	            LT   : 'H:mm',
	            LTS : 'H:mm:ss',
	            L    : 'DD.MM.YYYY',
	            LL   : 'D. MMMM YYYY',
	            LLL  : 'D. MMMM YYYY H:mm',
	            LLLL : 'dddd, D. MMMM YYYY H:mm'
	        },
	        calendar : {
	            sameDay  : '[Täna,] LT',
	            nextDay  : '[Homme,] LT',
	            nextWeek : '[Järgmine] dddd LT',
	            lastDay  : '[Eile,] LT',
	            lastWeek : '[Eelmine] dddd LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : '%s pärast',
	            past   : '%s tagasi',
	            s      : processRelativeTime,
	            m      : processRelativeTime,
	            mm     : processRelativeTime,
	            h      : processRelativeTime,
	            hh     : processRelativeTime,
	            d      : processRelativeTime,
	            dd     : '%d päeva',
	            M      : processRelativeTime,
	            MM     : processRelativeTime,
	            y      : processRelativeTime,
	            yy     : processRelativeTime
	        },
	        ordinalParse: /\d{1,2}\./,
	        ordinal : '%d.',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return et;
	
	}));

/***/ },
/* 244 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : euskara (eu)
	//! author : Eneko Illarramendi : https://github.com/eillarra
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var eu = moment.defineLocale('eu', {
	        months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),
	        monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),
	        monthsParseExact : true,
	        weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),
	        weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'),
	        weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'YYYY-MM-DD',
	            LL : 'YYYY[ko] MMMM[ren] D[a]',
	            LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm',
	            LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
	            l : 'YYYY-M-D',
	            ll : 'YYYY[ko] MMM D[a]',
	            lll : 'YYYY[ko] MMM D[a] HH:mm',
	            llll : 'ddd, YYYY[ko] MMM D[a] HH:mm'
	        },
	        calendar : {
	            sameDay : '[gaur] LT[etan]',
	            nextDay : '[bihar] LT[etan]',
	            nextWeek : 'dddd LT[etan]',
	            lastDay : '[atzo] LT[etan]',
	            lastWeek : '[aurreko] dddd LT[etan]',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : '%s barru',
	            past : 'duela %s',
	            s : 'segundo batzuk',
	            m : 'minutu bat',
	            mm : '%d minutu',
	            h : 'ordu bat',
	            hh : '%d ordu',
	            d : 'egun bat',
	            dd : '%d egun',
	            M : 'hilabete bat',
	            MM : '%d hilabete',
	            y : 'urte bat',
	            yy : '%d urte'
	        },
	        ordinalParse: /\d{1,2}\./,
	        ordinal : '%d.',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 7  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return eu;
	
	}));

/***/ },
/* 245 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : Persian (fa)
	//! author : Ebrahim Byagowi : https://github.com/ebraminio
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var symbolMap = {
	        '1': '۱',
	        '2': '۲',
	        '3': '۳',
	        '4': '۴',
	        '5': '۵',
	        '6': '۶',
	        '7': '۷',
	        '8': '۸',
	        '9': '۹',
	        '0': '۰'
	    }, numberMap = {
	        '۱': '1',
	        '۲': '2',
	        '۳': '3',
	        '۴': '4',
	        '۵': '5',
	        '۶': '6',
	        '۷': '7',
	        '۸': '8',
	        '۹': '9',
	        '۰': '0'
	    };
	
	    var fa = moment.defineLocale('fa', {
	        months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
	        monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
	        weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
	        weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
	        weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY HH:mm',
	            LLLL : 'dddd, D MMMM YYYY HH:mm'
	        },
	        meridiemParse: /قبل از ظهر|بعد از ظهر/,
	        isPM: function (input) {
	            return /بعد از ظهر/.test(input);
	        },
	        meridiem : function (hour, minute, isLower) {
	            if (hour < 12) {
	                return 'قبل از ظهر';
	            } else {
	                return 'بعد از ظهر';
	            }
	        },
	        calendar : {
	            sameDay : '[امروز ساعت] LT',
	            nextDay : '[فردا ساعت] LT',
	            nextWeek : 'dddd [ساعت] LT',
	            lastDay : '[دیروز ساعت] LT',
	            lastWeek : 'dddd [پیش] [ساعت] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'در %s',
	            past : '%s پیش',
	            s : 'چندین ثانیه',
	            m : 'یک دقیقه',
	            mm : '%d دقیقه',
	            h : 'یک ساعت',
	            hh : '%d ساعت',
	            d : 'یک روز',
	            dd : '%d روز',
	            M : 'یک ماه',
	            MM : '%d ماه',
	            y : 'یک سال',
	            yy : '%d سال'
	        },
	        preparse: function (string) {
	            return string.replace(/[۰-۹]/g, function (match) {
	                return numberMap[match];
	            }).replace(/،/g, ',');
	        },
	        postformat: function (string) {
	            return string.replace(/\d/g, function (match) {
	                return symbolMap[match];
	            }).replace(/,/g, '،');
	        },
	        ordinalParse: /\d{1,2}م/,
	        ordinal : '%dم',
	        week : {
	            dow : 6, // Saturday is the first day of the week.
	            doy : 12 // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return fa;
	
	}));

/***/ },
/* 246 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : finnish (fi)
	//! author : Tarmo Aidantausta : https://github.com/bleadof
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),
	        numbersFuture = [
	            'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',
	            numbersPast[7], numbersPast[8], numbersPast[9]
	        ];
	    function translate(number, withoutSuffix, key, isFuture) {
	        var result = '';
	        switch (key) {
	        case 's':
	            return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
	        case 'm':
	            return isFuture ? 'minuutin' : 'minuutti';
	        case 'mm':
	            result = isFuture ? 'minuutin' : 'minuuttia';
	            break;
	        case 'h':
	            return isFuture ? 'tunnin' : 'tunti';
	        case 'hh':
	            result = isFuture ? 'tunnin' : 'tuntia';
	            break;
	        case 'd':
	            return isFuture ? 'päivän' : 'päivä';
	        case 'dd':
	            result = isFuture ? 'päivän' : 'päivää';
	            break;
	        case 'M':
	            return isFuture ? 'kuukauden' : 'kuukausi';
	        case 'MM':
	            result = isFuture ? 'kuukauden' : 'kuukautta';
	            break;
	        case 'y':
	            return isFuture ? 'vuoden' : 'vuosi';
	        case 'yy':
	            result = isFuture ? 'vuoden' : 'vuotta';
	            break;
	        }
	        result = verbalNumber(number, isFuture) + ' ' + result;
	        return result;
	    }
	    function verbalNumber(number, isFuture) {
	        return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number;
	    }
	
	    var fi = moment.defineLocale('fi', {
	        months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),
	        monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),
	        weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),
	        weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'),
	        weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'),
	        longDateFormat : {
	            LT : 'HH.mm',
	            LTS : 'HH.mm.ss',
	            L : 'DD.MM.YYYY',
	            LL : 'Do MMMM[ta] YYYY',
	            LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm',
	            LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',
	            l : 'D.M.YYYY',
	            ll : 'Do MMM YYYY',
	            lll : 'Do MMM YYYY, [klo] HH.mm',
	            llll : 'ddd, Do MMM YYYY, [klo] HH.mm'
	        },
	        calendar : {
	            sameDay : '[tänään] [klo] LT',
	            nextDay : '[huomenna] [klo] LT',
	            nextWeek : 'dddd [klo] LT',
	            lastDay : '[eilen] [klo] LT',
	            lastWeek : '[viime] dddd[na] [klo] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : '%s päästä',
	            past : '%s sitten',
	            s : translate,
	            m : translate,
	            mm : translate,
	            h : translate,
	            hh : translate,
	            d : translate,
	            dd : translate,
	            M : translate,
	            MM : translate,
	            y : translate,
	            yy : translate
	        },
	        ordinalParse: /\d{1,2}\./,
	        ordinal : '%d.',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return fi;
	
	}));

/***/ },
/* 247 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : faroese (fo)
	//! author : Ragnar Johannesen : https://github.com/ragnar123
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var fo = moment.defineLocale('fo', {
	        months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
	        monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
	        weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'),
	        weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
	        weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'),
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY HH:mm',
	            LLLL : 'dddd D. MMMM, YYYY HH:mm'
	        },
	        calendar : {
	            sameDay : '[Í dag kl.] LT',
	            nextDay : '[Í morgin kl.] LT',
	            nextWeek : 'dddd [kl.] LT',
	            lastDay : '[Í gjár kl.] LT',
	            lastWeek : '[síðstu] dddd [kl] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'um %s',
	            past : '%s síðani',
	            s : 'fá sekund',
	            m : 'ein minutt',
	            mm : '%d minuttir',
	            h : 'ein tími',
	            hh : '%d tímar',
	            d : 'ein dagur',
	            dd : '%d dagar',
	            M : 'ein mánaði',
	            MM : '%d mánaðir',
	            y : 'eitt ár',
	            yy : '%d ár'
	        },
	        ordinalParse: /\d{1,2}\./,
	        ordinal : '%d.',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return fo;
	
	}));

/***/ },
/* 248 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : canadian french (fr-ca)
	//! author : Jonathan Abourbih : https://github.com/jonbca
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var fr_ca = moment.defineLocale('fr-ca', {
	        months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
	        monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
	        monthsParseExact : true,
	        weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
	        weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
	        weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'YYYY-MM-DD',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY HH:mm',
	            LLLL : 'dddd D MMMM YYYY HH:mm'
	        },
	        calendar : {
	            sameDay: '[Aujourd\'hui à] LT',
	            nextDay: '[Demain à] LT',
	            nextWeek: 'dddd [à] LT',
	            lastDay: '[Hier à] LT',
	            lastWeek: 'dddd [dernier à] LT',
	            sameElse: 'L'
	        },
	        relativeTime : {
	            future : 'dans %s',
	            past : 'il y a %s',
	            s : 'quelques secondes',
	            m : 'une minute',
	            mm : '%d minutes',
	            h : 'une heure',
	            hh : '%d heures',
	            d : 'un jour',
	            dd : '%d jours',
	            M : 'un mois',
	            MM : '%d mois',
	            y : 'un an',
	            yy : '%d ans'
	        },
	        ordinalParse: /\d{1,2}(er|e)/,
	        ordinal : function (number) {
	            return number + (number === 1 ? 'er' : 'e');
	        }
	    });
	
	    return fr_ca;
	
	}));

/***/ },
/* 249 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : swiss french (fr)
	//! author : Gaspard Bucher : https://github.com/gaspard
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var fr_ch = moment.defineLocale('fr-ch', {
	        months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
	        monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
	        monthsParseExact : true,
	        weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
	        weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
	        weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD.MM.YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY HH:mm',
	            LLLL : 'dddd D MMMM YYYY HH:mm'
	        },
	        calendar : {
	            sameDay: '[Aujourd\'hui à] LT',
	            nextDay: '[Demain à] LT',
	            nextWeek: 'dddd [à] LT',
	            lastDay: '[Hier à] LT',
	            lastWeek: 'dddd [dernier à] LT',
	            sameElse: 'L'
	        },
	        relativeTime : {
	            future : 'dans %s',
	            past : 'il y a %s',
	            s : 'quelques secondes',
	            m : 'une minute',
	            mm : '%d minutes',
	            h : 'une heure',
	            hh : '%d heures',
	            d : 'un jour',
	            dd : '%d jours',
	            M : 'un mois',
	            MM : '%d mois',
	            y : 'un an',
	            yy : '%d ans'
	        },
	        ordinalParse: /\d{1,2}(er|e)/,
	        ordinal : function (number) {
	            return number + (number === 1 ? 'er' : 'e');
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return fr_ch;
	
	}));

/***/ },
/* 250 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : french (fr)
	//! author : John Fischer : https://github.com/jfroffice
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var fr = moment.defineLocale('fr', {
	        months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
	        monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
	        monthsParseExact : true,
	        weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
	        weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
	        weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY HH:mm',
	            LLLL : 'dddd D MMMM YYYY HH:mm'
	        },
	        calendar : {
	            sameDay: '[Aujourd\'hui à] LT',
	            nextDay: '[Demain à] LT',
	            nextWeek: 'dddd [à] LT',
	            lastDay: '[Hier à] LT',
	            lastWeek: 'dddd [dernier à] LT',
	            sameElse: 'L'
	        },
	        relativeTime : {
	            future : 'dans %s',
	            past : 'il y a %s',
	            s : 'quelques secondes',
	            m : 'une minute',
	            mm : '%d minutes',
	            h : 'une heure',
	            hh : '%d heures',
	            d : 'un jour',
	            dd : '%d jours',
	            M : 'un mois',
	            MM : '%d mois',
	            y : 'un an',
	            yy : '%d ans'
	        },
	        ordinalParse: /\d{1,2}(er|)/,
	        ordinal : function (number) {
	            return number + (number === 1 ? 'er' : '');
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return fr;
	
	}));

/***/ },
/* 251 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : frisian (fy)
	//! author : Robin van der Vliet : https://github.com/robin0van0der0v
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),
	        monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');
	
	    var fy = moment.defineLocale('fy', {
	        months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),
	        monthsShort : function (m, format) {
	            if (/-MMM-/.test(format)) {
	                return monthsShortWithoutDots[m.month()];
	            } else {
	                return monthsShortWithDots[m.month()];
	            }
	        },
	        monthsParseExact : true,
	        weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),
	        weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'),
	        weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD-MM-YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY HH:mm',
	            LLLL : 'dddd D MMMM YYYY HH:mm'
	        },
	        calendar : {
	            sameDay: '[hjoed om] LT',
	            nextDay: '[moarn om] LT',
	            nextWeek: 'dddd [om] LT',
	            lastDay: '[juster om] LT',
	            lastWeek: '[ôfrûne] dddd [om] LT',
	            sameElse: 'L'
	        },
	        relativeTime : {
	            future : 'oer %s',
	            past : '%s lyn',
	            s : 'in pear sekonden',
	            m : 'ien minút',
	            mm : '%d minuten',
	            h : 'ien oere',
	            hh : '%d oeren',
	            d : 'ien dei',
	            dd : '%d dagen',
	            M : 'ien moanne',
	            MM : '%d moannen',
	            y : 'ien jier',
	            yy : '%d jierren'
	        },
	        ordinalParse: /\d{1,2}(ste|de)/,
	        ordinal : function (number) {
	            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return fy;
	
	}));

/***/ },
/* 252 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : great britain scottish gealic (gd)
	//! author : Jon Ashdown : https://github.com/jonashdown
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var months = [
	        'Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd'
	    ];
	
	    var monthsShort = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh'];
	
	    var weekdays = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'];
	
	    var weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'];
	
	    var weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];
	
	    var gd = moment.defineLocale('gd', {
	        months : months,
	        monthsShort : monthsShort,
	        monthsParseExact : true,
	        weekdays : weekdays,
	        weekdaysShort : weekdaysShort,
	        weekdaysMin : weekdaysMin,
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY HH:mm',
	            LLLL : 'dddd, D MMMM YYYY HH:mm'
	        },
	        calendar : {
	            sameDay : '[An-diugh aig] LT',
	            nextDay : '[A-màireach aig] LT',
	            nextWeek : 'dddd [aig] LT',
	            lastDay : '[An-dè aig] LT',
	            lastWeek : 'dddd [seo chaidh] [aig] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'ann an %s',
	            past : 'bho chionn %s',
	            s : 'beagan diogan',
	            m : 'mionaid',
	            mm : '%d mionaidean',
	            h : 'uair',
	            hh : '%d uairean',
	            d : 'latha',
	            dd : '%d latha',
	            M : 'mìos',
	            MM : '%d mìosan',
	            y : 'bliadhna',
	            yy : '%d bliadhna'
	        },
	        ordinalParse : /\d{1,2}(d|na|mh)/,
	        ordinal : function (number) {
	            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
	            return number + output;
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return gd;
	
	}));

/***/ },
/* 253 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : galician (gl)
	//! author : Juan G. Hurtado : https://github.com/juanghurtado
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var gl = moment.defineLocale('gl', {
	        months : 'Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro'.split('_'),
	        monthsShort : 'Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.'.split('_'),
	        monthsParseExact: true,
	        weekdays : 'Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado'.split('_'),
	        weekdaysShort : 'Dom._Lun._Mar._Mér._Xov._Ven._Sáb.'.split('_'),
	        weekdaysMin : 'Do_Lu_Ma_Mé_Xo_Ve_Sá'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT : 'H:mm',
	            LTS : 'H:mm:ss',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY H:mm',
	            LLLL : 'dddd D MMMM YYYY H:mm'
	        },
	        calendar : {
	            sameDay : function () {
	                return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';
	            },
	            nextDay : function () {
	                return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';
	            },
	            nextWeek : function () {
	                return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';
	            },
	            lastDay : function () {
	                return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT';
	            },
	            lastWeek : function () {
	                return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';
	            },
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : function (str) {
	                if (str === 'uns segundos') {
	                    return 'nuns segundos';
	                }
	                return 'en ' + str;
	            },
	            past : 'hai %s',
	            s : 'uns segundos',
	            m : 'un minuto',
	            mm : '%d minutos',
	            h : 'unha hora',
	            hh : '%d horas',
	            d : 'un día',
	            dd : '%d días',
	            M : 'un mes',
	            MM : '%d meses',
	            y : 'un ano',
	            yy : '%d anos'
	        },
	        ordinalParse : /\d{1,2}º/,
	        ordinal : '%dº',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 7  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return gl;
	
	}));

/***/ },
/* 254 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : Hebrew (he)
	//! author : Tomer Cohen : https://github.com/tomer
	//! author : Moshe Simantov : https://github.com/DevelopmentIL
	//! author : Tal Ater : https://github.com/TalAter
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var he = moment.defineLocale('he', {
	        months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),
	        monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),
	        weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
	        weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
	        weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'),
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD/MM/YYYY',
	            LL : 'D [ב]MMMM YYYY',
	            LLL : 'D [ב]MMMM YYYY HH:mm',
	            LLLL : 'dddd, D [ב]MMMM YYYY HH:mm',
	            l : 'D/M/YYYY',
	            ll : 'D MMM YYYY',
	            lll : 'D MMM YYYY HH:mm',
	            llll : 'ddd, D MMM YYYY HH:mm'
	        },
	        calendar : {
	            sameDay : '[היום ב־]LT',
	            nextDay : '[מחר ב־]LT',
	            nextWeek : 'dddd [בשעה] LT',
	            lastDay : '[אתמול ב־]LT',
	            lastWeek : '[ביום] dddd [האחרון בשעה] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'בעוד %s',
	            past : 'לפני %s',
	            s : 'מספר שניות',
	            m : 'דקה',
	            mm : '%d דקות',
	            h : 'שעה',
	            hh : function (number) {
	                if (number === 2) {
	                    return 'שעתיים';
	                }
	                return number + ' שעות';
	            },
	            d : 'יום',
	            dd : function (number) {
	                if (number === 2) {
	                    return 'יומיים';
	                }
	                return number + ' ימים';
	            },
	            M : 'חודש',
	            MM : function (number) {
	                if (number === 2) {
	                    return 'חודשיים';
	                }
	                return number + ' חודשים';
	            },
	            y : 'שנה',
	            yy : function (number) {
	                if (number === 2) {
	                    return 'שנתיים';
	                } else if (number % 10 === 0 && number !== 10) {
	                    return number + ' שנה';
	                }
	                return number + ' שנים';
	            }
	        },
	        meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,
	        isPM : function (input) {
	            return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input);
	        },
	        meridiem : function (hour, minute, isLower) {
	            if (hour < 5) {
	                return 'לפנות בוקר';
	            } else if (hour < 10) {
	                return 'בבוקר';
	            } else if (hour < 12) {
	                return isLower ? 'לפנה"צ' : 'לפני הצהריים';
	            } else if (hour < 18) {
	                return isLower ? 'אחה"צ' : 'אחרי הצהריים';
	            } else {
	                return 'בערב';
	            }
	        }
	    });
	
	    return he;
	
	}));

/***/ },
/* 255 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : hindi (hi)
	//! author : Mayank Singhal : https://github.com/mayanksinghal
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var symbolMap = {
	        '1': '१',
	        '2': '२',
	        '3': '३',
	        '4': '४',
	        '5': '५',
	        '6': '६',
	        '7': '७',
	        '8': '८',
	        '9': '९',
	        '0': '०'
	    },
	    numberMap = {
	        '१': '1',
	        '२': '2',
	        '३': '3',
	        '४': '4',
	        '५': '5',
	        '६': '6',
	        '७': '7',
	        '८': '8',
	        '९': '9',
	        '०': '0'
	    };
	
	    var hi = moment.defineLocale('hi', {
	        months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),
	        monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),
	        monthsParseExact: true,
	        weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
	        weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
	        weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),
	        longDateFormat : {
	            LT : 'A h:mm बजे',
	            LTS : 'A h:mm:ss बजे',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY, A h:mm बजे',
	            LLLL : 'dddd, D MMMM YYYY, A h:mm बजे'
	        },
	        calendar : {
	            sameDay : '[आज] LT',
	            nextDay : '[कल] LT',
	            nextWeek : 'dddd, LT',
	            lastDay : '[कल] LT',
	            lastWeek : '[पिछले] dddd, LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : '%s में',
	            past : '%s पहले',
	            s : 'कुछ ही क्षण',
	            m : 'एक मिनट',
	            mm : '%d मिनट',
	            h : 'एक घंटा',
	            hh : '%d घंटे',
	            d : 'एक दिन',
	            dd : '%d दिन',
	            M : 'एक महीने',
	            MM : '%d महीने',
	            y : 'एक वर्ष',
	            yy : '%d वर्ष'
	        },
	        preparse: function (string) {
	            return string.replace(/[१२३४५६७८९०]/g, function (match) {
	                return numberMap[match];
	            });
	        },
	        postformat: function (string) {
	            return string.replace(/\d/g, function (match) {
	                return symbolMap[match];
	            });
	        },
	        // Hindi notation for meridiems are quite fuzzy in practice. While there exists
	        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
	        meridiemParse: /रात|सुबह|दोपहर|शाम/,
	        meridiemHour : function (hour, meridiem) {
	            if (hour === 12) {
	                hour = 0;
	            }
	            if (meridiem === 'रात') {
	                return hour < 4 ? hour : hour + 12;
	            } else if (meridiem === 'सुबह') {
	                return hour;
	            } else if (meridiem === 'दोपहर') {
	                return hour >= 10 ? hour : hour + 12;
	            } else if (meridiem === 'शाम') {
	                return hour + 12;
	            }
	        },
	        meridiem : function (hour, minute, isLower) {
	            if (hour < 4) {
	                return 'रात';
	            } else if (hour < 10) {
	                return 'सुबह';
	            } else if (hour < 17) {
	                return 'दोपहर';
	            } else if (hour < 20) {
	                return 'शाम';
	            } else {
	                return 'रात';
	            }
	        },
	        week : {
	            dow : 0, // Sunday is the first day of the week.
	            doy : 6  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return hi;
	
	}));

/***/ },
/* 256 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : hrvatski (hr)
	//! author : Bojan Marković : https://github.com/bmarkovic
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    function translate(number, withoutSuffix, key) {
	        var result = number + ' ';
	        switch (key) {
	        case 'm':
	            return withoutSuffix ? 'jedna minuta' : 'jedne minute';
	        case 'mm':
	            if (number === 1) {
	                result += 'minuta';
	            } else if (number === 2 || number === 3 || number === 4) {
	                result += 'minute';
	            } else {
	                result += 'minuta';
	            }
	            return result;
	        case 'h':
	            return withoutSuffix ? 'jedan sat' : 'jednog sata';
	        case 'hh':
	            if (number === 1) {
	                result += 'sat';
	            } else if (number === 2 || number === 3 || number === 4) {
	                result += 'sata';
	            } else {
	                result += 'sati';
	            }
	            return result;
	        case 'dd':
	            if (number === 1) {
	                result += 'dan';
	            } else {
	                result += 'dana';
	            }
	            return result;
	        case 'MM':
	            if (number === 1) {
	                result += 'mjesec';
	            } else if (number === 2 || number === 3 || number === 4) {
	                result += 'mjeseca';
	            } else {
	                result += 'mjeseci';
	            }
	            return result;
	        case 'yy':
	            if (number === 1) {
	                result += 'godina';
	            } else if (number === 2 || number === 3 || number === 4) {
	                result += 'godine';
	            } else {
	                result += 'godina';
	            }
	            return result;
	        }
	    }
	
	    var hr = moment.defineLocale('hr', {
	        months : {
	            format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'),
	            standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_')
	        },
	        monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),
	        monthsParseExact: true,
	        weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
	        weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
	        weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT : 'H:mm',
	            LTS : 'H:mm:ss',
	            L : 'DD. MM. YYYY',
	            LL : 'D. MMMM YYYY',
	            LLL : 'D. MMMM YYYY H:mm',
	            LLLL : 'dddd, D. MMMM YYYY H:mm'
	        },
	        calendar : {
	            sameDay  : '[danas u] LT',
	            nextDay  : '[sutra u] LT',
	            nextWeek : function () {
	                switch (this.day()) {
	                case 0:
	                    return '[u] [nedjelju] [u] LT';
	                case 3:
	                    return '[u] [srijedu] [u] LT';
	                case 6:
	                    return '[u] [subotu] [u] LT';
	                case 1:
	                case 2:
	                case 4:
	                case 5:
	                    return '[u] dddd [u] LT';
	                }
	            },
	            lastDay  : '[jučer u] LT',
	            lastWeek : function () {
	                switch (this.day()) {
	                case 0:
	                case 3:
	                    return '[prošlu] dddd [u] LT';
	                case 6:
	                    return '[prošle] [subote] [u] LT';
	                case 1:
	                case 2:
	                case 4:
	                case 5:
	                    return '[prošli] dddd [u] LT';
	                }
	            },
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'za %s',
	            past   : 'prije %s',
	            s      : 'par sekundi',
	            m      : translate,
	            mm     : translate,
	            h      : translate,
	            hh     : translate,
	            d      : 'dan',
	            dd     : translate,
	            M      : 'mjesec',
	            MM     : translate,
	            y      : 'godinu',
	            yy     : translate
	        },
	        ordinalParse: /\d{1,2}\./,
	        ordinal : '%d.',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 7  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return hr;
	
	}));

/***/ },
/* 257 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : hungarian (hu)
	//! author : Adam Brunner : https://github.com/adambrunner
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');
	    function translate(number, withoutSuffix, key, isFuture) {
	        var num = number,
	            suffix;
	        switch (key) {
	        case 's':
	            return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';
	        case 'm':
	            return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
	        case 'mm':
	            return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
	        case 'h':
	            return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
	        case 'hh':
	            return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
	        case 'd':
	            return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
	        case 'dd':
	            return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
	        case 'M':
	            return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
	        case 'MM':
	            return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
	        case 'y':
	            return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
	        case 'yy':
	            return num + (isFuture || withoutSuffix ? ' év' : ' éve');
	        }
	        return '';
	    }
	    function week(isFuture) {
	        return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';
	    }
	
	    var hu = moment.defineLocale('hu', {
	        months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),
	        monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),
	        weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
	        weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),
	        weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'),
	        longDateFormat : {
	            LT : 'H:mm',
	            LTS : 'H:mm:ss',
	            L : 'YYYY.MM.DD.',
	            LL : 'YYYY. MMMM D.',
	            LLL : 'YYYY. MMMM D. H:mm',
	            LLLL : 'YYYY. MMMM D., dddd H:mm'
	        },
	        meridiemParse: /de|du/i,
	        isPM: function (input) {
	            return input.charAt(1).toLowerCase() === 'u';
	        },
	        meridiem : function (hours, minutes, isLower) {
	            if (hours < 12) {
	                return isLower === true ? 'de' : 'DE';
	            } else {
	                return isLower === true ? 'du' : 'DU';
	            }
	        },
	        calendar : {
	            sameDay : '[ma] LT[-kor]',
	            nextDay : '[holnap] LT[-kor]',
	            nextWeek : function () {
	                return week.call(this, true);
	            },
	            lastDay : '[tegnap] LT[-kor]',
	            lastWeek : function () {
	                return week.call(this, false);
	            },
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : '%s múlva',
	            past : '%s',
	            s : translate,
	            m : translate,
	            mm : translate,
	            h : translate,
	            hh : translate,
	            d : translate,
	            dd : translate,
	            M : translate,
	            MM : translate,
	            y : translate,
	            yy : translate
	        },
	        ordinalParse: /\d{1,2}\./,
	        ordinal : '%d.',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 7  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return hu;
	
	}));

/***/ },
/* 258 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : Armenian (hy-am)
	//! author : Armendarabyan : https://github.com/armendarabyan
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var hy_am = moment.defineLocale('hy-am', {
	        months : {
	            format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'),
	            standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_')
	        },
	        monthsShort : 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
	        weekdays : 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'),
	        weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
	        weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD.MM.YYYY',
	            LL : 'D MMMM YYYY թ.',
	            LLL : 'D MMMM YYYY թ., HH:mm',
	            LLLL : 'dddd, D MMMM YYYY թ., HH:mm'
	        },
	        calendar : {
	            sameDay: '[այսօր] LT',
	            nextDay: '[վաղը] LT',
	            lastDay: '[երեկ] LT',
	            nextWeek: function () {
	                return 'dddd [օրը ժամը] LT';
	            },
	            lastWeek: function () {
	                return '[անցած] dddd [օրը ժամը] LT';
	            },
	            sameElse: 'L'
	        },
	        relativeTime : {
	            future : '%s հետո',
	            past : '%s առաջ',
	            s : 'մի քանի վայրկյան',
	            m : 'րոպե',
	            mm : '%d րոպե',
	            h : 'ժամ',
	            hh : '%d ժամ',
	            d : 'օր',
	            dd : '%d օր',
	            M : 'ամիս',
	            MM : '%d ամիս',
	            y : 'տարի',
	            yy : '%d տարի'
	        },
	        meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
	        isPM: function (input) {
	            return /^(ցերեկվա|երեկոյան)$/.test(input);
	        },
	        meridiem : function (hour) {
	            if (hour < 4) {
	                return 'գիշերվա';
	            } else if (hour < 12) {
	                return 'առավոտվա';
	            } else if (hour < 17) {
	                return 'ցերեկվա';
	            } else {
	                return 'երեկոյան';
	            }
	        },
	        ordinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/,
	        ordinal: function (number, period) {
	            switch (period) {
	            case 'DDD':
	            case 'w':
	            case 'W':
	            case 'DDDo':
	                if (number === 1) {
	                    return number + '-ին';
	                }
	                return number + '-րդ';
	            default:
	                return number;
	            }
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 7  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return hy_am;
	
	}));

/***/ },
/* 259 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : Bahasa Indonesia (id)
	//! author : Mohammad Satrio Utomo : https://github.com/tyok
	//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var id = moment.defineLocale('id', {
	        months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),
	        monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des'.split('_'),
	        weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
	        weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),
	        weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
	        longDateFormat : {
	            LT : 'HH.mm',
	            LTS : 'HH.mm.ss',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY [pukul] HH.mm',
	            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
	        },
	        meridiemParse: /pagi|siang|sore|malam/,
	        meridiemHour : function (hour, meridiem) {
	            if (hour === 12) {
	                hour = 0;
	            }
	            if (meridiem === 'pagi') {
	                return hour;
	            } else if (meridiem === 'siang') {
	                return hour >= 11 ? hour : hour + 12;
	            } else if (meridiem === 'sore' || meridiem === 'malam') {
	                return hour + 12;
	            }
	        },
	        meridiem : function (hours, minutes, isLower) {
	            if (hours < 11) {
	                return 'pagi';
	            } else if (hours < 15) {
	                return 'siang';
	            } else if (hours < 19) {
	                return 'sore';
	            } else {
	                return 'malam';
	            }
	        },
	        calendar : {
	            sameDay : '[Hari ini pukul] LT',
	            nextDay : '[Besok pukul] LT',
	            nextWeek : 'dddd [pukul] LT',
	            lastDay : '[Kemarin pukul] LT',
	            lastWeek : 'dddd [lalu pukul] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'dalam %s',
	            past : '%s yang lalu',
	            s : 'beberapa detik',
	            m : 'semenit',
	            mm : '%d menit',
	            h : 'sejam',
	            hh : '%d jam',
	            d : 'sehari',
	            dd : '%d hari',
	            M : 'sebulan',
	            MM : '%d bulan',
	            y : 'setahun',
	            yy : '%d tahun'
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 7  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return id;
	
	}));

/***/ },
/* 260 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : icelandic (is)
	//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    function plural(n) {
	        if (n % 100 === 11) {
	            return true;
	        } else if (n % 10 === 1) {
	            return false;
	        }
	        return true;
	    }
	    function translate(number, withoutSuffix, key, isFuture) {
	        var result = number + ' ';
	        switch (key) {
	        case 's':
	            return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';
	        case 'm':
	            return withoutSuffix ? 'mínúta' : 'mínútu';
	        case 'mm':
	            if (plural(number)) {
	                return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum');
	            } else if (withoutSuffix) {
	                return result + 'mínúta';
	            }
	            return result + 'mínútu';
	        case 'hh':
	            if (plural(number)) {
	                return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');
	            }
	            return result + 'klukkustund';
	        case 'd':
	            if (withoutSuffix) {
	                return 'dagur';
	            }
	            return isFuture ? 'dag' : 'degi';
	        case 'dd':
	            if (plural(number)) {
	                if (withoutSuffix) {
	                    return result + 'dagar';
	                }
	                return result + (isFuture ? 'daga' : 'dögum');
	            } else if (withoutSuffix) {
	                return result + 'dagur';
	            }
	            return result + (isFuture ? 'dag' : 'degi');
	        case 'M':
	            if (withoutSuffix) {
	                return 'mánuður';
	            }
	            return isFuture ? 'mánuð' : 'mánuði';
	        case 'MM':
	            if (plural(number)) {
	                if (withoutSuffix) {
	                    return result + 'mánuðir';
	                }
	                return result + (isFuture ? 'mánuði' : 'mánuðum');
	            } else if (withoutSuffix) {
	                return result + 'mánuður';
	            }
	            return result + (isFuture ? 'mánuð' : 'mánuði');
	        case 'y':
	            return withoutSuffix || isFuture ? 'ár' : 'ári';
	        case 'yy':
	            if (plural(number)) {
	                return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
	            }
	            return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
	        }
	    }
	
	    var is = moment.defineLocale('is', {
	        months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'),
	        monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
	        weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),
	        weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'),
	        weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
	        longDateFormat : {
	            LT : 'H:mm',
	            LTS : 'H:mm:ss',
	            L : 'DD.MM.YYYY',
	            LL : 'D. MMMM YYYY',
	            LLL : 'D. MMMM YYYY [kl.] H:mm',
	            LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm'
	        },
	        calendar : {
	            sameDay : '[í dag kl.] LT',
	            nextDay : '[á morgun kl.] LT',
	            nextWeek : 'dddd [kl.] LT',
	            lastDay : '[í gær kl.] LT',
	            lastWeek : '[síðasta] dddd [kl.] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'eftir %s',
	            past : 'fyrir %s síðan',
	            s : translate,
	            m : translate,
	            mm : translate,
	            h : 'klukkustund',
	            hh : translate,
	            d : translate,
	            dd : translate,
	            M : translate,
	            MM : translate,
	            y : translate,
	            yy : translate
	        },
	        ordinalParse: /\d{1,2}\./,
	        ordinal : '%d.',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return is;
	
	}));

/***/ },
/* 261 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : italian (it)
	//! author : Lorenzo : https://github.com/aliem
	//! author: Mattia Larentis: https://github.com/nostalgiaz
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var it = moment.defineLocale('it', {
	        months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),
	        monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
	        weekdays : 'Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato'.split('_'),
	        weekdaysShort : 'Dom_Lun_Mar_Mer_Gio_Ven_Sab'.split('_'),
	        weekdaysMin : 'Do_Lu_Ma_Me_Gi_Ve_Sa'.split('_'),
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY HH:mm',
	            LLLL : 'dddd, D MMMM YYYY HH:mm'
	        },
	        calendar : {
	            sameDay: '[Oggi alle] LT',
	            nextDay: '[Domani alle] LT',
	            nextWeek: 'dddd [alle] LT',
	            lastDay: '[Ieri alle] LT',
	            lastWeek: function () {
	                switch (this.day()) {
	                    case 0:
	                        return '[la scorsa] dddd [alle] LT';
	                    default:
	                        return '[lo scorso] dddd [alle] LT';
	                }
	            },
	            sameElse: 'L'
	        },
	        relativeTime : {
	            future : function (s) {
	                return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;
	            },
	            past : '%s fa',
	            s : 'alcuni secondi',
	            m : 'un minuto',
	            mm : '%d minuti',
	            h : 'un\'ora',
	            hh : '%d ore',
	            d : 'un giorno',
	            dd : '%d giorni',
	            M : 'un mese',
	            MM : '%d mesi',
	            y : 'un anno',
	            yy : '%d anni'
	        },
	        ordinalParse : /\d{1,2}º/,
	        ordinal: '%dº',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return it;
	
	}));

/***/ },
/* 262 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : japanese (ja)
	//! author : LI Long : https://github.com/baryon
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var ja = moment.defineLocale('ja', {
	        months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
	        monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
	        weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
	        weekdaysShort : '日_月_火_水_木_金_土'.split('_'),
	        weekdaysMin : '日_月_火_水_木_金_土'.split('_'),
	        longDateFormat : {
	            LT : 'Ah時m分',
	            LTS : 'Ah時m分s秒',
	            L : 'YYYY/MM/DD',
	            LL : 'YYYY年M月D日',
	            LLL : 'YYYY年M月D日Ah時m分',
	            LLLL : 'YYYY年M月D日Ah時m分 dddd'
	        },
	        meridiemParse: /午前|午後/i,
	        isPM : function (input) {
	            return input === '午後';
	        },
	        meridiem : function (hour, minute, isLower) {
	            if (hour < 12) {
	                return '午前';
	            } else {
	                return '午後';
	            }
	        },
	        calendar : {
	            sameDay : '[今日] LT',
	            nextDay : '[明日] LT',
	            nextWeek : '[来週]dddd LT',
	            lastDay : '[昨日] LT',
	            lastWeek : '[前週]dddd LT',
	            sameElse : 'L'
	        },
	        ordinalParse : /\d{1,2}日/,
	        ordinal : function (number, period) {
	            switch (period) {
	            case 'd':
	            case 'D':
	            case 'DDD':
	                return number + '日';
	            default:
	                return number;
	            }
	        },
	        relativeTime : {
	            future : '%s後',
	            past : '%s前',
	            s : '数秒',
	            m : '1分',
	            mm : '%d分',
	            h : '1時間',
	            hh : '%d時間',
	            d : '1日',
	            dd : '%d日',
	            M : '1ヶ月',
	            MM : '%dヶ月',
	            y : '1年',
	            yy : '%d年'
	        }
	    });
	
	    return ja;
	
	}));

/***/ },
/* 263 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : Boso Jowo (jv)
	//! author : Rony Lantip : https://github.com/lantip
	//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var jv = moment.defineLocale('jv', {
	        months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),
	        monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),
	        weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),
	        weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),
	        weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),
	        longDateFormat : {
	            LT : 'HH.mm',
	            LTS : 'HH.mm.ss',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY [pukul] HH.mm',
	            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
	        },
	        meridiemParse: /enjing|siyang|sonten|ndalu/,
	        meridiemHour : function (hour, meridiem) {
	            if (hour === 12) {
	                hour = 0;
	            }
	            if (meridiem === 'enjing') {
	                return hour;
	            } else if (meridiem === 'siyang') {
	                return hour >= 11 ? hour : hour + 12;
	            } else if (meridiem === 'sonten' || meridiem === 'ndalu') {
	                return hour + 12;
	            }
	        },
	        meridiem : function (hours, minutes, isLower) {
	            if (hours < 11) {
	                return 'enjing';
	            } else if (hours < 15) {
	                return 'siyang';
	            } else if (hours < 19) {
	                return 'sonten';
	            } else {
	                return 'ndalu';
	            }
	        },
	        calendar : {
	            sameDay : '[Dinten puniko pukul] LT',
	            nextDay : '[Mbenjang pukul] LT',
	            nextWeek : 'dddd [pukul] LT',
	            lastDay : '[Kala wingi pukul] LT',
	            lastWeek : 'dddd [kepengker pukul] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'wonten ing %s',
	            past : '%s ingkang kepengker',
	            s : 'sawetawis detik',
	            m : 'setunggal menit',
	            mm : '%d menit',
	            h : 'setunggal jam',
	            hh : '%d jam',
	            d : 'sedinten',
	            dd : '%d dinten',
	            M : 'sewulan',
	            MM : '%d wulan',
	            y : 'setaun',
	            yy : '%d taun'
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 7  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return jv;
	
	}));

/***/ },
/* 264 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : Georgian (ka)
	//! author : Irakli Janiashvili : https://github.com/irakli-janiashvili
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var ka = moment.defineLocale('ka', {
	        months : {
	            standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),
	            format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_')
	        },
	        monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
	        weekdays : {
	            standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),
	            format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'),
	            isFormat: /(წინა|შემდეგ)/
	        },
	        weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
	        weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
	        longDateFormat : {
	            LT : 'h:mm A',
	            LTS : 'h:mm:ss A',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY h:mm A',
	            LLLL : 'dddd, D MMMM YYYY h:mm A'
	        },
	        calendar : {
	            sameDay : '[დღეს] LT[-ზე]',
	            nextDay : '[ხვალ] LT[-ზე]',
	            lastDay : '[გუშინ] LT[-ზე]',
	            nextWeek : '[შემდეგ] dddd LT[-ზე]',
	            lastWeek : '[წინა] dddd LT-ზე',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : function (s) {
	                return (/(წამი|წუთი|საათი|წელი)/).test(s) ?
	                    s.replace(/ი$/, 'ში') :
	                    s + 'ში';
	            },
	            past : function (s) {
	                if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) {
	                    return s.replace(/(ი|ე)$/, 'ის წინ');
	                }
	                if ((/წელი/).test(s)) {
	                    return s.replace(/წელი$/, 'წლის წინ');
	                }
	            },
	            s : 'რამდენიმე წამი',
	            m : 'წუთი',
	            mm : '%d წუთი',
	            h : 'საათი',
	            hh : '%d საათი',
	            d : 'დღე',
	            dd : '%d დღე',
	            M : 'თვე',
	            MM : '%d თვე',
	            y : 'წელი',
	            yy : '%d წელი'
	        },
	        ordinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,
	        ordinal : function (number) {
	            if (number === 0) {
	                return number;
	            }
	            if (number === 1) {
	                return number + '-ლი';
	            }
	            if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) {
	                return 'მე-' + number;
	            }
	            return number + '-ე';
	        },
	        week : {
	            dow : 1,
	            doy : 7
	        }
	    });
	
	    return ka;
	
	}));

/***/ },
/* 265 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : kazakh (kk)
	//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var suffixes = {
	        0: '-ші',
	        1: '-ші',
	        2: '-ші',
	        3: '-ші',
	        4: '-ші',
	        5: '-ші',
	        6: '-шы',
	        7: '-ші',
	        8: '-ші',
	        9: '-шы',
	        10: '-шы',
	        20: '-шы',
	        30: '-шы',
	        40: '-шы',
	        50: '-ші',
	        60: '-шы',
	        70: '-ші',
	        80: '-ші',
	        90: '-шы',
	        100: '-ші'
	    };
	
	    var kk = moment.defineLocale('kk', {
	        months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),
	        monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),
	        weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'),
	        weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),
	        weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'),
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD.MM.YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY HH:mm',
	            LLLL : 'dddd, D MMMM YYYY HH:mm'
	        },
	        calendar : {
	            sameDay : '[Бүгін сағат] LT',
	            nextDay : '[Ертең сағат] LT',
	            nextWeek : 'dddd [сағат] LT',
	            lastDay : '[Кеше сағат] LT',
	            lastWeek : '[Өткен аптаның] dddd [сағат] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : '%s ішінде',
	            past : '%s бұрын',
	            s : 'бірнеше секунд',
	            m : 'бір минут',
	            mm : '%d минут',
	            h : 'бір сағат',
	            hh : '%d сағат',
	            d : 'бір күн',
	            dd : '%d күн',
	            M : 'бір ай',
	            MM : '%d ай',
	            y : 'бір жыл',
	            yy : '%d жыл'
	        },
	        ordinalParse: /\d{1,2}-(ші|шы)/,
	        ordinal : function (number) {
	            var a = number % 10,
	                b = number >= 100 ? 100 : null;
	            return number + (suffixes[number] || suffixes[a] || suffixes[b]);
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 7  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return kk;
	
	}));

/***/ },
/* 266 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : khmer (km)
	//! author : Kruy Vanna : https://github.com/kruyvanna
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var km = moment.defineLocale('km', {
	        months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),
	        monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),
	        weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
	        weekdaysShort: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
	        weekdaysMin: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
	        longDateFormat: {
	            LT: 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L: 'DD/MM/YYYY',
	            LL: 'D MMMM YYYY',
	            LLL: 'D MMMM YYYY HH:mm',
	            LLLL: 'dddd, D MMMM YYYY HH:mm'
	        },
	        calendar: {
	            sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',
	            nextDay: '[ស្អែក ម៉ោង] LT',
	            nextWeek: 'dddd [ម៉ោង] LT',
	            lastDay: '[ម្សិលមិញ ម៉ោង] LT',
	            lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',
	            sameElse: 'L'
	        },
	        relativeTime: {
	            future: '%sទៀត',
	            past: '%sមុន',
	            s: 'ប៉ុន្មានវិនាទី',
	            m: 'មួយនាទី',
	            mm: '%d នាទី',
	            h: 'មួយម៉ោង',
	            hh: '%d ម៉ោង',
	            d: 'មួយថ្ងៃ',
	            dd: '%d ថ្ងៃ',
	            M: 'មួយខែ',
	            MM: '%d ខែ',
	            y: 'មួយឆ្នាំ',
	            yy: '%d ឆ្នាំ'
	        },
	        week: {
	            dow: 1, // Monday is the first day of the week.
	            doy: 4 // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return km;
	
	}));

/***/ },
/* 267 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : korean (ko)
	//!
	//! authors
	//!
	//! - Kyungwook, Park : https://github.com/kyungw00k
	//! - Jeeeyul Lee <jeeeyul@gmail.com>
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var ko = moment.defineLocale('ko', {
	        months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
	        monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
	        weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
	        weekdaysShort : '일_월_화_수_목_금_토'.split('_'),
	        weekdaysMin : '일_월_화_수_목_금_토'.split('_'),
	        longDateFormat : {
	            LT : 'A h시 m분',
	            LTS : 'A h시 m분 s초',
	            L : 'YYYY.MM.DD',
	            LL : 'YYYY년 MMMM D일',
	            LLL : 'YYYY년 MMMM D일 A h시 m분',
	            LLLL : 'YYYY년 MMMM D일 dddd A h시 m분'
	        },
	        calendar : {
	            sameDay : '오늘 LT',
	            nextDay : '내일 LT',
	            nextWeek : 'dddd LT',
	            lastDay : '어제 LT',
	            lastWeek : '지난주 dddd LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : '%s 후',
	            past : '%s 전',
	            s : '몇 초',
	            ss : '%d초',
	            m : '일분',
	            mm : '%d분',
	            h : '한 시간',
	            hh : '%d시간',
	            d : '하루',
	            dd : '%d일',
	            M : '한 달',
	            MM : '%d달',
	            y : '일 년',
	            yy : '%d년'
	        },
	        ordinalParse : /\d{1,2}일/,
	        ordinal : '%d일',
	        meridiemParse : /오전|오후/,
	        isPM : function (token) {
	            return token === '오후';
	        },
	        meridiem : function (hour, minute, isUpper) {
	            return hour < 12 ? '오전' : '오후';
	        }
	    });
	
	    return ko;
	
	}));

/***/ },
/* 268 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : kyrgyz (ky)
	//! author : Chyngyz Arystan uulu : https://github.com/chyngyz
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	
	    var suffixes = {
	        0: '-чү',
	        1: '-чи',
	        2: '-чи',
	        3: '-чү',
	        4: '-чү',
	        5: '-чи',
	        6: '-чы',
	        7: '-чи',
	        8: '-чи',
	        9: '-чу',
	        10: '-чу',
	        20: '-чы',
	        30: '-чу',
	        40: '-чы',
	        50: '-чү',
	        60: '-чы',
	        70: '-чи',
	        80: '-чи',
	        90: '-чу',
	        100: '-чү'
	    };
	
	    var ky = moment.defineLocale('ky', {
	        months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),
	        monthsShort : 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),
	        weekdays : 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'),
	        weekdaysShort : 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),
	        weekdaysMin : 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD.MM.YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY HH:mm',
	            LLLL : 'dddd, D MMMM YYYY HH:mm'
	        },
	        calendar : {
	            sameDay : '[Бүгүн саат] LT',
	            nextDay : '[Эртең саат] LT',
	            nextWeek : 'dddd [саат] LT',
	            lastDay : '[Кече саат] LT',
	            lastWeek : '[Өткен аптанын] dddd [күнү] [саат] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : '%s ичинде',
	            past : '%s мурун',
	            s : 'бирнече секунд',
	            m : 'бир мүнөт',
	            mm : '%d мүнөт',
	            h : 'бир саат',
	            hh : '%d саат',
	            d : 'бир күн',
	            dd : '%d күн',
	            M : 'бир ай',
	            MM : '%d ай',
	            y : 'бир жыл',
	            yy : '%d жыл'
	        },
	        ordinalParse: /\d{1,2}-(чи|чы|чү|чу)/,
	        ordinal : function (number) {
	            var a = number % 10,
	                b = number >= 100 ? 100 : null;
	            return number + (suffixes[number] || suffixes[a] || suffixes[b]);
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 7  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return ky;
	
	}));

/***/ },
/* 269 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : Luxembourgish (lb)
	//! author : mweimerskirch : https://github.com/mweimerskirch, David Raison : https://github.com/kwisatz
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    function processRelativeTime(number, withoutSuffix, key, isFuture) {
	        var format = {
	            'm': ['eng Minutt', 'enger Minutt'],
	            'h': ['eng Stonn', 'enger Stonn'],
	            'd': ['een Dag', 'engem Dag'],
	            'M': ['ee Mount', 'engem Mount'],
	            'y': ['ee Joer', 'engem Joer']
	        };
	        return withoutSuffix ? format[key][0] : format[key][1];
	    }
	    function processFutureTime(string) {
	        var number = string.substr(0, string.indexOf(' '));
	        if (eifelerRegelAppliesToNumber(number)) {
	            return 'a ' + string;
	        }
	        return 'an ' + string;
	    }
	    function processPastTime(string) {
	        var number = string.substr(0, string.indexOf(' '));
	        if (eifelerRegelAppliesToNumber(number)) {
	            return 'viru ' + string;
	        }
	        return 'virun ' + string;
	    }
	    /**
	     * Returns true if the word before the given number loses the '-n' ending.
	     * e.g. 'an 10 Deeg' but 'a 5 Deeg'
	     *
	     * @param number {integer}
	     * @returns {boolean}
	     */
	    function eifelerRegelAppliesToNumber(number) {
	        number = parseInt(number, 10);
	        if (isNaN(number)) {
	            return false;
	        }
	        if (number < 0) {
	            // Negative Number --> always true
	            return true;
	        } else if (number < 10) {
	            // Only 1 digit
	            if (4 <= number && number <= 7) {
	                return true;
	            }
	            return false;
	        } else if (number < 100) {
	            // 2 digits
	            var lastDigit = number % 10, firstDigit = number / 10;
	            if (lastDigit === 0) {
	                return eifelerRegelAppliesToNumber(firstDigit);
	            }
	            return eifelerRegelAppliesToNumber(lastDigit);
	        } else if (number < 10000) {
	            // 3 or 4 digits --> recursively check first digit
	            while (number >= 10) {
	                number = number / 10;
	            }
	            return eifelerRegelAppliesToNumber(number);
	        } else {
	            // Anything larger than 4 digits: recursively check first n-3 digits
	            number = number / 1000;
	            return eifelerRegelAppliesToNumber(number);
	        }
	    }
	
	    var lb = moment.defineLocale('lb', {
	        months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
	        monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
	        monthsParseExact : true,
	        weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),
	        weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
	        weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat: {
	            LT: 'H:mm [Auer]',
	            LTS: 'H:mm:ss [Auer]',
	            L: 'DD.MM.YYYY',
	            LL: 'D. MMMM YYYY',
	            LLL: 'D. MMMM YYYY H:mm [Auer]',
	            LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'
	        },
	        calendar: {
	            sameDay: '[Haut um] LT',
	            sameElse: 'L',
	            nextDay: '[Muer um] LT',
	            nextWeek: 'dddd [um] LT',
	            lastDay: '[Gëschter um] LT',
	            lastWeek: function () {
	                // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
	                switch (this.day()) {
	                    case 2:
	                    case 4:
	                        return '[Leschten] dddd [um] LT';
	                    default:
	                        return '[Leschte] dddd [um] LT';
	                }
	            }
	        },
	        relativeTime : {
	            future : processFutureTime,
	            past : processPastTime,
	            s : 'e puer Sekonnen',
	            m : processRelativeTime,
	            mm : '%d Minutten',
	            h : processRelativeTime,
	            hh : '%d Stonnen',
	            d : processRelativeTime,
	            dd : '%d Deeg',
	            M : processRelativeTime,
	            MM : '%d Méint',
	            y : processRelativeTime,
	            yy : '%d Joer'
	        },
	        ordinalParse: /\d{1,2}\./,
	        ordinal: '%d.',
	        week: {
	            dow: 1, // Monday is the first day of the week.
	            doy: 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return lb;
	
	}));

/***/ },
/* 270 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : lao (lo)
	//! author : Ryan Hart : https://github.com/ryanhart2
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var lo = moment.defineLocale('lo', {
	        months : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),
	        monthsShort : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),
	        weekdays : 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
	        weekdaysShort : 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
	        weekdaysMin : 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY HH:mm',
	            LLLL : 'ວັນdddd D MMMM YYYY HH:mm'
	        },
	        meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,
	        isPM: function (input) {
	            return input === 'ຕອນແລງ';
	        },
	        meridiem : function (hour, minute, isLower) {
	            if (hour < 12) {
	                return 'ຕອນເຊົ້າ';
	            } else {
	                return 'ຕອນແລງ';
	            }
	        },
	        calendar : {
	            sameDay : '[ມື້ນີ້ເວລາ] LT',
	            nextDay : '[ມື້ອື່ນເວລາ] LT',
	            nextWeek : '[ວັນ]dddd[ໜ້າເວລາ] LT',
	            lastDay : '[ມື້ວານນີ້ເວລາ] LT',
	            lastWeek : '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'ອີກ %s',
	            past : '%sຜ່ານມາ',
	            s : 'ບໍ່ເທົ່າໃດວິນາທີ',
	            m : '1 ນາທີ',
	            mm : '%d ນາທີ',
	            h : '1 ຊົ່ວໂມງ',
	            hh : '%d ຊົ່ວໂມງ',
	            d : '1 ມື້',
	            dd : '%d ມື້',
	            M : '1 ເດືອນ',
	            MM : '%d ເດືອນ',
	            y : '1 ປີ',
	            yy : '%d ປີ'
	        },
	        ordinalParse: /(ທີ່)\d{1,2}/,
	        ordinal : function (number) {
	            return 'ທີ່' + number;
	        }
	    });
	
	    return lo;
	
	}));

/***/ },
/* 271 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : Lithuanian (lt)
	//! author : Mindaugas Mozūras : https://github.com/mmozuras
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var units = {
	        'm' : 'minutė_minutės_minutę',
	        'mm': 'minutės_minučių_minutes',
	        'h' : 'valanda_valandos_valandą',
	        'hh': 'valandos_valandų_valandas',
	        'd' : 'diena_dienos_dieną',
	        'dd': 'dienos_dienų_dienas',
	        'M' : 'mėnuo_mėnesio_mėnesį',
	        'MM': 'mėnesiai_mėnesių_mėnesius',
	        'y' : 'metai_metų_metus',
	        'yy': 'metai_metų_metus'
	    };
	    function translateSeconds(number, withoutSuffix, key, isFuture) {
	        if (withoutSuffix) {
	            return 'kelios sekundės';
	        } else {
	            return isFuture ? 'kelių sekundžių' : 'kelias sekundes';
	        }
	    }
	    function translateSingular(number, withoutSuffix, key, isFuture) {
	        return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);
	    }
	    function special(number) {
	        return number % 10 === 0 || (number > 10 && number < 20);
	    }
	    function forms(key) {
	        return units[key].split('_');
	    }
	    function translate(number, withoutSuffix, key, isFuture) {
	        var result = number + ' ';
	        if (number === 1) {
	            return result + translateSingular(number, withoutSuffix, key[0], isFuture);
	        } else if (withoutSuffix) {
	            return result + (special(number) ? forms(key)[1] : forms(key)[0]);
	        } else {
	            if (isFuture) {
	                return result + forms(key)[1];
	            } else {
	                return result + (special(number) ? forms(key)[1] : forms(key)[2]);
	            }
	        }
	    }
	    var lt = moment.defineLocale('lt', {
	        months : {
	            format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),
	            standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_')
	        },
	        monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
	        weekdays : {
	            format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'),
	            standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),
	            isFormat: /dddd HH:mm/
	        },
	        weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),
	        weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'YYYY-MM-DD',
	            LL : 'YYYY [m.] MMMM D [d.]',
	            LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
	            LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
	            l : 'YYYY-MM-DD',
	            ll : 'YYYY [m.] MMMM D [d.]',
	            lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
	            llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'
	        },
	        calendar : {
	            sameDay : '[Šiandien] LT',
	            nextDay : '[Rytoj] LT',
	            nextWeek : 'dddd LT',
	            lastDay : '[Vakar] LT',
	            lastWeek : '[Praėjusį] dddd LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'po %s',
	            past : 'prieš %s',
	            s : translateSeconds,
	            m : translateSingular,
	            mm : translate,
	            h : translateSingular,
	            hh : translate,
	            d : translateSingular,
	            dd : translate,
	            M : translateSingular,
	            MM : translate,
	            y : translateSingular,
	            yy : translate
	        },
	        ordinalParse: /\d{1,2}-oji/,
	        ordinal : function (number) {
	            return number + '-oji';
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return lt;
	
	}));

/***/ },
/* 272 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : latvian (lv)
	//! author : Kristaps Karlsons : https://github.com/skakri
	//! author : Jānis Elmeris : https://github.com/JanisE
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var units = {
	        'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),
	        'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),
	        'h': 'stundas_stundām_stunda_stundas'.split('_'),
	        'hh': 'stundas_stundām_stunda_stundas'.split('_'),
	        'd': 'dienas_dienām_diena_dienas'.split('_'),
	        'dd': 'dienas_dienām_diena_dienas'.split('_'),
	        'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
	        'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
	        'y': 'gada_gadiem_gads_gadi'.split('_'),
	        'yy': 'gada_gadiem_gads_gadi'.split('_')
	    };
	    /**
	     * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.
	     */
	    function format(forms, number, withoutSuffix) {
	        if (withoutSuffix) {
	            // E.g. "21 minūte", "3 minūtes".
	            return number % 10 === 1 && number !== 11 ? forms[2] : forms[3];
	        } else {
	            // E.g. "21 minūtes" as in "pēc 21 minūtes".
	            // E.g. "3 minūtēm" as in "pēc 3 minūtēm".
	            return number % 10 === 1 && number !== 11 ? forms[0] : forms[1];
	        }
	    }
	    function relativeTimeWithPlural(number, withoutSuffix, key) {
	        return number + ' ' + format(units[key], number, withoutSuffix);
	    }
	    function relativeTimeWithSingular(number, withoutSuffix, key) {
	        return format(units[key], number, withoutSuffix);
	    }
	    function relativeSeconds(number, withoutSuffix) {
	        return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';
	    }
	
	    var lv = moment.defineLocale('lv', {
	        months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),
	        monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
	        weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'),
	        weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'),
	        weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD.MM.YYYY.',
	            LL : 'YYYY. [gada] D. MMMM',
	            LLL : 'YYYY. [gada] D. MMMM, HH:mm',
	            LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm'
	        },
	        calendar : {
	            sameDay : '[Šodien pulksten] LT',
	            nextDay : '[Rīt pulksten] LT',
	            nextWeek : 'dddd [pulksten] LT',
	            lastDay : '[Vakar pulksten] LT',
	            lastWeek : '[Pagājušā] dddd [pulksten] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'pēc %s',
	            past : 'pirms %s',
	            s : relativeSeconds,
	            m : relativeTimeWithSingular,
	            mm : relativeTimeWithPlural,
	            h : relativeTimeWithSingular,
	            hh : relativeTimeWithPlural,
	            d : relativeTimeWithSingular,
	            dd : relativeTimeWithPlural,
	            M : relativeTimeWithSingular,
	            MM : relativeTimeWithPlural,
	            y : relativeTimeWithSingular,
	            yy : relativeTimeWithPlural
	        },
	        ordinalParse: /\d{1,2}\./,
	        ordinal : '%d.',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return lv;
	
	}));

/***/ },
/* 273 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : Montenegrin (me)
	//! author : Miodrag Nikač <miodrag@restartit.me> : https://github.com/miodragnikac
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var translator = {
	        words: { //Different grammatical cases
	            m: ['jedan minut', 'jednog minuta'],
	            mm: ['minut', 'minuta', 'minuta'],
	            h: ['jedan sat', 'jednog sata'],
	            hh: ['sat', 'sata', 'sati'],
	            dd: ['dan', 'dana', 'dana'],
	            MM: ['mjesec', 'mjeseca', 'mjeseci'],
	            yy: ['godina', 'godine', 'godina']
	        },
	        correctGrammaticalCase: function (number, wordKey) {
	            return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
	        },
	        translate: function (number, withoutSuffix, key) {
	            var wordKey = translator.words[key];
	            if (key.length === 1) {
	                return withoutSuffix ? wordKey[0] : wordKey[1];
	            } else {
	                return number + ' ' + translator.correctGrammaticalCase(number, wordKey);
	            }
	        }
	    };
	
	    var me = moment.defineLocale('me', {
	        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),
	        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
	        monthsParseExact : true,
	        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
	        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
	        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat: {
	            LT: 'H:mm',
	            LTS : 'H:mm:ss',
	            L: 'DD. MM. YYYY',
	            LL: 'D. MMMM YYYY',
	            LLL: 'D. MMMM YYYY H:mm',
	            LLLL: 'dddd, D. MMMM YYYY H:mm'
	        },
	        calendar: {
	            sameDay: '[danas u] LT',
	            nextDay: '[sjutra u] LT',
	
	            nextWeek: function () {
	                switch (this.day()) {
	                case 0:
	                    return '[u] [nedjelju] [u] LT';
	                case 3:
	                    return '[u] [srijedu] [u] LT';
	                case 6:
	                    return '[u] [subotu] [u] LT';
	                case 1:
	                case 2:
	                case 4:
	                case 5:
	                    return '[u] dddd [u] LT';
	                }
	            },
	            lastDay  : '[juče u] LT',
	            lastWeek : function () {
	                var lastWeekDays = [
	                    '[prošle] [nedjelje] [u] LT',
	                    '[prošlog] [ponedjeljka] [u] LT',
	                    '[prošlog] [utorka] [u] LT',
	                    '[prošle] [srijede] [u] LT',
	                    '[prošlog] [četvrtka] [u] LT',
	                    '[prošlog] [petka] [u] LT',
	                    '[prošle] [subote] [u] LT'
	                ];
	                return lastWeekDays[this.day()];
	            },
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'za %s',
	            past   : 'prije %s',
	            s      : 'nekoliko sekundi',
	            m      : translator.translate,
	            mm     : translator.translate,
	            h      : translator.translate,
	            hh     : translator.translate,
	            d      : 'dan',
	            dd     : translator.translate,
	            M      : 'mjesec',
	            MM     : translator.translate,
	            y      : 'godinu',
	            yy     : translator.translate
	        },
	        ordinalParse: /\d{1,2}\./,
	        ordinal : '%d.',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 7  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return me;
	
	}));

/***/ },
/* 274 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : macedonian (mk)
	//! author : Borislav Mickov : https://github.com/B0k0
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var mk = moment.defineLocale('mk', {
	        months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),
	        monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
	        weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'),
	        weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
	        weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'),
	        longDateFormat : {
	            LT : 'H:mm',
	            LTS : 'H:mm:ss',
	            L : 'D.MM.YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY H:mm',
	            LLLL : 'dddd, D MMMM YYYY H:mm'
	        },
	        calendar : {
	            sameDay : '[Денес во] LT',
	            nextDay : '[Утре во] LT',
	            nextWeek : '[Во] dddd [во] LT',
	            lastDay : '[Вчера во] LT',
	            lastWeek : function () {
	                switch (this.day()) {
	                case 0:
	                case 3:
	                case 6:
	                    return '[Изминатата] dddd [во] LT';
	                case 1:
	                case 2:
	                case 4:
	                case 5:
	                    return '[Изминатиот] dddd [во] LT';
	                }
	            },
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'после %s',
	            past : 'пред %s',
	            s : 'неколку секунди',
	            m : 'минута',
	            mm : '%d минути',
	            h : 'час',
	            hh : '%d часа',
	            d : 'ден',
	            dd : '%d дена',
	            M : 'месец',
	            MM : '%d месеци',
	            y : 'година',
	            yy : '%d години'
	        },
	        ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
	        ordinal : function (number) {
	            var lastDigit = number % 10,
	                last2Digits = number % 100;
	            if (number === 0) {
	                return number + '-ев';
	            } else if (last2Digits === 0) {
	                return number + '-ен';
	            } else if (last2Digits > 10 && last2Digits < 20) {
	                return number + '-ти';
	            } else if (lastDigit === 1) {
	                return number + '-ви';
	            } else if (lastDigit === 2) {
	                return number + '-ри';
	            } else if (lastDigit === 7 || lastDigit === 8) {
	                return number + '-ми';
	            } else {
	                return number + '-ти';
	            }
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 7  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return mk;
	
	}));

/***/ },
/* 275 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : malayalam (ml)
	//! author : Floyd Pink : https://github.com/floydpink
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var ml = moment.defineLocale('ml', {
	        months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),
	        monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),
	        monthsParseExact : true,
	        weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),
	        weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
	        weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
	        longDateFormat : {
	            LT : 'A h:mm -നു',
	            LTS : 'A h:mm:ss -നു',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY, A h:mm -നു',
	            LLLL : 'dddd, D MMMM YYYY, A h:mm -നു'
	        },
	        calendar : {
	            sameDay : '[ഇന്ന്] LT',
	            nextDay : '[നാളെ] LT',
	            nextWeek : 'dddd, LT',
	            lastDay : '[ഇന്നലെ] LT',
	            lastWeek : '[കഴിഞ്ഞ] dddd, LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : '%s കഴിഞ്ഞ്',
	            past : '%s മുൻപ്',
	            s : 'അൽപ നിമിഷങ്ങൾ',
	            m : 'ഒരു മിനിറ്റ്',
	            mm : '%d മിനിറ്റ്',
	            h : 'ഒരു മണിക്കൂർ',
	            hh : '%d മണിക്കൂർ',
	            d : 'ഒരു ദിവസം',
	            dd : '%d ദിവസം',
	            M : 'ഒരു മാസം',
	            MM : '%d മാസം',
	            y : 'ഒരു വർഷം',
	            yy : '%d വർഷം'
	        },
	        meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,
	        meridiemHour : function (hour, meridiem) {
	            if (hour === 12) {
	                hour = 0;
	            }
	            if ((meridiem === 'രാത്രി' && hour >= 4) ||
	                    meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||
	                    meridiem === 'വൈകുന്നേരം') {
	                return hour + 12;
	            } else {
	                return hour;
	            }
	        },
	        meridiem : function (hour, minute, isLower) {
	            if (hour < 4) {
	                return 'രാത്രി';
	            } else if (hour < 12) {
	                return 'രാവിലെ';
	            } else if (hour < 17) {
	                return 'ഉച്ച കഴിഞ്ഞ്';
	            } else if (hour < 20) {
	                return 'വൈകുന്നേരം';
	            } else {
	                return 'രാത്രി';
	            }
	        }
	    });
	
	    return ml;
	
	}));

/***/ },
/* 276 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : Marathi (mr)
	//! author : Harshad Kale : https://github.com/kalehv
	//! author : Vivek Athalye : https://github.com/vnathalye
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var symbolMap = {
	        '1': '१',
	        '2': '२',
	        '3': '३',
	        '4': '४',
	        '5': '५',
	        '6': '६',
	        '7': '७',
	        '8': '८',
	        '9': '९',
	        '0': '०'
	    },
	    numberMap = {
	        '१': '1',
	        '२': '2',
	        '३': '3',
	        '४': '4',
	        '५': '5',
	        '६': '6',
	        '७': '7',
	        '८': '8',
	        '९': '9',
	        '०': '0'
	    };
	
	    function relativeTimeMr(number, withoutSuffix, string, isFuture)
	    {
	        var output = '';
	        if (withoutSuffix) {
	            switch (string) {
	                case 's': output = 'काही सेकंद'; break;
	                case 'm': output = 'एक मिनिट'; break;
	                case 'mm': output = '%d मिनिटे'; break;
	                case 'h': output = 'एक तास'; break;
	                case 'hh': output = '%d तास'; break;
	                case 'd': output = 'एक दिवस'; break;
	                case 'dd': output = '%d दिवस'; break;
	                case 'M': output = 'एक महिना'; break;
	                case 'MM': output = '%d महिने'; break;
	                case 'y': output = 'एक वर्ष'; break;
	                case 'yy': output = '%d वर्षे'; break;
	            }
	        }
	        else {
	            switch (string) {
	                case 's': output = 'काही सेकंदां'; break;
	                case 'm': output = 'एका मिनिटा'; break;
	                case 'mm': output = '%d मिनिटां'; break;
	                case 'h': output = 'एका तासा'; break;
	                case 'hh': output = '%d तासां'; break;
	                case 'd': output = 'एका दिवसा'; break;
	                case 'dd': output = '%d दिवसां'; break;
	                case 'M': output = 'एका महिन्या'; break;
	                case 'MM': output = '%d महिन्यां'; break;
	                case 'y': output = 'एका वर्षा'; break;
	                case 'yy': output = '%d वर्षां'; break;
	            }
	        }
	        return output.replace(/%d/i, number);
	    }
	
	    var mr = moment.defineLocale('mr', {
	        months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),
	        monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),
	        monthsParseExact : true,
	        weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
	        weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
	        weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),
	        longDateFormat : {
	            LT : 'A h:mm वाजता',
	            LTS : 'A h:mm:ss वाजता',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY, A h:mm वाजता',
	            LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता'
	        },
	        calendar : {
	            sameDay : '[आज] LT',
	            nextDay : '[उद्या] LT',
	            nextWeek : 'dddd, LT',
	            lastDay : '[काल] LT',
	            lastWeek: '[मागील] dddd, LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future: '%sमध्ये',
	            past: '%sपूर्वी',
	            s: relativeTimeMr,
	            m: relativeTimeMr,
	            mm: relativeTimeMr,
	            h: relativeTimeMr,
	            hh: relativeTimeMr,
	            d: relativeTimeMr,
	            dd: relativeTimeMr,
	            M: relativeTimeMr,
	            MM: relativeTimeMr,
	            y: relativeTimeMr,
	            yy: relativeTimeMr
	        },
	        preparse: function (string) {
	            return string.replace(/[१२३४५६७८९०]/g, function (match) {
	                return numberMap[match];
	            });
	        },
	        postformat: function (string) {
	            return string.replace(/\d/g, function (match) {
	                return symbolMap[match];
	            });
	        },
	        meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/,
	        meridiemHour : function (hour, meridiem) {
	            if (hour === 12) {
	                hour = 0;
	            }
	            if (meridiem === 'रात्री') {
	                return hour < 4 ? hour : hour + 12;
	            } else if (meridiem === 'सकाळी') {
	                return hour;
	            } else if (meridiem === 'दुपारी') {
	                return hour >= 10 ? hour : hour + 12;
	            } else if (meridiem === 'सायंकाळी') {
	                return hour + 12;
	            }
	        },
	        meridiem: function (hour, minute, isLower) {
	            if (hour < 4) {
	                return 'रात्री';
	            } else if (hour < 10) {
	                return 'सकाळी';
	            } else if (hour < 17) {
	                return 'दुपारी';
	            } else if (hour < 20) {
	                return 'सायंकाळी';
	            } else {
	                return 'रात्री';
	            }
	        },
	        week : {
	            dow : 0, // Sunday is the first day of the week.
	            doy : 6  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return mr;
	
	}));

/***/ },
/* 277 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : Bahasa Malaysia (ms-MY)
	//! author : Weldan Jamili : https://github.com/weldan
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var ms_my = moment.defineLocale('ms-my', {
	        months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),
	        monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
	        weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
	        weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
	        weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
	        longDateFormat : {
	            LT : 'HH.mm',
	            LTS : 'HH.mm.ss',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY [pukul] HH.mm',
	            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
	        },
	        meridiemParse: /pagi|tengahari|petang|malam/,
	        meridiemHour: function (hour, meridiem) {
	            if (hour === 12) {
	                hour = 0;
	            }
	            if (meridiem === 'pagi') {
	                return hour;
	            } else if (meridiem === 'tengahari') {
	                return hour >= 11 ? hour : hour + 12;
	            } else if (meridiem === 'petang' || meridiem === 'malam') {
	                return hour + 12;
	            }
	        },
	        meridiem : function (hours, minutes, isLower) {
	            if (hours < 11) {
	                return 'pagi';
	            } else if (hours < 15) {
	                return 'tengahari';
	            } else if (hours < 19) {
	                return 'petang';
	            } else {
	                return 'malam';
	            }
	        },
	        calendar : {
	            sameDay : '[Hari ini pukul] LT',
	            nextDay : '[Esok pukul] LT',
	            nextWeek : 'dddd [pukul] LT',
	            lastDay : '[Kelmarin pukul] LT',
	            lastWeek : 'dddd [lepas pukul] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'dalam %s',
	            past : '%s yang lepas',
	            s : 'beberapa saat',
	            m : 'seminit',
	            mm : '%d minit',
	            h : 'sejam',
	            hh : '%d jam',
	            d : 'sehari',
	            dd : '%d hari',
	            M : 'sebulan',
	            MM : '%d bulan',
	            y : 'setahun',
	            yy : '%d tahun'
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 7  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return ms_my;
	
	}));

/***/ },
/* 278 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : Bahasa Malaysia (ms-MY)
	//! author : Weldan Jamili : https://github.com/weldan
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var ms = moment.defineLocale('ms', {
	        months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),
	        monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
	        weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
	        weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
	        weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
	        longDateFormat : {
	            LT : 'HH.mm',
	            LTS : 'HH.mm.ss',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY [pukul] HH.mm',
	            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
	        },
	        meridiemParse: /pagi|tengahari|petang|malam/,
	        meridiemHour: function (hour, meridiem) {
	            if (hour === 12) {
	                hour = 0;
	            }
	            if (meridiem === 'pagi') {
	                return hour;
	            } else if (meridiem === 'tengahari') {
	                return hour >= 11 ? hour : hour + 12;
	            } else if (meridiem === 'petang' || meridiem === 'malam') {
	                return hour + 12;
	            }
	        },
	        meridiem : function (hours, minutes, isLower) {
	            if (hours < 11) {
	                return 'pagi';
	            } else if (hours < 15) {
	                return 'tengahari';
	            } else if (hours < 19) {
	                return 'petang';
	            } else {
	                return 'malam';
	            }
	        },
	        calendar : {
	            sameDay : '[Hari ini pukul] LT',
	            nextDay : '[Esok pukul] LT',
	            nextWeek : 'dddd [pukul] LT',
	            lastDay : '[Kelmarin pukul] LT',
	            lastWeek : 'dddd [lepas pukul] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'dalam %s',
	            past : '%s yang lepas',
	            s : 'beberapa saat',
	            m : 'seminit',
	            mm : '%d minit',
	            h : 'sejam',
	            hh : '%d jam',
	            d : 'sehari',
	            dd : '%d hari',
	            M : 'sebulan',
	            MM : '%d bulan',
	            y : 'setahun',
	            yy : '%d tahun'
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 7  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return ms;
	
	}));

/***/ },
/* 279 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : Burmese (my)
	//! author : Squar team, mysquar.com
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var symbolMap = {
	        '1': '၁',
	        '2': '၂',
	        '3': '၃',
	        '4': '၄',
	        '5': '၅',
	        '6': '၆',
	        '7': '၇',
	        '8': '၈',
	        '9': '၉',
	        '0': '၀'
	    }, numberMap = {
	        '၁': '1',
	        '၂': '2',
	        '၃': '3',
	        '၄': '4',
	        '၅': '5',
	        '၆': '6',
	        '၇': '7',
	        '၈': '8',
	        '၉': '9',
	        '၀': '0'
	    };
	
	    var my = moment.defineLocale('my', {
	        months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'),
	        monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),
	        weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'),
	        weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
	        weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
	
	        longDateFormat: {
	            LT: 'HH:mm',
	            LTS: 'HH:mm:ss',
	            L: 'DD/MM/YYYY',
	            LL: 'D MMMM YYYY',
	            LLL: 'D MMMM YYYY HH:mm',
	            LLLL: 'dddd D MMMM YYYY HH:mm'
	        },
	        calendar: {
	            sameDay: '[ယနေ.] LT [မှာ]',
	            nextDay: '[မနက်ဖြန်] LT [မှာ]',
	            nextWeek: 'dddd LT [မှာ]',
	            lastDay: '[မနေ.က] LT [မှာ]',
	            lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',
	            sameElse: 'L'
	        },
	        relativeTime: {
	            future: 'လာမည့် %s မှာ',
	            past: 'လွန်ခဲ့သော %s က',
	            s: 'စက္ကန်.အနည်းငယ်',
	            m: 'တစ်မိနစ်',
	            mm: '%d မိနစ်',
	            h: 'တစ်နာရီ',
	            hh: '%d နာရီ',
	            d: 'တစ်ရက်',
	            dd: '%d ရက်',
	            M: 'တစ်လ',
	            MM: '%d လ',
	            y: 'တစ်နှစ်',
	            yy: '%d နှစ်'
	        },
	        preparse: function (string) {
	            return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {
	                return numberMap[match];
	            });
	        },
	        postformat: function (string) {
	            return string.replace(/\d/g, function (match) {
	                return symbolMap[match];
	            });
	        },
	        week: {
	            dow: 1, // Monday is the first day of the week.
	            doy: 4 // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return my;
	
	}));

/***/ },
/* 280 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : norwegian bokmål (nb)
	//! authors : Espen Hovlandsdal : https://github.com/rexxars
	//!           Sigurd Gartmann : https://github.com/sigurdga
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var nb = moment.defineLocale('nb', {
	        months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
	        monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
	        monthsParseExact : true,
	        weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
	        weekdaysShort : 'sø._ma._ti._on._to._fr._lø.'.split('_'),
	        weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD.MM.YYYY',
	            LL : 'D. MMMM YYYY',
	            LLL : 'D. MMMM YYYY [kl.] HH:mm',
	            LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'
	        },
	        calendar : {
	            sameDay: '[i dag kl.] LT',
	            nextDay: '[i morgen kl.] LT',
	            nextWeek: 'dddd [kl.] LT',
	            lastDay: '[i går kl.] LT',
	            lastWeek: '[forrige] dddd [kl.] LT',
	            sameElse: 'L'
	        },
	        relativeTime : {
	            future : 'om %s',
	            past : '%s siden',
	            s : 'noen sekunder',
	            m : 'ett minutt',
	            mm : '%d minutter',
	            h : 'en time',
	            hh : '%d timer',
	            d : 'en dag',
	            dd : '%d dager',
	            M : 'en måned',
	            MM : '%d måneder',
	            y : 'ett år',
	            yy : '%d år'
	        },
	        ordinalParse: /\d{1,2}\./,
	        ordinal : '%d.',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return nb;
	
	}));

/***/ },
/* 281 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : nepali/nepalese
	//! author : suvash : https://github.com/suvash
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var symbolMap = {
	        '1': '१',
	        '2': '२',
	        '3': '३',
	        '4': '४',
	        '5': '५',
	        '6': '६',
	        '7': '७',
	        '8': '८',
	        '9': '९',
	        '0': '०'
	    },
	    numberMap = {
	        '१': '1',
	        '२': '2',
	        '३': '3',
	        '४': '4',
	        '५': '5',
	        '६': '6',
	        '७': '7',
	        '८': '8',
	        '९': '9',
	        '०': '0'
	    };
	
	    var ne = moment.defineLocale('ne', {
	        months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'),
	        monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'),
	        monthsParseExact : true,
	        weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'),
	        weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),
	        weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT : 'Aको h:mm बजे',
	            LTS : 'Aको h:mm:ss बजे',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY, Aको h:mm बजे',
	            LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे'
	        },
	        preparse: function (string) {
	            return string.replace(/[१२३४५६७८९०]/g, function (match) {
	                return numberMap[match];
	            });
	        },
	        postformat: function (string) {
	            return string.replace(/\d/g, function (match) {
	                return symbolMap[match];
	            });
	        },
	        meridiemParse: /राति|बिहान|दिउँसो|साँझ/,
	        meridiemHour : function (hour, meridiem) {
	            if (hour === 12) {
	                hour = 0;
	            }
	            if (meridiem === 'राति') {
	                return hour < 4 ? hour : hour + 12;
	            } else if (meridiem === 'बिहान') {
	                return hour;
	            } else if (meridiem === 'दिउँसो') {
	                return hour >= 10 ? hour : hour + 12;
	            } else if (meridiem === 'साँझ') {
	                return hour + 12;
	            }
	        },
	        meridiem : function (hour, minute, isLower) {
	            if (hour < 3) {
	                return 'राति';
	            } else if (hour < 12) {
	                return 'बिहान';
	            } else if (hour < 16) {
	                return 'दिउँसो';
	            } else if (hour < 20) {
	                return 'साँझ';
	            } else {
	                return 'राति';
	            }
	        },
	        calendar : {
	            sameDay : '[आज] LT',
	            nextDay : '[भोलि] LT',
	            nextWeek : '[आउँदो] dddd[,] LT',
	            lastDay : '[हिजो] LT',
	            lastWeek : '[गएको] dddd[,] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : '%sमा',
	            past : '%s अगाडि',
	            s : 'केही क्षण',
	            m : 'एक मिनेट',
	            mm : '%d मिनेट',
	            h : 'एक घण्टा',
	            hh : '%d घण्टा',
	            d : 'एक दिन',
	            dd : '%d दिन',
	            M : 'एक महिना',
	            MM : '%d महिना',
	            y : 'एक बर्ष',
	            yy : '%d बर्ष'
	        },
	        week : {
	            dow : 0, // Sunday is the first day of the week.
	            doy : 6  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return ne;
	
	}));

/***/ },
/* 282 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : dutch (nl)
	//! author : Joris Röling : https://github.com/jjupiter
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
	        monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');
	
	    var nl = moment.defineLocale('nl', {
	        months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),
	        monthsShort : function (m, format) {
	            if (/-MMM-/.test(format)) {
	                return monthsShortWithoutDots[m.month()];
	            } else {
	                return monthsShortWithDots[m.month()];
	            }
	        },
	        monthsParseExact : true,
	        weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
	        weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),
	        weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD-MM-YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY HH:mm',
	            LLLL : 'dddd D MMMM YYYY HH:mm'
	        },
	        calendar : {
	            sameDay: '[vandaag om] LT',
	            nextDay: '[morgen om] LT',
	            nextWeek: 'dddd [om] LT',
	            lastDay: '[gisteren om] LT',
	            lastWeek: '[afgelopen] dddd [om] LT',
	            sameElse: 'L'
	        },
	        relativeTime : {
	            future : 'over %s',
	            past : '%s geleden',
	            s : 'een paar seconden',
	            m : 'één minuut',
	            mm : '%d minuten',
	            h : 'één uur',
	            hh : '%d uur',
	            d : 'één dag',
	            dd : '%d dagen',
	            M : 'één maand',
	            MM : '%d maanden',
	            y : 'één jaar',
	            yy : '%d jaar'
	        },
	        ordinalParse: /\d{1,2}(ste|de)/,
	        ordinal : function (number) {
	            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return nl;
	
	}));

/***/ },
/* 283 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : norwegian nynorsk (nn)
	//! author : https://github.com/mechuwind
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var nn = moment.defineLocale('nn', {
	        months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
	        monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
	        weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),
	        weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'),
	        weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'),
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD.MM.YYYY',
	            LL : 'D. MMMM YYYY',
	            LLL : 'D. MMMM YYYY [kl.] H:mm',
	            LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'
	        },
	        calendar : {
	            sameDay: '[I dag klokka] LT',
	            nextDay: '[I morgon klokka] LT',
	            nextWeek: 'dddd [klokka] LT',
	            lastDay: '[I går klokka] LT',
	            lastWeek: '[Føregåande] dddd [klokka] LT',
	            sameElse: 'L'
	        },
	        relativeTime : {
	            future : 'om %s',
	            past : '%s sidan',
	            s : 'nokre sekund',
	            m : 'eit minutt',
	            mm : '%d minutt',
	            h : 'ein time',
	            hh : '%d timar',
	            d : 'ein dag',
	            dd : '%d dagar',
	            M : 'ein månad',
	            MM : '%d månader',
	            y : 'eit år',
	            yy : '%d år'
	        },
	        ordinalParse: /\d{1,2}\./,
	        ordinal : '%d.',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return nn;
	
	}));

/***/ },
/* 284 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : punjabi india (pa-in)
	//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var symbolMap = {
	        '1': '੧',
	        '2': '੨',
	        '3': '੩',
	        '4': '੪',
	        '5': '੫',
	        '6': '੬',
	        '7': '੭',
	        '8': '੮',
	        '9': '੯',
	        '0': '੦'
	    },
	    numberMap = {
	        '੧': '1',
	        '੨': '2',
	        '੩': '3',
	        '੪': '4',
	        '੫': '5',
	        '੬': '6',
	        '੭': '7',
	        '੮': '8',
	        '੯': '9',
	        '੦': '0'
	    };
	
	    var pa_in = moment.defineLocale('pa-in', {
	        // There are months name as per Nanakshahi Calender but they are not used as rigidly in modern Punjabi.
	        months : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),
	        monthsShort : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),
	        weekdays : 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'),
	        weekdaysShort : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
	        weekdaysMin : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
	        longDateFormat : {
	            LT : 'A h:mm ਵਜੇ',
	            LTS : 'A h:mm:ss ਵਜੇ',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY, A h:mm ਵਜੇ',
	            LLLL : 'dddd, D MMMM YYYY, A h:mm ਵਜੇ'
	        },
	        calendar : {
	            sameDay : '[ਅਜ] LT',
	            nextDay : '[ਕਲ] LT',
	            nextWeek : 'dddd, LT',
	            lastDay : '[ਕਲ] LT',
	            lastWeek : '[ਪਿਛਲੇ] dddd, LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : '%s ਵਿੱਚ',
	            past : '%s ਪਿਛਲੇ',
	            s : 'ਕੁਝ ਸਕਿੰਟ',
	            m : 'ਇਕ ਮਿੰਟ',
	            mm : '%d ਮਿੰਟ',
	            h : 'ਇੱਕ ਘੰਟਾ',
	            hh : '%d ਘੰਟੇ',
	            d : 'ਇੱਕ ਦਿਨ',
	            dd : '%d ਦਿਨ',
	            M : 'ਇੱਕ ਮਹੀਨਾ',
	            MM : '%d ਮਹੀਨੇ',
	            y : 'ਇੱਕ ਸਾਲ',
	            yy : '%d ਸਾਲ'
	        },
	        preparse: function (string) {
	            return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {
	                return numberMap[match];
	            });
	        },
	        postformat: function (string) {
	            return string.replace(/\d/g, function (match) {
	                return symbolMap[match];
	            });
	        },
	        // Punjabi notation for meridiems are quite fuzzy in practice. While there exists
	        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.
	        meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,
	        meridiemHour : function (hour, meridiem) {
	            if (hour === 12) {
	                hour = 0;
	            }
	            if (meridiem === 'ਰਾਤ') {
	                return hour < 4 ? hour : hour + 12;
	            } else if (meridiem === 'ਸਵੇਰ') {
	                return hour;
	            } else if (meridiem === 'ਦੁਪਹਿਰ') {
	                return hour >= 10 ? hour : hour + 12;
	            } else if (meridiem === 'ਸ਼ਾਮ') {
	                return hour + 12;
	            }
	        },
	        meridiem : function (hour, minute, isLower) {
	            if (hour < 4) {
	                return 'ਰਾਤ';
	            } else if (hour < 10) {
	                return 'ਸਵੇਰ';
	            } else if (hour < 17) {
	                return 'ਦੁਪਹਿਰ';
	            } else if (hour < 20) {
	                return 'ਸ਼ਾਮ';
	            } else {
	                return 'ਰਾਤ';
	            }
	        },
	        week : {
	            dow : 0, // Sunday is the first day of the week.
	            doy : 6  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return pa_in;
	
	}));

/***/ },
/* 285 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : polish (pl)
	//! author : Rafal Hirsz : https://github.com/evoL
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'),
	        monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');
	    function plural(n) {
	        return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1);
	    }
	    function translate(number, withoutSuffix, key) {
	        var result = number + ' ';
	        switch (key) {
	        case 'm':
	            return withoutSuffix ? 'minuta' : 'minutę';
	        case 'mm':
	            return result + (plural(number) ? 'minuty' : 'minut');
	        case 'h':
	            return withoutSuffix  ? 'godzina'  : 'godzinę';
	        case 'hh':
	            return result + (plural(number) ? 'godziny' : 'godzin');
	        case 'MM':
	            return result + (plural(number) ? 'miesiące' : 'miesięcy');
	        case 'yy':
	            return result + (plural(number) ? 'lata' : 'lat');
	        }
	    }
	
	    var pl = moment.defineLocale('pl', {
	        months : function (momentToFormat, format) {
	            if (format === '') {
	                // Hack: if format empty we know this is used to generate
	                // RegExp by moment. Give then back both valid forms of months
	                // in RegExp ready format.
	                return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')';
	            } else if (/D MMMM/.test(format)) {
	                return monthsSubjective[momentToFormat.month()];
	            } else {
	                return monthsNominative[momentToFormat.month()];
	            }
	        },
	        monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
	        weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),
	        weekdaysShort : 'nie_pon_wt_śr_czw_pt_sb'.split('_'),
	        weekdaysMin : 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD.MM.YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY HH:mm',
	            LLLL : 'dddd, D MMMM YYYY HH:mm'
	        },
	        calendar : {
	            sameDay: '[Dziś o] LT',
	            nextDay: '[Jutro o] LT',
	            nextWeek: '[W] dddd [o] LT',
	            lastDay: '[Wczoraj o] LT',
	            lastWeek: function () {
	                switch (this.day()) {
	                case 0:
	                    return '[W zeszłą niedzielę o] LT';
	                case 3:
	                    return '[W zeszłą środę o] LT';
	                case 6:
	                    return '[W zeszłą sobotę o] LT';
	                default:
	                    return '[W zeszły] dddd [o] LT';
	                }
	            },
	            sameElse: 'L'
	        },
	        relativeTime : {
	            future : 'za %s',
	            past : '%s temu',
	            s : 'kilka sekund',
	            m : translate,
	            mm : translate,
	            h : translate,
	            hh : translate,
	            d : '1 dzień',
	            dd : '%d dni',
	            M : 'miesiąc',
	            MM : translate,
	            y : 'rok',
	            yy : translate
	        },
	        ordinalParse: /\d{1,2}\./,
	        ordinal : '%d.',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return pl;
	
	}));

/***/ },
/* 286 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : brazilian portuguese (pt-br)
	//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var pt_br = moment.defineLocale('pt-br', {
	        months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),
	        monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
	        weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),
	        weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
	        weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD/MM/YYYY',
	            LL : 'D [de] MMMM [de] YYYY',
	            LLL : 'D [de] MMMM [de] YYYY [às] HH:mm',
	            LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'
	        },
	        calendar : {
	            sameDay: '[Hoje às] LT',
	            nextDay: '[Amanhã às] LT',
	            nextWeek: 'dddd [às] LT',
	            lastDay: '[Ontem às] LT',
	            lastWeek: function () {
	                return (this.day() === 0 || this.day() === 6) ?
	                    '[Último] dddd [às] LT' : // Saturday + Sunday
	                    '[Última] dddd [às] LT'; // Monday - Friday
	            },
	            sameElse: 'L'
	        },
	        relativeTime : {
	            future : 'em %s',
	            past : '%s atrás',
	            s : 'poucos segundos',
	            m : 'um minuto',
	            mm : '%d minutos',
	            h : 'uma hora',
	            hh : '%d horas',
	            d : 'um dia',
	            dd : '%d dias',
	            M : 'um mês',
	            MM : '%d meses',
	            y : 'um ano',
	            yy : '%d anos'
	        },
	        ordinalParse: /\d{1,2}º/,
	        ordinal : '%dº'
	    });
	
	    return pt_br;
	
	}));

/***/ },
/* 287 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : portuguese (pt)
	//! author : Jefferson : https://github.com/jalex79
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var pt = moment.defineLocale('pt', {
	        months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),
	        monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
	        weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'),
	        weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
	        weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD/MM/YYYY',
	            LL : 'D [de] MMMM [de] YYYY',
	            LLL : 'D [de] MMMM [de] YYYY HH:mm',
	            LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm'
	        },
	        calendar : {
	            sameDay: '[Hoje às] LT',
	            nextDay: '[Amanhã às] LT',
	            nextWeek: 'dddd [às] LT',
	            lastDay: '[Ontem às] LT',
	            lastWeek: function () {
	                return (this.day() === 0 || this.day() === 6) ?
	                    '[Último] dddd [às] LT' : // Saturday + Sunday
	                    '[Última] dddd [às] LT'; // Monday - Friday
	            },
	            sameElse: 'L'
	        },
	        relativeTime : {
	            future : 'em %s',
	            past : 'há %s',
	            s : 'segundos',
	            m : 'um minuto',
	            mm : '%d minutos',
	            h : 'uma hora',
	            hh : '%d horas',
	            d : 'um dia',
	            dd : '%d dias',
	            M : 'um mês',
	            MM : '%d meses',
	            y : 'um ano',
	            yy : '%d anos'
	        },
	        ordinalParse: /\d{1,2}º/,
	        ordinal : '%dº',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return pt;
	
	}));

/***/ },
/* 288 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : romanian (ro)
	//! author : Vlad Gurdiga : https://github.com/gurdiga
	//! author : Valentin Agachi : https://github.com/avaly
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    function relativeTimeWithPlural(number, withoutSuffix, key) {
	        var format = {
	                'mm': 'minute',
	                'hh': 'ore',
	                'dd': 'zile',
	                'MM': 'luni',
	                'yy': 'ani'
	            },
	            separator = ' ';
	        if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
	            separator = ' de ';
	        }
	        return number + separator + format[key];
	    }
	
	    var ro = moment.defineLocale('ro', {
	        months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),
	        monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),
	        monthsParseExact: true,
	        weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
	        weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
	        weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
	        longDateFormat : {
	            LT : 'H:mm',
	            LTS : 'H:mm:ss',
	            L : 'DD.MM.YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY H:mm',
	            LLLL : 'dddd, D MMMM YYYY H:mm'
	        },
	        calendar : {
	            sameDay: '[azi la] LT',
	            nextDay: '[mâine la] LT',
	            nextWeek: 'dddd [la] LT',
	            lastDay: '[ieri la] LT',
	            lastWeek: '[fosta] dddd [la] LT',
	            sameElse: 'L'
	        },
	        relativeTime : {
	            future : 'peste %s',
	            past : '%s în urmă',
	            s : 'câteva secunde',
	            m : 'un minut',
	            mm : relativeTimeWithPlural,
	            h : 'o oră',
	            hh : relativeTimeWithPlural,
	            d : 'o zi',
	            dd : relativeTimeWithPlural,
	            M : 'o lună',
	            MM : relativeTimeWithPlural,
	            y : 'un an',
	            yy : relativeTimeWithPlural
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 7  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return ro;
	
	}));

/***/ },
/* 289 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : russian (ru)
	//! author : Viktorminator : https://github.com/Viktorminator
	//! Author : Menelion Elensúle : https://github.com/Oire
	//! author : Коренберг Марк : https://github.com/socketpair
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    function plural(word, num) {
	        var forms = word.split('_');
	        return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
	    }
	    function relativeTimeWithPlural(number, withoutSuffix, key) {
	        var format = {
	            'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
	            'hh': 'час_часа_часов',
	            'dd': 'день_дня_дней',
	            'MM': 'месяц_месяца_месяцев',
	            'yy': 'год_года_лет'
	        };
	        if (key === 'm') {
	            return withoutSuffix ? 'минута' : 'минуту';
	        }
	        else {
	            return number + ' ' + plural(format[key], +number);
	        }
	    }
	    var monthsParse = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i];
	
	    // http://new.gramota.ru/spravka/rules/139-prop : § 103
	    // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637
	    // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753
	    var ru = moment.defineLocale('ru', {
	        months : {
	            format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),
	            standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')
	        },
	        monthsShort : {
	            // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку ?
	            format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),
	            standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')
	        },
	        weekdays : {
	            standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),
	            format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'),
	            isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/
	        },
	        weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
	        weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
	        monthsParse : monthsParse,
	        longMonthsParse : monthsParse,
	        shortMonthsParse : monthsParse,
	        monthsRegex: /^(сентябр[яь]|октябр[яь]|декабр[яь]|феврал[яь]|январ[яь]|апрел[яь]|августа?|ноябр[яь]|сент\.|февр\.|нояб\.|июнь|янв.|июль|дек.|авг.|апр.|марта|мар[.т]|окт.|июн[яь]|июл[яь]|ма[яй])/i,
	        monthsShortRegex: /^(сентябр[яь]|октябр[яь]|декабр[яь]|феврал[яь]|январ[яь]|апрел[яь]|августа?|ноябр[яь]|сент\.|февр\.|нояб\.|июнь|янв.|июль|дек.|авг.|апр.|марта|мар[.т]|окт.|июн[яь]|июл[яь]|ма[яй])/i,
	        monthsStrictRegex: /^(сентябр[яь]|октябр[яь]|декабр[яь]|феврал[яь]|январ[яь]|апрел[яь]|августа?|ноябр[яь]|марта?|июн[яь]|июл[яь]|ма[яй])/i,
	        monthsShortStrictRegex: /^(нояб\.|февр\.|сент\.|июль|янв\.|июн[яь]|мар[.т]|авг\.|апр\.|окт\.|дек\.|ма[яй])/i,
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD.MM.YYYY',
	            LL : 'D MMMM YYYY г.',
	            LLL : 'D MMMM YYYY г., HH:mm',
	            LLLL : 'dddd, D MMMM YYYY г., HH:mm'
	        },
	        calendar : {
	            sameDay: '[Сегодня в] LT',
	            nextDay: '[Завтра в] LT',
	            lastDay: '[Вчера в] LT',
	            nextWeek: function (now) {
	                if (now.week() !== this.week()) {
	                    switch (this.day()) {
	                    case 0:
	                        return '[В следующее] dddd [в] LT';
	                    case 1:
	                    case 2:
	                    case 4:
	                        return '[В следующий] dddd [в] LT';
	                    case 3:
	                    case 5:
	                    case 6:
	                        return '[В следующую] dddd [в] LT';
	                    }
	                } else {
	                    if (this.day() === 2) {
	                        return '[Во] dddd [в] LT';
	                    } else {
	                        return '[В] dddd [в] LT';
	                    }
	                }
	            },
	            lastWeek: function (now) {
	                if (now.week() !== this.week()) {
	                    switch (this.day()) {
	                    case 0:
	                        return '[В прошлое] dddd [в] LT';
	                    case 1:
	                    case 2:
	                    case 4:
	                        return '[В прошлый] dddd [в] LT';
	                    case 3:
	                    case 5:
	                    case 6:
	                        return '[В прошлую] dddd [в] LT';
	                    }
	                } else {
	                    if (this.day() === 2) {
	                        return '[Во] dddd [в] LT';
	                    } else {
	                        return '[В] dddd [в] LT';
	                    }
	                }
	            },
	            sameElse: 'L'
	        },
	        relativeTime : {
	            future : 'через %s',
	            past : '%s назад',
	            s : 'несколько секунд',
	            m : relativeTimeWithPlural,
	            mm : relativeTimeWithPlural,
	            h : 'час',
	            hh : relativeTimeWithPlural,
	            d : 'день',
	            dd : relativeTimeWithPlural,
	            M : 'месяц',
	            MM : relativeTimeWithPlural,
	            y : 'год',
	            yy : relativeTimeWithPlural
	        },
	        meridiemParse: /ночи|утра|дня|вечера/i,
	        isPM : function (input) {
	            return /^(дня|вечера)$/.test(input);
	        },
	        meridiem : function (hour, minute, isLower) {
	            if (hour < 4) {
	                return 'ночи';
	            } else if (hour < 12) {
	                return 'утра';
	            } else if (hour < 17) {
	                return 'дня';
	            } else {
	                return 'вечера';
	            }
	        },
	        ordinalParse: /\d{1,2}-(й|го|я)/,
	        ordinal: function (number, period) {
	            switch (period) {
	            case 'M':
	            case 'd':
	            case 'DDD':
	                return number + '-й';
	            case 'D':
	                return number + '-го';
	            case 'w':
	            case 'W':
	                return number + '-я';
	            default:
	                return number;
	            }
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 7  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return ru;
	
	}));

/***/ },
/* 290 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : Northern Sami (se)
	//! authors : Bård Rolstad Henriksen : https://github.com/karamell
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	
	    var se = moment.defineLocale('se', {
	        months : 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'),
	        monthsShort : 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),
	        weekdays : 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),
	        weekdaysShort : 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),
	        weekdaysMin : 's_v_m_g_d_b_L'.split('_'),
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD.MM.YYYY',
	            LL : 'MMMM D. [b.] YYYY',
	            LLL : 'MMMM D. [b.] YYYY [ti.] HH:mm',
	            LLLL : 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'
	        },
	        calendar : {
	            sameDay: '[otne ti] LT',
	            nextDay: '[ihttin ti] LT',
	            nextWeek: 'dddd [ti] LT',
	            lastDay: '[ikte ti] LT',
	            lastWeek: '[ovddit] dddd [ti] LT',
	            sameElse: 'L'
	        },
	        relativeTime : {
	            future : '%s geažes',
	            past : 'maŋit %s',
	            s : 'moadde sekunddat',
	            m : 'okta minuhta',
	            mm : '%d minuhtat',
	            h : 'okta diimmu',
	            hh : '%d diimmut',
	            d : 'okta beaivi',
	            dd : '%d beaivvit',
	            M : 'okta mánnu',
	            MM : '%d mánut',
	            y : 'okta jahki',
	            yy : '%d jagit'
	        },
	        ordinalParse: /\d{1,2}\./,
	        ordinal : '%d.',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return se;
	
	}));

/***/ },
/* 291 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : Sinhalese (si)
	//! author : Sampath Sitinamaluwa : https://github.com/sampathsris
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    /*jshint -W100*/
	    var si = moment.defineLocale('si', {
	        months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'),
	        monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'),
	        weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'),
	        weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),
	        weekdaysMin : 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT : 'a h:mm',
	            LTS : 'a h:mm:ss',
	            L : 'YYYY/MM/DD',
	            LL : 'YYYY MMMM D',
	            LLL : 'YYYY MMMM D, a h:mm',
	            LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss'
	        },
	        calendar : {
	            sameDay : '[අද] LT[ට]',
	            nextDay : '[හෙට] LT[ට]',
	            nextWeek : 'dddd LT[ට]',
	            lastDay : '[ඊයේ] LT[ට]',
	            lastWeek : '[පසුගිය] dddd LT[ට]',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : '%sකින්',
	            past : '%sකට පෙර',
	            s : 'තත්පර කිහිපය',
	            m : 'මිනිත්තුව',
	            mm : 'මිනිත්තු %d',
	            h : 'පැය',
	            hh : 'පැය %d',
	            d : 'දිනය',
	            dd : 'දින %d',
	            M : 'මාසය',
	            MM : 'මාස %d',
	            y : 'වසර',
	            yy : 'වසර %d'
	        },
	        ordinalParse: /\d{1,2} වැනි/,
	        ordinal : function (number) {
	            return number + ' වැනි';
	        },
	        meridiemParse : /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,
	        isPM : function (input) {
	            return input === 'ප.ව.' || input === 'පස් වරු';
	        },
	        meridiem : function (hours, minutes, isLower) {
	            if (hours > 11) {
	                return isLower ? 'ප.ව.' : 'පස් වරු';
	            } else {
	                return isLower ? 'පෙ.ව.' : 'පෙර වරු';
	            }
	        }
	    });
	
	    return si;
	
	}));

/***/ },
/* 292 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : slovak (sk)
	//! author : Martin Minka : https://github.com/k2s
	//! based on work of petrbela : https://github.com/petrbela
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'),
	        monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');
	    function plural(n) {
	        return (n > 1) && (n < 5);
	    }
	    function translate(number, withoutSuffix, key, isFuture) {
	        var result = number + ' ';
	        switch (key) {
	        case 's':  // a few seconds / in a few seconds / a few seconds ago
	            return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami';
	        case 'm':  // a minute / in a minute / a minute ago
	            return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou');
	        case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
	            if (withoutSuffix || isFuture) {
	                return result + (plural(number) ? 'minúty' : 'minút');
	            } else {
	                return result + 'minútami';
	            }
	            break;
	        case 'h':  // an hour / in an hour / an hour ago
	            return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');
	        case 'hh': // 9 hours / in 9 hours / 9 hours ago
	            if (withoutSuffix || isFuture) {
	                return result + (plural(number) ? 'hodiny' : 'hodín');
	            } else {
	                return result + 'hodinami';
	            }
	            break;
	        case 'd':  // a day / in a day / a day ago
	            return (withoutSuffix || isFuture) ? 'deň' : 'dňom';
	        case 'dd': // 9 days / in 9 days / 9 days ago
	            if (withoutSuffix || isFuture) {
	                return result + (plural(number) ? 'dni' : 'dní');
	            } else {
	                return result + 'dňami';
	            }
	            break;
	        case 'M':  // a month / in a month / a month ago
	            return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom';
	        case 'MM': // 9 months / in 9 months / 9 months ago
	            if (withoutSuffix || isFuture) {
	                return result + (plural(number) ? 'mesiace' : 'mesiacov');
	            } else {
	                return result + 'mesiacmi';
	            }
	            break;
	        case 'y':  // a year / in a year / a year ago
	            return (withoutSuffix || isFuture) ? 'rok' : 'rokom';
	        case 'yy': // 9 years / in 9 years / 9 years ago
	            if (withoutSuffix || isFuture) {
	                return result + (plural(number) ? 'roky' : 'rokov');
	            } else {
	                return result + 'rokmi';
	            }
	            break;
	        }
	    }
	
	    var sk = moment.defineLocale('sk', {
	        months : months,
	        monthsShort : monthsShort,
	        weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
	        weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'),
	        weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'),
	        longDateFormat : {
	            LT: 'H:mm',
	            LTS : 'H:mm:ss',
	            L : 'DD.MM.YYYY',
	            LL : 'D. MMMM YYYY',
	            LLL : 'D. MMMM YYYY H:mm',
	            LLLL : 'dddd D. MMMM YYYY H:mm'
	        },
	        calendar : {
	            sameDay: '[dnes o] LT',
	            nextDay: '[zajtra o] LT',
	            nextWeek: function () {
	                switch (this.day()) {
	                case 0:
	                    return '[v nedeľu o] LT';
	                case 1:
	                case 2:
	                    return '[v] dddd [o] LT';
	                case 3:
	                    return '[v stredu o] LT';
	                case 4:
	                    return '[vo štvrtok o] LT';
	                case 5:
	                    return '[v piatok o] LT';
	                case 6:
	                    return '[v sobotu o] LT';
	                }
	            },
	            lastDay: '[včera o] LT',
	            lastWeek: function () {
	                switch (this.day()) {
	                case 0:
	                    return '[minulú nedeľu o] LT';
	                case 1:
	                case 2:
	                    return '[minulý] dddd [o] LT';
	                case 3:
	                    return '[minulú stredu o] LT';
	                case 4:
	                case 5:
	                    return '[minulý] dddd [o] LT';
	                case 6:
	                    return '[minulú sobotu o] LT';
	                }
	            },
	            sameElse: 'L'
	        },
	        relativeTime : {
	            future : 'za %s',
	            past : 'pred %s',
	            s : translate,
	            m : translate,
	            mm : translate,
	            h : translate,
	            hh : translate,
	            d : translate,
	            dd : translate,
	            M : translate,
	            MM : translate,
	            y : translate,
	            yy : translate
	        },
	        ordinalParse: /\d{1,2}\./,
	        ordinal : '%d.',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return sk;
	
	}));

/***/ },
/* 293 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : slovenian (sl)
	//! author : Robert Sedovšek : https://github.com/sedovsek
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    function processRelativeTime(number, withoutSuffix, key, isFuture) {
	        var result = number + ' ';
	        switch (key) {
	        case 's':
	            return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';
	        case 'm':
	            return withoutSuffix ? 'ena minuta' : 'eno minuto';
	        case 'mm':
	            if (number === 1) {
	                result += withoutSuffix ? 'minuta' : 'minuto';
	            } else if (number === 2) {
	                result += withoutSuffix || isFuture ? 'minuti' : 'minutama';
	            } else if (number < 5) {
	                result += withoutSuffix || isFuture ? 'minute' : 'minutami';
	            } else {
	                result += withoutSuffix || isFuture ? 'minut' : 'minutami';
	            }
	            return result;
	        case 'h':
	            return withoutSuffix ? 'ena ura' : 'eno uro';
	        case 'hh':
	            if (number === 1) {
	                result += withoutSuffix ? 'ura' : 'uro';
	            } else if (number === 2) {
	                result += withoutSuffix || isFuture ? 'uri' : 'urama';
	            } else if (number < 5) {
	                result += withoutSuffix || isFuture ? 'ure' : 'urami';
	            } else {
	                result += withoutSuffix || isFuture ? 'ur' : 'urami';
	            }
	            return result;
	        case 'd':
	            return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';
	        case 'dd':
	            if (number === 1) {
	                result += withoutSuffix || isFuture ? 'dan' : 'dnem';
	            } else if (number === 2) {
	                result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';
	            } else {
	                result += withoutSuffix || isFuture ? 'dni' : 'dnevi';
	            }
	            return result;
	        case 'M':
	            return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';
	        case 'MM':
	            if (number === 1) {
	                result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';
	            } else if (number === 2) {
	                result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';
	            } else if (number < 5) {
	                result += withoutSuffix || isFuture ? 'mesece' : 'meseci';
	            } else {
	                result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';
	            }
	            return result;
	        case 'y':
	            return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';
	        case 'yy':
	            if (number === 1) {
	                result += withoutSuffix || isFuture ? 'leto' : 'letom';
	            } else if (number === 2) {
	                result += withoutSuffix || isFuture ? 'leti' : 'letoma';
	            } else if (number < 5) {
	                result += withoutSuffix || isFuture ? 'leta' : 'leti';
	            } else {
	                result += withoutSuffix || isFuture ? 'let' : 'leti';
	            }
	            return result;
	        }
	    }
	
	    var sl = moment.defineLocale('sl', {
	        months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),
	        monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),
	        monthsParseExact: true,
	        weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
	        weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),
	        weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT : 'H:mm',
	            LTS : 'H:mm:ss',
	            L : 'DD. MM. YYYY',
	            LL : 'D. MMMM YYYY',
	            LLL : 'D. MMMM YYYY H:mm',
	            LLLL : 'dddd, D. MMMM YYYY H:mm'
	        },
	        calendar : {
	            sameDay  : '[danes ob] LT',
	            nextDay  : '[jutri ob] LT',
	
	            nextWeek : function () {
	                switch (this.day()) {
	                case 0:
	                    return '[v] [nedeljo] [ob] LT';
	                case 3:
	                    return '[v] [sredo] [ob] LT';
	                case 6:
	                    return '[v] [soboto] [ob] LT';
	                case 1:
	                case 2:
	                case 4:
	                case 5:
	                    return '[v] dddd [ob] LT';
	                }
	            },
	            lastDay  : '[včeraj ob] LT',
	            lastWeek : function () {
	                switch (this.day()) {
	                case 0:
	                    return '[prejšnjo] [nedeljo] [ob] LT';
	                case 3:
	                    return '[prejšnjo] [sredo] [ob] LT';
	                case 6:
	                    return '[prejšnjo] [soboto] [ob] LT';
	                case 1:
	                case 2:
	                case 4:
	                case 5:
	                    return '[prejšnji] dddd [ob] LT';
	                }
	            },
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'čez %s',
	            past   : 'pred %s',
	            s      : processRelativeTime,
	            m      : processRelativeTime,
	            mm     : processRelativeTime,
	            h      : processRelativeTime,
	            hh     : processRelativeTime,
	            d      : processRelativeTime,
	            dd     : processRelativeTime,
	            M      : processRelativeTime,
	            MM     : processRelativeTime,
	            y      : processRelativeTime,
	            yy     : processRelativeTime
	        },
	        ordinalParse: /\d{1,2}\./,
	        ordinal : '%d.',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 7  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return sl;
	
	}));

/***/ },
/* 294 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : Albanian (sq)
	//! author : Flakërim Ismani : https://github.com/flakerimi
	//! author: Menelion Elensúle: https://github.com/Oire (tests)
	//! author : Oerd Cukalla : https://github.com/oerd (fixes)
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var sq = moment.defineLocale('sq', {
	        months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),
	        monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),
	        weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),
	        weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),
	        weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'),
	        weekdaysParseExact : true,
	        meridiemParse: /PD|MD/,
	        isPM: function (input) {
	            return input.charAt(0) === 'M';
	        },
	        meridiem : function (hours, minutes, isLower) {
	            return hours < 12 ? 'PD' : 'MD';
	        },
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY HH:mm',
	            LLLL : 'dddd, D MMMM YYYY HH:mm'
	        },
	        calendar : {
	            sameDay : '[Sot në] LT',
	            nextDay : '[Nesër në] LT',
	            nextWeek : 'dddd [në] LT',
	            lastDay : '[Dje në] LT',
	            lastWeek : 'dddd [e kaluar në] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'në %s',
	            past : '%s më parë',
	            s : 'disa sekonda',
	            m : 'një minutë',
	            mm : '%d minuta',
	            h : 'një orë',
	            hh : '%d orë',
	            d : 'një ditë',
	            dd : '%d ditë',
	            M : 'një muaj',
	            MM : '%d muaj',
	            y : 'një vit',
	            yy : '%d vite'
	        },
	        ordinalParse: /\d{1,2}\./,
	        ordinal : '%d.',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return sq;
	
	}));

/***/ },
/* 295 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : Serbian-cyrillic (sr-cyrl)
	//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var translator = {
	        words: { //Different grammatical cases
	            m: ['један минут', 'једне минуте'],
	            mm: ['минут', 'минуте', 'минута'],
	            h: ['један сат', 'једног сата'],
	            hh: ['сат', 'сата', 'сати'],
	            dd: ['дан', 'дана', 'дана'],
	            MM: ['месец', 'месеца', 'месеци'],
	            yy: ['година', 'године', 'година']
	        },
	        correctGrammaticalCase: function (number, wordKey) {
	            return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
	        },
	        translate: function (number, withoutSuffix, key) {
	            var wordKey = translator.words[key];
	            if (key.length === 1) {
	                return withoutSuffix ? wordKey[0] : wordKey[1];
	            } else {
	                return number + ' ' + translator.correctGrammaticalCase(number, wordKey);
	            }
	        }
	    };
	
	    var sr_cyrl = moment.defineLocale('sr-cyrl', {
	        months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'),
	        monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),
	        monthsParseExact: true,
	        weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),
	        weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),
	        weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat: {
	            LT: 'H:mm',
	            LTS : 'H:mm:ss',
	            L: 'DD. MM. YYYY',
	            LL: 'D. MMMM YYYY',
	            LLL: 'D. MMMM YYYY H:mm',
	            LLLL: 'dddd, D. MMMM YYYY H:mm'
	        },
	        calendar: {
	            sameDay: '[данас у] LT',
	            nextDay: '[сутра у] LT',
	            nextWeek: function () {
	                switch (this.day()) {
	                case 0:
	                    return '[у] [недељу] [у] LT';
	                case 3:
	                    return '[у] [среду] [у] LT';
	                case 6:
	                    return '[у] [суботу] [у] LT';
	                case 1:
	                case 2:
	                case 4:
	                case 5:
	                    return '[у] dddd [у] LT';
	                }
	            },
	            lastDay  : '[јуче у] LT',
	            lastWeek : function () {
	                var lastWeekDays = [
	                    '[прошле] [недеље] [у] LT',
	                    '[прошлог] [понедељка] [у] LT',
	                    '[прошлог] [уторка] [у] LT',
	                    '[прошле] [среде] [у] LT',
	                    '[прошлог] [четвртка] [у] LT',
	                    '[прошлог] [петка] [у] LT',
	                    '[прошле] [суботе] [у] LT'
	                ];
	                return lastWeekDays[this.day()];
	            },
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'за %s',
	            past   : 'пре %s',
	            s      : 'неколико секунди',
	            m      : translator.translate,
	            mm     : translator.translate,
	            h      : translator.translate,
	            hh     : translator.translate,
	            d      : 'дан',
	            dd     : translator.translate,
	            M      : 'месец',
	            MM     : translator.translate,
	            y      : 'годину',
	            yy     : translator.translate
	        },
	        ordinalParse: /\d{1,2}\./,
	        ordinal : '%d.',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 7  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return sr_cyrl;
	
	}));

/***/ },
/* 296 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : Serbian-latin (sr)
	//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var translator = {
	        words: { //Different grammatical cases
	            m: ['jedan minut', 'jedne minute'],
	            mm: ['minut', 'minute', 'minuta'],
	            h: ['jedan sat', 'jednog sata'],
	            hh: ['sat', 'sata', 'sati'],
	            dd: ['dan', 'dana', 'dana'],
	            MM: ['mesec', 'meseca', 'meseci'],
	            yy: ['godina', 'godine', 'godina']
	        },
	        correctGrammaticalCase: function (number, wordKey) {
	            return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
	        },
	        translate: function (number, withoutSuffix, key) {
	            var wordKey = translator.words[key];
	            if (key.length === 1) {
	                return withoutSuffix ? wordKey[0] : wordKey[1];
	            } else {
	                return number + ' ' + translator.correctGrammaticalCase(number, wordKey);
	            }
	        }
	    };
	
	    var sr = moment.defineLocale('sr', {
	        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),
	        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
	        monthsParseExact: true,
	        weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'),
	        weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),
	        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat: {
	            LT: 'H:mm',
	            LTS : 'H:mm:ss',
	            L: 'DD. MM. YYYY',
	            LL: 'D. MMMM YYYY',
	            LLL: 'D. MMMM YYYY H:mm',
	            LLLL: 'dddd, D. MMMM YYYY H:mm'
	        },
	        calendar: {
	            sameDay: '[danas u] LT',
	            nextDay: '[sutra u] LT',
	            nextWeek: function () {
	                switch (this.day()) {
	                case 0:
	                    return '[u] [nedelju] [u] LT';
	                case 3:
	                    return '[u] [sredu] [u] LT';
	                case 6:
	                    return '[u] [subotu] [u] LT';
	                case 1:
	                case 2:
	                case 4:
	                case 5:
	                    return '[u] dddd [u] LT';
	                }
	            },
	            lastDay  : '[juče u] LT',
	            lastWeek : function () {
	                var lastWeekDays = [
	                    '[prošle] [nedelje] [u] LT',
	                    '[prošlog] [ponedeljka] [u] LT',
	                    '[prošlog] [utorka] [u] LT',
	                    '[prošle] [srede] [u] LT',
	                    '[prošlog] [četvrtka] [u] LT',
	                    '[prošlog] [petka] [u] LT',
	                    '[prošle] [subote] [u] LT'
	                ];
	                return lastWeekDays[this.day()];
	            },
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'za %s',
	            past   : 'pre %s',
	            s      : 'nekoliko sekundi',
	            m      : translator.translate,
	            mm     : translator.translate,
	            h      : translator.translate,
	            hh     : translator.translate,
	            d      : 'dan',
	            dd     : translator.translate,
	            M      : 'mesec',
	            MM     : translator.translate,
	            y      : 'godinu',
	            yy     : translator.translate
	        },
	        ordinalParse: /\d{1,2}\./,
	        ordinal : '%d.',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 7  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return sr;
	
	}));

/***/ },
/* 297 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : siSwati (ss)
	//! author : Nicolai Davies<mail@nicolai.io> : https://github.com/nicolaidavies
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	
	    var ss = moment.defineLocale('ss', {
	        months : "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split('_'),
	        monthsShort : 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),
	        weekdays : 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'),
	        weekdaysShort : 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),
	        weekdaysMin : 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT : 'h:mm A',
	            LTS : 'h:mm:ss A',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY h:mm A',
	            LLLL : 'dddd, D MMMM YYYY h:mm A'
	        },
	        calendar : {
	            sameDay : '[Namuhla nga] LT',
	            nextDay : '[Kusasa nga] LT',
	            nextWeek : 'dddd [nga] LT',
	            lastDay : '[Itolo nga] LT',
	            lastWeek : 'dddd [leliphelile] [nga] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'nga %s',
	            past : 'wenteka nga %s',
	            s : 'emizuzwana lomcane',
	            m : 'umzuzu',
	            mm : '%d emizuzu',
	            h : 'lihora',
	            hh : '%d emahora',
	            d : 'lilanga',
	            dd : '%d emalanga',
	            M : 'inyanga',
	            MM : '%d tinyanga',
	            y : 'umnyaka',
	            yy : '%d iminyaka'
	        },
	        meridiemParse: /ekuseni|emini|entsambama|ebusuku/,
	        meridiem : function (hours, minutes, isLower) {
	            if (hours < 11) {
	                return 'ekuseni';
	            } else if (hours < 15) {
	                return 'emini';
	            } else if (hours < 19) {
	                return 'entsambama';
	            } else {
	                return 'ebusuku';
	            }
	        },
	        meridiemHour : function (hour, meridiem) {
	            if (hour === 12) {
	                hour = 0;
	            }
	            if (meridiem === 'ekuseni') {
	                return hour;
	            } else if (meridiem === 'emini') {
	                return hour >= 11 ? hour : hour + 12;
	            } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {
	                if (hour === 0) {
	                    return 0;
	                }
	                return hour + 12;
	            }
	        },
	        ordinalParse: /\d{1,2}/,
	        ordinal : '%d',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return ss;
	
	}));

/***/ },
/* 298 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : swedish (sv)
	//! author : Jens Alm : https://github.com/ulmus
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var sv = moment.defineLocale('sv', {
	        months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),
	        monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
	        weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
	        weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
	        weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'),
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'YYYY-MM-DD',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY [kl.] HH:mm',
	            LLLL : 'dddd D MMMM YYYY [kl.] HH:mm',
	            lll : 'D MMM YYYY HH:mm',
	            llll : 'ddd D MMM YYYY HH:mm'
	        },
	        calendar : {
	            sameDay: '[Idag] LT',
	            nextDay: '[Imorgon] LT',
	            lastDay: '[Igår] LT',
	            nextWeek: '[På] dddd LT',
	            lastWeek: '[I] dddd[s] LT',
	            sameElse: 'L'
	        },
	        relativeTime : {
	            future : 'om %s',
	            past : 'för %s sedan',
	            s : 'några sekunder',
	            m : 'en minut',
	            mm : '%d minuter',
	            h : 'en timme',
	            hh : '%d timmar',
	            d : 'en dag',
	            dd : '%d dagar',
	            M : 'en månad',
	            MM : '%d månader',
	            y : 'ett år',
	            yy : '%d år'
	        },
	        ordinalParse: /\d{1,2}(e|a)/,
	        ordinal : function (number) {
	            var b = number % 10,
	                output = (~~(number % 100 / 10) === 1) ? 'e' :
	                (b === 1) ? 'a' :
	                (b === 2) ? 'a' :
	                (b === 3) ? 'e' : 'e';
	            return number + output;
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return sv;
	
	}));

/***/ },
/* 299 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : swahili (sw)
	//! author : Fahad Kassim : https://github.com/fadsel
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var sw = moment.defineLocale('sw', {
	        months : 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),
	        monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),
	        weekdays : 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),
	        weekdaysShort : 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),
	        weekdaysMin : 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD.MM.YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY HH:mm',
	            LLLL : 'dddd, D MMMM YYYY HH:mm'
	        },
	        calendar : {
	            sameDay : '[leo saa] LT',
	            nextDay : '[kesho saa] LT',
	            nextWeek : '[wiki ijayo] dddd [saat] LT',
	            lastDay : '[jana] LT',
	            lastWeek : '[wiki iliyopita] dddd [saat] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : '%s baadaye',
	            past : 'tokea %s',
	            s : 'hivi punde',
	            m : 'dakika moja',
	            mm : 'dakika %d',
	            h : 'saa limoja',
	            hh : 'masaa %d',
	            d : 'siku moja',
	            dd : 'masiku %d',
	            M : 'mwezi mmoja',
	            MM : 'miezi %d',
	            y : 'mwaka mmoja',
	            yy : 'miaka %d'
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 7  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return sw;
	
	}));

/***/ },
/* 300 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : tamil (ta)
	//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var symbolMap = {
	        '1': '௧',
	        '2': '௨',
	        '3': '௩',
	        '4': '௪',
	        '5': '௫',
	        '6': '௬',
	        '7': '௭',
	        '8': '௮',
	        '9': '௯',
	        '0': '௦'
	    }, numberMap = {
	        '௧': '1',
	        '௨': '2',
	        '௩': '3',
	        '௪': '4',
	        '௫': '5',
	        '௬': '6',
	        '௭': '7',
	        '௮': '8',
	        '௯': '9',
	        '௦': '0'
	    };
	
	    var ta = moment.defineLocale('ta', {
	        months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
	        monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
	        weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'),
	        weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'),
	        weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY, HH:mm',
	            LLLL : 'dddd, D MMMM YYYY, HH:mm'
	        },
	        calendar : {
	            sameDay : '[இன்று] LT',
	            nextDay : '[நாளை] LT',
	            nextWeek : 'dddd, LT',
	            lastDay : '[நேற்று] LT',
	            lastWeek : '[கடந்த வாரம்] dddd, LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : '%s இல்',
	            past : '%s முன்',
	            s : 'ஒரு சில விநாடிகள்',
	            m : 'ஒரு நிமிடம்',
	            mm : '%d நிமிடங்கள்',
	            h : 'ஒரு மணி நேரம்',
	            hh : '%d மணி நேரம்',
	            d : 'ஒரு நாள்',
	            dd : '%d நாட்கள்',
	            M : 'ஒரு மாதம்',
	            MM : '%d மாதங்கள்',
	            y : 'ஒரு வருடம்',
	            yy : '%d ஆண்டுகள்'
	        },
	        ordinalParse: /\d{1,2}வது/,
	        ordinal : function (number) {
	            return number + 'வது';
	        },
	        preparse: function (string) {
	            return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {
	                return numberMap[match];
	            });
	        },
	        postformat: function (string) {
	            return string.replace(/\d/g, function (match) {
	                return symbolMap[match];
	            });
	        },
	        // refer http://ta.wikipedia.org/s/1er1
	        meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,
	        meridiem : function (hour, minute, isLower) {
	            if (hour < 2) {
	                return ' யாமம்';
	            } else if (hour < 6) {
	                return ' வைகறை';  // வைகறை
	            } else if (hour < 10) {
	                return ' காலை'; // காலை
	            } else if (hour < 14) {
	                return ' நண்பகல்'; // நண்பகல்
	            } else if (hour < 18) {
	                return ' எற்பாடு'; // எற்பாடு
	            } else if (hour < 22) {
	                return ' மாலை'; // மாலை
	            } else {
	                return ' யாமம்';
	            }
	        },
	        meridiemHour : function (hour, meridiem) {
	            if (hour === 12) {
	                hour = 0;
	            }
	            if (meridiem === 'யாமம்') {
	                return hour < 2 ? hour : hour + 12;
	            } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {
	                return hour;
	            } else if (meridiem === 'நண்பகல்') {
	                return hour >= 10 ? hour : hour + 12;
	            } else {
	                return hour + 12;
	            }
	        },
	        week : {
	            dow : 0, // Sunday is the first day of the week.
	            doy : 6  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return ta;
	
	}));

/***/ },
/* 301 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : telugu (te)
	//! author : Krishna Chaitanya Thota : https://github.com/kcthota
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var te = moment.defineLocale('te', {
	        months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జూలై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'),
	        monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జూలై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'),
	        monthsParseExact : true,
	        weekdays : 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'),
	        weekdaysShort : 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),
	        weekdaysMin : 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),
	        longDateFormat : {
	            LT : 'A h:mm',
	            LTS : 'A h:mm:ss',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY, A h:mm',
	            LLLL : 'dddd, D MMMM YYYY, A h:mm'
	        },
	        calendar : {
	            sameDay : '[నేడు] LT',
	            nextDay : '[రేపు] LT',
	            nextWeek : 'dddd, LT',
	            lastDay : '[నిన్న] LT',
	            lastWeek : '[గత] dddd, LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : '%s లో',
	            past : '%s క్రితం',
	            s : 'కొన్ని క్షణాలు',
	            m : 'ఒక నిమిషం',
	            mm : '%d నిమిషాలు',
	            h : 'ఒక గంట',
	            hh : '%d గంటలు',
	            d : 'ఒక రోజు',
	            dd : '%d రోజులు',
	            M : 'ఒక నెల',
	            MM : '%d నెలలు',
	            y : 'ఒక సంవత్సరం',
	            yy : '%d సంవత్సరాలు'
	        },
	        ordinalParse : /\d{1,2}వ/,
	        ordinal : '%dవ',
	        meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,
	        meridiemHour : function (hour, meridiem) {
	            if (hour === 12) {
	                hour = 0;
	            }
	            if (meridiem === 'రాత్రి') {
	                return hour < 4 ? hour : hour + 12;
	            } else if (meridiem === 'ఉదయం') {
	                return hour;
	            } else if (meridiem === 'మధ్యాహ్నం') {
	                return hour >= 10 ? hour : hour + 12;
	            } else if (meridiem === 'సాయంత్రం') {
	                return hour + 12;
	            }
	        },
	        meridiem : function (hour, minute, isLower) {
	            if (hour < 4) {
	                return 'రాత్రి';
	            } else if (hour < 10) {
	                return 'ఉదయం';
	            } else if (hour < 17) {
	                return 'మధ్యాహ్నం';
	            } else if (hour < 20) {
	                return 'సాయంత్రం';
	            } else {
	                return 'రాత్రి';
	            }
	        },
	        week : {
	            dow : 0, // Sunday is the first day of the week.
	            doy : 6  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return te;
	
	}));

/***/ },
/* 302 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : thai (th)
	//! author : Kridsada Thanabulpong : https://github.com/sirn
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var th = moment.defineLocale('th', {
	        months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),
	        monthsShort : 'มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา'.split('_'),
	        monthsParseExact: true,
	        weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),
	        weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference
	        weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT : 'H นาฬิกา m นาที',
	            LTS : 'H นาฬิกา m นาที s วินาที',
	            L : 'YYYY/MM/DD',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY เวลา H นาฬิกา m นาที',
	            LLLL : 'วันddddที่ D MMMM YYYY เวลา H นาฬิกา m นาที'
	        },
	        meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,
	        isPM: function (input) {
	            return input === 'หลังเที่ยง';
	        },
	        meridiem : function (hour, minute, isLower) {
	            if (hour < 12) {
	                return 'ก่อนเที่ยง';
	            } else {
	                return 'หลังเที่ยง';
	            }
	        },
	        calendar : {
	            sameDay : '[วันนี้ เวลา] LT',
	            nextDay : '[พรุ่งนี้ เวลา] LT',
	            nextWeek : 'dddd[หน้า เวลา] LT',
	            lastDay : '[เมื่อวานนี้ เวลา] LT',
	            lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'อีก %s',
	            past : '%sที่แล้ว',
	            s : 'ไม่กี่วินาที',
	            m : '1 นาที',
	            mm : '%d นาที',
	            h : '1 ชั่วโมง',
	            hh : '%d ชั่วโมง',
	            d : '1 วัน',
	            dd : '%d วัน',
	            M : '1 เดือน',
	            MM : '%d เดือน',
	            y : '1 ปี',
	            yy : '%d ปี'
	        }
	    });
	
	    return th;
	
	}));

/***/ },
/* 303 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : Tagalog/Filipino (tl-ph)
	//! author : Dan Hagman
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var tl_ph = moment.defineLocale('tl-ph', {
	        months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),
	        monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
	        weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),
	        weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
	        weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'MM/D/YYYY',
	            LL : 'MMMM D, YYYY',
	            LLL : 'MMMM D, YYYY HH:mm',
	            LLLL : 'dddd, MMMM DD, YYYY HH:mm'
	        },
	        calendar : {
	            sameDay: '[Ngayon sa] LT',
	            nextDay: '[Bukas sa] LT',
	            nextWeek: 'dddd [sa] LT',
	            lastDay: '[Kahapon sa] LT',
	            lastWeek: 'dddd [huling linggo] LT',
	            sameElse: 'L'
	        },
	        relativeTime : {
	            future : 'sa loob ng %s',
	            past : '%s ang nakalipas',
	            s : 'ilang segundo',
	            m : 'isang minuto',
	            mm : '%d minuto',
	            h : 'isang oras',
	            hh : '%d oras',
	            d : 'isang araw',
	            dd : '%d araw',
	            M : 'isang buwan',
	            MM : '%d buwan',
	            y : 'isang taon',
	            yy : '%d taon'
	        },
	        ordinalParse: /\d{1,2}/,
	        ordinal : function (number) {
	            return number;
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return tl_ph;
	
	}));

/***/ },
/* 304 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : Klingon (tlh)
	//! author : Dominika Kruk : https://github.com/amaranthrose
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');
	
	    function translateFuture(output) {
	        var time = output;
	        time = (output.indexOf('jaj') !== -1) ?
	    	time.slice(0, -3) + 'leS' :
	    	(output.indexOf('jar') !== -1) ?
	    	time.slice(0, -3) + 'waQ' :
	    	(output.indexOf('DIS') !== -1) ?
	    	time.slice(0, -3) + 'nem' :
	    	time + ' pIq';
	        return time;
	    }
	
	    function translatePast(output) {
	        var time = output;
	        time = (output.indexOf('jaj') !== -1) ?
	    	time.slice(0, -3) + 'Hu’' :
	    	(output.indexOf('jar') !== -1) ?
	    	time.slice(0, -3) + 'wen' :
	    	(output.indexOf('DIS') !== -1) ?
	    	time.slice(0, -3) + 'ben' :
	    	time + ' ret';
	        return time;
	    }
	
	    function translate(number, withoutSuffix, string, isFuture) {
	        var numberNoun = numberAsNoun(number);
	        switch (string) {
	            case 'mm':
	                return numberNoun + ' tup';
	            case 'hh':
	                return numberNoun + ' rep';
	            case 'dd':
	                return numberNoun + ' jaj';
	            case 'MM':
	                return numberNoun + ' jar';
	            case 'yy':
	                return numberNoun + ' DIS';
	        }
	    }
	
	    function numberAsNoun(number) {
	        var hundred = Math.floor((number % 1000) / 100),
	    	ten = Math.floor((number % 100) / 10),
	    	one = number % 10,
	    	word = '';
	        if (hundred > 0) {
	            word += numbersNouns[hundred] + 'vatlh';
	        }
	        if (ten > 0) {
	            word += ((word !== '') ? ' ' : '') + numbersNouns[ten] + 'maH';
	        }
	        if (one > 0) {
	            word += ((word !== '') ? ' ' : '') + numbersNouns[one];
	        }
	        return (word === '') ? 'pagh' : word;
	    }
	
	    var tlh = moment.defineLocale('tlh', {
	        months : 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'),
	        monthsShort : 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'),
	        monthsParseExact : true,
	        weekdays : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
	        weekdaysShort : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
	        weekdaysMin : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD.MM.YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY HH:mm',
	            LLLL : 'dddd, D MMMM YYYY HH:mm'
	        },
	        calendar : {
	            sameDay: '[DaHjaj] LT',
	            nextDay: '[wa’leS] LT',
	            nextWeek: 'LLL',
	            lastDay: '[wa’Hu’] LT',
	            lastWeek: 'LLL',
	            sameElse: 'L'
	        },
	        relativeTime : {
	            future : translateFuture,
	            past : translatePast,
	            s : 'puS lup',
	            m : 'wa’ tup',
	            mm : translate,
	            h : 'wa’ rep',
	            hh : translate,
	            d : 'wa’ jaj',
	            dd : translate,
	            M : 'wa’ jar',
	            MM : translate,
	            y : 'wa’ DIS',
	            yy : translate
	        },
	        ordinalParse: /\d{1,2}\./,
	        ordinal : '%d.',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return tlh;
	
	}));

/***/ },
/* 305 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : turkish (tr)
	//! authors : Erhan Gundogan : https://github.com/erhangundogan,
	//!           Burak Yiğit Kaya: https://github.com/BYK
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var suffixes = {
	        1: '\'inci',
	        5: '\'inci',
	        8: '\'inci',
	        70: '\'inci',
	        80: '\'inci',
	        2: '\'nci',
	        7: '\'nci',
	        20: '\'nci',
	        50: '\'nci',
	        3: '\'üncü',
	        4: '\'üncü',
	        100: '\'üncü',
	        6: '\'ncı',
	        9: '\'uncu',
	        10: '\'uncu',
	        30: '\'uncu',
	        60: '\'ıncı',
	        90: '\'ıncı'
	    };
	
	    var tr = moment.defineLocale('tr', {
	        months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),
	        monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),
	        weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),
	        weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),
	        weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD.MM.YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY HH:mm',
	            LLLL : 'dddd, D MMMM YYYY HH:mm'
	        },
	        calendar : {
	            sameDay : '[bugün saat] LT',
	            nextDay : '[yarın saat] LT',
	            nextWeek : '[haftaya] dddd [saat] LT',
	            lastDay : '[dün] LT',
	            lastWeek : '[geçen hafta] dddd [saat] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : '%s sonra',
	            past : '%s önce',
	            s : 'birkaç saniye',
	            m : 'bir dakika',
	            mm : '%d dakika',
	            h : 'bir saat',
	            hh : '%d saat',
	            d : 'bir gün',
	            dd : '%d gün',
	            M : 'bir ay',
	            MM : '%d ay',
	            y : 'bir yıl',
	            yy : '%d yıl'
	        },
	        ordinalParse: /\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,
	        ordinal : function (number) {
	            if (number === 0) {  // special case for zero
	                return number + '\'ıncı';
	            }
	            var a = number % 10,
	                b = number % 100 - a,
	                c = number >= 100 ? 100 : null;
	            return number + (suffixes[a] || suffixes[b] || suffixes[c]);
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 7  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return tr;
	
	}));

/***/ },
/* 306 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : talossan (tzl)
	//! author : Robin van der Vliet : https://github.com/robin0van0der0v with the help of Iustì Canun
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	
	    // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.
	    // This is currently too difficult (maybe even impossible) to add.
	    var tzl = moment.defineLocale('tzl', {
	        months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'),
	        monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),
	        weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),
	        weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),
	        weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),
	        longDateFormat : {
	            LT : 'HH.mm',
	            LTS : 'HH.mm.ss',
	            L : 'DD.MM.YYYY',
	            LL : 'D. MMMM [dallas] YYYY',
	            LLL : 'D. MMMM [dallas] YYYY HH.mm',
	            LLLL : 'dddd, [li] D. MMMM [dallas] YYYY HH.mm'
	        },
	        meridiemParse: /d\'o|d\'a/i,
	        isPM : function (input) {
	            return 'd\'o' === input.toLowerCase();
	        },
	        meridiem : function (hours, minutes, isLower) {
	            if (hours > 11) {
	                return isLower ? 'd\'o' : 'D\'O';
	            } else {
	                return isLower ? 'd\'a' : 'D\'A';
	            }
	        },
	        calendar : {
	            sameDay : '[oxhi à] LT',
	            nextDay : '[demà à] LT',
	            nextWeek : 'dddd [à] LT',
	            lastDay : '[ieiri à] LT',
	            lastWeek : '[sür el] dddd [lasteu à] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'osprei %s',
	            past : 'ja%s',
	            s : processRelativeTime,
	            m : processRelativeTime,
	            mm : processRelativeTime,
	            h : processRelativeTime,
	            hh : processRelativeTime,
	            d : processRelativeTime,
	            dd : processRelativeTime,
	            M : processRelativeTime,
	            MM : processRelativeTime,
	            y : processRelativeTime,
	            yy : processRelativeTime
	        },
	        ordinalParse: /\d{1,2}\./,
	        ordinal : '%d.',
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    function processRelativeTime(number, withoutSuffix, key, isFuture) {
	        var format = {
	            's': ['viensas secunds', '\'iensas secunds'],
	            'm': ['\'n míut', '\'iens míut'],
	            'mm': [number + ' míuts', '' + number + ' míuts'],
	            'h': ['\'n þora', '\'iensa þora'],
	            'hh': [number + ' þoras', '' + number + ' þoras'],
	            'd': ['\'n ziua', '\'iensa ziua'],
	            'dd': [number + ' ziuas', '' + number + ' ziuas'],
	            'M': ['\'n mes', '\'iens mes'],
	            'MM': [number + ' mesen', '' + number + ' mesen'],
	            'y': ['\'n ar', '\'iens ar'],
	            'yy': [number + ' ars', '' + number + ' ars']
	        };
	        return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1]);
	    }
	
	    return tzl;
	
	}));

/***/ },
/* 307 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : Morocco Central Atlas Tamaziɣt in Latin (tzm-latn)
	//! author : Abdel Said : https://github.com/abdelsaid
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var tzm_latn = moment.defineLocale('tzm-latn', {
	        months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),
	        monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),
	        weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
	        weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
	        weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY HH:mm',
	            LLLL : 'dddd D MMMM YYYY HH:mm'
	        },
	        calendar : {
	            sameDay: '[asdkh g] LT',
	            nextDay: '[aska g] LT',
	            nextWeek: 'dddd [g] LT',
	            lastDay: '[assant g] LT',
	            lastWeek: 'dddd [g] LT',
	            sameElse: 'L'
	        },
	        relativeTime : {
	            future : 'dadkh s yan %s',
	            past : 'yan %s',
	            s : 'imik',
	            m : 'minuḍ',
	            mm : '%d minuḍ',
	            h : 'saɛa',
	            hh : '%d tassaɛin',
	            d : 'ass',
	            dd : '%d ossan',
	            M : 'ayowr',
	            MM : '%d iyyirn',
	            y : 'asgas',
	            yy : '%d isgasn'
	        },
	        week : {
	            dow : 6, // Saturday is the first day of the week.
	            doy : 12  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return tzm_latn;
	
	}));

/***/ },
/* 308 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : Morocco Central Atlas Tamaziɣt (tzm)
	//! author : Abdel Said : https://github.com/abdelsaid
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var tzm = moment.defineLocale('tzm', {
	        months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),
	        monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),
	        weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
	        weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
	        weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS: 'HH:mm:ss',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY HH:mm',
	            LLLL : 'dddd D MMMM YYYY HH:mm'
	        },
	        calendar : {
	            sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',
	            nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',
	            nextWeek: 'dddd [ⴴ] LT',
	            lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',
	            lastWeek: 'dddd [ⴴ] LT',
	            sameElse: 'L'
	        },
	        relativeTime : {
	            future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',
	            past : 'ⵢⴰⵏ %s',
	            s : 'ⵉⵎⵉⴽ',
	            m : 'ⵎⵉⵏⵓⴺ',
	            mm : '%d ⵎⵉⵏⵓⴺ',
	            h : 'ⵙⴰⵄⴰ',
	            hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',
	            d : 'ⴰⵙⵙ',
	            dd : '%d oⵙⵙⴰⵏ',
	            M : 'ⴰⵢoⵓⵔ',
	            MM : '%d ⵉⵢⵢⵉⵔⵏ',
	            y : 'ⴰⵙⴳⴰⵙ',
	            yy : '%d ⵉⵙⴳⴰⵙⵏ'
	        },
	        week : {
	            dow : 6, // Saturday is the first day of the week.
	            doy : 12  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return tzm;
	
	}));

/***/ },
/* 309 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : ukrainian (uk)
	//! author : zemlanin : https://github.com/zemlanin
	//! Author : Menelion Elensúle : https://github.com/Oire
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    function plural(word, num) {
	        var forms = word.split('_');
	        return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
	    }
	    function relativeTimeWithPlural(number, withoutSuffix, key) {
	        var format = {
	            'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',
	            'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин',
	            'dd': 'день_дні_днів',
	            'MM': 'місяць_місяці_місяців',
	            'yy': 'рік_роки_років'
	        };
	        if (key === 'm') {
	            return withoutSuffix ? 'хвилина' : 'хвилину';
	        }
	        else if (key === 'h') {
	            return withoutSuffix ? 'година' : 'годину';
	        }
	        else {
	            return number + ' ' + plural(format[key], +number);
	        }
	    }
	    function weekdaysCaseReplace(m, format) {
	        var weekdays = {
	            'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),
	            'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),
	            'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')
	        },
	        nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ?
	            'accusative' :
	            ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ?
	                'genitive' :
	                'nominative');
	        return weekdays[nounCase][m.day()];
	    }
	    function processHoursFunction(str) {
	        return function () {
	            return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
	        };
	    }
	
	    var uk = moment.defineLocale('uk', {
	        months : {
	            'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'),
	            'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_')
	        },
	        monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),
	        weekdays : weekdaysCaseReplace,
	        weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
	        weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD.MM.YYYY',
	            LL : 'D MMMM YYYY р.',
	            LLL : 'D MMMM YYYY р., HH:mm',
	            LLLL : 'dddd, D MMMM YYYY р., HH:mm'
	        },
	        calendar : {
	            sameDay: processHoursFunction('[Сьогодні '),
	            nextDay: processHoursFunction('[Завтра '),
	            lastDay: processHoursFunction('[Вчора '),
	            nextWeek: processHoursFunction('[У] dddd ['),
	            lastWeek: function () {
	                switch (this.day()) {
	                case 0:
	                case 3:
	                case 5:
	                case 6:
	                    return processHoursFunction('[Минулої] dddd [').call(this);
	                case 1:
	                case 2:
	                case 4:
	                    return processHoursFunction('[Минулого] dddd [').call(this);
	                }
	            },
	            sameElse: 'L'
	        },
	        relativeTime : {
	            future : 'за %s',
	            past : '%s тому',
	            s : 'декілька секунд',
	            m : relativeTimeWithPlural,
	            mm : relativeTimeWithPlural,
	            h : 'годину',
	            hh : relativeTimeWithPlural,
	            d : 'день',
	            dd : relativeTimeWithPlural,
	            M : 'місяць',
	            MM : relativeTimeWithPlural,
	            y : 'рік',
	            yy : relativeTimeWithPlural
	        },
	        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
	        meridiemParse: /ночі|ранку|дня|вечора/,
	        isPM: function (input) {
	            return /^(дня|вечора)$/.test(input);
	        },
	        meridiem : function (hour, minute, isLower) {
	            if (hour < 4) {
	                return 'ночі';
	            } else if (hour < 12) {
	                return 'ранку';
	            } else if (hour < 17) {
	                return 'дня';
	            } else {
	                return 'вечора';
	            }
	        },
	        ordinalParse: /\d{1,2}-(й|го)/,
	        ordinal: function (number, period) {
	            switch (period) {
	            case 'M':
	            case 'd':
	            case 'DDD':
	            case 'w':
	            case 'W':
	                return number + '-й';
	            case 'D':
	                return number + '-го';
	            default:
	                return number;
	            }
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 7  // The week that contains Jan 1st is the first week of the year.
	        }
	    });
	
	    return uk;
	
	}));

/***/ },
/* 310 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : uzbek (uz)
	//! author : Sardor Muminov : https://github.com/muminoff
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var uz = moment.defineLocale('uz', {
	        months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),
	        monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
	        weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),
	        weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),
	        weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY HH:mm',
	            LLLL : 'D MMMM YYYY, dddd HH:mm'
	        },
	        calendar : {
	            sameDay : '[Бугун соат] LT [да]',
	            nextDay : '[Эртага] LT [да]',
	            nextWeek : 'dddd [куни соат] LT [да]',
	            lastDay : '[Кеча соат] LT [да]',
	            lastWeek : '[Утган] dddd [куни соат] LT [да]',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'Якин %s ичида',
	            past : 'Бир неча %s олдин',
	            s : 'фурсат',
	            m : 'бир дакика',
	            mm : '%d дакика',
	            h : 'бир соат',
	            hh : '%d соат',
	            d : 'бир кун',
	            dd : '%d кун',
	            M : 'бир ой',
	            MM : '%d ой',
	            y : 'бир йил',
	            yy : '%d йил'
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 7  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return uz;
	
	}));

/***/ },
/* 311 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : vietnamese (vi)
	//! author : Bang Nguyen : https://github.com/bangnk
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var vi = moment.defineLocale('vi', {
	        months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'),
	        monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),
	        monthsParseExact : true,
	        weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),
	        weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
	        weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
	        weekdaysParseExact : true,
	        meridiemParse: /sa|ch/i,
	        isPM : function (input) {
	            return /^ch$/i.test(input);
	        },
	        meridiem : function (hours, minutes, isLower) {
	            if (hours < 12) {
	                return isLower ? 'sa' : 'SA';
	            } else {
	                return isLower ? 'ch' : 'CH';
	            }
	        },
	        longDateFormat : {
	            LT : 'HH:mm',
	            LTS : 'HH:mm:ss',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM [năm] YYYY',
	            LLL : 'D MMMM [năm] YYYY HH:mm',
	            LLLL : 'dddd, D MMMM [năm] YYYY HH:mm',
	            l : 'DD/M/YYYY',
	            ll : 'D MMM YYYY',
	            lll : 'D MMM YYYY HH:mm',
	            llll : 'ddd, D MMM YYYY HH:mm'
	        },
	        calendar : {
	            sameDay: '[Hôm nay lúc] LT',
	            nextDay: '[Ngày mai lúc] LT',
	            nextWeek: 'dddd [tuần tới lúc] LT',
	            lastDay: '[Hôm qua lúc] LT',
	            lastWeek: 'dddd [tuần rồi lúc] LT',
	            sameElse: 'L'
	        },
	        relativeTime : {
	            future : '%s tới',
	            past : '%s trước',
	            s : 'vài giây',
	            m : 'một phút',
	            mm : '%d phút',
	            h : 'một giờ',
	            hh : '%d giờ',
	            d : 'một ngày',
	            dd : '%d ngày',
	            M : 'một tháng',
	            MM : '%d tháng',
	            y : 'một năm',
	            yy : '%d năm'
	        },
	        ordinalParse: /\d{1,2}/,
	        ordinal : function (number) {
	            return number;
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return vi;
	
	}));

/***/ },
/* 312 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : pseudo (x-pseudo)
	//! author : Andrew Hood : https://github.com/andrewhood125
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var x_pseudo = moment.defineLocale('x-pseudo', {
	        months : 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'),
	        monthsShort : 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'),
	        monthsParseExact : true,
	        weekdays : 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'),
	        weekdaysShort : 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),
	        weekdaysMin : 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),
	        weekdaysParseExact : true,
	        longDateFormat : {
	            LT : 'HH:mm',
	            L : 'DD/MM/YYYY',
	            LL : 'D MMMM YYYY',
	            LLL : 'D MMMM YYYY HH:mm',
	            LLLL : 'dddd, D MMMM YYYY HH:mm'
	        },
	        calendar : {
	            sameDay : '[T~ódá~ý át] LT',
	            nextDay : '[T~ómó~rró~w át] LT',
	            nextWeek : 'dddd [át] LT',
	            lastDay : '[Ý~ést~érdá~ý át] LT',
	            lastWeek : '[L~ást] dddd [át] LT',
	            sameElse : 'L'
	        },
	        relativeTime : {
	            future : 'í~ñ %s',
	            past : '%s á~gó',
	            s : 'á ~féw ~sécó~ñds',
	            m : 'á ~míñ~úté',
	            mm : '%d m~íñú~tés',
	            h : 'á~ñ hó~úr',
	            hh : '%d h~óúrs',
	            d : 'á ~dáý',
	            dd : '%d d~áýs',
	            M : 'á ~móñ~th',
	            MM : '%d m~óñt~hs',
	            y : 'á ~ýéár',
	            yy : '%d ý~éárs'
	        },
	        ordinalParse: /\d{1,2}(th|st|nd|rd)/,
	        ordinal : function (number) {
	            var b = number % 10,
	                output = (~~(number % 100 / 10) === 1) ? 'th' :
	                (b === 1) ? 'st' :
	                (b === 2) ? 'nd' :
	                (b === 3) ? 'rd' : 'th';
	            return number + output;
	        },
	        week : {
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return x_pseudo;
	
	}));

/***/ },
/* 313 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : chinese (zh-cn)
	//! author : suupic : https://github.com/suupic
	//! author : Zeno Zeng : https://github.com/zenozeng
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var zh_cn = moment.defineLocale('zh-cn', {
	        months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
	        monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
	        weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
	        weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'),
	        weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
	        longDateFormat : {
	            LT : 'Ah点mm分',
	            LTS : 'Ah点m分s秒',
	            L : 'YYYY-MM-DD',
	            LL : 'YYYY年MMMD日',
	            LLL : 'YYYY年MMMD日Ah点mm分',
	            LLLL : 'YYYY年MMMD日ddddAh点mm分',
	            l : 'YYYY-MM-DD',
	            ll : 'YYYY年MMMD日',
	            lll : 'YYYY年MMMD日Ah点mm分',
	            llll : 'YYYY年MMMD日ddddAh点mm分'
	        },
	        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
	        meridiemHour: function (hour, meridiem) {
	            if (hour === 12) {
	                hour = 0;
	            }
	            if (meridiem === '凌晨' || meridiem === '早上' ||
	                    meridiem === '上午') {
	                return hour;
	            } else if (meridiem === '下午' || meridiem === '晚上') {
	                return hour + 12;
	            } else {
	                // '中午'
	                return hour >= 11 ? hour : hour + 12;
	            }
	        },
	        meridiem : function (hour, minute, isLower) {
	            var hm = hour * 100 + minute;
	            if (hm < 600) {
	                return '凌晨';
	            } else if (hm < 900) {
	                return '早上';
	            } else if (hm < 1130) {
	                return '上午';
	            } else if (hm < 1230) {
	                return '中午';
	            } else if (hm < 1800) {
	                return '下午';
	            } else {
	                return '晚上';
	            }
	        },
	        calendar : {
	            sameDay : function () {
	                return this.minutes() === 0 ? '[今天]Ah[点整]' : '[今天]LT';
	            },
	            nextDay : function () {
	                return this.minutes() === 0 ? '[明天]Ah[点整]' : '[明天]LT';
	            },
	            lastDay : function () {
	                return this.minutes() === 0 ? '[昨天]Ah[点整]' : '[昨天]LT';
	            },
	            nextWeek : function () {
	                var startOfWeek, prefix;
	                startOfWeek = moment().startOf('week');
	                prefix = this.diff(startOfWeek, 'days') >= 7 ? '[下]' : '[本]';
	                return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm';
	            },
	            lastWeek : function () {
	                var startOfWeek, prefix;
	                startOfWeek = moment().startOf('week');
	                prefix = this.unix() < startOfWeek.unix()  ? '[上]' : '[本]';
	                return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm';
	            },
	            sameElse : 'LL'
	        },
	        ordinalParse: /\d{1,2}(日|月|周)/,
	        ordinal : function (number, period) {
	            switch (period) {
	            case 'd':
	            case 'D':
	            case 'DDD':
	                return number + '日';
	            case 'M':
	                return number + '月';
	            case 'w':
	            case 'W':
	                return number + '周';
	            default:
	                return number;
	            }
	        },
	        relativeTime : {
	            future : '%s内',
	            past : '%s前',
	            s : '几秒',
	            m : '1 分钟',
	            mm : '%d 分钟',
	            h : '1 小时',
	            hh : '%d 小时',
	            d : '1 天',
	            dd : '%d 天',
	            M : '1 个月',
	            MM : '%d 个月',
	            y : '1 年',
	            yy : '%d 年'
	        },
	        week : {
	            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
	            dow : 1, // Monday is the first day of the week.
	            doy : 4  // The week that contains Jan 4th is the first week of the year.
	        }
	    });
	
	    return zh_cn;
	
	}));

/***/ },
/* 314 */
/***/ function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : traditional chinese (zh-tw)
	//! author : Ben : https://github.com/ben-lin
	
	;(function (global, factory) {
	    true ? factory(__webpack_require__(2)) :
	   typeof define === 'function' && define.amd ? define(['moment'], factory) :
	   factory(global.moment)
	}(this, function (moment) { 'use strict';
	
	
	    var zh_tw = moment.defineLocale('zh-tw', {
	        months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
	        monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
	        weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
	        weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),
	        weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
	        longDateFormat : {
	            LT : 'Ah點mm分',
	            LTS : 'Ah點m分s秒',
	            L : 'YYYY年MMMD日',
	            LL : 'YYYY年MMMD日',
	            LLL : 'YYYY年MMMD日Ah點mm分',
	            LLLL : 'YYYY年MMMD日ddddAh點mm分',
	            l : 'YYYY年MMMD日',
	            ll : 'YYYY年MMMD日',
	            lll : 'YYYY年MMMD日Ah點mm分',
	            llll : 'YYYY年MMMD日ddddAh點mm分'
	        },
	        meridiemParse: /早上|上午|中午|下午|晚上/,
	        meridiemHour : function (hour, meridiem) {
	            if (hour === 12) {
	                hour = 0;
	            }
	            if (meridiem === '早上' || meridiem === '上午') {
	                return hour;
	            } else if (meridiem === '中午') {
	                return hour >= 11 ? hour : hour + 12;
	            } else if (meridiem === '下午' || meridiem === '晚上') {
	                return hour + 12;
	            }
	        },
	        meridiem : function (hour, minute, isLower) {
	            var hm = hour * 100 + minute;
	            if (hm < 900) {
	                return '早上';
	            } else if (hm < 1130) {
	                return '上午';
	            } else if (hm < 1230) {
	                return '中午';
	            } else if (hm < 1800) {
	                return '下午';
	            } else {
	                return '晚上';
	            }
	        },
	        calendar : {
	            sameDay : '[今天]LT',
	            nextDay : '[明天]LT',
	            nextWeek : '[下]ddddLT',
	            lastDay : '[昨天]LT',
	            lastWeek : '[上]ddddLT',
	            sameElse : 'L'
	        },
	        ordinalParse: /\d{1,2}(日|月|週)/,
	        ordinal : function (number, period) {
	            switch (period) {
	            case 'd' :
	            case 'D' :
	            case 'DDD' :
	                return number + '日';
	            case 'M' :
	                return number + '月';
	            case 'w' :
	            case 'W' :
	                return number + '週';
	            default :
	                return number;
	            }
	        },
	        relativeTime : {
	            future : '%s內',
	            past : '%s前',
	            s : '幾秒',
	            m : '1分鐘',
	            mm : '%d分鐘',
	            h : '1小時',
	            hh : '%d小時',
	            d : '1天',
	            dd : '%d天',
	            M : '1個月',
	            MM : '%d個月',
	            y : '1年',
	            yy : '%d年'
	        }
	    });
	
	    return zh_tw;
	
	}));

/***/ },
/* 315 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var accordion_component_1 = __webpack_require__(122);
	var accordion_group_component_1 = __webpack_require__(316);
	var accordion_component_2 = __webpack_require__(122);
	exports.AccordionComponent = accordion_component_2.AccordionComponent;
	var accordion_group_component_2 = __webpack_require__(316);
	exports.AccordionPanelComponent = accordion_group_component_2.AccordionPanelComponent;
	exports.ACCORDION_DIRECTIVES = [accordion_component_1.AccordionComponent, accordion_group_component_1.AccordionPanelComponent];


/***/ },
/* 316 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var __param = (this && this.__param) || function (paramIndex, decorator) {
	    return function (target, key) { decorator(target, key, paramIndex); }
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(6);
	var collapse_1 = __webpack_require__(124);
	var accordion_component_1 = __webpack_require__(122);
	/* tslint:disable:component-selector-name */
	var AccordionPanelComponent = (function () {
	    function AccordionPanelComponent(accordion) {
	        this.accordion = accordion;
	    }
	    Object.defineProperty(AccordionPanelComponent.prototype, "isOpen", {
	        get: function () {
	            return this._isOpen;
	        },
	        set: function (value) {
	            this._isOpen = value;
	            if (value) {
	                this.accordion.closeOtherPanels(this);
	            }
	        },
	        enumerable: true,
	        configurable: true
	    });
	    AccordionPanelComponent.prototype.ngOnInit = function () {
	        this.panelClass = this.panelClass || 'panel-default';
	        this.accordion.addGroup(this);
	    };
	    AccordionPanelComponent.prototype.ngOnDestroy = function () {
	        this.accordion.removeGroup(this);
	    };
	    AccordionPanelComponent.prototype.toggleOpen = function (event) {
	        event.preventDefault();
	        if (!this.isDisabled) {
	            this.isOpen = !this.isOpen;
	        }
	    };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], AccordionPanelComponent.prototype, "heading", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], AccordionPanelComponent.prototype, "panelClass", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], AccordionPanelComponent.prototype, "isDisabled", void 0);
	    __decorate([
	        core_1.HostBinding('class.panel-open'),
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], AccordionPanelComponent.prototype, "isOpen", null);
	    AccordionPanelComponent = __decorate([
	        core_1.Component({
	            selector: 'accordion-group, accordion-panel',
	            directives: [collapse_1.CollapseDirective, common_1.NgClass],
	            template: "\n    <div class=\"panel\" [ngClass]=\"panelClass\">\n      <div class=\"panel-heading\" (click)=\"toggleOpen($event)\">\n        <h4 class=\"panel-title\">\n          <a href tabindex=\"0\" class=\"accordion-toggle\">\n            <span *ngIf=\"heading\" [ngClass]=\"{'text-muted': isDisabled}\">{{heading}}</span>\n            <ng-content select=\"[accordion-heading]\"></ng-content>\n          </a>\n        </h4>\n      </div>\n      <div class=\"panel-collapse collapse\" [collapse]=\"!isOpen\">\n        <div class=\"panel-body\">\n          <ng-content></ng-content>\n        </div>\n      </div>\n    </div>\n  "
	        }),
	        __param(0, core_1.Inject(accordion_component_1.AccordionComponent)), 
	        __metadata('design:paramtypes', [accordion_component_1.AccordionComponent])
	    ], AccordionPanelComponent);
	    return AccordionPanelComponent;
	}());
	exports.AccordionPanelComponent = AccordionPanelComponent;


/***/ },
/* 317 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var alert_component_1 = __webpack_require__(428);
	exports.AlertComponent = alert_component_1.AlertComponent;


/***/ },
/* 318 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var button_checkbox_directive_1 = __webpack_require__(319);
	var button_radio_directive_1 = __webpack_require__(320);
	var button_checkbox_directive_2 = __webpack_require__(319);
	exports.ButtonCheckboxDirective = button_checkbox_directive_2.ButtonCheckboxDirective;
	var button_radio_directive_2 = __webpack_require__(320);
	exports.ButtonRadioDirective = button_radio_directive_2.ButtonRadioDirective;
	exports.BUTTON_DIRECTIVES = [button_checkbox_directive_1.ButtonCheckboxDirective, button_radio_directive_1.ButtonRadioDirective];


/***/ },
/* 319 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var __param = (this && this.__param) || function (paramIndex, decorator) {
	    return function (target, key) { decorator(target, key, paramIndex); }
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(6);
	var ButtonCheckboxDirective = (function () {
	    function ButtonCheckboxDirective(cd) {
	        this.state = false;
	        this.onChange = Function.prototype;
	        this.onTouched = Function.prototype;
	        this.cd = cd;
	        // hack !
	        cd.valueAccessor = this;
	    }
	    // view -> model
	    ButtonCheckboxDirective.prototype.onClick = function () {
	        this.toggle(!this.state);
	        this.cd.viewToModelUpdate(this.value);
	    };
	    ButtonCheckboxDirective.prototype.ngOnInit = function () {
	        this.toggle(this.trueValue === this.value);
	    };
	    Object.defineProperty(ButtonCheckboxDirective.prototype, "trueValue", {
	        get: function () {
	            return typeof this.btnCheckboxTrue !== 'undefined'
	                ? this.btnCheckboxTrue
	                : true;
	        },
	        enumerable: true,
	        configurable: true
	    });
	    Object.defineProperty(ButtonCheckboxDirective.prototype, "falseValue", {
	        get: function () {
	            return typeof this.btnCheckboxFalse !== 'undefined'
	                ? this.btnCheckboxFalse
	                : false;
	        },
	        enumerable: true,
	        configurable: true
	    });
	    ButtonCheckboxDirective.prototype.toggle = function (state) {
	        this.state = state;
	        this.value = this.state ? this.trueValue : this.falseValue;
	    };
	    // ControlValueAccessor
	    // model -> view
	    ButtonCheckboxDirective.prototype.writeValue = function (value) {
	        this.state = this.trueValue === value;
	        this.value = value;
	    };
	    ButtonCheckboxDirective.prototype.registerOnChange = function (fn) {
	        this.onChange = fn;
	    };
	    ButtonCheckboxDirective.prototype.registerOnTouched = function (fn) {
	        this.onTouched = fn;
	    };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], ButtonCheckboxDirective.prototype, "btnCheckboxTrue", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], ButtonCheckboxDirective.prototype, "btnCheckboxFalse", void 0);
	    __decorate([
	        core_1.HostBinding('class.active'), 
	        __metadata('design:type', Boolean)
	    ], ButtonCheckboxDirective.prototype, "state", void 0);
	    __decorate([
	        core_1.HostListener('click'), 
	        __metadata('design:type', Function), 
	        __metadata('design:paramtypes', []), 
	        __metadata('design:returntype', void 0)
	    ], ButtonCheckboxDirective.prototype, "onClick", null);
	    ButtonCheckboxDirective = __decorate([
	        core_1.Directive({ selector: '[btnCheckbox][ngModel]' }),
	        __param(0, core_1.Self()), 
	        __metadata('design:paramtypes', [common_1.NgModel])
	    ], ButtonCheckboxDirective);
	    return ButtonCheckboxDirective;
	}());
	exports.ButtonCheckboxDirective = ButtonCheckboxDirective;


/***/ },
/* 320 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var __param = (this && this.__param) || function (paramIndex, decorator) {
	    return function (target, key) { decorator(target, key, paramIndex); }
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(6);
	var ButtonRadioDirective = (function () {
	    function ButtonRadioDirective(cd, el) {
	        this.onChange = Function.prototype;
	        this.onTouched = Function.prototype;
	        // hack!
	        this.cd = cd;
	        this.el = el;
	        cd.valueAccessor = this;
	    }
	    Object.defineProperty(ButtonRadioDirective.prototype, "isActive", {
	        get: function () {
	            return this.btnRadio === this.value;
	        },
	        enumerable: true,
	        configurable: true
	    });
	    ButtonRadioDirective.prototype.onClick = function () {
	        if (this.uncheckable && this.btnRadio === this.value) {
	            return this.cd.viewToModelUpdate(void 0);
	        }
	        this.cd.viewToModelUpdate(this.btnRadio);
	    };
	    ButtonRadioDirective.prototype.ngOnInit = function () {
	        this.uncheckable = typeof this.uncheckable !== 'undefined';
	    };
	    Object.defineProperty(ButtonRadioDirective.prototype, "value", {
	        // hack view model!
	        get: function () {
	            return this.cd.viewModel;
	        },
	        set: function (value) {
	            this.cd.viewModel = value;
	        },
	        enumerable: true,
	        configurable: true
	    });
	    // ControlValueAccessor
	    // model -> view
	    ButtonRadioDirective.prototype.writeValue = function (value) {
	        this.value = value;
	    };
	    ButtonRadioDirective.prototype.registerOnChange = function (fn) {
	        this.onChange = fn;
	    };
	    ButtonRadioDirective.prototype.registerOnTouched = function (fn) {
	        this.onTouched = fn;
	    };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], ButtonRadioDirective.prototype, "btnRadio", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], ButtonRadioDirective.prototype, "uncheckable", void 0);
	    __decorate([
	        core_1.HostBinding('class.active'), 
	        __metadata('design:type', Boolean)
	    ], ButtonRadioDirective.prototype, "isActive", null);
	    __decorate([
	        core_1.HostListener('click'), 
	        __metadata('design:type', Function), 
	        __metadata('design:paramtypes', []), 
	        __metadata('design:returntype', void 0)
	    ], ButtonRadioDirective.prototype, "onClick", null);
	    ButtonRadioDirective = __decorate([
	        core_1.Directive({ selector: '[btnRadio][ngModel]' }),
	        __param(0, core_1.Self()), 
	        __metadata('design:paramtypes', [common_1.NgModel, core_1.ElementRef])
	    ], ButtonRadioDirective);
	    return ButtonRadioDirective;
	}());
	exports.ButtonRadioDirective = ButtonRadioDirective;


/***/ },
/* 321 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var slide_component_1 = __webpack_require__(322);
	var carousel_component_1 = __webpack_require__(123);
	var slide_component_2 = __webpack_require__(322);
	exports.SlideComponent = slide_component_2.SlideComponent;
	var carousel_component_2 = __webpack_require__(123);
	exports.CarouselComponent = carousel_component_2.CarouselComponent;
	exports.CAROUSEL_DIRECTIVES = [carousel_component_1.CarouselComponent, slide_component_1.SlideComponent];


/***/ },
/* 322 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var carousel_component_1 = __webpack_require__(123);
	var SlideComponent = (function () {
	    function SlideComponent(carousel) {
	        this.addClass = true;
	        this.carousel = carousel;
	    }
	    SlideComponent.prototype.ngOnInit = function () {
	        this.carousel.addSlide(this);
	    };
	    SlideComponent.prototype.ngOnDestroy = function () {
	        this.carousel.removeSlide(this);
	    };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], SlideComponent.prototype, "index", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], SlideComponent.prototype, "direction", void 0);
	    __decorate([
	        core_1.HostBinding('class.active'),
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], SlideComponent.prototype, "active", void 0);
	    __decorate([
	        core_1.HostBinding('class.item'),
	        core_1.HostBinding('class.carousel-item'), 
	        __metadata('design:type', Boolean)
	    ], SlideComponent.prototype, "addClass", void 0);
	    SlideComponent = __decorate([
	        core_1.Component({
	            selector: 'slide',
	            template: "\n    <div [class.active]=\"active\" class=\"item text-center\">\n      <ng-content></ng-content>\n    </div>\n  "
	        }), 
	        __metadata('design:paramtypes', [carousel_component_1.CarouselComponent])
	    ], SlideComponent);
	    return SlideComponent;
	}());
	exports.SlideComponent = SlideComponent;


/***/ },
/* 323 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var __param = (this && this.__param) || function (paramIndex, decorator) {
	    return function (target, key) { decorator(target, key, paramIndex); }
	};
	var core_1 = __webpack_require__(1);
	var NgTranscludeDirective = (function () {
	    function NgTranscludeDirective(_viewRef) {
	        this.viewRef = _viewRef;
	    }
	    Object.defineProperty(NgTranscludeDirective.prototype, "ngTransclude", {
	        get: function () {
	            return this._ngTransclude;
	        },
	        set: function (templateRef) {
	            this._ngTransclude = templateRef;
	            if (templateRef) {
	                this.viewRef.createEmbeddedView(templateRef);
	            }
	        },
	        enumerable: true,
	        configurable: true
	    });
	    NgTranscludeDirective = __decorate([
	        core_1.Directive({
	            selector: '[ngTransclude]',
	            properties: ['ngTransclude']
	        }),
	        __param(0, core_1.Inject(core_1.ViewContainerRef)), 
	        __metadata('design:paramtypes', [core_1.ViewContainerRef])
	    ], NgTranscludeDirective);
	    return NgTranscludeDirective;
	}());
	exports.NgTranscludeDirective = NgTranscludeDirective;


/***/ },
/* 324 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	/*
	 todo: general:
	 1. Popup
	 2. Keyboard support
	 3. custom-class attribute support
	 4. date-disabled attribute support
	 5. template-url attribute support
	 */
	var datepicker_popup_component_1 = __webpack_require__(325);
	var datepicker_component_1 = __webpack_require__(125);
	var datepicker_popup_component_2 = __webpack_require__(325);
	exports.DatePickerPopupDirective = datepicker_popup_component_2.DatePickerPopupDirective;
	var datepicker_component_2 = __webpack_require__(125);
	exports.DatePickerComponent = datepicker_component_2.DatePickerComponent;
	exports.DATEPICKER_DIRECTIVES = [datepicker_component_1.DatePickerComponent, datepicker_popup_component_1.DatePickerPopupDirective];


/***/ },
/* 325 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var __param = (this && this.__param) || function (paramIndex, decorator) {
	    return function (target, key) { decorator(target, key, paramIndex); }
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(6);
	var position_1 = __webpack_require__(71);
	var datepicker_component_1 = __webpack_require__(125);
	// import {DatePickerInner} from './datepicker-inner';
	// import {DayPicker} from './daypicker';
	// import {MonthPicker} from './monthpicker';
	// import {YearPicker} from './yearpicker';
	var PopupOptions = (function () {
	    function PopupOptions(options) {
	        Object.assign(this, options);
	    }
	    return PopupOptions;
	}());
	var datePickerPopupConfig = {
	    datepickerPopup: 'YYYY-MM-dd',
	    currentText: 'Today',
	    clearText: 'Clear',
	    closeText: 'Done',
	    closeOnDateSelection: true,
	    showButtonBar: true,
	    onOpenFocus: true
	};
	var PopupContainerComponent = (function () {
	    function PopupContainerComponent(element, options) {
	        // false positive
	        /* tslint:disable:no-unused-variable */
	        this.showButtonBar = true;
	        this.update1 = new core_1.EventEmitter(false);
	        this.element = element;
	        Object.assign(this, options);
	        this.classMap = { 'in': false };
	        this.classMap[options.placement] = true;
	    }
	    PopupContainerComponent.prototype.onUpdate = function ($event) {
	        console.log('update', $event);
	        if ($event) {
	            if ($event.toString() !== '[object Date]') {
	                $event = new Date($event);
	            }
	            this.popupComp.activeDate = $event;
	        }
	    };
	    PopupContainerComponent.prototype.position = function (hostEl) {
	        this.display = 'block';
	        this.top = '0px';
	        this.left = '0px';
	        var p = position_1.positionService
	            .positionElements(hostEl.nativeElement, this.element.nativeElement.children[0], this.placement, false);
	        this.top = p.top + 'px';
	    };
	    PopupContainerComponent.prototype.getText = function (key) {
	        return this[key + 'Text'] || datePickerPopupConfig[key + 'Text'];
	    };
	    PopupContainerComponent.prototype.isDisabled = function () {
	        return false;
	    };
	    PopupContainerComponent = __decorate([
	        core_1.Component({
	            selector: 'popup-container',
	            events: ['update1'],
	            template: "\n    <ul class=\"dropdown-menu\"\n        style=\"display: block\"\n        [ngStyle]=\"{top: top, left: left, display: display}\"\n        [ngClass]=\"classMap\">\n        <li>\n             <datepicker (cupdate)=\"onUpdate($event)\" *ngIf=\"popupComp\" [(ngModel)]=\"popupComp.cd.model\" [show-weeks]=\"true\"></datepicker>\n        </li>\n        <li *ngIf=\"showButtonBar\" style=\"padding:10px 9px 2px\">\n            <span class=\"btn-group pull-left\">\n                 <button type=\"button\" class=\"btn btn-sm btn-info\" (click)=\"select('today')\" ng-disabled=\"isDisabled('today')\">{{ getText('current') }}</button>\n                 <button type=\"button\" class=\"btn btn-sm btn-danger\" (click)=\"select(null)\">{{ getText('clear') }}</button>\n            </span>\n            <button type=\"button\" class=\"btn btn-sm btn-success pull-right\" (click)=\"close()\">{{ getText('close') }}</button>\n        </li>\n    </ul>",
	            directives: [common_1.NgClass, common_1.NgStyle, datepicker_component_1.DatePickerComponent, common_1.FORM_DIRECTIVES, common_1.CORE_DIRECTIVES],
	            encapsulation: core_1.ViewEncapsulation.None
	        }), 
	        __metadata('design:paramtypes', [core_1.ElementRef, PopupOptions])
	    ], PopupContainerComponent);
	    return PopupContainerComponent;
	}());
	var DatePickerPopupDirective = (function () {
	    function DatePickerPopupDirective(cd, viewContainerRef, renderer, loader) {
	        this._isOpen = false;
	        this.placement = 'bottom';
	        this.cd = cd;
	        this.viewContainerRef = viewContainerRef;
	        this.renderer = renderer;
	        this.loader = loader;
	        this.activeDate = cd.model;
	    }
	    Object.defineProperty(DatePickerPopupDirective.prototype, "activeDate", {
	        get: function () {
	            return this._activeDate;
	        },
	        set: function (value) {
	            this._activeDate = value;
	        },
	        enumerable: true,
	        configurable: true
	    });
	    Object.defineProperty(DatePickerPopupDirective.prototype, "isOpen", {
	        get: function () {
	            return this._isOpen;
	        },
	        set: function (value) {
	            var _this = this;
	            var fn = function () {
	                _this._isOpen = value;
	            };
	            if (value === true) {
	                this.show(fn);
	            }
	            if (value === false) {
	                this.hide(fn);
	            }
	        },
	        enumerable: true,
	        configurable: true
	    });
	    DatePickerPopupDirective.prototype.hide = function (cb) {
	        if (this.popup) {
	            this.popup.then(function (componentRef) {
	                componentRef.destroy();
	                cb();
	                return componentRef;
	            });
	        }
	        else {
	            cb();
	        }
	    };
	    DatePickerPopupDirective.prototype.show = function (cb) {
	        var _this = this;
	        var options = new PopupOptions({
	            placement: this.placement
	        });
	        var binding = core_1.ReflectiveInjector.resolve([
	            core_1.provide(PopupOptions, { useValue: options })
	        ]);
	        this.popup = this.loader
	            .loadNextToLocation(PopupContainerComponent, this.viewContainerRef, binding)
	            .then(function (componentRef) {
	            componentRef.instance.position(_this.viewContainerRef);
	            componentRef.instance.popupComp = _this;
	            /*componentRef.instance.update1.observer({
	             next: (newVal) => {
	             setProperty(this.renderer, this.elementRef, 'value', newVal);
	             }
	             });*/
	            cb();
	            return componentRef;
	        });
	    };
	    DatePickerPopupDirective = __decorate([
	        core_1.Directive({
	            selector: '[datepickerPopup][ngModel]',
	            // prop -> datepickerPopup - format
	            properties: ['datepickerPopup', 'isOpen'] /*,
	             host: {'(cupdate)': 'onUpdate1($event)'}*/
	        }),
	        __param(0, core_1.Self()), 
	        __metadata('design:paramtypes', [common_1.NgModel, core_1.ViewContainerRef, core_1.Renderer, core_1.DynamicComponentLoader])
	    ], DatePickerPopupDirective);
	    return DatePickerPopupDirective;
	}());
	exports.DatePickerPopupDirective = DatePickerPopupDirective;


/***/ },
/* 326 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var dropdown_directive_1 = __webpack_require__(70);
	var dropdown_menu_directive_1 = __webpack_require__(327);
	var dropdown_toggle_directive_1 = __webpack_require__(328);
	var dropdown_directive_2 = __webpack_require__(70);
	exports.DropdownDirective = dropdown_directive_2.DropdownDirective;
	var dropdown_menu_directive_2 = __webpack_require__(327);
	exports.DropdownMenuDirective = dropdown_menu_directive_2.DropdownMenuDirective;
	var dropdown_toggle_directive_2 = __webpack_require__(328);
	exports.DropdownToggleDirective = dropdown_toggle_directive_2.DropdownToggleDirective;
	exports.DROPDOWN_DIRECTIVES = [dropdown_directive_1.DropdownDirective, dropdown_toggle_directive_1.DropdownToggleDirective, dropdown_menu_directive_1.DropdownMenuDirective];


/***/ },
/* 327 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var __param = (this && this.__param) || function (paramIndex, decorator) {
	    return function (target, key) { decorator(target, key, paramIndex); }
	};
	var core_1 = __webpack_require__(1);
	var dropdown_directive_1 = __webpack_require__(70);
	var DropdownMenuDirective = (function () {
	    function DropdownMenuDirective(dropdown, el) {
	        this.dropdown = dropdown;
	        this.el = el;
	    }
	    DropdownMenuDirective.prototype.ngOnInit = function () {
	        this.dropdown.dropDownMenu = this;
	    };
	    DropdownMenuDirective = __decorate([
	        core_1.Directive({ selector: '[dropdownMenu]' }),
	        __param(0, core_1.Host()), 
	        __metadata('design:paramtypes', [dropdown_directive_1.DropdownDirective, core_1.ElementRef])
	    ], DropdownMenuDirective);
	    return DropdownMenuDirective;
	}());
	exports.DropdownMenuDirective = DropdownMenuDirective;


/***/ },
/* 328 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var __param = (this && this.__param) || function (paramIndex, decorator) {
	    return function (target, key) { decorator(target, key, paramIndex); }
	};
	var core_1 = __webpack_require__(1);
	var dropdown_directive_1 = __webpack_require__(70);
	var lang_1 = __webpack_require__(4);
	/* tslint:disable */
	var MouseEvent = lang_1.global.MouseEvent;
	/* tslint:enable */
	var DropdownToggleDirective = (function () {
	    function DropdownToggleDirective(dropdown, el) {
	        this.disabled = false;
	        this.addClass = true;
	        this.dropdown = dropdown;
	        this.el = el;
	    }
	    DropdownToggleDirective.prototype.ngOnInit = function () {
	        this.dropdown.dropDownToggle = this;
	    };
	    Object.defineProperty(DropdownToggleDirective.prototype, "isOpen", {
	        get: function () {
	            return this.dropdown.isOpen;
	        },
	        enumerable: true,
	        configurable: true
	    });
	    DropdownToggleDirective.prototype.toggleDropdown = function (event) {
	        event.stopPropagation();
	        if (!this.disabled) {
	            this.dropdown.toggle();
	        }
	        return false;
	    };
	    __decorate([
	        core_1.HostBinding('class.disabled'),
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], DropdownToggleDirective.prototype, "disabled", void 0);
	    __decorate([
	        core_1.HostBinding('class.dropdown-toggle'),
	        core_1.HostBinding('attr.aria-haspopup'), 
	        __metadata('design:type', Boolean)
	    ], DropdownToggleDirective.prototype, "addClass", void 0);
	    __decorate([
	        core_1.HostBinding('attr.aria-expanded'), 
	        __metadata('design:type', Boolean)
	    ], DropdownToggleDirective.prototype, "isOpen", null);
	    __decorate([
	        core_1.HostListener('click', ['$event']), 
	        __metadata('design:type', Function), 
	        __metadata('design:paramtypes', [Object]), 
	        __metadata('design:returntype', Boolean)
	    ], DropdownToggleDirective.prototype, "toggleDropdown", null);
	    DropdownToggleDirective = __decorate([
	        core_1.Directive({ selector: '[dropdownToggle]' }),
	        __param(0, core_1.Host()), 
	        __metadata('design:paramtypes', [dropdown_directive_1.DropdownDirective, core_1.ElementRef])
	    ], DropdownToggleDirective);
	    return DropdownToggleDirective;
	}());
	exports.DropdownToggleDirective = DropdownToggleDirective;


/***/ },
/* 329 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var pagination_component_1 = __webpack_require__(126);
	var pager_component_1 = __webpack_require__(330);
	var pagination_component_2 = __webpack_require__(126);
	exports.PaginationComponent = pagination_component_2.PaginationComponent;
	var pager_component_2 = __webpack_require__(330);
	exports.PagerComponent = pager_component_2.PagerComponent;
	exports.PAGINATION_DIRECTIVES = [pagination_component_1.PaginationComponent, pager_component_1.PagerComponent];


/***/ },
/* 330 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var __param = (this && this.__param) || function (paramIndex, decorator) {
	    return function (target, key) { decorator(target, key, paramIndex); }
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(6);
	var pagination_component_1 = __webpack_require__(126);
	var pagerConfig = {
	    itemsPerPage: 10,
	    previousText: '« Previous',
	    nextText: 'Next »',
	    align: true
	};
	var PAGER_TEMPLATE = "\n    <ul class=\"pager\">\n      <li [class.disabled]=\"noPrevious()\" [class.previous]=\"align\" [ngClass]=\"{'pull-right': align}\">\n        <a href (click)=\"selectPage(page - 1, $event)\">{{getText('previous')}}</a>\n      </li>\n      <li [class.disabled]=\"noNext()\" [class.next]=\"align\" [ngClass]=\"{'pull-right': align}\">\n        <a href (click)=\"selectPage(page + 1, $event)\">{{getText('next')}}</a>\n      </li>\n  </ul>\n";
	/* tslint:disable */
	var PagerComponent = (function (_super) {
	    __extends(PagerComponent, _super);
	    function PagerComponent(cd, renderer, elementRef) {
	        _super.call(this, cd, renderer, elementRef);
	        this.config = pagerConfig;
	    }
	    PagerComponent = __decorate([
	        core_1.Component({
	            selector: 'pager[ngModel]',
	            template: PAGER_TEMPLATE,
	            directives: [common_1.NgClass],
	            inputs: [
	                'align',
	                'totalItems', 'itemsPerPage',
	                'previousText', 'nextText',
	            ]
	        }),
	        __param(0, core_1.Self()), 
	        __metadata('design:paramtypes', [common_1.NgModel, core_1.Renderer, core_1.ElementRef])
	    ], PagerComponent);
	    return PagerComponent;
	}(pagination_component_1.PaginationComponent));
	exports.PagerComponent = PagerComponent;


/***/ },
/* 331 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var progress_directive_1 = __webpack_require__(72);
	var bar_component_1 = __webpack_require__(127);
	var progressbar_component_1 = __webpack_require__(332);
	var progress_directive_2 = __webpack_require__(72);
	exports.ProgressDirective = progress_directive_2.ProgressDirective;
	var bar_component_2 = __webpack_require__(127);
	exports.BarComponent = bar_component_2.BarComponent;
	var progressbar_component_2 = __webpack_require__(332);
	exports.ProgressbarComponent = progressbar_component_2.ProgressbarComponent;
	exports.PROGRESSBAR_DIRECTIVES = [progress_directive_1.ProgressDirective, bar_component_1.BarComponent, progressbar_component_1.ProgressbarComponent];


/***/ },
/* 332 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var progress_directive_1 = __webpack_require__(72);
	var bar_component_1 = __webpack_require__(127);
	var ProgressbarComponent = (function () {
	    function ProgressbarComponent() {
	    }
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], ProgressbarComponent.prototype, "animate", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], ProgressbarComponent.prototype, "max", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], ProgressbarComponent.prototype, "type", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], ProgressbarComponent.prototype, "value", void 0);
	    ProgressbarComponent = __decorate([
	        core_1.Component({
	            selector: 'progressbar',
	            directives: [progress_directive_1.ProgressDirective, bar_component_1.BarComponent],
	            template: "\n    <div progress [animate]=\"animate\" [max]=\"max\">\n      <bar [type]=\"type\" [value]=\"value\">\n          <ng-content></ng-content>\n      </bar>\n    </div>\n  "
	        }), 
	        __metadata('design:paramtypes', [])
	    ], ProgressbarComponent);
	    return ProgressbarComponent;
	}());
	exports.ProgressbarComponent = ProgressbarComponent;


/***/ },
/* 333 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var rating_component_1 = __webpack_require__(435);
	exports.RatingComponent = rating_component_1.RatingComponent;


/***/ },
/* 334 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var tab_directive_1 = __webpack_require__(128);
	var tabset_component_1 = __webpack_require__(129);
	var tab_heading_directive_1 = __webpack_require__(335);
	var tab_directive_2 = __webpack_require__(128);
	exports.TabDirective = tab_directive_2.TabDirective;
	var tabset_component_2 = __webpack_require__(129);
	exports.TabsetComponent = tabset_component_2.TabsetComponent;
	var tab_heading_directive_2 = __webpack_require__(335);
	exports.TabHeadingDirective = tab_heading_directive_2.TabHeadingDirective;
	exports.TAB_DIRECTIVES = [tab_directive_1.TabDirective, tab_heading_directive_1.TabHeadingDirective, tabset_component_1.TabsetComponent];


/***/ },
/* 335 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var tab_directive_1 = __webpack_require__(128);
	var TabHeadingDirective = (function () {
	    function TabHeadingDirective(templateRef, tab) {
	        tab.headingRef = templateRef;
	    }
	    TabHeadingDirective = __decorate([
	        core_1.Directive({ selector: '[tabHeading]' }), 
	        __metadata('design:paramtypes', [core_1.TemplateRef, tab_directive_1.TabDirective])
	    ], TabHeadingDirective);
	    return TabHeadingDirective;
	}());
	exports.TabHeadingDirective = TabHeadingDirective;


/***/ },
/* 336 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var timepicker_component_1 = __webpack_require__(436);
	exports.TimepickerComponent = timepicker_component_1.TimepickerComponent;


/***/ },
/* 337 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var tooltip_directive_1 = __webpack_require__(339);
	var tooltip_container_component_1 = __webpack_require__(130);
	var tooltip_directive_2 = __webpack_require__(339);
	exports.TooltipDirective = tooltip_directive_2.TooltipDirective;
	var tooltip_container_component_2 = __webpack_require__(130);
	exports.TooltipContainerComponent = tooltip_container_component_2.TooltipContainerComponent;
	exports.TOOLTIP_DIRECTIVES = [tooltip_directive_1.TooltipDirective, tooltip_container_component_1.TooltipContainerComponent];


/***/ },
/* 338 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var TooltipOptions = (function () {
	    function TooltipOptions(options) {
	        Object.assign(this, options);
	    }
	    TooltipOptions = __decorate([
	        core_1.Injectable(), 
	        __metadata('design:paramtypes', [Object])
	    ], TooltipOptions);
	    return TooltipOptions;
	}());
	exports.TooltipOptions = TooltipOptions;


/***/ },
/* 339 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var tooltip_options_class_1 = __webpack_require__(338);
	var tooltip_container_component_1 = __webpack_require__(130);
	var TooltipDirective = (function () {
	    function TooltipDirective(viewContainerRef, loader) {
	        this.placement = 'top';
	        this.animation = true;
	        this.visible = false;
	        this.viewContainerRef = viewContainerRef;
	        this.loader = loader;
	    }
	    // todo: filter triggers
	    // params: event, target
	    TooltipDirective.prototype.show = function () {
	        if (this.visible) {
	            return;
	        }
	        this.visible = true;
	        var options = new tooltip_options_class_1.TooltipOptions({
	            content: this.content,
	            placement: this.placement,
	            animation: this.animation,
	            hostEl: this.viewContainerRef.element
	        });
	        var binding = core_1.ReflectiveInjector.resolve([
	            new core_1.Provider(tooltip_options_class_1.TooltipOptions, { useValue: options })
	        ]);
	        this.tooltip = this.loader
	            .loadNextToLocation(tooltip_container_component_1.TooltipContainerComponent, this.viewContainerRef, binding)
	            .then(function (componentRef) {
	            return componentRef;
	        });
	    };
	    // params event, target
	    TooltipDirective.prototype.hide = function () {
	        if (!this.visible) {
	            return;
	        }
	        this.visible = false;
	        this.tooltip.then(function (componentRef) {
	            componentRef.destroy();
	            return componentRef;
	        });
	    };
	    __decorate([
	        core_1.Input('tooltip'), 
	        __metadata('design:type', String)
	    ], TooltipDirective.prototype, "content", void 0);
	    __decorate([
	        core_1.Input('tooltipPlacement'), 
	        __metadata('design:type', String)
	    ], TooltipDirective.prototype, "placement", void 0);
	    __decorate([
	        core_1.Input('tooltipIsOpen'), 
	        __metadata('design:type', Boolean)
	    ], TooltipDirective.prototype, "isOpen", void 0);
	    __decorate([
	        core_1.Input('tooltipEnable'), 
	        __metadata('design:type', Boolean)
	    ], TooltipDirective.prototype, "enable", void 0);
	    __decorate([
	        core_1.Input('tooltipAnimation'), 
	        __metadata('design:type', Boolean)
	    ], TooltipDirective.prototype, "animation", void 0);
	    __decorate([
	        core_1.Input('tooltipAppendToBody'), 
	        __metadata('design:type', Boolean)
	    ], TooltipDirective.prototype, "appendToBody", void 0);
	    __decorate([
	        core_1.HostListener('focusin', ['$event', '$target']),
	        core_1.HostListener('mouseenter', ['$event', '$target']), 
	        __metadata('design:type', Function), 
	        __metadata('design:paramtypes', []), 
	        __metadata('design:returntype', void 0)
	    ], TooltipDirective.prototype, "show", null);
	    __decorate([
	        core_1.HostListener('focusout', ['$event', '$target']),
	        core_1.HostListener('mouseleave', ['$event', '$target']), 
	        __metadata('design:type', Function), 
	        __metadata('design:paramtypes', []), 
	        __metadata('design:returntype', void 0)
	    ], TooltipDirective.prototype, "hide", null);
	    TooltipDirective = __decorate([
	        core_1.Directive({ selector: '[tooltip]' }), 
	        __metadata('design:paramtypes', [core_1.ViewContainerRef, core_1.DynamicComponentLoader])
	    ], TooltipDirective);
	    return TooltipDirective;
	}());
	exports.TooltipDirective = TooltipDirective;


/***/ },
/* 340 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var typeahead_directive_1 = __webpack_require__(342);
	var typeahead_container_component_1 = __webpack_require__(131);
	var typeahead_directive_2 = __webpack_require__(342);
	exports.TypeaheadDirective = typeahead_directive_2.TypeaheadDirective;
	var typeahead_container_component_2 = __webpack_require__(131);
	exports.TypeaheadContainerComponent = typeahead_container_component_2.TypeaheadContainerComponent;
	var typeahead_options_class_1 = __webpack_require__(132);
	exports.TypeaheadOptions = typeahead_options_class_1.TypeaheadOptions;
	exports.TYPEAHEAD_DIRECTIVES = [typeahead_directive_1.TypeaheadDirective, typeahead_container_component_1.TypeaheadContainerComponent];


/***/ },
/* 341 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var latin_map_1 = __webpack_require__(437);
	var TypeaheadUtils = (function () {
	    function TypeaheadUtils() {
	    }
	    TypeaheadUtils.latinize = function (str) {
	        return str.replace(/[^A-Za-z0-9\[\] ]/g, function (a) {
	            return TypeaheadUtils.latinMap[a] || a;
	        });
	    };
	    TypeaheadUtils.escapeRegexp = function (queryToEscape) {
	        // Regex: capture the whole query string and replace it with the string
	        // that will be used to match the results, for example if the capture is
	        // 'a' the result will be \a
	        return queryToEscape.replace(/([.?*+^$[\]\\(){}|-])/g, '\\$1');
	    };
	    /* tslint:disable */
	    TypeaheadUtils.tokenize = function (str, wordRegexDelimiters, phraseRegexDelimiters) {
	        if (wordRegexDelimiters === void 0) { wordRegexDelimiters = ' '; }
	        if (phraseRegexDelimiters === void 0) { phraseRegexDelimiters = ''; }
	        /* tslint:enable */
	        var regexStr = '(?:[' + phraseRegexDelimiters + '])([^' + phraseRegexDelimiters + ']+)(?:[' + phraseRegexDelimiters + '])|([^' + wordRegexDelimiters + ']+)';
	        var preTokenized = str.split(new RegExp(regexStr, 'g'));
	        var result = [];
	        var preTokenizedLength = preTokenized.length;
	        var token;
	        var replacePhraseDelimiters = new RegExp('[' + phraseRegexDelimiters + ']+', 'g');
	        for (var i = 0; i < preTokenizedLength; i += 1) {
	            token = preTokenized[i];
	            if (token && token.length && token !== wordRegexDelimiters) {
	                result.push(token.replace(replacePhraseDelimiters, ''));
	            }
	        }
	        return result;
	    };
	    TypeaheadUtils.latinMap = latin_map_1.latinMap;
	    return TypeaheadUtils;
	}());
	exports.TypeaheadUtils = TypeaheadUtils;


/***/ },
/* 342 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(6);
	var typeahead_utils_1 = __webpack_require__(341);
	var typeahead_container_component_1 = __webpack_require__(131);
	var typeahead_options_class_1 = __webpack_require__(132);
	var lang_1 = __webpack_require__(4);
	/* tslint:disable */
	var KeyboardEvent = lang_1.global.KeyboardEvent;
	/* tslint:enable */
	// https://github.com/angular/angular/blob/master/modules/@angular/src/core/forms/directives/shared.ts
	function setProperty(renderer, elementRef, propName, propValue) {
	    renderer.setElementProperty(elementRef.nativeElement, propName, propValue);
	}
	var TypeaheadDirective = (function () {
	    function TypeaheadDirective(cd, viewContainerRef, element, renderer, loader) {
	        this.typeaheadLoading = new core_1.EventEmitter(false);
	        this.typeaheadNoResults = new core_1.EventEmitter(false);
	        this.typeaheadOnSelect = new core_1.EventEmitter(false);
	        this.typeaheadMinLength = void 0;
	        this.typeaheadAsync = void 0;
	        this.typeaheadLatinize = true;
	        this.typeaheadSingleWords = true;
	        this.typeaheadWordDelimiters = ' ';
	        this.typeaheadPhraseDelimiters = '\'"';
	        this.isTypeaheadOptionsListActive = false;
	        this._matches = [];
	        this.placement = 'bottom-left';
	        this.element = element;
	        this.cd = cd;
	        this.viewContainerRef = viewContainerRef;
	        this.renderer = renderer;
	        this.loader = loader;
	    }
	    TypeaheadDirective.prototype.onChange = function (e) {
	        if (this.container) {
	            // esc
	            if (e.keyCode === 27) {
	                this.hide();
	                return;
	            }
	            // up
	            if (e.keyCode === 38) {
	                this.container.prevActiveMatch();
	                return;
	            }
	            // down
	            if (e.keyCode === 40) {
	                this.container.nextActiveMatch();
	                return;
	            }
	            // enter
	            if (e.keyCode === 13) {
	                this.container.selectActiveMatch();
	                return;
	            }
	        }
	        // Ensure that we have typed enough characters before triggering the
	        // matchers
	        if (this.cd.model.toString().length >= this.typeaheadMinLength) {
	            this.typeaheadLoading.emit(true);
	            if (this.typeaheadAsync === true) {
	                this.debouncer();
	            }
	            if (!this.typeaheadAsync) {
	                this.processMatches();
	                this.finalizeAsyncCall();
	            }
	        }
	        else {
	            // Not enough characters typed? Hide the popup.
	            this.hide();
	        }
	    };
	    TypeaheadDirective.prototype.onFocus = function () {
	        if (this.typeaheadMinLength === 0) {
	            this.typeaheadLoading.emit(true);
	            if (this.typeaheadAsync === true) {
	                this.debouncer();
	            }
	            if (!this.typeaheadAsync) {
	                this.processMatches();
	                this.finalizeAsyncCall();
	            }
	        }
	    };
	    TypeaheadDirective.prototype.onBlur = function () {
	        if (this.container && !this.container.isFocused) {
	            this.hide();
	        }
	    };
	    TypeaheadDirective.prototype.onKeydown = function (e) {
	        // no container - no problems
	        if (!this.container) {
	            return;
	        }
	        // if items is visible - prevent form submition
	        if (e.keyCode === 13) {
	            e.preventDefault();
	            return;
	        }
	        // if shift + tab, close items list
	        if (e.shiftKey && e.keyCode === 9) {
	            this.hide();
	            return;
	        }
	        // if tab select current item
	        if (!e.shiftKey && e.keyCode === 9) {
	            this.container.selectActiveMatch();
	            return;
	        }
	    };
	    TypeaheadDirective.prototype.ngOnInit = function () {
	        var _this = this;
	        this.typeaheadOptionsLimit = this.typeaheadOptionsLimit || 20;
	        this.typeaheadMinLength = this.typeaheadMinLength === void 0 ? 1 : this.typeaheadMinLength;
	        this.typeaheadWaitMs = this.typeaheadWaitMs || 0;
	        // async should be false in case of array
	        if (this.typeaheadAsync === void 0 && typeof this.typeahead !== 'function') {
	            this.typeaheadAsync = false;
	        }
	        // async should be true for any case of function
	        if (typeof this.typeahead === 'function') {
	            this.typeaheadAsync = true;
	        }
	        if (this.typeaheadAsync === true) {
	            this.debouncer = this.debounce(function () {
	                if (typeof _this.typeahead === 'function') {
	                    _this.typeahead()
	                        .then(function (matches) {
	                        _this._matches = [];
	                        for (var i = 0; i < matches.length; i++) {
	                            _this._matches.push(matches[i]);
	                            if (_this._matches.length > _this.typeaheadOptionsLimit - 1) {
	                                break;
	                            }
	                        }
	                        _this.finalizeAsyncCall();
	                    });
	                }
	                // source is array
	                if (typeof _this.typeahead === 'object' && _this.typeahead.length) {
	                    _this.processMatches();
	                    _this.finalizeAsyncCall();
	                }
	            }, 100);
	        }
	    };
	    TypeaheadDirective.prototype.show = function (matches) {
	        var _this = this;
	        var options = new typeahead_options_class_1.TypeaheadOptions({
	            typeaheadRef: this,
	            placement: this.placement,
	            animation: false
	        });
	        var binding = core_1.ReflectiveInjector.resolve([
	            core_1.provide(typeahead_options_class_1.TypeaheadOptions, { useValue: options })
	        ]);
	        this.popup = this.loader
	            .loadNextToLocation(typeahead_container_component_1.TypeaheadContainerComponent, this.viewContainerRef, binding)
	            .then(function (componentRef) {
	            componentRef.instance.position(_this.viewContainerRef.element);
	            _this.container = componentRef.instance;
	            _this.container.parent = _this;
	            // This improves the speedas it won't have to be done for each list item
	            var normalizedQuery = (_this.typeaheadLatinize
	                ? typeahead_utils_1.TypeaheadUtils.latinize(_this.cd.model)
	                : _this.cd.model).toString()
	                .toLowerCase();
	            _this.container.query = _this.typeaheadSingleWords
	                ? typeahead_utils_1.TypeaheadUtils.tokenize(normalizedQuery, _this.typeaheadWordDelimiters, _this.typeaheadPhraseDelimiters)
	                : normalizedQuery;
	            _this.container.matches = matches;
	            _this.container.field = _this.typeaheadOptionField;
	            _this.element.nativeElement.focus();
	            return componentRef;
	        });
	    };
	    TypeaheadDirective.prototype.hide = function () {
	        var _this = this;
	        if (this.container) {
	            this.popup.then(function (componentRef) {
	                componentRef.destroy();
	                _this.container = void 0;
	                return componentRef;
	            });
	        }
	    };
	    TypeaheadDirective.prototype.changeModel = function (value) {
	        var valueStr = ((typeof value === 'object' && this.typeaheadOptionField)
	            ? value[this.typeaheadOptionField]
	            : value).toString();
	        this.cd.viewToModelUpdate(valueStr);
	        setProperty(this.renderer, this.element, 'value', valueStr);
	        this.hide();
	    };
	    Object.defineProperty(TypeaheadDirective.prototype, "matches", {
	        get: function () {
	            return this._matches;
	        },
	        enumerable: true,
	        configurable: true
	    });
	    TypeaheadDirective.prototype.debounce = function (func, wait) {
	        var timeout;
	        var args;
	        var timestamp;
	        var waitOriginal = wait;
	        return function () {
	            // save details of latest call
	            args = [].slice.call(arguments, 0);
	            timestamp = Date.now();
	            // this trick is about implementing of 'typeaheadWaitMs'
	            // in this case we have adaptive 'wait' parameter
	            // we should use standard 'wait'('waitOriginal') in case of
	            // popup is opened, otherwise - 'typeaheadWaitMs' parameter
	            wait = this.container ? waitOriginal : this.typeaheadWaitMs;
	            // this is where the magic happens
	            var later = function () {
	                // how long ago was the last call
	                var last = Date.now() - timestamp;
	                // if the latest call was less that the wait period ago
	                // then we reset the timeout to wait for the difference
	                if (last < wait) {
	                    timeout = setTimeout(later, wait - last);
	                }
	                else {
	                    timeout = void 0;
	                    func.apply(this, args);
	                }
	            };
	            // we only need to set the timer now if one isn't already running
	            if (!timeout) {
	                timeout = setTimeout(later, wait);
	            }
	        };
	    };
	    TypeaheadDirective.prototype.processMatches = function () {
	        this._matches = [];
	        if (!this.typeahead) {
	            return;
	        }
	        if (!this.cd.model) {
	            for (var i = 0; i < Math.min(this.typeaheadOptionsLimit, this.typeahead.length); i++) {
	                this._matches.push(this.typeahead[i]);
	            }
	            return;
	        }
	        // If singleWords, break model here to not be doing extra work on each
	        // iteration
	        var normalizedQuery = (this.typeaheadLatinize
	            ? typeahead_utils_1.TypeaheadUtils.latinize(this.cd.model)
	            : this.cd.model).toString()
	            .toLowerCase();
	        normalizedQuery = this.typeaheadSingleWords
	            ? typeahead_utils_1.TypeaheadUtils.tokenize(normalizedQuery, this.typeaheadWordDelimiters, this.typeaheadPhraseDelimiters)
	            : normalizedQuery;
	        for (var i = 0; i < this.typeahead.length; i++) {
	            var match = void 0;
	            if (typeof this.typeahead[i] === 'object' &&
	                this.typeahead[i][this.typeaheadOptionField]) {
	                match = this.typeaheadLatinize
	                    ? typeahead_utils_1.TypeaheadUtils.latinize(this.typeahead[i][this.typeaheadOptionField].toString())
	                    : this.typeahead[i][this.typeaheadOptionField].toString();
	            }
	            if (typeof this.typeahead[i] === 'string') {
	                match = this.typeaheadLatinize
	                    ? typeahead_utils_1.TypeaheadUtils.latinize(this.typeahead[i].toString())
	                    : this.typeahead[i].toString();
	            }
	            if (!match) {
	                console.log('Invalid match type', typeof this.typeahead[i], this.typeaheadOptionField);
	                continue;
	            }
	            if (this.testMatch(match.toLowerCase(), normalizedQuery)) {
	                this._matches.push(this.typeahead[i]);
	                if (this._matches.length > this.typeaheadOptionsLimit - 1) {
	                    break;
	                }
	            }
	        }
	    };
	    TypeaheadDirective.prototype.testMatch = function (match, test) {
	        var spaceLength;
	        if (typeof test === 'object') {
	            spaceLength = test.length;
	            for (var i = 0; i < spaceLength; i += 1) {
	                if (test[i].length > 0 && match.indexOf(test[i]) < 0) {
	                    return false;
	                }
	            }
	            return true;
	        }
	        else {
	            return match.indexOf(test) >= 0;
	        }
	    };
	    TypeaheadDirective.prototype.finalizeAsyncCall = function () {
	        this.typeaheadLoading.emit(false);
	        this.typeaheadNoResults.emit(this.cd.model.toString().length >=
	            this.typeaheadMinLength && this.matches.length <= 0);
	        if (this._matches.length <= 0) {
	            this.hide();
	            return;
	        }
	        if (this.container && this._matches.length > 0) {
	            // This improves the speedas it won't have to be done for each list item
	            var normalizedQuery = (this.typeaheadLatinize
	                ? typeahead_utils_1.TypeaheadUtils.latinize(this.cd.model)
	                : this.cd.model).toString()
	                .toLowerCase();
	            this.container.query = this.typeaheadSingleWords
	                ? typeahead_utils_1.TypeaheadUtils.tokenize(normalizedQuery, this.typeaheadWordDelimiters, this.typeaheadPhraseDelimiters)
	                : normalizedQuery;
	            this.container.matches = this._matches;
	        }
	        if (!this.container && this._matches.length > 0) {
	            this.show(this._matches);
	        }
	    };
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', core_1.EventEmitter)
	    ], TypeaheadDirective.prototype, "typeaheadLoading", void 0);
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', core_1.EventEmitter)
	    ], TypeaheadDirective.prototype, "typeaheadNoResults", void 0);
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', core_1.EventEmitter)
	    ], TypeaheadDirective.prototype, "typeaheadOnSelect", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Object)
	    ], TypeaheadDirective.prototype, "typeahead", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], TypeaheadDirective.prototype, "typeaheadMinLength", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], TypeaheadDirective.prototype, "typeaheadWaitMs", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], TypeaheadDirective.prototype, "typeaheadOptionsLimit", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], TypeaheadDirective.prototype, "typeaheadOptionField", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], TypeaheadDirective.prototype, "typeaheadAsync", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], TypeaheadDirective.prototype, "typeaheadLatinize", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], TypeaheadDirective.prototype, "typeaheadSingleWords", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], TypeaheadDirective.prototype, "typeaheadWordDelimiters", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], TypeaheadDirective.prototype, "typeaheadPhraseDelimiters", void 0);
	    __decorate([
	        core_1.HostListener('keyup', ['$event']), 
	        __metadata('design:type', Function), 
	        __metadata('design:paramtypes', [Object]), 
	        __metadata('design:returntype', void 0)
	    ], TypeaheadDirective.prototype, "onChange", null);
	    __decorate([
	        core_1.HostListener('focus', ['$event.target']), 
	        __metadata('design:type', Function), 
	        __metadata('design:paramtypes', []), 
	        __metadata('design:returntype', void 0)
	    ], TypeaheadDirective.prototype, "onFocus", null);
	    __decorate([
	        core_1.HostListener('blur', ['$event.target']), 
	        __metadata('design:type', Function), 
	        __metadata('design:paramtypes', []), 
	        __metadata('design:returntype', void 0)
	    ], TypeaheadDirective.prototype, "onBlur", null);
	    __decorate([
	        core_1.HostListener('keydown', ['$event']), 
	        __metadata('design:type', Function), 
	        __metadata('design:paramtypes', [Object]), 
	        __metadata('design:returntype', void 0)
	    ], TypeaheadDirective.prototype, "onKeydown", null);
	    TypeaheadDirective = __decorate([
	        core_1.Directive({
	            selector: '[typeahead][ngModel]'
	        }), 
	        __metadata('design:paramtypes', [common_1.NgModel, core_1.ViewContainerRef, core_1.ElementRef, core_1.Renderer, core_1.DynamicComponentLoader])
	    ], TypeaheadDirective);
	    return TypeaheadDirective;
	}());
	exports.TypeaheadDirective = TypeaheadDirective;


/***/ },
/* 343 */,
/* 344 */,
/* 345 */,
/* 346 */,
/* 347 */,
/* 348 */,
/* 349 */,
/* 350 */,
/* 351 */,
/* 352 */,
/* 353 */,
/* 354 */,
/* 355 */,
/* 356 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	function __export(m) {
	    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
	}
	/**
	* @module
	* @description
	* Starting point to import all compiler APIs.
	*/
	var element_schema_registry_1 = __webpack_require__(57);
	exports.ElementSchemaRegistry = element_schema_registry_1.ElementSchemaRegistry;
	var compiler_1 = __webpack_require__(359);
	exports.COMPILER_PROVIDERS = compiler_1.COMPILER_PROVIDERS;
	exports.TEMPLATE_TRANSFORMS = compiler_1.TEMPLATE_TRANSFORMS;
	exports.CompilerConfig = compiler_1.CompilerConfig;
	exports.RenderTypes = compiler_1.RenderTypes;
	exports.UrlResolver = compiler_1.UrlResolver;
	exports.DEFAULT_PACKAGE_URL_PROVIDER = compiler_1.DEFAULT_PACKAGE_URL_PROVIDER;
	exports.createOfflineCompileUrlResolver = compiler_1.createOfflineCompileUrlResolver;
	exports.XHR = compiler_1.XHR;
	exports.ViewResolver = compiler_1.ViewResolver;
	exports.DirectiveResolver = compiler_1.DirectiveResolver;
	exports.PipeResolver = compiler_1.PipeResolver;
	exports.SourceModule = compiler_1.SourceModule;
	exports.NormalizedComponentWithViewDirectives = compiler_1.NormalizedComponentWithViewDirectives;
	exports.OfflineCompiler = compiler_1.OfflineCompiler;
	exports.CompileMetadataWithIdentifier = compiler_1.CompileMetadataWithIdentifier;
	exports.CompileMetadataWithType = compiler_1.CompileMetadataWithType;
	exports.CompileIdentifierMetadata = compiler_1.CompileIdentifierMetadata;
	exports.CompileDiDependencyMetadata = compiler_1.CompileDiDependencyMetadata;
	exports.CompileProviderMetadata = compiler_1.CompileProviderMetadata;
	exports.CompileFactoryMetadata = compiler_1.CompileFactoryMetadata;
	exports.CompileTokenMetadata = compiler_1.CompileTokenMetadata;
	exports.CompileTypeMetadata = compiler_1.CompileTypeMetadata;
	exports.CompileQueryMetadata = compiler_1.CompileQueryMetadata;
	exports.CompileTemplateMetadata = compiler_1.CompileTemplateMetadata;
	exports.CompileDirectiveMetadata = compiler_1.CompileDirectiveMetadata;
	exports.CompilePipeMetadata = compiler_1.CompilePipeMetadata;
	__export(__webpack_require__(24));
	__export(__webpack_require__(357));
	//# sourceMappingURL=compiler.js.map

/***/ },
/* 357 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var selector = __webpack_require__(93);
	var pathUtil = __webpack_require__(369);
	var __compiler_private__;
	(function (__compiler_private__) {
	    __compiler_private__.SelectorMatcher = selector.SelectorMatcher;
	    __compiler_private__.CssSelector = selector.CssSelector;
	    __compiler_private__.AssetUrl = pathUtil.AssetUrl;
	    __compiler_private__.ImportGenerator = pathUtil.ImportGenerator;
	})(__compiler_private__ = exports.__compiler_private__ || (exports.__compiler_private__ = {}));
	//# sourceMappingURL=private_export.js.map

/***/ },
/* 358 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var lang_1 = __webpack_require__(3);
	var exceptions_1 = __webpack_require__(8);
	function assertArrayOfStrings(identifier, value) {
	    if (!lang_1.assertionsEnabled() || lang_1.isBlank(value)) {
	        return;
	    }
	    if (!lang_1.isArray(value)) {
	        throw new exceptions_1.BaseException("Expected '" + identifier + "' to be an array of strings.");
	    }
	    for (var i = 0; i < value.length; i += 1) {
	        if (!lang_1.isString(value[i])) {
	            throw new exceptions_1.BaseException("Expected '" + identifier + "' to be an array of strings.");
	        }
	    }
	}
	exports.assertArrayOfStrings = assertArrayOfStrings;
	//# sourceMappingURL=assertions.js.map

/***/ },
/* 359 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	function __export(m) {
	    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
	}
	var core_1 = __webpack_require__(1);
	var lang_1 = __webpack_require__(3);
	__export(__webpack_require__(24));
	var template_parser_1 = __webpack_require__(95);
	exports.TEMPLATE_TRANSFORMS = template_parser_1.TEMPLATE_TRANSFORMS;
	var config_1 = __webpack_require__(53);
	exports.CompilerConfig = config_1.CompilerConfig;
	exports.RenderTypes = config_1.RenderTypes;
	__export(__webpack_require__(16));
	__export(__webpack_require__(363));
	var runtime_compiler_1 = __webpack_require__(171);
	exports.RuntimeCompiler = runtime_compiler_1.RuntimeCompiler;
	__export(__webpack_require__(30));
	__export(__webpack_require__(98));
	var view_resolver_1 = __webpack_require__(97);
	exports.ViewResolver = view_resolver_1.ViewResolver;
	var directive_resolver_1 = __webpack_require__(88);
	exports.DirectiveResolver = directive_resolver_1.DirectiveResolver;
	var pipe_resolver_1 = __webpack_require__(92);
	exports.PipeResolver = pipe_resolver_1.PipeResolver;
	var template_parser_2 = __webpack_require__(95);
	var html_parser_1 = __webpack_require__(91);
	var directive_normalizer_1 = __webpack_require__(164);
	var metadata_resolver_1 = __webpack_require__(170);
	var style_compiler_1 = __webpack_require__(172);
	var view_compiler_1 = __webpack_require__(179);
	var config_2 = __webpack_require__(53);
	var runtime_compiler_2 = __webpack_require__(171);
	var element_schema_registry_1 = __webpack_require__(57);
	var dom_element_schema_registry_1 = __webpack_require__(372);
	var url_resolver_2 = __webpack_require__(30);
	var parser_1 = __webpack_require__(167);
	var lexer_1 = __webpack_require__(166);
	var view_resolver_2 = __webpack_require__(97);
	var directive_resolver_2 = __webpack_require__(88);
	var pipe_resolver_2 = __webpack_require__(92);
	function _createCompilerConfig() {
	    return new config_2.CompilerConfig(lang_1.assertionsEnabled(), false, true);
	}
	/**
	 * A set of providers that provide `RuntimeCompiler` and its dependencies to use for
	 * template compilation.
	 */
	exports.COMPILER_PROVIDERS = 
	/*@ts2dart_const*/ [
	    lexer_1.Lexer,
	    parser_1.Parser,
	    html_parser_1.HtmlParser,
	    template_parser_2.TemplateParser,
	    directive_normalizer_1.DirectiveNormalizer,
	    metadata_resolver_1.CompileMetadataResolver,
	    url_resolver_2.DEFAULT_PACKAGE_URL_PROVIDER,
	    style_compiler_1.StyleCompiler,
	    view_compiler_1.ViewCompiler,
	    /*@ts2dart_Provider*/ { provide: config_2.CompilerConfig, useFactory: _createCompilerConfig, deps: [] },
	    runtime_compiler_2.RuntimeCompiler,
	    /*@ts2dart_Provider*/ { provide: core_1.ComponentResolver, useExisting: runtime_compiler_2.RuntimeCompiler },
	    dom_element_schema_registry_1.DomElementSchemaRegistry,
	    /*@ts2dart_Provider*/ { provide: element_schema_registry_1.ElementSchemaRegistry, useExisting: dom_element_schema_registry_1.DomElementSchemaRegistry },
	    url_resolver_2.UrlResolver,
	    view_resolver_2.ViewResolver,
	    directive_resolver_2.DirectiveResolver,
	    pipe_resolver_2.PipeResolver
	];
	//# sourceMappingURL=compiler.js.map

/***/ },
/* 360 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var core_private_1 = __webpack_require__(13);
	var lang_1 = __webpack_require__(3);
	function hasLifecycleHook(lcInterface, token) {
	    if (!(token instanceof lang_1.Type))
	        return false;
	    var proto = token.prototype;
	    switch (lcInterface) {
	        case core_private_1.LifecycleHooks.AfterContentInit:
	            return !!proto.ngAfterContentInit;
	        case core_private_1.LifecycleHooks.AfterContentChecked:
	            return !!proto.ngAfterContentChecked;
	        case core_private_1.LifecycleHooks.AfterViewInit:
	            return !!proto.ngAfterViewInit;
	        case core_private_1.LifecycleHooks.AfterViewChecked:
	            return !!proto.ngAfterViewChecked;
	        case core_private_1.LifecycleHooks.OnChanges:
	            return !!proto.ngOnChanges;
	        case core_private_1.LifecycleHooks.DoCheck:
	            return !!proto.ngDoCheck;
	        case core_private_1.LifecycleHooks.OnDestroy:
	            return !!proto.ngOnDestroy;
	        case core_private_1.LifecycleHooks.OnInit:
	            return !!proto.ngOnInit;
	        default:
	            return false;
	    }
	}
	exports.hasLifecycleHook = hasLifecycleHook;
	//# sourceMappingURL=directive_lifecycle_reflector.js.map

/***/ },
/* 361 */
74,
/* 362 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var lang_1 = __webpack_require__(3);
	var collection_1 = __webpack_require__(7);
	var parse_util_1 = __webpack_require__(56);
	var html_tags_1 = __webpack_require__(54);
	(function (HtmlTokenType) {
	    HtmlTokenType[HtmlTokenType["TAG_OPEN_START"] = 0] = "TAG_OPEN_START";
	    HtmlTokenType[HtmlTokenType["TAG_OPEN_END"] = 1] = "TAG_OPEN_END";
	    HtmlTokenType[HtmlTokenType["TAG_OPEN_END_VOID"] = 2] = "TAG_OPEN_END_VOID";
	    HtmlTokenType[HtmlTokenType["TAG_CLOSE"] = 3] = "TAG_CLOSE";
	    HtmlTokenType[HtmlTokenType["TEXT"] = 4] = "TEXT";
	    HtmlTokenType[HtmlTokenType["ESCAPABLE_RAW_TEXT"] = 5] = "ESCAPABLE_RAW_TEXT";
	    HtmlTokenType[HtmlTokenType["RAW_TEXT"] = 6] = "RAW_TEXT";
	    HtmlTokenType[HtmlTokenType["COMMENT_START"] = 7] = "COMMENT_START";
	    HtmlTokenType[HtmlTokenType["COMMENT_END"] = 8] = "COMMENT_END";
	    HtmlTokenType[HtmlTokenType["CDATA_START"] = 9] = "CDATA_START";
	    HtmlTokenType[HtmlTokenType["CDATA_END"] = 10] = "CDATA_END";
	    HtmlTokenType[HtmlTokenType["ATTR_NAME"] = 11] = "ATTR_NAME";
	    HtmlTokenType[HtmlTokenType["ATTR_VALUE"] = 12] = "ATTR_VALUE";
	    HtmlTokenType[HtmlTokenType["DOC_TYPE"] = 13] = "DOC_TYPE";
	    HtmlTokenType[HtmlTokenType["EXPANSION_FORM_START"] = 14] = "EXPANSION_FORM_START";
	    HtmlTokenType[HtmlTokenType["EXPANSION_CASE_VALUE"] = 15] = "EXPANSION_CASE_VALUE";
	    HtmlTokenType[HtmlTokenType["EXPANSION_CASE_EXP_START"] = 16] = "EXPANSION_CASE_EXP_START";
	    HtmlTokenType[HtmlTokenType["EXPANSION_CASE_EXP_END"] = 17] = "EXPANSION_CASE_EXP_END";
	    HtmlTokenType[HtmlTokenType["EXPANSION_FORM_END"] = 18] = "EXPANSION_FORM_END";
	    HtmlTokenType[HtmlTokenType["EOF"] = 19] = "EOF";
	})(exports.HtmlTokenType || (exports.HtmlTokenType = {}));
	var HtmlTokenType = exports.HtmlTokenType;
	var HtmlToken = (function () {
	    function HtmlToken(type, parts, sourceSpan) {
	        this.type = type;
	        this.parts = parts;
	        this.sourceSpan = sourceSpan;
	    }
	    return HtmlToken;
	}());
	exports.HtmlToken = HtmlToken;
	var HtmlTokenError = (function (_super) {
	    __extends(HtmlTokenError, _super);
	    function HtmlTokenError(errorMsg, tokenType, span) {
	        _super.call(this, span, errorMsg);
	        this.tokenType = tokenType;
	    }
	    return HtmlTokenError;
	}(parse_util_1.ParseError));
	exports.HtmlTokenError = HtmlTokenError;
	var HtmlTokenizeResult = (function () {
	    function HtmlTokenizeResult(tokens, errors) {
	        this.tokens = tokens;
	        this.errors = errors;
	    }
	    return HtmlTokenizeResult;
	}());
	exports.HtmlTokenizeResult = HtmlTokenizeResult;
	function tokenizeHtml(sourceContent, sourceUrl, tokenizeExpansionForms) {
	    if (tokenizeExpansionForms === void 0) { tokenizeExpansionForms = false; }
	    return new _HtmlTokenizer(new parse_util_1.ParseSourceFile(sourceContent, sourceUrl), tokenizeExpansionForms)
	        .tokenize();
	}
	exports.tokenizeHtml = tokenizeHtml;
	var $EOF = 0;
	var $TAB = 9;
	var $LF = 10;
	var $FF = 12;
	var $CR = 13;
	var $SPACE = 32;
	var $BANG = 33;
	var $DQ = 34;
	var $HASH = 35;
	var $$ = 36;
	var $AMPERSAND = 38;
	var $SQ = 39;
	var $MINUS = 45;
	var $SLASH = 47;
	var $0 = 48;
	var $SEMICOLON = 59;
	var $9 = 57;
	var $COLON = 58;
	var $LT = 60;
	var $EQ = 61;
	var $GT = 62;
	var $QUESTION = 63;
	var $LBRACKET = 91;
	var $RBRACKET = 93;
	var $LBRACE = 123;
	var $RBRACE = 125;
	var $COMMA = 44;
	var $A = 65;
	var $F = 70;
	var $X = 88;
	var $Z = 90;
	var $a = 97;
	var $f = 102;
	var $z = 122;
	var $x = 120;
	var $NBSP = 160;
	var CR_OR_CRLF_REGEXP = /\r\n?/g;
	function unexpectedCharacterErrorMsg(charCode) {
	    var char = charCode === $EOF ? 'EOF' : lang_1.StringWrapper.fromCharCode(charCode);
	    return "Unexpected character \"" + char + "\"";
	}
	function unknownEntityErrorMsg(entitySrc) {
	    return "Unknown entity \"" + entitySrc + "\" - use the \"&#<decimal>;\" or  \"&#x<hex>;\" syntax";
	}
	var ControlFlowError = (function () {
	    function ControlFlowError(error) {
	        this.error = error;
	    }
	    return ControlFlowError;
	}());
	// See http://www.w3.org/TR/html51/syntax.html#writing
	var _HtmlTokenizer = (function () {
	    function _HtmlTokenizer(file, tokenizeExpansionForms) {
	        this.file = file;
	        this.tokenizeExpansionForms = tokenizeExpansionForms;
	        // Note: this is always lowercase!
	        this.peek = -1;
	        this.nextPeek = -1;
	        this.index = -1;
	        this.line = 0;
	        this.column = -1;
	        this.expansionCaseStack = [];
	        this.tokens = [];
	        this.errors = [];
	        this.input = file.content;
	        this.length = file.content.length;
	        this._advance();
	    }
	    _HtmlTokenizer.prototype._processCarriageReturns = function (content) {
	        // http://www.w3.org/TR/html5/syntax.html#preprocessing-the-input-stream
	        // In order to keep the original position in the source, we can not
	        // pre-process it.
	        // Instead CRs are processed right before instantiating the tokens.
	        return lang_1.StringWrapper.replaceAll(content, CR_OR_CRLF_REGEXP, '\n');
	    };
	    _HtmlTokenizer.prototype.tokenize = function () {
	        while (this.peek !== $EOF) {
	            var start = this._getLocation();
	            try {
	                if (this._attemptCharCode($LT)) {
	                    if (this._attemptCharCode($BANG)) {
	                        if (this._attemptCharCode($LBRACKET)) {
	                            this._consumeCdata(start);
	                        }
	                        else if (this._attemptCharCode($MINUS)) {
	                            this._consumeComment(start);
	                        }
	                        else {
	                            this._consumeDocType(start);
	                        }
	                    }
	                    else if (this._attemptCharCode($SLASH)) {
	                        this._consumeTagClose(start);
	                    }
	                    else {
	                        this._consumeTagOpen(start);
	                    }
	                }
	                else if (isSpecialFormStart(this.peek, this.nextPeek) && this.tokenizeExpansionForms) {
	                    this._consumeExpansionFormStart();
	                }
	                else if (this.peek === $EQ && this.tokenizeExpansionForms) {
	                    this._consumeExpansionCaseStart();
	                }
	                else if (this.peek === $RBRACE && this.isInExpansionCase() &&
	                    this.tokenizeExpansionForms) {
	                    this._consumeExpansionCaseEnd();
	                }
	                else if (this.peek === $RBRACE && this.isInExpansionForm() &&
	                    this.tokenizeExpansionForms) {
	                    this._consumeExpansionFormEnd();
	                }
	                else {
	                    this._consumeText();
	                }
	            }
	            catch (e) {
	                if (e instanceof ControlFlowError) {
	                    this.errors.push(e.error);
	                }
	                else {
	                    throw e;
	                }
	            }
	        }
	        this._beginToken(HtmlTokenType.EOF);
	        this._endToken([]);
	        return new HtmlTokenizeResult(mergeTextTokens(this.tokens), this.errors);
	    };
	    _HtmlTokenizer.prototype._getLocation = function () {
	        return new parse_util_1.ParseLocation(this.file, this.index, this.line, this.column);
	    };
	    _HtmlTokenizer.prototype._getSpan = function (start, end) {
	        if (lang_1.isBlank(start)) {
	            start = this._getLocation();
	        }
	        if (lang_1.isBlank(end)) {
	            end = this._getLocation();
	        }
	        return new parse_util_1.ParseSourceSpan(start, end);
	    };
	    _HtmlTokenizer.prototype._beginToken = function (type, start) {
	        if (start === void 0) { start = null; }
	        if (lang_1.isBlank(start)) {
	            start = this._getLocation();
	        }
	        this.currentTokenStart = start;
	        this.currentTokenType = type;
	    };
	    _HtmlTokenizer.prototype._endToken = function (parts, end) {
	        if (end === void 0) { end = null; }
	        if (lang_1.isBlank(end)) {
	            end = this._getLocation();
	        }
	        var token = new HtmlToken(this.currentTokenType, parts, new parse_util_1.ParseSourceSpan(this.currentTokenStart, end));
	        this.tokens.push(token);
	        this.currentTokenStart = null;
	        this.currentTokenType = null;
	        return token;
	    };
	    _HtmlTokenizer.prototype._createError = function (msg, span) {
	        var error = new HtmlTokenError(msg, this.currentTokenType, span);
	        this.currentTokenStart = null;
	        this.currentTokenType = null;
	        return new ControlFlowError(error);
	    };
	    _HtmlTokenizer.prototype._advance = function () {
	        if (this.index >= this.length) {
	            throw this._createError(unexpectedCharacterErrorMsg($EOF), this._getSpan());
	        }
	        if (this.peek === $LF) {
	            this.line++;
	            this.column = 0;
	        }
	        else if (this.peek !== $LF && this.peek !== $CR) {
	            this.column++;
	        }
	        this.index++;
	        this.peek = this.index >= this.length ? $EOF : lang_1.StringWrapper.charCodeAt(this.input, this.index);
	        this.nextPeek =
	            this.index + 1 >= this.length ? $EOF : lang_1.StringWrapper.charCodeAt(this.input, this.index + 1);
	    };
	    _HtmlTokenizer.prototype._attemptCharCode = function (charCode) {
	        if (this.peek === charCode) {
	            this._advance();
	            return true;
	        }
	        return false;
	    };
	    _HtmlTokenizer.prototype._attemptCharCodeCaseInsensitive = function (charCode) {
	        if (compareCharCodeCaseInsensitive(this.peek, charCode)) {
	            this._advance();
	            return true;
	        }
	        return false;
	    };
	    _HtmlTokenizer.prototype._requireCharCode = function (charCode) {
	        var location = this._getLocation();
	        if (!this._attemptCharCode(charCode)) {
	            throw this._createError(unexpectedCharacterErrorMsg(this.peek), this._getSpan(location, location));
	        }
	    };
	    _HtmlTokenizer.prototype._attemptStr = function (chars) {
	        for (var i = 0; i < chars.length; i++) {
	            if (!this._attemptCharCode(lang_1.StringWrapper.charCodeAt(chars, i))) {
	                return false;
	            }
	        }
	        return true;
	    };
	    _HtmlTokenizer.prototype._attemptStrCaseInsensitive = function (chars) {
	        for (var i = 0; i < chars.length; i++) {
	            if (!this._attemptCharCodeCaseInsensitive(lang_1.StringWrapper.charCodeAt(chars, i))) {
	                return false;
	            }
	        }
	        return true;
	    };
	    _HtmlTokenizer.prototype._requireStr = function (chars) {
	        var location = this._getLocation();
	        if (!this._attemptStr(chars)) {
	            throw this._createError(unexpectedCharacterErrorMsg(this.peek), this._getSpan(location));
	        }
	    };
	    _HtmlTokenizer.prototype._attemptCharCodeUntilFn = function (predicate) {
	        while (!predicate(this.peek)) {
	            this._advance();
	        }
	    };
	    _HtmlTokenizer.prototype._requireCharCodeUntilFn = function (predicate, len) {
	        var start = this._getLocation();
	        this._attemptCharCodeUntilFn(predicate);
	        if (this.index - start.offset < len) {
	            throw this._createError(unexpectedCharacterErrorMsg(this.peek), this._getSpan(start, start));
	        }
	    };
	    _HtmlTokenizer.prototype._attemptUntilChar = function (char) {
	        while (this.peek !== char) {
	            this._advance();
	        }
	    };
	    _HtmlTokenizer.prototype._readChar = function (decodeEntities) {
	        if (decodeEntities && this.peek === $AMPERSAND) {
	            return this._decodeEntity();
	        }
	        else {
	            var index = this.index;
	            this._advance();
	            return this.input[index];
	        }
	    };
	    _HtmlTokenizer.prototype._decodeEntity = function () {
	        var start = this._getLocation();
	        this._advance();
	        if (this._attemptCharCode($HASH)) {
	            var isHex = this._attemptCharCode($x) || this._attemptCharCode($X);
	            var numberStart = this._getLocation().offset;
	            this._attemptCharCodeUntilFn(isDigitEntityEnd);
	            if (this.peek != $SEMICOLON) {
	                throw this._createError(unexpectedCharacterErrorMsg(this.peek), this._getSpan());
	            }
	            this._advance();
	            var strNum = this.input.substring(numberStart, this.index - 1);
	            try {
	                var charCode = lang_1.NumberWrapper.parseInt(strNum, isHex ? 16 : 10);
	                return lang_1.StringWrapper.fromCharCode(charCode);
	            }
	            catch (e) {
	                var entity = this.input.substring(start.offset + 1, this.index - 1);
	                throw this._createError(unknownEntityErrorMsg(entity), this._getSpan(start));
	            }
	        }
	        else {
	            var startPosition = this._savePosition();
	            this._attemptCharCodeUntilFn(isNamedEntityEnd);
	            if (this.peek != $SEMICOLON) {
	                this._restorePosition(startPosition);
	                return '&';
	            }
	            this._advance();
	            var name_1 = this.input.substring(start.offset + 1, this.index - 1);
	            var char = html_tags_1.NAMED_ENTITIES[name_1];
	            if (lang_1.isBlank(char)) {
	                throw this._createError(unknownEntityErrorMsg(name_1), this._getSpan(start));
	            }
	            return char;
	        }
	    };
	    _HtmlTokenizer.prototype._consumeRawText = function (decodeEntities, firstCharOfEnd, attemptEndRest) {
	        var tagCloseStart;
	        var textStart = this._getLocation();
	        this._beginToken(decodeEntities ? HtmlTokenType.ESCAPABLE_RAW_TEXT : HtmlTokenType.RAW_TEXT, textStart);
	        var parts = [];
	        while (true) {
	            tagCloseStart = this._getLocation();
	            if (this._attemptCharCode(firstCharOfEnd) && attemptEndRest()) {
	                break;
	            }
	            if (this.index > tagCloseStart.offset) {
	                parts.push(this.input.substring(tagCloseStart.offset, this.index));
	            }
	            while (this.peek !== firstCharOfEnd) {
	                parts.push(this._readChar(decodeEntities));
	            }
	        }
	        return this._endToken([this._processCarriageReturns(parts.join(''))], tagCloseStart);
	    };
	    _HtmlTokenizer.prototype._consumeComment = function (start) {
	        var _this = this;
	        this._beginToken(HtmlTokenType.COMMENT_START, start);
	        this._requireCharCode($MINUS);
	        this._endToken([]);
	        var textToken = this._consumeRawText(false, $MINUS, function () { return _this._attemptStr('->'); });
	        this._beginToken(HtmlTokenType.COMMENT_END, textToken.sourceSpan.end);
	        this._endToken([]);
	    };
	    _HtmlTokenizer.prototype._consumeCdata = function (start) {
	        var _this = this;
	        this._beginToken(HtmlTokenType.CDATA_START, start);
	        this._requireStr('CDATA[');
	        this._endToken([]);
	        var textToken = this._consumeRawText(false, $RBRACKET, function () { return _this._attemptStr(']>'); });
	        this._beginToken(HtmlTokenType.CDATA_END, textToken.sourceSpan.end);
	        this._endToken([]);
	    };
	    _HtmlTokenizer.prototype._consumeDocType = function (start) {
	        this._beginToken(HtmlTokenType.DOC_TYPE, start);
	        this._attemptUntilChar($GT);
	        this._advance();
	        this._endToken([this.input.substring(start.offset + 2, this.index - 1)]);
	    };
	    _HtmlTokenizer.prototype._consumePrefixAndName = function () {
	        var nameOrPrefixStart = this.index;
	        var prefix = null;
	        while (this.peek !== $COLON && !isPrefixEnd(this.peek)) {
	            this._advance();
	        }
	        var nameStart;
	        if (this.peek === $COLON) {
	            this._advance();
	            prefix = this.input.substring(nameOrPrefixStart, this.index - 1);
	            nameStart = this.index;
	        }
	        else {
	            nameStart = nameOrPrefixStart;
	        }
	        this._requireCharCodeUntilFn(isNameEnd, this.index === nameStart ? 1 : 0);
	        var name = this.input.substring(nameStart, this.index);
	        return [prefix, name];
	    };
	    _HtmlTokenizer.prototype._consumeTagOpen = function (start) {
	        var savedPos = this._savePosition();
	        var lowercaseTagName;
	        try {
	            if (!isAsciiLetter(this.peek)) {
	                throw this._createError(unexpectedCharacterErrorMsg(this.peek), this._getSpan());
	            }
	            var nameStart = this.index;
	            this._consumeTagOpenStart(start);
	            lowercaseTagName = this.input.substring(nameStart, this.index).toLowerCase();
	            this._attemptCharCodeUntilFn(isNotWhitespace);
	            while (this.peek !== $SLASH && this.peek !== $GT) {
	                this._consumeAttributeName();
	                this._attemptCharCodeUntilFn(isNotWhitespace);
	                if (this._attemptCharCode($EQ)) {
	                    this._attemptCharCodeUntilFn(isNotWhitespace);
	                    this._consumeAttributeValue();
	                }
	                this._attemptCharCodeUntilFn(isNotWhitespace);
	            }
	            this._consumeTagOpenEnd();
	        }
	        catch (e) {
	            if (e instanceof ControlFlowError) {
	                // When the start tag is invalid, assume we want a "<"
	                this._restorePosition(savedPos);
	                // Back to back text tokens are merged at the end
	                this._beginToken(HtmlTokenType.TEXT, start);
	                this._endToken(['<']);
	                return;
	            }
	            throw e;
	        }
	        var contentTokenType = html_tags_1.getHtmlTagDefinition(lowercaseTagName).contentType;
	        if (contentTokenType === html_tags_1.HtmlTagContentType.RAW_TEXT) {
	            this._consumeRawTextWithTagClose(lowercaseTagName, false);
	        }
	        else if (contentTokenType === html_tags_1.HtmlTagContentType.ESCAPABLE_RAW_TEXT) {
	            this._consumeRawTextWithTagClose(lowercaseTagName, true);
	        }
	    };
	    _HtmlTokenizer.prototype._consumeRawTextWithTagClose = function (lowercaseTagName, decodeEntities) {
	        var _this = this;
	        var textToken = this._consumeRawText(decodeEntities, $LT, function () {
	            if (!_this._attemptCharCode($SLASH))
	                return false;
	            _this._attemptCharCodeUntilFn(isNotWhitespace);
	            if (!_this._attemptStrCaseInsensitive(lowercaseTagName))
	                return false;
	            _this._attemptCharCodeUntilFn(isNotWhitespace);
	            if (!_this._attemptCharCode($GT))
	                return false;
	            return true;
	        });
	        this._beginToken(HtmlTokenType.TAG_CLOSE, textToken.sourceSpan.end);
	        this._endToken([null, lowercaseTagName]);
	    };
	    _HtmlTokenizer.prototype._consumeTagOpenStart = function (start) {
	        this._beginToken(HtmlTokenType.TAG_OPEN_START, start);
	        var parts = this._consumePrefixAndName();
	        this._endToken(parts);
	    };
	    _HtmlTokenizer.prototype._consumeAttributeName = function () {
	        this._beginToken(HtmlTokenType.ATTR_NAME);
	        var prefixAndName = this._consumePrefixAndName();
	        this._endToken(prefixAndName);
	    };
	    _HtmlTokenizer.prototype._consumeAttributeValue = function () {
	        this._beginToken(HtmlTokenType.ATTR_VALUE);
	        var value;
	        if (this.peek === $SQ || this.peek === $DQ) {
	            var quoteChar = this.peek;
	            this._advance();
	            var parts = [];
	            while (this.peek !== quoteChar) {
	                parts.push(this._readChar(true));
	            }
	            value = parts.join('');
	            this._advance();
	        }
	        else {
	            var valueStart = this.index;
	            this._requireCharCodeUntilFn(isNameEnd, 1);
	            value = this.input.substring(valueStart, this.index);
	        }
	        this._endToken([this._processCarriageReturns(value)]);
	    };
	    _HtmlTokenizer.prototype._consumeTagOpenEnd = function () {
	        var tokenType = this._attemptCharCode($SLASH) ? HtmlTokenType.TAG_OPEN_END_VOID :
	            HtmlTokenType.TAG_OPEN_END;
	        this._beginToken(tokenType);
	        this._requireCharCode($GT);
	        this._endToken([]);
	    };
	    _HtmlTokenizer.prototype._consumeTagClose = function (start) {
	        this._beginToken(HtmlTokenType.TAG_CLOSE, start);
	        this._attemptCharCodeUntilFn(isNotWhitespace);
	        var prefixAndName;
	        prefixAndName = this._consumePrefixAndName();
	        this._attemptCharCodeUntilFn(isNotWhitespace);
	        this._requireCharCode($GT);
	        this._endToken(prefixAndName);
	    };
	    _HtmlTokenizer.prototype._consumeExpansionFormStart = function () {
	        this._beginToken(HtmlTokenType.EXPANSION_FORM_START, this._getLocation());
	        this._requireCharCode($LBRACE);
	        this._endToken([]);
	        this._beginToken(HtmlTokenType.RAW_TEXT, this._getLocation());
	        var condition = this._readUntil($COMMA);
	        this._endToken([condition], this._getLocation());
	        this._requireCharCode($COMMA);
	        this._attemptCharCodeUntilFn(isNotWhitespace);
	        this._beginToken(HtmlTokenType.RAW_TEXT, this._getLocation());
	        var type = this._readUntil($COMMA);
	        this._endToken([type], this._getLocation());
	        this._requireCharCode($COMMA);
	        this._attemptCharCodeUntilFn(isNotWhitespace);
	        this.expansionCaseStack.push(HtmlTokenType.EXPANSION_FORM_START);
	    };
	    _HtmlTokenizer.prototype._consumeExpansionCaseStart = function () {
	        this._requireCharCode($EQ);
	        this._beginToken(HtmlTokenType.EXPANSION_CASE_VALUE, this._getLocation());
	        var value = this._readUntil($LBRACE).trim();
	        this._endToken([value], this._getLocation());
	        this._attemptCharCodeUntilFn(isNotWhitespace);
	        this._beginToken(HtmlTokenType.EXPANSION_CASE_EXP_START, this._getLocation());
	        this._requireCharCode($LBRACE);
	        this._endToken([], this._getLocation());
	        this._attemptCharCodeUntilFn(isNotWhitespace);
	        this.expansionCaseStack.push(HtmlTokenType.EXPANSION_CASE_EXP_START);
	    };
	    _HtmlTokenizer.prototype._consumeExpansionCaseEnd = function () {
	        this._beginToken(HtmlTokenType.EXPANSION_CASE_EXP_END, this._getLocation());
	        this._requireCharCode($RBRACE);
	        this._endToken([], this._getLocation());
	        this._attemptCharCodeUntilFn(isNotWhitespace);
	        this.expansionCaseStack.pop();
	    };
	    _HtmlTokenizer.prototype._consumeExpansionFormEnd = function () {
	        this._beginToken(HtmlTokenType.EXPANSION_FORM_END, this._getLocation());
	        this._requireCharCode($RBRACE);
	        this._endToken([]);
	        this.expansionCaseStack.pop();
	    };
	    _HtmlTokenizer.prototype._consumeText = function () {
	        var start = this._getLocation();
	        this._beginToken(HtmlTokenType.TEXT, start);
	        var parts = [];
	        var interpolation = false;
	        if (this.peek === $LBRACE && this.nextPeek === $LBRACE) {
	            parts.push(this._readChar(true));
	            parts.push(this._readChar(true));
	            interpolation = true;
	        }
	        else {
	            parts.push(this._readChar(true));
	        }
	        while (!this.isTextEnd(interpolation)) {
	            if (this.peek === $LBRACE && this.nextPeek === $LBRACE) {
	                parts.push(this._readChar(true));
	                parts.push(this._readChar(true));
	                interpolation = true;
	            }
	            else if (this.peek === $RBRACE && this.nextPeek === $RBRACE && interpolation) {
	                parts.push(this._readChar(true));
	                parts.push(this._readChar(true));
	                interpolation = false;
	            }
	            else {
	                parts.push(this._readChar(true));
	            }
	        }
	        this._endToken([this._processCarriageReturns(parts.join(''))]);
	    };
	    _HtmlTokenizer.prototype.isTextEnd = function (interpolation) {
	        if (this.peek === $LT || this.peek === $EOF)
	            return true;
	        if (this.tokenizeExpansionForms) {
	            if (isSpecialFormStart(this.peek, this.nextPeek))
	                return true;
	            if (this.peek === $RBRACE && !interpolation &&
	                (this.isInExpansionCase() || this.isInExpansionForm()))
	                return true;
	        }
	        return false;
	    };
	    _HtmlTokenizer.prototype._savePosition = function () {
	        return [this.peek, this.index, this.column, this.line, this.tokens.length];
	    };
	    _HtmlTokenizer.prototype._readUntil = function (char) {
	        var start = this.index;
	        this._attemptUntilChar(char);
	        return this.input.substring(start, this.index);
	    };
	    _HtmlTokenizer.prototype._restorePosition = function (position) {
	        this.peek = position[0];
	        this.index = position[1];
	        this.column = position[2];
	        this.line = position[3];
	        var nbTokens = position[4];
	        if (nbTokens < this.tokens.length) {
	            // remove any extra tokens
	            this.tokens = collection_1.ListWrapper.slice(this.tokens, 0, nbTokens);
	        }
	    };
	    _HtmlTokenizer.prototype.isInExpansionCase = function () {
	        return this.expansionCaseStack.length > 0 &&
	            this.expansionCaseStack[this.expansionCaseStack.length - 1] ===
	                HtmlTokenType.EXPANSION_CASE_EXP_START;
	    };
	    _HtmlTokenizer.prototype.isInExpansionForm = function () {
	        return this.expansionCaseStack.length > 0 &&
	            this.expansionCaseStack[this.expansionCaseStack.length - 1] ===
	                HtmlTokenType.EXPANSION_FORM_START;
	    };
	    return _HtmlTokenizer;
	}());
	function isNotWhitespace(code) {
	    return !isWhitespace(code) || code === $EOF;
	}
	function isWhitespace(code) {
	    return (code >= $TAB && code <= $SPACE) || (code === $NBSP);
	}
	function isNameEnd(code) {
	    return isWhitespace(code) || code === $GT || code === $SLASH || code === $SQ || code === $DQ ||
	        code === $EQ;
	}
	function isPrefixEnd(code) {
	    return (code < $a || $z < code) && (code < $A || $Z < code) && (code < $0 || code > $9);
	}
	function isDigitEntityEnd(code) {
	    return code == $SEMICOLON || code == $EOF || !isAsciiHexDigit(code);
	}
	function isNamedEntityEnd(code) {
	    return code == $SEMICOLON || code == $EOF || !isAsciiLetter(code);
	}
	function isSpecialFormStart(peek, nextPeek) {
	    return peek === $LBRACE && nextPeek != $LBRACE;
	}
	function isAsciiLetter(code) {
	    return code >= $a && code <= $z || code >= $A && code <= $Z;
	}
	function isAsciiHexDigit(code) {
	    return code >= $a && code <= $f || code >= $A && code <= $F || code >= $0 && code <= $9;
	}
	function compareCharCodeCaseInsensitive(code1, code2) {
	    return toUpperCaseCharCode(code1) == toUpperCaseCharCode(code2);
	}
	function toUpperCaseCharCode(code) {
	    return code >= $a && code <= $z ? code - $a + $A : code;
	}
	function mergeTextTokens(srcTokens) {
	    var dstTokens = [];
	    var lastDstToken;
	    for (var i = 0; i < srcTokens.length; i++) {
	        var token = srcTokens[i];
	        if (lang_1.isPresent(lastDstToken) && lastDstToken.type == HtmlTokenType.TEXT &&
	            token.type == HtmlTokenType.TEXT) {
	            lastDstToken.parts[0] += token.parts[0];
	            lastDstToken.sourceSpan.end = token.sourceSpan.end;
	        }
	        else {
	            lastDstToken = token;
	            dstTokens.push(lastDstToken);
	        }
	    }
	    return dstTokens;
	}
	//# sourceMappingURL=html_lexer.js.map

/***/ },
/* 363 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var core_1 = __webpack_require__(1);
	var compile_metadata_1 = __webpack_require__(16);
	var exceptions_1 = __webpack_require__(8);
	var collection_1 = __webpack_require__(7);
	var o = __webpack_require__(10);
	var util_1 = __webpack_require__(25);
	var _COMPONENT_FACTORY_IDENTIFIER = new compile_metadata_1.CompileIdentifierMetadata({
	    name: 'ComponentFactory',
	    runtime: core_1.ComponentFactory,
	    moduleUrl: util_1.assetUrl('core', 'linker/component_factory')
	});
	var SourceModule = (function () {
	    function SourceModule(moduleUrl, source) {
	        this.moduleUrl = moduleUrl;
	        this.source = source;
	    }
	    return SourceModule;
	}());
	exports.SourceModule = SourceModule;
	var StyleSheetSourceWithImports = (function () {
	    function StyleSheetSourceWithImports(source, importedUrls) {
	        this.source = source;
	        this.importedUrls = importedUrls;
	    }
	    return StyleSheetSourceWithImports;
	}());
	exports.StyleSheetSourceWithImports = StyleSheetSourceWithImports;
	var NormalizedComponentWithViewDirectives = (function () {
	    function NormalizedComponentWithViewDirectives(component, directives, pipes) {
	        this.component = component;
	        this.directives = directives;
	        this.pipes = pipes;
	    }
	    return NormalizedComponentWithViewDirectives;
	}());
	exports.NormalizedComponentWithViewDirectives = NormalizedComponentWithViewDirectives;
	var OfflineCompiler = (function () {
	    function OfflineCompiler(_directiveNormalizer, _templateParser, _styleCompiler, _viewCompiler, _outputEmitter, _xhr) {
	        this._directiveNormalizer = _directiveNormalizer;
	        this._templateParser = _templateParser;
	        this._styleCompiler = _styleCompiler;
	        this._viewCompiler = _viewCompiler;
	        this._outputEmitter = _outputEmitter;
	        this._xhr = _xhr;
	    }
	    OfflineCompiler.prototype.normalizeDirectiveMetadata = function (directive) {
	        return this._directiveNormalizer.normalizeDirective(directive);
	    };
	    OfflineCompiler.prototype.compileTemplates = function (components) {
	        var _this = this;
	        if (components.length === 0) {
	            throw new exceptions_1.BaseException('No components given');
	        }
	        var statements = [];
	        var exportedVars = [];
	        var moduleUrl = _templateModuleUrl(components[0].component);
	        components.forEach(function (componentWithDirs) {
	            var compMeta = componentWithDirs.component;
	            _assertComponent(compMeta);
	            var compViewFactoryVar = _this._compileComponent(compMeta, componentWithDirs.directives, componentWithDirs.pipes, statements);
	            exportedVars.push(compViewFactoryVar);
	            var hostMeta = compile_metadata_1.createHostComponentMeta(compMeta.type, compMeta.selector);
	            var hostViewFactoryVar = _this._compileComponent(hostMeta, [compMeta], [], statements);
	            var compFactoryVar = compMeta.type.name + "NgFactory";
	            statements.push(o.variable(compFactoryVar)
	                .set(o.importExpr(_COMPONENT_FACTORY_IDENTIFIER, [o.importType(compMeta.type)])
	                .instantiate([
	                o.literal(compMeta.selector),
	                o.variable(hostViewFactoryVar),
	                o.importExpr(compMeta.type)
	            ], o.importType(_COMPONENT_FACTORY_IDENTIFIER, [o.importType(compMeta.type)], [o.TypeModifier.Const])))
	                .toDeclStmt(null, [o.StmtModifier.Final]));
	            exportedVars.push(compFactoryVar);
	        });
	        return this._codegenSourceModule(moduleUrl, statements, exportedVars);
	    };
	    OfflineCompiler.prototype.loadAndCompileStylesheet = function (stylesheetUrl, shim, suffix) {
	        var _this = this;
	        return this._xhr.get(stylesheetUrl)
	            .then(function (cssText) {
	            var compileResult = _this._styleCompiler.compileStylesheet(stylesheetUrl, cssText, shim);
	            var importedUrls = [];
	            compileResult.dependencies.forEach(function (dep) {
	                importedUrls.push(dep.moduleUrl);
	                dep.valuePlaceholder.moduleUrl = _stylesModuleUrl(dep.moduleUrl, dep.isShimmed, suffix);
	            });
	            return new StyleSheetSourceWithImports(_this._codgenStyles(stylesheetUrl, shim, suffix, compileResult), importedUrls);
	        });
	    };
	    OfflineCompiler.prototype._compileComponent = function (compMeta, directives, pipes, targetStatements) {
	        var styleResult = this._styleCompiler.compileComponent(compMeta);
	        var parsedTemplate = this._templateParser.parse(compMeta, compMeta.template.template, directives, pipes, compMeta.type.name);
	        var viewResult = this._viewCompiler.compileComponent(compMeta, parsedTemplate, o.variable(styleResult.stylesVar), pipes);
	        collection_1.ListWrapper.addAll(targetStatements, _resolveStyleStatements(compMeta.type.moduleUrl, styleResult));
	        collection_1.ListWrapper.addAll(targetStatements, _resolveViewStatements(viewResult));
	        return viewResult.viewFactoryVar;
	    };
	    OfflineCompiler.prototype._codgenStyles = function (inputUrl, shim, suffix, stylesCompileResult) {
	        return this._codegenSourceModule(_stylesModuleUrl(inputUrl, shim, suffix), stylesCompileResult.statements, [stylesCompileResult.stylesVar]);
	    };
	    OfflineCompiler.prototype._codegenSourceModule = function (moduleUrl, statements, exportedVars) {
	        return new SourceModule(moduleUrl, this._outputEmitter.emitStatements(moduleUrl, statements, exportedVars));
	    };
	    return OfflineCompiler;
	}());
	exports.OfflineCompiler = OfflineCompiler;
	function _resolveViewStatements(compileResult) {
	    compileResult.dependencies.forEach(function (dep) { dep.factoryPlaceholder.moduleUrl = _templateModuleUrl(dep.comp); });
	    return compileResult.statements;
	}
	function _resolveStyleStatements(containingModuleUrl, compileResult) {
	    var containingSuffix = _splitSuffix(containingModuleUrl)[1];
	    compileResult.dependencies.forEach(function (dep) {
	        dep.valuePlaceholder.moduleUrl =
	            _stylesModuleUrl(dep.moduleUrl, dep.isShimmed, containingSuffix);
	    });
	    return compileResult.statements;
	}
	function _templateModuleUrl(comp) {
	    var urlWithSuffix = _splitSuffix(comp.type.moduleUrl);
	    return urlWithSuffix[0] + ".ngfactory" + urlWithSuffix[1];
	}
	function _stylesModuleUrl(stylesheetUrl, shim, suffix) {
	    return shim ? stylesheetUrl + ".shim" + suffix : "" + stylesheetUrl + suffix;
	}
	function _assertComponent(meta) {
	    if (!meta.isComponent) {
	        throw new exceptions_1.BaseException("Could not compile '" + meta.type.name + "' because it is not a component.");
	    }
	}
	function _splitSuffix(path) {
	    var lastDot = path.lastIndexOf('.');
	    if (lastDot !== -1) {
	        return [path.substring(0, lastDot), path.substring(lastDot)];
	    }
	    else {
	        return [path, ''];
	    }
	}
	//# sourceMappingURL=offline_compiler.js.map

/***/ },
/* 364 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var lang_1 = __webpack_require__(3);
	var exceptions_1 = __webpack_require__(8);
	var o = __webpack_require__(10);
	var abstract_emitter_1 = __webpack_require__(55);
	var AbstractJsEmitterVisitor = (function (_super) {
	    __extends(AbstractJsEmitterVisitor, _super);
	    function AbstractJsEmitterVisitor() {
	        _super.call(this, false);
	    }
	    AbstractJsEmitterVisitor.prototype.visitDeclareClassStmt = function (stmt, ctx) {
	        var _this = this;
	        ctx.pushClass(stmt);
	        this._visitClassConstructor(stmt, ctx);
	        if (lang_1.isPresent(stmt.parent)) {
	            ctx.print(stmt.name + ".prototype = Object.create(");
	            stmt.parent.visitExpression(this, ctx);
	            ctx.println(".prototype);");
	        }
	        stmt.getters.forEach(function (getter) { return _this._visitClassGetter(stmt, getter, ctx); });
	        stmt.methods.forEach(function (method) { return _this._visitClassMethod(stmt, method, ctx); });
	        ctx.popClass();
	        return null;
	    };
	    AbstractJsEmitterVisitor.prototype._visitClassConstructor = function (stmt, ctx) {
	        ctx.print("function " + stmt.name + "(");
	        if (lang_1.isPresent(stmt.constructorMethod)) {
	            this._visitParams(stmt.constructorMethod.params, ctx);
	        }
	        ctx.println(") {");
	        ctx.incIndent();
	        if (lang_1.isPresent(stmt.constructorMethod)) {
	            if (stmt.constructorMethod.body.length > 0) {
	                ctx.println("var self = this;");
	                this.visitAllStatements(stmt.constructorMethod.body, ctx);
	            }
	        }
	        ctx.decIndent();
	        ctx.println("}");
	    };
	    AbstractJsEmitterVisitor.prototype._visitClassGetter = function (stmt, getter, ctx) {
	        ctx.println("Object.defineProperty(" + stmt.name + ".prototype, '" + getter.name + "', { get: function() {");
	        ctx.incIndent();
	        if (getter.body.length > 0) {
	            ctx.println("var self = this;");
	            this.visitAllStatements(getter.body, ctx);
	        }
	        ctx.decIndent();
	        ctx.println("}});");
	    };
	    AbstractJsEmitterVisitor.prototype._visitClassMethod = function (stmt, method, ctx) {
	        ctx.print(stmt.name + ".prototype." + method.name + " = function(");
	        this._visitParams(method.params, ctx);
	        ctx.println(") {");
	        ctx.incIndent();
	        if (method.body.length > 0) {
	            ctx.println("var self = this;");
	            this.visitAllStatements(method.body, ctx);
	        }
	        ctx.decIndent();
	        ctx.println("};");
	    };
	    AbstractJsEmitterVisitor.prototype.visitReadVarExpr = function (ast, ctx) {
	        if (ast.builtin === o.BuiltinVar.This) {
	            ctx.print('self');
	        }
	        else if (ast.builtin === o.BuiltinVar.Super) {
	            throw new exceptions_1.BaseException("'super' needs to be handled at a parent ast node, not at the variable level!");
	        }
	        else {
	            _super.prototype.visitReadVarExpr.call(this, ast, ctx);
	        }
	        return null;
	    };
	    AbstractJsEmitterVisitor.prototype.visitDeclareVarStmt = function (stmt, ctx) {
	        ctx.print("var " + stmt.name + " = ");
	        stmt.value.visitExpression(this, ctx);
	        ctx.println(";");
	        return null;
	    };
	    AbstractJsEmitterVisitor.prototype.visitCastExpr = function (ast, ctx) {
	        ast.value.visitExpression(this, ctx);
	        return null;
	    };
	    AbstractJsEmitterVisitor.prototype.visitInvokeFunctionExpr = function (expr, ctx) {
	        var fnExpr = expr.fn;
	        if (fnExpr instanceof o.ReadVarExpr && fnExpr.builtin === o.BuiltinVar.Super) {
	            ctx.currentClass.parent.visitExpression(this, ctx);
	            ctx.print(".call(this");
	            if (expr.args.length > 0) {
	                ctx.print(", ");
	                this.visitAllExpressions(expr.args, ctx, ',');
	            }
	            ctx.print(")");
	        }
	        else {
	            _super.prototype.visitInvokeFunctionExpr.call(this, expr, ctx);
	        }
	        return null;
	    };
	    AbstractJsEmitterVisitor.prototype.visitFunctionExpr = function (ast, ctx) {
	        ctx.print("function(");
	        this._visitParams(ast.params, ctx);
	        ctx.println(") {");
	        ctx.incIndent();
	        this.visitAllStatements(ast.statements, ctx);
	        ctx.decIndent();
	        ctx.print("}");
	        return null;
	    };
	    AbstractJsEmitterVisitor.prototype.visitDeclareFunctionStmt = function (stmt, ctx) {
	        ctx.print("function " + stmt.name + "(");
	        this._visitParams(stmt.params, ctx);
	        ctx.println(") {");
	        ctx.incIndent();
	        this.visitAllStatements(stmt.statements, ctx);
	        ctx.decIndent();
	        ctx.println("}");
	        return null;
	    };
	    AbstractJsEmitterVisitor.prototype.visitTryCatchStmt = function (stmt, ctx) {
	        ctx.println("try {");
	        ctx.incIndent();
	        this.visitAllStatements(stmt.bodyStmts, ctx);
	        ctx.decIndent();
	        ctx.println("} catch (" + abstract_emitter_1.CATCH_ERROR_VAR.name + ") {");
	        ctx.incIndent();
	        var catchStmts = [
	            abstract_emitter_1.CATCH_STACK_VAR.set(abstract_emitter_1.CATCH_ERROR_VAR.prop('stack'))
	                .toDeclStmt(null, [o.StmtModifier.Final])
	        ].concat(stmt.catchStmts);
	        this.visitAllStatements(catchStmts, ctx);
	        ctx.decIndent();
	        ctx.println("}");
	        return null;
	    };
	    AbstractJsEmitterVisitor.prototype._visitParams = function (params, ctx) {
	        this.visitAllObjects(function (param) { return ctx.print(param.name); }, params, ctx, ',');
	    };
	    AbstractJsEmitterVisitor.prototype.getBuiltinMethodName = function (method) {
	        var name;
	        switch (method) {
	            case o.BuiltinMethod.ConcatArray:
	                name = 'concat';
	                break;
	            case o.BuiltinMethod.SubscribeObservable:
	                name = 'subscribe';
	                break;
	            case o.BuiltinMethod.bind:
	                name = 'bind';
	                break;
	            default:
	                throw new exceptions_1.BaseException("Unknown builtin method: " + method);
	        }
	        return name;
	    };
	    return AbstractJsEmitterVisitor;
	}(abstract_emitter_1.AbstractEmitterVisitor));
	exports.AbstractJsEmitterVisitor = AbstractJsEmitterVisitor;
	//# sourceMappingURL=abstract_js_emitter.js.map

/***/ },
/* 365 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var lang_1 = __webpack_require__(3);
	var exceptions_1 = __webpack_require__(8);
	var o = __webpack_require__(10);
	var abstract_emitter_1 = __webpack_require__(55);
	var _debugModuleUrl = 'asset://debug/lib';
	function debugOutputAstAsDart(ast) {
	    var converter = new _DartEmitterVisitor(_debugModuleUrl);
	    var ctx = abstract_emitter_1.EmitterVisitorContext.createRoot([]);
	    var asts;
	    if (lang_1.isArray(ast)) {
	        asts = ast;
	    }
	    else {
	        asts = [ast];
	    }
	    asts.forEach(function (ast) {
	        if (ast instanceof o.Statement) {
	            ast.visitStatement(converter, ctx);
	        }
	        else if (ast instanceof o.Expression) {
	            ast.visitExpression(converter, ctx);
	        }
	        else if (ast instanceof o.Type) {
	            ast.visitType(converter, ctx);
	        }
	        else {
	            throw new exceptions_1.BaseException("Don't know how to print debug info for " + ast);
	        }
	    });
	    return ctx.toSource();
	}
	exports.debugOutputAstAsDart = debugOutputAstAsDart;
	var DartEmitter = (function () {
	    function DartEmitter(_importGenerator) {
	        this._importGenerator = _importGenerator;
	    }
	    DartEmitter.prototype.emitStatements = function (moduleUrl, stmts, exportedVars) {
	        var _this = this;
	        var srcParts = [];
	        // Note: We are not creating a library here as Dart does not need it.
	        // Dart analzyer might complain about it though.
	        var converter = new _DartEmitterVisitor(moduleUrl);
	        var ctx = abstract_emitter_1.EmitterVisitorContext.createRoot(exportedVars);
	        converter.visitAllStatements(stmts, ctx);
	        converter.importsWithPrefixes.forEach(function (prefix, importedModuleUrl) {
	            srcParts.push("import '" + _this._importGenerator.getImportPath(moduleUrl, importedModuleUrl) + "' as " + prefix + ";");
	        });
	        srcParts.push(ctx.toSource());
	        return srcParts.join('\n');
	    };
	    return DartEmitter;
	}());
	exports.DartEmitter = DartEmitter;
	var _DartEmitterVisitor = (function (_super) {
	    __extends(_DartEmitterVisitor, _super);
	    function _DartEmitterVisitor(_moduleUrl) {
	        _super.call(this, true);
	        this._moduleUrl = _moduleUrl;
	        this.importsWithPrefixes = new Map();
	    }
	    _DartEmitterVisitor.prototype.visitExternalExpr = function (ast, ctx) {
	        this._visitIdentifier(ast.value, ast.typeParams, ctx);
	        return null;
	    };
	    _DartEmitterVisitor.prototype.visitDeclareVarStmt = function (stmt, ctx) {
	        if (stmt.hasModifier(o.StmtModifier.Final)) {
	            if (isConstType(stmt.type)) {
	                ctx.print("const ");
	            }
	            else {
	                ctx.print("final ");
	            }
	        }
	        else if (lang_1.isBlank(stmt.type)) {
	            ctx.print("var ");
	        }
	        if (lang_1.isPresent(stmt.type)) {
	            stmt.type.visitType(this, ctx);
	            ctx.print(" ");
	        }
	        ctx.print(stmt.name + " = ");
	        stmt.value.visitExpression(this, ctx);
	        ctx.println(";");
	        return null;
	    };
	    _DartEmitterVisitor.prototype.visitCastExpr = function (ast, ctx) {
	        ctx.print("(");
	        ast.value.visitExpression(this, ctx);
	        ctx.print(" as ");
	        ast.type.visitType(this, ctx);
	        ctx.print(")");
	        return null;
	    };
	    _DartEmitterVisitor.prototype.visitDeclareClassStmt = function (stmt, ctx) {
	        var _this = this;
	        ctx.pushClass(stmt);
	        ctx.print("class " + stmt.name);
	        if (lang_1.isPresent(stmt.parent)) {
	            ctx.print(" extends ");
	            stmt.parent.visitExpression(this, ctx);
	        }
	        ctx.println(" {");
	        ctx.incIndent();
	        stmt.fields.forEach(function (field) { return _this._visitClassField(field, ctx); });
	        if (lang_1.isPresent(stmt.constructorMethod)) {
	            this._visitClassConstructor(stmt, ctx);
	        }
	        stmt.getters.forEach(function (getter) { return _this._visitClassGetter(getter, ctx); });
	        stmt.methods.forEach(function (method) { return _this._visitClassMethod(method, ctx); });
	        ctx.decIndent();
	        ctx.println("}");
	        ctx.popClass();
	        return null;
	    };
	    _DartEmitterVisitor.prototype._visitClassField = function (field, ctx) {
	        if (field.hasModifier(o.StmtModifier.Final)) {
	            ctx.print("final ");
	        }
	        else if (lang_1.isBlank(field.type)) {
	            ctx.print("var ");
	        }
	        if (lang_1.isPresent(field.type)) {
	            field.type.visitType(this, ctx);
	            ctx.print(" ");
	        }
	        ctx.println(field.name + ";");
	    };
	    _DartEmitterVisitor.prototype._visitClassGetter = function (getter, ctx) {
	        if (lang_1.isPresent(getter.type)) {
	            getter.type.visitType(this, ctx);
	            ctx.print(" ");
	        }
	        ctx.println("get " + getter.name + " {");
	        ctx.incIndent();
	        this.visitAllStatements(getter.body, ctx);
	        ctx.decIndent();
	        ctx.println("}");
	    };
	    _DartEmitterVisitor.prototype._visitClassConstructor = function (stmt, ctx) {
	        ctx.print(stmt.name + "(");
	        this._visitParams(stmt.constructorMethod.params, ctx);
	        ctx.print(")");
	        var ctorStmts = stmt.constructorMethod.body;
	        var superCtorExpr = ctorStmts.length > 0 ? getSuperConstructorCallExpr(ctorStmts[0]) : null;
	        if (lang_1.isPresent(superCtorExpr)) {
	            ctx.print(": ");
	            superCtorExpr.visitExpression(this, ctx);
	            ctorStmts = ctorStmts.slice(1);
	        }
	        ctx.println(" {");
	        ctx.incIndent();
	        this.visitAllStatements(ctorStmts, ctx);
	        ctx.decIndent();
	        ctx.println("}");
	    };
	    _DartEmitterVisitor.prototype._visitClassMethod = function (method, ctx) {
	        if (lang_1.isPresent(method.type)) {
	            method.type.visitType(this, ctx);
	        }
	        else {
	            ctx.print("void");
	        }
	        ctx.print(" " + method.name + "(");
	        this._visitParams(method.params, ctx);
	        ctx.println(") {");
	        ctx.incIndent();
	        this.visitAllStatements(method.body, ctx);
	        ctx.decIndent();
	        ctx.println("}");
	    };
	    _DartEmitterVisitor.prototype.visitFunctionExpr = function (ast, ctx) {
	        ctx.print("(");
	        this._visitParams(ast.params, ctx);
	        ctx.println(") {");
	        ctx.incIndent();
	        this.visitAllStatements(ast.statements, ctx);
	        ctx.decIndent();
	        ctx.print("}");
	        return null;
	    };
	    _DartEmitterVisitor.prototype.visitDeclareFunctionStmt = function (stmt, ctx) {
	        if (lang_1.isPresent(stmt.type)) {
	            stmt.type.visitType(this, ctx);
	        }
	        else {
	            ctx.print("void");
	        }
	        ctx.print(" " + stmt.name + "(");
	        this._visitParams(stmt.params, ctx);
	        ctx.println(") {");
	        ctx.incIndent();
	        this.visitAllStatements(stmt.statements, ctx);
	        ctx.decIndent();
	        ctx.println("}");
	        return null;
	    };
	    _DartEmitterVisitor.prototype.getBuiltinMethodName = function (method) {
	        var name;
	        switch (method) {
	            case o.BuiltinMethod.ConcatArray:
	                name = '.addAll';
	                break;
	            case o.BuiltinMethod.SubscribeObservable:
	                name = 'listen';
	                break;
	            case o.BuiltinMethod.bind:
	                name = null;
	                break;
	            default:
	                throw new exceptions_1.BaseException("Unknown builtin method: " + method);
	        }
	        return name;
	    };
	    _DartEmitterVisitor.prototype.visitTryCatchStmt = function (stmt, ctx) {
	        ctx.println("try {");
	        ctx.incIndent();
	        this.visitAllStatements(stmt.bodyStmts, ctx);
	        ctx.decIndent();
	        ctx.println("} catch (" + abstract_emitter_1.CATCH_ERROR_VAR.name + ", " + abstract_emitter_1.CATCH_STACK_VAR.name + ") {");
	        ctx.incIndent();
	        this.visitAllStatements(stmt.catchStmts, ctx);
	        ctx.decIndent();
	        ctx.println("}");
	        return null;
	    };
	    _DartEmitterVisitor.prototype.visitBinaryOperatorExpr = function (ast, ctx) {
	        switch (ast.operator) {
	            case o.BinaryOperator.Identical:
	                ctx.print("identical(");
	                ast.lhs.visitExpression(this, ctx);
	                ctx.print(", ");
	                ast.rhs.visitExpression(this, ctx);
	                ctx.print(")");
	                break;
	            case o.BinaryOperator.NotIdentical:
	                ctx.print("!identical(");
	                ast.lhs.visitExpression(this, ctx);
	                ctx.print(", ");
	                ast.rhs.visitExpression(this, ctx);
	                ctx.print(")");
	                break;
	            default:
	                _super.prototype.visitBinaryOperatorExpr.call(this, ast, ctx);
	        }
	        return null;
	    };
	    _DartEmitterVisitor.prototype.visitLiteralArrayExpr = function (ast, ctx) {
	        if (isConstType(ast.type)) {
	            ctx.print("const ");
	        }
	        return _super.prototype.visitLiteralArrayExpr.call(this, ast, ctx);
	    };
	    _DartEmitterVisitor.prototype.visitLiteralMapExpr = function (ast, ctx) {
	        if (isConstType(ast.type)) {
	            ctx.print("const ");
	        }
	        if (lang_1.isPresent(ast.valueType)) {
	            ctx.print("<String, ");
	            ast.valueType.visitType(this, ctx);
	            ctx.print(">");
	        }
	        return _super.prototype.visitLiteralMapExpr.call(this, ast, ctx);
	    };
	    _DartEmitterVisitor.prototype.visitInstantiateExpr = function (ast, ctx) {
	        ctx.print(isConstType(ast.type) ? "const" : "new");
	        ctx.print(' ');
	        ast.classExpr.visitExpression(this, ctx);
	        ctx.print("(");
	        this.visitAllExpressions(ast.args, ctx, ",");
	        ctx.print(")");
	        return null;
	    };
	    _DartEmitterVisitor.prototype.visitBuiltintType = function (type, ctx) {
	        var typeStr;
	        switch (type.name) {
	            case o.BuiltinTypeName.Bool:
	                typeStr = 'bool';
	                break;
	            case o.BuiltinTypeName.Dynamic:
	                typeStr = 'dynamic';
	                break;
	            case o.BuiltinTypeName.Function:
	                typeStr = 'Function';
	                break;
	            case o.BuiltinTypeName.Number:
	                typeStr = 'num';
	                break;
	            case o.BuiltinTypeName.Int:
	                typeStr = 'int';
	                break;
	            case o.BuiltinTypeName.String:
	                typeStr = 'String';
	                break;
	            default:
	                throw new exceptions_1.BaseException("Unsupported builtin type " + type.name);
	        }
	        ctx.print(typeStr);
	        return null;
	    };
	    _DartEmitterVisitor.prototype.visitExternalType = function (ast, ctx) {
	        this._visitIdentifier(ast.value, ast.typeParams, ctx);
	        return null;
	    };
	    _DartEmitterVisitor.prototype.visitArrayType = function (type, ctx) {
	        ctx.print("List<");
	        if (lang_1.isPresent(type.of)) {
	            type.of.visitType(this, ctx);
	        }
	        else {
	            ctx.print("dynamic");
	        }
	        ctx.print(">");
	        return null;
	    };
	    _DartEmitterVisitor.prototype.visitMapType = function (type, ctx) {
	        ctx.print("Map<String, ");
	        if (lang_1.isPresent(type.valueType)) {
	            type.valueType.visitType(this, ctx);
	        }
	        else {
	            ctx.print("dynamic");
	        }
	        ctx.print(">");
	        return null;
	    };
	    _DartEmitterVisitor.prototype._visitParams = function (params, ctx) {
	        var _this = this;
	        this.visitAllObjects(function (param) {
	            if (lang_1.isPresent(param.type)) {
	                param.type.visitType(_this, ctx);
	                ctx.print(' ');
	            }
	            ctx.print(param.name);
	        }, params, ctx, ',');
	    };
	    _DartEmitterVisitor.prototype._visitIdentifier = function (value, typeParams, ctx) {
	        var _this = this;
	        if (lang_1.isBlank(value.name)) {
	            throw new exceptions_1.BaseException("Internal error: unknown identifier " + value);
	        }
	        if (lang_1.isPresent(value.moduleUrl) && value.moduleUrl != this._moduleUrl) {
	            var prefix = this.importsWithPrefixes.get(value.moduleUrl);
	            if (lang_1.isBlank(prefix)) {
	                prefix = "import" + this.importsWithPrefixes.size;
	                this.importsWithPrefixes.set(value.moduleUrl, prefix);
	            }
	            ctx.print(prefix + ".");
	        }
	        ctx.print(value.name);
	        if (lang_1.isPresent(typeParams) && typeParams.length > 0) {
	            ctx.print("<");
	            this.visitAllObjects(function (type) { return type.visitType(_this, ctx); }, typeParams, ctx, ',');
	            ctx.print(">");
	        }
	    };
	    return _DartEmitterVisitor;
	}(abstract_emitter_1.AbstractEmitterVisitor));
	function getSuperConstructorCallExpr(stmt) {
	    if (stmt instanceof o.ExpressionStatement) {
	        var expr = stmt.expr;
	        if (expr instanceof o.InvokeFunctionExpr) {
	            var fn = expr.fn;
	            if (fn instanceof o.ReadVarExpr) {
	                if (fn.builtin === o.BuiltinVar.Super) {
	                    return expr;
	                }
	            }
	        }
	    }
	    return null;
	}
	function isConstType(type) {
	    return lang_1.isPresent(type) && type.hasModifier(o.TypeModifier.Const);
	}
	//# sourceMappingURL=dart_emitter.js.map

/***/ },
/* 366 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var core_private_1 = __webpack_require__(13);
	var lang_1 = __webpack_require__(3);
	var exceptions_1 = __webpack_require__(8);
	var InterpretiveAppViewInstanceFactory = (function () {
	    function InterpretiveAppViewInstanceFactory() {
	    }
	    InterpretiveAppViewInstanceFactory.prototype.createInstance = function (superClass, clazz, args, props, getters, methods) {
	        if (superClass === core_private_1.AppView) {
	            // We are always using DebugAppView as parent.
	            // However, in prod mode we generate a constructor call that does
	            // not have the argument for the debugNodeInfos.
	            args = args.concat([null]);
	            return new _InterpretiveAppView(args, props, getters, methods);
	        }
	        else if (superClass === core_private_1.DebugAppView) {
	            return new _InterpretiveAppView(args, props, getters, methods);
	        }
	        throw new exceptions_1.BaseException("Can't instantiate class " + superClass + " in interpretative mode");
	    };
	    return InterpretiveAppViewInstanceFactory;
	}());
	exports.InterpretiveAppViewInstanceFactory = InterpretiveAppViewInstanceFactory;
	var _InterpretiveAppView = (function (_super) {
	    __extends(_InterpretiveAppView, _super);
	    function _InterpretiveAppView(args, props, getters, methods) {
	        _super.call(this, args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7]);
	        this.props = props;
	        this.getters = getters;
	        this.methods = methods;
	    }
	    _InterpretiveAppView.prototype.createInternal = function (rootSelector) {
	        var m = this.methods.get('createInternal');
	        if (lang_1.isPresent(m)) {
	            return m(rootSelector);
	        }
	        else {
	            return _super.prototype.createInternal.call(this, rootSelector);
	        }
	    };
	    _InterpretiveAppView.prototype.injectorGetInternal = function (token, nodeIndex, notFoundResult) {
	        var m = this.methods.get('injectorGetInternal');
	        if (lang_1.isPresent(m)) {
	            return m(token, nodeIndex, notFoundResult);
	        }
	        else {
	            return _super.prototype.injectorGet.call(this, token, nodeIndex, notFoundResult);
	        }
	    };
	    _InterpretiveAppView.prototype.destroyInternal = function () {
	        var m = this.methods.get('destroyInternal');
	        if (lang_1.isPresent(m)) {
	            return m();
	        }
	        else {
	            return _super.prototype.destroyInternal.call(this);
	        }
	    };
	    _InterpretiveAppView.prototype.dirtyParentQueriesInternal = function () {
	        var m = this.methods.get('dirtyParentQueriesInternal');
	        if (lang_1.isPresent(m)) {
	            return m();
	        }
	        else {
	            return _super.prototype.dirtyParentQueriesInternal.call(this);
	        }
	    };
	    _InterpretiveAppView.prototype.detectChangesInternal = function (throwOnChange) {
	        var m = this.methods.get('detectChangesInternal');
	        if (lang_1.isPresent(m)) {
	            return m(throwOnChange);
	        }
	        else {
	            return _super.prototype.detectChangesInternal.call(this, throwOnChange);
	        }
	    };
	    return _InterpretiveAppView;
	}(core_private_1.DebugAppView));
	//# sourceMappingURL=interpretive_view.js.map

/***/ },
/* 367 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var core_1 = __webpack_require__(1);
	var lang_1 = __webpack_require__(3);
	var async_1 = __webpack_require__(89);
	var exceptions_1 = __webpack_require__(8);
	var collection_1 = __webpack_require__(7);
	var o = __webpack_require__(10);
	var dart_emitter_1 = __webpack_require__(365);
	var ts_emitter_1 = __webpack_require__(370);
	function interpretStatements(statements, resultVar, instanceFactory) {
	    var stmtsWithReturn = statements.concat([new o.ReturnStatement(o.variable(resultVar))]);
	    var ctx = new _ExecutionContext(null, null, null, null, new Map(), new Map(), new Map(), new Map(), instanceFactory);
	    var visitor = new StatementInterpreter();
	    var result = visitor.visitAllStatements(stmtsWithReturn, ctx);
	    return lang_1.isPresent(result) ? result.value : null;
	}
	exports.interpretStatements = interpretStatements;
	var DynamicInstance = (function () {
	    function DynamicInstance() {
	    }
	    Object.defineProperty(DynamicInstance.prototype, "props", {
	        get: function () { return exceptions_1.unimplemented(); },
	        enumerable: true,
	        configurable: true
	    });
	    Object.defineProperty(DynamicInstance.prototype, "getters", {
	        get: function () { return exceptions_1.unimplemented(); },
	        enumerable: true,
	        configurable: true
	    });
	    Object.defineProperty(DynamicInstance.prototype, "methods", {
	        get: function () { return exceptions_1.unimplemented(); },
	        enumerable: true,
	        configurable: true
	    });
	    Object.defineProperty(DynamicInstance.prototype, "clazz", {
	        get: function () { return exceptions_1.unimplemented(); },
	        enumerable: true,
	        configurable: true
	    });
	    return DynamicInstance;
	}());
	exports.DynamicInstance = DynamicInstance;
	function isDynamicInstance(instance) {
	    if (lang_1.IS_DART) {
	        return instance instanceof DynamicInstance;
	    }
	    else {
	        return lang_1.isPresent(instance) && lang_1.isPresent(instance.props) && lang_1.isPresent(instance.getters) &&
	            lang_1.isPresent(instance.methods);
	    }
	}
	function _executeFunctionStatements(varNames, varValues, statements, ctx, visitor) {
	    var childCtx = ctx.createChildWihtLocalVars();
	    for (var i = 0; i < varNames.length; i++) {
	        childCtx.vars.set(varNames[i], varValues[i]);
	    }
	    var result = visitor.visitAllStatements(statements, childCtx);
	    return lang_1.isPresent(result) ? result.value : null;
	}
	var _ExecutionContext = (function () {
	    function _ExecutionContext(parent, superClass, superInstance, className, vars, props, getters, methods, instanceFactory) {
	        this.parent = parent;
	        this.superClass = superClass;
	        this.superInstance = superInstance;
	        this.className = className;
	        this.vars = vars;
	        this.props = props;
	        this.getters = getters;
	        this.methods = methods;
	        this.instanceFactory = instanceFactory;
	    }
	    _ExecutionContext.prototype.createChildWihtLocalVars = function () {
	        return new _ExecutionContext(this, this.superClass, this.superInstance, this.className, new Map(), this.props, this.getters, this.methods, this.instanceFactory);
	    };
	    return _ExecutionContext;
	}());
	var ReturnValue = (function () {
	    function ReturnValue(value) {
	        this.value = value;
	    }
	    return ReturnValue;
	}());
	var _DynamicClass = (function () {
	    function _DynamicClass(_classStmt, _ctx, _visitor) {
	        this._classStmt = _classStmt;
	        this._ctx = _ctx;
	        this._visitor = _visitor;
	    }
	    _DynamicClass.prototype.instantiate = function (args) {
	        var _this = this;
	        var props = new Map();
	        var getters = new Map();
	        var methods = new Map();
	        var superClass = this._classStmt.parent.visitExpression(this._visitor, this._ctx);
	        var instanceCtx = new _ExecutionContext(this._ctx, superClass, null, this._classStmt.name, this._ctx.vars, props, getters, methods, this._ctx.instanceFactory);
	        this._classStmt.fields.forEach(function (field) { props.set(field.name, null); });
	        this._classStmt.getters.forEach(function (getter) {
	            getters.set(getter.name, function () { return _executeFunctionStatements([], [], getter.body, instanceCtx, _this._visitor); });
	        });
	        this._classStmt.methods.forEach(function (method) {
	            var paramNames = method.params.map(function (param) { return param.name; });
	            methods.set(method.name, _declareFn(paramNames, method.body, instanceCtx, _this._visitor));
	        });
	        var ctorParamNames = this._classStmt.constructorMethod.params.map(function (param) { return param.name; });
	        _executeFunctionStatements(ctorParamNames, args, this._classStmt.constructorMethod.body, instanceCtx, this._visitor);
	        return instanceCtx.superInstance;
	    };
	    _DynamicClass.prototype.debugAst = function () { return this._visitor.debugAst(this._classStmt); };
	    return _DynamicClass;
	}());
	var StatementInterpreter = (function () {
	    function StatementInterpreter() {
	    }
	    StatementInterpreter.prototype.debugAst = function (ast) {
	        return lang_1.IS_DART ? dart_emitter_1.debugOutputAstAsDart(ast) : ts_emitter_1.debugOutputAstAsTypeScript(ast);
	    };
	    StatementInterpreter.prototype.visitDeclareVarStmt = function (stmt, ctx) {
	        ctx.vars.set(stmt.name, stmt.value.visitExpression(this, ctx));
	        return null;
	    };
	    StatementInterpreter.prototype.visitWriteVarExpr = function (expr, ctx) {
	        var value = expr.value.visitExpression(this, ctx);
	        var currCtx = ctx;
	        while (currCtx != null) {
	            if (currCtx.vars.has(expr.name)) {
	                currCtx.vars.set(expr.name, value);
	                return value;
	            }
	            currCtx = currCtx.parent;
	        }
	        throw new exceptions_1.BaseException("Not declared variable " + expr.name);
	    };
	    StatementInterpreter.prototype.visitReadVarExpr = function (ast, ctx) {
	        var varName = ast.name;
	        if (lang_1.isPresent(ast.builtin)) {
	            switch (ast.builtin) {
	                case o.BuiltinVar.Super:
	                case o.BuiltinVar.This:
	                    return ctx.superInstance;
	                case o.BuiltinVar.CatchError:
	                    varName = CATCH_ERROR_VAR;
	                    break;
	                case o.BuiltinVar.CatchStack:
	                    varName = CATCH_STACK_VAR;
	                    break;
	                default:
	                    throw new exceptions_1.BaseException("Unknown builtin variable " + ast.builtin);
	            }
	        }
	        var currCtx = ctx;
	        while (currCtx != null) {
	            if (currCtx.vars.has(varName)) {
	                return currCtx.vars.get(varName);
	            }
	            currCtx = currCtx.parent;
	        }
	        throw new exceptions_1.BaseException("Not declared variable " + varName);
	    };
	    StatementInterpreter.prototype.visitWriteKeyExpr = function (expr, ctx) {
	        var receiver = expr.receiver.visitExpression(this, ctx);
	        var index = expr.index.visitExpression(this, ctx);
	        var value = expr.value.visitExpression(this, ctx);
	        receiver[index] = value;
	        return value;
	    };
	    StatementInterpreter.prototype.visitWritePropExpr = function (expr, ctx) {
	        var receiver = expr.receiver.visitExpression(this, ctx);
	        var value = expr.value.visitExpression(this, ctx);
	        if (isDynamicInstance(receiver)) {
	            var di = receiver;
	            if (di.props.has(expr.name)) {
	                di.props.set(expr.name, value);
	            }
	            else {
	                core_1.reflector.setter(expr.name)(receiver, value);
	            }
	        }
	        else {
	            core_1.reflector.setter(expr.name)(receiver, value);
	        }
	        return value;
	    };
	    StatementInterpreter.prototype.visitInvokeMethodExpr = function (expr, ctx) {
	        var receiver = expr.receiver.visitExpression(this, ctx);
	        var args = this.visitAllExpressions(expr.args, ctx);
	        var result;
	        if (lang_1.isPresent(expr.builtin)) {
	            switch (expr.builtin) {
	                case o.BuiltinMethod.ConcatArray:
	                    result = collection_1.ListWrapper.concat(receiver, args[0]);
	                    break;
	                case o.BuiltinMethod.SubscribeObservable:
	                    result = async_1.ObservableWrapper.subscribe(receiver, args[0]);
	                    break;
	                case o.BuiltinMethod.bind:
	                    if (lang_1.IS_DART) {
	                        result = receiver;
	                    }
	                    else {
	                        result = receiver.bind(args[0]);
	                    }
	                    break;
	                default:
	                    throw new exceptions_1.BaseException("Unknown builtin method " + expr.builtin);
	            }
	        }
	        else if (isDynamicInstance(receiver)) {
	            var di = receiver;
	            if (di.methods.has(expr.name)) {
	                result = lang_1.FunctionWrapper.apply(di.methods.get(expr.name), args);
	            }
	            else {
	                result = core_1.reflector.method(expr.name)(receiver, args);
	            }
	        }
	        else {
	            result = core_1.reflector.method(expr.name)(receiver, args);
	        }
	        return result;
	    };
	    StatementInterpreter.prototype.visitInvokeFunctionExpr = function (stmt, ctx) {
	        var args = this.visitAllExpressions(stmt.args, ctx);
	        var fnExpr = stmt.fn;
	        if (fnExpr instanceof o.ReadVarExpr && fnExpr.builtin === o.BuiltinVar.Super) {
	            ctx.superInstance = ctx.instanceFactory.createInstance(ctx.superClass, ctx.className, args, ctx.props, ctx.getters, ctx.methods);
	            ctx.parent.superInstance = ctx.superInstance;
	            return null;
	        }
	        else {
	            var fn = stmt.fn.visitExpression(this, ctx);
	            return lang_1.FunctionWrapper.apply(fn, args);
	        }
	    };
	    StatementInterpreter.prototype.visitReturnStmt = function (stmt, ctx) {
	        return new ReturnValue(stmt.value.visitExpression(this, ctx));
	    };
	    StatementInterpreter.prototype.visitDeclareClassStmt = function (stmt, ctx) {
	        var clazz = new _DynamicClass(stmt, ctx, this);
	        ctx.vars.set(stmt.name, clazz);
	        return null;
	    };
	    StatementInterpreter.prototype.visitExpressionStmt = function (stmt, ctx) {
	        return stmt.expr.visitExpression(this, ctx);
	    };
	    StatementInterpreter.prototype.visitIfStmt = function (stmt, ctx) {
	        var condition = stmt.condition.visitExpression(this, ctx);
	        if (condition) {
	            return this.visitAllStatements(stmt.trueCase, ctx);
	        }
	        else if (lang_1.isPresent(stmt.falseCase)) {
	            return this.visitAllStatements(stmt.falseCase, ctx);
	        }
	        return null;
	    };
	    StatementInterpreter.prototype.visitTryCatchStmt = function (stmt, ctx) {
	        try {
	            return this.visitAllStatements(stmt.bodyStmts, ctx);
	        }
	        catch (e) {
	            var childCtx = ctx.createChildWihtLocalVars();
	            childCtx.vars.set(CATCH_ERROR_VAR, e);
	            childCtx.vars.set(CATCH_STACK_VAR, e.stack);
	            return this.visitAllStatements(stmt.catchStmts, childCtx);
	        }
	    };
	    StatementInterpreter.prototype.visitThrowStmt = function (stmt, ctx) {
	        throw stmt.error.visitExpression(this, ctx);
	    };
	    StatementInterpreter.prototype.visitCommentStmt = function (stmt, context) { return null; };
	    StatementInterpreter.prototype.visitInstantiateExpr = function (ast, ctx) {
	        var args = this.visitAllExpressions(ast.args, ctx);
	        var clazz = ast.classExpr.visitExpression(this, ctx);
	        if (clazz instanceof _DynamicClass) {
	            return clazz.instantiate(args);
	        }
	        else {
	            return lang_1.FunctionWrapper.apply(core_1.reflector.factory(clazz), args);
	        }
	    };
	    StatementInterpreter.prototype.visitLiteralExpr = function (ast, ctx) { return ast.value; };
	    StatementInterpreter.prototype.visitExternalExpr = function (ast, ctx) { return ast.value.runtime; };
	    StatementInterpreter.prototype.visitConditionalExpr = function (ast, ctx) {
	        if (ast.condition.visitExpression(this, ctx)) {
	            return ast.trueCase.visitExpression(this, ctx);
	        }
	        else if (lang_1.isPresent(ast.falseCase)) {
	            return ast.falseCase.visitExpression(this, ctx);
	        }
	        return null;
	    };
	    StatementInterpreter.prototype.visitNotExpr = function (ast, ctx) {
	        return !ast.condition.visitExpression(this, ctx);
	    };
	    StatementInterpreter.prototype.visitCastExpr = function (ast, ctx) {
	        return ast.value.visitExpression(this, ctx);
	    };
	    StatementInterpreter.prototype.visitFunctionExpr = function (ast, ctx) {
	        var paramNames = ast.params.map(function (param) { return param.name; });
	        return _declareFn(paramNames, ast.statements, ctx, this);
	    };
	    StatementInterpreter.prototype.visitDeclareFunctionStmt = function (stmt, ctx) {
	        var paramNames = stmt.params.map(function (param) { return param.name; });
	        ctx.vars.set(stmt.name, _declareFn(paramNames, stmt.statements, ctx, this));
	        return null;
	    };
	    StatementInterpreter.prototype.visitBinaryOperatorExpr = function (ast, ctx) {
	        var _this = this;
	        var lhs = function () { return ast.lhs.visitExpression(_this, ctx); };
	        var rhs = function () { return ast.rhs.visitExpression(_this, ctx); };
	        switch (ast.operator) {
	            case o.BinaryOperator.Equals:
	                return lhs() == rhs();
	            case o.BinaryOperator.Identical:
	                return lhs() === rhs();
	            case o.BinaryOperator.NotEquals:
	                return lhs() != rhs();
	            case o.BinaryOperator.NotIdentical:
	                return lhs() !== rhs();
	            case o.BinaryOperator.And:
	                return lhs() && rhs();
	            case o.BinaryOperator.Or:
	                return lhs() || rhs();
	            case o.BinaryOperator.Plus:
	                return lhs() + rhs();
	            case o.BinaryOperator.Minus:
	                return lhs() - rhs();
	            case o.BinaryOperator.Divide:
	                return lhs() / rhs();
	            case o.BinaryOperator.Multiply:
	                return lhs() * rhs();
	            case o.BinaryOperator.Modulo:
	                return lhs() % rhs();
	            case o.BinaryOperator.Lower:
	                return lhs() < rhs();
	            case o.BinaryOperator.LowerEquals:
	                return lhs() <= rhs();
	            case o.BinaryOperator.Bigger:
	                return lhs() > rhs();
	            case o.BinaryOperator.BiggerEquals:
	                return lhs() >= rhs();
	            default:
	                throw new exceptions_1.BaseException("Unknown operator " + ast.operator);
	        }
	    };
	    StatementInterpreter.prototype.visitReadPropExpr = function (ast, ctx) {
	        var result;
	        var receiver = ast.receiver.visitExpression(this, ctx);
	        if (isDynamicInstance(receiver)) {
	            var di = receiver;
	            if (di.props.has(ast.name)) {
	                result = di.props.get(ast.name);
	            }
	            else if (di.getters.has(ast.name)) {
	                result = di.getters.get(ast.name)();
	            }
	            else if (di.methods.has(ast.name)) {
	                result = di.methods.get(ast.name);
	            }
	            else {
	                result = core_1.reflector.getter(ast.name)(receiver);
	            }
	        }
	        else {
	            result = core_1.reflector.getter(ast.name)(receiver);
	        }
	        return result;
	    };
	    StatementInterpreter.prototype.visitReadKeyExpr = function (ast, ctx) {
	        var receiver = ast.receiver.visitExpression(this, ctx);
	        var prop = ast.index.visitExpression(this, ctx);
	        return receiver[prop];
	    };
	    StatementInterpreter.prototype.visitLiteralArrayExpr = function (ast, ctx) {
	        return this.visitAllExpressions(ast.entries, ctx);
	    };
	    StatementInterpreter.prototype.visitLiteralMapExpr = function (ast, ctx) {
	        var _this = this;
	        var result = {};
	        ast.entries.forEach(function (entry) { return result[entry[0]] =
	            entry[1].visitExpression(_this, ctx); });
	        return result;
	    };
	    StatementInterpreter.prototype.visitAllExpressions = function (expressions, ctx) {
	        var _this = this;
	        return expressions.map(function (expr) { return expr.visitExpression(_this, ctx); });
	    };
	    StatementInterpreter.prototype.visitAllStatements = function (statements, ctx) {
	        for (var i = 0; i < statements.length; i++) {
	            var stmt = statements[i];
	            var val = stmt.visitStatement(this, ctx);
	            if (val instanceof ReturnValue) {
	                return val;
	            }
	        }
	        return null;
	    };
	    return StatementInterpreter;
	}());
	function _declareFn(varNames, statements, ctx, visitor) {
	    switch (varNames.length) {
	        case 0:
	            return function () { return _executeFunctionStatements(varNames, [], statements, ctx, visitor); };
	        case 1:
	            return function (d0) { return _executeFunctionStatements(varNames, [d0], statements, ctx, visitor); };
	        case 2:
	            return function (d0, d1) { return _executeFunctionStatements(varNames, [d0, d1], statements, ctx, visitor); };
	        case 3:
	            return function (d0, d1, d2) {
	                return _executeFunctionStatements(varNames, [d0, d1, d2], statements, ctx, visitor);
	            };
	        case 4:
	            return function (d0, d1, d2, d3) {
	                return _executeFunctionStatements(varNames, [d0, d1, d2, d3], statements, ctx, visitor);
	            };
	        case 5:
	            return function (d0, d1, d2, d3, d4) { return _executeFunctionStatements(varNames, [d0, d1, d2, d3, d4], statements, ctx, visitor); };
	        case 6:
	            return function (d0, d1, d2, d3, d4, d5) { return _executeFunctionStatements(varNames, [d0, d1, d2, d3, d4, d5], statements, ctx, visitor); };
	        case 7:
	            return function (d0, d1, d2, d3, d4, d5, d6) { return _executeFunctionStatements(varNames, [d0, d1, d2, d3, d4, d5, d6], statements, ctx, visitor); };
	        case 8:
	            return function (d0, d1, d2, d3, d4, d5, d6, d7) { return _executeFunctionStatements(varNames, [d0, d1, d2, d3, d4, d5, d6, d7], statements, ctx, visitor); };
	        case 9:
	            return function (d0, d1, d2, d3, d4, d5, d6, d7, d8) { return _executeFunctionStatements(varNames, [d0, d1, d2, d3, d4, d5, d6, d7, d8], statements, ctx, visitor); };
	        case 10:
	            return function (d0, d1, d2, d3, d4, d5, d6, d7, d8, d9) { return _executeFunctionStatements(varNames, [d0, d1, d2, d3, d4, d5, d6, d7, d8, d9], statements, ctx, visitor); };
	        default:
	            throw new exceptions_1.BaseException('Declaring functions with more than 10 arguments is not supported right now');
	    }
	}
	var CATCH_ERROR_VAR = 'error';
	var CATCH_STACK_VAR = 'stack';
	//# sourceMappingURL=output_interpreter.js.map

/***/ },
/* 368 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var lang_1 = __webpack_require__(3);
	var abstract_emitter_1 = __webpack_require__(55);
	var abstract_js_emitter_1 = __webpack_require__(364);
	var util_1 = __webpack_require__(25);
	function jitStatements(sourceUrl, statements, resultVar) {
	    var converter = new JitEmitterVisitor();
	    var ctx = abstract_emitter_1.EmitterVisitorContext.createRoot([resultVar]);
	    converter.visitAllStatements(statements, ctx);
	    return lang_1.evalExpression(sourceUrl, resultVar, ctx.toSource(), converter.getArgs());
	}
	exports.jitStatements = jitStatements;
	var JitEmitterVisitor = (function (_super) {
	    __extends(JitEmitterVisitor, _super);
	    function JitEmitterVisitor() {
	        _super.apply(this, arguments);
	        this._evalArgNames = [];
	        this._evalArgValues = [];
	    }
	    JitEmitterVisitor.prototype.getArgs = function () {
	        var result = {};
	        for (var i = 0; i < this._evalArgNames.length; i++) {
	            result[this._evalArgNames[i]] = this._evalArgValues[i];
	        }
	        return result;
	    };
	    JitEmitterVisitor.prototype.visitExternalExpr = function (ast, ctx) {
	        var value = ast.value.runtime;
	        var id = this._evalArgValues.indexOf(value);
	        if (id === -1) {
	            id = this._evalArgValues.length;
	            this._evalArgValues.push(value);
	            var name = lang_1.isPresent(ast.value.name) ? util_1.sanitizeIdentifier(ast.value.name) : 'val';
	            this._evalArgNames.push(util_1.sanitizeIdentifier("jit_" + name + id));
	        }
	        ctx.print(this._evalArgNames[id]);
	        return null;
	    };
	    return JitEmitterVisitor;
	}(abstract_js_emitter_1.AbstractJsEmitterVisitor));
	//# sourceMappingURL=output_jit.js.map

/***/ },
/* 369 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var exceptions_1 = __webpack_require__(8);
	var lang_1 = __webpack_require__(3);
	// asset:<package-name>/<realm>/<path-to-module>
	var _ASSET_URL_RE = /asset:([^\/]+)\/([^\/]+)\/(.+)/g;
	/**
	 * Interface that defines how import statements should be generated.
	 */
	var ImportGenerator = (function () {
	    function ImportGenerator() {
	    }
	    ImportGenerator.parseAssetUrl = function (url) { return AssetUrl.parse(url); };
	    return ImportGenerator;
	}());
	exports.ImportGenerator = ImportGenerator;
	var AssetUrl = (function () {
	    function AssetUrl(packageName, firstLevelDir, modulePath) {
	        this.packageName = packageName;
	        this.firstLevelDir = firstLevelDir;
	        this.modulePath = modulePath;
	    }
	    AssetUrl.parse = function (url, allowNonMatching) {
	        if (allowNonMatching === void 0) { allowNonMatching = true; }
	        var match = lang_1.RegExpWrapper.firstMatch(_ASSET_URL_RE, url);
	        if (lang_1.isPresent(match)) {
	            return new AssetUrl(match[1], match[2], match[3]);
	        }
	        if (allowNonMatching) {
	            return null;
	        }
	        throw new exceptions_1.BaseException("Url " + url + " is not a valid asset: url");
	    };
	    return AssetUrl;
	}());
	exports.AssetUrl = AssetUrl;
	//# sourceMappingURL=path_util.js.map

/***/ },
/* 370 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var o = __webpack_require__(10);
	var lang_1 = __webpack_require__(3);
	var exceptions_1 = __webpack_require__(8);
	var abstract_emitter_1 = __webpack_require__(55);
	var _debugModuleUrl = 'asset://debug/lib';
	function debugOutputAstAsTypeScript(ast) {
	    var converter = new _TsEmitterVisitor(_debugModuleUrl);
	    var ctx = abstract_emitter_1.EmitterVisitorContext.createRoot([]);
	    var asts;
	    if (lang_1.isArray(ast)) {
	        asts = ast;
	    }
	    else {
	        asts = [ast];
	    }
	    asts.forEach(function (ast) {
	        if (ast instanceof o.Statement) {
	            ast.visitStatement(converter, ctx);
	        }
	        else if (ast instanceof o.Expression) {
	            ast.visitExpression(converter, ctx);
	        }
	        else if (ast instanceof o.Type) {
	            ast.visitType(converter, ctx);
	        }
	        else {
	            throw new exceptions_1.BaseException("Don't know how to print debug info for " + ast);
	        }
	    });
	    return ctx.toSource();
	}
	exports.debugOutputAstAsTypeScript = debugOutputAstAsTypeScript;
	var TypeScriptEmitter = (function () {
	    function TypeScriptEmitter(_importGenerator) {
	        this._importGenerator = _importGenerator;
	    }
	    TypeScriptEmitter.prototype.emitStatements = function (moduleUrl, stmts, exportedVars) {
	        var _this = this;
	        var converter = new _TsEmitterVisitor(moduleUrl);
	        var ctx = abstract_emitter_1.EmitterVisitorContext.createRoot(exportedVars);
	        converter.visitAllStatements(stmts, ctx);
	        var srcParts = [];
	        converter.importsWithPrefixes.forEach(function (prefix, importedModuleUrl) {
	            // Note: can't write the real word for import as it screws up system.js auto detection...
	            srcParts.push("imp" +
	                ("ort * as " + prefix + " from '" + _this._importGenerator.getImportPath(moduleUrl, importedModuleUrl) + "';"));
	        });
	        srcParts.push(ctx.toSource());
	        return srcParts.join('\n');
	    };
	    return TypeScriptEmitter;
	}());
	exports.TypeScriptEmitter = TypeScriptEmitter;
	var _TsEmitterVisitor = (function (_super) {
	    __extends(_TsEmitterVisitor, _super);
	    function _TsEmitterVisitor(_moduleUrl) {
	        _super.call(this, false);
	        this._moduleUrl = _moduleUrl;
	        this.importsWithPrefixes = new Map();
	    }
	    _TsEmitterVisitor.prototype.visitExternalExpr = function (ast, ctx) {
	        this._visitIdentifier(ast.value, ast.typeParams, ctx);
	        return null;
	    };
	    _TsEmitterVisitor.prototype.visitDeclareVarStmt = function (stmt, ctx) {
	        if (ctx.isExportedVar(stmt.name)) {
	            ctx.print("export ");
	        }
	        if (stmt.hasModifier(o.StmtModifier.Final)) {
	            ctx.print("const");
	        }
	        else {
	            ctx.print("var");
	        }
	        ctx.print(" " + stmt.name);
	        if (lang_1.isPresent(stmt.type)) {
	            ctx.print(":");
	            stmt.type.visitType(this, ctx);
	        }
	        ctx.print(" = ");
	        stmt.value.visitExpression(this, ctx);
	        ctx.println(";");
	        return null;
	    };
	    _TsEmitterVisitor.prototype.visitCastExpr = function (ast, ctx) {
	        ctx.print("(<");
	        ast.type.visitType(this, ctx);
	        ctx.print(">");
	        ast.value.visitExpression(this, ctx);
	        ctx.print(")");
	        return null;
	    };
	    _TsEmitterVisitor.prototype.visitDeclareClassStmt = function (stmt, ctx) {
	        var _this = this;
	        ctx.pushClass(stmt);
	        if (ctx.isExportedVar(stmt.name)) {
	            ctx.print("export ");
	        }
	        ctx.print("class " + stmt.name);
	        if (lang_1.isPresent(stmt.parent)) {
	            ctx.print(" extends ");
	            stmt.parent.visitExpression(this, ctx);
	        }
	        ctx.println(" {");
	        ctx.incIndent();
	        stmt.fields.forEach(function (field) { return _this._visitClassField(field, ctx); });
	        if (lang_1.isPresent(stmt.constructorMethod)) {
	            this._visitClassConstructor(stmt, ctx);
	        }
	        stmt.getters.forEach(function (getter) { return _this._visitClassGetter(getter, ctx); });
	        stmt.methods.forEach(function (method) { return _this._visitClassMethod(method, ctx); });
	        ctx.decIndent();
	        ctx.println("}");
	        ctx.popClass();
	        return null;
	    };
	    _TsEmitterVisitor.prototype._visitClassField = function (field, ctx) {
	        if (field.hasModifier(o.StmtModifier.Private)) {
	            ctx.print("private ");
	        }
	        ctx.print(field.name);
	        if (lang_1.isPresent(field.type)) {
	            ctx.print(":");
	            field.type.visitType(this, ctx);
	        }
	        else {
	            ctx.print(": any");
	        }
	        ctx.println(";");
	    };
	    _TsEmitterVisitor.prototype._visitClassGetter = function (getter, ctx) {
	        if (getter.hasModifier(o.StmtModifier.Private)) {
	            ctx.print("private ");
	        }
	        ctx.print("get " + getter.name + "()");
	        if (lang_1.isPresent(getter.type)) {
	            ctx.print(":");
	            getter.type.visitType(this, ctx);
	        }
	        ctx.println(" {");
	        ctx.incIndent();
	        this.visitAllStatements(getter.body, ctx);
	        ctx.decIndent();
	        ctx.println("}");
	    };
	    _TsEmitterVisitor.prototype._visitClassConstructor = function (stmt, ctx) {
	        ctx.print("constructor(");
	        this._visitParams(stmt.constructorMethod.params, ctx);
	        ctx.println(") {");
	        ctx.incIndent();
	        this.visitAllStatements(stmt.constructorMethod.body, ctx);
	        ctx.decIndent();
	        ctx.println("}");
	    };
	    _TsEmitterVisitor.prototype._visitClassMethod = function (method, ctx) {
	        if (method.hasModifier(o.StmtModifier.Private)) {
	            ctx.print("private ");
	        }
	        ctx.print(method.name + "(");
	        this._visitParams(method.params, ctx);
	        ctx.print("):");
	        if (lang_1.isPresent(method.type)) {
	            method.type.visitType(this, ctx);
	        }
	        else {
	            ctx.print("void");
	        }
	        ctx.println(" {");
	        ctx.incIndent();
	        this.visitAllStatements(method.body, ctx);
	        ctx.decIndent();
	        ctx.println("}");
	    };
	    _TsEmitterVisitor.prototype.visitFunctionExpr = function (ast, ctx) {
	        ctx.print("(");
	        this._visitParams(ast.params, ctx);
	        ctx.print("):");
	        if (lang_1.isPresent(ast.type)) {
	            ast.type.visitType(this, ctx);
	        }
	        else {
	            ctx.print("void");
	        }
	        ctx.println(" => {");
	        ctx.incIndent();
	        this.visitAllStatements(ast.statements, ctx);
	        ctx.decIndent();
	        ctx.print("}");
	        return null;
	    };
	    _TsEmitterVisitor.prototype.visitDeclareFunctionStmt = function (stmt, ctx) {
	        if (ctx.isExportedVar(stmt.name)) {
	            ctx.print("export ");
	        }
	        ctx.print("function " + stmt.name + "(");
	        this._visitParams(stmt.params, ctx);
	        ctx.print("):");
	        if (lang_1.isPresent(stmt.type)) {
	            stmt.type.visitType(this, ctx);
	        }
	        else {
	            ctx.print("void");
	        }
	        ctx.println(" {");
	        ctx.incIndent();
	        this.visitAllStatements(stmt.statements, ctx);
	        ctx.decIndent();
	        ctx.println("}");
	        return null;
	    };
	    _TsEmitterVisitor.prototype.visitTryCatchStmt = function (stmt, ctx) {
	        ctx.println("try {");
	        ctx.incIndent();
	        this.visitAllStatements(stmt.bodyStmts, ctx);
	        ctx.decIndent();
	        ctx.println("} catch (" + abstract_emitter_1.CATCH_ERROR_VAR.name + ") {");
	        ctx.incIndent();
	        var catchStmts = [
	            abstract_emitter_1.CATCH_STACK_VAR.set(abstract_emitter_1.CATCH_ERROR_VAR.prop('stack'))
	                .toDeclStmt(null, [o.StmtModifier.Final])
	        ].concat(stmt.catchStmts);
	        this.visitAllStatements(catchStmts, ctx);
	        ctx.decIndent();
	        ctx.println("}");
	        return null;
	    };
	    _TsEmitterVisitor.prototype.visitBuiltintType = function (type, ctx) {
	        var typeStr;
	        switch (type.name) {
	            case o.BuiltinTypeName.Bool:
	                typeStr = 'boolean';
	                break;
	            case o.BuiltinTypeName.Dynamic:
	                typeStr = 'any';
	                break;
	            case o.BuiltinTypeName.Function:
	                typeStr = 'Function';
	                break;
	            case o.BuiltinTypeName.Number:
	                typeStr = 'number';
	                break;
	            case o.BuiltinTypeName.Int:
	                typeStr = 'number';
	                break;
	            case o.BuiltinTypeName.String:
	                typeStr = 'string';
	                break;
	            default:
	                throw new exceptions_1.BaseException("Unsupported builtin type " + type.name);
	        }
	        ctx.print(typeStr);
	        return null;
	    };
	    _TsEmitterVisitor.prototype.visitExternalType = function (ast, ctx) {
	        this._visitIdentifier(ast.value, ast.typeParams, ctx);
	        return null;
	    };
	    _TsEmitterVisitor.prototype.visitArrayType = function (type, ctx) {
	        if (lang_1.isPresent(type.of)) {
	            type.of.visitType(this, ctx);
	        }
	        else {
	            ctx.print("any");
	        }
	        ctx.print("[]");
	        return null;
	    };
	    _TsEmitterVisitor.prototype.visitMapType = function (type, ctx) {
	        ctx.print("{[key: string]:");
	        if (lang_1.isPresent(type.valueType)) {
	            type.valueType.visitType(this, ctx);
	        }
	        else {
	            ctx.print("any");
	        }
	        ctx.print("}");
	        return null;
	    };
	    _TsEmitterVisitor.prototype.getBuiltinMethodName = function (method) {
	        var name;
	        switch (method) {
	            case o.BuiltinMethod.ConcatArray:
	                name = 'concat';
	                break;
	            case o.BuiltinMethod.SubscribeObservable:
	                name = 'subscribe';
	                break;
	            case o.BuiltinMethod.bind:
	                name = 'bind';
	                break;
	            default:
	                throw new exceptions_1.BaseException("Unknown builtin method: " + method);
	        }
	        return name;
	    };
	    _TsEmitterVisitor.prototype._visitParams = function (params, ctx) {
	        var _this = this;
	        this.visitAllObjects(function (param) {
	            ctx.print(param.name);
	            if (lang_1.isPresent(param.type)) {
	                ctx.print(":");
	                param.type.visitType(_this, ctx);
	            }
	        }, params, ctx, ',');
	    };
	    _TsEmitterVisitor.prototype._visitIdentifier = function (value, typeParams, ctx) {
	        var _this = this;
	        if (lang_1.isBlank(value.name)) {
	            throw new exceptions_1.BaseException("Internal error: unknown identifier " + value);
	        }
	        if (lang_1.isPresent(value.moduleUrl) && value.moduleUrl != this._moduleUrl) {
	            var prefix = this.importsWithPrefixes.get(value.moduleUrl);
	            if (lang_1.isBlank(prefix)) {
	                prefix = "import" + this.importsWithPrefixes.size;
	                this.importsWithPrefixes.set(value.moduleUrl, prefix);
	            }
	            ctx.print(prefix + ".");
	        }
	        ctx.print(value.name);
	        if (lang_1.isPresent(typeParams) && typeParams.length > 0) {
	            ctx.print("<");
	            this.visitAllObjects(function (type) { return type.visitType(_this, ctx); }, typeParams, ctx, ',');
	            ctx.print(">");
	        }
	    };
	    return _TsEmitterVisitor;
	}(abstract_emitter_1.AbstractEmitterVisitor));
	//# sourceMappingURL=ts_emitter.js.map

/***/ },
/* 371 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var lang_1 = __webpack_require__(3);
	var collection_1 = __webpack_require__(7);
	var template_ast_1 = __webpack_require__(24);
	var compile_metadata_1 = __webpack_require__(16);
	var identifiers_1 = __webpack_require__(17);
	var parse_util_1 = __webpack_require__(56);
	var ProviderError = (function (_super) {
	    __extends(ProviderError, _super);
	    function ProviderError(message, span) {
	        _super.call(this, span, message);
	    }
	    return ProviderError;
	}(parse_util_1.ParseError));
	exports.ProviderError = ProviderError;
	var ProviderViewContext = (function () {
	    function ProviderViewContext(component, sourceSpan) {
	        var _this = this;
	        this.component = component;
	        this.sourceSpan = sourceSpan;
	        this.errors = [];
	        this.viewQueries = _getViewQueries(component);
	        this.viewProviders = new compile_metadata_1.CompileTokenMap();
	        _normalizeProviders(component.viewProviders, sourceSpan, this.errors)
	            .forEach(function (provider) {
	            if (lang_1.isBlank(_this.viewProviders.get(provider.token))) {
	                _this.viewProviders.add(provider.token, true);
	            }
	        });
	    }
	    return ProviderViewContext;
	}());
	exports.ProviderViewContext = ProviderViewContext;
	var ProviderElementContext = (function () {
	    function ProviderElementContext(_viewContext, _parent, _isViewRoot, _directiveAsts, attrs, refs, _sourceSpan) {
	        var _this = this;
	        this._viewContext = _viewContext;
	        this._parent = _parent;
	        this._isViewRoot = _isViewRoot;
	        this._directiveAsts = _directiveAsts;
	        this._sourceSpan = _sourceSpan;
	        this._transformedProviders = new compile_metadata_1.CompileTokenMap();
	        this._seenProviders = new compile_metadata_1.CompileTokenMap();
	        this._hasViewContainer = false;
	        this._attrs = {};
	        attrs.forEach(function (attrAst) { return _this._attrs[attrAst.name] = attrAst.value; });
	        var directivesMeta = _directiveAsts.map(function (directiveAst) { return directiveAst.directive; });
	        this._allProviders =
	            _resolveProvidersFromDirectives(directivesMeta, _sourceSpan, _viewContext.errors);
	        this._contentQueries = _getContentQueries(directivesMeta);
	        var queriedTokens = new compile_metadata_1.CompileTokenMap();
	        this._allProviders.values().forEach(function (provider) { _this._addQueryReadsTo(provider.token, queriedTokens); });
	        refs.forEach(function (refAst) {
	            _this._addQueryReadsTo(new compile_metadata_1.CompileTokenMetadata({ value: refAst.name }), queriedTokens);
	        });
	        if (lang_1.isPresent(queriedTokens.get(identifiers_1.identifierToken(identifiers_1.Identifiers.ViewContainerRef)))) {
	            this._hasViewContainer = true;
	        }
	        // create the providers that we know are eager first
	        this._allProviders.values().forEach(function (provider) {
	            var eager = provider.eager || lang_1.isPresent(queriedTokens.get(provider.token));
	            if (eager) {
	                _this._getOrCreateLocalProvider(provider.providerType, provider.token, true);
	            }
	        });
	    }
	    ProviderElementContext.prototype.afterElement = function () {
	        var _this = this;
	        // collect lazy providers
	        this._allProviders.values().forEach(function (provider) {
	            _this._getOrCreateLocalProvider(provider.providerType, provider.token, false);
	        });
	    };
	    Object.defineProperty(ProviderElementContext.prototype, "transformProviders", {
	        get: function () { return this._transformedProviders.values(); },
	        enumerable: true,
	        configurable: true
	    });
	    Object.defineProperty(ProviderElementContext.prototype, "transformedDirectiveAsts", {
	        get: function () {
	            var sortedProviderTypes = this._transformedProviders.values().map(function (provider) { return provider.token.identifier; });
	            var sortedDirectives = collection_1.ListWrapper.clone(this._directiveAsts);
	            collection_1.ListWrapper.sort(sortedDirectives, function (dir1, dir2) { return sortedProviderTypes.indexOf(dir1.directive.type) -
	                sortedProviderTypes.indexOf(dir2.directive.type); });
	            return sortedDirectives;
	        },
	        enumerable: true,
	        configurable: true
	    });
	    Object.defineProperty(ProviderElementContext.prototype, "transformedHasViewContainer", {
	        get: function () { return this._hasViewContainer; },
	        enumerable: true,
	        configurable: true
	    });
	    ProviderElementContext.prototype._addQueryReadsTo = function (token, queryReadTokens) {
	        this._getQueriesFor(token).forEach(function (query) {
	            var queryReadToken = lang_1.isPresent(query.read) ? query.read : token;
	            if (lang_1.isBlank(queryReadTokens.get(queryReadToken))) {
	                queryReadTokens.add(queryReadToken, true);
	            }
	        });
	    };
	    ProviderElementContext.prototype._getQueriesFor = function (token) {
	        var result = [];
	        var currentEl = this;
	        var distance = 0;
	        var queries;
	        while (currentEl !== null) {
	            queries = currentEl._contentQueries.get(token);
	            if (lang_1.isPresent(queries)) {
	                collection_1.ListWrapper.addAll(result, queries.filter(function (query) { return query.descendants || distance <= 1; }));
	            }
	            if (currentEl._directiveAsts.length > 0) {
	                distance++;
	            }
	            currentEl = currentEl._parent;
	        }
	        queries = this._viewContext.viewQueries.get(token);
	        if (lang_1.isPresent(queries)) {
	            collection_1.ListWrapper.addAll(result, queries);
	        }
	        return result;
	    };
	    ProviderElementContext.prototype._getOrCreateLocalProvider = function (requestingProviderType, token, eager) {
	        var _this = this;
	        var resolvedProvider = this._allProviders.get(token);
	        if (lang_1.isBlank(resolvedProvider) ||
	            ((requestingProviderType === template_ast_1.ProviderAstType.Directive ||
	                requestingProviderType === template_ast_1.ProviderAstType.PublicService) &&
	                resolvedProvider.providerType === template_ast_1.ProviderAstType.PrivateService) ||
	            ((requestingProviderType === template_ast_1.ProviderAstType.PrivateService ||
	                requestingProviderType === template_ast_1.ProviderAstType.PublicService) &&
	                resolvedProvider.providerType === template_ast_1.ProviderAstType.Builtin)) {
	            return null;
	        }
	        var transformedProviderAst = this._transformedProviders.get(token);
	        if (lang_1.isPresent(transformedProviderAst)) {
	            return transformedProviderAst;
	        }
	        if (lang_1.isPresent(this._seenProviders.get(token))) {
	            this._viewContext.errors.push(new ProviderError("Cannot instantiate cyclic dependency! " + token.name, this._sourceSpan));
	            return null;
	        }
	        this._seenProviders.add(token, true);
	        var transformedProviders = resolvedProvider.providers.map(function (provider) {
	            var transformedUseValue = provider.useValue;
	            var transformedUseExisting = provider.useExisting;
	            var transformedDeps;
	            if (lang_1.isPresent(provider.useExisting)) {
	                var existingDiDep = _this._getDependency(resolvedProvider.providerType, new compile_metadata_1.CompileDiDependencyMetadata({ token: provider.useExisting }), eager);
	                if (lang_1.isPresent(existingDiDep.token)) {
	                    transformedUseExisting = existingDiDep.token;
	                }
	                else {
	                    transformedUseExisting = null;
	                    transformedUseValue = existingDiDep.value;
	                }
	            }
	            else if (lang_1.isPresent(provider.useFactory)) {
	                var deps = lang_1.isPresent(provider.deps) ? provider.deps : provider.useFactory.diDeps;
	                transformedDeps =
	                    deps.map(function (dep) { return _this._getDependency(resolvedProvider.providerType, dep, eager); });
	            }
	            else if (lang_1.isPresent(provider.useClass)) {
	                var deps = lang_1.isPresent(provider.deps) ? provider.deps : provider.useClass.diDeps;
	                transformedDeps =
	                    deps.map(function (dep) { return _this._getDependency(resolvedProvider.providerType, dep, eager); });
	            }
	            return _transformProvider(provider, {
	                useExisting: transformedUseExisting,
	                useValue: transformedUseValue,
	                deps: transformedDeps
	            });
	        });
	        transformedProviderAst =
	            _transformProviderAst(resolvedProvider, { eager: eager, providers: transformedProviders });
	        this._transformedProviders.add(token, transformedProviderAst);
	        return transformedProviderAst;
	    };
	    ProviderElementContext.prototype._getLocalDependency = function (requestingProviderType, dep, eager) {
	        if (eager === void 0) { eager = null; }
	        if (dep.isAttribute) {
	            var attrValue = this._attrs[dep.token.value];
	            return new compile_metadata_1.CompileDiDependencyMetadata({ isValue: true, value: lang_1.normalizeBlank(attrValue) });
	        }
	        if (lang_1.isPresent(dep.query) || lang_1.isPresent(dep.viewQuery)) {
	            return dep;
	        }
	        if (lang_1.isPresent(dep.token)) {
	            // access builtints
	            if ((requestingProviderType === template_ast_1.ProviderAstType.Directive ||
	                requestingProviderType === template_ast_1.ProviderAstType.Component)) {
	                if (dep.token.equalsTo(identifiers_1.identifierToken(identifiers_1.Identifiers.Renderer)) ||
	                    dep.token.equalsTo(identifiers_1.identifierToken(identifiers_1.Identifiers.ElementRef)) ||
	                    dep.token.equalsTo(identifiers_1.identifierToken(identifiers_1.Identifiers.ChangeDetectorRef)) ||
	                    dep.token.equalsTo(identifiers_1.identifierToken(identifiers_1.Identifiers.TemplateRef))) {
	                    return dep;
	                }
	                if (dep.token.equalsTo(identifiers_1.identifierToken(identifiers_1.Identifiers.ViewContainerRef))) {
	                    this._hasViewContainer = true;
	                }
	            }
	            // access the injector
	            if (dep.token.equalsTo(identifiers_1.identifierToken(identifiers_1.Identifiers.Injector))) {
	                return dep;
	            }
	            // access providers
	            if (lang_1.isPresent(this._getOrCreateLocalProvider(requestingProviderType, dep.token, eager))) {
	                return dep;
	            }
	        }
	        return null;
	    };
	    ProviderElementContext.prototype._getDependency = function (requestingProviderType, dep, eager) {
	        if (eager === void 0) { eager = null; }
	        var currElement = this;
	        var currEager = eager;
	        var result = null;
	        if (!dep.isSkipSelf) {
	            result = this._getLocalDependency(requestingProviderType, dep, eager);
	        }
	        if (dep.isSelf) {
	            if (lang_1.isBlank(result) && dep.isOptional) {
	                result = new compile_metadata_1.CompileDiDependencyMetadata({ isValue: true, value: null });
	            }
	        }
	        else {
	            // check parent elements
	            while (lang_1.isBlank(result) && lang_1.isPresent(currElement._parent)) {
	                var prevElement = currElement;
	                currElement = currElement._parent;
	                if (prevElement._isViewRoot) {
	                    currEager = false;
	                }
	                result = currElement._getLocalDependency(template_ast_1.ProviderAstType.PublicService, dep, currEager);
	            }
	            // check @Host restriction
	            if (lang_1.isBlank(result)) {
	                if (!dep.isHost || this._viewContext.component.type.isHost ||
	                    identifiers_1.identifierToken(this._viewContext.component.type).equalsTo(dep.token) ||
	                    lang_1.isPresent(this._viewContext.viewProviders.get(dep.token))) {
	                    result = dep;
	                }
	                else {
	                    result = dep.isOptional ?
	                        result = new compile_metadata_1.CompileDiDependencyMetadata({ isValue: true, value: null }) :
	                        null;
	                }
	            }
	        }
	        if (lang_1.isBlank(result)) {
	            this._viewContext.errors.push(new ProviderError("No provider for " + dep.token.name, this._sourceSpan));
	        }
	        return result;
	    };
	    return ProviderElementContext;
	}());
	exports.ProviderElementContext = ProviderElementContext;
	function _transformProvider(provider, _a) {
	    var useExisting = _a.useExisting, useValue = _a.useValue, deps = _a.deps;
	    return new compile_metadata_1.CompileProviderMetadata({
	        token: provider.token,
	        useClass: provider.useClass,
	        useExisting: useExisting,
	        useFactory: provider.useFactory,
	        useValue: useValue,
	        deps: deps,
	        multi: provider.multi
	    });
	}
	function _transformProviderAst(provider, _a) {
	    var eager = _a.eager, providers = _a.providers;
	    return new template_ast_1.ProviderAst(provider.token, provider.multiProvider, provider.eager || eager, providers, provider.providerType, provider.sourceSpan);
	}
	function _normalizeProviders(providers, sourceSpan, targetErrors, targetProviders) {
	    if (targetProviders === void 0) { targetProviders = null; }
	    if (lang_1.isBlank(targetProviders)) {
	        targetProviders = [];
	    }
	    if (lang_1.isPresent(providers)) {
	        providers.forEach(function (provider) {
	            if (lang_1.isArray(provider)) {
	                _normalizeProviders(provider, sourceSpan, targetErrors, targetProviders);
	            }
	            else {
	                var normalizeProvider;
	                if (provider instanceof compile_metadata_1.CompileProviderMetadata) {
	                    normalizeProvider = provider;
	                }
	                else if (provider instanceof compile_metadata_1.CompileTypeMetadata) {
	                    normalizeProvider = new compile_metadata_1.CompileProviderMetadata({ token: new compile_metadata_1.CompileTokenMetadata({ identifier: provider }), useClass: provider });
	                }
	                else {
	                    targetErrors.push(new ProviderError("Unknown provider type " + provider, sourceSpan));
	                }
	                if (lang_1.isPresent(normalizeProvider)) {
	                    targetProviders.push(normalizeProvider);
	                }
	            }
	        });
	    }
	    return targetProviders;
	}
	function _resolveProvidersFromDirectives(directives, sourceSpan, targetErrors) {
	    var providersByToken = new compile_metadata_1.CompileTokenMap();
	    directives.forEach(function (directive) {
	        var dirProvider = new compile_metadata_1.CompileProviderMetadata({ token: new compile_metadata_1.CompileTokenMetadata({ identifier: directive.type }), useClass: directive.type });
	        _resolveProviders([dirProvider], directive.isComponent ? template_ast_1.ProviderAstType.Component : template_ast_1.ProviderAstType.Directive, true, sourceSpan, targetErrors, providersByToken);
	    });
	    // Note: directives need to be able to overwrite providers of a component!
	    var directivesWithComponentFirst = directives.filter(function (dir) { return dir.isComponent; }).concat(directives.filter(function (dir) { return !dir.isComponent; }));
	    directivesWithComponentFirst.forEach(function (directive) {
	        _resolveProviders(_normalizeProviders(directive.providers, sourceSpan, targetErrors), template_ast_1.ProviderAstType.PublicService, false, sourceSpan, targetErrors, providersByToken);
	        _resolveProviders(_normalizeProviders(directive.viewProviders, sourceSpan, targetErrors), template_ast_1.ProviderAstType.PrivateService, false, sourceSpan, targetErrors, providersByToken);
	    });
	    return providersByToken;
	}
	function _resolveProviders(providers, providerType, eager, sourceSpan, targetErrors, targetProvidersByToken) {
	    providers.forEach(function (provider) {
	        var resolvedProvider = targetProvidersByToken.get(provider.token);
	        if (lang_1.isPresent(resolvedProvider) && resolvedProvider.multiProvider !== provider.multi) {
	            targetErrors.push(new ProviderError("Mixing multi and non multi provider is not possible for token " + resolvedProvider.token.name, sourceSpan));
	        }
	        if (lang_1.isBlank(resolvedProvider)) {
	            resolvedProvider = new template_ast_1.ProviderAst(provider.token, provider.multi, eager, [provider], providerType, sourceSpan);
	            targetProvidersByToken.add(provider.token, resolvedProvider);
	        }
	        else {
	            if (!provider.multi) {
	                collection_1.ListWrapper.clear(resolvedProvider.providers);
	            }
	            resolvedProvider.providers.push(provider);
	        }
	    });
	}
	function _getViewQueries(component) {
	    var viewQueries = new compile_metadata_1.CompileTokenMap();
	    if (lang_1.isPresent(component.viewQueries)) {
	        component.viewQueries.forEach(function (query) { return _addQueryToTokenMap(viewQueries, query); });
	    }
	    component.type.diDeps.forEach(function (dep) {
	        if (lang_1.isPresent(dep.viewQuery)) {
	            _addQueryToTokenMap(viewQueries, dep.viewQuery);
	        }
	    });
	    return viewQueries;
	}
	function _getContentQueries(directives) {
	    var contentQueries = new compile_metadata_1.CompileTokenMap();
	    directives.forEach(function (directive) {
	        if (lang_1.isPresent(directive.queries)) {
	            directive.queries.forEach(function (query) { return _addQueryToTokenMap(contentQueries, query); });
	        }
	        directive.type.diDeps.forEach(function (dep) {
	            if (lang_1.isPresent(dep.query)) {
	                _addQueryToTokenMap(contentQueries, dep.query);
	            }
	        });
	    });
	    return contentQueries;
	}
	function _addQueryToTokenMap(map, query) {
	    query.selectors.forEach(function (token) {
	        var entry = map.get(token);
	        if (lang_1.isBlank(entry)) {
	            entry = [];
	            map.add(token, entry);
	        }
	        entry.push(query);
	    });
	}
	//# sourceMappingURL=provider_parser.js.map

/***/ },
/* 372 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var core_1 = __webpack_require__(1);
	var core_private_1 = __webpack_require__(13);
	var lang_1 = __webpack_require__(3);
	var collection_1 = __webpack_require__(7);
	var element_schema_registry_1 = __webpack_require__(57);
	var EVENT = 'event';
	var BOOLEAN = 'boolean';
	var NUMBER = 'number';
	var STRING = 'string';
	var OBJECT = 'object';
	/**
	 * This array represents the DOM schema. It encodes inheritance, properties, and events.
	 *
	 * ## Overview
	 *
	 * Each line represents one kind of element. The `element_inheritance` and properties are joined
	 * using `element_inheritance|preperties` syntax.
	 *
	 * ## Element Inheritance
	 *
	 * The `element_inheritance` can be further subdivided as `element1,element2,...^parentElement`.
	 * Here the individual elements are separated by `,` (commas). Every element in the list
	 * has identical properties.
	 *
	 * An `element` may inherit additional properties from `parentElement` If no `^parentElement` is
	 * specified then `""` (blank) element is assumed.
	 *
	 * NOTE: The blank element inherits from root `*` element, the super element of all elements.
	 *
	 * NOTE an element prefix such as `@svg:` has no special meaning to the schema.
	 *
	 * ## Properties
	 *
	 * Each element has a set of properties separated by `,` (commas). Each property can be prefixed
	 * by a special character designating its type:
	 *
	 * - (no prefix): property is a string.
	 * - `*`: property represents an event.
	 * - `!`: property is a boolean.
	 * - `#`: property is a number.
	 * - `%`: property is an object.
	 *
	 * ## Query
	 *
	 * The class creates an internal squas representaino which allows to easily answer the query of
	 * if a given property exist on a given element.
	 *
	 * NOTE: We don't yet support querying for types or events.
	 * NOTE: This schema is auto extracted from `schema_extractor.ts` located in the test folder.
	 */
	var SCHEMA = 
	/*@ts2dart_const*/ ([
	    '*|%classList,className,id,innerHTML,*beforecopy,*beforecut,*beforepaste,*copy,*cut,*paste,*search,*selectstart,*webkitfullscreenchange,*webkitfullscreenerror,*wheel,outerHTML,#scrollLeft,#scrollTop',
	    '^*|accessKey,contentEditable,dir,!draggable,!hidden,innerText,lang,*abort,*autocomplete,*autocompleteerror,*beforecopy,*beforecut,*beforepaste,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*copy,*cuechange,*cut,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*message,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*mozfullscreenchange,*mozfullscreenerror,*mozpointerlockchange,*mozpointerlockerror,*paste,*pause,*play,*playing,*progress,*ratechange,*reset,*resize,*scroll,*search,*seeked,*seeking,*select,*selectstart,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,*webglcontextcreationerror,*webglcontextlost,*webglcontextrestored,*webkitfullscreenchange,*webkitfullscreenerror,*wheel,outerText,!spellcheck,%style,#tabIndex,title,!translate',
	    'media|!autoplay,!controls,%crossOrigin,#currentTime,!defaultMuted,#defaultPlaybackRate,!disableRemotePlayback,!loop,!muted,*encrypted,#playbackRate,preload,src,#volume',
	    '@svg:^*|*abort,*autocomplete,*autocompleteerror,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*cuechange,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*pause,*play,*playing,*progress,*ratechange,*reset,*resize,*scroll,*seeked,*seeking,*select,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,%style,#tabIndex',
	    '@svg:graphics^@svg:|',
	    '@svg:animation^@svg:|*begin,*end,*repeat',
	    '@svg:geometry^@svg:|',
	    '@svg:componentTransferFunction^@svg:|',
	    '@svg:gradient^@svg:|',
	    '@svg:textContent^@svg:graphics|',
	    '@svg:textPositioning^@svg:textContent|',
	    'a|charset,coords,download,hash,host,hostname,href,hreflang,name,password,pathname,ping,port,protocol,rel,rev,search,shape,target,text,type,username',
	    'area|alt,coords,hash,host,hostname,href,!noHref,password,pathname,ping,port,protocol,search,shape,target,username',
	    'audio^media|',
	    'br|clear',
	    'base|href,target',
	    'body|aLink,background,bgColor,link,*beforeunload,*blur,*error,*focus,*hashchange,*languagechange,*load,*message,*offline,*online,*pagehide,*pageshow,*popstate,*rejectionhandled,*resize,*scroll,*storage,*unhandledrejection,*unload,text,vLink',
	    'button|!autofocus,!disabled,formAction,formEnctype,formMethod,!formNoValidate,formTarget,name,type,value',
	    'canvas|#height,#width',
	    'content|select',
	    'dl|!compact',
	    'datalist|',
	    'details|!open',
	    'dialog|!open,returnValue',
	    'dir|!compact',
	    'div|align',
	    'embed|align,height,name,src,type,width',
	    'fieldset|!disabled,name',
	    'font|color,face,size',
	    'form|acceptCharset,action,autocomplete,encoding,enctype,method,name,!noValidate,target',
	    'frame|frameBorder,longDesc,marginHeight,marginWidth,name,!noResize,scrolling,src',
	    'frameset|cols,*beforeunload,*blur,*error,*focus,*hashchange,*languagechange,*load,*message,*offline,*online,*pagehide,*pageshow,*popstate,*rejectionhandled,*resize,*scroll,*storage,*unhandledrejection,*unload,rows',
	    'hr|align,color,!noShade,size,width',
	    'head|',
	    'h1,h2,h3,h4,h5,h6|align',
	    'html|version',
	    'iframe|align,!allowFullscreen,frameBorder,height,longDesc,marginHeight,marginWidth,name,%sandbox,scrolling,src,srcdoc,width',
	    'img|align,alt,border,%crossOrigin,#height,#hspace,!isMap,longDesc,lowsrc,name,sizes,src,srcset,useMap,#vspace,#width',
	    'input|accept,align,alt,autocapitalize,autocomplete,!autofocus,!checked,!defaultChecked,defaultValue,dirName,!disabled,%files,formAction,formEnctype,formMethod,!formNoValidate,formTarget,#height,!incremental,!indeterminate,max,#maxLength,min,#minLength,!multiple,name,pattern,placeholder,!readOnly,!required,selectionDirection,#selectionEnd,#selectionStart,#size,src,step,type,useMap,value,%valueAsDate,#valueAsNumber,#width',
	    'keygen|!autofocus,challenge,!disabled,keytype,name',
	    'li|type,#value',
	    'label|htmlFor',
	    'legend|align',
	    'link|as,charset,%crossOrigin,!disabled,href,hreflang,integrity,media,rel,%relList,rev,%sizes,target,type',
	    'map|name',
	    'marquee|behavior,bgColor,direction,height,#hspace,#loop,#scrollAmount,#scrollDelay,!trueSpeed,#vspace,width',
	    'menu|!compact',
	    'meta|content,httpEquiv,name,scheme',
	    'meter|#high,#low,#max,#min,#optimum,#value',
	    'ins,del|cite,dateTime',
	    'ol|!compact,!reversed,#start,type',
	    'object|align,archive,border,code,codeBase,codeType,data,!declare,height,#hspace,name,standby,type,useMap,#vspace,width',
	    'optgroup|!disabled,label',
	    'option|!defaultSelected,!disabled,label,!selected,text,value',
	    'output|defaultValue,%htmlFor,name,value',
	    'p|align',
	    'param|name,type,value,valueType',
	    'picture|',
	    'pre|#width',
	    'progress|#max,#value',
	    'q,blockquote,cite|',
	    'script|!async,charset,%crossOrigin,!defer,event,htmlFor,integrity,src,text,type',
	    'select|!autofocus,!disabled,#length,!multiple,name,!required,#selectedIndex,#size,value',
	    'shadow|',
	    'source|media,sizes,src,srcset,type',
	    'span|',
	    'style|!disabled,media,type',
	    'caption|align',
	    'th,td|abbr,align,axis,bgColor,ch,chOff,#colSpan,headers,height,!noWrap,#rowSpan,scope,vAlign,width',
	    'col,colgroup|align,ch,chOff,#span,vAlign,width',
	    'table|align,bgColor,border,%caption,cellPadding,cellSpacing,frame,rules,summary,%tFoot,%tHead,width',
	    'tr|align,bgColor,ch,chOff,vAlign',
	    'tfoot,thead,tbody|align,ch,chOff,vAlign',
	    'template|',
	    'textarea|autocapitalize,!autofocus,#cols,defaultValue,dirName,!disabled,#maxLength,#minLength,name,placeholder,!readOnly,!required,#rows,selectionDirection,#selectionEnd,#selectionStart,value,wrap',
	    'title|text',
	    'track|!default,kind,label,src,srclang',
	    'ul|!compact,type',
	    'unknown|',
	    'video^media|#height,poster,#width',
	    '@svg:a^@svg:graphics|',
	    '@svg:animate^@svg:animation|',
	    '@svg:animateMotion^@svg:animation|',
	    '@svg:animateTransform^@svg:animation|',
	    '@svg:circle^@svg:geometry|',
	    '@svg:clipPath^@svg:graphics|',
	    '@svg:cursor^@svg:|',
	    '@svg:defs^@svg:graphics|',
	    '@svg:desc^@svg:|',
	    '@svg:discard^@svg:|',
	    '@svg:ellipse^@svg:geometry|',
	    '@svg:feBlend^@svg:|',
	    '@svg:feColorMatrix^@svg:|',
	    '@svg:feComponentTransfer^@svg:|',
	    '@svg:feComposite^@svg:|',
	    '@svg:feConvolveMatrix^@svg:|',
	    '@svg:feDiffuseLighting^@svg:|',
	    '@svg:feDisplacementMap^@svg:|',
	    '@svg:feDistantLight^@svg:|',
	    '@svg:feDropShadow^@svg:|',
	    '@svg:feFlood^@svg:|',
	    '@svg:feFuncA^@svg:componentTransferFunction|',
	    '@svg:feFuncB^@svg:componentTransferFunction|',
	    '@svg:feFuncG^@svg:componentTransferFunction|',
	    '@svg:feFuncR^@svg:componentTransferFunction|',
	    '@svg:feGaussianBlur^@svg:|',
	    '@svg:feImage^@svg:|',
	    '@svg:feMerge^@svg:|',
	    '@svg:feMergeNode^@svg:|',
	    '@svg:feMorphology^@svg:|',
	    '@svg:feOffset^@svg:|',
	    '@svg:fePointLight^@svg:|',
	    '@svg:feSpecularLighting^@svg:|',
	    '@svg:feSpotLight^@svg:|',
	    '@svg:feTile^@svg:|',
	    '@svg:feTurbulence^@svg:|',
	    '@svg:filter^@svg:|',
	    '@svg:foreignObject^@svg:graphics|',
	    '@svg:g^@svg:graphics|',
	    '@svg:image^@svg:graphics|',
	    '@svg:line^@svg:geometry|',
	    '@svg:linearGradient^@svg:gradient|',
	    '@svg:mpath^@svg:|',
	    '@svg:marker^@svg:|',
	    '@svg:mask^@svg:|',
	    '@svg:metadata^@svg:|',
	    '@svg:path^@svg:geometry|',
	    '@svg:pattern^@svg:|',
	    '@svg:polygon^@svg:geometry|',
	    '@svg:polyline^@svg:geometry|',
	    '@svg:radialGradient^@svg:gradient|',
	    '@svg:rect^@svg:geometry|',
	    '@svg:svg^@svg:graphics|#currentScale,#zoomAndPan',
	    '@svg:script^@svg:|type',
	    '@svg:set^@svg:animation|',
	    '@svg:stop^@svg:|',
	    '@svg:style^@svg:|!disabled,media,title,type',
	    '@svg:switch^@svg:graphics|',
	    '@svg:symbol^@svg:|',
	    '@svg:tspan^@svg:textPositioning|',
	    '@svg:text^@svg:textPositioning|',
	    '@svg:textPath^@svg:textContent|',
	    '@svg:title^@svg:|',
	    '@svg:use^@svg:graphics|',
	    '@svg:view^@svg:|#zoomAndPan'
	]);
	var attrToPropMap = {
	    'class': 'className',
	    'innerHtml': 'innerHTML',
	    'readonly': 'readOnly',
	    'tabindex': 'tabIndex'
	};
	var DomElementSchemaRegistry = (function (_super) {
	    __extends(DomElementSchemaRegistry, _super);
	    function DomElementSchemaRegistry() {
	        var _this = this;
	        _super.call(this);
	        this.schema = {};
	        SCHEMA.forEach(function (encodedType) {
	            var parts = encodedType.split('|');
	            var properties = parts[1].split(',');
	            var typeParts = (parts[0] + '^').split('^');
	            var typeName = typeParts[0];
	            var type = {};
	            typeName.split(',').forEach(function (tag) { return _this.schema[tag] = type; });
	            var superType = _this.schema[typeParts[1]];
	            if (lang_1.isPresent(superType)) {
	                collection_1.StringMapWrapper.forEach(superType, function (v, k) { return type[k] = v; });
	            }
	            properties.forEach(function (property) {
	                if (property == '') {
	                }
	                else if (property.startsWith('*')) {
	                }
	                else if (property.startsWith('!')) {
	                    type[property.substring(1)] = BOOLEAN;
	                }
	                else if (property.startsWith('#')) {
	                    type[property.substring(1)] = NUMBER;
	                }
	                else if (property.startsWith('%')) {
	                    type[property.substring(1)] = OBJECT;
	                }
	                else {
	                    type[property] = STRING;
	                }
	            });
	        });
	    }
	    DomElementSchemaRegistry.prototype.hasProperty = function (tagName, propName) {
	        if (tagName.indexOf('-') !== -1) {
	            // can't tell now as we don't know which properties a custom element will get
	            // once it is instantiated
	            return true;
	        }
	        else {
	            var elementProperties = this.schema[tagName.toLowerCase()];
	            if (!lang_1.isPresent(elementProperties)) {
	                elementProperties = this.schema['unknown'];
	            }
	            return lang_1.isPresent(elementProperties[propName]);
	        }
	    };
	    /**
	     * securityContext returns the security context for the given property on the given DOM tag.
	     *
	     * Tag and property name are statically known and cannot change at runtime, i.e. it is not
	     * possible to bind a value into a changing attribute or tag name.
	     *
	     * The filtering is white list based. All attributes in the schema above are assumed to have the
	     * 'NONE' security context, i.e. that they are safe inert string values. Only specific well known
	     * attack vectors are assigned their appropriate context.
	     */
	    DomElementSchemaRegistry.prototype.securityContext = function (tagName, propName) {
	        // TODO(martinprobst): Fill in missing properties.
	        if (propName === 'style')
	            return core_private_1.SecurityContext.STYLE;
	        if (tagName === 'a' && propName === 'href')
	            return core_private_1.SecurityContext.URL;
	        if (propName === 'innerHTML')
	            return core_private_1.SecurityContext.HTML;
	        return core_private_1.SecurityContext.NONE;
	    };
	    DomElementSchemaRegistry.prototype.getMappedPropName = function (propName) {
	        var mappedPropName = collection_1.StringMapWrapper.get(attrToPropMap, propName);
	        return lang_1.isPresent(mappedPropName) ? mappedPropName : propName;
	    };
	    DomElementSchemaRegistry.decorators = [
	        { type: core_1.Injectable },
	    ];
	    DomElementSchemaRegistry.ctorParameters = [];
	    return DomElementSchemaRegistry;
	}(element_schema_registry_1.ElementSchemaRegistry));
	exports.DomElementSchemaRegistry = DomElementSchemaRegistry;
	//# sourceMappingURL=dom_element_schema_registry.js.map

/***/ },
/* 373 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var collection_1 = __webpack_require__(7);
	var lang_1 = __webpack_require__(3);
	/**
	 * This file is a port of shadowCSS from webcomponents.js to TypeScript.
	 *
	 * Please make sure to keep to edits in sync with the source file.
	 *
	 * Source:
	 * https://github.com/webcomponents/webcomponentsjs/blob/4efecd7e0e/src/ShadowCSS/ShadowCSS.js
	 *
	 * The original file level comment is reproduced below
	 */
	/*
	  This is a limited shim for ShadowDOM css styling.
	  https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#styles
	
	  The intention here is to support only the styling features which can be
	  relatively simply implemented. The goal is to allow users to avoid the
	  most obvious pitfalls and do so without compromising performance significantly.
	  For ShadowDOM styling that's not covered here, a set of best practices
	  can be provided that should allow users to accomplish more complex styling.
	
	  The following is a list of specific ShadowDOM styling features and a brief
	  discussion of the approach used to shim.
	
	  Shimmed features:
	
	  * :host, :host-context: ShadowDOM allows styling of the shadowRoot's host
	  element using the :host rule. To shim this feature, the :host styles are
	  reformatted and prefixed with a given scope name and promoted to a
	  document level stylesheet.
	  For example, given a scope name of .foo, a rule like this:
	
	    :host {
	        background: red;
	      }
	    }
	
	  becomes:
	
	    .foo {
	      background: red;
	    }
	
	  * encapsultion: Styles defined within ShadowDOM, apply only to
	  dom inside the ShadowDOM. Polymer uses one of two techniques to implement
	  this feature.
	
	  By default, rules are prefixed with the host element tag name
	  as a descendant selector. This ensures styling does not leak out of the 'top'
	  of the element's ShadowDOM. For example,
	
	  div {
	      font-weight: bold;
	    }
	
	  becomes:
	
	  x-foo div {
	      font-weight: bold;
	    }
	
	  becomes:
	
	
	  Alternatively, if WebComponents.ShadowCSS.strictStyling is set to true then
	  selectors are scoped by adding an attribute selector suffix to each
	  simple selector that contains the host element tag name. Each element
	  in the element's ShadowDOM template is also given the scope attribute.
	  Thus, these rules match only elements that have the scope attribute.
	  For example, given a scope name of x-foo, a rule like this:
	
	    div {
	      font-weight: bold;
	    }
	
	  becomes:
	
	    div[x-foo] {
	      font-weight: bold;
	    }
	
	  Note that elements that are dynamically added to a scope must have the scope
	  selector added to them manually.
	
	  * upper/lower bound encapsulation: Styles which are defined outside a
	  shadowRoot should not cross the ShadowDOM boundary and should not apply
	  inside a shadowRoot.
	
	  This styling behavior is not emulated. Some possible ways to do this that
	  were rejected due to complexity and/or performance concerns include: (1) reset
	  every possible property for every possible selector for a given scope name;
	  (2) re-implement css in javascript.
	
	  As an alternative, users should make sure to use selectors
	  specific to the scope in which they are working.
	
	  * ::distributed: This behavior is not emulated. It's often not necessary
	  to style the contents of a specific insertion point and instead, descendants
	  of the host element can be styled selectively. Users can also create an
	  extra node around an insertion point and style that node's contents
	  via descendent selectors. For example, with a shadowRoot like this:
	
	    <style>
	      ::content(div) {
	        background: red;
	      }
	    </style>
	    <content></content>
	
	  could become:
	
	    <style>
	      / *@polyfill .content-container div * /
	      ::content(div) {
	        background: red;
	      }
	    </style>
	    <div class="content-container">
	      <content></content>
	    </div>
	
	  Note the use of @polyfill in the comment above a ShadowDOM specific style
	  declaration. This is a directive to the styling shim to use the selector
	  in comments in lieu of the next selector when running under polyfill.
	*/
	var ShadowCss = (function () {
	    function ShadowCss() {
	        this.strictStyling = true;
	    }
	    /*
	    * Shim some cssText with the given selector. Returns cssText that can
	    * be included in the document via WebComponents.ShadowCSS.addCssToDocument(css).
	    *
	    * When strictStyling is true:
	    * - selector is the attribute added to all elements inside the host,
	    * - hostSelector is the attribute added to the host itself.
	    */
	    ShadowCss.prototype.shimCssText = function (cssText, selector, hostSelector) {
	        if (hostSelector === void 0) { hostSelector = ''; }
	        cssText = stripComments(cssText);
	        cssText = this._insertDirectives(cssText);
	        return this._scopeCssText(cssText, selector, hostSelector);
	    };
	    ShadowCss.prototype._insertDirectives = function (cssText) {
	        cssText = this._insertPolyfillDirectivesInCssText(cssText);
	        return this._insertPolyfillRulesInCssText(cssText);
	    };
	    /*
	     * Process styles to convert native ShadowDOM rules that will trip
	     * up the css parser; we rely on decorating the stylesheet with inert rules.
	     *
	     * For example, we convert this rule:
	     *
	     * polyfill-next-selector { content: ':host menu-item'; }
	     * ::content menu-item {
	     *
	     * to this:
	     *
	     * scopeName menu-item {
	     *
	    **/
	    ShadowCss.prototype._insertPolyfillDirectivesInCssText = function (cssText) {
	        // Difference with webcomponents.js: does not handle comments
	        return lang_1.StringWrapper.replaceAllMapped(cssText, _cssContentNextSelectorRe, function (m) { return m[1] + '{'; });
	    };
	    /*
	     * Process styles to add rules which will only apply under the polyfill
	     *
	     * For example, we convert this rule:
	     *
	     * polyfill-rule {
	     *   content: ':host menu-item';
	     * ...
	     * }
	     *
	     * to this:
	     *
	     * scopeName menu-item {...}
	     *
	    **/
	    ShadowCss.prototype._insertPolyfillRulesInCssText = function (cssText) {
	        // Difference with webcomponents.js: does not handle comments
	        return lang_1.StringWrapper.replaceAllMapped(cssText, _cssContentRuleRe, function (m) {
	            var rule = m[0];
	            rule = lang_1.StringWrapper.replace(rule, m[1], '');
	            rule = lang_1.StringWrapper.replace(rule, m[2], '');
	            return m[3] + rule;
	        });
	    };
	    /* Ensure styles are scoped. Pseudo-scoping takes a rule like:
	     *
	     *  .foo {... }
	     *
	     *  and converts this to
	     *
	     *  scopeName .foo { ... }
	    */
	    ShadowCss.prototype._scopeCssText = function (cssText, scopeSelector, hostSelector) {
	        var unscoped = this._extractUnscopedRulesFromCssText(cssText);
	        cssText = this._insertPolyfillHostInCssText(cssText);
	        cssText = this._convertColonHost(cssText);
	        cssText = this._convertColonHostContext(cssText);
	        cssText = this._convertShadowDOMSelectors(cssText);
	        if (lang_1.isPresent(scopeSelector)) {
	            cssText = this._scopeSelectors(cssText, scopeSelector, hostSelector);
	        }
	        cssText = cssText + '\n' + unscoped;
	        return cssText.trim();
	    };
	    /*
	     * Process styles to add rules which will only apply under the polyfill
	     * and do not process via CSSOM. (CSSOM is destructive to rules on rare
	     * occasions, e.g. -webkit-calc on Safari.)
	     * For example, we convert this rule:
	     *
	     * @polyfill-unscoped-rule {
	     *   content: 'menu-item';
	     * ... }
	     *
	     * to this:
	     *
	     * menu-item {...}
	     *
	    **/
	    ShadowCss.prototype._extractUnscopedRulesFromCssText = function (cssText) {
	        // Difference with webcomponents.js: does not handle comments
	        var r = '', m;
	        var matcher = lang_1.RegExpWrapper.matcher(_cssContentUnscopedRuleRe, cssText);
	        while (lang_1.isPresent(m = lang_1.RegExpMatcherWrapper.next(matcher))) {
	            var rule = m[0];
	            rule = lang_1.StringWrapper.replace(rule, m[2], '');
	            rule = lang_1.StringWrapper.replace(rule, m[1], m[3]);
	            r += rule + '\n\n';
	        }
	        return r;
	    };
	    /*
	     * convert a rule like :host(.foo) > .bar { }
	     *
	     * to
	     *
	     * scopeName.foo > .bar
	    */
	    ShadowCss.prototype._convertColonHost = function (cssText) {
	        return this._convertColonRule(cssText, _cssColonHostRe, this._colonHostPartReplacer);
	    };
	    /*
	     * convert a rule like :host-context(.foo) > .bar { }
	     *
	     * to
	     *
	     * scopeName.foo > .bar, .foo scopeName > .bar { }
	     *
	     * and
	     *
	     * :host-context(.foo:host) .bar { ... }
	     *
	     * to
	     *
	     * scopeName.foo .bar { ... }
	    */
	    ShadowCss.prototype._convertColonHostContext = function (cssText) {
	        return this._convertColonRule(cssText, _cssColonHostContextRe, this._colonHostContextPartReplacer);
	    };
	    ShadowCss.prototype._convertColonRule = function (cssText, regExp, partReplacer) {
	        // p1 = :host, p2 = contents of (), p3 rest of rule
	        return lang_1.StringWrapper.replaceAllMapped(cssText, regExp, function (m) {
	            if (lang_1.isPresent(m[2])) {
	                var parts = m[2].split(','), r = [];
	                for (var i = 0; i < parts.length; i++) {
	                    var p = parts[i];
	                    if (lang_1.isBlank(p))
	                        break;
	                    p = p.trim();
	                    r.push(partReplacer(_polyfillHostNoCombinator, p, m[3]));
	                }
	                return r.join(',');
	            }
	            else {
	                return _polyfillHostNoCombinator + m[3];
	            }
	        });
	    };
	    ShadowCss.prototype._colonHostContextPartReplacer = function (host, part, suffix) {
	        if (lang_1.StringWrapper.contains(part, _polyfillHost)) {
	            return this._colonHostPartReplacer(host, part, suffix);
	        }
	        else {
	            return host + part + suffix + ', ' + part + ' ' + host + suffix;
	        }
	    };
	    ShadowCss.prototype._colonHostPartReplacer = function (host, part, suffix) {
	        return host + lang_1.StringWrapper.replace(part, _polyfillHost, '') + suffix;
	    };
	    /*
	     * Convert combinators like ::shadow and pseudo-elements like ::content
	     * by replacing with space.
	    */
	    ShadowCss.prototype._convertShadowDOMSelectors = function (cssText) {
	        for (var i = 0; i < _shadowDOMSelectorsRe.length; i++) {
	            cssText = lang_1.StringWrapper.replaceAll(cssText, _shadowDOMSelectorsRe[i], ' ');
	        }
	        return cssText;
	    };
	    // change a selector like 'div' to 'name div'
	    ShadowCss.prototype._scopeSelectors = function (cssText, scopeSelector, hostSelector) {
	        var _this = this;
	        return processRules(cssText, function (rule) {
	            var selector = rule.selector;
	            var content = rule.content;
	            if (rule.selector[0] != '@' || rule.selector.startsWith('@page')) {
	                selector =
	                    _this._scopeSelector(rule.selector, scopeSelector, hostSelector, _this.strictStyling);
	            }
	            else if (rule.selector.startsWith('@media')) {
	                content = _this._scopeSelectors(rule.content, scopeSelector, hostSelector);
	            }
	            return new CssRule(selector, content);
	        });
	    };
	    ShadowCss.prototype._scopeSelector = function (selector, scopeSelector, hostSelector, strict) {
	        var r = [], parts = selector.split(',');
	        for (var i = 0; i < parts.length; i++) {
	            var p = parts[i].trim();
	            var deepParts = lang_1.StringWrapper.split(p, _shadowDeepSelectors);
	            var shallowPart = deepParts[0];
	            if (this._selectorNeedsScoping(shallowPart, scopeSelector)) {
	                deepParts[0] = strict && !lang_1.StringWrapper.contains(shallowPart, _polyfillHostNoCombinator) ?
	                    this._applyStrictSelectorScope(shallowPart, scopeSelector) :
	                    this._applySelectorScope(shallowPart, scopeSelector, hostSelector);
	            }
	            // replace /deep/ with a space for child selectors
	            r.push(deepParts.join(' '));
	        }
	        return r.join(', ');
	    };
	    ShadowCss.prototype._selectorNeedsScoping = function (selector, scopeSelector) {
	        var re = this._makeScopeMatcher(scopeSelector);
	        return !lang_1.isPresent(lang_1.RegExpWrapper.firstMatch(re, selector));
	    };
	    ShadowCss.prototype._makeScopeMatcher = function (scopeSelector) {
	        var lre = /\[/g;
	        var rre = /\]/g;
	        scopeSelector = lang_1.StringWrapper.replaceAll(scopeSelector, lre, '\\[');
	        scopeSelector = lang_1.StringWrapper.replaceAll(scopeSelector, rre, '\\]');
	        return lang_1.RegExpWrapper.create('^(' + scopeSelector + ')' + _selectorReSuffix, 'm');
	    };
	    ShadowCss.prototype._applySelectorScope = function (selector, scopeSelector, hostSelector) {
	        // Difference from webcomponentsjs: scopeSelector could not be an array
	        return this._applySimpleSelectorScope(selector, scopeSelector, hostSelector);
	    };
	    // scope via name and [is=name]
	    ShadowCss.prototype._applySimpleSelectorScope = function (selector, scopeSelector, hostSelector) {
	        if (lang_1.isPresent(lang_1.RegExpWrapper.firstMatch(_polyfillHostRe, selector))) {
	            var replaceBy = this.strictStyling ? "[" + hostSelector + "]" : scopeSelector;
	            selector = lang_1.StringWrapper.replace(selector, _polyfillHostNoCombinator, replaceBy);
	            return lang_1.StringWrapper.replaceAll(selector, _polyfillHostRe, replaceBy + ' ');
	        }
	        else {
	            return scopeSelector + ' ' + selector;
	        }
	    };
	    // return a selector with [name] suffix on each simple selector
	    // e.g. .foo.bar > .zot becomes .foo[name].bar[name] > .zot[name]  /** @internal */
	    ShadowCss.prototype._applyStrictSelectorScope = function (selector, scopeSelector) {
	        var isRe = /\[is=([^\]]*)\]/g;
	        scopeSelector = lang_1.StringWrapper.replaceAllMapped(scopeSelector, isRe, function (m) { return m[1]; });
	        var splits = [' ', '>', '+', '~'], scoped = selector, attrName = '[' + scopeSelector + ']';
	        for (var i = 0; i < splits.length; i++) {
	            var sep = splits[i];
	            var parts = scoped.split(sep);
	            scoped = parts.map(function (p) {
	                // remove :host since it should be unnecessary
	                var t = lang_1.StringWrapper.replaceAll(p.trim(), _polyfillHostRe, '');
	                if (t.length > 0 && !collection_1.ListWrapper.contains(splits, t) &&
	                    !lang_1.StringWrapper.contains(t, attrName)) {
	                    var re = /([^:]*)(:*)(.*)/g;
	                    var m = lang_1.RegExpWrapper.firstMatch(re, t);
	                    if (lang_1.isPresent(m)) {
	                        p = m[1] + attrName + m[2] + m[3];
	                    }
	                }
	                return p;
	            })
	                .join(sep);
	        }
	        return scoped;
	    };
	    ShadowCss.prototype._insertPolyfillHostInCssText = function (selector) {
	        selector = lang_1.StringWrapper.replaceAll(selector, _colonHostContextRe, _polyfillHostContext);
	        selector = lang_1.StringWrapper.replaceAll(selector, _colonHostRe, _polyfillHost);
	        return selector;
	    };
	    return ShadowCss;
	}());
	exports.ShadowCss = ShadowCss;
	var _cssContentNextSelectorRe = /polyfill-next-selector[^}]*content:[\s]*?['"](.*?)['"][;\s]*}([^{]*?){/gim;
	var _cssContentRuleRe = /(polyfill-rule)[^}]*(content:[\s]*['"](.*?)['"])[;\s]*[^}]*}/gim;
	var _cssContentUnscopedRuleRe = /(polyfill-unscoped-rule)[^}]*(content:[\s]*['"](.*?)['"])[;\s]*[^}]*}/gim;
	var _polyfillHost = '-shadowcsshost';
	// note: :host-context pre-processed to -shadowcsshostcontext.
	var _polyfillHostContext = '-shadowcsscontext';
	var _parenSuffix = ')(?:\\((' +
	    '(?:\\([^)(]*\\)|[^)(]*)+?' +
	    ')\\))?([^,{]*)';
	var _cssColonHostRe = lang_1.RegExpWrapper.create('(' + _polyfillHost + _parenSuffix, 'im');
	var _cssColonHostContextRe = lang_1.RegExpWrapper.create('(' + _polyfillHostContext + _parenSuffix, 'im');
	var _polyfillHostNoCombinator = _polyfillHost + '-no-combinator';
	var _shadowDOMSelectorsRe = [
	    /::shadow/g,
	    /::content/g,
	    // Deprecated selectors
	    // TODO(vicb): see https://github.com/angular/clang-format/issues/16
	    // clang-format off
	    /\/shadow-deep\//g,
	    /\/shadow\//g,
	];
	var _shadowDeepSelectors = /(?:>>>)|(?:\/deep\/)/g;
	var _selectorReSuffix = '([>\\s~+\[.,{:][\\s\\S]*)?$';
	var _polyfillHostRe = lang_1.RegExpWrapper.create(_polyfillHost, 'im');
	var _colonHostRe = /:host/gim;
	var _colonHostContextRe = /:host-context/gim;
	var _commentRe = /\/\*[\s\S]*?\*\//g;
	function stripComments(input) {
	    return lang_1.StringWrapper.replaceAllMapped(input, _commentRe, function (_) { return ''; });
	}
	var _ruleRe = /(\s*)([^;\{\}]+?)(\s*)((?:{%BLOCK%}?\s*;?)|(?:\s*;))/g;
	var _curlyRe = /([{}])/g;
	var OPEN_CURLY = '{';
	var CLOSE_CURLY = '}';
	var BLOCK_PLACEHOLDER = '%BLOCK%';
	var CssRule = (function () {
	    function CssRule(selector, content) {
	        this.selector = selector;
	        this.content = content;
	    }
	    return CssRule;
	}());
	exports.CssRule = CssRule;
	function processRules(input, ruleCallback) {
	    var inputWithEscapedBlocks = escapeBlocks(input);
	    var nextBlockIndex = 0;
	    return lang_1.StringWrapper.replaceAllMapped(inputWithEscapedBlocks.escapedString, _ruleRe, function (m) {
	        var selector = m[2];
	        var content = '';
	        var suffix = m[4];
	        var contentPrefix = '';
	        if (lang_1.isPresent(m[4]) && m[4].startsWith('{' + BLOCK_PLACEHOLDER)) {
	            content = inputWithEscapedBlocks.blocks[nextBlockIndex++];
	            suffix = m[4].substring(BLOCK_PLACEHOLDER.length + 1);
	            contentPrefix = '{';
	        }
	        var rule = ruleCallback(new CssRule(selector, content));
	        return "" + m[1] + rule.selector + m[3] + contentPrefix + rule.content + suffix;
	    });
	}
	exports.processRules = processRules;
	var StringWithEscapedBlocks = (function () {
	    function StringWithEscapedBlocks(escapedString, blocks) {
	        this.escapedString = escapedString;
	        this.blocks = blocks;
	    }
	    return StringWithEscapedBlocks;
	}());
	function escapeBlocks(input) {
	    var inputParts = lang_1.StringWrapper.split(input, _curlyRe);
	    var resultParts = [];
	    var escapedBlocks = [];
	    var bracketCount = 0;
	    var currentBlockParts = [];
	    for (var partIndex = 0; partIndex < inputParts.length; partIndex++) {
	        var part = inputParts[partIndex];
	        if (part == CLOSE_CURLY) {
	            bracketCount--;
	        }
	        if (bracketCount > 0) {
	            currentBlockParts.push(part);
	        }
	        else {
	            if (currentBlockParts.length > 0) {
	                escapedBlocks.push(currentBlockParts.join(''));
	                resultParts.push(BLOCK_PLACEHOLDER);
	                currentBlockParts = [];
	            }
	            resultParts.push(part);
	        }
	        if (part == OPEN_CURLY) {
	            bracketCount++;
	        }
	    }
	    if (currentBlockParts.length > 0) {
	        escapedBlocks.push(currentBlockParts.join(''));
	        resultParts.push(BLOCK_PLACEHOLDER);
	    }
	    return new StringWithEscapedBlocks(resultParts.join(''), escapedBlocks);
	}
	//# sourceMappingURL=shadow_css.js.map

/***/ },
/* 374 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var lang_1 = __webpack_require__(3);
	var exceptions_1 = __webpack_require__(8);
	var o = __webpack_require__(10);
	var identifiers_1 = __webpack_require__(17);
	var util_1 = __webpack_require__(39);
	var _PurePipeProxy = (function () {
	    function _PurePipeProxy(view, instance, argCount) {
	        this.view = view;
	        this.instance = instance;
	        this.argCount = argCount;
	    }
	    return _PurePipeProxy;
	}());
	var CompilePipe = (function () {
	    function CompilePipe(view, meta) {
	        this.view = view;
	        this.meta = meta;
	        this._purePipeProxies = [];
	        this.instance = o.THIS_EXPR.prop("_pipe_" + meta.name + "_" + view.pipeCount++);
	    }
	    CompilePipe.call = function (view, name, args) {
	        var compView = view.componentView;
	        var meta = _findPipeMeta(compView, name);
	        var pipe;
	        if (meta.pure) {
	            // pure pipes live on the component view
	            pipe = compView.purePipes.get(name);
	            if (lang_1.isBlank(pipe)) {
	                pipe = new CompilePipe(compView, meta);
	                compView.purePipes.set(name, pipe);
	                compView.pipes.push(pipe);
	            }
	        }
	        else {
	            // Non pure pipes live on the view that called it
	            pipe = new CompilePipe(view, meta);
	            view.pipes.push(pipe);
	        }
	        return pipe._call(view, args);
	    };
	    Object.defineProperty(CompilePipe.prototype, "pure", {
	        get: function () { return this.meta.pure; },
	        enumerable: true,
	        configurable: true
	    });
	    CompilePipe.prototype.create = function () {
	        var _this = this;
	        var deps = this.meta.type.diDeps.map(function (diDep) {
	            if (diDep.token.equalsTo(identifiers_1.identifierToken(identifiers_1.Identifiers.ChangeDetectorRef))) {
	                return util_1.getPropertyInView(o.THIS_EXPR.prop('ref'), _this.view, _this.view.componentView);
	            }
	            return util_1.injectFromViewParentInjector(diDep.token, false);
	        });
	        this.view.fields.push(new o.ClassField(this.instance.name, o.importType(this.meta.type)));
	        this.view.createMethod.resetDebugInfo(null, null);
	        this.view.createMethod.addStmt(o.THIS_EXPR.prop(this.instance.name)
	            .set(o.importExpr(this.meta.type).instantiate(deps))
	            .toStmt());
	        this._purePipeProxies.forEach(function (purePipeProxy) {
	            var pipeInstanceSeenFromPureProxy = util_1.getPropertyInView(_this.instance, purePipeProxy.view, _this.view);
	            util_1.createPureProxy(pipeInstanceSeenFromPureProxy.prop('transform')
	                .callMethod(o.BuiltinMethod.bind, [pipeInstanceSeenFromPureProxy]), purePipeProxy.argCount, purePipeProxy.instance, purePipeProxy.view);
	        });
	    };
	    CompilePipe.prototype._call = function (callingView, args) {
	        if (this.meta.pure) {
	            // PurePipeProxies live on the view that called them.
	            var purePipeProxy = new _PurePipeProxy(callingView, o.THIS_EXPR.prop(this.instance.name + "_" + this._purePipeProxies.length), args.length);
	            this._purePipeProxies.push(purePipeProxy);
	            return o.importExpr(identifiers_1.Identifiers.castByValue)
	                .callFn([
	                purePipeProxy.instance,
	                util_1.getPropertyInView(this.instance.prop('transform'), callingView, this.view)
	            ])
	                .callFn(args);
	        }
	        else {
	            return util_1.getPropertyInView(this.instance, callingView, this.view).callMethod('transform', args);
	        }
	    };
	    return CompilePipe;
	}());
	exports.CompilePipe = CompilePipe;
	function _findPipeMeta(view, name) {
	    var pipeMeta = null;
	    for (var i = view.pipeMetas.length - 1; i >= 0; i--) {
	        var localPipeMeta = view.pipeMetas[i];
	        if (localPipeMeta.name == name) {
	            pipeMeta = localPipeMeta;
	            break;
	        }
	    }
	    if (lang_1.isBlank(pipeMeta)) {
	        throw new exceptions_1.BaseException("Illegal state: Could not find pipe " + name + " although the parser should have detected this error!");
	    }
	    return pipeMeta;
	}
	//# sourceMappingURL=compile_pipe.js.map

/***/ },
/* 375 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var lang_1 = __webpack_require__(3);
	var collection_1 = __webpack_require__(7);
	var constants_1 = __webpack_require__(31);
	var o = __webpack_require__(10);
	var compile_method_1 = __webpack_require__(96);
	var expression_converter_1 = __webpack_require__(178);
	var compile_binding_1 = __webpack_require__(174);
	var CompileEventListener = (function () {
	    function CompileEventListener(compileElement, eventTarget, eventName, listenerIndex) {
	        this.compileElement = compileElement;
	        this.eventTarget = eventTarget;
	        this.eventName = eventName;
	        this._hasComponentHostListener = false;
	        this._actionResultExprs = [];
	        this._method = new compile_method_1.CompileMethod(compileElement.view);
	        this._methodName =
	            "_handle_" + santitizeEventName(eventName) + "_" + compileElement.nodeIndex + "_" + listenerIndex;
	        this._eventParam =
	            new o.FnParam(constants_1.EventHandlerVars.event.name, o.importType(this.compileElement.view.genConfig.renderTypes.renderEvent));
	    }
	    CompileEventListener.getOrCreate = function (compileElement, eventTarget, eventName, targetEventListeners) {
	        var listener = targetEventListeners.find(function (listener) { return listener.eventTarget == eventTarget &&
	            listener.eventName == eventName; });
	        if (lang_1.isBlank(listener)) {
	            listener = new CompileEventListener(compileElement, eventTarget, eventName, targetEventListeners.length);
	            targetEventListeners.push(listener);
	        }
	        return listener;
	    };
	    CompileEventListener.prototype.addAction = function (hostEvent, directive, directiveInstance) {
	        if (lang_1.isPresent(directive) && directive.isComponent) {
	            this._hasComponentHostListener = true;
	        }
	        this._method.resetDebugInfo(this.compileElement.nodeIndex, hostEvent);
	        var context = lang_1.isPresent(directiveInstance) ? directiveInstance :
	            this.compileElement.view.componentContext;
	        var actionStmts = expression_converter_1.convertCdStatementToIr(this.compileElement.view, context, hostEvent.handler);
	        var lastIndex = actionStmts.length - 1;
	        if (lastIndex >= 0) {
	            var lastStatement = actionStmts[lastIndex];
	            var returnExpr = convertStmtIntoExpression(lastStatement);
	            var preventDefaultVar = o.variable("pd_" + this._actionResultExprs.length);
	            this._actionResultExprs.push(preventDefaultVar);
	            if (lang_1.isPresent(returnExpr)) {
	                // Note: We need to cast the result of the method call to dynamic,
	                // as it might be a void method!
	                actionStmts[lastIndex] =
	                    preventDefaultVar.set(returnExpr.cast(o.DYNAMIC_TYPE).notIdentical(o.literal(false)))
	                        .toDeclStmt(null, [o.StmtModifier.Final]);
	            }
	        }
	        this._method.addStmts(actionStmts);
	    };
	    CompileEventListener.prototype.finishMethod = function () {
	        var markPathToRootStart = this._hasComponentHostListener ?
	            this.compileElement.appElement.prop('componentView') :
	            o.THIS_EXPR;
	        var resultExpr = o.literal(true);
	        this._actionResultExprs.forEach(function (expr) { resultExpr = resultExpr.and(expr); });
	        var stmts = [markPathToRootStart.callMethod('markPathToRootAsCheckOnce', []).toStmt()]
	            .concat(this._method.finish())
	            .concat([new o.ReturnStatement(resultExpr)]);
	        // private is fine here as no child view will reference the event handler...
	        this.compileElement.view.eventHandlerMethods.push(new o.ClassMethod(this._methodName, [this._eventParam], stmts, o.BOOL_TYPE, [o.StmtModifier.Private]));
	    };
	    CompileEventListener.prototype.listenToRenderer = function () {
	        var listenExpr;
	        var eventListener = o.THIS_EXPR.callMethod('eventHandler', [o.THIS_EXPR.prop(this._methodName).callMethod(o.BuiltinMethod.bind, [o.THIS_EXPR])]);
	        if (lang_1.isPresent(this.eventTarget)) {
	            listenExpr = constants_1.ViewProperties.renderer.callMethod('listenGlobal', [o.literal(this.eventTarget), o.literal(this.eventName), eventListener]);
	        }
	        else {
	            listenExpr = constants_1.ViewProperties.renderer.callMethod('listen', [this.compileElement.renderNode, o.literal(this.eventName), eventListener]);
	        }
	        var disposable = o.variable("disposable_" + this.compileElement.view.disposables.length);
	        this.compileElement.view.disposables.push(disposable);
	        // private is fine here as no child view will reference the event handler...
	        this.compileElement.view.createMethod.addStmt(disposable.set(listenExpr).toDeclStmt(o.FUNCTION_TYPE, [o.StmtModifier.Private]));
	    };
	    CompileEventListener.prototype.listenToDirective = function (directiveInstance, observablePropName) {
	        var subscription = o.variable("subscription_" + this.compileElement.view.subscriptions.length);
	        this.compileElement.view.subscriptions.push(subscription);
	        var eventListener = o.THIS_EXPR.callMethod('eventHandler', [o.THIS_EXPR.prop(this._methodName).callMethod(o.BuiltinMethod.bind, [o.THIS_EXPR])]);
	        this.compileElement.view.createMethod.addStmt(subscription.set(directiveInstance.prop(observablePropName)
	            .callMethod(o.BuiltinMethod.SubscribeObservable, [eventListener]))
	            .toDeclStmt(null, [o.StmtModifier.Final]));
	    };
	    return CompileEventListener;
	}());
	exports.CompileEventListener = CompileEventListener;
	function collectEventListeners(hostEvents, dirs, compileElement) {
	    var eventListeners = [];
	    hostEvents.forEach(function (hostEvent) {
	        compileElement.view.bindings.push(new compile_binding_1.CompileBinding(compileElement, hostEvent));
	        var listener = CompileEventListener.getOrCreate(compileElement, hostEvent.target, hostEvent.name, eventListeners);
	        listener.addAction(hostEvent, null, null);
	    });
	    collection_1.ListWrapper.forEachWithIndex(dirs, function (directiveAst, i) {
	        var directiveInstance = compileElement.directiveInstances[i];
	        directiveAst.hostEvents.forEach(function (hostEvent) {
	            compileElement.view.bindings.push(new compile_binding_1.CompileBinding(compileElement, hostEvent));
	            var listener = CompileEventListener.getOrCreate(compileElement, hostEvent.target, hostEvent.name, eventListeners);
	            listener.addAction(hostEvent, directiveAst.directive, directiveInstance);
	        });
	    });
	    eventListeners.forEach(function (listener) { return listener.finishMethod(); });
	    return eventListeners;
	}
	exports.collectEventListeners = collectEventListeners;
	function bindDirectiveOutputs(directiveAst, directiveInstance, eventListeners) {
	    collection_1.StringMapWrapper.forEach(directiveAst.directive.outputs, function (eventName, observablePropName) {
	        eventListeners.filter(function (listener) { return listener.eventName == eventName; })
	            .forEach(function (listener) { listener.listenToDirective(directiveInstance, observablePropName); });
	    });
	}
	exports.bindDirectiveOutputs = bindDirectiveOutputs;
	function bindRenderOutputs(eventListeners) {
	    eventListeners.forEach(function (listener) { return listener.listenToRenderer(); });
	}
	exports.bindRenderOutputs = bindRenderOutputs;
	function convertStmtIntoExpression(stmt) {
	    if (stmt instanceof o.ExpressionStatement) {
	        return stmt.expr;
	    }
	    else if (stmt instanceof o.ReturnStatement) {
	        return stmt.value;
	    }
	    return null;
	}
	function santitizeEventName(name) {
	    return lang_1.StringWrapper.replaceAll(name, /[^a-zA-Z_]/g, '_');
	}
	//# sourceMappingURL=event_binder.js.map

/***/ },
/* 376 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var core_private_1 = __webpack_require__(13);
	var o = __webpack_require__(10);
	var constants_1 = __webpack_require__(31);
	var STATE_IS_NEVER_CHECKED = o.THIS_EXPR.prop('cdState').identical(constants_1.ChangeDetectorStateEnum.NeverChecked);
	var NOT_THROW_ON_CHANGES = o.not(constants_1.DetectChangesVars.throwOnChange);
	function bindDirectiveDetectChangesLifecycleCallbacks(directiveAst, directiveInstance, compileElement) {
	    var view = compileElement.view;
	    var detectChangesInInputsMethod = view.detectChangesInInputsMethod;
	    var lifecycleHooks = directiveAst.directive.lifecycleHooks;
	    if (lifecycleHooks.indexOf(core_private_1.LifecycleHooks.OnChanges) !== -1 && directiveAst.inputs.length > 0) {
	        detectChangesInInputsMethod.addStmt(new o.IfStmt(constants_1.DetectChangesVars.changes.notIdentical(o.NULL_EXPR), [directiveInstance.callMethod('ngOnChanges', [constants_1.DetectChangesVars.changes]).toStmt()]));
	    }
	    if (lifecycleHooks.indexOf(core_private_1.LifecycleHooks.OnInit) !== -1) {
	        detectChangesInInputsMethod.addStmt(new o.IfStmt(STATE_IS_NEVER_CHECKED.and(NOT_THROW_ON_CHANGES), [directiveInstance.callMethod('ngOnInit', []).toStmt()]));
	    }
	    if (lifecycleHooks.indexOf(core_private_1.LifecycleHooks.DoCheck) !== -1) {
	        detectChangesInInputsMethod.addStmt(new o.IfStmt(NOT_THROW_ON_CHANGES, [directiveInstance.callMethod('ngDoCheck', []).toStmt()]));
	    }
	}
	exports.bindDirectiveDetectChangesLifecycleCallbacks = bindDirectiveDetectChangesLifecycleCallbacks;
	function bindDirectiveAfterContentLifecycleCallbacks(directiveMeta, directiveInstance, compileElement) {
	    var view = compileElement.view;
	    var lifecycleHooks = directiveMeta.lifecycleHooks;
	    var afterContentLifecycleCallbacksMethod = view.afterContentLifecycleCallbacksMethod;
	    afterContentLifecycleCallbacksMethod.resetDebugInfo(compileElement.nodeIndex, compileElement.sourceAst);
	    if (lifecycleHooks.indexOf(core_private_1.LifecycleHooks.AfterContentInit) !== -1) {
	        afterContentLifecycleCallbacksMethod.addStmt(new o.IfStmt(STATE_IS_NEVER_CHECKED, [directiveInstance.callMethod('ngAfterContentInit', []).toStmt()]));
	    }
	    if (lifecycleHooks.indexOf(core_private_1.LifecycleHooks.AfterContentChecked) !== -1) {
	        afterContentLifecycleCallbacksMethod.addStmt(directiveInstance.callMethod('ngAfterContentChecked', []).toStmt());
	    }
	}
	exports.bindDirectiveAfterContentLifecycleCallbacks = bindDirectiveAfterContentLifecycleCallbacks;
	function bindDirectiveAfterViewLifecycleCallbacks(directiveMeta, directiveInstance, compileElement) {
	    var view = compileElement.view;
	    var lifecycleHooks = directiveMeta.lifecycleHooks;
	    var afterViewLifecycleCallbacksMethod = view.afterViewLifecycleCallbacksMethod;
	    afterViewLifecycleCallbacksMethod.resetDebugInfo(compileElement.nodeIndex, compileElement.sourceAst);
	    if (lifecycleHooks.indexOf(core_private_1.LifecycleHooks.AfterViewInit) !== -1) {
	        afterViewLifecycleCallbacksMethod.addStmt(new o.IfStmt(STATE_IS_NEVER_CHECKED, [directiveInstance.callMethod('ngAfterViewInit', []).toStmt()]));
	    }
	    if (lifecycleHooks.indexOf(core_private_1.LifecycleHooks.AfterViewChecked) !== -1) {
	        afterViewLifecycleCallbacksMethod.addStmt(directiveInstance.callMethod('ngAfterViewChecked', []).toStmt());
	    }
	}
	exports.bindDirectiveAfterViewLifecycleCallbacks = bindDirectiveAfterViewLifecycleCallbacks;
	function bindDirectiveDestroyLifecycleCallbacks(directiveMeta, directiveInstance, compileElement) {
	    var onDestroyMethod = compileElement.view.destroyMethod;
	    onDestroyMethod.resetDebugInfo(compileElement.nodeIndex, compileElement.sourceAst);
	    if (directiveMeta.lifecycleHooks.indexOf(core_private_1.LifecycleHooks.OnDestroy) !== -1) {
	        onDestroyMethod.addStmt(directiveInstance.callMethod('ngOnDestroy', []).toStmt());
	    }
	}
	exports.bindDirectiveDestroyLifecycleCallbacks = bindDirectiveDestroyLifecycleCallbacks;
	function bindPipeDestroyLifecycleCallbacks(pipeMeta, pipeInstance, view) {
	    var onDestroyMethod = view.destroyMethod;
	    if (pipeMeta.lifecycleHooks.indexOf(core_private_1.LifecycleHooks.OnDestroy) !== -1) {
	        onDestroyMethod.addStmt(pipeInstance.callMethod('ngOnDestroy', []).toStmt());
	    }
	}
	exports.bindPipeDestroyLifecycleCallbacks = bindPipeDestroyLifecycleCallbacks;
	//# sourceMappingURL=lifecycle_binder.js.map

/***/ },
/* 377 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var core_private_1 = __webpack_require__(13);
	var core_private_2 = __webpack_require__(13);
	var lang_1 = __webpack_require__(3);
	var o = __webpack_require__(10);
	var identifiers_1 = __webpack_require__(17);
	var constants_1 = __webpack_require__(31);
	var template_ast_1 = __webpack_require__(24);
	var util_1 = __webpack_require__(25);
	var expression_converter_1 = __webpack_require__(178);
	var compile_binding_1 = __webpack_require__(174);
	function createBindFieldExpr(exprIndex) {
	    return o.THIS_EXPR.prop("_expr_" + exprIndex);
	}
	function createCurrValueExpr(exprIndex) {
	    return o.variable("currVal_" + exprIndex); // fix syntax highlighting: `
	}
	function bind(view, currValExpr, fieldExpr, parsedExpression, context, actions, method) {
	    var checkExpression = expression_converter_1.convertCdExpressionToIr(view, context, parsedExpression, constants_1.DetectChangesVars.valUnwrapper);
	    if (lang_1.isBlank(checkExpression.expression)) {
	        // e.g. an empty expression was given
	        return;
	    }
	    // private is fine here as no child view will reference the cached value...
	    view.fields.push(new o.ClassField(fieldExpr.name, null, [o.StmtModifier.Private]));
	    view.createMethod.addStmt(o.THIS_EXPR.prop(fieldExpr.name).set(o.importExpr(identifiers_1.Identifiers.uninitialized)).toStmt());
	    if (checkExpression.needsValueUnwrapper) {
	        var initValueUnwrapperStmt = constants_1.DetectChangesVars.valUnwrapper.callMethod('reset', []).toStmt();
	        method.addStmt(initValueUnwrapperStmt);
	    }
	    method.addStmt(currValExpr.set(checkExpression.expression).toDeclStmt(null, [o.StmtModifier.Final]));
	    var condition = o.importExpr(identifiers_1.Identifiers.checkBinding)
	        .callFn([constants_1.DetectChangesVars.throwOnChange, fieldExpr, currValExpr]);
	    if (checkExpression.needsValueUnwrapper) {
	        condition = constants_1.DetectChangesVars.valUnwrapper.prop('hasWrappedValue').or(condition);
	    }
	    method.addStmt(new o.IfStmt(condition, actions.concat([o.THIS_EXPR.prop(fieldExpr.name).set(currValExpr).toStmt()])));
	}
	function bindRenderText(boundText, compileNode, view) {
	    var bindingIndex = view.bindings.length;
	    view.bindings.push(new compile_binding_1.CompileBinding(compileNode, boundText));
	    var currValExpr = createCurrValueExpr(bindingIndex);
	    var valueField = createBindFieldExpr(bindingIndex);
	    view.detectChangesRenderPropertiesMethod.resetDebugInfo(compileNode.nodeIndex, boundText);
	    bind(view, currValExpr, valueField, boundText.value, view.componentContext, [
	        o.THIS_EXPR.prop('renderer')
	            .callMethod('setText', [compileNode.renderNode, currValExpr])
	            .toStmt()
	    ], view.detectChangesRenderPropertiesMethod);
	}
	exports.bindRenderText = bindRenderText;
	function bindAndWriteToRenderer(boundProps, context, compileElement) {
	    var view = compileElement.view;
	    var renderNode = compileElement.renderNode;
	    boundProps.forEach(function (boundProp) {
	        var bindingIndex = view.bindings.length;
	        view.bindings.push(new compile_binding_1.CompileBinding(compileElement, boundProp));
	        view.detectChangesRenderPropertiesMethod.resetDebugInfo(compileElement.nodeIndex, boundProp);
	        var fieldExpr = createBindFieldExpr(bindingIndex);
	        var currValExpr = createCurrValueExpr(bindingIndex);
	        var renderMethod;
	        var renderValue = sanitizedValue(boundProp, currValExpr);
	        var updateStmts = [];
	        switch (boundProp.type) {
	            case template_ast_1.PropertyBindingType.Property:
	                renderMethod = 'setElementProperty';
	                if (view.genConfig.logBindingUpdate) {
	                    updateStmts.push(logBindingUpdateStmt(renderNode, boundProp.name, currValExpr));
	                }
	                break;
	            case template_ast_1.PropertyBindingType.Attribute:
	                renderMethod = 'setElementAttribute';
	                renderValue =
	                    renderValue.isBlank().conditional(o.NULL_EXPR, renderValue.callMethod('toString', []));
	                break;
	            case template_ast_1.PropertyBindingType.Class:
	                renderMethod = 'setElementClass';
	                break;
	            case template_ast_1.PropertyBindingType.Style:
	                renderMethod = 'setElementStyle';
	                var strValue = renderValue.callMethod('toString', []);
	                if (lang_1.isPresent(boundProp.unit)) {
	                    strValue = strValue.plus(o.literal(boundProp.unit));
	                }
	                renderValue = renderValue.isBlank().conditional(o.NULL_EXPR, strValue);
	                break;
	        }
	        updateStmts.push(o.THIS_EXPR.prop('renderer')
	            .callMethod(renderMethod, [renderNode, o.literal(boundProp.name), renderValue])
	            .toStmt());
	        bind(view, currValExpr, fieldExpr, boundProp.value, context, updateStmts, view.detectChangesRenderPropertiesMethod);
	    });
	}
	function sanitizedValue(boundProp, renderValue) {
	    var enumValue;
	    switch (boundProp.securityContext) {
	        case core_private_1.SecurityContext.NONE:
	            return renderValue; // No sanitization needed.
	        case core_private_1.SecurityContext.HTML:
	            enumValue = 'HTML';
	            break;
	        case core_private_1.SecurityContext.STYLE:
	            enumValue = 'STYLE';
	            break;
	        case core_private_1.SecurityContext.SCRIPT:
	            enumValue = 'SCRIPT';
	            break;
	        case core_private_1.SecurityContext.URL:
	            enumValue = 'URL';
	            break;
	        case core_private_1.SecurityContext.RESOURCE_URL:
	            enumValue = 'RESOURCE_URL';
	            break;
	        default:
	            throw new Error("internal error, unexpected SecurityContext " + boundProp.securityContext + ".");
	    }
	    var ctx = constants_1.ViewProperties.viewUtils.prop('sanitizer');
	    var args = [o.importExpr(identifiers_1.Identifiers.SecurityContext).prop(enumValue), renderValue];
	    return ctx.callMethod('sanitize', args);
	}
	function bindRenderInputs(boundProps, compileElement) {
	    bindAndWriteToRenderer(boundProps, compileElement.view.componentContext, compileElement);
	}
	exports.bindRenderInputs = bindRenderInputs;
	function bindDirectiveHostProps(directiveAst, directiveInstance, compileElement) {
	    bindAndWriteToRenderer(directiveAst.hostProperties, directiveInstance, compileElement);
	}
	exports.bindDirectiveHostProps = bindDirectiveHostProps;
	function bindDirectiveInputs(directiveAst, directiveInstance, compileElement) {
	    if (directiveAst.inputs.length === 0) {
	        return;
	    }
	    var view = compileElement.view;
	    var detectChangesInInputsMethod = view.detectChangesInInputsMethod;
	    detectChangesInInputsMethod.resetDebugInfo(compileElement.nodeIndex, compileElement.sourceAst);
	    var lifecycleHooks = directiveAst.directive.lifecycleHooks;
	    var calcChangesMap = lifecycleHooks.indexOf(core_private_2.LifecycleHooks.OnChanges) !== -1;
	    var isOnPushComp = directiveAst.directive.isComponent &&
	        !core_private_2.isDefaultChangeDetectionStrategy(directiveAst.directive.changeDetection);
	    if (calcChangesMap) {
	        detectChangesInInputsMethod.addStmt(constants_1.DetectChangesVars.changes.set(o.NULL_EXPR).toStmt());
	    }
	    if (isOnPushComp) {
	        detectChangesInInputsMethod.addStmt(constants_1.DetectChangesVars.changed.set(o.literal(false)).toStmt());
	    }
	    directiveAst.inputs.forEach(function (input) {
	        var bindingIndex = view.bindings.length;
	        view.bindings.push(new compile_binding_1.CompileBinding(compileElement, input));
	        detectChangesInInputsMethod.resetDebugInfo(compileElement.nodeIndex, input);
	        var fieldExpr = createBindFieldExpr(bindingIndex);
	        var currValExpr = createCurrValueExpr(bindingIndex);
	        var statements = [directiveInstance.prop(input.directiveName).set(currValExpr).toStmt()];
	        if (calcChangesMap) {
	            statements.push(new o.IfStmt(constants_1.DetectChangesVars.changes.identical(o.NULL_EXPR), [
	                constants_1.DetectChangesVars.changes.set(o.literalMap([], new o.MapType(o.importType(identifiers_1.Identifiers.SimpleChange))))
	                    .toStmt()
	            ]));
	            statements.push(constants_1.DetectChangesVars.changes.key(o.literal(input.directiveName))
	                .set(o.importExpr(identifiers_1.Identifiers.SimpleChange).instantiate([fieldExpr, currValExpr]))
	                .toStmt());
	        }
	        if (isOnPushComp) {
	            statements.push(constants_1.DetectChangesVars.changed.set(o.literal(true)).toStmt());
	        }
	        if (view.genConfig.logBindingUpdate) {
	            statements.push(logBindingUpdateStmt(compileElement.renderNode, input.directiveName, currValExpr));
	        }
	        bind(view, currValExpr, fieldExpr, input.value, view.componentContext, statements, detectChangesInInputsMethod);
	    });
	    if (isOnPushComp) {
	        detectChangesInInputsMethod.addStmt(new o.IfStmt(constants_1.DetectChangesVars.changed, [
	            compileElement.appElement.prop('componentView')
	                .callMethod('markAsCheckOnce', [])
	                .toStmt()
	        ]));
	    }
	}
	exports.bindDirectiveInputs = bindDirectiveInputs;
	function logBindingUpdateStmt(renderNode, propName, value) {
	    return o.THIS_EXPR.prop('renderer')
	        .callMethod('setBindingDebugInfo', [
	        renderNode,
	        o.literal("ng-reflect-" + util_1.camelCaseToDashCase(propName)),
	        value.isBlank().conditional(o.NULL_EXPR, value.callMethod('toString', []))
	    ])
	        .toStmt();
	}
	//# sourceMappingURL=property_binder.js.map

/***/ },
/* 378 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var collection_1 = __webpack_require__(7);
	var template_ast_1 = __webpack_require__(24);
	var property_binder_1 = __webpack_require__(377);
	var event_binder_1 = __webpack_require__(375);
	var lifecycle_binder_1 = __webpack_require__(376);
	function bindView(view, parsedTemplate) {
	    var visitor = new ViewBinderVisitor(view);
	    template_ast_1.templateVisitAll(visitor, parsedTemplate);
	    view.pipes.forEach(function (pipe) { lifecycle_binder_1.bindPipeDestroyLifecycleCallbacks(pipe.meta, pipe.instance, pipe.view); });
	}
	exports.bindView = bindView;
	var ViewBinderVisitor = (function () {
	    function ViewBinderVisitor(view) {
	        this.view = view;
	        this._nodeIndex = 0;
	    }
	    ViewBinderVisitor.prototype.visitBoundText = function (ast, parent) {
	        var node = this.view.nodes[this._nodeIndex++];
	        property_binder_1.bindRenderText(ast, node, this.view);
	        return null;
	    };
	    ViewBinderVisitor.prototype.visitText = function (ast, parent) {
	        this._nodeIndex++;
	        return null;
	    };
	    ViewBinderVisitor.prototype.visitNgContent = function (ast, parent) { return null; };
	    ViewBinderVisitor.prototype.visitElement = function (ast, parent) {
	        var compileElement = this.view.nodes[this._nodeIndex++];
	        var eventListeners = event_binder_1.collectEventListeners(ast.outputs, ast.directives, compileElement);
	        property_binder_1.bindRenderInputs(ast.inputs, compileElement);
	        event_binder_1.bindRenderOutputs(eventListeners);
	        collection_1.ListWrapper.forEachWithIndex(ast.directives, function (directiveAst, index) {
	            var directiveInstance = compileElement.directiveInstances[index];
	            property_binder_1.bindDirectiveInputs(directiveAst, directiveInstance, compileElement);
	            lifecycle_binder_1.bindDirectiveDetectChangesLifecycleCallbacks(directiveAst, directiveInstance, compileElement);
	            property_binder_1.bindDirectiveHostProps(directiveAst, directiveInstance, compileElement);
	            event_binder_1.bindDirectiveOutputs(directiveAst, directiveInstance, eventListeners);
	        });
	        template_ast_1.templateVisitAll(this, ast.children, compileElement);
	        // afterContent and afterView lifecycles need to be called bottom up
	        // so that children are notified before parents
	        collection_1.ListWrapper.forEachWithIndex(ast.directives, function (directiveAst, index) {
	            var directiveInstance = compileElement.directiveInstances[index];
	            lifecycle_binder_1.bindDirectiveAfterContentLifecycleCallbacks(directiveAst.directive, directiveInstance, compileElement);
	            lifecycle_binder_1.bindDirectiveAfterViewLifecycleCallbacks(directiveAst.directive, directiveInstance, compileElement);
	            lifecycle_binder_1.bindDirectiveDestroyLifecycleCallbacks(directiveAst.directive, directiveInstance, compileElement);
	        });
	        return null;
	    };
	    ViewBinderVisitor.prototype.visitEmbeddedTemplate = function (ast, parent) {
	        var compileElement = this.view.nodes[this._nodeIndex++];
	        var eventListeners = event_binder_1.collectEventListeners(ast.outputs, ast.directives, compileElement);
	        collection_1.ListWrapper.forEachWithIndex(ast.directives, function (directiveAst, index) {
	            var directiveInstance = compileElement.directiveInstances[index];
	            property_binder_1.bindDirectiveInputs(directiveAst, directiveInstance, compileElement);
	            lifecycle_binder_1.bindDirectiveDetectChangesLifecycleCallbacks(directiveAst, directiveInstance, compileElement);
	            event_binder_1.bindDirectiveOutputs(directiveAst, directiveInstance, eventListeners);
	            lifecycle_binder_1.bindDirectiveAfterContentLifecycleCallbacks(directiveAst.directive, directiveInstance, compileElement);
	            lifecycle_binder_1.bindDirectiveAfterViewLifecycleCallbacks(directiveAst.directive, directiveInstance, compileElement);
	            lifecycle_binder_1.bindDirectiveDestroyLifecycleCallbacks(directiveAst.directive, directiveInstance, compileElement);
	        });
	        bindView(compileElement.embeddedView, ast.children);
	        return null;
	    };
	    ViewBinderVisitor.prototype.visitAttr = function (ast, ctx) { return null; };
	    ViewBinderVisitor.prototype.visitDirective = function (ast, ctx) { return null; };
	    ViewBinderVisitor.prototype.visitEvent = function (ast, eventTargetAndNames) {
	        return null;
	    };
	    ViewBinderVisitor.prototype.visitReference = function (ast, ctx) { return null; };
	    ViewBinderVisitor.prototype.visitVariable = function (ast, ctx) { return null; };
	    ViewBinderVisitor.prototype.visitDirectiveProperty = function (ast, context) { return null; };
	    ViewBinderVisitor.prototype.visitElementProperty = function (ast, context) { return null; };
	    return ViewBinderVisitor;
	}());
	//# sourceMappingURL=view_binder.js.map

/***/ },
/* 379 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var core_1 = __webpack_require__(1);
	var core_private_1 = __webpack_require__(13);
	var lang_1 = __webpack_require__(3);
	var collection_1 = __webpack_require__(7);
	var o = __webpack_require__(10);
	var identifiers_1 = __webpack_require__(17);
	var constants_1 = __webpack_require__(31);
	var compile_view_1 = __webpack_require__(177);
	var compile_element_1 = __webpack_require__(175);
	var template_ast_1 = __webpack_require__(24);
	var util_1 = __webpack_require__(39);
	var compile_metadata_1 = __webpack_require__(16);
	var IMPLICIT_TEMPLATE_VAR = '\$implicit';
	var CLASS_ATTR = 'class';
	var STYLE_ATTR = 'style';
	var parentRenderNodeVar = o.variable('parentRenderNode');
	var rootSelectorVar = o.variable('rootSelector');
	var ViewCompileDependency = (function () {
	    function ViewCompileDependency(comp, factoryPlaceholder) {
	        this.comp = comp;
	        this.factoryPlaceholder = factoryPlaceholder;
	    }
	    return ViewCompileDependency;
	}());
	exports.ViewCompileDependency = ViewCompileDependency;
	function buildView(view, template, targetDependencies) {
	    var builderVisitor = new ViewBuilderVisitor(view, targetDependencies);
	    template_ast_1.templateVisitAll(builderVisitor, template, view.declarationElement.isNull() ?
	        view.declarationElement :
	        view.declarationElement.parent);
	    return builderVisitor.nestedViewCount;
	}
	exports.buildView = buildView;
	function finishView(view, targetStatements) {
	    view.afterNodes();
	    createViewTopLevelStmts(view, targetStatements);
	    view.nodes.forEach(function (node) {
	        if (node instanceof compile_element_1.CompileElement && node.hasEmbeddedView) {
	            finishView(node.embeddedView, targetStatements);
	        }
	    });
	}
	exports.finishView = finishView;
	var ViewBuilderVisitor = (function () {
	    function ViewBuilderVisitor(view, targetDependencies) {
	        this.view = view;
	        this.targetDependencies = targetDependencies;
	        this.nestedViewCount = 0;
	    }
	    ViewBuilderVisitor.prototype._isRootNode = function (parent) { return parent.view !== this.view; };
	    ViewBuilderVisitor.prototype._addRootNodeAndProject = function (node, ngContentIndex, parent) {
	        var vcAppEl = (node instanceof compile_element_1.CompileElement && node.hasViewContainer) ? node.appElement : null;
	        if (this._isRootNode(parent)) {
	            // store appElement as root node only for ViewContainers
	            if (this.view.viewType !== core_private_1.ViewType.COMPONENT) {
	                this.view.rootNodesOrAppElements.push(lang_1.isPresent(vcAppEl) ? vcAppEl : node.renderNode);
	            }
	        }
	        else if (lang_1.isPresent(parent.component) && lang_1.isPresent(ngContentIndex)) {
	            parent.addContentNode(ngContentIndex, lang_1.isPresent(vcAppEl) ? vcAppEl : node.renderNode);
	        }
	    };
	    ViewBuilderVisitor.prototype._getParentRenderNode = function (parent) {
	        if (this._isRootNode(parent)) {
	            if (this.view.viewType === core_private_1.ViewType.COMPONENT) {
	                return parentRenderNodeVar;
	            }
	            else {
	                // root node of an embedded/host view
	                return o.NULL_EXPR;
	            }
	        }
	        else {
	            return lang_1.isPresent(parent.component) &&
	                parent.component.template.encapsulation !== core_1.ViewEncapsulation.Native ?
	                o.NULL_EXPR :
	                parent.renderNode;
	        }
	    };
	    ViewBuilderVisitor.prototype.visitBoundText = function (ast, parent) {
	        return this._visitText(ast, '', ast.ngContentIndex, parent);
	    };
	    ViewBuilderVisitor.prototype.visitText = function (ast, parent) {
	        return this._visitText(ast, ast.value, ast.ngContentIndex, parent);
	    };
	    ViewBuilderVisitor.prototype._visitText = function (ast, value, ngContentIndex, parent) {
	        var fieldName = "_text_" + this.view.nodes.length;
	        this.view.fields.push(new o.ClassField(fieldName, o.importType(this.view.genConfig.renderTypes.renderText)));
	        var renderNode = o.THIS_EXPR.prop(fieldName);
	        var compileNode = new compile_element_1.CompileNode(parent, this.view, this.view.nodes.length, renderNode, ast);
	        var createRenderNode = o.THIS_EXPR.prop(fieldName)
	            .set(constants_1.ViewProperties.renderer.callMethod('createText', [
	            this._getParentRenderNode(parent),
	            o.literal(value),
	            this.view.createMethod.resetDebugInfoExpr(this.view.nodes.length, ast)
	        ]))
	            .toStmt();
	        this.view.nodes.push(compileNode);
	        this.view.createMethod.addStmt(createRenderNode);
	        this._addRootNodeAndProject(compileNode, ngContentIndex, parent);
	        return renderNode;
	    };
	    ViewBuilderVisitor.prototype.visitNgContent = function (ast, parent) {
	        // the projected nodes originate from a different view, so we don't
	        // have debug information for them...
	        this.view.createMethod.resetDebugInfo(null, ast);
	        var parentRenderNode = this._getParentRenderNode(parent);
	        var nodesExpression = constants_1.ViewProperties.projectableNodes.key(o.literal(ast.index), new o.ArrayType(o.importType(this.view.genConfig.renderTypes.renderNode)));
	        if (parentRenderNode !== o.NULL_EXPR) {
	            this.view.createMethod.addStmt(constants_1.ViewProperties.renderer.callMethod('projectNodes', [
	                parentRenderNode,
	                o.importExpr(identifiers_1.Identifiers.flattenNestedViewRenderNodes)
	                    .callFn([nodesExpression])
	            ])
	                .toStmt());
	        }
	        else if (this._isRootNode(parent)) {
	            if (this.view.viewType !== core_private_1.ViewType.COMPONENT) {
	                // store root nodes only for embedded/host views
	                this.view.rootNodesOrAppElements.push(nodesExpression);
	            }
	        }
	        else {
	            if (lang_1.isPresent(parent.component) && lang_1.isPresent(ast.ngContentIndex)) {
	                parent.addContentNode(ast.ngContentIndex, nodesExpression);
	            }
	        }
	        return null;
	    };
	    ViewBuilderVisitor.prototype.visitElement = function (ast, parent) {
	        var nodeIndex = this.view.nodes.length;
	        var createRenderNodeExpr;
	        var debugContextExpr = this.view.createMethod.resetDebugInfoExpr(nodeIndex, ast);
	        if (nodeIndex === 0 && this.view.viewType === core_private_1.ViewType.HOST) {
	            createRenderNodeExpr = o.THIS_EXPR.callMethod('selectOrCreateHostElement', [o.literal(ast.name), rootSelectorVar, debugContextExpr]);
	        }
	        else {
	            createRenderNodeExpr = constants_1.ViewProperties.renderer.callMethod('createElement', [this._getParentRenderNode(parent), o.literal(ast.name), debugContextExpr]);
	        }
	        var fieldName = "_el_" + nodeIndex;
	        this.view.fields.push(new o.ClassField(fieldName, o.importType(this.view.genConfig.renderTypes.renderElement)));
	        this.view.createMethod.addStmt(o.THIS_EXPR.prop(fieldName).set(createRenderNodeExpr).toStmt());
	        var renderNode = o.THIS_EXPR.prop(fieldName);
	        var directives = ast.directives.map(function (directiveAst) { return directiveAst.directive; });
	        var component = directives.find(function (directive) { return directive.isComponent; });
	        var htmlAttrs = _readHtmlAttrs(ast.attrs);
	        var attrNameAndValues = _mergeHtmlAndDirectiveAttrs(htmlAttrs, directives);
	        for (var i = 0; i < attrNameAndValues.length; i++) {
	            var attrName = attrNameAndValues[i][0];
	            var attrValue = attrNameAndValues[i][1];
	            this.view.createMethod.addStmt(constants_1.ViewProperties.renderer.callMethod('setElementAttribute', [renderNode, o.literal(attrName), o.literal(attrValue)])
	                .toStmt());
	        }
	        var compileElement = new compile_element_1.CompileElement(parent, this.view, nodeIndex, renderNode, ast, component, directives, ast.providers, ast.hasViewContainer, false, ast.references);
	        this.view.nodes.push(compileElement);
	        var compViewExpr = null;
	        if (lang_1.isPresent(component)) {
	            var nestedComponentIdentifier = new compile_metadata_1.CompileIdentifierMetadata({ name: util_1.getViewFactoryName(component, 0) });
	            this.targetDependencies.push(new ViewCompileDependency(component, nestedComponentIdentifier));
	            compViewExpr = o.variable("compView_" + nodeIndex); // fix highlighting: `
	            compileElement.setComponentView(compViewExpr);
	            this.view.createMethod.addStmt(compViewExpr.set(o.importExpr(nestedComponentIdentifier)
	                .callFn([
	                constants_1.ViewProperties.viewUtils,
	                compileElement.injector,
	                compileElement.appElement
	            ]))
	                .toDeclStmt());
	        }
	        compileElement.beforeChildren();
	        this._addRootNodeAndProject(compileElement, ast.ngContentIndex, parent);
	        template_ast_1.templateVisitAll(this, ast.children, compileElement);
	        compileElement.afterChildren(this.view.nodes.length - nodeIndex - 1);
	        if (lang_1.isPresent(compViewExpr)) {
	            var codeGenContentNodes;
	            if (this.view.component.type.isHost) {
	                codeGenContentNodes = constants_1.ViewProperties.projectableNodes;
	            }
	            else {
	                codeGenContentNodes = o.literalArr(compileElement.contentNodesByNgContentIndex.map(function (nodes) { return util_1.createFlatArray(nodes); }));
	            }
	            this.view.createMethod.addStmt(compViewExpr.callMethod('create', [compileElement.getComponent(), codeGenContentNodes, o.NULL_EXPR])
	                .toStmt());
	        }
	        return null;
	    };
	    ViewBuilderVisitor.prototype.visitEmbeddedTemplate = function (ast, parent) {
	        var nodeIndex = this.view.nodes.length;
	        var fieldName = "_anchor_" + nodeIndex;
	        this.view.fields.push(new o.ClassField(fieldName, o.importType(this.view.genConfig.renderTypes.renderComment)));
	        this.view.createMethod.addStmt(o.THIS_EXPR.prop(fieldName)
	            .set(constants_1.ViewProperties.renderer.callMethod('createTemplateAnchor', [
	            this._getParentRenderNode(parent),
	            this.view.createMethod.resetDebugInfoExpr(nodeIndex, ast)
	        ]))
	            .toStmt());
	        var renderNode = o.THIS_EXPR.prop(fieldName);
	        var templateVariableBindings = ast.variables.map(function (varAst) { return [varAst.value.length > 0 ? varAst.value : IMPLICIT_TEMPLATE_VAR, varAst.name]; });
	        var directives = ast.directives.map(function (directiveAst) { return directiveAst.directive; });
	        var compileElement = new compile_element_1.CompileElement(parent, this.view, nodeIndex, renderNode, ast, null, directives, ast.providers, ast.hasViewContainer, true, ast.references);
	        this.view.nodes.push(compileElement);
	        this.nestedViewCount++;
	        var embeddedView = new compile_view_1.CompileView(this.view.component, this.view.genConfig, this.view.pipeMetas, o.NULL_EXPR, this.view.viewIndex + this.nestedViewCount, compileElement, templateVariableBindings);
	        this.nestedViewCount += buildView(embeddedView, ast.children, this.targetDependencies);
	        compileElement.beforeChildren();
	        this._addRootNodeAndProject(compileElement, ast.ngContentIndex, parent);
	        compileElement.afterChildren(0);
	        return null;
	    };
	    ViewBuilderVisitor.prototype.visitAttr = function (ast, ctx) { return null; };
	    ViewBuilderVisitor.prototype.visitDirective = function (ast, ctx) { return null; };
	    ViewBuilderVisitor.prototype.visitEvent = function (ast, eventTargetAndNames) {
	        return null;
	    };
	    ViewBuilderVisitor.prototype.visitReference = function (ast, ctx) { return null; };
	    ViewBuilderVisitor.prototype.visitVariable = function (ast, ctx) { return null; };
	    ViewBuilderVisitor.prototype.visitDirectiveProperty = function (ast, context) { return null; };
	    ViewBuilderVisitor.prototype.visitElementProperty = function (ast, context) { return null; };
	    return ViewBuilderVisitor;
	}());
	function _mergeHtmlAndDirectiveAttrs(declaredHtmlAttrs, directives) {
	    var result = {};
	    collection_1.StringMapWrapper.forEach(declaredHtmlAttrs, function (value, key) { result[key] = value; });
	    directives.forEach(function (directiveMeta) {
	        collection_1.StringMapWrapper.forEach(directiveMeta.hostAttributes, function (value, name) {
	            var prevValue = result[name];
	            result[name] = lang_1.isPresent(prevValue) ? mergeAttributeValue(name, prevValue, value) : value;
	        });
	    });
	    return mapToKeyValueArray(result);
	}
	function _readHtmlAttrs(attrs) {
	    var htmlAttrs = {};
	    attrs.forEach(function (ast) { htmlAttrs[ast.name] = ast.value; });
	    return htmlAttrs;
	}
	function mergeAttributeValue(attrName, attrValue1, attrValue2) {
	    if (attrName == CLASS_ATTR || attrName == STYLE_ATTR) {
	        return attrValue1 + " " + attrValue2;
	    }
	    else {
	        return attrValue2;
	    }
	}
	function mapToKeyValueArray(data) {
	    var entryArray = [];
	    collection_1.StringMapWrapper.forEach(data, function (value, name) { entryArray.push([name, value]); });
	    // We need to sort to get a defined output order
	    // for tests and for caching generated artifacts...
	    collection_1.ListWrapper.sort(entryArray, function (entry1, entry2) { return lang_1.StringWrapper.compare(entry1[0], entry2[0]); });
	    var keyValueArray = [];
	    entryArray.forEach(function (entry) { keyValueArray.push([entry[0], entry[1]]); });
	    return keyValueArray;
	}
	function createViewTopLevelStmts(view, targetStatements) {
	    var nodeDebugInfosVar = o.NULL_EXPR;
	    if (view.genConfig.genDebugInfo) {
	        nodeDebugInfosVar = o.variable("nodeDebugInfos_" + view.component.type.name + view.viewIndex); // fix highlighting: `
	        targetStatements.push(nodeDebugInfosVar
	            .set(o.literalArr(view.nodes.map(createStaticNodeDebugInfo), new o.ArrayType(new o.ExternalType(identifiers_1.Identifiers.StaticNodeDebugInfo), [o.TypeModifier.Const])))
	            .toDeclStmt(null, [o.StmtModifier.Final]));
	    }
	    var renderCompTypeVar = o.variable("renderType_" + view.component.type.name); // fix highlighting: `
	    if (view.viewIndex === 0) {
	        targetStatements.push(renderCompTypeVar.set(o.NULL_EXPR)
	            .toDeclStmt(o.importType(identifiers_1.Identifiers.RenderComponentType)));
	    }
	    var viewClass = createViewClass(view, renderCompTypeVar, nodeDebugInfosVar);
	    targetStatements.push(viewClass);
	    targetStatements.push(createViewFactory(view, viewClass, renderCompTypeVar));
	}
	function createStaticNodeDebugInfo(node) {
	    var compileElement = node instanceof compile_element_1.CompileElement ? node : null;
	    var providerTokens = [];
	    var componentToken = o.NULL_EXPR;
	    var varTokenEntries = [];
	    if (lang_1.isPresent(compileElement)) {
	        providerTokens = compileElement.getProviderTokens();
	        if (lang_1.isPresent(compileElement.component)) {
	            componentToken = util_1.createDiTokenExpression(identifiers_1.identifierToken(compileElement.component.type));
	        }
	        collection_1.StringMapWrapper.forEach(compileElement.referenceTokens, function (token, varName) {
	            varTokenEntries.push([varName, lang_1.isPresent(token) ? util_1.createDiTokenExpression(token) : o.NULL_EXPR]);
	        });
	    }
	    return o.importExpr(identifiers_1.Identifiers.StaticNodeDebugInfo)
	        .instantiate([
	        o.literalArr(providerTokens, new o.ArrayType(o.DYNAMIC_TYPE, [o.TypeModifier.Const])),
	        componentToken,
	        o.literalMap(varTokenEntries, new o.MapType(o.DYNAMIC_TYPE, [o.TypeModifier.Const]))
	    ], o.importType(identifiers_1.Identifiers.StaticNodeDebugInfo, null, [o.TypeModifier.Const]));
	}
	function createViewClass(view, renderCompTypeVar, nodeDebugInfosVar) {
	    var viewConstructorArgs = [
	        new o.FnParam(constants_1.ViewConstructorVars.viewUtils.name, o.importType(identifiers_1.Identifiers.ViewUtils)),
	        new o.FnParam(constants_1.ViewConstructorVars.parentInjector.name, o.importType(identifiers_1.Identifiers.Injector)),
	        new o.FnParam(constants_1.ViewConstructorVars.declarationEl.name, o.importType(identifiers_1.Identifiers.AppElement))
	    ];
	    var superConstructorArgs = [
	        o.variable(view.className),
	        renderCompTypeVar,
	        constants_1.ViewTypeEnum.fromValue(view.viewType),
	        constants_1.ViewConstructorVars.viewUtils,
	        constants_1.ViewConstructorVars.parentInjector,
	        constants_1.ViewConstructorVars.declarationEl,
	        constants_1.ChangeDetectionStrategyEnum.fromValue(getChangeDetectionMode(view))
	    ];
	    if (view.genConfig.genDebugInfo) {
	        superConstructorArgs.push(nodeDebugInfosVar);
	    }
	    var viewConstructor = new o.ClassMethod(null, viewConstructorArgs, [o.SUPER_EXPR.callFn(superConstructorArgs).toStmt()]);
	    var viewMethods = [
	        new o.ClassMethod('createInternal', [new o.FnParam(rootSelectorVar.name, o.STRING_TYPE)], generateCreateMethod(view), o.importType(identifiers_1.Identifiers.AppElement)),
	        new o.ClassMethod('injectorGetInternal', [
	            new o.FnParam(constants_1.InjectMethodVars.token.name, o.DYNAMIC_TYPE),
	            // Note: Can't use o.INT_TYPE here as the method in AppView uses number
	            new o.FnParam(constants_1.InjectMethodVars.requestNodeIndex.name, o.NUMBER_TYPE),
	            new o.FnParam(constants_1.InjectMethodVars.notFoundResult.name, o.DYNAMIC_TYPE)
	        ], addReturnValuefNotEmpty(view.injectorGetMethod.finish(), constants_1.InjectMethodVars.notFoundResult), o.DYNAMIC_TYPE),
	        new o.ClassMethod('detectChangesInternal', [new o.FnParam(constants_1.DetectChangesVars.throwOnChange.name, o.BOOL_TYPE)], generateDetectChangesMethod(view)),
	        new o.ClassMethod('dirtyParentQueriesInternal', [], view.dirtyParentQueriesMethod.finish()),
	        new o.ClassMethod('destroyInternal', [], view.destroyMethod.finish())
	    ].concat(view.eventHandlerMethods);
	    var superClass = view.genConfig.genDebugInfo ? identifiers_1.Identifiers.DebugAppView : identifiers_1.Identifiers.AppView;
	    var viewClass = new o.ClassStmt(view.className, o.importExpr(superClass, [getContextType(view)]), view.fields, view.getters, viewConstructor, viewMethods.filter(function (method) { return method.body.length > 0; }));
	    return viewClass;
	}
	function createViewFactory(view, viewClass, renderCompTypeVar) {
	    var viewFactoryArgs = [
	        new o.FnParam(constants_1.ViewConstructorVars.viewUtils.name, o.importType(identifiers_1.Identifiers.ViewUtils)),
	        new o.FnParam(constants_1.ViewConstructorVars.parentInjector.name, o.importType(identifiers_1.Identifiers.Injector)),
	        new o.FnParam(constants_1.ViewConstructorVars.declarationEl.name, o.importType(identifiers_1.Identifiers.AppElement))
	    ];
	    var initRenderCompTypeStmts = [];
	    var templateUrlInfo;
	    if (view.component.template.templateUrl == view.component.type.moduleUrl) {
	        templateUrlInfo =
	            view.component.type.moduleUrl + " class " + view.component.type.name + " - inline template";
	    }
	    else {
	        templateUrlInfo = view.component.template.templateUrl;
	    }
	    if (view.viewIndex === 0) {
	        initRenderCompTypeStmts = [
	            new o.IfStmt(renderCompTypeVar.identical(o.NULL_EXPR), [
	                renderCompTypeVar.set(constants_1.ViewConstructorVars
	                    .viewUtils.callMethod('createRenderComponentType', [
	                    o.literal(templateUrlInfo),
	                    o.literal(view.component
	                        .template.ngContentSelectors.length),
	                    constants_1.ViewEncapsulationEnum
	                        .fromValue(view.component.template.encapsulation),
	                    view.styles
	                ]))
	                    .toStmt()
	            ])
	        ];
	    }
	    return o.fn(viewFactoryArgs, initRenderCompTypeStmts.concat([
	        new o.ReturnStatement(o.variable(viewClass.name)
	            .instantiate(viewClass.constructorMethod.params.map(function (param) { return o.variable(param.name); })))
	    ]), o.importType(identifiers_1.Identifiers.AppView, [getContextType(view)]))
	        .toDeclStmt(view.viewFactory.name, [o.StmtModifier.Final]);
	}
	function generateCreateMethod(view) {
	    var parentRenderNodeExpr = o.NULL_EXPR;
	    var parentRenderNodeStmts = [];
	    if (view.viewType === core_private_1.ViewType.COMPONENT) {
	        parentRenderNodeExpr = constants_1.ViewProperties.renderer.callMethod('createViewRoot', [o.THIS_EXPR.prop('declarationAppElement').prop('nativeElement')]);
	        parentRenderNodeStmts = [
	            parentRenderNodeVar.set(parentRenderNodeExpr)
	                .toDeclStmt(o.importType(view.genConfig.renderTypes.renderNode), [o.StmtModifier.Final])
	        ];
	    }
	    var resultExpr;
	    if (view.viewType === core_private_1.ViewType.HOST) {
	        resultExpr = view.nodes[0].appElement;
	    }
	    else {
	        resultExpr = o.NULL_EXPR;
	    }
	    return parentRenderNodeStmts.concat(view.createMethod.finish())
	        .concat([
	        o.THIS_EXPR.callMethod('init', [
	            util_1.createFlatArray(view.rootNodesOrAppElements),
	            o.literalArr(view.nodes.map(function (node) { return node.renderNode; })),
	            o.literalArr(view.disposables),
	            o.literalArr(view.subscriptions)
	        ])
	            .toStmt(),
	        new o.ReturnStatement(resultExpr)
	    ]);
	}
	function generateDetectChangesMethod(view) {
	    var stmts = [];
	    if (view.detectChangesInInputsMethod.isEmpty() && view.updateContentQueriesMethod.isEmpty() &&
	        view.afterContentLifecycleCallbacksMethod.isEmpty() &&
	        view.detectChangesRenderPropertiesMethod.isEmpty() &&
	        view.updateViewQueriesMethod.isEmpty() && view.afterViewLifecycleCallbacksMethod.isEmpty()) {
	        return stmts;
	    }
	    collection_1.ListWrapper.addAll(stmts, view.detectChangesInInputsMethod.finish());
	    stmts.push(o.THIS_EXPR.callMethod('detectContentChildrenChanges', [constants_1.DetectChangesVars.throwOnChange])
	        .toStmt());
	    var afterContentStmts = view.updateContentQueriesMethod.finish().concat(view.afterContentLifecycleCallbacksMethod.finish());
	    if (afterContentStmts.length > 0) {
	        stmts.push(new o.IfStmt(o.not(constants_1.DetectChangesVars.throwOnChange), afterContentStmts));
	    }
	    collection_1.ListWrapper.addAll(stmts, view.detectChangesRenderPropertiesMethod.finish());
	    stmts.push(o.THIS_EXPR.callMethod('detectViewChildrenChanges', [constants_1.DetectChangesVars.throwOnChange])
	        .toStmt());
	    var afterViewStmts = view.updateViewQueriesMethod.finish().concat(view.afterViewLifecycleCallbacksMethod.finish());
	    if (afterViewStmts.length > 0) {
	        stmts.push(new o.IfStmt(o.not(constants_1.DetectChangesVars.throwOnChange), afterViewStmts));
	    }
	    var varStmts = [];
	    var readVars = o.findReadVarNames(stmts);
	    if (collection_1.SetWrapper.has(readVars, constants_1.DetectChangesVars.changed.name)) {
	        varStmts.push(constants_1.DetectChangesVars.changed.set(o.literal(true)).toDeclStmt(o.BOOL_TYPE));
	    }
	    if (collection_1.SetWrapper.has(readVars, constants_1.DetectChangesVars.changes.name)) {
	        varStmts.push(constants_1.DetectChangesVars.changes.set(o.NULL_EXPR)
	            .toDeclStmt(new o.MapType(o.importType(identifiers_1.Identifiers.SimpleChange))));
	    }
	    if (collection_1.SetWrapper.has(readVars, constants_1.DetectChangesVars.valUnwrapper.name)) {
	        varStmts.push(constants_1.DetectChangesVars.valUnwrapper.set(o.importExpr(identifiers_1.Identifiers.ValueUnwrapper).instantiate([]))
	            .toDeclStmt(null, [o.StmtModifier.Final]));
	    }
	    return varStmts.concat(stmts);
	}
	function addReturnValuefNotEmpty(statements, value) {
	    if (statements.length > 0) {
	        return statements.concat([new o.ReturnStatement(value)]);
	    }
	    else {
	        return statements;
	    }
	}
	function getContextType(view) {
	    if (view.viewType === core_private_1.ViewType.COMPONENT) {
	        return o.importType(view.component.type);
	    }
	    return o.DYNAMIC_TYPE;
	}
	function getChangeDetectionMode(view) {
	    var mode;
	    if (view.viewType === core_private_1.ViewType.COMPONENT) {
	        mode = core_private_1.isDefaultChangeDetectionStrategy(view.component.changeDetection) ?
	            core_1.ChangeDetectionStrategy.CheckAlways :
	            core_1.ChangeDetectionStrategy.CheckOnce;
	    }
	    else {
	        mode = core_1.ChangeDetectionStrategy.CheckAlways;
	    }
	    return mode;
	}
	//# sourceMappingURL=view_builder.js.map

/***/ },
/* 380 */,
/* 381 */,
/* 382 */,
/* 383 */,
/* 384 */,
/* 385 */,
/* 386 */,
/* 387 */,
/* 388 */,
/* 389 */,
/* 390 */,
/* 391 */,
/* 392 */,
/* 393 */,
/* 394 */,
/* 395 */,
/* 396 */,
/* 397 */,
/* 398 */,
/* 399 */,
/* 400 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var core_1 = __webpack_require__(1);
	exports.ReflectionCapabilities = core_1.__core_private__.ReflectionCapabilities;
	//# sourceMappingURL=core_private.js.map

/***/ },
/* 401 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	function __export(m) {
	    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
	}
	__export(__webpack_require__(402));
	//# sourceMappingURL=index.js.map

/***/ },
/* 402 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var compiler_1 = __webpack_require__(87);
	var xhr_cache_1 = __webpack_require__(405);
	var lang_1 = __webpack_require__(41);
	var xhr_impl_1 = __webpack_require__(406);
	var platform_browser_1 = __webpack_require__(407);
	var core_1 = __webpack_require__(1);
	var core_private_1 = __webpack_require__(400);
	exports.CACHED_TEMPLATE_PROVIDER = 
	/*@ts2dart_const*/ [{ provide: compiler_1.XHR, useClass: xhr_cache_1.CachedXHR }];
	/**
	 * An array of providers that should be passed into `application()` when bootstrapping a component.
	 */
	exports.BROWSER_APP_DYNAMIC_PROVIDERS = 
	/*@ts2dart_const*/ [
	    platform_browser_1.BROWSER_APP_COMMON_PROVIDERS,
	    compiler_1.COMPILER_PROVIDERS,
	    { provide: compiler_1.XHR, useClass: xhr_impl_1.XHRImpl },
	];
	/**
	 * Bootstrapping for Angular applications.
	 *
	 * You instantiate an Angular application by explicitly specifying a component to use
	 * as the root component for your application via the `bootstrap()` method.
	 *
	 * ## Simple Example
	 *
	 * Assuming this `index.html`:
	 *
	 * ```html
	 * <html>
	 *   <!-- load Angular script tags here. -->
	 *   <body>
	 *     <my-app>loading...</my-app>
	 *   </body>
	 * </html>
	 * ```
	 *
	 * An application is bootstrapped inside an existing browser DOM, typically `index.html`.
	 * Unlike Angular 1, Angular 2 does not compile/process providers in `index.html`. This is
	 * mainly for security reasons, as well as architectural changes in Angular 2. This means
	 * that `index.html` can safely be processed using server-side technologies such as
	 * providers. Bindings can thus use double-curly `{{ syntax }}` without collision from
	 * Angular 2 component double-curly `{{ syntax }}`.
	 *
	 * We can use this script code:
	 *
	 * {@example core/ts/bootstrap/bootstrap.ts region='bootstrap'}
	 *
	 * When the app developer invokes `bootstrap()` with the root component `MyApp` as its
	 * argument, Angular performs the following tasks:
	 *
	 *  1. It uses the component's `selector` property to locate the DOM element which needs
	 *     to be upgraded into the angular component.
	 *  2. It creates a new child injector (from the platform injector). Optionally, you can
	 *     also override the injector configuration for an app by invoking `bootstrap` with the
	 *     `componentInjectableBindings` argument.
	 *  3. It creates a new `Zone` and connects it to the angular application's change detection
	 *     domain instance.
	 *  4. It creates an emulated or shadow DOM on the selected component's host element and loads the
	 *     template into it.
	 *  5. It instantiates the specified component.
	 *  6. Finally, Angular performs change detection to apply the initial data providers for the
	 *     application.
	 *
	 *
	 * ## Bootstrapping Multiple Applications
	 *
	 * When working within a browser window, there are many singleton resources: cookies, title,
	 * location, and others. Angular services that represent these resources must likewise be
	 * shared across all Angular applications that occupy the same browser window. For this
	 * reason, Angular creates exactly one global platform object which stores all shared
	 * services, and each angular application injector has the platform injector as its parent.
	 *
	 * Each application has its own private injector as well. When there are multiple
	 * applications on a page, Angular treats each application injector's services as private
	 * to that application.
	 *
	 * ## API
	 *
	 * - `appComponentType`: The root component which should act as the application. This is
	 *   a reference to a `Type` which is annotated with `@Component(...)`.
	 * - `customProviders`: An additional set of providers that can be added to the
	 *   app injector to override default injection behavior.
	 *
	 * Returns a `Promise` of {@link ComponentRef}.
	 */
	function bootstrap(appComponentType, customProviders) {
	    core_1.reflector.reflectionCapabilities = new core_private_1.ReflectionCapabilities();
	    var appInjector = core_1.ReflectiveInjector.resolveAndCreate([exports.BROWSER_APP_DYNAMIC_PROVIDERS, lang_1.isPresent(customProviders) ? customProviders : []], platform_browser_1.browserPlatform().injector);
	    return core_1.coreLoadAndBootstrap(appInjector, appComponentType);
	}
	exports.bootstrap = bootstrap;
	//# sourceMappingURL=platform_browser_dynamic.js.map

/***/ },
/* 403 */
[460, 41],
/* 404 */
[462, 201, 202, 202],
/* 405 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var compiler_1 = __webpack_require__(87);
	var exceptions_1 = __webpack_require__(404);
	var lang_1 = __webpack_require__(41);
	var promise_1 = __webpack_require__(203);
	/**
	 * An implementation of XHR that uses a template cache to avoid doing an actual
	 * XHR.
	 *
	 * The template cache needs to be built and loaded into window.$templateCache
	 * via a separate mechanism.
	 */
	var CachedXHR = (function (_super) {
	    __extends(CachedXHR, _super);
	    function CachedXHR() {
	        _super.call(this);
	        this._cache = lang_1.global.$templateCache;
	        if (this._cache == null) {
	            throw new exceptions_1.BaseException('CachedXHR: Template cache was not found in $templateCache.');
	        }
	    }
	    CachedXHR.prototype.get = function (url) {
	        if (this._cache.hasOwnProperty(url)) {
	            return promise_1.PromiseWrapper.resolve(this._cache[url]);
	        }
	        else {
	            return promise_1.PromiseWrapper.reject('CachedXHR: Did not find cached template for ' + url, null);
	        }
	    };
	    return CachedXHR;
	}(compiler_1.XHR));
	exports.CachedXHR = CachedXHR;
	//# sourceMappingURL=xhr_cache.js.map

/***/ },
/* 406 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var compiler_1 = __webpack_require__(87);
	var promise_1 = __webpack_require__(203);
	var lang_1 = __webpack_require__(41);
	var XHRImpl = (function (_super) {
	    __extends(XHRImpl, _super);
	    function XHRImpl() {
	        _super.apply(this, arguments);
	    }
	    XHRImpl.prototype.get = function (url) {
	        var completer = promise_1.PromiseWrapper.completer();
	        var xhr = new XMLHttpRequest();
	        xhr.open('GET', url, true);
	        xhr.responseType = 'text';
	        xhr.onload = function () {
	            // responseText is the old-school way of retrieving response (supported by IE8 & 9)
	            // response/responseType properties were introduced in XHR Level2 spec (supported by IE10)
	            var response = lang_1.isPresent(xhr.response) ? xhr.response : xhr.responseText;
	            // normalize IE9 bug (http://bugs.jquery.com/ticket/1450)
	            var status = xhr.status === 1223 ? 204 : xhr.status;
	            // fix status code when it is 0 (0 status is undocumented).
	            // Occurs when accessing file resources or on Android 4.1 stock browser
	            // while retrieving files from application cache.
	            if (status === 0) {
	                status = response ? 200 : 0;
	            }
	            if (200 <= status && status <= 300) {
	                completer.resolve(response);
	            }
	            else {
	                completer.reject("Failed to load " + url, null);
	            }
	        };
	        xhr.onerror = function () { completer.reject("Failed to load " + url, null); };
	        xhr.send();
	        return completer.promise;
	    };
	    return XHRImpl;
	}(compiler_1.XHR));
	exports.XHRImpl = XHRImpl;
	//# sourceMappingURL=xhr_impl.js.map

/***/ },
/* 407 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	function __export(m) {
	    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
	}
	__export(__webpack_require__(419));
	//# sourceMappingURL=index.js.map

/***/ },
/* 408 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var animation_builder = __webpack_require__(116);
	var css_animation_builder = __webpack_require__(205);
	var browser_details = __webpack_require__(117);
	var css_animation_options = __webpack_require__(206);
	var animation = __webpack_require__(204);
	var dom_adapter = __webpack_require__(15);
	var browser_adapter = __webpack_require__(118);
	var __platform_browser_private__;
	(function (__platform_browser_private__) {
	    __platform_browser_private__.DomAdapter = dom_adapter.DomAdapter;
	    function getDOM() { return dom_adapter.getDOM(); }
	    __platform_browser_private__.getDOM = getDOM;
	    function setDOM(adapter) { return dom_adapter.setDOM(adapter); }
	    __platform_browser_private__.setDOM = setDOM;
	    __platform_browser_private__.setRootDomAdapter = dom_adapter.setRootDomAdapter;
	    __platform_browser_private__.BrowserDomAdapter = browser_adapter.BrowserDomAdapter;
	    __platform_browser_private__.AnimationBuilder = animation_builder.AnimationBuilder;
	    __platform_browser_private__.CssAnimationBuilder = css_animation_builder.CssAnimationBuilder;
	    __platform_browser_private__.CssAnimationOptions = css_animation_options.CssAnimationOptions;
	    __platform_browser_private__.Animation = animation.Animation;
	    __platform_browser_private__.BrowserDetails = browser_details.BrowserDetails;
	})(__platform_browser_private__ = exports.__platform_browser_private__ || (exports.__platform_browser_private__ = {}));
	//# sourceMappingURL=private_export.js.map

/***/ },
/* 409 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var collection_1 = __webpack_require__(22);
	var lang_1 = __webpack_require__(12);
	var dom_adapter_1 = __webpack_require__(15);
	/**
	 * Provides DOM operations in any browser environment.
	 */
	var GenericBrowserDomAdapter = (function (_super) {
	    __extends(GenericBrowserDomAdapter, _super);
	    function GenericBrowserDomAdapter() {
	        var _this = this;
	        _super.call(this);
	        this._animationPrefix = null;
	        this._transitionEnd = null;
	        try {
	            var element = this.createElement('div', this.defaultDoc());
	            if (lang_1.isPresent(this.getStyle(element, 'animationName'))) {
	                this._animationPrefix = '';
	            }
	            else {
	                var domPrefixes = ['Webkit', 'Moz', 'O', 'ms'];
	                for (var i = 0; i < domPrefixes.length; i++) {
	                    if (lang_1.isPresent(this.getStyle(element, domPrefixes[i] + 'AnimationName'))) {
	                        this._animationPrefix = '-' + domPrefixes[i].toLowerCase() + '-';
	                        break;
	                    }
	                }
	            }
	            var transEndEventNames = {
	                WebkitTransition: 'webkitTransitionEnd',
	                MozTransition: 'transitionend',
	                OTransition: 'oTransitionEnd otransitionend',
	                transition: 'transitionend'
	            };
	            collection_1.StringMapWrapper.forEach(transEndEventNames, function (value, key) {
	                if (lang_1.isPresent(_this.getStyle(element, key))) {
	                    _this._transitionEnd = value;
	                }
	            });
	        }
	        catch (e) {
	            this._animationPrefix = null;
	            this._transitionEnd = null;
	        }
	    }
	    GenericBrowserDomAdapter.prototype.getDistributedNodes = function (el) { return el.getDistributedNodes(); };
	    GenericBrowserDomAdapter.prototype.resolveAndSetHref = function (el, baseUrl, href) {
	        el.href = href == null ? baseUrl : baseUrl + '/../' + href;
	    };
	    GenericBrowserDomAdapter.prototype.supportsDOMEvents = function () { return true; };
	    GenericBrowserDomAdapter.prototype.supportsNativeShadowDOM = function () {
	        return lang_1.isFunction(this.defaultDoc().body.createShadowRoot);
	    };
	    GenericBrowserDomAdapter.prototype.getAnimationPrefix = function () {
	        return lang_1.isPresent(this._animationPrefix) ? this._animationPrefix : "";
	    };
	    GenericBrowserDomAdapter.prototype.getTransitionEnd = function () { return lang_1.isPresent(this._transitionEnd) ? this._transitionEnd : ""; };
	    GenericBrowserDomAdapter.prototype.supportsAnimation = function () {
	        return lang_1.isPresent(this._animationPrefix) && lang_1.isPresent(this._transitionEnd);
	    };
	    return GenericBrowserDomAdapter;
	}(dom_adapter_1.DomAdapter));
	exports.GenericBrowserDomAdapter = GenericBrowserDomAdapter;
	//# sourceMappingURL=generic_browser_adapter.js.map

/***/ },
/* 410 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(6);
	var dom_adapter_1 = __webpack_require__(15);
	var BrowserPlatformLocation = (function (_super) {
	    __extends(BrowserPlatformLocation, _super);
	    function BrowserPlatformLocation() {
	        _super.call(this);
	        this._init();
	    }
	    // This is moved to its own method so that `MockPlatformLocationStrategy` can overwrite it
	    /** @internal */
	    BrowserPlatformLocation.prototype._init = function () {
	        this._location = dom_adapter_1.getDOM().getLocation();
	        this._history = dom_adapter_1.getDOM().getHistory();
	    };
	    Object.defineProperty(BrowserPlatformLocation.prototype, "location", {
	        /** @internal */
	        get: function () { return this._location; },
	        enumerable: true,
	        configurable: true
	    });
	    BrowserPlatformLocation.prototype.getBaseHrefFromDOM = function () { return dom_adapter_1.getDOM().getBaseHref(); };
	    BrowserPlatformLocation.prototype.onPopState = function (fn) {
	        dom_adapter_1.getDOM().getGlobalEventTarget('window').addEventListener('popstate', fn, false);
	    };
	    BrowserPlatformLocation.prototype.onHashChange = function (fn) {
	        dom_adapter_1.getDOM().getGlobalEventTarget('window').addEventListener('hashchange', fn, false);
	    };
	    Object.defineProperty(BrowserPlatformLocation.prototype, "pathname", {
	        get: function () { return this._location.pathname; },
	        set: function (newPath) { this._location.pathname = newPath; },
	        enumerable: true,
	        configurable: true
	    });
	    Object.defineProperty(BrowserPlatformLocation.prototype, "search", {
	        get: function () { return this._location.search; },
	        enumerable: true,
	        configurable: true
	    });
	    Object.defineProperty(BrowserPlatformLocation.prototype, "hash", {
	        get: function () { return this._location.hash; },
	        enumerable: true,
	        configurable: true
	    });
	    BrowserPlatformLocation.prototype.pushState = function (state, title, url) {
	        this._history.pushState(state, title, url);
	    };
	    BrowserPlatformLocation.prototype.replaceState = function (state, title, url) {
	        this._history.replaceState(state, title, url);
	    };
	    BrowserPlatformLocation.prototype.forward = function () { this._history.forward(); };
	    BrowserPlatformLocation.prototype.back = function () { this._history.back(); };
	    BrowserPlatformLocation.decorators = [
	        { type: core_1.Injectable },
	    ];
	    BrowserPlatformLocation.ctorParameters = [];
	    return BrowserPlatformLocation;
	}(common_1.PlatformLocation));
	exports.BrowserPlatformLocation = BrowserPlatformLocation;
	//# sourceMappingURL=browser_platform_location.js.map

/***/ },
/* 411 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var core_1 = __webpack_require__(1);
	var collection_1 = __webpack_require__(22);
	var lang_1 = __webpack_require__(12);
	var dom_adapter_1 = __webpack_require__(15);
	var PublicTestability = (function () {
	    function PublicTestability(testability) {
	        this._testability = testability;
	    }
	    PublicTestability.prototype.isStable = function () { return this._testability.isStable(); };
	    PublicTestability.prototype.whenStable = function (callback) { this._testability.whenStable(callback); };
	    PublicTestability.prototype.findBindings = function (using, provider, exactMatch) {
	        return this.findProviders(using, provider, exactMatch);
	    };
	    PublicTestability.prototype.findProviders = function (using, provider, exactMatch) {
	        return this._testability.findBindings(using, provider, exactMatch);
	    };
	    return PublicTestability;
	}());
	var BrowserGetTestability = (function () {
	    function BrowserGetTestability() {
	    }
	    BrowserGetTestability.init = function () { core_1.setTestabilityGetter(new BrowserGetTestability()); };
	    BrowserGetTestability.prototype.addToWindow = function (registry) {
	        lang_1.global.getAngularTestability = function (elem, findInAncestors) {
	            if (findInAncestors === void 0) { findInAncestors = true; }
	            var testability = registry.findTestabilityInTree(elem, findInAncestors);
	            if (testability == null) {
	                throw new Error('Could not find testability for element.');
	            }
	            return new PublicTestability(testability);
	        };
	        lang_1.global.getAllAngularTestabilities = function () {
	            var testabilities = registry.getAllTestabilities();
	            return testabilities.map(function (testability) { return new PublicTestability(testability); });
	        };
	        lang_1.global.getAllAngularRootElements = function () { return registry.getAllRootElements(); };
	        var whenAllStable = function (callback) {
	            var testabilities = lang_1.global.getAllAngularTestabilities();
	            var count = testabilities.length;
	            var didWork = false;
	            var decrement = function (didWork_) {
	                didWork = didWork || didWork_;
	                count--;
	                if (count == 0) {
	                    callback(didWork);
	                }
	            };
	            testabilities.forEach(function (testability) { testability.whenStable(decrement); });
	        };
	        if (!lang_1.global.frameworkStabilizers) {
	            lang_1.global.frameworkStabilizers = collection_1.ListWrapper.createGrowableSize(0);
	        }
	        lang_1.global.frameworkStabilizers.push(whenAllStable);
	    };
	    BrowserGetTestability.prototype.findTestabilityInTree = function (registry, elem, findInAncestors) {
	        if (elem == null) {
	            return null;
	        }
	        var t = registry.getTestability(elem);
	        if (lang_1.isPresent(t)) {
	            return t;
	        }
	        else if (!findInAncestors) {
	            return null;
	        }
	        if (dom_adapter_1.getDOM().isShadowRoot(elem)) {
	            return this.findTestabilityInTree(registry, dom_adapter_1.getDOM().getHost(elem), true);
	        }
	        return this.findTestabilityInTree(registry, dom_adapter_1.getDOM().parentElement(elem), true);
	    };
	    return BrowserGetTestability;
	}());
	exports.BrowserGetTestability = BrowserGetTestability;
	//# sourceMappingURL=testability.js.map

/***/ },
/* 412 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var dom_adapter_1 = __webpack_require__(15);
	/**
	 * A service that can be used to get and set the title of a current HTML document.
	 *
	 * Since an Angular 2 application can't be bootstrapped on the entire HTML document (`<html>` tag)
	 * it is not possible to bind to the `text` property of the `HTMLTitleElement` elements
	 * (representing the `<title>` tag). Instead, this service can be used to set and get the current
	 * title value.
	 */
	var Title = (function () {
	    function Title() {
	    }
	    /**
	     * Get the title of the current HTML document.
	     * @returns {string}
	     */
	    Title.prototype.getTitle = function () { return dom_adapter_1.getDOM().getTitle(); };
	    /**
	     * Set the title of the current HTML document.
	     * @param newTitle
	     */
	    Title.prototype.setTitle = function (newTitle) { dom_adapter_1.getDOM().setTitle(newTitle); };
	    return Title;
	}());
	exports.Title = Title;
	//# sourceMappingURL=title.js.map

/***/ },
/* 413 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var core_1 = __webpack_require__(1);
	var lang_1 = __webpack_require__(12);
	var browser_1 = __webpack_require__(418);
	var dom_adapter_1 = __webpack_require__(15);
	var ChangeDetectionPerfRecord = (function () {
	    function ChangeDetectionPerfRecord(msPerTick, numTicks) {
	        this.msPerTick = msPerTick;
	        this.numTicks = numTicks;
	    }
	    return ChangeDetectionPerfRecord;
	}());
	exports.ChangeDetectionPerfRecord = ChangeDetectionPerfRecord;
	/**
	 * Entry point for all Angular debug tools. This object corresponds to the `ng`
	 * global variable accessible in the dev console.
	 */
	var AngularTools = (function () {
	    function AngularTools(ref) {
	        this.profiler = new AngularProfiler(ref);
	    }
	    return AngularTools;
	}());
	exports.AngularTools = AngularTools;
	/**
	 * Entry point for all Angular profiling-related debug tools. This object
	 * corresponds to the `ng.profiler` in the dev console.
	 */
	var AngularProfiler = (function () {
	    function AngularProfiler(ref) {
	        this.appRef = ref.injector.get(core_1.ApplicationRef);
	    }
	    /**
	     * Exercises change detection in a loop and then prints the average amount of
	     * time in milliseconds how long a single round of change detection takes for
	     * the current state of the UI. It runs a minimum of 5 rounds for a minimum
	     * of 500 milliseconds.
	     *
	     * Optionally, a user may pass a `config` parameter containing a map of
	     * options. Supported options are:
	     *
	     * `record` (boolean) - causes the profiler to record a CPU profile while
	     * it exercises the change detector. Example:
	     *
	     * ```
	     * ng.profiler.timeChangeDetection({record: true})
	     * ```
	     */
	    AngularProfiler.prototype.timeChangeDetection = function (config) {
	        var record = lang_1.isPresent(config) && config['record'];
	        var profileName = 'Change Detection';
	        // Profiler is not available in Android browsers, nor in IE 9 without dev tools opened
	        var isProfilerAvailable = lang_1.isPresent(browser_1.window.console.profile);
	        if (record && isProfilerAvailable) {
	            browser_1.window.console.profile(profileName);
	        }
	        var start = dom_adapter_1.getDOM().performanceNow();
	        var numTicks = 0;
	        while (numTicks < 5 || (dom_adapter_1.getDOM().performanceNow() - start) < 500) {
	            this.appRef.tick();
	            numTicks++;
	        }
	        var end = dom_adapter_1.getDOM().performanceNow();
	        if (record && isProfilerAvailable) {
	            // need to cast to <any> because type checker thinks there's no argument
	            // while in fact there is:
	            //
	            // https://developer.mozilla.org/en-US/docs/Web/API/Console/profileEnd
	            browser_1.window.console.profileEnd(profileName);
	        }
	        var msPerTick = (end - start) / numTicks;
	        browser_1.window.console.log("ran " + numTicks + " change detection cycles");
	        browser_1.window.console.log(lang_1.NumberWrapper.toFixed(msPerTick, 2) + " ms per check");
	        return new ChangeDetectionPerfRecord(msPerTick, numTicks);
	    };
	    return AngularProfiler;
	}());
	exports.AngularProfiler = AngularProfiler;
	//# sourceMappingURL=common_tools.js.map

/***/ },
/* 414 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var lang_1 = __webpack_require__(12);
	var common_tools_1 = __webpack_require__(413);
	var context = lang_1.global;
	/**
	 * Enabled Angular 2 debug tools that are accessible via your browser's
	 * developer console.
	 *
	 * Usage:
	 *
	 * 1. Open developer console (e.g. in Chrome Ctrl + Shift + j)
	 * 1. Type `ng.` (usually the console will show auto-complete suggestion)
	 * 1. Try the change detection profiler `ng.profiler.timeChangeDetection()`
	 *    then hit Enter.
	 */
	function enableDebugTools(ref) {
	    context.ng = new common_tools_1.AngularTools(ref);
	}
	exports.enableDebugTools = enableDebugTools;
	/**
	 * Disables Angular 2 tools.
	 */
	function disableDebugTools() {
	    delete context.ng;
	}
	exports.disableDebugTools = disableDebugTools;
	//# sourceMappingURL=tools.js.map

/***/ },
/* 415 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var lang_1 = __webpack_require__(12);
	var dom_adapter_1 = __webpack_require__(15);
	/**
	 * Predicates for use with {@link DebugElement}'s query functions.
	 */
	var By = (function () {
	    function By() {
	    }
	    /**
	     * Match all elements.
	     *
	     * ## Example
	     *
	     * {@example platform/dom/debug/ts/by/by.ts region='by_all'}
	     */
	    By.all = function () { return function (debugElement) { return true; }; };
	    /**
	     * Match elements by the given CSS selector.
	     *
	     * ## Example
	     *
	     * {@example platform/dom/debug/ts/by/by.ts region='by_css'}
	     */
	    By.css = function (selector) {
	        return function (debugElement) {
	            return lang_1.isPresent(debugElement.nativeElement) ?
	                dom_adapter_1.getDOM().elementMatches(debugElement.nativeElement, selector) :
	                false;
	        };
	    };
	    /**
	     * Match elements that have the given directive present.
	     *
	     * ## Example
	     *
	     * {@example platform/dom/debug/ts/by/by.ts region='by_directive'}
	     */
	    By.directive = function (type) {
	        return function (debugElement) { return debugElement.providerTokens.indexOf(type) !== -1; };
	    };
	    return By;
	}());
	exports.By = By;
	//# sourceMappingURL=by.js.map

/***/ },
/* 416 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var event_manager_1 = __webpack_require__(35);
	var collection_1 = __webpack_require__(22);
	var _eventNames = {
	    // pan
	    'pan': true,
	    'panstart': true,
	    'panmove': true,
	    'panend': true,
	    'pancancel': true,
	    'panleft': true,
	    'panright': true,
	    'panup': true,
	    'pandown': true,
	    // pinch
	    'pinch': true,
	    'pinchstart': true,
	    'pinchmove': true,
	    'pinchend': true,
	    'pinchcancel': true,
	    'pinchin': true,
	    'pinchout': true,
	    // press
	    'press': true,
	    'pressup': true,
	    // rotate
	    'rotate': true,
	    'rotatestart': true,
	    'rotatemove': true,
	    'rotateend': true,
	    'rotatecancel': true,
	    // swipe
	    'swipe': true,
	    'swipeleft': true,
	    'swiperight': true,
	    'swipeup': true,
	    'swipedown': true,
	    // tap
	    'tap': true,
	};
	var HammerGesturesPluginCommon = (function (_super) {
	    __extends(HammerGesturesPluginCommon, _super);
	    function HammerGesturesPluginCommon() {
	        _super.call(this);
	    }
	    HammerGesturesPluginCommon.prototype.supports = function (eventName) {
	        eventName = eventName.toLowerCase();
	        return collection_1.StringMapWrapper.contains(_eventNames, eventName);
	    };
	    return HammerGesturesPluginCommon;
	}(event_manager_1.EventManagerPlugin));
	exports.HammerGesturesPluginCommon = HammerGesturesPluginCommon;
	//# sourceMappingURL=hammer_common.js.map

/***/ },
/* 417 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __extends = (this && this.__extends) || function (d, b) {
	    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
	    function __() { this.constructor = d; }
	    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	};
	var core_1 = __webpack_require__(1);
	var lang_1 = __webpack_require__(12);
	var collection_1 = __webpack_require__(22);
	var dom_adapter_1 = __webpack_require__(15);
	var event_manager_1 = __webpack_require__(35);
	var modifierKeys = ['alt', 'control', 'meta', 'shift'];
	var modifierKeyGetters = {
	    'alt': function (event) { return event.altKey; },
	    'control': function (event) { return event.ctrlKey; },
	    'meta': function (event) { return event.metaKey; },
	    'shift': function (event) { return event.shiftKey; }
	};
	var KeyEventsPlugin = (function (_super) {
	    __extends(KeyEventsPlugin, _super);
	    function KeyEventsPlugin() {
	        _super.call(this);
	    }
	    KeyEventsPlugin.prototype.supports = function (eventName) {
	        return lang_1.isPresent(KeyEventsPlugin.parseEventName(eventName));
	    };
	    KeyEventsPlugin.prototype.addEventListener = function (element, eventName, handler) {
	        var parsedEvent = KeyEventsPlugin.parseEventName(eventName);
	        var outsideHandler = KeyEventsPlugin.eventCallback(element, collection_1.StringMapWrapper.get(parsedEvent, 'fullKey'), handler, this.manager.getZone());
	        return this.manager.getZone().runOutsideAngular(function () {
	            return dom_adapter_1.getDOM().onAndCancel(element, collection_1.StringMapWrapper.get(parsedEvent, 'domEventName'), outsideHandler);
	        });
	    };
	    KeyEventsPlugin.parseEventName = function (eventName) {
	        var parts = eventName.toLowerCase().split('.');
	        var domEventName = parts.shift();
	        if ((parts.length === 0) ||
	            !(lang_1.StringWrapper.equals(domEventName, 'keydown') ||
	                lang_1.StringWrapper.equals(domEventName, 'keyup'))) {
	            return null;
	        }
	        var key = KeyEventsPlugin._normalizeKey(parts.pop());
	        var fullKey = '';
	        modifierKeys.forEach(function (modifierName) {
	            if (collection_1.ListWrapper.contains(parts, modifierName)) {
	                collection_1.ListWrapper.remove(parts, modifierName);
	                fullKey += modifierName + '.';
	            }
	        });
	        fullKey += key;
	        if (parts.length != 0 || key.length === 0) {
	            // returning null instead of throwing to let another plugin process the event
	            return null;
	        }
	        var result = collection_1.StringMapWrapper.create();
	        collection_1.StringMapWrapper.set(result, 'domEventName', domEventName);
	        collection_1.StringMapWrapper.set(result, 'fullKey', fullKey);
	        return result;
	    };
	    KeyEventsPlugin.getEventFullKey = function (event) {
	        var fullKey = '';
	        var key = dom_adapter_1.getDOM().getEventKey(event);
	        key = key.toLowerCase();
	        if (lang_1.StringWrapper.equals(key, ' ')) {
	            key = 'space'; // for readability
	        }
	        else if (lang_1.StringWrapper.equals(key, '.')) {
	            key = 'dot'; // because '.' is used as a separator in event names
	        }
	        modifierKeys.forEach(function (modifierName) {
	            if (modifierName != key) {
	                var modifierGetter = collection_1.StringMapWrapper.get(modifierKeyGetters, modifierName);
	                if (modifierGetter(event)) {
	                    fullKey += modifierName + '.';
	                }
	            }
	        });
	        fullKey += key;
	        return fullKey;
	    };
	    KeyEventsPlugin.eventCallback = function (element, fullKey, handler, zone) {
	        return function (event) {
	            if (lang_1.StringWrapper.equals(KeyEventsPlugin.getEventFullKey(event), fullKey)) {
	                zone.runGuarded(function () { return handler(event); });
	            }
	        };
	    };
	    /** @internal */
	    KeyEventsPlugin._normalizeKey = function (keyName) {
	        // TODO: switch to a StringMap if the mapping grows too much
	        switch (keyName) {
	            case 'esc':
	                return 'escape';
	            default:
	                return keyName;
	        }
	    };
	    KeyEventsPlugin.decorators = [
	        { type: core_1.Injectable },
	    ];
	    KeyEventsPlugin.ctorParameters = [];
	    return KeyEventsPlugin;
	}(event_manager_1.EventManagerPlugin));
	exports.KeyEventsPlugin = KeyEventsPlugin;
	//# sourceMappingURL=key_events.js.map

/***/ },
/* 418 */
/***/ function(module, exports) {

	"use strict";
	/**
	* JS version of browser APIs. This library can only run in the browser.
	*/
	var win = typeof window !== 'undefined' && window || {};
	exports.window = win;
	exports.document = win.document;
	exports.location = win.location;
	exports.gc = win['gc'] ? function () { return win['gc'](); } : function () { return null; };
	exports.performance = win['performance'] ? win['performance'] : null;
	exports.Event = win['Event'];
	exports.MouseEvent = win['MouseEvent'];
	exports.KeyboardEvent = win['KeyboardEvent'];
	exports.EventTarget = win['EventTarget'];
	exports.History = win['History'];
	exports.Location = win['Location'];
	exports.EventListener = win['EventListener'];
	//# sourceMappingURL=browser.js.map

/***/ },
/* 419 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	function __export(m) {
	    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
	}
	var core_1 = __webpack_require__(1);
	var lang_1 = __webpack_require__(12);
	var browser_common_1 = __webpack_require__(67);
	var dom_events_1 = __webpack_require__(208);
	exports.DomEventsPlugin = dom_events_1.DomEventsPlugin;
	var event_manager_1 = __webpack_require__(35);
	exports.EventManager = event_manager_1.EventManager;
	exports.EVENT_MANAGER_PLUGINS = event_manager_1.EVENT_MANAGER_PLUGINS;
	var ng_probe_1 = __webpack_require__(119);
	exports.ELEMENT_PROBE_PROVIDERS = ng_probe_1.ELEMENT_PROBE_PROVIDERS;
	var browser_common_2 = __webpack_require__(67);
	exports.BROWSER_APP_COMMON_PROVIDERS = browser_common_2.BROWSER_APP_COMMON_PROVIDERS;
	exports.BROWSER_SANITIZATION_PROVIDERS = browser_common_2.BROWSER_SANITIZATION_PROVIDERS;
	exports.BROWSER_PROVIDERS = browser_common_2.BROWSER_PROVIDERS;
	exports.By = browser_common_2.By;
	exports.Title = browser_common_2.Title;
	exports.enableDebugTools = browser_common_2.enableDebugTools;
	exports.disableDebugTools = browser_common_2.disableDebugTools;
	exports.HAMMER_GESTURE_CONFIG = browser_common_2.HAMMER_GESTURE_CONFIG;
	exports.HammerGestureConfig = browser_common_2.HammerGestureConfig;
	__export(__webpack_require__(408));
	var dom_tokens_1 = __webpack_require__(68);
	exports.DOCUMENT = dom_tokens_1.DOCUMENT;
	var dom_sanitization_service_1 = __webpack_require__(214);
	exports.DomSanitizationService = dom_sanitization_service_1.DomSanitizationService;
	exports.SecurityContext = dom_sanitization_service_1.SecurityContext;
	var platform_browser_static_1 = __webpack_require__(420);
	exports.bootstrapStatic = platform_browser_static_1.bootstrapStatic;
	exports.browserStaticPlatform = platform_browser_static_1.browserStaticPlatform;
	exports.BROWSER_APP_STATIC_PROVIDERS = platform_browser_static_1.BROWSER_APP_STATIC_PROVIDERS;
	exports.BrowserPlatformLocation = platform_browser_static_1.BrowserPlatformLocation;
	function browserPlatform() {
	    if (lang_1.isBlank(core_1.getPlatform())) {
	        core_1.createPlatform(core_1.ReflectiveInjector.resolveAndCreate(browser_common_1.BROWSER_PROVIDERS));
	    }
	    return core_1.assertPlatform(browser_common_1.BROWSER_PLATFORM_MARKER);
	}
	exports.browserPlatform = browserPlatform;
	//# sourceMappingURL=platform_browser.js.map

/***/ },
/* 420 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var core_1 = __webpack_require__(1);
	var lang_1 = __webpack_require__(12);
	var browser_common_1 = __webpack_require__(67);
	var ng_probe_1 = __webpack_require__(119);
	exports.ELEMENT_PROBE_PROVIDERS = ng_probe_1.ELEMENT_PROBE_PROVIDERS;
	var browser_platform_location_1 = __webpack_require__(410);
	exports.BrowserPlatformLocation = browser_platform_location_1.BrowserPlatformLocation;
	var browser_common_2 = __webpack_require__(67);
	exports.BROWSER_PROVIDERS = browser_common_2.BROWSER_PROVIDERS;
	exports.By = browser_common_2.By;
	exports.Title = browser_common_2.Title;
	exports.enableDebugTools = browser_common_2.enableDebugTools;
	exports.disableDebugTools = browser_common_2.disableDebugTools;
	/**
	 * An array of providers that should be passed into `application()` when bootstrapping a component
	 * when all templates
	 * have been precompiled offline.
	 */
	exports.BROWSER_APP_STATIC_PROVIDERS = 
	/*@ts2dart_const*/ browser_common_1.BROWSER_APP_COMMON_PROVIDERS;
	function browserStaticPlatform() {
	    if (lang_1.isBlank(core_1.getPlatform())) {
	        core_1.createPlatform(core_1.ReflectiveInjector.resolveAndCreate(browser_common_1.BROWSER_PROVIDERS));
	    }
	    return core_1.assertPlatform(browser_common_1.BROWSER_PLATFORM_MARKER);
	}
	exports.browserStaticPlatform = browserStaticPlatform;
	/**
	 * See {@link bootstrap} for more information.
	 */
	function bootstrapStatic(appComponentType, customProviders, initReflector) {
	    if (lang_1.isPresent(initReflector)) {
	        initReflector();
	    }
	    var appProviders = lang_1.isPresent(customProviders) ? [exports.BROWSER_APP_STATIC_PROVIDERS, customProviders] :
	        exports.BROWSER_APP_STATIC_PROVIDERS;
	    var appInjector = core_1.ReflectiveInjector.resolveAndCreate(appProviders, browserStaticPlatform().injector);
	    return core_1.coreLoadAndBootstrap(appInjector, appComponentType);
	}
	exports.bootstrapStatic = bootstrapStatic;
	//# sourceMappingURL=platform_browser_static.js.map

/***/ },
/* 421 */
/***/ function(module, exports) {

	"use strict";
	/**
	* Regular expression for safe style values.
	*
	* Quotes (" and ') are allowed, but a check must be done elsewhere to ensure
	* they're balanced.
	*
	* ',' allows multiple values to be assigned to the same property
	* (e.g. background-attachment or font-family) and hence could allow
	* multiple values to get injected, but that should pose no risk of XSS.
	*
	* The rgb() and rgba() expression checks only for XSS safety, not for CSS
	* validity.
	*
	* This regular expression was taken from the Closure sanitization library.
	*/
	var SAFE_STYLE_VALUE = /^([-,."'%_!# a-zA-Z0-9]+|(?:rgb|hsl)a?\([0-9.%, ]+\))$/;
	/**
	 * Checks that quotes (" and ') are properly balanced inside a string. Assumes
	 * that neither escape (\) nor any other character that could result in
	 * breaking out of a string parsing context are allowed;
	 * see http://www.w3.org/TR/css3-syntax/#string-token-diagram.
	 *
	 * This code was taken from the Closure sanitization library.
	 */
	function hasBalancedQuotes(value) {
	    var outsideSingle = true;
	    var outsideDouble = true;
	    for (var i = 0; i < value.length; i++) {
	        var c = value.charAt(i);
	        if (c === '\'' && outsideDouble) {
	            outsideSingle = !outsideSingle;
	        }
	        else if (c === '"' && outsideSingle) {
	            outsideDouble = !outsideDouble;
	        }
	    }
	    return outsideSingle && outsideDouble;
	}
	function sanitizeStyle(value) {
	    if (String(value).match(SAFE_STYLE_VALUE) && hasBalancedQuotes(value))
	        return value;
	    return 'unsafe';
	}
	exports.sanitizeStyle = sanitizeStyle;
	//# sourceMappingURL=style_sanitizer.js.map

/***/ },
/* 422 */
/***/ function(module, exports) {

	"use strict";
	/**
	* A pattern that recognizes a commonly useful subset of URLs that are safe.
	*
	* This regular expression matches a subset of URLs that will not cause script
	* execution if used in URL context within a HTML document. Specifically, this
	* regular expression matches if (comment from here on and regex copied from
	* Soy's EscapingConventions):
	* (1) Either a protocol in a whitelist (http, https, mailto or ftp).
	* (2) or no protocol.  A protocol must be followed by a colon. The below
	*     allows that by allowing colons only after one of the characters [/?#].
	*     A colon after a hash (#) must be in the fragment.
	*     Otherwise, a colon after a (?) must be in a query.
	*     Otherwise, a colon after a single solidus (/) must be in a path.
	*     Otherwise, a colon after a double solidus (//) must be in the authority
	*     (before port).
	*
	* The pattern disallows &, used in HTML entity declarations before
	* one of the characters in [/?#]. This disallows HTML entities used in the
	* protocol name, which should never happen, e.g. "h&#116;tp" for "http".
	* It also disallows HTML entities in the first path part of a relative path,
	* e.g. "foo&lt;bar/baz".  Our existing escaping functions should not produce
	* that. More importantly, it disallows masking of a colon,
	* e.g. "javascript&#58;...".
	*
	* This regular expression was taken from the Closure sanitization library.
	*/
	var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi;
	function sanitizeUrl(url) {
	    if (String(url).match(SAFE_URL_PATTERN))
	        return url;
	    return 'unsafe:' + url;
	}
	exports.sanitizeUrl = sanitizeUrl;
	//# sourceMappingURL=url_sanitizer.js.map

/***/ },
/* 423 */,
/* 424 */,
/* 425 */
/***/ function(module, exports) {

	module.exports = "<h3 id=\"usage\">Usage</h3>\n<pre class=\"language-typescript\"><code class=\"language-typescript\"><span class=\"token keyword\" >import</span> <span class=\"token punctuation\" >{</span>FileSelectDirective<span class=\"token punctuation\" >,</span> FileDropDirective<span class=\"token punctuation\" >,</span> FileUploader<span class=\"token punctuation\" >}</span> from <span class=\"token string\" >'ng2-file-upload/ng2-file-upload'</span><span class=\"token punctuation\" >;</span>\n</code></pre>\n<h3 id=\"annotations\">Annotations</h3>\n<pre class=\"language-typescript\"><code class=\"language-typescript\"><span class=\"token comment\" spellcheck=\"true\">// class FileSelectDirective</span>\n@<span class=\"token function\" >Directive</span><span class=\"token punctuation\" >(</span><span class=\"token punctuation\" >{</span> selector<span class=\"token punctuation\" >:</span> <span class=\"token string\" >'[ng2FileSelect]'</span> <span class=\"token punctuation\" >}</span><span class=\"token punctuation\" >)</span>\n</code></pre>\n<pre class=\"language-typescript\"><code class=\"language-typescript\"><span class=\"token comment\" spellcheck=\"true\">// class FileDropDirective</span>\n@<span class=\"token function\" >Directive</span><span class=\"token punctuation\" >(</span><span class=\"token punctuation\" >{</span> selector<span class=\"token punctuation\" >:</span> <span class=\"token string\" >'[ng2FileDrop]'</span> <span class=\"token punctuation\" >}</span><span class=\"token punctuation\" >)</span>\n</code></pre>\n<h2 id=\"fileselect-api\">FileSelect API</h2>\n<h3 id=\"properties\">Properties</h3>\n<ul>\n<li><p><code>uploader</code> - (<code>FileUploader</code>) - uploader object. See using in <a href=\"https://github.com/valor-software/ng2-file-upload/blob/master/demo/components/file-upload/simple-demo.ts\">demo</a></p>\n<p>Parameters that supported by this object:</p>\n</li>\n<li><p><code>url</code> - URL of File Uploader&#39;s route</p>\n</li>\n<li><code>authToken</code> - auth token that will be applied as &#39;Authorization&#39; header during file send.</li>\n</ul>\n<h2 id=\"filedrop-api\">FileDrop API</h2>\n<h3 id=\"properties\">Properties</h3>\n<ul>\n<li><code>uploader</code> - (<code>FileUploader</code>) - uploader object. See using in <a href=\"https://github.com/valor-software/ng2-file-upload/blob/master/demo/components/file-upload/simple-demo.ts\">demo</a></li>\n</ul>\n<h3 id=\"events\">Events</h3>\n<ul>\n<li><code>fileOver</code> - it fires during &#39;over&#39; and &#39;out&#39; events for Drop Area; returns <code>boolean</code>: <code>true</code> if file is over Drop Area, <code>false</code> in case of out.\nSee using in <a href=\"https://github.com/valor-software/ng2-file-upload/blob/master/demo/components/file-upload/simple-demo.ts\">ts demo</a> and\n<a href=\"https://github.com/valor-software/ng2-file-upload/blob/master/demo/components/file-upload/simple-demo.html\">html demo</a></li>\n</ul>\n";

/***/ },
/* 426 */
/***/ function(module, exports) {

	module.exports = "<h1 id=\"getting-started\">Getting started</h1>\n<h2 id=\"first-of-all-welcome-\">First of all, Welcome!</h2>\n<h3 id=\"install\">Install</h3>\n<p>Install the components</p>\n<pre><code>npm install ng2-file-upload --save\n</code></pre>";

/***/ },
/* 427 */
/***/ function(module, exports, __webpack_require__) {

	var map = {
		"./af": 215,
		"./af.js": 215,
		"./ar": 219,
		"./ar-ma": 216,
		"./ar-ma.js": 216,
		"./ar-sa": 217,
		"./ar-sa.js": 217,
		"./ar-tn": 218,
		"./ar-tn.js": 218,
		"./ar.js": 219,
		"./az": 220,
		"./az.js": 220,
		"./be": 221,
		"./be.js": 221,
		"./bg": 222,
		"./bg.js": 222,
		"./bn": 223,
		"./bn.js": 223,
		"./bo": 224,
		"./bo.js": 224,
		"./br": 225,
		"./br.js": 225,
		"./bs": 226,
		"./bs.js": 226,
		"./ca": 227,
		"./ca.js": 227,
		"./cs": 228,
		"./cs.js": 228,
		"./cv": 229,
		"./cv.js": 229,
		"./cy": 230,
		"./cy.js": 230,
		"./da": 231,
		"./da.js": 231,
		"./de": 233,
		"./de-at": 232,
		"./de-at.js": 232,
		"./de.js": 233,
		"./dv": 234,
		"./dv.js": 234,
		"./el": 235,
		"./el.js": 235,
		"./en-au": 236,
		"./en-au.js": 236,
		"./en-ca": 237,
		"./en-ca.js": 237,
		"./en-gb": 238,
		"./en-gb.js": 238,
		"./en-ie": 239,
		"./en-ie.js": 239,
		"./en-nz": 240,
		"./en-nz.js": 240,
		"./eo": 241,
		"./eo.js": 241,
		"./es": 242,
		"./es.js": 242,
		"./et": 243,
		"./et.js": 243,
		"./eu": 244,
		"./eu.js": 244,
		"./fa": 245,
		"./fa.js": 245,
		"./fi": 246,
		"./fi.js": 246,
		"./fo": 247,
		"./fo.js": 247,
		"./fr": 250,
		"./fr-ca": 248,
		"./fr-ca.js": 248,
		"./fr-ch": 249,
		"./fr-ch.js": 249,
		"./fr.js": 250,
		"./fy": 251,
		"./fy.js": 251,
		"./gd": 252,
		"./gd.js": 252,
		"./gl": 253,
		"./gl.js": 253,
		"./he": 254,
		"./he.js": 254,
		"./hi": 255,
		"./hi.js": 255,
		"./hr": 256,
		"./hr.js": 256,
		"./hu": 257,
		"./hu.js": 257,
		"./hy-am": 258,
		"./hy-am.js": 258,
		"./id": 259,
		"./id.js": 259,
		"./is": 260,
		"./is.js": 260,
		"./it": 261,
		"./it.js": 261,
		"./ja": 262,
		"./ja.js": 262,
		"./jv": 263,
		"./jv.js": 263,
		"./ka": 264,
		"./ka.js": 264,
		"./kk": 265,
		"./kk.js": 265,
		"./km": 266,
		"./km.js": 266,
		"./ko": 267,
		"./ko.js": 267,
		"./ky": 268,
		"./ky.js": 268,
		"./lb": 269,
		"./lb.js": 269,
		"./lo": 270,
		"./lo.js": 270,
		"./lt": 271,
		"./lt.js": 271,
		"./lv": 272,
		"./lv.js": 272,
		"./me": 273,
		"./me.js": 273,
		"./mk": 274,
		"./mk.js": 274,
		"./ml": 275,
		"./ml.js": 275,
		"./mr": 276,
		"./mr.js": 276,
		"./ms": 278,
		"./ms-my": 277,
		"./ms-my.js": 277,
		"./ms.js": 278,
		"./my": 279,
		"./my.js": 279,
		"./nb": 280,
		"./nb.js": 280,
		"./ne": 281,
		"./ne.js": 281,
		"./nl": 282,
		"./nl.js": 282,
		"./nn": 283,
		"./nn.js": 283,
		"./pa-in": 284,
		"./pa-in.js": 284,
		"./pl": 285,
		"./pl.js": 285,
		"./pt": 287,
		"./pt-br": 286,
		"./pt-br.js": 286,
		"./pt.js": 287,
		"./ro": 288,
		"./ro.js": 288,
		"./ru": 289,
		"./ru.js": 289,
		"./se": 290,
		"./se.js": 290,
		"./si": 291,
		"./si.js": 291,
		"./sk": 292,
		"./sk.js": 292,
		"./sl": 293,
		"./sl.js": 293,
		"./sq": 294,
		"./sq.js": 294,
		"./sr": 296,
		"./sr-cyrl": 295,
		"./sr-cyrl.js": 295,
		"./sr.js": 296,
		"./ss": 297,
		"./ss.js": 297,
		"./sv": 298,
		"./sv.js": 298,
		"./sw": 299,
		"./sw.js": 299,
		"./ta": 300,
		"./ta.js": 300,
		"./te": 301,
		"./te.js": 301,
		"./th": 302,
		"./th.js": 302,
		"./tl-ph": 303,
		"./tl-ph.js": 303,
		"./tlh": 304,
		"./tlh.js": 304,
		"./tr": 305,
		"./tr.js": 305,
		"./tzl": 306,
		"./tzl.js": 306,
		"./tzm": 308,
		"./tzm-latn": 307,
		"./tzm-latn.js": 307,
		"./tzm.js": 308,
		"./uk": 309,
		"./uk.js": 309,
		"./uz": 310,
		"./uz.js": 310,
		"./vi": 311,
		"./vi.js": 311,
		"./x-pseudo": 312,
		"./x-pseudo.js": 312,
		"./zh-cn": 313,
		"./zh-cn.js": 313,
		"./zh-tw": 314,
		"./zh-tw.js": 314
	};
	function webpackContext(req) {
		return __webpack_require__(webpackContextResolve(req));
	};
	function webpackContextResolve(req) {
		return map[req] || (function() { throw new Error("Cannot find module '" + req + "'.") }());
	};
	webpackContext.keys = function webpackContextKeys() {
		return Object.keys(map);
	};
	webpackContext.resolve = webpackContextResolve;
	module.exports = webpackContext;
	webpackContext.id = 427;


/***/ },
/* 428 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(6);
	var ALERT_TEMPLATE = "\n  <div class=\"alert\" role=\"alert\" [ngClass]=\"classes\" *ngIf=\"!closed\">\n    <button *ngIf=\"dismissible\" type=\"button\" class=\"close\" (click)=\"onClose()\" (touch)=\"onClose()\">\n      <span aria-hidden=\"true\">&times;</span>\n      <span class=\"sr-only\">Close</span>\n    </button>\n    <ng-content></ng-content>\n  </div>\n  ";
	// TODO: templateUrl
	var AlertComponent = (function () {
	    function AlertComponent() {
	        this.type = 'warning';
	        this.close = new core_1.EventEmitter(false);
	        this.classes = [];
	    }
	    AlertComponent.prototype.ngOnInit = function () {
	        var _this = this;
	        this.classes[0] = "alert-" + this.type;
	        if (this.dismissible) {
	            this.classes[1] = 'alert-dismissible';
	        }
	        else {
	            this.classes.length = 1;
	        }
	        if (this.dismissOnTimeout) {
	            setTimeout(function () { return _this.onClose(); }, this.dismissOnTimeout);
	        }
	    };
	    // todo: mouse event + touch + pointer
	    AlertComponent.prototype.onClose = function () {
	        this.closed = true;
	        this.close.emit(this);
	    };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], AlertComponent.prototype, "type", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], AlertComponent.prototype, "dismissible", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], AlertComponent.prototype, "dismissOnTimeout", void 0);
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', core_1.EventEmitter)
	    ], AlertComponent.prototype, "close", void 0);
	    AlertComponent = __decorate([
	        core_1.Component({
	            selector: 'alert',
	            directives: [common_1.NgIf, common_1.NgClass],
	            template: ALERT_TEMPLATE
	        }), 
	        __metadata('design:paramtypes', [])
	    ], AlertComponent);
	    return AlertComponent;
	}());
	exports.AlertComponent = AlertComponent;


/***/ },
/* 429 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	// FIX: in order to update to rc.1 had to disable animation, sorry
	var core_1 = __webpack_require__(1);
	// import {AnimationBuilder} from '@angular/platform-browser/src/animate/animation_builder';
	// import {animation, style, animate, state, transition} from '@angular/core';
	/*@Directive({
	  selector: '[collapse]',
	  // templateUrl: 'app/panel.html',
	  // styleUrls: ['app/panel.css'],
	  animations: [
	    animation('active', [
	      state('void', style({ height: 0 })),
	      state('closed', style({ height: 0 })),
	      state('open', style({ height: '*' })),
	      transition('void => closed', [ animate(0) ]),
	      transition('closed => open', [ animate('350ms ease-out') ]),
	      transition('open => closed', [ animate('350ms ease-out') ])
	    ])
	  ]
	})*/
	// fix: replace with // '@angular/animate';
	// when https://github.com/angular/angular/issues/5984 will be fixed
	// TODO: remove ElementRef
	// TODO: add on change
	var CollapseDirective = (function () {
	    function CollapseDirective(/*_ab:AnimationBuilder, */ _el, _renderer) {
	        // shown
	        this.isExpanded = true;
	        // hidden
	        this.isCollapsed = false;
	        // stale state
	        this.isCollapse = true;
	        // animation state
	        this.isCollapsing = false;
	        // this._ab = _ab;
	        this._el = _el;
	        this._renderer = _renderer;
	    }
	    Object.defineProperty(CollapseDirective.prototype, "collapse", {
	        get: function () {
	            return this.isExpanded;
	        },
	        // @Input() private transitionDuration:number = 500; // Duration in ms
	        set: function (value) {
	            this.isExpanded = value;
	            this.toggle();
	        },
	        enumerable: true,
	        configurable: true
	    });
	    CollapseDirective.prototype.ngOnInit = function () {
	        // this.animation = this._ab.css();
	        // this.animation.setDuration(this.transitionDuration);
	    };
	    CollapseDirective.prototype.toggle = function () {
	        // this.open = !this.open;
	        if (this.isExpanded) {
	            this.hide();
	        }
	        else {
	            this.show();
	        }
	    };
	    CollapseDirective.prototype.hide = function () {
	        this.isCollapse = false;
	        this.isCollapsing = true;
	        this.isExpanded = false;
	        this.isCollapsed = true;
	        this.isCollapse = true;
	        this.isCollapsing = false;
	        /*  setTimeout(() => {
	              // this.height = '0';
	              // this.isCollapse = true;
	              // this.isCollapsing = false;
	              this.animation
	                .setFromStyles({
	                  height: this._el.nativeElement.scrollHeight + 'px'
	                })
	                .setToStyles({
	                  height: '0',
	                  overflow: 'hidden'
	                });
	    
	              this.animation.start(this._el.nativeElement)
	                .onComplete(() => {
	                  if (this._el.nativeElement.offsetHeight === 0) {
	                    this.display = 'none';
	                  }
	    
	                  this.isCollapse = true;
	                  this.isCollapsing = false;
	                });
	            }, 4);*/
	    };
	    CollapseDirective.prototype.show = function () {
	        this.isCollapse = false;
	        this.isCollapsing = true;
	        this.isExpanded = true;
	        this.isCollapsed = false;
	        this.display = '';
	        // this.height = 'auto';
	        this.isCollapse = true;
	        this.isCollapsing = false;
	        this._renderer.setElementStyle(this._el.nativeElement, 'overflow', 'visible');
	        this._renderer.setElementStyle(this._el.nativeElement, 'height', 'auto');
	        /*setTimeout(() => {
	            // this.height = 'auto';
	            // this.isCollapse = true;
	            // this.isCollapsing = false;
	            this.animation
	              .setFromStyles({
	                height: this._el.nativeElement.offsetHeight,
	                overflow: 'hidden'
	              })
	              .setToStyles({
	                height: this._el.nativeElement.scrollHeight + 'px'
	              });
	    
	            this.animation.start(this._el.nativeElement)
	              .onComplete(() => {
	                this.isCollapse = true;
	                this.isCollapsing = false;
	                this._renderer.setElementStyle(this._el.nativeElement, 'overflow', 'visible');
	                this._renderer.setElementStyle(this._el.nativeElement, 'height', 'auto');
	              });
	          }, 4);*/
	    };
	    __decorate([
	        core_1.HostBinding('style.display'), 
	        __metadata('design:type', String)
	    ], CollapseDirective.prototype, "display", void 0);
	    __decorate([
	        core_1.HostBinding('class.in'),
	        core_1.HostBinding('attr.aria-expanded'), 
	        __metadata('design:type', Boolean)
	    ], CollapseDirective.prototype, "isExpanded", void 0);
	    __decorate([
	        core_1.HostBinding('attr.aria-hidden'), 
	        __metadata('design:type', Boolean)
	    ], CollapseDirective.prototype, "isCollapsed", void 0);
	    __decorate([
	        core_1.HostBinding('class.collapse'), 
	        __metadata('design:type', Boolean)
	    ], CollapseDirective.prototype, "isCollapse", void 0);
	    __decorate([
	        core_1.HostBinding('class.collapsing'), 
	        __metadata('design:type', Boolean)
	    ], CollapseDirective.prototype, "isCollapsing", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean), 
	        __metadata('design:paramtypes', [Boolean])
	    ], CollapseDirective.prototype, "collapse", null);
	    CollapseDirective = __decorate([
	        core_1.Directive({ selector: '[collapse]' }), 
	        __metadata('design:paramtypes', [core_1.ElementRef, core_1.Renderer])
	    ], CollapseDirective);
	    return CollapseDirective;
	}());
	exports.CollapseDirective = CollapseDirective;


/***/ },
/* 430 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var moment = __webpack_require__(2);
	var DateFormatter = (function () {
	    function DateFormatter() {
	    }
	    DateFormatter.prototype.format = function (date, format) {
	        return moment(date.getTime()).format(format);
	    };
	    return DateFormatter;
	}());
	exports.DateFormatter = DateFormatter;


/***/ },
/* 431 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(6);
	var ng2_bootstrap_config_1 = __webpack_require__(36);
	var datepicker_inner_component_1 = __webpack_require__(69);
	// write an interface for template options
	var TEMPLATE_OPTIONS = (_a = {},
	    _a[ng2_bootstrap_config_1.Ng2BootstrapTheme.BS4] = {
	        DAY_TITLE: "\n        <th *ngFor=\"let labelz of labels\" class=\"text-xs-center\"><small aria-label=\"labelz.full\"><b>{{labelz.abbr}}</b></small></th>\n    ",
	        WEEK_ROW: "\n        <td *ngIf=\"datePicker.showWeeks\" class=\"text-xs-center h6\"><em>{{ weekNumbers[index] }}</em></td>\n        <td *ngFor=\"let dtz of rowz\" class=\"text-xs-center\" role=\"gridcell\" [id]=\"dtz.uid\">\n          <button type=\"button\" style=\"min-width:100%;\" class=\"btn btn-sm {{dtz.customClass}}\"\n                  *ngIf=\"!(datePicker.onlyCurrentMonth && dtz.secondary)\"\n                  [ngClass]=\"{'btn-secondary': !dtz.selected && !datePicker.isActive(dtz), 'btn-info': dtz.selected, disabled: dtz.disabled}\"\n                  [disabled]=\"dtz.disabled\"\n                  (click)=\"datePicker.select(dtz.date)\" tabindex=\"-1\">\n            <span [ngClass]=\"{'text-muted': dtz.secondary || dtz.current}\">{{dtz.label}}</span>\n          </button>\n        </td>\n    ",
	        ARROW_LEFT: '&lt;',
	        ARROW_RIGHT: '&gt;'
	    },
	    _a[ng2_bootstrap_config_1.Ng2BootstrapTheme.BS3] = {
	        DAY_TITLE: "\n        <th *ngFor=\"let labelz of labels\" class=\"text-center\"><small aria-label=\"labelz.full\"><b>{{labelz.abbr}}</b></small></th>\n    ",
	        WEEK_ROW: "\n        <td *ngIf=\"datePicker.showWeeks\" class=\"text-center h6\"><em>{{ weekNumbers[index] }}</em></td>\n        <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\" [id]=\"dtz.uid\">\n          <button type=\"button\" style=\"min-width:100%;\" class=\"btn btn-default btn-sm {{dtz.customClass}}\"\n                  *ngIf=\"!(datePicker.onlyCurrentMonth && dtz.secondary)\"\n                  [ngClass]=\"{'btn-info': dtz.selected, active: datePicker.isActive(dtz), disabled: dtz.disabled}\"\n                  [disabled]=\"dtz.disabled\"\n                  (click)=\"datePicker.select(dtz.date)\" tabindex=\"-1\">\n            <span [ngClass]=\"{'text-muted': dtz.secondary, 'text-info': dtz.current}\">{{dtz.label}}</span>\n          </button>\n        </td>\n    ",
	        ARROW_LEFT: "\n    <i class=\"glyphicon glyphicon-chevron-left\"></i>\n    ",
	        ARROW_RIGHT: "\n    <i class=\"glyphicon glyphicon-chevron-right\"></i>\n    "
	    },
	    _a
	);
	var CURRENT_THEME_TEMPLATE = TEMPLATE_OPTIONS[ng2_bootstrap_config_1.Ng2BootstrapConfig.theme || ng2_bootstrap_config_1.Ng2BootstrapTheme.BS3];
	var DayPickerComponent = (function () {
	    function DayPickerComponent(datePicker) {
	        this.labels = [];
	        this.rows = [];
	        this.weekNumbers = [];
	        this.datePicker = datePicker;
	    }
	    /*private getDaysInMonth(year:number, month:number) {
	     return ((month === 1) && (year % 4 === 0) &&
	     ((year % 100 !== 0) || (year % 400 === 0))) ? 29 : DAYS_IN_MONTH[month];
	     }*/
	    DayPickerComponent.prototype.ngOnInit = function () {
	        var self = this;
	        this.datePicker.stepDay = { months: 1 };
	        this.datePicker.setRefreshViewHandler(function () {
	            var year = this.activeDate.getFullYear();
	            var month = this.activeDate.getMonth();
	            var firstDayOfMonth = new Date(year, month, 1);
	            var difference = this.startingDay - firstDayOfMonth.getDay();
	            var numDisplayedFromPreviousMonth = (difference > 0)
	                ? 7 - difference
	                : -difference;
	            var firstDate = new Date(firstDayOfMonth.getTime());
	            if (numDisplayedFromPreviousMonth > 0) {
	                firstDate.setDate(-numDisplayedFromPreviousMonth + 1);
	            }
	            // 42 is the number of days on a six-week calendar
	            var _days = self.getDates(firstDate, 42);
	            var days = [];
	            for (var i = 0; i < 42; i++) {
	                var _dateObject = this.createDateObject(_days[i], this.formatDay);
	                _dateObject.secondary = _days[i].getMonth() !== month;
	                _dateObject.uid = this.uniqueId + '-' + i;
	                days[i] = _dateObject;
	            }
	            self.labels = [];
	            for (var j = 0; j < 7; j++) {
	                self.labels[j] = {};
	                self.labels[j].abbr = this.dateFilter(days[j].date, this.formatDayHeader);
	                self.labels[j].full = this.dateFilter(days[j].date, 'EEEE');
	            }
	            self.title = this.dateFilter(this.activeDate, this.formatDayTitle);
	            self.rows = this.split(days, 7);
	            if (this.showWeeks) {
	                self.weekNumbers = [];
	                var thursdayIndex = (4 + 7 - this.startingDay) % 7, numWeeks = self.rows.length;
	                for (var curWeek = 0; curWeek < numWeeks; curWeek++) {
	                    self.weekNumbers.push(self.getISO8601WeekNumber(self.rows[curWeek][thursdayIndex].date));
	                }
	            }
	        }, 'day');
	        this.datePicker.setCompareHandler(function (date1, date2) {
	            var d1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());
	            var d2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());
	            return d1.getTime() - d2.getTime();
	        }, 'day');
	        this.datePicker.refreshView();
	    };
	    DayPickerComponent.prototype.getDates = function (startDate, n) {
	        var dates = new Array(n);
	        var current = new Date(startDate.getTime());
	        var i = 0;
	        var date;
	        while (i < n) {
	            date = new Date(current.getTime());
	            date = this.datePicker.fixTimeZone(date);
	            dates[i++] = date;
	            current = new Date(current.getFullYear(), current.getMonth(), current.getDate() + 1);
	        }
	        return dates;
	    };
	    DayPickerComponent.prototype.getISO8601WeekNumber = function (date) {
	        var checkDate = new Date(date.getTime());
	        // Thursday
	        checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));
	        var time = checkDate.getTime();
	        // Compare with Jan 1
	        checkDate.setMonth(0);
	        checkDate.setDate(1);
	        return Math.floor(Math.round((time - checkDate.getTime()) / 86400000) / 7) + 1;
	    };
	    DayPickerComponent = __decorate([
	        core_1.Component({
	            selector: 'daypicker',
	            template: "\n<table *ngIf=\"datePicker.datepickerMode==='day'\" role=\"grid\" aria-labelledby=\"uniqueId+'-title'\" aria-activedescendant=\"activeDateId\">\n  <thead>\n    <tr>\n      <th>\n        <button type=\"button\" class=\"btn btn-default btn-secondary btn-sm pull-left\" (click)=\"datePicker.move(-1)\" tabindex=\"-1\">\n        " + CURRENT_THEME_TEMPLATE.ARROW_LEFT + "\n        </button>\n      </th>\n      <th [attr.colspan]=\"5 + datePicker.showWeeks\">\n        <button [id]=\"datePicker.uniqueId + '-title'\"\n                type=\"button\" class=\"btn btn-default btn-secondary btn-sm\"\n                (click)=\"datePicker.toggleMode()\"\n                [disabled]=\"datePicker.datepickerMode === datePicker.maxMode\"\n                [ngClass]=\"{disabled: datePicker.datepickerMode === datePicker.maxMode}\" tabindex=\"-1\" style=\"width:100%;\">\n          <strong>{{title}}</strong>\n        </button>\n      </th>\n      <th>\n        <button type=\"button\" class=\"btn btn-default btn-secondary btn-sm pull-right\" (click)=\"datePicker.move(1)\" tabindex=\"-1\">\n        " + CURRENT_THEME_TEMPLATE.ARROW_RIGHT + "\n        </button>\n      </th>\n    </tr>\n    <tr>\n      <th *ngIf=\"datePicker.showWeeks\"></th>\n      " + CURRENT_THEME_TEMPLATE.DAY_TITLE + "\n    </tr>\n  </thead>\n  <tbody>\n    <template ngFor [ngForOf]=\"rows\" let-rowz=\"$implicit\" let-index=\"index\">\n      <tr *ngIf=\"!(datePicker.onlyCurrentMonth && rowz[0].secondary && rowz[6].secondary)\">\n        " + CURRENT_THEME_TEMPLATE.WEEK_ROW + "\n      </tr>\n    </template>\n  </tbody>\n</table>\n  ",
	            directives: [common_1.FORM_DIRECTIVES, common_1.CORE_DIRECTIVES, common_1.NgClass]
	        }), 
	        __metadata('design:paramtypes', [datepicker_inner_component_1.DatePickerInnerComponent])
	    ], DayPickerComponent);
	    return DayPickerComponent;
	}());
	exports.DayPickerComponent = DayPickerComponent;
	var _a;


/***/ },
/* 432 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(6);
	var datepicker_inner_component_1 = __webpack_require__(69);
	var ng2_bootstrap_config_1 = __webpack_require__(36);
	// write an interface for template options
	var TEMPLATE_OPTIONS = {
	    bs4: {
	        MONTH_BUTTON: "\n        <button type=\"button\" style=\"min-width:100%;\" class=\"btn btn-default\"\n                [ngClass]=\"{'btn-info': dtz.selected, 'btn-link': !dtz.selected && !datePicker.isActive(dtz), 'btn-info': !dtz.selected && datePicker.isActive(dtz), disabled: dtz.disabled}\"\n                [disabled]=\"dtz.disabled\"\n                (click)=\"datePicker.select(dtz.date)\" tabindex=\"-1\"><span [ngClass]=\"{'text-success': dtz.current}\">{{dtz.label}}</span></button>\n    "
	    },
	    bs3: {
	        MONTH_BUTTON: "\n        <button type=\"button\" style=\"min-width:100%;\" class=\"btn btn-default\"\n                [ngClass]=\"{'btn-info': dtz.selected, active: datePicker.isActive(dtz), disabled: dtz.disabled}\"\n                [disabled]=\"dtz.disabled\"\n                (click)=\"datePicker.select(dtz.date)\" tabindex=\"-1\"><span [ngClass]=\"{'text-info': dtz.current}\">{{dtz.label}}</span></button>\n    "
	    }
	};
	var CURRENT_THEME_TEMPLATE = TEMPLATE_OPTIONS[ng2_bootstrap_config_1.Ng2BootstrapConfig.theme] || TEMPLATE_OPTIONS.bs3;
	var MonthPickerComponent = (function () {
	    function MonthPickerComponent(datePicker) {
	        this.rows = [];
	        this.datePicker = datePicker;
	    }
	    MonthPickerComponent.prototype.ngOnInit = function () {
	        var self = this;
	        this.datePicker.stepMonth = { years: 1 };
	        this.datePicker.setRefreshViewHandler(function () {
	            var months = new Array(12);
	            var year = this.activeDate.getFullYear();
	            var date;
	            for (var i = 0; i < 12; i++) {
	                date = new Date(year, i, 1);
	                date = this.fixTimeZone(date);
	                months[i] = this.createDateObject(date, this.formatMonth);
	                months[i].uid = this.uniqueId + '-' + i;
	            }
	            self.title = this.dateFilter(this.activeDate, this.formatMonthTitle);
	            self.rows = this.split(months, 3);
	        }, 'month');
	        this.datePicker.setCompareHandler(function (date1, date2) {
	            var d1 = new Date(date1.getFullYear(), date1.getMonth());
	            var d2 = new Date(date2.getFullYear(), date2.getMonth());
	            return d1.getTime() - d2.getTime();
	        }, 'month');
	        this.datePicker.refreshView();
	    };
	    MonthPickerComponent = __decorate([
	        core_1.Component({
	            selector: 'monthpicker',
	            template: "\n<table *ngIf=\"datePicker.datepickerMode==='month'\" role=\"grid\">\n  <thead>\n    <tr>\n      <th>\n        <button type=\"button\" class=\"btn btn-default btn-sm pull-left\"\n                (click)=\"datePicker.move(-1)\" tabindex=\"-1\">\n          <i class=\"glyphicon glyphicon-chevron-left\"></i>\n        </button></th>\n      <th>\n        <button [id]=\"uniqueId + '-title'\"\n                type=\"button\" class=\"btn btn-default btn-sm\"\n                (click)=\"datePicker.toggleMode()\"\n                [disabled]=\"datePicker.datepickerMode === maxMode\"\n                [ngClass]=\"{disabled: datePicker.datepickerMode === maxMode}\" tabindex=\"-1\" style=\"width:100%;\">\n          <strong>{{title}}</strong>\n        </button>\n      </th>\n      <th>\n        <button type=\"button\" class=\"btn btn-default btn-sm pull-right\"\n                (click)=\"datePicker.move(1)\" tabindex=\"-1\">\n          <i class=\"glyphicon glyphicon-chevron-right\"></i>\n        </button>\n      </th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr *ngFor=\"let rowz of rows\">\n      <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\" id=\"{{dtz.uid}}\" [ngClass]=\"dtz.customClass\">\n        " + CURRENT_THEME_TEMPLATE.MONTH_BUTTON + "\n      </td>\n    </tr>\n  </tbody>\n</table>\n  ",
	            directives: [common_1.FORM_DIRECTIVES, common_1.CORE_DIRECTIVES, common_1.NgClass]
	        }), 
	        __metadata('design:paramtypes', [datepicker_inner_component_1.DatePickerInnerComponent])
	    ], MonthPickerComponent);
	    return MonthPickerComponent;
	}());
	exports.MonthPickerComponent = MonthPickerComponent;


/***/ },
/* 433 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(6);
	var ng2_bootstrap_config_1 = __webpack_require__(36);
	var datepicker_inner_component_1 = __webpack_require__(69);
	// write an interface for template options
	var TEMPLATE_OPTIONS = {
	    bs4: {
	        YEAR_BUTTON: "\n        <button type=\"button\" style=\"min-width:100%;\" class=\"btn btn-default\"\n                [ngClass]=\"{'btn-info': dtz.selected, 'btn-link': !dtz.selected && !datePicker.isActive(dtz), 'btn-info': !dtz.selected && datePicker.isActive(dtz), disabled: dtz.disabled}\"\n                [disabled]=\"dtz.disabled\"\n                (click)=\"datePicker.select(dtz.date)\" tabindex=\"-1\">\n          <span [ngClass]=\"{'text-success': dtz.current}\">{{dtz.label}}</span>\n        </button>\n    "
	    },
	    bs3: {
	        YEAR_BUTTON: "\n        <button type=\"button\" style=\"min-width:100%;\" class=\"btn btn-default\"\n                [ngClass]=\"{'btn-info': dtz.selected, active: datePicker.isActive(dtz), disabled: dtz.disabled}\"\n                [disabled]=\"dtz.disabled\"\n                (click)=\"datePicker.select(dtz.date)\" tabindex=\"-1\">\n          <span [ngClass]=\"{'text-info': dtz.current}\">{{dtz.label}}</span>\n        </button>\n    "
	    }
	};
	var CURRENT_THEME_TEMPLATE = TEMPLATE_OPTIONS[ng2_bootstrap_config_1.Ng2BootstrapConfig.theme] || TEMPLATE_OPTIONS.bs3;
	var YearPickerComponent = (function () {
	    function YearPickerComponent(datePicker) {
	        this.rows = [];
	        this.datePicker = datePicker;
	    }
	    YearPickerComponent.prototype.ngOnInit = function () {
	        var self = this;
	        this.datePicker.stepYear = { years: this.datePicker.yearRange };
	        this.datePicker.setRefreshViewHandler(function () {
	            var years = new Array(this.yearRange);
	            var date;
	            for (var i = 0, start = self.getStartingYear(this.activeDate.getFullYear()); i < this.yearRange; i++) {
	                date = new Date(start + i, 0, 1);
	                date = this.fixTimeZone(date);
	                years[i] = this.createDateObject(date, this.formatYear);
	                years[i].uid = this.uniqueId + '-' + i;
	            }
	            self.title = [years[0].label,
	                years[this.yearRange - 1].label].join(' - ');
	            self.rows = this.split(years, 5);
	        }, 'year');
	        this.datePicker.setCompareHandler(function (date1, date2) {
	            return date1.getFullYear() - date2.getFullYear();
	        }, 'year');
	        this.datePicker.refreshView();
	    };
	    YearPickerComponent.prototype.getStartingYear = function (year) {
	        // todo: parseInt
	        return ((year - 1) / this.datePicker.yearRange) * this.datePicker.yearRange + 1;
	    };
	    YearPickerComponent = __decorate([
	        core_1.Component({
	            selector: 'yearpicker',
	            template: "\n<table *ngIf=\"datePicker.datepickerMode==='year'\" role=\"grid\">\n  <thead>\n    <tr>\n      <th>\n        <button type=\"button\" class=\"btn btn-default btn-sm pull-left\"\n                (click)=\"datePicker.move(-1)\" tabindex=\"-1\">\n          <i class=\"glyphicon glyphicon-chevron-left\"></i>\n        </button>\n      </th>\n      <th colspan=\"3\">\n        <button [id]=\"uniqueId + '-title'\" role=\"heading\"\n                type=\"button\" class=\"btn btn-default btn-sm\"\n                (click)=\"datePicker.toggleMode()\"\n                [disabled]=\"datePicker.datepickerMode === datePicker.maxMode\"\n                [ngClass]=\"{disabled: datePicker.datepickerMode === datePicker.maxMode}\" tabindex=\"-1\" style=\"width:100%;\">\n          <strong>{{title}}</strong>\n        </button>\n      </th>\n      <th>\n        <button type=\"button\" class=\"btn btn-default btn-sm pull-right\"\n                (click)=\"datePicker.move(1)\" tabindex=\"-1\">\n          <i class=\"glyphicon glyphicon-chevron-right\"></i>\n        </button>\n      </th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr *ngFor=\"let rowz of rows\">\n      <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\">\n      " + CURRENT_THEME_TEMPLATE.YEAR_BUTTON + "\n      </td>\n    </tr>\n  </tbody>\n</table>\n  ",
	            directives: [common_1.FORM_DIRECTIVES, common_1.CORE_DIRECTIVES, common_1.NgClass]
	        }), 
	        __metadata('design:paramtypes', [datepicker_inner_component_1.DatePickerInnerComponent])
	    ], YearPickerComponent);
	    return YearPickerComponent;
	}());
	exports.YearPickerComponent = YearPickerComponent;


/***/ },
/* 434 */
/***/ function(module, exports) {

	"use strict";
	exports.ALWAYS = 'always';
	exports.DISABLED = 'disabled';
	exports.OUTSIDECLICK = 'outsideClick';
	exports.NONINPUT = 'nonInput';
	var DropdownService = (function () {
	    function DropdownService() {
	        this.closeDropdownBind = this.closeDropdown.bind(this);
	        this.keybindFilterBind = this.keybindFilter.bind(this);
	    }
	    DropdownService.prototype.open = function (dropdownScope) {
	        if (!this.openScope) {
	            window.document.addEventListener('click', this.closeDropdownBind, true);
	            window.document.addEventListener('keydown', this.keybindFilterBind);
	        }
	        if (this.openScope && this.openScope !== dropdownScope) {
	            this.openScope.isOpen = false;
	        }
	        this.openScope = dropdownScope;
	    };
	    DropdownService.prototype.close = function (dropdownScope) {
	        if (this.openScope !== dropdownScope) {
	            return;
	        }
	        this.openScope = void 0;
	        window.document.removeEventListener('click', this.closeDropdownBind, true);
	        window.document.removeEventListener('keydown', this.keybindFilterBind);
	    };
	    DropdownService.prototype.closeDropdown = function (event) {
	        if (!this.openScope) {
	            return;
	        }
	        if (event && this.openScope.autoClose === exports.DISABLED) {
	            return;
	        }
	        if (event && this.openScope.toggleEl &&
	            this.openScope.toggleEl.nativeElement === event.target) {
	            return;
	        }
	        if (event && this.openScope.autoClose === exports.NONINPUT &&
	            this.openScope.menuEl &&
	            /input|textarea/i.test(event.target.tagName) &&
	            this.openScope.menuEl.nativeElement.contains(event.target)) {
	            return;
	        }
	        if (event && this.openScope.autoClose === exports.OUTSIDECLICK &&
	            this.openScope.menuEl &&
	            this.openScope.menuEl.nativeElement.contains(event.target)) {
	            return;
	        }
	        this.openScope.isOpen = false;
	    };
	    DropdownService.prototype.keybindFilter = function (event) {
	        if (event.which === 27) {
	            this.openScope.focusToggleElement();
	            this.closeDropdown(void 0);
	            return;
	        }
	        if (this.openScope.keyboardNav && this.openScope.isOpen &&
	            (event.which === 38 || event.which === 40)) {
	            event.preventDefault();
	            event.stopPropagation();
	            this.openScope.focusDropdownEntry(event.which);
	        }
	    };
	    return DropdownService;
	}());
	exports.DropdownService = DropdownService;
	exports.dropdownService = new DropdownService();


/***/ },
/* 435 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var __param = (this && this.__param) || function (paramIndex, decorator) {
	    return function (target, key) { decorator(target, key, paramIndex); }
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(6);
	var lang_1 = __webpack_require__(4);
	/* tslint:disable */
	var KeyboardEvent = lang_1.global.KeyboardEvent;
	/* tslint:enable */
	var RatingComponent = (function () {
	    function RatingComponent(cd) {
	        this.onHover = new core_1.EventEmitter(false);
	        this.onLeave = new core_1.EventEmitter(false);
	        this.onChange = Function.prototype;
	        this.onTouched = Function.prototype;
	        this.cd = cd;
	        cd.valueAccessor = this;
	    }
	    RatingComponent.prototype.onKeydown = function (event) {
	        if ([37, 38, 39, 40].indexOf(event.which) === -1) {
	            return;
	        }
	        event.preventDefault();
	        event.stopPropagation();
	        var sign = event.which === 38 || event.which === 39 ? 1 : -1;
	        this.rate(this.value + sign);
	    };
	    RatingComponent.prototype.ngOnInit = function () {
	        this.max = typeof this.max !== 'undefined' ? this.max : 5;
	        this.readonly = this.readonly === true;
	        this.stateOn = typeof this.stateOn !== 'undefined'
	            ? this.stateOn
	            : 'glyphicon-star';
	        this.stateOff = typeof this.stateOff !== 'undefined'
	            ? this.stateOff
	            : 'glyphicon-star-empty';
	        this.titles = typeof this.titles !== 'undefined' && this.titles.length > 0
	            ? this.titles
	            : ['one', 'two', 'three', 'four', 'five'];
	        this.range = this.buildTemplateObjects(this.ratingStates, this.max);
	    };
	    // model -> view
	    RatingComponent.prototype.writeValue = function (value) {
	        if (value % 1 !== value) {
	            this.value = Math.round(value);
	            this.preValue = value;
	            return;
	        }
	        this.preValue = value;
	        this.value = value;
	    };
	    RatingComponent.prototype.enter = function (value) {
	        if (!this.readonly) {
	            this.value = value;
	            this.onHover.emit(value);
	        }
	    };
	    RatingComponent.prototype.reset = function () {
	        this.value = this.preValue;
	        this.onLeave.emit(this.value);
	    };
	    RatingComponent.prototype.registerOnChange = function (fn) { this.onChange = fn; };
	    RatingComponent.prototype.registerOnTouched = function (fn) { this.onTouched = fn; };
	    RatingComponent.prototype.buildTemplateObjects = function (ratingStates, max) {
	        ratingStates = ratingStates || [];
	        var count = ratingStates.length || max;
	        var result = [];
	        for (var i = 0; i < count; i++) {
	            result.push(Object.assign({
	                index: i,
	                stateOn: this.stateOn,
	                stateOff: this.stateOff,
	                title: this.titles[i] || i + 1
	            }, ratingStates[i] || {}));
	        }
	        return result;
	    };
	    RatingComponent.prototype.rate = function (value) {
	        if (!this.readonly && value >= 0 && value <= this.range.length) {
	            this.writeValue(value);
	            this.cd.viewToModelUpdate(value);
	        }
	    };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], RatingComponent.prototype, "max", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], RatingComponent.prototype, "stateOn", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', String)
	    ], RatingComponent.prototype, "stateOff", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], RatingComponent.prototype, "readonly", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Array)
	    ], RatingComponent.prototype, "titles", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Array)
	    ], RatingComponent.prototype, "ratingStates", void 0);
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', core_1.EventEmitter)
	    ], RatingComponent.prototype, "onHover", void 0);
	    __decorate([
	        core_1.Output(), 
	        __metadata('design:type', core_1.EventEmitter)
	    ], RatingComponent.prototype, "onLeave", void 0);
	    __decorate([
	        core_1.HostListener('keydown', ['$event']), 
	        __metadata('design:type', Function), 
	        __metadata('design:paramtypes', [Object]), 
	        __metadata('design:returntype', void 0)
	    ], RatingComponent.prototype, "onKeydown", null);
	    RatingComponent = __decorate([
	        core_1.Component({
	            /* tslint:disable */
	            selector: 'rating[ngModel]',
	            /* tslint:enable */
	            directives: [common_1.NgFor],
	            template: "\n    <span (mouseleave)=\"reset()\" (keydown)=\"onKeydown($event)\" tabindex=\"0\" role=\"slider\" aria-valuemin=\"0\" [attr.aria-valuemax]=\"range.length\" [attr.aria-valuenow]=\"value\">\n      <template ngFor let-r [ngForOf]=\"range\" let-index=\"index\">\n        <span class=\"sr-only\">({{ index < value ? '*' : ' ' }})</span>\n        <i (mouseenter)=\"enter(index + 1)\" (click)=\"rate(index + 1)\" class=\"glyphicon\" [ngClass]=\"index < value ? r.stateOn : r.stateOff\" [title]=\"r.title\" ></i>\n      </template>\n    </span>\n  "
	        }),
	        __param(0, core_1.Self()), 
	        __metadata('design:paramtypes', [common_1.NgModel])
	    ], RatingComponent);
	    return RatingComponent;
	}());
	exports.RatingComponent = RatingComponent;


/***/ },
/* 436 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var __param = (this && this.__param) || function (paramIndex, decorator) {
	    return function (target, key) { decorator(target, key, paramIndex); }
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(6);
	// todo: implement global configuration via DI
	// todo: refactor directive has to many functions! (extract to stateless helper)
	// todo: use moment js?
	// todo: implement `time` validator
	// todo: replace increment/decrement blockers with getters, or extract
	// todo: unify work with selected
	exports.timepickerConfig = {
	    hourStep: 1,
	    minuteStep: 1,
	    showMeridian: true,
	    meridians: void 0,
	    readonlyInput: false,
	    mousewheel: true,
	    arrowkeys: true,
	    showSpinners: true,
	    min: void 0,
	    max: void 0
	};
	function isDefined(value) {
	    return typeof value !== 'undefined';
	}
	function def(value, fn, defaultValue) {
	    return fn(value) ? value : defaultValue;
	}
	function addMinutes(date, minutes) {
	    var dt = new Date(date.getTime() + minutes * 60000);
	    var newDate = new Date(date);
	    newDate.setHours(dt.getHours(), dt.getMinutes());
	    return newDate;
	}
	var TimepickerComponent = (function () {
	    function TimepickerComponent(cd) {
	        this.meridians = ['AM', 'PM']; // ??
	        this.onChange = Function.prototype;
	        this.onTouched = Function.prototype;
	        // result value
	        this._selected = new Date();
	        this.cd = cd;
	        cd.valueAccessor = this;
	    }
	    Object.defineProperty(TimepickerComponent.prototype, "showMeridian", {
	        get: function () {
	            return this._showMeridian;
	        },
	        set: function (value) {
	            this._showMeridian = value;
	            // || !this.$error.time
	            // if (true) {
	            this.updateTemplate();
	            return;
	            // }
	            // Evaluate from template
	            /*let hours = this.getHoursFromTemplate();
	             let minutes = this.getMinutesFromTemplate();
	             if (isDefined(hours) && isDefined(minutes)) {
	             this.selected.setHours(hours);
	             this.refresh();
	             }*/
	        },
	        enumerable: true,
	        configurable: true
	    });
	    Object.defineProperty(TimepickerComponent.prototype, "selected", {
	        get: function () {
	            return this._selected;
	        },
	        set: function (v) {
	            if (v) {
	                this._selected = v;
	                this.updateTemplate();
	                this.cd.viewToModelUpdate(this.selected);
	            }
	        },
	        enumerable: true,
	        configurable: true
	    });
	    // todo: add formatter value to Date object
	    TimepickerComponent.prototype.ngOnInit = function () {
	        // todo: take in account $locale.DATETIME_FORMATS.AMPMS;
	        this.meridians = def(this.meridians, isDefined, exports.timepickerConfig.meridians) || ['AM',
	            'PM'];
	        this.mousewheel = def(this.mousewheel, isDefined, exports.timepickerConfig.mousewheel);
	        if (this.mousewheel) {
	        }
	        this.arrowkeys = def(this.arrowkeys, isDefined, exports.timepickerConfig.arrowkeys);
	        if (this.arrowkeys) {
	        }
	        this.readonlyInput = def(this.readonlyInput, isDefined, exports.timepickerConfig.readonlyInput);
	        // this.setupInputEvents();
	        this.hourStep = def(this.hourStep, isDefined, exports.timepickerConfig.hourStep);
	        this.minuteStep = def(this.minuteStep, isDefined, exports.timepickerConfig.minuteStep);
	        this.min = def(this.min, isDefined, exports.timepickerConfig.min);
	        this.max = def(this.max, isDefined, exports.timepickerConfig.max);
	        // 12H / 24H mode
	        this.showMeridian = def(this.showMeridian, isDefined, exports.timepickerConfig.showMeridian);
	        this.showSpinners = def(this.showSpinners, isDefined, exports.timepickerConfig.showSpinners);
	    };
	    TimepickerComponent.prototype.writeValue = function (v) {
	        if (v === this.selected) {
	            return;
	        }
	        if (v && v instanceof Date) {
	            this.selected = v;
	            return;
	        }
	        this.selected = v ? new Date(v) : void 0;
	    };
	    TimepickerComponent.prototype.registerOnChange = function (fn) { this.onChange = fn; };
	    TimepickerComponent.prototype.registerOnTouched = function (fn) { this.onTouched = fn; };
	    TimepickerComponent.prototype.updateHours = function () {
	        if (this.readonlyInput) {
	            return;
	        }
	        var hours = this.getHoursFromTemplate();
	        var minutes = this.getMinutesFromTemplate();
	        if (!isDefined(hours) || !isDefined(minutes)) {
	        }
	        this.selected.setHours(hours);
	        if (this.selected < this.min || this.selected > this.max) {
	        }
	        else {
	            this.refresh();
	        }
	    };
	    TimepickerComponent.prototype.hoursOnBlur = function () {
	        if (this.readonlyInput) {
	            return;
	        }
	        // todo: binded with validation
	        if (!this.invalidHours && parseInt(this.hours, 10) < 10) {
	            this.hours = this.pad(this.hours);
	        }
	    };
	    TimepickerComponent.prototype.updateMinutes = function () {
	        if (this.readonlyInput) {
	            return;
	        }
	        var minutes = this.getMinutesFromTemplate();
	        var hours = this.getHoursFromTemplate();
	        if (!isDefined(minutes) || !isDefined(hours)) {
	        }
	        this.selected.setMinutes(minutes);
	        if (this.selected < this.min || this.selected > this.max) {
	        }
	        else {
	            this.refresh();
	        }
	    };
	    TimepickerComponent.prototype.minutesOnBlur = function () {
	        if (this.readonlyInput) {
	            return;
	        }
	        if (!this.invalidMinutes && parseInt(this.minutes, 10) < 10) {
	            this.minutes = this.pad(this.minutes);
	        }
	    };
	    TimepickerComponent.prototype.incrementHours = function () {
	        if (!this.noIncrementHours()) {
	            this.addMinutesToSelected(this.hourStep * 60);
	        }
	    };
	    TimepickerComponent.prototype.decrementHours = function () {
	        if (!this.noDecrementHours()) {
	            this.addMinutesToSelected(-this.hourStep * 60);
	        }
	    };
	    TimepickerComponent.prototype.incrementMinutes = function () {
	        if (!this.noIncrementMinutes()) {
	            this.addMinutesToSelected(this.minuteStep);
	        }
	    };
	    TimepickerComponent.prototype.decrementMinutes = function () {
	        if (!this.noDecrementMinutes()) {
	            this.addMinutesToSelected(-this.minuteStep);
	        }
	    };
	    TimepickerComponent.prototype.toggleMeridian = function () {
	        if (!this.noToggleMeridian()) {
	            var sign = this.selected.getHours() < 12 ? 1 : -1;
	            this.addMinutesToSelected(12 * 60 * sign);
	        }
	    };
	    TimepickerComponent.prototype.refresh = function () {
	        // this.makeValid();
	        this.updateTemplate();
	        this.cd.viewToModelUpdate(this.selected);
	    };
	    TimepickerComponent.prototype.updateTemplate = function () {
	        var hours = this.selected.getHours();
	        var minutes = this.selected.getMinutes();
	        if (this.showMeridian) {
	            // Convert 24 to 12 hour system
	            hours = (hours === 0 || hours === 12) ? 12 : hours % 12;
	        }
	        // this.hours = keyboardChange === 'h' ? hours : this.pad(hours);
	        // if (keyboardChange !== 'm') {
	        //  this.minutes = this.pad(minutes);
	        // }
	        this.hours = this.pad(hours);
	        this.minutes = this.pad(minutes);
	        this.meridian = this.selected.getHours() < 12
	            ? this.meridians[0]
	            : this.meridians[1];
	    };
	    TimepickerComponent.prototype.getHoursFromTemplate = function () {
	        var hours = parseInt(this.hours, 10);
	        var valid = this.showMeridian
	            ? (hours > 0 && hours < 13)
	            : (hours >= 0 && hours < 24);
	        if (!valid) {
	            return void 0;
	        }
	        if (this.showMeridian) {
	            if (hours === 12) {
	                hours = 0;
	            }
	            if (this.meridian === this.meridians[1]) {
	                hours = hours + 12;
	            }
	        }
	        return hours;
	    };
	    TimepickerComponent.prototype.getMinutesFromTemplate = function () {
	        var minutes = parseInt(this.minutes, 10);
	        return (minutes >= 0 && minutes < 60) ? minutes : undefined;
	    };
	    TimepickerComponent.prototype.pad = function (value) {
	        return (isDefined(value) && value.toString().length < 2)
	            ? '0' + value
	            : value.toString();
	    };
	    TimepickerComponent.prototype.noIncrementHours = function () {
	        var incrementedSelected = addMinutes(this.selected, this.hourStep * 60);
	        return incrementedSelected > this.max ||
	            (incrementedSelected < this.selected && incrementedSelected < this.min);
	    };
	    TimepickerComponent.prototype.noDecrementHours = function () {
	        var decrementedSelected = addMinutes(this.selected, -this.hourStep * 60);
	        return decrementedSelected < this.min ||
	            (decrementedSelected > this.selected && decrementedSelected > this.max);
	    };
	    TimepickerComponent.prototype.noIncrementMinutes = function () {
	        var incrementedSelected = addMinutes(this.selected, this.minuteStep);
	        return incrementedSelected > this.max ||
	            (incrementedSelected < this.selected && incrementedSelected < this.min);
	    };
	    TimepickerComponent.prototype.noDecrementMinutes = function () {
	        var decrementedSelected = addMinutes(this.selected, -this.minuteStep);
	        return decrementedSelected < this.min ||
	            (decrementedSelected > this.selected && decrementedSelected > this.max);
	    };
	    TimepickerComponent.prototype.addMinutesToSelected = function (minutes) {
	        this.selected = addMinutes(this.selected, minutes);
	        this.refresh();
	    };
	    TimepickerComponent.prototype.noToggleMeridian = function () {
	        if (this.selected.getHours() < 13) {
	            return addMinutes(this.selected, 12 * 60) > this.max;
	        }
	        else {
	            return addMinutes(this.selected, -12 * 60) < this.min;
	        }
	    };
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], TimepickerComponent.prototype, "hourStep", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Number)
	    ], TimepickerComponent.prototype, "minuteStep", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], TimepickerComponent.prototype, "readonlyInput", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], TimepickerComponent.prototype, "mousewheel", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], TimepickerComponent.prototype, "arrowkeys", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], TimepickerComponent.prototype, "showSpinners", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Date)
	    ], TimepickerComponent.prototype, "min", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Date)
	    ], TimepickerComponent.prototype, "max", void 0);
	    __decorate([
	        core_1.Input(), 
	        __metadata('design:type', Array)
	    ], TimepickerComponent.prototype, "meridians", void 0);
	    __decorate([
	        // ??
	        core_1.Input(), 
	        __metadata('design:type', Boolean)
	    ], TimepickerComponent.prototype, "showMeridian", null);
	    TimepickerComponent = __decorate([
	        core_1.Component({
	            /* tslint:disable */
	            selector: 'timepicker[ngModel]',
	            /* tslint:enable */
	            directives: [common_1.NgClass],
	            template: "\n    <table>\n      <tbody>\n        <tr class=\"text-center\" [ngClass]=\"{hidden: !showSpinners}\">\n          <td><a (click)=\"incrementHours()\" [ngClass]=\"{disabled: noIncrementHours()}\" class=\"btn btn-link\"><span class=\"glyphicon glyphicon-chevron-up\"></span></a></td>\n          <td>&nbsp;</td>\n          <td><a (click)=\"incrementMinutes()\" [ngClass]=\"{disabled: noIncrementMinutes()}\" class=\"btn btn-link\"><span class=\"glyphicon glyphicon-chevron-up\"></span></a></td>\n          <td [ngClass]=\"{hidden: !showMeridian}\" *ngIf=\"showMeridian\"></td>\n        </tr>\n        <tr>\n          <td class=\"form-group\" [ngClass]=\"{'has-error': invalidHours}\">\n            <input style=\"width:50px;\" type=\"text\" [(ngModel)]=\"hours\" (change)=\"updateHours()\" class=\"form-control text-center\" [readonly]=\"readonlyInput\" (blur)=\"hoursOnBlur($event)\" maxlength=\"2\">\n          </td>\n          <td>:</td>\n          <td class=\"form-group\" [ngClass]=\"{'has-error': invalidMinutes}\">\n            <input style=\"width:50px;\" type=\"text\" [(ngModel)]=\"minutes\" (change)=\"updateMinutes()\" class=\"form-control text-center\" [readonly]=\"readonlyInput\" (blur)=\"minutesOnBlur($event)\" maxlength=\"2\">\n          </td>\n          <td [ngClass]=\"{hidden: !showMeridian}\" *ngIf=\"showMeridian\"><button type=\"button\" [ngClass]=\"{disabled: noToggleMeridian()}\" class=\"btn btn-default text-center\" (click)=\"toggleMeridian()\">{{meridian}}</button></td>\n        </tr>\n        <tr class=\"text-center\" [ngClass]=\"{hidden: !showSpinners}\">\n          <td><a (click)=\"decrementHours()\" [ngClass]=\"{disabled: noDecrementHours()}\" class=\"btn btn-link\"><span class=\"glyphicon glyphicon-chevron-down\"></span></a></td>\n          <td>&nbsp;</td>\n          <td><a (click)=\"decrementMinutes()\" [ngClass]=\"{disabled: noDecrementMinutes()}\" class=\"btn btn-link\"><span class=\"glyphicon glyphicon-chevron-down\"></span></a></td>\n          <td [ngClass]=\"{hidden: !showMeridian}\" *ngIf=\"showMeridian\"></td>\n        </tr>\n      </tbody>\n    </table>\n  "
	        }),
	        __param(0, core_1.Self()), 
	        __metadata('design:paramtypes', [common_1.NgModel])
	    ], TimepickerComponent);
	    return TimepickerComponent;
	}());
	exports.TimepickerComponent = TimepickerComponent;


/***/ },
/* 437 */
/***/ function(module, exports) {

	"use strict";
	exports.latinMap = {
	    'Á': 'A',
	    'Ă': 'A',
	    'Ắ': 'A',
	    'Ặ': 'A',
	    'Ằ': 'A',
	    'Ẳ': 'A',
	    'Ẵ': 'A',
	    'Ǎ': 'A',
	    'Â': 'A',
	    'Ấ': 'A',
	    'Ậ': 'A',
	    'Ầ': 'A',
	    'Ẩ': 'A',
	    'Ẫ': 'A',
	    'Ä': 'A',
	    'Ǟ': 'A',
	    'Ȧ': 'A',
	    'Ǡ': 'A',
	    'Ạ': 'A',
	    'Ȁ': 'A',
	    'À': 'A',
	    'Ả': 'A',
	    'Ȃ': 'A',
	    'Ā': 'A',
	    'Ą': 'A',
	    'Å': 'A',
	    'Ǻ': 'A',
	    'Ḁ': 'A',
	    'Ⱥ': 'A',
	    'Ã': 'A',
	    'Ꜳ': 'AA',
	    'Æ': 'AE',
	    'Ǽ': 'AE',
	    'Ǣ': 'AE',
	    'Ꜵ': 'AO',
	    'Ꜷ': 'AU',
	    'Ꜹ': 'AV',
	    'Ꜻ': 'AV',
	    'Ꜽ': 'AY',
	    'Ḃ': 'B',
	    'Ḅ': 'B',
	    'Ɓ': 'B',
	    'Ḇ': 'B',
	    'Ƀ': 'B',
	    'Ƃ': 'B',
	    'Ć': 'C',
	    'Č': 'C',
	    'Ç': 'C',
	    'Ḉ': 'C',
	    'Ĉ': 'C',
	    'Ċ': 'C',
	    'Ƈ': 'C',
	    'Ȼ': 'C',
	    'Ď': 'D',
	    'Ḑ': 'D',
	    'Ḓ': 'D',
	    'Ḋ': 'D',
	    'Ḍ': 'D',
	    'Ɗ': 'D',
	    'Ḏ': 'D',
	    'ǲ': 'D',
	    'ǅ': 'D',
	    'Đ': 'D',
	    'Ƌ': 'D',
	    'Ǳ': 'DZ',
	    'Ǆ': 'DZ',
	    'É': 'E',
	    'Ĕ': 'E',
	    'Ě': 'E',
	    'Ȩ': 'E',
	    'Ḝ': 'E',
	    'Ê': 'E',
	    'Ế': 'E',
	    'Ệ': 'E',
	    'Ề': 'E',
	    'Ể': 'E',
	    'Ễ': 'E',
	    'Ḙ': 'E',
	    'Ë': 'E',
	    'Ė': 'E',
	    'Ẹ': 'E',
	    'Ȅ': 'E',
	    'È': 'E',
	    'Ẻ': 'E',
	    'Ȇ': 'E',
	    'Ē': 'E',
	    'Ḗ': 'E',
	    'Ḕ': 'E',
	    'Ę': 'E',
	    'Ɇ': 'E',
	    'Ẽ': 'E',
	    'Ḛ': 'E',
	    'Ꝫ': 'ET',
	    'Ḟ': 'F',
	    'Ƒ': 'F',
	    'Ǵ': 'G',
	    'Ğ': 'G',
	    'Ǧ': 'G',
	    'Ģ': 'G',
	    'Ĝ': 'G',
	    'Ġ': 'G',
	    'Ɠ': 'G',
	    'Ḡ': 'G',
	    'Ǥ': 'G',
	    'Ḫ': 'H',
	    'Ȟ': 'H',
	    'Ḩ': 'H',
	    'Ĥ': 'H',
	    'Ⱨ': 'H',
	    'Ḧ': 'H',
	    'Ḣ': 'H',
	    'Ḥ': 'H',
	    'Ħ': 'H',
	    'Í': 'I',
	    'Ĭ': 'I',
	    'Ǐ': 'I',
	    'Î': 'I',
	    'Ï': 'I',
	    'Ḯ': 'I',
	    'İ': 'I',
	    'Ị': 'I',
	    'Ȉ': 'I',
	    'Ì': 'I',
	    'Ỉ': 'I',
	    'Ȋ': 'I',
	    'Ī': 'I',
	    'Į': 'I',
	    'Ɨ': 'I',
	    'Ĩ': 'I',
	    'Ḭ': 'I',
	    'Ꝺ': 'D',
	    'Ꝼ': 'F',
	    'Ᵹ': 'G',
	    'Ꞃ': 'R',
	    'Ꞅ': 'S',
	    'Ꞇ': 'T',
	    'Ꝭ': 'IS',
	    'Ĵ': 'J',
	    'Ɉ': 'J',
	    'Ḱ': 'K',
	    'Ǩ': 'K',
	    'Ķ': 'K',
	    'Ⱪ': 'K',
	    'Ꝃ': 'K',
	    'Ḳ': 'K',
	    'Ƙ': 'K',
	    'Ḵ': 'K',
	    'Ꝁ': 'K',
	    'Ꝅ': 'K',
	    'Ĺ': 'L',
	    'Ƚ': 'L',
	    'Ľ': 'L',
	    'Ļ': 'L',
	    'Ḽ': 'L',
	    'Ḷ': 'L',
	    'Ḹ': 'L',
	    'Ⱡ': 'L',
	    'Ꝉ': 'L',
	    'Ḻ': 'L',
	    'Ŀ': 'L',
	    'Ɫ': 'L',
	    'ǈ': 'L',
	    'Ł': 'L',
	    'Ǉ': 'LJ',
	    'Ḿ': 'M',
	    'Ṁ': 'M',
	    'Ṃ': 'M',
	    'Ɱ': 'M',
	    'Ń': 'N',
	    'Ň': 'N',
	    'Ņ': 'N',
	    'Ṋ': 'N',
	    'Ṅ': 'N',
	    'Ṇ': 'N',
	    'Ǹ': 'N',
	    'Ɲ': 'N',
	    'Ṉ': 'N',
	    'Ƞ': 'N',
	    'ǋ': 'N',
	    'Ñ': 'N',
	    'Ǌ': 'NJ',
	    'Ó': 'O',
	    'Ŏ': 'O',
	    'Ǒ': 'O',
	    'Ô': 'O',
	    'Ố': 'O',
	    'Ộ': 'O',
	    'Ồ': 'O',
	    'Ổ': 'O',
	    'Ỗ': 'O',
	    'Ö': 'O',
	    'Ȫ': 'O',
	    'Ȯ': 'O',
	    'Ȱ': 'O',
	    'Ọ': 'O',
	    'Ő': 'O',
	    'Ȍ': 'O',
	    'Ò': 'O',
	    'Ỏ': 'O',
	    'Ơ': 'O',
	    'Ớ': 'O',
	    'Ợ': 'O',
	    'Ờ': 'O',
	    'Ở': 'O',
	    'Ỡ': 'O',
	    'Ȏ': 'O',
	    'Ꝋ': 'O',
	    'Ꝍ': 'O',
	    'Ō': 'O',
	    'Ṓ': 'O',
	    'Ṑ': 'O',
	    'Ɵ': 'O',
	    'Ǫ': 'O',
	    'Ǭ': 'O',
	    'Ø': 'O',
	    'Ǿ': 'O',
	    'Õ': 'O',
	    'Ṍ': 'O',
	    'Ṏ': 'O',
	    'Ȭ': 'O',
	    'Ƣ': 'OI',
	    'Ꝏ': 'OO',
	    'Ɛ': 'E',
	    'Ɔ': 'O',
	    'Ȣ': 'OU',
	    'Ṕ': 'P',
	    'Ṗ': 'P',
	    'Ꝓ': 'P',
	    'Ƥ': 'P',
	    'Ꝕ': 'P',
	    'Ᵽ': 'P',
	    'Ꝑ': 'P',
	    'Ꝙ': 'Q',
	    'Ꝗ': 'Q',
	    'Ŕ': 'R',
	    'Ř': 'R',
	    'Ŗ': 'R',
	    'Ṙ': 'R',
	    'Ṛ': 'R',
	    'Ṝ': 'R',
	    'Ȑ': 'R',
	    'Ȓ': 'R',
	    'Ṟ': 'R',
	    'Ɍ': 'R',
	    'Ɽ': 'R',
	    'Ꜿ': 'C',
	    'Ǝ': 'E',
	    'Ś': 'S',
	    'Ṥ': 'S',
	    'Š': 'S',
	    'Ṧ': 'S',
	    'Ş': 'S',
	    'Ŝ': 'S',
	    'Ș': 'S',
	    'Ṡ': 'S',
	    'Ṣ': 'S',
	    'Ṩ': 'S',
	    'Ť': 'T',
	    'Ţ': 'T',
	    'Ṱ': 'T',
	    'Ț': 'T',
	    'Ⱦ': 'T',
	    'Ṫ': 'T',
	    'Ṭ': 'T',
	    'Ƭ': 'T',
	    'Ṯ': 'T',
	    'Ʈ': 'T',
	    'Ŧ': 'T',
	    'Ɐ': 'A',
	    'Ꞁ': 'L',
	    'Ɯ': 'M',
	    'Ʌ': 'V',
	    'Ꜩ': 'TZ',
	    'Ú': 'U',
	    'Ŭ': 'U',
	    'Ǔ': 'U',
	    'Û': 'U',
	    'Ṷ': 'U',
	    'Ü': 'U',
	    'Ǘ': 'U',
	    'Ǚ': 'U',
	    'Ǜ': 'U',
	    'Ǖ': 'U',
	    'Ṳ': 'U',
	    'Ụ': 'U',
	    'Ű': 'U',
	    'Ȕ': 'U',
	    'Ù': 'U',
	    'Ủ': 'U',
	    'Ư': 'U',
	    'Ứ': 'U',
	    'Ự': 'U',
	    'Ừ': 'U',
	    'Ử': 'U',
	    'Ữ': 'U',
	    'Ȗ': 'U',
	    'Ū': 'U',
	    'Ṻ': 'U',
	    'Ų': 'U',
	    'Ů': 'U',
	    'Ũ': 'U',
	    'Ṹ': 'U',
	    'Ṵ': 'U',
	    'Ꝟ': 'V',
	    'Ṿ': 'V',
	    'Ʋ': 'V',
	    'Ṽ': 'V',
	    'Ꝡ': 'VY',
	    'Ẃ': 'W',
	    'Ŵ': 'W',
	    'Ẅ': 'W',
	    'Ẇ': 'W',
	    'Ẉ': 'W',
	    'Ẁ': 'W',
	    'Ⱳ': 'W',
	    'Ẍ': 'X',
	    'Ẋ': 'X',
	    'Ý': 'Y',
	    'Ŷ': 'Y',
	    'Ÿ': 'Y',
	    'Ẏ': 'Y',
	    'Ỵ': 'Y',
	    'Ỳ': 'Y',
	    'Ƴ': 'Y',
	    'Ỷ': 'Y',
	    'Ỿ': 'Y',
	    'Ȳ': 'Y',
	    'Ɏ': 'Y',
	    'Ỹ': 'Y',
	    'Ź': 'Z',
	    'Ž': 'Z',
	    'Ẑ': 'Z',
	    'Ⱬ': 'Z',
	    'Ż': 'Z',
	    'Ẓ': 'Z',
	    'Ȥ': 'Z',
	    'Ẕ': 'Z',
	    'Ƶ': 'Z',
	    'Ĳ': 'IJ',
	    'Œ': 'OE',
	    'ᴀ': 'A',
	    'ᴁ': 'AE',
	    'ʙ': 'B',
	    'ᴃ': 'B',
	    'ᴄ': 'C',
	    'ᴅ': 'D',
	    'ᴇ': 'E',
	    'ꜰ': 'F',
	    'ɢ': 'G',
	    'ʛ': 'G',
	    'ʜ': 'H',
	    'ɪ': 'I',
	    'ʁ': 'R',
	    'ᴊ': 'J',
	    'ᴋ': 'K',
	    'ʟ': 'L',
	    'ᴌ': 'L',
	    'ᴍ': 'M',
	    'ɴ': 'N',
	    'ᴏ': 'O',
	    'ɶ': 'OE',
	    'ᴐ': 'O',
	    'ᴕ': 'OU',
	    'ᴘ': 'P',
	    'ʀ': 'R',
	    'ᴎ': 'N',
	    'ᴙ': 'R',
	    'ꜱ': 'S',
	    'ᴛ': 'T',
	    'ⱻ': 'E',
	    'ᴚ': 'R',
	    'ᴜ': 'U',
	    'ᴠ': 'V',
	    'ᴡ': 'W',
	    'ʏ': 'Y',
	    'ᴢ': 'Z',
	    'á': 'a',
	    'ă': 'a',
	    'ắ': 'a',
	    'ặ': 'a',
	    'ằ': 'a',
	    'ẳ': 'a',
	    'ẵ': 'a',
	    'ǎ': 'a',
	    'â': 'a',
	    'ấ': 'a',
	    'ậ': 'a',
	    'ầ': 'a',
	    'ẩ': 'a',
	    'ẫ': 'a',
	    'ä': 'a',
	    'ǟ': 'a',
	    'ȧ': 'a',
	    'ǡ': 'a',
	    'ạ': 'a',
	    'ȁ': 'a',
	    'à': 'a',
	    'ả': 'a',
	    'ȃ': 'a',
	    'ā': 'a',
	    'ą': 'a',
	    'ᶏ': 'a',
	    'ẚ': 'a',
	    'å': 'a',
	    'ǻ': 'a',
	    'ḁ': 'a',
	    'ⱥ': 'a',
	    'ã': 'a',
	    'ꜳ': 'aa',
	    'æ': 'ae',
	    'ǽ': 'ae',
	    'ǣ': 'ae',
	    'ꜵ': 'ao',
	    'ꜷ': 'au',
	    'ꜹ': 'av',
	    'ꜻ': 'av',
	    'ꜽ': 'ay',
	    'ḃ': 'b',
	    'ḅ': 'b',
	    'ɓ': 'b',
	    'ḇ': 'b',
	    'ᵬ': 'b',
	    'ᶀ': 'b',
	    'ƀ': 'b',
	    'ƃ': 'b',
	    'ɵ': 'o',
	    'ć': 'c',
	    'č': 'c',
	    'ç': 'c',
	    'ḉ': 'c',
	    'ĉ': 'c',
	    'ɕ': 'c',
	    'ċ': 'c',
	    'ƈ': 'c',
	    'ȼ': 'c',
	    'ď': 'd',
	    'ḑ': 'd',
	    'ḓ': 'd',
	    'ȡ': 'd',
	    'ḋ': 'd',
	    'ḍ': 'd',
	    'ɗ': 'd',
	    'ᶑ': 'd',
	    'ḏ': 'd',
	    'ᵭ': 'd',
	    'ᶁ': 'd',
	    'đ': 'd',
	    'ɖ': 'd',
	    'ƌ': 'd',
	    'ı': 'i',
	    'ȷ': 'j',
	    'ɟ': 'j',
	    'ʄ': 'j',
	    'ǳ': 'dz',
	    'ǆ': 'dz',
	    'é': 'e',
	    'ĕ': 'e',
	    'ě': 'e',
	    'ȩ': 'e',
	    'ḝ': 'e',
	    'ê': 'e',
	    'ế': 'e',
	    'ệ': 'e',
	    'ề': 'e',
	    'ể': 'e',
	    'ễ': 'e',
	    'ḙ': 'e',
	    'ë': 'e',
	    'ė': 'e',
	    'ẹ': 'e',
	    'ȅ': 'e',
	    'è': 'e',
	    'ẻ': 'e',
	    'ȇ': 'e',
	    'ē': 'e',
	    'ḗ': 'e',
	    'ḕ': 'e',
	    'ⱸ': 'e',
	    'ę': 'e',
	    'ᶒ': 'e',
	    'ɇ': 'e',
	    'ẽ': 'e',
	    'ḛ': 'e',
	    'ꝫ': 'et',
	    'ḟ': 'f',
	    'ƒ': 'f',
	    'ᵮ': 'f',
	    'ᶂ': 'f',
	    'ǵ': 'g',
	    'ğ': 'g',
	    'ǧ': 'g',
	    'ģ': 'g',
	    'ĝ': 'g',
	    'ġ': 'g',
	    'ɠ': 'g',
	    'ḡ': 'g',
	    'ᶃ': 'g',
	    'ǥ': 'g',
	    'ḫ': 'h',
	    'ȟ': 'h',
	    'ḩ': 'h',
	    'ĥ': 'h',
	    'ⱨ': 'h',
	    'ḧ': 'h',
	    'ḣ': 'h',
	    'ḥ': 'h',
	    'ɦ': 'h',
	    'ẖ': 'h',
	    'ħ': 'h',
	    'ƕ': 'hv',
	    'í': 'i',
	    'ĭ': 'i',
	    'ǐ': 'i',
	    'î': 'i',
	    'ï': 'i',
	    'ḯ': 'i',
	    'ị': 'i',
	    'ȉ': 'i',
	    'ì': 'i',
	    'ỉ': 'i',
	    'ȋ': 'i',
	    'ī': 'i',
	    'į': 'i',
	    'ᶖ': 'i',
	    'ɨ': 'i',
	    'ĩ': 'i',
	    'ḭ': 'i',
	    'ꝺ': 'd',
	    'ꝼ': 'f',
	    'ᵹ': 'g',
	    'ꞃ': 'r',
	    'ꞅ': 's',
	    'ꞇ': 't',
	    'ꝭ': 'is',
	    'ǰ': 'j',
	    'ĵ': 'j',
	    'ʝ': 'j',
	    'ɉ': 'j',
	    'ḱ': 'k',
	    'ǩ': 'k',
	    'ķ': 'k',
	    'ⱪ': 'k',
	    'ꝃ': 'k',
	    'ḳ': 'k',
	    'ƙ': 'k',
	    'ḵ': 'k',
	    'ᶄ': 'k',
	    'ꝁ': 'k',
	    'ꝅ': 'k',
	    'ĺ': 'l',
	    'ƚ': 'l',
	    'ɬ': 'l',
	    'ľ': 'l',
	    'ļ': 'l',
	    'ḽ': 'l',
	    'ȴ': 'l',
	    'ḷ': 'l',
	    'ḹ': 'l',
	    'ⱡ': 'l',
	    'ꝉ': 'l',
	    'ḻ': 'l',
	    'ŀ': 'l',
	    'ɫ': 'l',
	    'ᶅ': 'l',
	    'ɭ': 'l',
	    'ł': 'l',
	    'ǉ': 'lj',
	    'ſ': 's',
	    'ẜ': 's',
	    'ẛ': 's',
	    'ẝ': 's',
	    'ḿ': 'm',
	    'ṁ': 'm',
	    'ṃ': 'm',
	    'ɱ': 'm',
	    'ᵯ': 'm',
	    'ᶆ': 'm',
	    'ń': 'n',
	    'ň': 'n',
	    'ņ': 'n',
	    'ṋ': 'n',
	    'ȵ': 'n',
	    'ṅ': 'n',
	    'ṇ': 'n',
	    'ǹ': 'n',
	    'ɲ': 'n',
	    'ṉ': 'n',
	    'ƞ': 'n',
	    'ᵰ': 'n',
	    'ᶇ': 'n',
	    'ɳ': 'n',
	    'ñ': 'n',
	    'ǌ': 'nj',
	    'ó': 'o',
	    'ŏ': 'o',
	    'ǒ': 'o',
	    'ô': 'o',
	    'ố': 'o',
	    'ộ': 'o',
	    'ồ': 'o',
	    'ổ': 'o',
	    'ỗ': 'o',
	    'ö': 'o',
	    'ȫ': 'o',
	    'ȯ': 'o',
	    'ȱ': 'o',
	    'ọ': 'o',
	    'ő': 'o',
	    'ȍ': 'o',
	    'ò': 'o',
	    'ỏ': 'o',
	    'ơ': 'o',
	    'ớ': 'o',
	    'ợ': 'o',
	    'ờ': 'o',
	    'ở': 'o',
	    'ỡ': 'o',
	    'ȏ': 'o',
	    'ꝋ': 'o',
	    'ꝍ': 'o',
	    'ⱺ': 'o',
	    'ō': 'o',
	    'ṓ': 'o',
	    'ṑ': 'o',
	    'ǫ': 'o',
	    'ǭ': 'o',
	    'ø': 'o',
	    'ǿ': 'o',
	    'õ': 'o',
	    'ṍ': 'o',
	    'ṏ': 'o',
	    'ȭ': 'o',
	    'ƣ': 'oi',
	    'ꝏ': 'oo',
	    'ɛ': 'e',
	    'ᶓ': 'e',
	    'ɔ': 'o',
	    'ᶗ': 'o',
	    'ȣ': 'ou',
	    'ṕ': 'p',
	    'ṗ': 'p',
	    'ꝓ': 'p',
	    'ƥ': 'p',
	    'ᵱ': 'p',
	    'ᶈ': 'p',
	    'ꝕ': 'p',
	    'ᵽ': 'p',
	    'ꝑ': 'p',
	    'ꝙ': 'q',
	    'ʠ': 'q',
	    'ɋ': 'q',
	    'ꝗ': 'q',
	    'ŕ': 'r',
	    'ř': 'r',
	    'ŗ': 'r',
	    'ṙ': 'r',
	    'ṛ': 'r',
	    'ṝ': 'r',
	    'ȑ': 'r',
	    'ɾ': 'r',
	    'ᵳ': 'r',
	    'ȓ': 'r',
	    'ṟ': 'r',
	    'ɼ': 'r',
	    'ᵲ': 'r',
	    'ᶉ': 'r',
	    'ɍ': 'r',
	    'ɽ': 'r',
	    'ↄ': 'c',
	    'ꜿ': 'c',
	    'ɘ': 'e',
	    'ɿ': 'r',
	    'ś': 's',
	    'ṥ': 's',
	    'š': 's',
	    'ṧ': 's',
	    'ş': 's',
	    'ŝ': 's',
	    'ș': 's',
	    'ṡ': 's',
	    'ṣ': 's',
	    'ṩ': 's',
	    'ʂ': 's',
	    'ᵴ': 's',
	    'ᶊ': 's',
	    'ȿ': 's',
	    'ɡ': 'g',
	    'ᴑ': 'o',
	    'ᴓ': 'o',
	    'ᴝ': 'u',
	    'ť': 't',
	    'ţ': 't',
	    'ṱ': 't',
	    'ț': 't',
	    'ȶ': 't',
	    'ẗ': 't',
	    'ⱦ': 't',
	    'ṫ': 't',
	    'ṭ': 't',
	    'ƭ': 't',
	    'ṯ': 't',
	    'ᵵ': 't',
	    'ƫ': 't',
	    'ʈ': 't',
	    'ŧ': 't',
	    'ᵺ': 'th',
	    'ɐ': 'a',
	    'ᴂ': 'ae',
	    'ǝ': 'e',
	    'ᵷ': 'g',
	    'ɥ': 'h',
	    'ʮ': 'h',
	    'ʯ': 'h',
	    'ᴉ': 'i',
	    'ʞ': 'k',
	    'ꞁ': 'l',
	    'ɯ': 'm',
	    'ɰ': 'm',
	    'ᴔ': 'oe',
	    'ɹ': 'r',
	    'ɻ': 'r',
	    'ɺ': 'r',
	    'ⱹ': 'r',
	    'ʇ': 't',
	    'ʌ': 'v',
	    'ʍ': 'w',
	    'ʎ': 'y',
	    'ꜩ': 'tz',
	    'ú': 'u',
	    'ŭ': 'u',
	    'ǔ': 'u',
	    'û': 'u',
	    'ṷ': 'u',
	    'ü': 'u',
	    'ǘ': 'u',
	    'ǚ': 'u',
	    'ǜ': 'u',
	    'ǖ': 'u',
	    'ṳ': 'u',
	    'ụ': 'u',
	    'ű': 'u',
	    'ȕ': 'u',
	    'ù': 'u',
	    'ủ': 'u',
	    'ư': 'u',
	    'ứ': 'u',
	    'ự': 'u',
	    'ừ': 'u',
	    'ử': 'u',
	    'ữ': 'u',
	    'ȗ': 'u',
	    'ū': 'u',
	    'ṻ': 'u',
	    'ų': 'u',
	    'ᶙ': 'u',
	    'ů': 'u',
	    'ũ': 'u',
	    'ṹ': 'u',
	    'ṵ': 'u',
	    'ᵫ': 'ue',
	    'ꝸ': 'um',
	    'ⱴ': 'v',
	    'ꝟ': 'v',
	    'ṿ': 'v',
	    'ʋ': 'v',
	    'ᶌ': 'v',
	    'ⱱ': 'v',
	    'ṽ': 'v',
	    'ꝡ': 'vy',
	    'ẃ': 'w',
	    'ŵ': 'w',
	    'ẅ': 'w',
	    'ẇ': 'w',
	    'ẉ': 'w',
	    'ẁ': 'w',
	    'ⱳ': 'w',
	    'ẘ': 'w',
	    'ẍ': 'x',
	    'ẋ': 'x',
	    'ᶍ': 'x',
	    'ý': 'y',
	    'ŷ': 'y',
	    'ÿ': 'y',
	    'ẏ': 'y',
	    'ỵ': 'y',
	    'ỳ': 'y',
	    'ƴ': 'y',
	    'ỷ': 'y',
	    'ỿ': 'y',
	    'ȳ': 'y',
	    'ẙ': 'y',
	    'ɏ': 'y',
	    'ỹ': 'y',
	    'ź': 'z',
	    'ž': 'z',
	    'ẑ': 'z',
	    'ʑ': 'z',
	    'ⱬ': 'z',
	    'ż': 'z',
	    'ẓ': 'z',
	    'ȥ': 'z',
	    'ẕ': 'z',
	    'ᵶ': 'z',
	    'ᶎ': 'z',
	    'ʐ': 'z',
	    'ƶ': 'z',
	    'ɀ': 'z',
	    'ﬀ': 'ff',
	    'ﬃ': 'ffi',
	    'ﬄ': 'ffl',
	    'ﬁ': 'fi',
	    'ﬂ': 'fl',
	    'ĳ': 'ij',
	    'œ': 'oe',
	    'ﬆ': 'st',
	    'ₐ': 'a',
	    'ₑ': 'e',
	    'ᵢ': 'i',
	    'ⱼ': 'j',
	    'ₒ': 'o',
	    'ᵣ': 'r',
	    'ᵤ': 'u',
	    'ᵥ': 'v',
	    'ₓ': 'x'
	};


/***/ },
/* 438 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	function __export(m) {
	    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
	}
	var accordion_1 = __webpack_require__(315);
	var alert_1 = __webpack_require__(317);
	var buttons_1 = __webpack_require__(318);
	var carousel_1 = __webpack_require__(321);
	var collapse_1 = __webpack_require__(124);
	var datepicker_1 = __webpack_require__(324);
	var dropdown_1 = __webpack_require__(326);
	var pagination_1 = __webpack_require__(329);
	var progressbar_1 = __webpack_require__(331);
	var rating_1 = __webpack_require__(333);
	var tabs_1 = __webpack_require__(334);
	var timepicker_1 = __webpack_require__(336);
	var tooltip_1 = __webpack_require__(337);
	var typeahead_1 = __webpack_require__(340);
	__export(__webpack_require__(315));
	__export(__webpack_require__(317));
	__export(__webpack_require__(318));
	__export(__webpack_require__(321));
	__export(__webpack_require__(124));
	__export(__webpack_require__(324));
	__export(__webpack_require__(326));
	__export(__webpack_require__(329));
	__export(__webpack_require__(331));
	__export(__webpack_require__(333));
	__export(__webpack_require__(334));
	__export(__webpack_require__(336));
	__export(__webpack_require__(337));
	__export(__webpack_require__(340));
	__export(__webpack_require__(71));
	__export(__webpack_require__(323));
	__export(__webpack_require__(36));
	Object.defineProperty(exports, "__esModule", { value: true });
	exports.default = {
	    directives: [
	        alert_1.AlertComponent,
	        accordion_1.ACCORDION_DIRECTIVES,
	        buttons_1.BUTTON_DIRECTIVES,
	        carousel_1.CAROUSEL_DIRECTIVES,
	        collapse_1.CollapseDirective,
	        datepicker_1.DATEPICKER_DIRECTIVES,
	        dropdown_1.DROPDOWN_DIRECTIVES,
	        pagination_1.PAGINATION_DIRECTIVES,
	        progressbar_1.PROGRESSBAR_DIRECTIVES,
	        rating_1.RatingComponent,
	        tabs_1.TAB_DIRECTIVES,
	        timepicker_1.TimepickerComponent,
	        tooltip_1.TOOLTIP_DIRECTIVES,
	        typeahead_1.TYPEAHEAD_DIRECTIVES
	    ]
	};


/***/ },
/* 439 */
/***/ function(module, exports) {

	module.exports = "<span class=\"token comment\" spellcheck=\"true\">/*eslint-disable*/</span>\n<span class=\"token keyword\" >var</span> express <span class=\"token operator\" >=</span> <span class=\"token function\" >require</span><span class=\"token punctuation\" >(</span><span class=\"token string\" >'express'</span><span class=\"token punctuation\" >)</span><span class=\"token punctuation\" >;</span>\n<span class=\"token keyword\" >var</span> multer <span class=\"token operator\" >=</span> <span class=\"token function\" >require</span><span class=\"token punctuation\" >(</span><span class=\"token string\" >'multer'</span><span class=\"token punctuation\" >)</span><span class=\"token punctuation\" >;</span>\n<span class=\"token keyword\" >var</span> fs <span class=\"token operator\" >=</span> <span class=\"token function\" >require</span><span class=\"token punctuation\" >(</span><span class=\"token string\" >'fs'</span><span class=\"token punctuation\" >)</span><span class=\"token punctuation\" >;</span>\n<span class=\"token keyword\" >var</span> app <span class=\"token operator\" >=</span> <span class=\"token function\" >express</span><span class=\"token punctuation\" >(</span><span class=\"token punctuation\" >)</span><span class=\"token punctuation\" >;</span>\n\n<span class=\"token keyword\" >var</span> DIR <span class=\"token operator\" >=</span> <span class=\"token string\" >'./uploads/'</span><span class=\"token punctuation\" >;</span>\n\n<span class=\"token keyword\" >var</span> upload <span class=\"token operator\" >=</span> <span class=\"token function\" >multer</span><span class=\"token punctuation\" >(</span><span class=\"token punctuation\" >{</span>dest<span class=\"token punctuation\" >:</span> DIR<span class=\"token punctuation\" >}</span><span class=\"token punctuation\" >)</span><span class=\"token punctuation\" >;</span>\n\napp<span class=\"token punctuation\" >.</span><span class=\"token function\" >use</span><span class=\"token punctuation\" >(</span><span class=\"token keyword\" >function</span> <span class=\"token punctuation\" >(</span>req<span class=\"token punctuation\" >,</span> res<span class=\"token punctuation\" >,</span> next<span class=\"token punctuation\" >)</span> <span class=\"token punctuation\" >{</span>\n  res<span class=\"token punctuation\" >.</span><span class=\"token function\" >setHeader</span><span class=\"token punctuation\" >(</span><span class=\"token string\" >'Access-Control-Allow-Origin'</span><span class=\"token punctuation\" >,</span> <span class=\"token string\" >'http://valor-software.github.io'</span><span class=\"token punctuation\" >)</span><span class=\"token punctuation\" >;</span>\n  res<span class=\"token punctuation\" >.</span><span class=\"token function\" >setHeader</span><span class=\"token punctuation\" >(</span><span class=\"token string\" >'Access-Control-Allow-Methods'</span><span class=\"token punctuation\" >,</span> <span class=\"token string\" >'POST'</span><span class=\"token punctuation\" >)</span><span class=\"token punctuation\" >;</span>\n  res<span class=\"token punctuation\" >.</span><span class=\"token function\" >setHeader</span><span class=\"token punctuation\" >(</span><span class=\"token string\" >'Access-Control-Allow-Headers'</span><span class=\"token punctuation\" >,</span> <span class=\"token string\" >'X-Requested-With,content-type'</span><span class=\"token punctuation\" >)</span><span class=\"token punctuation\" >;</span>\n  res<span class=\"token punctuation\" >.</span><span class=\"token function\" >setHeader</span><span class=\"token punctuation\" >(</span><span class=\"token string\" >'Access-Control-Allow-Credentials'</span><span class=\"token punctuation\" >,</span> <span class=\"token boolean\" >true</span><span class=\"token punctuation\" >)</span><span class=\"token punctuation\" >;</span>\n  <span class=\"token function\" >next</span><span class=\"token punctuation\" >(</span><span class=\"token punctuation\" >)</span><span class=\"token punctuation\" >;</span>\n<span class=\"token punctuation\" >}</span><span class=\"token punctuation\" >)</span><span class=\"token punctuation\" >;</span>\n\napp<span class=\"token punctuation\" >.</span><span class=\"token function\" >use</span><span class=\"token punctuation\" >(</span><span class=\"token function\" >multer</span><span class=\"token punctuation\" >(</span><span class=\"token punctuation\" >{</span>\n  dest<span class=\"token punctuation\" >:</span> DIR<span class=\"token punctuation\" >,</span>\n  rename<span class=\"token punctuation\" >:</span> <span class=\"token keyword\" >function</span> <span class=\"token punctuation\" >(</span>fieldname<span class=\"token punctuation\" >,</span> filename<span class=\"token punctuation\" >)</span> <span class=\"token punctuation\" >{</span>\n    <span class=\"token keyword\" >return</span> filename <span class=\"token operator\" >+</span> Date<span class=\"token punctuation\" >.</span><span class=\"token function\" >now</span><span class=\"token punctuation\" >(</span><span class=\"token punctuation\" >)</span><span class=\"token punctuation\" >;</span>\n  <span class=\"token punctuation\" >}</span><span class=\"token punctuation\" >,</span>\n  onFileUploadStart<span class=\"token punctuation\" >:</span> <span class=\"token keyword\" >function</span> <span class=\"token punctuation\" >(</span>file<span class=\"token punctuation\" >)</span> <span class=\"token punctuation\" >{</span>\n    console<span class=\"token punctuation\" >.</span><span class=\"token function\" >log</span><span class=\"token punctuation\" >(</span>file<span class=\"token punctuation\" >.</span>originalname <span class=\"token operator\" >+</span> <span class=\"token string\" >' is starting ...'</span><span class=\"token punctuation\" >)</span><span class=\"token punctuation\" >;</span>\n  <span class=\"token punctuation\" >}</span><span class=\"token punctuation\" >,</span>\n  onFileUploadComplete<span class=\"token punctuation\" >:</span> <span class=\"token keyword\" >function</span> <span class=\"token punctuation\" >(</span>file<span class=\"token punctuation\" >)</span> <span class=\"token punctuation\" >{</span>\n    console<span class=\"token punctuation\" >.</span><span class=\"token function\" >log</span><span class=\"token punctuation\" >(</span>file<span class=\"token punctuation\" >.</span>fieldname <span class=\"token operator\" >+</span> <span class=\"token string\" >' uploaded to  '</span> <span class=\"token operator\" >+</span> file<span class=\"token punctuation\" >.</span>path<span class=\"token punctuation\" >)</span><span class=\"token punctuation\" >;</span>\n  <span class=\"token punctuation\" >}</span>\n<span class=\"token punctuation\" >}</span><span class=\"token punctuation\" >)</span><span class=\"token punctuation\" >)</span><span class=\"token punctuation\" >;</span>\n\napp<span class=\"token punctuation\" >.</span><span class=\"token keyword\" >get</span><span class=\"token punctuation\" >(</span><span class=\"token string\" >'/api'</span><span class=\"token punctuation\" >,</span> <span class=\"token keyword\" >function</span> <span class=\"token punctuation\" >(</span>req<span class=\"token punctuation\" >,</span> res<span class=\"token punctuation\" >)</span> <span class=\"token punctuation\" >{</span>\n  res<span class=\"token punctuation\" >.</span><span class=\"token function\" >end</span><span class=\"token punctuation\" >(</span><span class=\"token string\" >'file catcher example'</span><span class=\"token punctuation\" >)</span><span class=\"token punctuation\" >;</span>\n<span class=\"token punctuation\" >}</span><span class=\"token punctuation\" >)</span><span class=\"token punctuation\" >;</span>\n\napp<span class=\"token punctuation\" >.</span><span class=\"token function\" >post</span><span class=\"token punctuation\" >(</span><span class=\"token string\" >'/api'</span><span class=\"token punctuation\" >,</span> <span class=\"token keyword\" >function</span> <span class=\"token punctuation\" >(</span>req<span class=\"token punctuation\" >,</span> res<span class=\"token punctuation\" >)</span> <span class=\"token punctuation\" >{</span>\n  <span class=\"token function\" >upload</span><span class=\"token punctuation\" >(</span>req<span class=\"token punctuation\" >,</span> res<span class=\"token punctuation\" >,</span> <span class=\"token keyword\" >function</span> <span class=\"token punctuation\" >(</span>err<span class=\"token punctuation\" >)</span> <span class=\"token punctuation\" >{</span>\n    <span class=\"token keyword\" >if</span> <span class=\"token punctuation\" >(</span>err<span class=\"token punctuation\" >)</span> <span class=\"token punctuation\" >{</span>\n      <span class=\"token keyword\" >return</span> res<span class=\"token punctuation\" >.</span><span class=\"token function\" >end</span><span class=\"token punctuation\" >(</span>err<span class=\"token punctuation\" >.</span><span class=\"token function\" >toString</span><span class=\"token punctuation\" >(</span><span class=\"token punctuation\" >)</span><span class=\"token punctuation\" >)</span><span class=\"token punctuation\" >;</span>\n    <span class=\"token punctuation\" >}</span>\n\n    res<span class=\"token punctuation\" >.</span><span class=\"token function\" >end</span><span class=\"token punctuation\" >(</span><span class=\"token string\" >'File is uploaded'</span><span class=\"token punctuation\" >)</span><span class=\"token punctuation\" >;</span>\n  <span class=\"token punctuation\" >}</span><span class=\"token punctuation\" >)</span><span class=\"token punctuation\" >;</span>\n<span class=\"token punctuation\" >}</span><span class=\"token punctuation\" >)</span><span class=\"token punctuation\" >;</span>\n\n<span class=\"token keyword\" >var</span> PORT <span class=\"token operator\" >=</span> process<span class=\"token punctuation\" >.</span>env<span class=\"token punctuation\" >.</span>PORT <span class=\"token operator\" >||</span> <span class=\"token number\" >3000</span><span class=\"token punctuation\" >;</span>\n\napp<span class=\"token punctuation\" >.</span><span class=\"token function\" >listen</span><span class=\"token punctuation\" >(</span>PORT<span class=\"token punctuation\" >,</span> <span class=\"token keyword\" >function</span> <span class=\"token punctuation\" >(</span><span class=\"token punctuation\" >)</span> <span class=\"token punctuation\" >{</span>\n  console<span class=\"token punctuation\" >.</span><span class=\"token function\" >log</span><span class=\"token punctuation\" >(</span><span class=\"token string\" >'Working on port '</span> <span class=\"token operator\" >+</span> PORT<span class=\"token punctuation\" >)</span><span class=\"token punctuation\" >;</span>\n<span class=\"token punctuation\" >}</span><span class=\"token punctuation\" >)</span><span class=\"token punctuation\" >;</span>\n"

/***/ },
/* 440 */
/***/ function(module, exports) {

	module.exports = "<span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>style</span><span class=\"token punctuation\" >></span></span><span class=\"token style language-css\" >\n    <span class=\"token selector\" >.my-drop-zone</span> <span class=\"token punctuation\" >{</span> <span class=\"token property\" >border</span><span class=\"token punctuation\" >:</span> dotted 3px lightgray<span class=\"token punctuation\" >;</span> <span class=\"token punctuation\" >}</span>\n    <span class=\"token selector\" >.nv-file-over</span> <span class=\"token punctuation\" >{</span> <span class=\"token property\" >border</span><span class=\"token punctuation\" >:</span> dotted 3px red<span class=\"token punctuation\" >;</span> <span class=\"token punctuation\" >}</span> <span class=\"token comment\" spellcheck=\"true\">/* Default class applied to drop zones on over */</span>\n    <span class=\"token selector\" >.another-file-over-class</span> <span class=\"token punctuation\" >{</span> <span class=\"token property\" >border</span><span class=\"token punctuation\" >:</span> dotted 3px green<span class=\"token punctuation\" >;</span> <span class=\"token punctuation\" >}</span>\n\n    <span class=\"token selector\" >html, body</span> <span class=\"token punctuation\" >{</span> <span class=\"token property\" >height</span><span class=\"token punctuation\" >:</span> 100%<span class=\"token punctuation\" >;</span> <span class=\"token punctuation\" >}</span>\n</span><span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>style</span><span class=\"token punctuation\" >></span></span>\n\n<span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>div</span> <span class=\"token attr-name\" >class</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>container<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span>\n\n    <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>div</span> <span class=\"token attr-name\" >class</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>navbar navbar-default<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span>\n        <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>div</span> <span class=\"token attr-name\" >class</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>navbar-header<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span>\n            <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>a</span> <span class=\"token attr-name\" >class</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>navbar-brand<span class=\"token punctuation\" >\"</span></span> <span class=\"token attr-name\" >href</span><span class=\"token punctuation\" >></span></span>Angular2 File Upload<span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>a</span><span class=\"token punctuation\" >></span></span>\n        <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>div</span><span class=\"token punctuation\" >></span></span>\n    <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>div</span><span class=\"token punctuation\" >></span></span>\n\n    <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>div</span> <span class=\"token attr-name\" >class</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>row<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span>\n\n        <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>div</span> <span class=\"token attr-name\" >class</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>col-md-3<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span>\n\n            <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>h3</span><span class=\"token punctuation\" >></span></span>Select files<span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>h3</span><span class=\"token punctuation\" >></span></span>\n\n            <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>div</span> <span class=\"token attr-name\" >ng2FileDrop</span>\n                 <span class=\"token attr-name\" >[ngClass]</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>{<span class=\"token punctuation\" >'</span>nv-file-over<span class=\"token punctuation\" >'</span>: hasBaseDropZoneOver}<span class=\"token punctuation\" >\"</span></span>\n                 <span class=\"token attr-name\" >(fileOver)</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>fileOverBase($event)<span class=\"token punctuation\" >\"</span></span>\n                 <span class=\"token attr-name\" >[uploader]</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>uploader<span class=\"token punctuation\" >\"</span></span>\n                 <span class=\"token attr-name\" >class</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>well my-drop-zone<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span>\n                Base drop zone\n            <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>div</span><span class=\"token punctuation\" >></span></span>\n\n            <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>div</span> <span class=\"token attr-name\" >ng2FileDrop</span>\n                 <span class=\"token attr-name\" >[ngClass]</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>{<span class=\"token punctuation\" >'</span>another-file-over-class<span class=\"token punctuation\" >'</span>: hasAnotherDropZoneOver}<span class=\"token punctuation\" >\"</span></span>\n                 <span class=\"token attr-name\" >(fileOver)</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>fileOverAnother($event)<span class=\"token punctuation\" >\"</span></span>\n                 <span class=\"token attr-name\" >[uploader]</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>uploader<span class=\"token punctuation\" >\"</span></span>\n                 <span class=\"token attr-name\" >class</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>well my-drop-zone<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span>\n                Another drop zone\n            <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>div</span><span class=\"token punctuation\" >></span></span>\n\n            Multiple\n            <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>input</span> <span class=\"token attr-name\" >type</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>file<span class=\"token punctuation\" >\"</span></span> <span class=\"token attr-name\" >ng2FileSelect</span> <span class=\"token attr-name\" >[uploader]</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>uploader<span class=\"token punctuation\" >\"</span></span> <span class=\"token attr-name\" >multiple</span>  <span class=\"token punctuation\" >/></span></span><span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>br</span><span class=\"token punctuation\" >/></span></span>\n\n            Single\n            <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>input</span> <span class=\"token attr-name\" >type</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>file<span class=\"token punctuation\" >\"</span></span> <span class=\"token attr-name\" >ng2FileSelect</span> <span class=\"token attr-name\" >[uploader]</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>uploader<span class=\"token punctuation\" >\"</span></span> <span class=\"token punctuation\" >/></span></span>\n        <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>div</span><span class=\"token punctuation\" >></span></span>\n\n        <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>div</span> <span class=\"token attr-name\" >class</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>col-md-9<span class=\"token punctuation\" >\"</span></span><span class=\"token style-attr language-css\" ><span class=\"token attr-name\" > <span class=\"token attr-name\" >style</span></span><span class=\"token punctuation\" >=\"</span><span class=\"token attr-value\" ><span class=\"token property\" >margin-bottom</span><span class=\"token punctuation\" >:</span> 40px</span><span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span>\n\n            <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>h3</span><span class=\"token punctuation\" >></span></span>Upload queue<span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>h3</span><span class=\"token punctuation\" >></span></span>\n            <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>p</span><span class=\"token punctuation\" >></span></span>Queue length: {{ uploader?.queue?.length }}<span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>p</span><span class=\"token punctuation\" >></span></span>\n\n            <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>table</span> <span class=\"token attr-name\" >class</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>table<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span>\n                <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>thead</span><span class=\"token punctuation\" >></span></span>\n                <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>tr</span><span class=\"token punctuation\" >></span></span>\n                    <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>th</span> <span class=\"token attr-name\" >width</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>50%<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span>Name<span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>th</span><span class=\"token punctuation\" >></span></span>\n                    <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>th</span><span class=\"token punctuation\" >></span></span>Size<span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>th</span><span class=\"token punctuation\" >></span></span>\n                    <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>th</span><span class=\"token punctuation\" >></span></span>Progress<span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>th</span><span class=\"token punctuation\" >></span></span>\n                    <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>th</span><span class=\"token punctuation\" >></span></span>Status<span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>th</span><span class=\"token punctuation\" >></span></span>\n                    <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>th</span><span class=\"token punctuation\" >></span></span>Actions<span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>th</span><span class=\"token punctuation\" >></span></span>\n                <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>tr</span><span class=\"token punctuation\" >></span></span>\n                <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>thead</span><span class=\"token punctuation\" >></span></span>\n                <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>tbody</span><span class=\"token punctuation\" >></span></span>\n                <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>tr</span> <span class=\"token attr-name\" >*ngFor</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>let item of uploader.queue<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span>\n                    <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>td</span><span class=\"token punctuation\" >></span></span><span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>strong</span><span class=\"token punctuation\" >></span></span>{{ item?.file?.name }}<span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>strong</span><span class=\"token punctuation\" >></span></span><span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>td</span><span class=\"token punctuation\" >></span></span>\n                    <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>td</span> <span class=\"token attr-name\" >*ngIf</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>uploader.isHTML5<span class=\"token punctuation\" >\"</span></span> <span class=\"token attr-name\" >nowrap</span><span class=\"token punctuation\" >></span></span>{{ item?.file?.size/1024/1024 | number:'.2' }} MB<span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>td</span><span class=\"token punctuation\" >></span></span>\n                    <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>td</span> <span class=\"token attr-name\" >*ngIf</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>uploader.isHTML5<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span>\n                        <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>div</span> <span class=\"token attr-name\" >class</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>progress<span class=\"token punctuation\" >\"</span></span><span class=\"token style-attr language-css\" ><span class=\"token attr-name\" > <span class=\"token attr-name\" >style</span></span><span class=\"token punctuation\" >=\"</span><span class=\"token attr-value\" ><span class=\"token property\" >margin-bottom</span><span class=\"token punctuation\" >:</span> 0<span class=\"token punctuation\" >;</span></span><span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span>\n                            <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>div</span> <span class=\"token attr-name\" >class</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>progress-bar<span class=\"token punctuation\" >\"</span></span> <span class=\"token attr-name\" >role</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>progressbar<span class=\"token punctuation\" >\"</span></span> <span class=\"token attr-name\" >[ngStyle]</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>{ <span class=\"token punctuation\" >'</span>width<span class=\"token punctuation\" >'</span>: item.progress + <span class=\"token punctuation\" >'</span>%<span class=\"token punctuation\" >'</span> }<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span><span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>div</span><span class=\"token punctuation\" >></span></span>\n                        <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>div</span><span class=\"token punctuation\" >></span></span>\n                    <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>td</span><span class=\"token punctuation\" >></span></span>\n                    <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>td</span> <span class=\"token attr-name\" >class</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>text-center<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span>\n                        <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>span</span> <span class=\"token attr-name\" >*ngIf</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>item.isSuccess<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span><span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>i</span> <span class=\"token attr-name\" >class</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>glyphicon glyphicon-ok<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span><span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>i</span><span class=\"token punctuation\" >></span></span><span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>span</span><span class=\"token punctuation\" >></span></span>\n                        <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>span</span> <span class=\"token attr-name\" >*ngIf</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>item.isCancel<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span><span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>i</span> <span class=\"token attr-name\" >class</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>glyphicon glyphicon-ban-circle<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span><span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>i</span><span class=\"token punctuation\" >></span></span><span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>span</span><span class=\"token punctuation\" >></span></span>\n                        <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>span</span> <span class=\"token attr-name\" >*ngIf</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>item.isError<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span><span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>i</span> <span class=\"token attr-name\" >class</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>glyphicon glyphicon-remove<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span><span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>i</span><span class=\"token punctuation\" >></span></span><span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>span</span><span class=\"token punctuation\" >></span></span>\n                    <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>td</span><span class=\"token punctuation\" >></span></span>\n                    <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>td</span> <span class=\"token attr-name\" >nowrap</span><span class=\"token punctuation\" >></span></span>\n                        <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>button</span> <span class=\"token attr-name\" >type</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>button<span class=\"token punctuation\" >\"</span></span> <span class=\"token attr-name\" >class</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>btn btn-success btn-xs<span class=\"token punctuation\" >\"</span></span>\n                                <span class=\"token attr-name\" >(click)</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>item.upload()<span class=\"token punctuation\" >\"</span></span> <span class=\"token attr-name\" >[disabled]</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>item.isReady || item.isUploading || item.isSuccess<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span>\n                            <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>span</span> <span class=\"token attr-name\" >class</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>glyphicon glyphicon-upload<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span><span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>span</span><span class=\"token punctuation\" >></span></span> Upload\n                        <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>button</span><span class=\"token punctuation\" >></span></span>\n                        <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>button</span> <span class=\"token attr-name\" >type</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>button<span class=\"token punctuation\" >\"</span></span> <span class=\"token attr-name\" >class</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>btn btn-warning btn-xs<span class=\"token punctuation\" >\"</span></span>\n                                <span class=\"token attr-name\" >(click)</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>item.cancel()<span class=\"token punctuation\" >\"</span></span> <span class=\"token attr-name\" >[disabled]</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>!item.isUploading<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span>\n                            <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>span</span> <span class=\"token attr-name\" >class</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>glyphicon glyphicon-ban-circle<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span><span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>span</span><span class=\"token punctuation\" >></span></span> Cancel\n                        <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>button</span><span class=\"token punctuation\" >></span></span>\n                        <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>button</span> <span class=\"token attr-name\" >type</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>button<span class=\"token punctuation\" >\"</span></span> <span class=\"token attr-name\" >class</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>btn btn-danger btn-xs<span class=\"token punctuation\" >\"</span></span>\n                                <span class=\"token attr-name\" >(click)</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>item.remove()<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span>\n                            <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>span</span> <span class=\"token attr-name\" >class</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>glyphicon glyphicon-trash<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span><span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>span</span><span class=\"token punctuation\" >></span></span> Remove\n                        <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>button</span><span class=\"token punctuation\" >></span></span>\n                    <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>td</span><span class=\"token punctuation\" >></span></span>\n                <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>tr</span><span class=\"token punctuation\" >></span></span>\n                <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>tbody</span><span class=\"token punctuation\" >></span></span>\n            <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>table</span><span class=\"token punctuation\" >></span></span>\n\n            <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>div</span><span class=\"token punctuation\" >></span></span>\n                <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>div</span><span class=\"token punctuation\" >></span></span>\n                    Queue progress:\n                    <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>div</span> <span class=\"token attr-name\" >class</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>progress<span class=\"token punctuation\" >\"</span></span><span class=\"token style-attr language-css\" ><span class=\"token attr-name\" > <span class=\"token attr-name\" >style</span></span><span class=\"token punctuation\" >=\"</span><span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span>\n                        <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>div</span> <span class=\"token attr-name\" >class</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>progress-bar<span class=\"token punctuation\" >\"</span></span> <span class=\"token attr-name\" >role</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>progressbar<span class=\"token punctuation\" >\"</span></span> <span class=\"token attr-name\" >[ngStyle]</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>{ <span class=\"token punctuation\" >'</span>width<span class=\"token punctuation\" >'</span>: uploader.progress + <span class=\"token punctuation\" >'</span>%<span class=\"token punctuation\" >'</span> }<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span><span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>div</span><span class=\"token punctuation\" >></span></span>\n                    <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>div</span><span class=\"token punctuation\" >></span></span>\n                <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>div</span><span class=\"token punctuation\" >></span></span>\n                <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>button</span> <span class=\"token attr-name\" >type</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>button<span class=\"token punctuation\" >\"</span></span> <span class=\"token attr-name\" >class</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>btn btn-success btn-s<span class=\"token punctuation\" >\"</span></span>\n                        <span class=\"token attr-name\" >(click)</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>uploader.uploadAll()<span class=\"token punctuation\" >\"</span></span> <span class=\"token attr-name\" >[disabled]</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>!uploader.getNotUploadedItems().length<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span>\n                    <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>span</span> <span class=\"token attr-name\" >class</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>glyphicon glyphicon-upload<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span><span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>span</span><span class=\"token punctuation\" >></span></span> Upload all\n                <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>button</span><span class=\"token punctuation\" >></span></span>\n                <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>button</span> <span class=\"token attr-name\" >type</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>button<span class=\"token punctuation\" >\"</span></span> <span class=\"token attr-name\" >class</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>btn btn-warning btn-s<span class=\"token punctuation\" >\"</span></span>\n                        <span class=\"token attr-name\" >(click)</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>uploader.cancelAll()<span class=\"token punctuation\" >\"</span></span> <span class=\"token attr-name\" >[disabled]</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>!uploader.isUploading<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span>\n                    <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>span</span> <span class=\"token attr-name\" >class</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>glyphicon glyphicon-ban-circle<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span><span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>span</span><span class=\"token punctuation\" >></span></span> Cancel all\n                <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>button</span><span class=\"token punctuation\" >></span></span>\n                <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>button</span> <span class=\"token attr-name\" >type</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>button<span class=\"token punctuation\" >\"</span></span> <span class=\"token attr-name\" >class</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>btn btn-danger btn-s<span class=\"token punctuation\" >\"</span></span>\n                        <span class=\"token attr-name\" >(click)</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>uploader.clearQueue()<span class=\"token punctuation\" >\"</span></span> <span class=\"token attr-name\" >[disabled]</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>!uploader.queue.length<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span>\n                    <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;</span>span</span> <span class=\"token attr-name\" >class</span><span class=\"token attr-value\" ><span class=\"token punctuation\" >=</span><span class=\"token punctuation\" >\"</span>glyphicon glyphicon-trash<span class=\"token punctuation\" >\"</span></span><span class=\"token punctuation\" >></span></span><span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>span</span><span class=\"token punctuation\" >></span></span> Remove all\n                <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>button</span><span class=\"token punctuation\" >></span></span>\n            <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>div</span><span class=\"token punctuation\" >></span></span>\n\n        <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>div</span><span class=\"token punctuation\" >></span></span>\n\n    <span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>div</span><span class=\"token punctuation\" >></span></span>\n\n<span class=\"token tag\" ><span class=\"token tag\" ><span class=\"token punctuation\" >&lt;/</span>div</span><span class=\"token punctuation\" >></span></span>\n"

/***/ },
/* 441 */
/***/ function(module, exports) {

	module.exports = "<span class=\"token keyword\" >import</span> <span class=\"token punctuation\" >{</span>Component<span class=\"token punctuation\" >}</span> from <span class=\"token string\" >'@angular/core'</span><span class=\"token punctuation\" >;</span>\n<span class=\"token keyword\" >import</span> <span class=\"token punctuation\" >{</span>CORE_DIRECTIVES<span class=\"token punctuation\" >,</span> FORM_DIRECTIVES<span class=\"token punctuation\" >,</span> NgClass<span class=\"token punctuation\" >,</span> NgStyle<span class=\"token punctuation\" >}</span> from <span class=\"token string\" >'@angular/common'</span><span class=\"token punctuation\" >;</span>\n<span class=\"token keyword\" >import</span> <span class=\"token punctuation\" >{</span>FILE_UPLOAD_DIRECTIVES<span class=\"token punctuation\" >,</span> FileUploader<span class=\"token punctuation\" >}</span> from <span class=\"token string\" >'../../../ng2-file-upload'</span><span class=\"token punctuation\" >;</span>\n\n<span class=\"token comment\" spellcheck=\"true\">// webpack html imports</span>\n<span class=\"token keyword\" >let</span> template <span class=\"token operator\" >=</span> <span class=\"token function\" >require</span><span class=\"token punctuation\" >(</span><span class=\"token string\" >'./simple-demo.html'</span><span class=\"token punctuation\" >)</span><span class=\"token punctuation\" >;</span>\n\n<span class=\"token comment\" spellcheck=\"true\">// const URL = '/api/';</span>\n<span class=\"token keyword\" >const</span> URL <span class=\"token operator\" >=</span> <span class=\"token string\" >'https://evening-anchorage-3159.herokuapp.com/api/'</span><span class=\"token punctuation\" >;</span>\n\n@<span class=\"token function\" >Component</span><span class=\"token punctuation\" >(</span><span class=\"token punctuation\" >{</span>\n  selector<span class=\"token punctuation\" >:</span> <span class=\"token string\" >'simple-demo'</span><span class=\"token punctuation\" >,</span>\n  template<span class=\"token punctuation\" >:</span> template<span class=\"token punctuation\" >,</span>\n  directives<span class=\"token punctuation\" >:</span> <span class=\"token punctuation\" >[</span>FILE_UPLOAD_DIRECTIVES<span class=\"token punctuation\" >,</span> NgClass<span class=\"token punctuation\" >,</span> NgStyle<span class=\"token punctuation\" >,</span> CORE_DIRECTIVES<span class=\"token punctuation\" >,</span> FORM_DIRECTIVES<span class=\"token punctuation\" >]</span>\n<span class=\"token punctuation\" >}</span><span class=\"token punctuation\" >)</span>\n<span class=\"token keyword\" >export</span> <span class=\"token keyword\" >class</span> <span class=\"token class-name\" >SimpleDemoComponent</span> <span class=\"token punctuation\" >{</span>\n  <span class=\"token keyword\" >public</span> uploader<span class=\"token punctuation\" >:</span>FileUploader <span class=\"token operator\" >=</span> <span class=\"token keyword\" >new</span> <span class=\"token class-name\" >FileUploader</span><span class=\"token punctuation\" >(</span><span class=\"token punctuation\" >{</span>url<span class=\"token punctuation\" >:</span> URL<span class=\"token punctuation\" >}</span><span class=\"token punctuation\" >)</span><span class=\"token punctuation\" >;</span>\n  <span class=\"token keyword\" >public</span> hasBaseDropZoneOver<span class=\"token punctuation\" >:</span><span class=\"token keyword\" >boolean</span> <span class=\"token operator\" >=</span> <span class=\"token keyword\" >false</span><span class=\"token punctuation\" >;</span>\n  <span class=\"token keyword\" >public</span> hasAnotherDropZoneOver<span class=\"token punctuation\" >:</span><span class=\"token keyword\" >boolean</span> <span class=\"token operator\" >=</span> <span class=\"token keyword\" >false</span><span class=\"token punctuation\" >;</span>\n\n  <span class=\"token keyword\" >public</span> <span class=\"token function\" >fileOverBase</span><span class=\"token punctuation\" >(</span>e<span class=\"token punctuation\" >:</span><span class=\"token keyword\" >any</span><span class=\"token punctuation\" >)</span><span class=\"token punctuation\" >:</span><span class=\"token keyword\" >void</span> <span class=\"token punctuation\" >{</span>\n    <span class=\"token keyword\" >this</span><span class=\"token punctuation\" >.</span>hasBaseDropZoneOver <span class=\"token operator\" >=</span> e<span class=\"token punctuation\" >;</span>\n  <span class=\"token punctuation\" >}</span>\n\n  <span class=\"token keyword\" >public</span> <span class=\"token function\" >fileOverAnother</span><span class=\"token punctuation\" >(</span>e<span class=\"token punctuation\" >:</span><span class=\"token keyword\" >any</span><span class=\"token punctuation\" >)</span><span class=\"token punctuation\" >:</span><span class=\"token keyword\" >void</span> <span class=\"token punctuation\" >{</span>\n    <span class=\"token keyword\" >this</span><span class=\"token punctuation\" >.</span>hasAnotherDropZoneOver <span class=\"token operator\" >=</span> e<span class=\"token punctuation\" >;</span>\n  <span class=\"token punctuation\" >}</span>\n<span class=\"token punctuation\" >}</span>\n"

/***/ },
/* 442 */
/***/ function(module, exports) {

	module.exports = "<style>\n    .my-drop-zone { border: dotted 3px lightgray; }\n    .nv-file-over { border: dotted 3px red; } /* Default class applied to drop zones on over */\n    .another-file-over-class { border: dotted 3px green; }\n\n    html, body { height: 100%; }\n</style>\n\n<div class=\"container\">\n\n    <div class=\"navbar navbar-default\">\n        <div class=\"navbar-header\">\n            <a class=\"navbar-brand\" href>Angular2 File Upload</a>\n        </div>\n    </div>\n\n    <div class=\"row\">\n\n        <div class=\"col-md-3\">\n\n            <h3>Select files</h3>\n\n            <div ng2FileDrop\n                 [ngClass]=\"{'nv-file-over': hasBaseDropZoneOver}\"\n                 (fileOver)=\"fileOverBase($event)\"\n                 [uploader]=\"uploader\"\n                 class=\"well my-drop-zone\">\n                Base drop zone\n            </div>\n\n            <div ng2FileDrop\n                 [ngClass]=\"{'another-file-over-class': hasAnotherDropZoneOver}\"\n                 (fileOver)=\"fileOverAnother($event)\"\n                 [uploader]=\"uploader\"\n                 class=\"well my-drop-zone\">\n                Another drop zone\n            </div>\n\n            Multiple\n            <input type=\"file\" ng2FileSelect [uploader]=\"uploader\" multiple  /><br/>\n\n            Single\n            <input type=\"file\" ng2FileSelect [uploader]=\"uploader\" />\n        </div>\n\n        <div class=\"col-md-9\" style=\"margin-bottom: 40px\">\n\n            <h3>Upload queue</h3>\n            <p>Queue length: {{ uploader?.queue?.length }}</p>\n\n            <table class=\"table\">\n                <thead>\n                <tr>\n                    <th width=\"50%\">Name</th>\n                    <th>Size</th>\n                    <th>Progress</th>\n                    <th>Status</th>\n                    <th>Actions</th>\n                </tr>\n                </thead>\n                <tbody>\n                <tr *ngFor=\"let item of uploader.queue\">\n                    <td><strong>{{ item?.file?.name }}</strong></td>\n                    <td *ngIf=\"uploader.isHTML5\" nowrap>{{ item?.file?.size/1024/1024 | number:'.2' }} MB</td>\n                    <td *ngIf=\"uploader.isHTML5\">\n                        <div class=\"progress\" style=\"margin-bottom: 0;\">\n                            <div class=\"progress-bar\" role=\"progressbar\" [ngStyle]=\"{ 'width': item.progress + '%' }\"></div>\n                        </div>\n                    </td>\n                    <td class=\"text-center\">\n                        <span *ngIf=\"item.isSuccess\"><i class=\"glyphicon glyphicon-ok\"></i></span>\n                        <span *ngIf=\"item.isCancel\"><i class=\"glyphicon glyphicon-ban-circle\"></i></span>\n                        <span *ngIf=\"item.isError\"><i class=\"glyphicon glyphicon-remove\"></i></span>\n                    </td>\n                    <td nowrap>\n                        <button type=\"button\" class=\"btn btn-success btn-xs\"\n                                (click)=\"item.upload()\" [disabled]=\"item.isReady || item.isUploading || item.isSuccess\">\n                            <span class=\"glyphicon glyphicon-upload\"></span> Upload\n                        </button>\n                        <button type=\"button\" class=\"btn btn-warning btn-xs\"\n                                (click)=\"item.cancel()\" [disabled]=\"!item.isUploading\">\n                            <span class=\"glyphicon glyphicon-ban-circle\"></span> Cancel\n                        </button>\n                        <button type=\"button\" class=\"btn btn-danger btn-xs\"\n                                (click)=\"item.remove()\">\n                            <span class=\"glyphicon glyphicon-trash\"></span> Remove\n                        </button>\n                    </td>\n                </tr>\n                </tbody>\n            </table>\n\n            <div>\n                <div>\n                    Queue progress:\n                    <div class=\"progress\" style=\"\">\n                        <div class=\"progress-bar\" role=\"progressbar\" [ngStyle]=\"{ 'width': uploader.progress + '%' }\"></div>\n                    </div>\n                </div>\n                <button type=\"button\" class=\"btn btn-success btn-s\"\n                        (click)=\"uploader.uploadAll()\" [disabled]=\"!uploader.getNotUploadedItems().length\">\n                    <span class=\"glyphicon glyphicon-upload\"></span> Upload all\n                </button>\n                <button type=\"button\" class=\"btn btn-warning btn-s\"\n                        (click)=\"uploader.cancelAll()\" [disabled]=\"!uploader.isUploading\">\n                    <span class=\"glyphicon glyphicon-ban-circle\"></span> Cancel all\n                </button>\n                <button type=\"button\" class=\"btn btn-danger btn-s\"\n                        (click)=\"uploader.clearQueue()\" [disabled]=\"!uploader.queue.length\">\n                    <span class=\"glyphicon glyphicon-trash\"></span> Remove all\n                </button>\n            </div>\n\n        </div>\n\n    </div>\n\n</div>\n"

/***/ },
/* 443 */,
/* 444 */,
/* 445 */,
/* 446 */,
/* 447 */,
/* 448 */,
/* 449 */,
/* 450 */,
/* 451 */,
/* 452 */,
/* 453 */,
/* 454 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(6);
	var ng2_bootstrap_1 = __webpack_require__(438);
	var simple_demo_1 = __webpack_require__(455);
	var name = 'File Upload';
	var doc = __webpack_require__(425);
	var tabDesc = [
	    {
	        heading: 'Simple',
	        ts: __webpack_require__(441),
	        html: __webpack_require__(440),
	        js: __webpack_require__(439)
	    }
	];
	var tabsContent = "";
	tabDesc.forEach(function (desc) {
	    tabsContent += "\n          <tab heading=\"" + desc.heading + "\" (select)=\"select($event)\">\n          <div class=\"card card-block panel panel-default panel-body\">\n\n            <" + desc.heading.toLowerCase() + "-demo *ngIf=\"currentHeading === '" + desc.heading + "'\"></" + desc.heading.toLowerCase() + "-demo>\n\n            <br>\n\n            <div class=\"row\" style=\"margin: 0px;\">\n              <tabset>\n                <tab heading=\"Markup\">\n                  <div class=\"card card-block panel panel-default panel-body\">\n                    <pre class=\"language-html\"><code class=\"language-html\" ng-non-bindable>" + desc.html + "</code></pre>\n                  </div>\n                </tab>\n                <tab heading=\"TypeScript\">\n                  <div class=\"card card-block panel panel-default panel-body\">\n                    <pre class=\"language-typescript\"><code class=\"language-typescript\" ng-non-bindable>" + desc.ts + "</code></pre>\n                  </div>\n                </tab>\n                <tab heading=\"Backend Demo\">\n                  <div class=\"card card-block panel panel-default panel-body\">\n                    <pre class=\"language-javascript\"><code class=\"language-javascript\" ng-non-bindable>" + desc.js + "</code></pre>\n                  </div>\n                </tab>\n              </tabset>\n            </div>\n          </div>\n        </tab>\n  ";
	});
	var FileUploadSectionComponent = (function () {
	    function FileUploadSectionComponent() {
	        this.currentHeading = 'Simple';
	    }
	    FileUploadSectionComponent.prototype.select = function (e) {
	        if (e.heading) {
	            this.currentHeading = e.heading;
	        }
	    };
	    FileUploadSectionComponent = __decorate([
	        core_1.Component({
	            selector: 'file-upload-section',
	            template: "\n  <section id=\"" + name.toLowerCase() + "\">\n    <div class=\"row\">\n      <tabset>\n\n        " + tabsContent + "\n\n      </tabset>\n    </div>\n\n    <div class=\"row\">\n      <h2>API</h2>\n      <div class=\"card card-block panel panel-default panel-body\">" + doc + "</div>\n    </div>\n  </section>\n  ",
	            directives: [simple_demo_1.SimpleDemoComponent, ng2_bootstrap_1.TAB_DIRECTIVES, common_1.CORE_DIRECTIVES]
	        }), 
	        __metadata('design:paramtypes', [])
	    ], FileUploadSectionComponent);
	    return FileUploadSectionComponent;
	}());
	exports.FileUploadSectionComponent = FileUploadSectionComponent;


/***/ },
/* 455 */
/***/ function(module, exports, __webpack_require__) {

	"use strict";
	var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
	    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
	    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
	    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
	    return c > 3 && r && Object.defineProperty(target, key, r), r;
	};
	var __metadata = (this && this.__metadata) || function (k, v) {
	    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
	};
	var core_1 = __webpack_require__(1);
	var common_1 = __webpack_require__(6);
	var ng2_file_upload_1 = __webpack_require__(140);
	var template = __webpack_require__(442);
	var URL = 'https://evening-anchorage-3159.herokuapp.com/api/';
	var SimpleDemoComponent = (function () {
	    function SimpleDemoComponent() {
	        this.uploader = new ng2_file_upload_1.FileUploader({ url: URL });
	        this.hasBaseDropZoneOver = false;
	        this.hasAnotherDropZoneOver = false;
	    }
	    SimpleDemoComponent.prototype.fileOverBase = function (e) {
	        this.hasBaseDropZoneOver = e;
	    };
	    SimpleDemoComponent.prototype.fileOverAnother = function (e) {
	        this.hasAnotherDropZoneOver = e;
	    };
	    SimpleDemoComponent = __decorate([
	        core_1.Component({
	            selector: 'simple-demo',
	            template: template,
	            directives: [ng2_file_upload_1.FILE_UPLOAD_DIRECTIVES, common_1.NgClass, common_1.NgStyle, common_1.CORE_DIRECTIVES, common_1.FORM_DIRECTIVES]
	        }), 
	        __metadata('design:paramtypes', [])
	    ], SimpleDemoComponent);
	    return SimpleDemoComponent;
	}());
	exports.SimpleDemoComponent = SimpleDemoComponent;


/***/ }
]);
//# sourceMappingURL=angular2-bootstrap-demo.js.map