{"version":3,"sources":["node_modules/moment/moment.js","node_modules/@ng-select/ng-select/fesm2022/ng-select-ng-select.mjs","node_modules/@swimlane/ngx-datatable/fesm2020/swimlane-ngx-datatable.mjs","node_modules/dayjs/esm/constant.js","node_modules/dayjs/esm/locale/en.js","node_modules/dayjs/esm/utils.js","node_modules/dayjs/esm/index.js","node_modules/dayjs/esm/plugin/localizedFormat/utils.js","node_modules/dayjs/esm/plugin/localeData/index.js","node_modules/dayjs/esm/plugin/localizedFormat/index.js","node_modules/dayjs/esm/plugin/isoWeek/index.js","node_modules/dayjs/esm/plugin/weekOfYear/index.js","node_modules/dayjs/esm/plugin/customParseFormat/index.js","node_modules/dayjs/esm/plugin/utc/index.js","node_modules/ngx-daterangepicker-material/fesm2020/ngx-daterangepicker-material.mjs","src/app/core/shared/shared-routing.module.ts","src/app/core/shared/calendar-picker/calendar-picker.component.ts","src/app/core/shared/calendar-picker/calendar-picker.component.html","src/app/app-menu/app-menu.service.ts","src/app/core/shared/shared.module.ts","node_modules/ng-select2/fesm2020/ng-select2.mjs"],"sourcesContent":["//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.moment = factory();\n})(this, function () {\n 'use strict';\n\n var hookCallback;\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n function isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n }\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n }\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n function isUndefined(input) {\n return input === void 0;\n }\n function isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n }\n function isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n }\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n return a;\n }\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false\n };\n }\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n return false;\n };\n }\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid = !isNaN(m._d.getTime()) && flags.overflow < 0 && !flags.empty && !flags.invalidEra && !flags.invalidMonth && !flags.invalidWeekday && !flags.weekdayMismatch && !flags.nullInput && !flags.invalidFormat && !flags.userInvalidated && (!flags.meridiem || flags.meridiem && parsedParts);\n if (m._strict) {\n isNowValid = isNowValid && flags.charsLeftOver === 0 && flags.unusedTokens.length === 0 && flags.bigHour === undefined;\n }\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = hooks.momentProperties = [],\n updateInProgress = false;\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n function isMoment(obj) {\n return obj instanceof Moment || obj != null && obj._isAMomentObject != null;\n }\n function warn(msg) {\n if (hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n function deprecate(msg, fn) {\n var firstTime = true;\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + new Error().stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n var deprecations = {};\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n function isFunction(input) {\n return typeof Function !== 'undefined' && input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + '|' + /\\d{1,2}/.source);\n }\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) && !hasOwnProp(childConfig, prop) && isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n var keys;\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n };\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? forceSign ? '+' : '' : '-') + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n }\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n }\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n return formatFunctions[format](m);\n }\n function expandFormat(format, locale) {\n var i = 5;\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n return format;\n }\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A'\n };\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n if (format || !formatUpper) {\n return format;\n }\n this._longDateFormat[key] = formatUpper.match(formattingTokens).map(function (tok) {\n if (tok === 'MMMM' || tok === 'MM' || tok === 'DD' || tok === 'dddd') {\n return tok.slice(1);\n }\n return tok;\n }).join('');\n return this._longDateFormat[key];\n }\n var defaultInvalidDate = 'Invalid date';\n function invalidDate() {\n return this._invalidDate;\n }\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n };\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output) ? output(number, withoutSuffix, string, isFuture) : output.replace(/%d/i, number);\n }\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n var aliases = {};\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n function normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n }\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n return normalizedInput;\n }\n var priorities = {};\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({\n unit: u,\n priority: priorities[u]\n });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n function isLeapYear(year) {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n }\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n return value;\n }\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n function get(mom, unit) {\n return mom.isValid() ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n }\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n var match1 = /\\d/,\n // 0 - 9\n match2 = /\\d\\d/,\n // 00 - 99\n match3 = /\\d{3}/,\n // 000 - 999\n match4 = /\\d{4}/,\n // 0000 - 9999\n match6 = /[+-]?\\d{6}/,\n // -999999 - 999999\n match1to2 = /\\d\\d?/,\n // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/,\n // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/,\n // 99999 - 999999\n match1to3 = /\\d{1,3}/,\n // 0 - 999\n match1to4 = /\\d{1,4}/,\n // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/,\n // -999999 - 999999\n matchUnsigned = /\\d+/,\n // 0 - inf\n matchSigned = /[+-]?\\d+/,\n // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi,\n // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi,\n // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/,\n // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n regexes = {};\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n }\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n var tokens = {};\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n function mod(n, x) {\n return (n % x + x) % x;\n }\n var indexOf;\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1 ? isLeapYear(year) ? 29 : 28 : 31 - modMonth % 7 % 2;\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months) ? this._months : this._months['standalone'];\n }\n return isArray(this._months) ? this._months[m.month()] : this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n }\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] : this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n }\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ? this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n }\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ? this._monthsStrictRegex : this._monthsRegex;\n }\n }\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n return date;\n }\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var\n // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n }\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n return {\n week: resWeek,\n year: resYear\n };\n }\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n var defaultLocaleWeek = {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n };\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n return null;\n }\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays) ? this._weekdays : this._weekdays[m && m !== true && this._weekdays.isFormat.test(format) ? 'format' : 'standalone'];\n return m === true ? shiftWeekdays(weekdays, this._week.dow) : m ? weekdays[m.day()] : weekdays;\n }\n function localeWeekdaysShort(m) {\n return m === true ? shiftWeekdays(this._weekdaysShort, this._week.dow) : m ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n }\n function localeWeekdaysMin(m) {\n return m === true ? shiftWeekdays(this._weekdaysMin, this._week.dow) : m ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n }\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ? this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n function kFormat() {\n return this.hours() || 24;\n }\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n addFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);\n });\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n addFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);\n });\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n }\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n week: defaultLocaleWeek,\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n meridiemParse: defaultLocaleMeridiemParse\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && commonPrefix(split, next) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n }\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (locales[name] === undefined && typeof module !== 'undefined' && module && module.exports && isLocaleNameSane(name)) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn('Locale ' + key + ' not found. Did you forget to load it?');\n }\n }\n }\n return globalLocale._abbr;\n }\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n 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 ' + 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n if (!key) {\n return globalLocale;\n }\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n return chooseLocale(key);\n }\n function listLocales() {\n return keys(locales);\n }\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n if (a && getParsingFlags(m).overflow === -2) {\n 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;\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n getParsingFlags(m).overflow = overflow;\n }\n return m;\n }\n\n // iso 8601 regex\n // 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)\n 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)?)?$/,\n 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)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n 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}/], ['GGGG[W]WWE', /\\d{4}W\\d{3}/], ['GGGG[W]WW', /\\d{4}W\\d{2}/, false], ['YYYYDDD', /\\d{7}/], ['YYYYMM', /\\d{6}/, false], ['YYYY', /\\d{4}/, false]],\n // iso time formats and regexes\n 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/]],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n var result = [untruncateYear(yearStr), defaultLocaleMonthsShort.indexOf(monthStr), parseInt(dayStr, 10), parseInt(hourStr, 10), parseInt(minuteStr, 10)];\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n return result;\n }\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s.replace(/\\([^()]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n }\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n hooks.createFromInputFallback = deprecate('value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.', function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n });\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n if (config._d) {\n return;\n }\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = config._a[i] == null ? i === 2 ? 1 : 0 : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 && config._a[MINUTE] === 0 && config._a[SECOND] === 0 && config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n curWeek = weekOfYear(createLocal(), dow, doy);\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 && getParsingFlags(config).bigHour === true && config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n configFromArray(config);\n checkOverflow(config);\n }\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n getParsingFlags(tempConfig).score = currentScore;\n if (!bestFormatIsValid) {\n if (scoreToBeat == null || currentScore < scoreToBeat || validFormatFound) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n extend(config, bestMoment || tempConfig);\n }\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map([i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n configFromArray(config);\n }\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n return res;\n }\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n config._locale = config._locale || getLocale(config._l);\n if (input === null || format === undefined && input === '') {\n return createInvalid({\n nullInput: true\n });\n }\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n if (!isValid(config)) {\n config._d = null;\n }\n return config;\n }\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n if (isObject(input) && isObjectEmpty(input) || isArray(input) && input.length === 0) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n return createFromConfig(c);\n }\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n var prototypeMin = deprecate('moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }),\n prototypeMax = deprecate('moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n });\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n return pickBy('isBefore', args);\n }\n function max() {\n var args = [].slice.call(arguments, 0);\n return pickBy('isAfter', args);\n }\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (hasOwnProp(m, key) && !(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\n }\n }\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n return true;\n }\n function isValid$1() {\n return this._isValid;\n }\n function createInvalid$1() {\n return createDuration(NaN);\n }\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds + seconds * 1e3 +\n // 1000\n minutes * 6e4 +\n // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n this._data = {};\n this._locale = getLocale();\n this._bubble();\n }\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (dontConvert && array1[i] !== array2[i] || !dontConvert && toInt(array1[i]) !== toInt(array2[i])) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~offset % 60, 2);\n });\n }\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n if (matches === null) {\n return null;\n }\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n this.utcOffset(input, keepLocalTime);\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n return (this.utcOffset() - input) % 60 === 0;\n }\n function isDaylightSavingTime() {\n return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset();\n }\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n var c = {},\n other;\n copyConfig(c, this);\n c = prepareConfig(c);\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n return this._isDSTShifted;\n }\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if (match = aspNetRegex.exec(input)) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (match = isoRegex.exec(input)) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign)\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n ret = new Duration(duration);\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n return ret;\n }\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n function positiveMomentsDifference(base, other) {\n var res = {};\n res.months = other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n return res;\n }\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {\n milliseconds: 0,\n months: 0\n };\n }\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val;\n val = period;\n period = tmp;\n }\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n if (!mom.isValid()) {\n // No op\n return;\n }\n updateOffset = updateOffset == null ? true : updateOffset;\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return isMoment(input) || isDate(input) || isString(input) || isNumber(input) || isNumberOrStringArray(input) || isMomentInputObject(input) || input === null || input === undefined;\n }\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = ['years', 'year', 'y', 'months', 'month', 'M', 'days', 'day', 'd', 'dates', 'date', 'D', 'hours', 'hour', 'h', 'minutes', 'minute', 'm', 'seconds', 'second', 's', 'milliseconds', 'millisecond', 'ms'],\n i,\n property,\n propertyLen = properties.length;\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n return objectTest && propertyTest;\n }\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest = input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = ['sameDay', 'nextDay', 'lastDay', 'nextWeek', 'lastWeek', 'sameElse'],\n i,\n property;\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n return objectTest && propertyTest;\n }\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' : diff < -1 ? 'lastWeek' : diff < 0 ? 'lastDay' : diff < 1 ? 'sameDay' : diff < 2 ? 'nextDay' : diff < 7 ? 'nextWeek' : 'sameElse';\n }\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n }\n function clone() {\n return new Moment(this);\n }\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) && (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));\n }\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n }\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n if (!this.isValid()) {\n return NaN;\n }\n that = cloneWithOffset(input, this);\n if (!that.isValid()) {\n return NaN;\n }\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n units = normalizeUnits(units);\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break;\n // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break;\n // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break;\n // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break;\n // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break;\n // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n return asFloat ? output : absFloor(output);\n }\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n return this.format(prefix + year + datetime + suffix);\n }\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n function from(time, withoutSuffix) {\n if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {\n return createDuration({\n to: this,\n from: time\n }).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n function to(time, withoutSuffix) {\n if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {\n return createDuration({\n from: this,\n to: time\n }).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n var lang = deprecate('moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n });\n function localeData() {\n return this._locale;\n }\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return (dividend % divisor + divisor) % divisor;\n }\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3, 1);\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday());\n break;\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR);\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;\n break;\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n function toDate() {\n return new Date(this.valueOf());\n }\n function toArray() {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n }\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n }\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n function isValid$2() {\n return isValid(this);\n }\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n }\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n });\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n return '';\n }\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n return '';\n }\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n return '';\n }\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n if (eras[i].since <= val && val <= eras[i].until || eras[i].until <= val && val <= eras[i].since) {\n return (this.year() - hooks(eras[i].since).year()) * dir + eras[i].offset;\n }\n }\n return this.year();\n }\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp('^(' + narrowPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n });\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(this, input, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy);\n }\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(this, input, this.isoWeek(), this.isoWeekday(), 1, 4);\n }\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ? locale._dayOfMonthOrdinalParse || locale._ordinalParse : locale._dayOfMonthOrdinalParseLenient;\n });\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n var proto = Moment.prototype;\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n function preParsePostFormat(string) {\n return string;\n }\n var proto$1 = Locale.prototype;\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n format = format || '';\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n format = format || '';\n }\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n getSetGlobalLocale('en', {\n eras: [{\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD'\n }, {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC'\n }],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output = toInt(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n }\n });\n\n // Side effect imports\n\n hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n var mathAbs = Math.abs;\n function abs() {\n var data = this._data;\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n return this;\n }\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!(milliseconds >= 0 && days >= 0 && months >= 0 || milliseconds <= 0 && days <= 0 && months <= 0)) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n data.days = days;\n data.months = months;\n data.years = years;\n return this;\n }\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n }\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n }\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n units = normalizeUnits(units);\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return this._milliseconds + this._days * 864e5 + this._months % 12 * 2592e6 + toInt(this._months / 12) * 31536e6;\n }\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n function clone$1() {\n return createDuration(this);\n }\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n function weeks() {\n return absFloor(this.days() / 7);\n }\n var round = Math.round,\n thresholds = {\n ss: 44,\n // a few seconds to seconds\n s: 45,\n // seconds to minute\n m: 45,\n // minutes to hour\n h: 22,\n // hours to day\n d: 26,\n // days to month/week\n w: null,\n // weeks to month\n M: 11 // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a = seconds <= thresholds.ss && ['s', seconds] || seconds < thresholds.s && ['ss', 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];\n if (thresholds.w != null) {\n a = a || weeks <= 1 && ['w'] || weeks < thresholds.w && ['ww', weeks];\n }\n a = a || months <= 1 && ['M'] || months < thresholds.M && ['MM', months] || years <= 1 && ['y'] || ['yy', years];\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n return locale.postformat(output);\n }\n var abs$1 = Math.abs;\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n return totalSign + 'P' + (years ? ymSign + years + 'Y' : '') + (months ? ymSign + months + 'M' : '') + (days ? daysSign + days + 'D' : '') + (hours || minutes || seconds ? 'T' : '') + (hours ? hmsSign + hours + 'H' : '') + (minutes ? hmsSign + minutes + 'M' : '') + (seconds ? hmsSign + s + 'S' : '');\n }\n var proto$2 = Duration.prototype;\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.4';\n setHookCallback(createLocal);\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm',\n // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss',\n // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS',\n // \n DATE: 'YYYY-MM-DD',\n // \n TIME: 'HH:mm',\n // \n TIME_SECONDS: 'HH:mm:ss',\n // \n TIME_MS: 'HH:mm:ss.SSS',\n // \n WEEK: 'GGGG-[W]WW',\n // \n MONTH: 'YYYY-MM' // \n };\n return hooks;\n});","import * as i0 from '@angular/core';\nimport { Directive, Input, Injectable, EventEmitter, booleanAttribute, ElementRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Optional, Inject, Output, ViewChild, InjectionToken, numberAttribute, forwardRef, TemplateRef, Attribute, HostBinding, ContentChild, ContentChildren, HostListener, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { takeUntil, auditTime, startWith, tap, debounceTime, filter, map } from 'rxjs/operators';\nimport { animationFrameScheduler, asapScheduler, Subject, fromEvent, merge } from 'rxjs';\nimport { DOCUMENT, NgTemplateOutlet, NgClass } from '@angular/common';\nconst _c0 = [\"content\"];\nconst _c1 = [\"scroll\"];\nconst _c2 = [\"padding\"];\nconst _c3 = [\"*\"];\nconst _c4 = a0 => ({\n searchTerm: a0\n});\nfunction NgDropdownPanelComponent_Conditional_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 3);\n i0.ɵɵelementContainer(1, 6);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.headerTemplate)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(2, _c4, ctx_r0.filterValue));\n }\n}\nfunction NgDropdownPanelComponent_Conditional_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 5);\n i0.ɵɵelementContainer(1, 6);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.footerTemplate)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(2, _c4, ctx_r0.filterValue));\n }\n}\nconst _c5 = [\"searchInput\"];\nconst _c6 = [\"clearButton\"];\nconst _c7 = (a0, a1, a2) => ({\n item: a0,\n clear: a1,\n label: a2\n});\nconst _c8 = (a0, a1) => ({\n items: a0,\n clear: a1\n});\nconst _c9 = (a0, a1, a2, a3) => ({\n item: a0,\n item$: a1,\n index: a2,\n searchTerm: a3\n});\nfunction NgSelectComponent_Conditional_2_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 20);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.placeholder);\n }\n}\nfunction NgSelectComponent_Conditional_2_ng_template_2_Template(rf, ctx) {}\nfunction NgSelectComponent_Conditional_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NgSelectComponent_Conditional_2_ng_template_0_Template, 2, 1, \"ng-template\", null, 1, i0.ɵɵtemplateRefExtractor)(2, NgSelectComponent_Conditional_2_ng_template_2_Template, 0, 0, \"ng-template\", 19);\n }\n if (rf & 2) {\n const defaultPlaceholderTemplate_r3 = i0.ɵɵreference(1);\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.placeholderTemplate || defaultPlaceholderTemplate_r3);\n }\n}\nfunction NgSelectComponent_Conditional_3_For_1_ng_template_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r4 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"span\", 23);\n i0.ɵɵlistener(\"click\", function NgSelectComponent_Conditional_3_For_1_ng_template_1_Template_span_click_0_listener() {\n i0.ɵɵrestoreView(_r4);\n const item_r5 = i0.ɵɵnextContext().$implicit;\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.unselect(item_r5));\n });\n i0.ɵɵtext(1, \"\\xD7\");\n i0.ɵɵelementEnd();\n i0.ɵɵelement(2, \"span\", 24);\n }\n if (rf & 2) {\n const item_r5 = i0.ɵɵnextContext().$implicit;\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngItemLabel\", item_r5.label)(\"escape\", ctx_r1.escapeHTML);\n }\n}\nfunction NgSelectComponent_Conditional_3_For_1_ng_template_3_Template(rf, ctx) {}\nfunction NgSelectComponent_Conditional_3_For_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 22);\n i0.ɵɵtemplate(1, NgSelectComponent_Conditional_3_For_1_ng_template_1_Template, 3, 2, \"ng-template\", null, 2, i0.ɵɵtemplateRefExtractor)(3, NgSelectComponent_Conditional_3_For_1_ng_template_3_Template, 0, 0, \"ng-template\", 12);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const item_r5 = ctx.$implicit;\n const defaultLabelTemplate_r6 = i0.ɵɵreference(2);\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵclassProp(\"ng-value-disabled\", item_r5.disabled);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.labelTemplate || defaultLabelTemplate_r6)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction3(4, _c7, item_r5.value, ctx_r1.clearItem, item_r5.label));\n }\n}\nfunction NgSelectComponent_Conditional_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵrepeaterCreate(0, NgSelectComponent_Conditional_3_For_1_Template, 4, 8, \"div\", 21, i0.ɵɵcomponentInstance().trackByOption, true);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵrepeater(ctx_r1.selectedItems);\n }\n}\nfunction NgSelectComponent_Conditional_4_ng_template_0_Template(rf, ctx) {}\nfunction NgSelectComponent_Conditional_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NgSelectComponent_Conditional_4_ng_template_0_Template, 0, 0, \"ng-template\", 12);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.multiLabelTemplate)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction2(2, _c8, ctx_r1.selectedValues, ctx_r1.clearItem));\n }\n}\nfunction NgSelectComponent_Conditional_8_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 25);\n }\n}\nfunction NgSelectComponent_Conditional_8_ng_template_2_Template(rf, ctx) {}\nfunction NgSelectComponent_Conditional_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NgSelectComponent_Conditional_8_ng_template_0_Template, 1, 0, \"ng-template\", null, 3, i0.ɵɵtemplateRefExtractor)(2, NgSelectComponent_Conditional_8_ng_template_2_Template, 0, 0, \"ng-template\", 19);\n }\n if (rf & 2) {\n const defaultLoadingSpinnerTemplate_r8 = i0.ɵɵreference(1);\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.loadingSpinnerTemplate || defaultLoadingSpinnerTemplate_r8);\n }\n}\nfunction NgSelectComponent_Conditional_9_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 15, 4)(2, \"span\", 26);\n i0.ɵɵtext(3, \"\\xD7\");\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵpropertyInterpolate(\"title\", ctx_r1.clearAllText);\n }\n}\nfunction NgSelectComponent_Conditional_12_For_3_ng_template_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 31);\n }\n if (rf & 2) {\n const item_r11 = i0.ɵɵnextContext().$implicit;\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngItemLabel\", item_r11.label)(\"escape\", ctx_r1.escapeHTML);\n }\n}\nfunction NgSelectComponent_Conditional_12_For_3_ng_template_3_Template(rf, ctx) {}\nfunction NgSelectComponent_Conditional_12_For_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r10 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 30);\n i0.ɵɵlistener(\"click\", function NgSelectComponent_Conditional_12_For_3_Template_div_click_0_listener() {\n const item_r11 = i0.ɵɵrestoreView(_r10).$implicit;\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.toggleItem(item_r11));\n })(\"mouseover\", function NgSelectComponent_Conditional_12_For_3_Template_div_mouseover_0_listener() {\n const item_r11 = i0.ɵɵrestoreView(_r10).$implicit;\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.onItemHover(item_r11));\n });\n i0.ɵɵtemplate(1, NgSelectComponent_Conditional_12_For_3_ng_template_1_Template, 1, 2, \"ng-template\", null, 5, i0.ɵɵtemplateRefExtractor)(3, NgSelectComponent_Conditional_12_For_3_ng_template_3_Template, 0, 0, \"ng-template\", 12);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const item_r11 = ctx.$implicit;\n const defaultOptionTemplate_r12 = i0.ɵɵreference(2);\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵclassProp(\"ng-option-disabled\", item_r11.disabled)(\"ng-option-selected\", item_r11.selected)(\"ng-optgroup\", item_r11.children)(\"ng-option\", !item_r11.children)(\"ng-option-child\", !!item_r11.parent)(\"ng-option-marked\", item_r11 === ctx_r1.itemsList.markedItem);\n i0.ɵɵattribute(\"role\", item_r11.children ? \"group\" : \"option\")(\"aria-selected\", item_r11.selected)(\"id\", item_r11 == null ? null : item_r11.htmlId);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngTemplateOutlet\", item_r11.children ? ctx_r1.optgroupTemplate || defaultOptionTemplate_r12 : ctx_r1.optionTemplate || defaultOptionTemplate_r12)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction4(17, _c9, item_r11.value, item_r11, item_r11.index, ctx_r1.searchTerm));\n }\n}\nfunction NgSelectComponent_Conditional_12_Conditional_4_ng_template_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\")(1, \"span\", 33);\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd();\n i0.ɵɵtext(3);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(ctx_r1.addTagText);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\"\\\"\", ctx_r1.searchTerm, \"\\\"\");\n }\n}\nfunction NgSelectComponent_Conditional_12_Conditional_4_ng_template_3_Template(rf, ctx) {}\nfunction NgSelectComponent_Conditional_12_Conditional_4_Template(rf, ctx) {\n if (rf & 1) {\n const _r13 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 32);\n i0.ɵɵlistener(\"mouseover\", function NgSelectComponent_Conditional_12_Conditional_4_Template_div_mouseover_0_listener() {\n i0.ɵɵrestoreView(_r13);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.itemsList.unmarkItem());\n })(\"click\", function NgSelectComponent_Conditional_12_Conditional_4_Template_div_click_0_listener() {\n i0.ɵɵrestoreView(_r13);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.selectTag());\n });\n i0.ɵɵtemplate(1, NgSelectComponent_Conditional_12_Conditional_4_ng_template_1_Template, 4, 2, \"ng-template\", null, 6, i0.ɵɵtemplateRefExtractor)(3, NgSelectComponent_Conditional_12_Conditional_4_ng_template_3_Template, 0, 0, \"ng-template\", 12);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const defaultTagTemplate_r14 = i0.ɵɵreference(2);\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵclassProp(\"ng-option-marked\", !ctx_r1.itemsList.markedItem);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.tagTemplate || defaultTagTemplate_r14)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(4, _c4, ctx_r1.searchTerm));\n }\n}\nfunction NgSelectComponent_Conditional_12_Conditional_5_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 34);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.notFoundText);\n }\n}\nfunction NgSelectComponent_Conditional_12_Conditional_5_ng_template_2_Template(rf, ctx) {}\nfunction NgSelectComponent_Conditional_12_Conditional_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NgSelectComponent_Conditional_12_Conditional_5_ng_template_0_Template, 2, 1, \"ng-template\", null, 7, i0.ɵɵtemplateRefExtractor)(2, NgSelectComponent_Conditional_12_Conditional_5_ng_template_2_Template, 0, 0, \"ng-template\", 12);\n }\n if (rf & 2) {\n const defaultNotFoundTemplate_r15 = i0.ɵɵreference(1);\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.notFoundTemplate || defaultNotFoundTemplate_r15)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(2, _c4, ctx_r1.searchTerm));\n }\n}\nfunction NgSelectComponent_Conditional_12_Conditional_6_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 34);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.typeToSearchText);\n }\n}\nfunction NgSelectComponent_Conditional_12_Conditional_6_ng_template_2_Template(rf, ctx) {}\nfunction NgSelectComponent_Conditional_12_Conditional_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NgSelectComponent_Conditional_12_Conditional_6_ng_template_0_Template, 2, 1, \"ng-template\", null, 8, i0.ɵɵtemplateRefExtractor)(2, NgSelectComponent_Conditional_12_Conditional_6_ng_template_2_Template, 0, 0, \"ng-template\", 19);\n }\n if (rf & 2) {\n const defaultTypeToSearchTemplate_r16 = i0.ɵɵreference(1);\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.typeToSearchTemplate || defaultTypeToSearchTemplate_r16);\n }\n}\nfunction NgSelectComponent_Conditional_12_Conditional_7_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 34);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.loadingText);\n }\n}\nfunction NgSelectComponent_Conditional_12_Conditional_7_ng_template_2_Template(rf, ctx) {}\nfunction NgSelectComponent_Conditional_12_Conditional_7_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NgSelectComponent_Conditional_12_Conditional_7_ng_template_0_Template, 2, 1, \"ng-template\", null, 9, i0.ɵɵtemplateRefExtractor)(2, NgSelectComponent_Conditional_12_Conditional_7_ng_template_2_Template, 0, 0, \"ng-template\", 12);\n }\n if (rf & 2) {\n const defaultLoadingTextTemplate_r17 = i0.ɵɵreference(1);\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.loadingTextTemplate || defaultLoadingTextTemplate_r17)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(2, _c4, ctx_r1.searchTerm));\n }\n}\nfunction NgSelectComponent_Conditional_12_Template(rf, ctx) {\n if (rf & 1) {\n const _r9 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"ng-dropdown-panel\", 27);\n i0.ɵɵlistener(\"update\", function NgSelectComponent_Conditional_12_Template_ng_dropdown_panel_update_0_listener($event) {\n i0.ɵɵrestoreView(_r9);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.viewPortItems = $event);\n })(\"scroll\", function NgSelectComponent_Conditional_12_Template_ng_dropdown_panel_scroll_0_listener($event) {\n i0.ɵɵrestoreView(_r9);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.scroll.emit($event));\n })(\"scrollToEnd\", function NgSelectComponent_Conditional_12_Template_ng_dropdown_panel_scrollToEnd_0_listener($event) {\n i0.ɵɵrestoreView(_r9);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.scrollToEnd.emit($event));\n })(\"outsideClick\", function NgSelectComponent_Conditional_12_Template_ng_dropdown_panel_outsideClick_0_listener() {\n i0.ɵɵrestoreView(_r9);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.close());\n });\n i0.ɵɵelementContainerStart(1);\n i0.ɵɵrepeaterCreate(2, NgSelectComponent_Conditional_12_For_3_Template, 4, 22, \"div\", 28, i0.ɵɵcomponentInstance().trackByOption, true);\n i0.ɵɵtemplate(4, NgSelectComponent_Conditional_12_Conditional_4_Template, 4, 6, \"div\", 29);\n i0.ɵɵelementContainerEnd();\n i0.ɵɵtemplate(5, NgSelectComponent_Conditional_12_Conditional_5_Template, 3, 4)(6, NgSelectComponent_Conditional_12_Conditional_6_Template, 3, 1)(7, NgSelectComponent_Conditional_12_Conditional_7_Template, 3, 4);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵclassProp(\"ng-select-multiple\", ctx_r1.multiple);\n i0.ɵɵproperty(\"virtualScroll\", ctx_r1.virtualScroll)(\"bufferAmount\", ctx_r1.bufferAmount)(\"appendTo\", ctx_r1.appendTo)(\"position\", ctx_r1.dropdownPosition)(\"headerTemplate\", ctx_r1.headerTemplate)(\"footerTemplate\", ctx_r1.footerTemplate)(\"filterValue\", ctx_r1.searchTerm)(\"items\", ctx_r1.itemsList.filteredItems)(\"markedItem\", ctx_r1.itemsList.markedItem)(\"ngClass\", ctx_r1.appendTo ? ctx_r1.ngClass ? ctx_r1.ngClass : ctx_r1.classes : null)(\"id\", ctx_r1.dropdownId);\n i0.ɵɵadvance(2);\n i0.ɵɵrepeater(ctx_r1.viewPortItems);\n i0.ɵɵadvance(2);\n i0.ɵɵconditional(ctx_r1.showAddTag ? 4 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx_r1.showNoItemsFound() ? 5 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx_r1.showTypeToSearch() ? 6 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx_r1.loading && ctx_r1.itemsList.filteredItems.length === 0 ? 7 : -1);\n }\n}\nconst unescapedHTMLExp = /[&<>\"']/g;\nconst hasUnescapedHTMLExp = RegExp(unescapedHTMLExp.source);\nconst htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nfunction escapeHTML(value) {\n return value && hasUnescapedHTMLExp.test(value) ? value.replace(unescapedHTMLExp, chr => htmlEscapes[chr]) : value;\n}\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\nfunction isObject(value) {\n return typeof value === 'object' && isDefined(value);\n}\nfunction isPromise(value) {\n return value instanceof Promise;\n}\nfunction isFunction(value) {\n return value instanceof Function;\n}\nclass NgItemLabelDirective {\n constructor(element) {\n this.element = element;\n this.escape = true;\n }\n ngOnChanges(changes) {\n this.element.nativeElement.innerHTML = this.escape ? escapeHTML(this.ngItemLabel) : this.ngItemLabel;\n }\n static {\n this.ɵfac = function NgItemLabelDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgItemLabelDirective)(i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgItemLabelDirective,\n selectors: [[\"\", \"ngItemLabel\", \"\"]],\n inputs: {\n ngItemLabel: \"ngItemLabel\",\n escape: \"escape\"\n },\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NgItemLabelDirective, [{\n type: Directive,\n args: [{\n selector: '[ngItemLabel]',\n standalone: true\n }]\n }], () => [{\n type: i0.ElementRef\n }], {\n ngItemLabel: [{\n type: Input\n }],\n escape: [{\n type: Input\n }]\n });\n})();\nclass NgOptionTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n static {\n this.ɵfac = function NgOptionTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgOptionTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgOptionTemplateDirective,\n selectors: [[\"\", \"ng-option-tmp\", \"\"]],\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NgOptionTemplateDirective, [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[ng-option-tmp]',\n standalone: true\n }]\n }], () => [{\n type: i0.TemplateRef\n }], null);\n})();\nclass NgOptgroupTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n static {\n this.ɵfac = function NgOptgroupTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgOptgroupTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgOptgroupTemplateDirective,\n selectors: [[\"\", \"ng-optgroup-tmp\", \"\"]],\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NgOptgroupTemplateDirective, [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[ng-optgroup-tmp]',\n standalone: true\n }]\n }], () => [{\n type: i0.TemplateRef\n }], null);\n})();\nclass NgLabelTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n static {\n this.ɵfac = function NgLabelTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgLabelTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgLabelTemplateDirective,\n selectors: [[\"\", \"ng-label-tmp\", \"\"]],\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NgLabelTemplateDirective, [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[ng-label-tmp]',\n standalone: true\n }]\n }], () => [{\n type: i0.TemplateRef\n }], null);\n})();\nclass NgMultiLabelTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n static {\n this.ɵfac = function NgMultiLabelTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgMultiLabelTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgMultiLabelTemplateDirective,\n selectors: [[\"\", \"ng-multi-label-tmp\", \"\"]],\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NgMultiLabelTemplateDirective, [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[ng-multi-label-tmp]',\n standalone: true\n }]\n }], () => [{\n type: i0.TemplateRef\n }], null);\n})();\nclass NgHeaderTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n static {\n this.ɵfac = function NgHeaderTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgHeaderTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgHeaderTemplateDirective,\n selectors: [[\"\", \"ng-header-tmp\", \"\"]],\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NgHeaderTemplateDirective, [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[ng-header-tmp]',\n standalone: true\n }]\n }], () => [{\n type: i0.TemplateRef\n }], null);\n})();\nclass NgFooterTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n static {\n this.ɵfac = function NgFooterTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgFooterTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgFooterTemplateDirective,\n selectors: [[\"\", \"ng-footer-tmp\", \"\"]],\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NgFooterTemplateDirective, [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[ng-footer-tmp]',\n standalone: true\n }]\n }], () => [{\n type: i0.TemplateRef\n }], null);\n})();\nclass NgNotFoundTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n static {\n this.ɵfac = function NgNotFoundTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgNotFoundTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgNotFoundTemplateDirective,\n selectors: [[\"\", \"ng-notfound-tmp\", \"\"]],\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NgNotFoundTemplateDirective, [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[ng-notfound-tmp]',\n standalone: true\n }]\n }], () => [{\n type: i0.TemplateRef\n }], null);\n})();\nclass NgPlaceholderTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n static {\n this.ɵfac = function NgPlaceholderTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgPlaceholderTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgPlaceholderTemplateDirective,\n selectors: [[\"\", \"ng-placeholder-tmp\", \"\"]],\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NgPlaceholderTemplateDirective, [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[ng-placeholder-tmp]',\n standalone: true\n }]\n }], () => [{\n type: i0.TemplateRef\n }], null);\n})();\nclass NgTypeToSearchTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n static {\n this.ɵfac = function NgTypeToSearchTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgTypeToSearchTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgTypeToSearchTemplateDirective,\n selectors: [[\"\", \"ng-typetosearch-tmp\", \"\"]],\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NgTypeToSearchTemplateDirective, [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[ng-typetosearch-tmp]',\n standalone: true\n }]\n }], () => [{\n type: i0.TemplateRef\n }], null);\n})();\nclass NgLoadingTextTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n static {\n this.ɵfac = function NgLoadingTextTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgLoadingTextTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgLoadingTextTemplateDirective,\n selectors: [[\"\", \"ng-loadingtext-tmp\", \"\"]],\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NgLoadingTextTemplateDirective, [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[ng-loadingtext-tmp]',\n standalone: true\n }]\n }], () => [{\n type: i0.TemplateRef\n }], null);\n})();\nclass NgTagTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n static {\n this.ɵfac = function NgTagTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgTagTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgTagTemplateDirective,\n selectors: [[\"\", \"ng-tag-tmp\", \"\"]],\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NgTagTemplateDirective, [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[ng-tag-tmp]',\n standalone: true\n }]\n }], () => [{\n type: i0.TemplateRef\n }], null);\n})();\nclass NgLoadingSpinnerTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n static {\n this.ɵfac = function NgLoadingSpinnerTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgLoadingSpinnerTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgLoadingSpinnerTemplateDirective,\n selectors: [[\"\", \"ng-loadingspinner-tmp\", \"\"]],\n standalone: true\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NgLoadingSpinnerTemplateDirective, [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[ng-loadingspinner-tmp]',\n standalone: true\n }]\n }], () => [{\n type: i0.TemplateRef\n }], null);\n})();\nfunction newId() {\n // First character is an 'a', it's good practice to tag id to begin with a letter\n return 'axxxxxxxxxxx'.replace(/[x]/g, () => {\n // eslint-disable-next-line no-bitwise\n const val = Math.random() * 16 | 0;\n return val.toString(16);\n });\n}\nconst diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03C9': '\\u03C9',\n '\\u03C2': '\\u03C3'\n};\nfunction stripSpecialChars(text) {\n const match = a => diacritics[a] || a;\n return text.replace(/[^\\u0000-\\u007E]/g, match);\n}\nclass ItemsList {\n constructor(_ngSelect, _selectionModel) {\n this._ngSelect = _ngSelect;\n this._selectionModel = _selectionModel;\n this._items = [];\n this._filteredItems = [];\n this._markedIndex = -1;\n }\n get items() {\n return this._items;\n }\n get filteredItems() {\n return this._filteredItems;\n }\n get markedIndex() {\n return this._markedIndex;\n }\n get selectedItems() {\n return this._selectionModel.value;\n }\n get markedItem() {\n return this._filteredItems[this._markedIndex];\n }\n get noItemsToSelect() {\n return this._ngSelect.hideSelected && this._items.length === this.selectedItems.length;\n }\n get maxItemsSelected() {\n return this._ngSelect.multiple && this._ngSelect.maxSelectedItems <= this.selectedItems.length;\n }\n get lastSelectedItem() {\n let i = this.selectedItems.length - 1;\n for (; i >= 0; i--) {\n const item = this.selectedItems[i];\n if (!item.disabled) {\n return item;\n }\n }\n return null;\n }\n setItems(items) {\n this._items = items.map((item, index) => this.mapItem(item, index));\n if (this._ngSelect.groupBy) {\n this._groups = this._groupBy(this._items, this._ngSelect.groupBy);\n this._items = this._flatten(this._groups);\n } else {\n this._groups = new Map();\n this._groups.set(undefined, this._items);\n }\n this._filteredItems = [...this._items];\n }\n select(item) {\n if (item.selected || this.maxItemsSelected) {\n return;\n }\n const multiple = this._ngSelect.multiple;\n if (!multiple) {\n this.clearSelected();\n }\n this._selectionModel.select(item, multiple, this._ngSelect.selectableGroupAsModel);\n if (this._ngSelect.hideSelected) {\n this._hideSelected(item);\n }\n }\n unselect(item) {\n if (!item.selected) {\n return;\n }\n this._selectionModel.unselect(item, this._ngSelect.multiple);\n if (this._ngSelect.hideSelected && isDefined(item.index) && this._ngSelect.multiple) {\n this._showSelected(item);\n }\n }\n findItem(value) {\n let findBy;\n if (this._ngSelect.compareWith) {\n findBy = item => this._ngSelect.compareWith(item.value, value);\n } else if (this._ngSelect.bindValue) {\n findBy = item => !item.children && this.resolveNested(item.value, this._ngSelect.bindValue) === value;\n } else {\n findBy = item => item.value === value || !item.children && item.label && item.label === this.resolveNested(value, this._ngSelect.bindLabel);\n }\n return this._items.find(item => findBy(item));\n }\n addItem(item) {\n const option = this.mapItem(item, this._items.length);\n this._items.push(option);\n this._filteredItems.push(option);\n return option;\n }\n clearSelected(keepDisabled = false) {\n this._selectionModel.clear(keepDisabled);\n this._items.forEach(item => {\n item.selected = keepDisabled && item.selected && item.disabled;\n item.marked = false;\n });\n if (this._ngSelect.hideSelected) {\n this.resetFilteredItems();\n }\n }\n findByLabel(term) {\n term = stripSpecialChars(term).toLocaleLowerCase();\n return this.filteredItems.find(item => {\n const label = stripSpecialChars(item.label).toLocaleLowerCase();\n return label.substr(0, term.length) === term;\n });\n }\n filter(term) {\n if (!term) {\n this.resetFilteredItems();\n return;\n }\n this._filteredItems = [];\n term = this._ngSelect.searchFn ? term : stripSpecialChars(term).toLocaleLowerCase();\n const match = this._ngSelect.searchFn || this._defaultSearchFn;\n const hideSelected = this._ngSelect.hideSelected;\n for (const key of Array.from(this._groups.keys())) {\n const matchedItems = [];\n for (const item of this._groups.get(key)) {\n if (hideSelected && (item.parent && item.parent.selected || item.selected)) {\n continue;\n }\n const searchItem = this._ngSelect.searchFn ? item.value : item;\n if (match(term, searchItem)) {\n matchedItems.push(item);\n }\n }\n if (matchedItems.length > 0) {\n const [last] = matchedItems.slice(-1);\n if (last.parent) {\n const head = this._items.find(x => x === last.parent);\n this._filteredItems.push(head);\n }\n this._filteredItems.push(...matchedItems);\n }\n }\n }\n resetFilteredItems() {\n if (this._filteredItems.length === this._items.length) {\n return;\n }\n if (this._ngSelect.hideSelected && this.selectedItems.length > 0) {\n this._filteredItems = this._items.filter(x => !x.selected);\n } else {\n this._filteredItems = this._items;\n }\n }\n unmarkItem() {\n this._markedIndex = -1;\n }\n markNextItem() {\n this._stepToItem(+1);\n }\n markPreviousItem() {\n this._stepToItem(-1);\n }\n markItem(item) {\n this._markedIndex = this._filteredItems.indexOf(item);\n }\n markSelectedOrDefault(markDefault) {\n if (this._filteredItems.length === 0) {\n return;\n }\n const lastMarkedIndex = this._getLastMarkedIndex();\n if (lastMarkedIndex > -1) {\n this._markedIndex = lastMarkedIndex;\n } else {\n this._markedIndex = markDefault ? this.filteredItems.findIndex(x => !x.disabled) : -1;\n }\n }\n resolveNested(option, key) {\n if (!isObject(option)) {\n return option;\n }\n if (key.indexOf('.') === -1) {\n return option[key];\n } else {\n const keys = key.split('.');\n let value = option;\n for (let i = 0, len = keys.length; i < len; ++i) {\n if (value == null) {\n return null;\n }\n value = value[keys[i]];\n }\n return value;\n }\n }\n mapItem(item, index) {\n const label = isDefined(item.$ngOptionLabel) ? item.$ngOptionLabel : this.resolveNested(item, this._ngSelect.bindLabel);\n const value = isDefined(item.$ngOptionValue) ? item.$ngOptionValue : item;\n return {\n index,\n label: isDefined(label) ? label.toString() : '',\n value,\n disabled: item.disabled,\n htmlId: `${this._ngSelect.dropdownId}-${index}`\n };\n }\n mapSelectedItems() {\n const multiple = this._ngSelect.multiple;\n for (const selected of this.selectedItems) {\n const value = this._ngSelect.bindValue ? this.resolveNested(selected.value, this._ngSelect.bindValue) : selected.value;\n const item = isDefined(value) ? this.findItem(value) : null;\n this._selectionModel.unselect(selected, multiple);\n this._selectionModel.select(item || selected, multiple, this._ngSelect.selectableGroupAsModel);\n }\n if (this._ngSelect.hideSelected) {\n this._filteredItems = this.filteredItems.filter(x => this.selectedItems.indexOf(x) === -1);\n }\n }\n _showSelected(item) {\n this._filteredItems.push(item);\n if (item.parent) {\n const parent = item.parent;\n const parentExists = this._filteredItems.find(x => x === parent);\n if (!parentExists) {\n this._filteredItems.push(parent);\n }\n } else if (item.children) {\n for (const child of item.children) {\n child.selected = false;\n this._filteredItems.push(child);\n }\n }\n this._filteredItems = [...this._filteredItems.sort((a, b) => a.index - b.index)];\n }\n _hideSelected(item) {\n this._filteredItems = this._filteredItems.filter(x => x !== item);\n if (item.parent) {\n const children = item.parent.children;\n if (children.every(x => x.selected)) {\n this._filteredItems = this._filteredItems.filter(x => x !== item.parent);\n }\n } else if (item.children) {\n this._filteredItems = this.filteredItems.filter(x => x.parent !== item);\n }\n }\n _defaultSearchFn(search, opt) {\n const label = stripSpecialChars(opt.label).toLocaleLowerCase();\n return label.indexOf(search) > -1;\n }\n _getNextItemIndex(steps) {\n if (steps > 0) {\n return this._markedIndex >= this._filteredItems.length - 1 ? 0 : this._markedIndex + 1;\n }\n return this._markedIndex <= 0 ? this._filteredItems.length - 1 : this._markedIndex - 1;\n }\n _stepToItem(steps) {\n if (this._filteredItems.length === 0 || this._filteredItems.every(x => x.disabled)) {\n return;\n }\n this._markedIndex = this._getNextItemIndex(steps);\n if (this.markedItem.disabled) {\n this._stepToItem(steps);\n }\n }\n _getLastMarkedIndex() {\n if (this._ngSelect.hideSelected) {\n return -1;\n }\n if (this._markedIndex > -1 && this.markedItem === undefined) {\n return -1;\n }\n const selectedIndex = this._filteredItems.indexOf(this.lastSelectedItem);\n if (this.lastSelectedItem && selectedIndex < 0) {\n return -1;\n }\n return Math.max(this.markedIndex, selectedIndex);\n }\n _groupBy(items, prop) {\n const groups = new Map();\n if (items.length === 0) {\n return groups;\n }\n // Check if items are already grouped by given key.\n if (Array.isArray(items[0].value[prop])) {\n for (const item of items) {\n const children = (item.value[prop] || []).map((x, index) => this.mapItem(x, index));\n groups.set(item, children);\n }\n return groups;\n }\n const isFnKey = isFunction(this._ngSelect.groupBy);\n const keyFn = item => {\n const key = isFnKey ? prop(item.value) : item.value[prop];\n return isDefined(key) ? key : undefined;\n };\n // Group items by key.\n for (const item of items) {\n const key = keyFn(item);\n const group = groups.get(key);\n if (group) {\n group.push(item);\n } else {\n groups.set(key, [item]);\n }\n }\n return groups;\n }\n _flatten(groups) {\n const isGroupByFn = isFunction(this._ngSelect.groupBy);\n const items = [];\n for (const key of Array.from(groups.keys())) {\n let i = items.length;\n if (key === undefined) {\n const withoutGroup = groups.get(undefined) || [];\n items.push(...withoutGroup.map(x => {\n x.index = i++;\n return x;\n }));\n continue;\n }\n const isObjectKey = isObject(key);\n const parent = {\n label: isObjectKey ? '' : String(key),\n children: undefined,\n parent: null,\n index: i++,\n disabled: !this._ngSelect.selectableGroup,\n htmlId: newId()\n };\n const groupKey = isGroupByFn ? this._ngSelect.bindLabel : this._ngSelect.groupBy;\n const groupValue = this._ngSelect.groupValue || (() => {\n if (isObjectKey) {\n return key.value;\n }\n return {\n [groupKey]: key\n };\n });\n const children = groups.get(key).map(x => {\n x.parent = parent;\n x.children = undefined;\n x.index = i++;\n return x;\n });\n parent.children = children;\n parent.value = groupValue(key, children.map(x => x.value));\n items.push(parent);\n items.push(...children);\n }\n return items;\n }\n}\nvar KeyCode;\n(function (KeyCode) {\n KeyCode[KeyCode[\"Tab\"] = 9] = \"Tab\";\n KeyCode[KeyCode[\"Enter\"] = 13] = \"Enter\";\n KeyCode[KeyCode[\"Esc\"] = 27] = \"Esc\";\n KeyCode[KeyCode[\"Space\"] = 32] = \"Space\";\n KeyCode[KeyCode[\"ArrowUp\"] = 38] = \"ArrowUp\";\n KeyCode[KeyCode[\"ArrowDown\"] = 40] = \"ArrowDown\";\n KeyCode[KeyCode[\"Backspace\"] = 8] = \"Backspace\";\n})(KeyCode || (KeyCode = {}));\nclass NgDropdownPanelService {\n constructor() {\n this._dimensions = {\n itemHeight: 0,\n panelHeight: 0,\n itemsPerViewport: 0\n };\n }\n get dimensions() {\n return this._dimensions;\n }\n calculateItems(scrollPos, itemsLength, buffer) {\n const d = this._dimensions;\n const scrollHeight = d.itemHeight * itemsLength;\n const scrollTop = Math.max(0, scrollPos);\n const indexByScrollTop = scrollTop / scrollHeight * itemsLength;\n let end = Math.min(itemsLength, Math.ceil(indexByScrollTop) + (d.itemsPerViewport + 1));\n const maxStartEnd = end;\n const maxStart = Math.max(0, maxStartEnd - d.itemsPerViewport);\n let start = Math.min(maxStart, Math.floor(indexByScrollTop));\n let topPadding = d.itemHeight * Math.ceil(start) - d.itemHeight * Math.min(start, buffer);\n topPadding = !isNaN(topPadding) ? topPadding : 0;\n start = !isNaN(start) ? start : -1;\n end = !isNaN(end) ? end : -1;\n start -= buffer;\n start = Math.max(0, start);\n end += buffer;\n end = Math.min(itemsLength, end);\n return {\n topPadding,\n scrollHeight,\n start,\n end\n };\n }\n setDimensions(itemHeight, panelHeight) {\n const itemsPerViewport = Math.max(1, Math.floor(panelHeight / itemHeight));\n this._dimensions = {\n itemHeight,\n panelHeight,\n itemsPerViewport\n };\n }\n getScrollTo(itemTop, itemHeight, lastScroll) {\n const {\n panelHeight\n } = this.dimensions;\n const itemBottom = itemTop + itemHeight;\n const top = lastScroll;\n const bottom = top + panelHeight;\n if (panelHeight >= itemBottom && lastScroll === itemTop) {\n return null;\n }\n if (itemBottom > bottom) {\n return top + itemBottom - bottom;\n } else if (itemTop <= top) {\n return itemTop;\n }\n return null;\n }\n static {\n this.ɵfac = function NgDropdownPanelService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgDropdownPanelService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgDropdownPanelService,\n factory: NgDropdownPanelService.ɵfac\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NgDropdownPanelService, [{\n type: Injectable\n }], null, null);\n})();\nconst CSS_POSITIONS = ['top', 'right', 'bottom', 'left'];\nconst SCROLL_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;\nclass NgDropdownPanelComponent {\n constructor(_renderer, _zone, _panelService, _elementRef, _document) {\n this._renderer = _renderer;\n this._zone = _zone;\n this._panelService = _panelService;\n this._document = _document;\n this.items = [];\n this.position = 'auto';\n this.virtualScroll = false;\n this.filterValue = null;\n this.update = new EventEmitter();\n this.scroll = new EventEmitter();\n this.scrollToEnd = new EventEmitter();\n this.outsideClick = new EventEmitter();\n this._destroy$ = new Subject();\n this._scrollToEndFired = false;\n this._updateScrollHeight = false;\n this._lastScrollPosition = 0;\n this._dropdown = _elementRef.nativeElement;\n }\n get currentPosition() {\n return this._currentPosition;\n }\n get itemsLength() {\n return this._itemsLength;\n }\n set itemsLength(value) {\n if (value !== this._itemsLength) {\n this._itemsLength = value;\n this._onItemsLengthChanged();\n }\n }\n get _startOffset() {\n if (this.markedItem) {\n const {\n itemHeight,\n panelHeight\n } = this._panelService.dimensions;\n const offset = this.markedItem.index * itemHeight;\n return panelHeight > offset ? 0 : offset;\n }\n return 0;\n }\n ngOnInit() {\n this._select = this._dropdown.parentElement;\n this._virtualPadding = this.paddingElementRef.nativeElement;\n this._scrollablePanel = this.scrollElementRef.nativeElement;\n this._contentPanel = this.contentElementRef.nativeElement;\n this._handleScroll();\n this._handleOutsideClick();\n this._appendDropdown();\n this._setupMousedownListener();\n }\n ngOnChanges(changes) {\n if (changes.items) {\n const change = changes.items;\n this._onItemsChange(change.currentValue, change.firstChange);\n }\n }\n ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n this._destroy$.unsubscribe();\n if (this.appendTo) {\n this._renderer.removeChild(this._dropdown.parentNode, this._dropdown);\n }\n }\n scrollTo(option, startFromOption = false) {\n if (!option) {\n return;\n }\n const index = this.items.indexOf(option);\n if (index < 0 || index >= this.itemsLength) {\n return;\n }\n let scrollTo;\n if (this.virtualScroll) {\n const itemHeight = this._panelService.dimensions.itemHeight;\n scrollTo = this._panelService.getScrollTo(index * itemHeight, itemHeight, this._lastScrollPosition);\n } else {\n const item = this._dropdown.querySelector(`#${option.htmlId}`);\n const lastScroll = startFromOption ? item.offsetTop : this._lastScrollPosition;\n scrollTo = this._panelService.getScrollTo(item.offsetTop, item.clientHeight, lastScroll);\n }\n if (isDefined(scrollTo)) {\n this._scrollablePanel.scrollTop = scrollTo;\n }\n }\n scrollToTag() {\n const panel = this._scrollablePanel;\n panel.scrollTop = panel.scrollHeight - panel.clientHeight;\n }\n adjustPosition() {\n this._updateYPosition();\n }\n _handleDropdownPosition() {\n this._currentPosition = this._calculateCurrentPosition(this._dropdown);\n if (CSS_POSITIONS.includes(this._currentPosition)) {\n this._updateDropdownClass(this._currentPosition);\n } else {\n this._updateDropdownClass('bottom');\n }\n if (this.appendTo) {\n this._updateYPosition();\n }\n this._dropdown.style.opacity = '1';\n }\n _updateDropdownClass(currentPosition) {\n CSS_POSITIONS.forEach(position => {\n const REMOVE_CSS_CLASS = `ng-select-${position}`;\n this._renderer.removeClass(this._dropdown, REMOVE_CSS_CLASS);\n this._renderer.removeClass(this._select, REMOVE_CSS_CLASS);\n });\n const ADD_CSS_CLASS = `ng-select-${currentPosition}`;\n this._renderer.addClass(this._dropdown, ADD_CSS_CLASS);\n this._renderer.addClass(this._select, ADD_CSS_CLASS);\n }\n _handleScroll() {\n this._zone.runOutsideAngular(() => {\n fromEvent(this.scrollElementRef.nativeElement, 'scroll').pipe(takeUntil(this._destroy$), auditTime(0, SCROLL_SCHEDULER)).subscribe(e => {\n const path = e.path || e.composedPath && e.composedPath();\n if (!path || path.length === 0 && !e.target) {\n return;\n }\n const scrollTop = !path || path.length === 0 ? e.target.scrollTop : path[0].scrollTop;\n this._onContentScrolled(scrollTop);\n });\n });\n }\n _handleOutsideClick() {\n if (!this._document) {\n return;\n }\n this._zone.runOutsideAngular(() => {\n merge(fromEvent(this._document, 'touchstart', {\n capture: true\n }), fromEvent(this._document, 'click', {\n capture: true\n })).pipe(takeUntil(this._destroy$)).subscribe($event => this._checkToClose($event));\n });\n }\n _checkToClose($event) {\n if (this._select.contains($event.target) || this._dropdown.contains($event.target)) {\n return;\n }\n const path = $event.path || $event.composedPath && $event.composedPath();\n if ($event.target && $event.target.shadowRoot && path && path[0] && this._select.contains(path[0])) {\n return;\n }\n this._zone.run(() => this.outsideClick.emit());\n }\n _onItemsChange(items, firstChange) {\n this.items = items || [];\n this._scrollToEndFired = false;\n this.itemsLength = items.length;\n if (this.virtualScroll) {\n this._updateItemsRange(firstChange);\n } else {\n this._setVirtualHeight();\n this._updateItems(firstChange);\n }\n }\n _updateItems(firstChange) {\n this.update.emit(this.items);\n if (firstChange === false) {\n return;\n }\n this._zone.runOutsideAngular(() => {\n Promise.resolve().then(() => {\n const panelHeight = this._scrollablePanel.clientHeight;\n this._panelService.setDimensions(0, panelHeight);\n this._handleDropdownPosition();\n this.scrollTo(this.markedItem, firstChange);\n });\n });\n }\n _updateItemsRange(firstChange) {\n this._zone.runOutsideAngular(() => {\n this._measureDimensions().then(() => {\n if (firstChange) {\n this._renderItemsRange(this._startOffset);\n this._handleDropdownPosition();\n } else {\n this._renderItemsRange();\n }\n });\n });\n }\n _onContentScrolled(scrollTop) {\n if (this.virtualScroll) {\n this._renderItemsRange(scrollTop);\n }\n this._lastScrollPosition = scrollTop;\n this._fireScrollToEnd(scrollTop);\n }\n _updateVirtualHeight(height) {\n if (this._updateScrollHeight) {\n this._virtualPadding.style.height = `${height}px`;\n this._updateScrollHeight = false;\n }\n }\n _setVirtualHeight() {\n if (!this._virtualPadding) {\n return;\n }\n this._virtualPadding.style.height = `0px`;\n }\n _onItemsLengthChanged() {\n this._updateScrollHeight = true;\n }\n _renderItemsRange(scrollTop = null) {\n if (scrollTop && this._lastScrollPosition === scrollTop) {\n return;\n }\n scrollTop = scrollTop || this._scrollablePanel.scrollTop;\n const range = this._panelService.calculateItems(scrollTop, this.itemsLength, this.bufferAmount);\n this._updateVirtualHeight(range.scrollHeight);\n this._contentPanel.style.transform = `translateY(${range.topPadding}px)`;\n this._zone.run(() => {\n this.update.emit(this.items.slice(range.start, range.end));\n this.scroll.emit({\n start: range.start,\n end: range.end\n });\n });\n if (isDefined(scrollTop) && this._lastScrollPosition === 0) {\n this._scrollablePanel.scrollTop = scrollTop;\n this._lastScrollPosition = scrollTop;\n }\n }\n _measureDimensions() {\n if (this._panelService.dimensions.itemHeight > 0 || this.itemsLength === 0) {\n return Promise.resolve(this._panelService.dimensions);\n }\n const [first] = this.items;\n this.update.emit([first]);\n return Promise.resolve().then(() => {\n const option = this._dropdown.querySelector(`#${first.htmlId}`);\n const optionHeight = option.clientHeight;\n this._virtualPadding.style.height = `${optionHeight * this.itemsLength}px`;\n const panelHeight = this._scrollablePanel.clientHeight;\n this._panelService.setDimensions(optionHeight, panelHeight);\n return this._panelService.dimensions;\n });\n }\n _fireScrollToEnd(scrollTop) {\n if (this._scrollToEndFired || scrollTop === 0) {\n return;\n }\n const padding = this.virtualScroll ? this._virtualPadding : this._contentPanel;\n if (scrollTop + this._dropdown.clientHeight >= padding.clientHeight - 1) {\n this._zone.run(() => this.scrollToEnd.emit());\n this._scrollToEndFired = true;\n }\n }\n _calculateCurrentPosition(dropdownEl) {\n if (this.position !== 'auto') {\n return this.position;\n }\n const selectRect = this._select.getBoundingClientRect();\n const scrollTop = document.documentElement.scrollTop || document.body.scrollTop;\n const offsetTop = selectRect.top + window.pageYOffset;\n const height = selectRect.height;\n const dropdownHeight = dropdownEl.getBoundingClientRect().height;\n if (offsetTop + height + dropdownHeight > scrollTop + document.documentElement.clientHeight) {\n return 'top';\n } else {\n return 'bottom';\n }\n }\n _appendDropdown() {\n if (!this.appendTo) {\n return;\n }\n this._parent = document.querySelector(this.appendTo);\n if (!this._parent) {\n throw new Error(`appendTo selector ${this.appendTo} did not found any parent element`);\n }\n this._updateXPosition();\n this._parent.appendChild(this._dropdown);\n }\n _updateXPosition() {\n const select = this._select.getBoundingClientRect();\n const parent = this._parent.getBoundingClientRect();\n const offsetLeft = select.left - parent.left;\n this._dropdown.style.left = offsetLeft + 'px';\n this._dropdown.style.width = select.width + 'px';\n this._dropdown.style.minWidth = select.width + 'px';\n }\n _updateYPosition() {\n const select = this._select.getBoundingClientRect();\n const parent = this._parent.getBoundingClientRect();\n const delta = select.height;\n if (this._currentPosition === 'top') {\n const offsetBottom = parent.bottom - select.bottom;\n this._dropdown.style.bottom = offsetBottom + delta + 'px';\n this._dropdown.style.top = 'auto';\n } else if (this._currentPosition === 'bottom') {\n const offsetTop = select.top - parent.top;\n this._dropdown.style.top = offsetTop + delta + 'px';\n this._dropdown.style.bottom = 'auto';\n }\n }\n _setupMousedownListener() {\n this._zone.runOutsideAngular(() => {\n fromEvent(this._dropdown, 'mousedown').pipe(takeUntil(this._destroy$)).subscribe(event => {\n const target = event.target;\n if (target.tagName === 'INPUT') {\n return;\n }\n event.preventDefault();\n });\n });\n }\n static {\n this.ɵfac = function NgDropdownPanelComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgDropdownPanelComponent)(i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(NgDropdownPanelService), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(DOCUMENT, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgDropdownPanelComponent,\n selectors: [[\"ng-dropdown-panel\"]],\n viewQuery: function NgDropdownPanelComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c0, 7, ElementRef);\n i0.ɵɵviewQuery(_c1, 7, ElementRef);\n i0.ɵɵviewQuery(_c2, 7, ElementRef);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.contentElementRef = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.scrollElementRef = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.paddingElementRef = _t.first);\n }\n },\n inputs: {\n items: \"items\",\n markedItem: \"markedItem\",\n position: \"position\",\n appendTo: \"appendTo\",\n bufferAmount: \"bufferAmount\",\n virtualScroll: [2, \"virtualScroll\", \"virtualScroll\", booleanAttribute],\n headerTemplate: \"headerTemplate\",\n footerTemplate: \"footerTemplate\",\n filterValue: \"filterValue\"\n },\n outputs: {\n update: \"update\",\n scroll: \"scroll\",\n scrollToEnd: \"scrollToEnd\",\n outsideClick: \"outsideClick\"\n },\n standalone: true,\n features: [i0.ɵɵInputTransformsFeature, i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c3,\n decls: 9,\n vars: 6,\n consts: [[\"scroll\", \"\"], [\"padding\", \"\"], [\"content\", \"\"], [1, \"ng-dropdown-header\"], [\"role\", \"listbox\", 1, \"ng-dropdown-panel-items\", \"scroll-host\"], [1, \"ng-dropdown-footer\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]],\n template: function NgDropdownPanelComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, NgDropdownPanelComponent_Conditional_0_Template, 2, 4, \"div\", 3);\n i0.ɵɵelementStart(1, \"div\", 4, 0);\n i0.ɵɵelement(3, \"div\", null, 1);\n i0.ɵɵelementStart(5, \"div\", null, 2);\n i0.ɵɵprojection(7);\n i0.ɵɵelementEnd()();\n i0.ɵɵtemplate(8, NgDropdownPanelComponent_Conditional_8_Template, 2, 4, \"div\", 5);\n }\n if (rf & 2) {\n i0.ɵɵconditional(ctx.headerTemplate ? 0 : -1);\n i0.ɵɵadvance(3);\n i0.ɵɵclassProp(\"total-padding\", ctx.virtualScroll);\n i0.ɵɵadvance(2);\n i0.ɵɵclassProp(\"scrollable-content\", ctx.virtualScroll && ctx.items.length);\n i0.ɵɵadvance(3);\n i0.ɵɵconditional(ctx.footerTemplate ? 8 : -1);\n }\n },\n dependencies: [NgTemplateOutlet],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NgDropdownPanelComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: 'ng-dropdown-panel',\n standalone: true,\n template: `\n\t\t@if (headerTemplate) {\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t}\n\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t\t@if (footerTemplate) {\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t}\n\t`,\n imports: [NgTemplateOutlet]\n }]\n }], () => [{\n type: i0.Renderer2\n }, {\n type: i0.NgZone\n }, {\n type: NgDropdownPanelService\n }, {\n type: i0.ElementRef\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }]\n }], {\n items: [{\n type: Input\n }],\n markedItem: [{\n type: Input\n }],\n position: [{\n type: Input\n }],\n appendTo: [{\n type: Input\n }],\n bufferAmount: [{\n type: Input\n }],\n virtualScroll: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n headerTemplate: [{\n type: Input\n }],\n footerTemplate: [{\n type: Input\n }],\n filterValue: [{\n type: Input\n }],\n update: [{\n type: Output\n }],\n scroll: [{\n type: Output\n }],\n scrollToEnd: [{\n type: Output\n }],\n outsideClick: [{\n type: Output\n }],\n contentElementRef: [{\n type: ViewChild,\n args: ['content', {\n read: ElementRef,\n static: true\n }]\n }],\n scrollElementRef: [{\n type: ViewChild,\n args: ['scroll', {\n read: ElementRef,\n static: true\n }]\n }],\n paddingElementRef: [{\n type: ViewChild,\n args: ['padding', {\n read: ElementRef,\n static: true\n }]\n }]\n });\n})();\nclass NgOptionComponent {\n constructor(elementRef) {\n this.elementRef = elementRef;\n this.disabled = false;\n this.stateChange$ = new Subject();\n }\n get label() {\n return (this.elementRef.nativeElement.textContent || '').trim();\n }\n ngOnChanges(changes) {\n if (changes.disabled) {\n this.stateChange$.next({\n value: this.value,\n disabled: this.disabled\n });\n }\n }\n ngAfterViewChecked() {\n if (this.label !== this._previousLabel) {\n this._previousLabel = this.label;\n this.stateChange$.next({\n value: this.value,\n disabled: this.disabled,\n label: this.elementRef.nativeElement.innerHTML\n });\n }\n }\n ngOnDestroy() {\n this.stateChange$.complete();\n }\n static {\n this.ɵfac = function NgOptionComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgOptionComponent)(i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgOptionComponent,\n selectors: [[\"ng-option\"]],\n inputs: {\n value: \"value\",\n disabled: [2, \"disabled\", \"disabled\", booleanAttribute]\n },\n standalone: true,\n features: [i0.ɵɵInputTransformsFeature, i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c3,\n decls: 1,\n vars: 0,\n template: function NgOptionComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NgOptionComponent, [{\n type: Component,\n args: [{\n selector: 'ng-option',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: ``\n }]\n }], () => [{\n type: i0.ElementRef\n }], {\n value: [{\n type: Input\n }],\n disabled: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }]\n });\n})();\nfunction DefaultSelectionModelFactory() {\n return new DefaultSelectionModel();\n}\nclass DefaultSelectionModel {\n constructor() {\n this._selected = [];\n }\n get value() {\n return this._selected;\n }\n select(item, multiple, groupAsModel) {\n item.selected = true;\n if (!item.children || !multiple && groupAsModel) {\n this._selected.push(item);\n }\n if (multiple) {\n if (item.parent) {\n const childrenCount = item.parent.children.length;\n const selectedCount = item.parent.children.filter(x => x.selected).length;\n item.parent.selected = childrenCount === selectedCount;\n } else if (item.children) {\n this._setChildrenSelectedState(item.children, true);\n this._removeChildren(item);\n if (groupAsModel && this._activeChildren(item)) {\n this._selected = [...this._selected.filter(x => x.parent !== item), item];\n } else {\n this._selected = [...this._selected, ...item.children.filter(x => !x.disabled)];\n }\n }\n }\n }\n unselect(item, multiple) {\n this._selected = this._selected.filter(x => x !== item);\n item.selected = false;\n if (multiple) {\n if (item.parent && item.parent.selected) {\n const children = item.parent.children;\n this._removeParent(item.parent);\n this._removeChildren(item.parent);\n this._selected.push(...children.filter(x => x !== item && !x.disabled));\n item.parent.selected = false;\n } else if (item.children) {\n this._setChildrenSelectedState(item.children, false);\n this._removeChildren(item);\n }\n }\n }\n clear(keepDisabled) {\n this._selected = keepDisabled ? this._selected.filter(x => x.disabled) : [];\n }\n _setChildrenSelectedState(children, selected) {\n for (const child of children) {\n if (child.disabled) {\n continue;\n }\n child.selected = selected;\n }\n }\n _removeChildren(parent) {\n this._selected = [...this._selected.filter(x => x.parent !== parent), ...parent.children.filter(x => x.parent === parent && x.disabled && x.selected)];\n }\n _removeParent(parent) {\n this._selected = this._selected.filter(x => x !== parent);\n }\n _activeChildren(item) {\n return item.children.every(x => !x.disabled || x.selected);\n }\n}\nclass NgSelectConfig {\n constructor() {\n this.fixedPlaceholder = true;\n this.notFoundText = 'No items found';\n this.typeToSearchText = 'Type to search';\n this.addTagText = 'Add item';\n this.loadingText = 'Loading...';\n this.clearAllText = 'Clear all';\n this.disableVirtualScroll = true;\n this.openOnEnter = true;\n this.appearance = 'underline';\n }\n static {\n this.ɵfac = function NgSelectConfig_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgSelectConfig)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgSelectConfig,\n factory: NgSelectConfig.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NgSelectConfig, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\nclass ConsoleService {\n warn(message) {\n console.warn(message);\n }\n static {\n this.ɵfac = function ConsoleService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ConsoleService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ConsoleService,\n factory: ConsoleService.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ConsoleService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\nconst SELECTION_MODEL_FACTORY = new InjectionToken('ng-select-selection-model');\nclass NgSelectComponent {\n constructor(classes, autoFocus, config, newSelectionModel, _elementRef, _cd, _console) {\n this.classes = classes;\n this.autoFocus = autoFocus;\n this.config = config;\n this._cd = _cd;\n this._console = _console;\n this.markFirst = true;\n this.fixedPlaceholder = true;\n this.preventToggleOnRightClick = false;\n this.dropdownPosition = 'auto';\n this.loading = false;\n this.closeOnSelect = true;\n this.hideSelected = false;\n this.selectOnTab = false;\n this.bufferAmount = 4;\n this.selectableGroup = false;\n this.selectableGroupAsModel = true;\n this.searchFn = null;\n this.trackByFn = null;\n this.clearOnBackspace = true;\n this.labelForId = null;\n this.inputAttrs = {};\n this.readonly = false;\n this.searchWhileComposing = true;\n this.minTermLength = 0;\n this.editableSearchTerm = false;\n this.ngClass = null;\n this.multiple = false;\n this.addTag = false;\n this.searchable = true;\n this.clearable = true;\n this.isOpen = false;\n // output events\n this.blurEvent = new EventEmitter();\n this.focusEvent = new EventEmitter();\n this.changeEvent = new EventEmitter();\n this.openEvent = new EventEmitter();\n this.closeEvent = new EventEmitter();\n this.searchEvent = new EventEmitter();\n this.clearEvent = new EventEmitter();\n this.addEvent = new EventEmitter();\n this.removeEvent = new EventEmitter();\n this.scroll = new EventEmitter();\n this.scrollToEnd = new EventEmitter();\n this.useDefaultClass = true;\n this.viewPortItems = [];\n this.searchTerm = null;\n this.dropdownId = newId();\n this.escapeHTML = true;\n this._defaultLabel = 'label';\n this._pressedKeys = [];\n this._isComposing = false;\n this._destroy$ = new Subject();\n this._keyPress$ = new Subject();\n this._items = [];\n this.keyDownFn = _ => true;\n this.clearItem = item => {\n const option = this.selectedItems.find(x => x.value === item);\n this.unselect(option);\n };\n this.trackByOption = (_, item) => {\n if (this.trackByFn) {\n return this.trackByFn(item.value);\n }\n return item;\n };\n this._onChange = _ => {};\n this._onTouched = () => {};\n this._mergeGlobalConfig(config);\n this.itemsList = new ItemsList(this, newSelectionModel ? newSelectionModel() : DefaultSelectionModelFactory());\n this.element = _elementRef.nativeElement;\n }\n get filtered() {\n return !!this.searchTerm && this.searchable || this._isComposing;\n }\n get single() {\n return !this.multiple;\n }\n get items() {\n return this._items;\n }\n set items(value) {\n this._itemsAreUsed = true;\n this._items = value ?? [];\n }\n get disabled() {\n return this.readonly || this._disabled;\n }\n get compareWith() {\n return this._compareWith;\n }\n set compareWith(fn) {\n if (fn !== undefined && fn !== null && !isFunction(fn)) {\n throw Error('`compareWith` must be a function.');\n }\n this._compareWith = fn;\n }\n get clearSearchOnAdd() {\n if (isDefined(this._clearSearchOnAdd)) {\n return this._clearSearchOnAdd;\n } else if (isDefined(this.config.clearSearchOnAdd)) {\n return this.config.clearSearchOnAdd;\n }\n return this.closeOnSelect;\n }\n set clearSearchOnAdd(value) {\n this._clearSearchOnAdd = value;\n }\n get deselectOnClick() {\n if (isDefined(this._deselectOnClick)) {\n return this._deselectOnClick;\n } else if (isDefined(this.config.deselectOnClick)) {\n return this.config.deselectOnClick;\n }\n return this.multiple;\n }\n set deselectOnClick(value) {\n this._deselectOnClick = value;\n }\n get selectedItems() {\n return this.itemsList.selectedItems;\n }\n get selectedValues() {\n return this.selectedItems.map(x => x.value);\n }\n get hasValue() {\n return this.selectedItems.length > 0;\n }\n get currentPanelPosition() {\n if (this.dropdownPanel) {\n return this.dropdownPanel.currentPosition;\n }\n return undefined;\n }\n get showAddTag() {\n if (!this._validTerm) {\n return false;\n }\n const term = this.searchTerm.toLowerCase().trim();\n return this.addTag && !this.itemsList.filteredItems.some(x => x.label.toLowerCase() === term) && (!this.hideSelected && this.isOpen || !this.selectedItems.some(x => x.label.toLowerCase() === term)) && !this.loading;\n }\n get _editableSearchTerm() {\n return this.editableSearchTerm && !this.multiple;\n }\n get _isTypeahead() {\n return this.typeahead && this.typeahead.observers.length > 0;\n }\n get _validTerm() {\n const term = this.searchTerm && this.searchTerm.trim();\n return term && term.length >= this.minTermLength;\n }\n ngOnInit() {\n this._handleKeyPresses();\n this._setInputAttributes();\n }\n ngOnChanges(changes) {\n if (changes.multiple) {\n this.itemsList.clearSelected();\n }\n if (changes.items) {\n this._setItems(changes.items.currentValue || []);\n }\n if (changes.isOpen) {\n this._manualOpen = isDefined(changes.isOpen.currentValue);\n }\n }\n ngAfterViewInit() {\n if (!this._itemsAreUsed) {\n this.escapeHTML = false;\n this._setItemsFromNgOptions();\n }\n if (isDefined(this.autoFocus)) {\n this.focus();\n }\n }\n ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n }\n handleKeyDown($event) {\n const keyCode = KeyCode[$event.which];\n if (keyCode) {\n if (this.keyDownFn($event) === false) {\n return;\n }\n this.handleKeyCode($event);\n } else if ($event.key && $event.key.length === 1) {\n this._keyPress$.next($event.key.toLocaleLowerCase());\n }\n }\n handleKeyCode($event) {\n const target = $event.target;\n if (this.clearButton && this.clearButton.nativeElement === target) {\n this.handleKeyCodeClear($event);\n } else {\n this.handleKeyCodeInput($event);\n }\n }\n handleKeyCodeInput($event) {\n switch ($event.which) {\n case KeyCode.ArrowDown:\n this._handleArrowDown($event);\n break;\n case KeyCode.ArrowUp:\n this._handleArrowUp($event);\n break;\n case KeyCode.Space:\n this._handleSpace($event);\n break;\n case KeyCode.Enter:\n this._handleEnter($event);\n break;\n case KeyCode.Tab:\n this._handleTab($event);\n break;\n case KeyCode.Esc:\n this.close();\n $event.preventDefault();\n break;\n case KeyCode.Backspace:\n this._handleBackspace();\n break;\n }\n }\n handleKeyCodeClear($event) {\n switch ($event.which) {\n case KeyCode.Enter:\n this.handleClearClick();\n $event.preventDefault();\n break;\n }\n }\n handleMousedown($event) {\n if (this.preventToggleOnRightClick && $event.button === 2) {\n return false;\n }\n const target = $event.target;\n if (target.tagName !== 'INPUT') {\n $event.preventDefault();\n }\n if (target.classList.contains('ng-clear-wrapper')) {\n this.handleClearClick();\n return;\n }\n if (target.classList.contains('ng-arrow-wrapper')) {\n this.handleArrowClick();\n return;\n }\n if (target.classList.contains('ng-value-icon')) {\n return;\n }\n if (!this.focused) {\n this.focus();\n }\n if (this.searchable) {\n this.open();\n } else {\n this.toggle();\n }\n }\n handleArrowClick() {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n handleClearClick() {\n if (this.hasValue) {\n this.itemsList.clearSelected(true);\n this._updateNgModel();\n }\n this._clearSearch();\n this.focus();\n this.clearEvent.emit();\n this._onSelectionChanged();\n }\n clearModel() {\n if (!this.clearable) {\n return;\n }\n this.itemsList.clearSelected();\n this._updateNgModel();\n }\n writeValue(value) {\n this.itemsList.clearSelected();\n this._handleWriteValue(value);\n this._cd.markForCheck();\n }\n registerOnChange(fn) {\n this._onChange = fn;\n }\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n setDisabledState(state) {\n this._disabled = state;\n this._cd.markForCheck();\n }\n toggle() {\n if (!this.isOpen) {\n this.open();\n } else {\n this.close();\n }\n }\n open() {\n if (this.disabled || this.isOpen || this._manualOpen) {\n return;\n }\n if (!this._isTypeahead && !this.addTag && this.itemsList.noItemsToSelect) {\n return;\n }\n this.isOpen = true;\n this.itemsList.markSelectedOrDefault(this.markFirst);\n this.openEvent.emit();\n if (!this.searchTerm) {\n this.focus();\n }\n this.detectChanges();\n }\n close() {\n if (!this.isOpen || this._manualOpen) {\n return;\n }\n this.isOpen = false;\n this._isComposing = false;\n if (!this._editableSearchTerm) {\n this._clearSearch();\n } else {\n this.itemsList.resetFilteredItems();\n }\n this.itemsList.unmarkItem();\n this._onTouched();\n this.closeEvent.emit();\n this._cd.markForCheck();\n }\n toggleItem(item) {\n if (!item || item.disabled || this.disabled) {\n return;\n }\n if (this.deselectOnClick && item.selected) {\n this.unselect(item);\n } else {\n this.select(item);\n }\n if (this._editableSearchTerm) {\n this._setSearchTermFromItems();\n }\n }\n select(item) {\n if (!item.selected) {\n this.itemsList.select(item);\n if (this.clearSearchOnAdd && !this._editableSearchTerm) {\n this._clearSearch();\n }\n this._updateNgModel();\n if (this.multiple) {\n this.addEvent.emit(item.value);\n }\n }\n if (this.closeOnSelect || this.itemsList.noItemsToSelect) {\n this.close();\n }\n this._onSelectionChanged();\n }\n focus() {\n this.searchInput.nativeElement.focus();\n }\n blur() {\n this.searchInput.nativeElement.blur();\n }\n unselect(item) {\n if (!item) {\n return;\n }\n this.itemsList.unselect(item);\n this.focus();\n this._updateNgModel();\n this.removeEvent.emit(item.value);\n this._onSelectionChanged();\n }\n selectTag() {\n let tag;\n if (isFunction(this.addTag)) {\n tag = this.addTag(this.searchTerm);\n } else {\n tag = this._primitive ? this.searchTerm : {\n [this.bindLabel]: this.searchTerm\n };\n }\n const handleTag = item => this._isTypeahead || !this.isOpen ? this.itemsList.mapItem(item, null) : this.itemsList.addItem(item);\n if (isPromise(tag)) {\n tag.then(item => this.select(handleTag(item))).catch(() => {});\n } else if (tag) {\n this.select(handleTag(tag));\n }\n }\n showClear() {\n return this.clearable && (this.hasValue || this.searchTerm) && !this.disabled;\n }\n focusOnClear() {\n this.blur();\n if (this.clearButton) {\n this.clearButton.nativeElement.focus();\n }\n }\n showNoItemsFound() {\n const empty = this.itemsList.filteredItems.length === 0;\n return (empty && !this._isTypeahead && !this.loading || empty && this._isTypeahead && this._validTerm && !this.loading) && !this.showAddTag;\n }\n showTypeToSearch() {\n const empty = this.itemsList.filteredItems.length === 0;\n return empty && this._isTypeahead && !this._validTerm && !this.loading;\n }\n onCompositionStart() {\n this._isComposing = true;\n }\n onCompositionEnd(term) {\n this._isComposing = false;\n if (this.searchWhileComposing) {\n return;\n }\n this.filter(term);\n }\n filter(term) {\n if (this._isComposing && !this.searchWhileComposing) {\n return;\n }\n this.searchTerm = term;\n if (this._isTypeahead && (this._validTerm || this.minTermLength === 0)) {\n this.typeahead.next(term);\n }\n if (!this._isTypeahead) {\n this.itemsList.filter(this.searchTerm);\n if (this.isOpen) {\n this.itemsList.markSelectedOrDefault(this.markFirst);\n }\n }\n this.searchEvent.emit({\n term,\n items: this.itemsList.filteredItems.map(x => x.value)\n });\n this.open();\n }\n onInputFocus($event) {\n if (this.focused) {\n return;\n }\n if (this._editableSearchTerm) {\n this._setSearchTermFromItems();\n }\n this.element.classList.add('ng-select-focused');\n this.focusEvent.emit($event);\n this.focused = true;\n }\n onInputBlur($event) {\n this.element.classList.remove('ng-select-focused');\n this.blurEvent.emit($event);\n if (!this.isOpen && !this.disabled) {\n this._onTouched();\n }\n if (this._editableSearchTerm) {\n this._setSearchTermFromItems();\n }\n this.focused = false;\n }\n onItemHover(item) {\n if (item.disabled) {\n return;\n }\n this.itemsList.markItem(item);\n }\n detectChanges() {\n if (!this._cd.destroyed) {\n this._cd.detectChanges();\n }\n }\n _setSearchTermFromItems() {\n const selected = this.selectedItems && this.selectedItems[0];\n this.searchTerm = selected && selected.label || null;\n }\n _setItems(items) {\n const firstItem = items[0];\n this.bindLabel = this.bindLabel || this._defaultLabel;\n this._primitive = isDefined(firstItem) ? !isObject(firstItem) : this._primitive || this.bindLabel === this._defaultLabel;\n this.itemsList.setItems(items);\n if (items.length > 0 && this.hasValue) {\n this.itemsList.mapSelectedItems();\n }\n if (this.isOpen && isDefined(this.searchTerm) && !this._isTypeahead) {\n this.itemsList.filter(this.searchTerm);\n }\n if (this._isTypeahead || this.isOpen) {\n this.itemsList.markSelectedOrDefault(this.markFirst);\n }\n }\n _setItemsFromNgOptions() {\n const mapNgOptions = options => {\n this.items = options.map(option => ({\n $ngOptionValue: option.value,\n $ngOptionLabel: option.elementRef.nativeElement.innerHTML,\n disabled: option.disabled\n }));\n this.itemsList.setItems(this.items);\n if (this.hasValue) {\n this.itemsList.mapSelectedItems();\n }\n this.detectChanges();\n };\n const handleOptionChange = () => {\n const changedOrDestroyed = merge(this.ngOptions.changes, this._destroy$);\n merge(...this.ngOptions.map(option => option.stateChange$)).pipe(takeUntil(changedOrDestroyed)).subscribe(option => {\n const item = this.itemsList.findItem(option.value);\n item.disabled = option.disabled;\n item.label = option.label || item.label;\n this._cd.detectChanges();\n });\n };\n this.ngOptions.changes.pipe(startWith(this.ngOptions), takeUntil(this._destroy$)).subscribe(options => {\n this.bindLabel = this._defaultLabel;\n mapNgOptions(options);\n handleOptionChange();\n });\n }\n _isValidWriteValue(value) {\n if (!isDefined(value) || this.multiple && value === '' || Array.isArray(value) && value.length === 0) {\n return false;\n }\n const validateBinding = item => {\n if (!isDefined(this.compareWith) && isObject(item) && this.bindValue) {\n this._console.warn(`Setting object(${JSON.stringify(item)}) as your model with bindValue is not allowed unless [compareWith] is used.`);\n return false;\n }\n return true;\n };\n if (this.multiple) {\n if (!Array.isArray(value)) {\n this._console.warn('Multiple select ngModel should be array.');\n return false;\n }\n return value.every(item => validateBinding(item));\n } else {\n return validateBinding(value);\n }\n }\n _handleWriteValue(ngModel) {\n if (!this._isValidWriteValue(ngModel)) {\n return;\n }\n const select = val => {\n let item = this.itemsList.findItem(val);\n if (item) {\n this.itemsList.select(item);\n } else {\n const isValObject = isObject(val);\n const isPrimitive = !isValObject && !this.bindValue;\n if (isValObject || isPrimitive) {\n this.itemsList.select(this.itemsList.mapItem(val, null));\n } else if (this.bindValue) {\n item = {\n [this.bindLabel]: null,\n [this.bindValue]: val\n };\n this.itemsList.select(this.itemsList.mapItem(item, null));\n }\n }\n };\n if (this.multiple) {\n ngModel.forEach(item => select(item));\n } else {\n select(ngModel);\n }\n }\n _handleKeyPresses() {\n if (this.searchable) {\n return;\n }\n this._keyPress$.pipe(takeUntil(this._destroy$), tap(letter => this._pressedKeys.push(letter)), debounceTime(200), filter(() => this._pressedKeys.length > 0), map(() => this._pressedKeys.join(''))).subscribe(term => {\n const item = this.itemsList.findByLabel(term);\n if (item) {\n if (this.isOpen) {\n this.itemsList.markItem(item);\n this._scrollToMarked();\n this._cd.markForCheck();\n } else {\n this.select(item);\n }\n }\n this._pressedKeys = [];\n });\n }\n _setInputAttributes() {\n const input = this.searchInput.nativeElement;\n const attributes = {\n type: 'text',\n autocorrect: 'off',\n autocapitalize: 'off',\n autocomplete: this.labelForId ? 'off' : this.dropdownId,\n ...this.inputAttrs\n };\n for (const key of Object.keys(attributes)) {\n input.setAttribute(key, attributes[key]);\n }\n }\n _updateNgModel() {\n const model = [];\n for (const item of this.selectedItems) {\n if (this.bindValue) {\n let value = null;\n if (item.children) {\n const groupKey = this.groupValue ? this.bindValue : this.groupBy;\n value = item.value[groupKey || this.groupBy];\n } else {\n value = this.itemsList.resolveNested(item.value, this.bindValue);\n }\n model.push(value);\n } else {\n model.push(item.value);\n }\n }\n const selected = this.selectedItems.map(x => x.value);\n if (this.multiple) {\n this._onChange(model);\n this.changeEvent.emit(selected);\n } else {\n this._onChange(isDefined(model[0]) ? model[0] : null);\n this.changeEvent.emit(selected[0]);\n }\n this._cd.markForCheck();\n }\n _clearSearch() {\n if (!this.searchTerm) {\n return;\n }\n this._changeSearch(null);\n this.itemsList.resetFilteredItems();\n }\n _changeSearch(searchTerm) {\n this.searchTerm = searchTerm;\n if (this._isTypeahead) {\n this.typeahead.next(searchTerm);\n }\n }\n _scrollToMarked() {\n if (!this.isOpen || !this.dropdownPanel) {\n return;\n }\n this.dropdownPanel.scrollTo(this.itemsList.markedItem);\n }\n _scrollToTag() {\n if (!this.isOpen || !this.dropdownPanel) {\n return;\n }\n this.dropdownPanel.scrollToTag();\n }\n _onSelectionChanged() {\n if (this.isOpen && this.deselectOnClick && this.appendTo) {\n // Make sure items are rendered.\n this._cd.detectChanges();\n this.dropdownPanel.adjustPosition();\n }\n }\n _handleTab($event) {\n if (this.isOpen === false) {\n if (this.showClear() && !$event.shiftKey) {\n this.focusOnClear();\n $event.preventDefault();\n } else if (!this.addTag) {\n return;\n }\n }\n if (this.selectOnTab) {\n if (this.itemsList.markedItem) {\n this.toggleItem(this.itemsList.markedItem);\n $event.preventDefault();\n } else if (this.showAddTag) {\n this.selectTag();\n $event.preventDefault();\n } else {\n this.close();\n }\n } else {\n this.close();\n }\n }\n _handleEnter($event) {\n if (this.isOpen || this._manualOpen) {\n if (this.itemsList.markedItem) {\n this.toggleItem(this.itemsList.markedItem);\n } else if (this.showAddTag) {\n this.selectTag();\n }\n } else if (this.openOnEnter) {\n this.open();\n } else {\n return;\n }\n $event.preventDefault();\n }\n _handleSpace($event) {\n if (this.isOpen || this._manualOpen) {\n return;\n }\n this.open();\n $event.preventDefault();\n }\n _handleArrowDown($event) {\n if (this._nextItemIsTag(+1)) {\n this.itemsList.unmarkItem();\n this._scrollToTag();\n } else {\n this.itemsList.markNextItem();\n this._scrollToMarked();\n }\n this.open();\n $event.preventDefault();\n }\n _handleArrowUp($event) {\n if (!this.isOpen) {\n return;\n }\n if (this._nextItemIsTag(-1)) {\n this.itemsList.unmarkItem();\n this._scrollToTag();\n } else {\n this.itemsList.markPreviousItem();\n this._scrollToMarked();\n }\n $event.preventDefault();\n }\n _nextItemIsTag(nextStep) {\n const nextIndex = this.itemsList.markedIndex + nextStep;\n return this.addTag && this.searchTerm && this.itemsList.markedItem && (nextIndex < 0 || nextIndex === this.itemsList.filteredItems.length);\n }\n _handleBackspace() {\n if (this.searchTerm || !this.clearable || !this.clearOnBackspace || !this.hasValue) {\n return;\n }\n if (this.multiple) {\n this.unselect(this.itemsList.lastSelectedItem);\n } else {\n this.clearModel();\n }\n }\n _mergeGlobalConfig(config) {\n this.placeholder = this.placeholder || config.placeholder;\n this.fixedPlaceholder = this.fixedPlaceholder || config.fixedPlaceholder;\n this.notFoundText = this.notFoundText || config.notFoundText;\n this.typeToSearchText = this.typeToSearchText || config.typeToSearchText;\n this.addTagText = this.addTagText || config.addTagText;\n this.loadingText = this.loadingText || config.loadingText;\n this.clearAllText = this.clearAllText || config.clearAllText;\n this.virtualScroll = isDefined(this.virtualScroll) ? this.virtualScroll : isDefined(config.disableVirtualScroll) ? !config.disableVirtualScroll : false;\n this.openOnEnter = isDefined(this.openOnEnter) ? this.openOnEnter : config.openOnEnter;\n this.appendTo = this.appendTo || config.appendTo;\n this.bindValue = this.bindValue || config.bindValue;\n this.bindLabel = this.bindLabel || config.bindLabel;\n this.appearance = this.appearance || config.appearance;\n }\n static {\n this.ɵfac = function NgSelectComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgSelectComponent)(i0.ɵɵinjectAttribute('class'), i0.ɵɵinjectAttribute('autofocus'), i0.ɵɵdirectiveInject(NgSelectConfig), i0.ɵɵdirectiveInject(SELECTION_MODEL_FACTORY, 8), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(ConsoleService));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgSelectComponent,\n selectors: [[\"ng-select\"]],\n contentQueries: function NgSelectComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, NgOptionTemplateDirective, 5, TemplateRef);\n i0.ɵɵcontentQuery(dirIndex, NgOptgroupTemplateDirective, 5, TemplateRef);\n i0.ɵɵcontentQuery(dirIndex, NgLabelTemplateDirective, 5, TemplateRef);\n i0.ɵɵcontentQuery(dirIndex, NgMultiLabelTemplateDirective, 5, TemplateRef);\n i0.ɵɵcontentQuery(dirIndex, NgHeaderTemplateDirective, 5, TemplateRef);\n i0.ɵɵcontentQuery(dirIndex, NgFooterTemplateDirective, 5, TemplateRef);\n i0.ɵɵcontentQuery(dirIndex, NgNotFoundTemplateDirective, 5, TemplateRef);\n i0.ɵɵcontentQuery(dirIndex, NgPlaceholderTemplateDirective, 5, TemplateRef);\n i0.ɵɵcontentQuery(dirIndex, NgTypeToSearchTemplateDirective, 5, TemplateRef);\n i0.ɵɵcontentQuery(dirIndex, NgLoadingTextTemplateDirective, 5, TemplateRef);\n i0.ɵɵcontentQuery(dirIndex, NgTagTemplateDirective, 5, TemplateRef);\n i0.ɵɵcontentQuery(dirIndex, NgLoadingSpinnerTemplateDirective, 5, TemplateRef);\n i0.ɵɵcontentQuery(dirIndex, NgOptionComponent, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.optionTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.optgroupTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.labelTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.multiLabelTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.headerTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.footerTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.notFoundTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.placeholderTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.typeToSearchTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.loadingTextTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tagTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.loadingSpinnerTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.ngOptions = _t);\n }\n },\n viewQuery: function NgSelectComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(NgDropdownPanelComponent, 5);\n i0.ɵɵviewQuery(_c5, 7);\n i0.ɵɵviewQuery(_c6, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dropdownPanel = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.searchInput = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.clearButton = _t.first);\n }\n },\n hostVars: 20,\n hostBindings: function NgSelectComponent_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"keydown\", function NgSelectComponent_keydown_HostBindingHandler($event) {\n return ctx.handleKeyDown($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"ng-select-typeahead\", ctx.typeahead)(\"ng-select-multiple\", ctx.multiple)(\"ng-select-taggable\", ctx.addTag)(\"ng-select-searchable\", ctx.searchable)(\"ng-select-clearable\", ctx.clearable)(\"ng-select-opened\", ctx.isOpen)(\"ng-select\", ctx.useDefaultClass)(\"ng-select-filtered\", ctx.filtered)(\"ng-select-single\", ctx.single)(\"ng-select-disabled\", ctx.disabled);\n }\n },\n inputs: {\n bindLabel: \"bindLabel\",\n bindValue: \"bindValue\",\n ariaLabel: \"ariaLabel\",\n markFirst: [2, \"markFirst\", \"markFirst\", booleanAttribute],\n placeholder: \"placeholder\",\n fixedPlaceholder: \"fixedPlaceholder\",\n notFoundText: \"notFoundText\",\n typeToSearchText: \"typeToSearchText\",\n preventToggleOnRightClick: \"preventToggleOnRightClick\",\n addTagText: \"addTagText\",\n loadingText: \"loadingText\",\n clearAllText: \"clearAllText\",\n appearance: \"appearance\",\n dropdownPosition: \"dropdownPosition\",\n appendTo: \"appendTo\",\n loading: [2, \"loading\", \"loading\", booleanAttribute],\n closeOnSelect: [2, \"closeOnSelect\", \"closeOnSelect\", booleanAttribute],\n hideSelected: [2, \"hideSelected\", \"hideSelected\", booleanAttribute],\n selectOnTab: [2, \"selectOnTab\", \"selectOnTab\", booleanAttribute],\n openOnEnter: [2, \"openOnEnter\", \"openOnEnter\", booleanAttribute],\n maxSelectedItems: [2, \"maxSelectedItems\", \"maxSelectedItems\", numberAttribute],\n groupBy: \"groupBy\",\n groupValue: \"groupValue\",\n bufferAmount: [2, \"bufferAmount\", \"bufferAmount\", numberAttribute],\n virtualScroll: [2, \"virtualScroll\", \"virtualScroll\", booleanAttribute],\n selectableGroup: [2, \"selectableGroup\", \"selectableGroup\", booleanAttribute],\n selectableGroupAsModel: [2, \"selectableGroupAsModel\", \"selectableGroupAsModel\", booleanAttribute],\n searchFn: \"searchFn\",\n trackByFn: \"trackByFn\",\n clearOnBackspace: [2, \"clearOnBackspace\", \"clearOnBackspace\", booleanAttribute],\n labelForId: \"labelForId\",\n inputAttrs: \"inputAttrs\",\n tabIndex: [2, \"tabIndex\", \"tabIndex\", numberAttribute],\n readonly: [2, \"readonly\", \"readonly\", booleanAttribute],\n searchWhileComposing: [2, \"searchWhileComposing\", \"searchWhileComposing\", booleanAttribute],\n minTermLength: [2, \"minTermLength\", \"minTermLength\", numberAttribute],\n editableSearchTerm: [2, \"editableSearchTerm\", \"editableSearchTerm\", booleanAttribute],\n ngClass: \"ngClass\",\n typeahead: \"typeahead\",\n multiple: [2, \"multiple\", \"multiple\", booleanAttribute],\n addTag: \"addTag\",\n searchable: [2, \"searchable\", \"searchable\", booleanAttribute],\n clearable: [2, \"clearable\", \"clearable\", booleanAttribute],\n isOpen: \"isOpen\",\n items: \"items\",\n compareWith: \"compareWith\",\n clearSearchOnAdd: \"clearSearchOnAdd\",\n deselectOnClick: \"deselectOnClick\",\n keyDownFn: \"keyDownFn\"\n },\n outputs: {\n blurEvent: \"blur\",\n focusEvent: \"focus\",\n changeEvent: \"change\",\n openEvent: \"open\",\n closeEvent: \"close\",\n searchEvent: \"search\",\n clearEvent: \"clear\",\n addEvent: \"add\",\n removeEvent: \"remove\",\n scroll: \"scroll\",\n scrollToEnd: \"scrollToEnd\"\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgSelectComponent),\n multi: true\n }, NgDropdownPanelService]), i0.ɵɵInputTransformsFeature, i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 13,\n vars: 19,\n consts: [[\"searchInput\", \"\"], [\"defaultPlaceholderTemplate\", \"\"], [\"defaultLabelTemplate\", \"\"], [\"defaultLoadingSpinnerTemplate\", \"\"], [\"clearButton\", \"\"], [\"defaultOptionTemplate\", \"\"], [\"defaultTagTemplate\", \"\"], [\"defaultNotFoundTemplate\", \"\"], [\"defaultTypeToSearchTemplate\", \"\"], [\"defaultLoadingTextTemplate\", \"\"], [1, \"ng-select-container\", 3, \"mousedown\"], [1, \"ng-value-container\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"ng-input\"], [\"aria-autocomplete\", \"list\", \"role\", \"combobox\", 3, \"blur\", \"change\", \"compositionend\", \"compositionstart\", \"focus\", \"input\", \"disabled\", \"readOnly\", \"value\"], [\"role\", \"button\", \"tabindex\", \"0\", 1, \"ng-clear-wrapper\", 3, \"title\"], [1, \"ng-arrow-wrapper\"], [1, \"ng-arrow\"], [\"role\", \"listbox\", \"aria-label\", \"Options list\", 1, \"ng-dropdown-panel\", 3, \"virtualScroll\", \"bufferAmount\", \"appendTo\", \"position\", \"headerTemplate\", \"footerTemplate\", \"filterValue\", \"items\", \"markedItem\", \"ng-select-multiple\", \"ngClass\", \"id\"], [3, \"ngTemplateOutlet\"], [1, \"ng-placeholder\"], [1, \"ng-value\", 3, \"ng-value-disabled\"], [1, \"ng-value\"], [\"aria-hidden\", \"true\", 1, \"ng-value-icon\", \"left\", 3, \"click\"], [1, \"ng-value-label\", 3, \"ngItemLabel\", \"escape\"], [1, \"ng-spinner-loader\"], [\"aria-hidden\", \"true\", 1, \"ng-clear\"], [\"role\", \"listbox\", \"aria-label\", \"Options list\", 1, \"ng-dropdown-panel\", 3, \"update\", \"scroll\", \"scrollToEnd\", \"outsideClick\", \"virtualScroll\", \"bufferAmount\", \"appendTo\", \"position\", \"headerTemplate\", \"footerTemplate\", \"filterValue\", \"items\", \"markedItem\", \"ngClass\", \"id\"], [1, \"ng-option\", 3, \"ng-option-disabled\", \"ng-option-selected\", \"ng-optgroup\", \"ng-option\", \"ng-option-child\", \"ng-option-marked\"], [\"role\", \"option\", 1, \"ng-option\", 3, \"ng-option-marked\"], [1, \"ng-option\", 3, \"click\", \"mouseover\"], [1, \"ng-option-label\", 3, \"ngItemLabel\", \"escape\"], [\"role\", \"option\", 1, \"ng-option\", 3, \"mouseover\", \"click\"], [1, \"ng-tag-label\"], [1, \"ng-option\", \"ng-option-disabled\"]],\n template: function NgSelectComponent_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 10);\n i0.ɵɵlistener(\"mousedown\", function NgSelectComponent_Template_div_mousedown_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.handleMousedown($event));\n });\n i0.ɵɵelementStart(1, \"div\", 11);\n i0.ɵɵtemplate(2, NgSelectComponent_Conditional_2_Template, 3, 1)(3, NgSelectComponent_Conditional_3_Template, 2, 0)(4, NgSelectComponent_Conditional_4_Template, 1, 5, null, 12);\n i0.ɵɵelementStart(5, \"div\", 13)(6, \"input\", 14, 0);\n i0.ɵɵlistener(\"blur\", function NgSelectComponent_Template_input_blur_6_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onInputBlur($event));\n })(\"change\", function NgSelectComponent_Template_input_change_6_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView($event.stopPropagation());\n })(\"compositionend\", function NgSelectComponent_Template_input_compositionend_6_listener() {\n i0.ɵɵrestoreView(_r1);\n const searchInput_r7 = i0.ɵɵreference(7);\n return i0.ɵɵresetView(ctx.onCompositionEnd(searchInput_r7.value));\n })(\"compositionstart\", function NgSelectComponent_Template_input_compositionstart_6_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onCompositionStart());\n })(\"focus\", function NgSelectComponent_Template_input_focus_6_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onInputFocus($event));\n })(\"input\", function NgSelectComponent_Template_input_input_6_listener() {\n i0.ɵɵrestoreView(_r1);\n const searchInput_r7 = i0.ɵɵreference(7);\n return i0.ɵɵresetView(ctx.filter(searchInput_r7.value));\n });\n i0.ɵɵelementEnd()()();\n i0.ɵɵtemplate(8, NgSelectComponent_Conditional_8_Template, 3, 1)(9, NgSelectComponent_Conditional_9_Template, 4, 1, \"span\", 15);\n i0.ɵɵelementStart(10, \"span\", 16);\n i0.ɵɵelement(11, \"span\", 17);\n i0.ɵɵelementEnd()();\n i0.ɵɵtemplate(12, NgSelectComponent_Conditional_12_Template, 8, 17, \"ng-dropdown-panel\", 18);\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"ng-appearance-outline\", ctx.appearance === \"outline\")(\"ng-has-value\", ctx.hasValue);\n i0.ɵɵadvance(2);\n i0.ɵɵconditional(ctx.selectedItems.length === 0 && !ctx.searchTerm || ctx.fixedPlaceholder === true ? 2 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional((!ctx.multiLabelTemplate || !ctx.multiple) && ctx.selectedItems.length > 0 ? 3 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx.multiple && ctx.multiLabelTemplate && ctx.selectedValues.length > 0 ? 4 : -1);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"disabled\", ctx.disabled)(\"readOnly\", !ctx.searchable || ctx.itemsList.maxItemsSelected)(\"value\", ctx.searchTerm ? ctx.searchTerm : \"\");\n i0.ɵɵattribute(\"aria-activedescendant\", ctx.isOpen ? ctx.itemsList == null ? null : ctx.itemsList.markedItem == null ? null : ctx.itemsList.markedItem.htmlId : null)(\"aria-controls\", ctx.isOpen ? ctx.dropdownId : null)(\"aria-expanded\", ctx.isOpen)(\"aria-label\", ctx.ariaLabel)(\"id\", ctx.labelForId)(\"tabindex\", ctx.tabIndex);\n i0.ɵɵadvance(2);\n i0.ɵɵconditional(ctx.loading ? 8 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx.showClear() ? 9 : -1);\n i0.ɵɵadvance(3);\n i0.ɵɵconditional(ctx.isOpen ? 12 : -1);\n }\n },\n dependencies: [NgTemplateOutlet, NgItemLabelDirective, NgDropdownPanelComponent, NgClass],\n styles: [\"@charset \\\"UTF-8\\\";.ng-select{position:relative;display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ng-select div,.ng-select input,.ng-select span{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ng-select [hidden]{display:none}.ng-select.ng-select-searchable .ng-select-container .ng-value-container .ng-input{opacity:1}.ng-select.ng-select-opened .ng-select-container{z-index:1001}.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-placeholder,.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-value{-webkit-user-select:none;user-select:none;cursor:default}.ng-select.ng-select-disabled .ng-arrow-wrapper{cursor:default}.ng-select.ng-select-filtered .ng-placeholder{display:none}.ng-select .ng-select-container{cursor:default;display:flex;outline:none;overflow:hidden;position:relative;width:100%}.ng-select .ng-select-container .ng-value-container{display:flex;flex:1}.ng-select .ng-select-container .ng-value-container .ng-input{opacity:0}.ng-select .ng-select-container .ng-value-container .ng-input>input{box-sizing:content-box;background:none transparent;border:0 none;box-shadow:none;outline:none;padding:0;cursor:default;width:100%}.ng-select .ng-select-container .ng-value-container .ng-input>input::-ms-clear{display:none}.ng-select .ng-select-container .ng-value-container .ng-input>input[readonly]{-webkit-user-select:unset;user-select:unset;width:0;padding:0}.ng-select.ng-select-single.ng-select-filtered .ng-select-container .ng-value-container .ng-value{visibility:hidden}.ng-select.ng-select-single .ng-select-container .ng-value-container,.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{position:absolute;left:0;width:100%}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{flex-wrap:wrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{position:absolute}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{white-space:nowrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{cursor:pointer}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{flex:1;z-index:2}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{z-index:1}.ng-select .ng-clear-wrapper{cursor:pointer;position:relative;width:17px;-webkit-user-select:none;user-select:none}.ng-select .ng-clear-wrapper .ng-clear{display:inline-block;font-size:18px;line-height:1;pointer-events:none}.ng-select .ng-spinner-loader{border-radius:50%;width:17px;height:17px;margin-right:5px;font-size:10px;position:relative;text-indent:-9999em;border-top:2px solid rgba(66,66,66,.2);border-right:2px solid rgba(66,66,66,.2);border-bottom:2px solid rgba(66,66,66,.2);border-left:2px solid #424242;transform:translateZ(0);animation:load8 .8s infinite linear}.ng-select .ng-spinner-loader:after{border-radius:50%;width:17px;height:17px}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ng-select .ng-arrow-wrapper{cursor:pointer;position:relative;text-align:center;-webkit-user-select:none;user-select:none}.ng-select .ng-arrow-wrapper .ng-arrow{pointer-events:none;display:inline-block;height:0;width:0;position:relative}.ng-dropdown-panel{box-sizing:border-box;position:absolute;opacity:0;width:100%;z-index:1050;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .ng-dropdown-panel-items{display:block;height:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;max-height:240px;overflow-y:auto}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{box-sizing:border-box;cursor:pointer;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-option-label:empty:before{content:\\\"\\\\200b\\\"}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .highlighted{font-weight:700;text-decoration:underline}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.disabled{cursor:default}.ng-dropdown-panel .scroll-host{overflow:hidden;overflow-y:auto;position:relative;display:block;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .scrollable-content{top:0;left:0;width:100%;height:100%;position:absolute}.ng-dropdown-panel .total-padding{width:1px;opacity:0}\\n\"],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NgSelectComponent, [{\n type: Component,\n args: [{\n selector: 'ng-select',\n standalone: true,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgSelectComponent),\n multi: true\n }, NgDropdownPanelService],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, NgItemLabelDirective, NgDropdownPanelComponent, NgClass],\n template: \"\\n\\t
\\n\\t\\t@if ((selectedItems.length === 0 && !searchTerm) || fixedPlaceholder === true) {\\n\\t\\t\\t\\n\\t\\t\\t\\t
{{ placeholder }}
\\n\\t\\t\\t
\\n\\t\\t\\t \\n\\t\\t}\\n\\n\\t\\t@if ((!multiLabelTemplate || !multiple) && selectedItems.length > 0) {\\n\\t\\t\\t@for (item of selectedItems; track trackByOption($index, item)) {\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\u00D7\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t@if (multiple && multiLabelTemplate && selectedValues.length > 0) {\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t}\\n\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t
\\n\\t
\\n\\n\\t@if (loading) {\\n\\t\\t\\n\\t\\t\\t
\\n\\t\\t
\\n\\t\\t\\n\\t}\\n\\n\\t@if (showClear()) {\\n\\t\\t\\n\\t\\t\\t\\u00D7\\n\\t\\t\\n\\t}\\n\\n\\t\\n\\t\\t\\n\\t\\n\\n\\n@if (isOpen) {\\n\\t\\n\\t\\t\\n\\t\\t\\t@for (item of viewPortItems; track trackByOption($index, item)) {\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t}\\n\\t\\t\\t@if (showAddTag) {\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t{{ addTagText }}\\\"{{ searchTerm }}\\\"\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t}\\n\\t\\t\\n\\t\\t@if (showNoItemsFound()) {\\n\\t\\t\\t\\n\\t\\t\\t\\t
{{ notFoundText }}
\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t}\\n\\t\\t@if (showTypeToSearch()) {\\n\\t\\t\\t\\n\\t\\t\\t\\t
{{ typeToSearchText }}
\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t}\\n\\t\\t@if (loading && itemsList.filteredItems.length === 0) {\\n\\t\\t\\t\\n\\t\\t\\t\\t
{{ loadingText }}
\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t}\\n\\t\\n}\\n\",\n styles: [\"@charset \\\"UTF-8\\\";.ng-select{position:relative;display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ng-select div,.ng-select input,.ng-select span{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ng-select [hidden]{display:none}.ng-select.ng-select-searchable .ng-select-container .ng-value-container .ng-input{opacity:1}.ng-select.ng-select-opened .ng-select-container{z-index:1001}.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-placeholder,.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-value{-webkit-user-select:none;user-select:none;cursor:default}.ng-select.ng-select-disabled .ng-arrow-wrapper{cursor:default}.ng-select.ng-select-filtered .ng-placeholder{display:none}.ng-select .ng-select-container{cursor:default;display:flex;outline:none;overflow:hidden;position:relative;width:100%}.ng-select .ng-select-container .ng-value-container{display:flex;flex:1}.ng-select .ng-select-container .ng-value-container .ng-input{opacity:0}.ng-select .ng-select-container .ng-value-container .ng-input>input{box-sizing:content-box;background:none transparent;border:0 none;box-shadow:none;outline:none;padding:0;cursor:default;width:100%}.ng-select .ng-select-container .ng-value-container .ng-input>input::-ms-clear{display:none}.ng-select .ng-select-container .ng-value-container .ng-input>input[readonly]{-webkit-user-select:unset;user-select:unset;width:0;padding:0}.ng-select.ng-select-single.ng-select-filtered .ng-select-container .ng-value-container .ng-value{visibility:hidden}.ng-select.ng-select-single .ng-select-container .ng-value-container,.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{position:absolute;left:0;width:100%}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{flex-wrap:wrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{position:absolute}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{white-space:nowrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{cursor:pointer}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{flex:1;z-index:2}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{z-index:1}.ng-select .ng-clear-wrapper{cursor:pointer;position:relative;width:17px;-webkit-user-select:none;user-select:none}.ng-select .ng-clear-wrapper .ng-clear{display:inline-block;font-size:18px;line-height:1;pointer-events:none}.ng-select .ng-spinner-loader{border-radius:50%;width:17px;height:17px;margin-right:5px;font-size:10px;position:relative;text-indent:-9999em;border-top:2px solid rgba(66,66,66,.2);border-right:2px solid rgba(66,66,66,.2);border-bottom:2px solid rgba(66,66,66,.2);border-left:2px solid #424242;transform:translateZ(0);animation:load8 .8s infinite linear}.ng-select .ng-spinner-loader:after{border-radius:50%;width:17px;height:17px}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ng-select .ng-arrow-wrapper{cursor:pointer;position:relative;text-align:center;-webkit-user-select:none;user-select:none}.ng-select .ng-arrow-wrapper .ng-arrow{pointer-events:none;display:inline-block;height:0;width:0;position:relative}.ng-dropdown-panel{box-sizing:border-box;position:absolute;opacity:0;width:100%;z-index:1050;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .ng-dropdown-panel-items{display:block;height:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;max-height:240px;overflow-y:auto}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{box-sizing:border-box;cursor:pointer;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-option-label:empty:before{content:\\\"\\\\200b\\\"}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .highlighted{font-weight:700;text-decoration:underline}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.disabled{cursor:default}.ng-dropdown-panel .scroll-host{overflow:hidden;overflow-y:auto;position:relative;display:block;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .scrollable-content{top:0;left:0;width:100%;height:100%;position:absolute}.ng-dropdown-panel .total-padding{width:1px;opacity:0}\\n\"]\n }]\n }], () => [{\n type: undefined,\n decorators: [{\n type: Attribute,\n args: ['class']\n }]\n }, {\n type: undefined,\n decorators: [{\n type: Attribute,\n args: ['autofocus']\n }]\n }, {\n type: NgSelectConfig\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [SELECTION_MODEL_FACTORY]\n }, {\n type: Optional\n }]\n }, {\n type: i0.ElementRef\n }, {\n type: i0.ChangeDetectorRef\n }, {\n type: ConsoleService\n }], {\n bindLabel: [{\n type: Input\n }],\n bindValue: [{\n type: Input\n }],\n ariaLabel: [{\n type: Input\n }],\n markFirst: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n placeholder: [{\n type: Input\n }],\n fixedPlaceholder: [{\n type: Input\n }],\n notFoundText: [{\n type: Input\n }],\n typeToSearchText: [{\n type: Input\n }],\n preventToggleOnRightClick: [{\n type: Input\n }],\n addTagText: [{\n type: Input\n }],\n loadingText: [{\n type: Input\n }],\n clearAllText: [{\n type: Input\n }],\n appearance: [{\n type: Input\n }],\n dropdownPosition: [{\n type: Input\n }],\n appendTo: [{\n type: Input\n }],\n loading: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n closeOnSelect: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n hideSelected: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n selectOnTab: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n openOnEnter: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n maxSelectedItems: [{\n type: Input,\n args: [{\n transform: numberAttribute\n }]\n }],\n groupBy: [{\n type: Input\n }],\n groupValue: [{\n type: Input\n }],\n bufferAmount: [{\n type: Input,\n args: [{\n transform: numberAttribute\n }]\n }],\n virtualScroll: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n selectableGroup: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n selectableGroupAsModel: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n searchFn: [{\n type: Input\n }],\n trackByFn: [{\n type: Input\n }],\n clearOnBackspace: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n labelForId: [{\n type: Input\n }],\n inputAttrs: [{\n type: Input\n }],\n tabIndex: [{\n type: Input,\n args: [{\n transform: numberAttribute\n }]\n }],\n readonly: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n searchWhileComposing: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n minTermLength: [{\n type: Input,\n args: [{\n transform: numberAttribute\n }]\n }],\n editableSearchTerm: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n ngClass: [{\n type: Input\n }],\n typeahead: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.ng-select-typeahead']\n }],\n multiple: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }, {\n type: HostBinding,\n args: ['class.ng-select-multiple']\n }],\n addTag: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.ng-select-taggable']\n }],\n searchable: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }, {\n type: HostBinding,\n args: ['class.ng-select-searchable']\n }],\n clearable: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }, {\n type: HostBinding,\n args: ['class.ng-select-clearable']\n }],\n isOpen: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.ng-select-opened']\n }],\n blurEvent: [{\n type: Output,\n args: ['blur']\n }],\n focusEvent: [{\n type: Output,\n args: ['focus']\n }],\n changeEvent: [{\n type: Output,\n args: ['change']\n }],\n openEvent: [{\n type: Output,\n args: ['open']\n }],\n closeEvent: [{\n type: Output,\n args: ['close']\n }],\n searchEvent: [{\n type: Output,\n args: ['search']\n }],\n clearEvent: [{\n type: Output,\n args: ['clear']\n }],\n addEvent: [{\n type: Output,\n args: ['add']\n }],\n removeEvent: [{\n type: Output,\n args: ['remove']\n }],\n scroll: [{\n type: Output,\n args: ['scroll']\n }],\n scrollToEnd: [{\n type: Output,\n args: ['scrollToEnd']\n }],\n optionTemplate: [{\n type: ContentChild,\n args: [NgOptionTemplateDirective, {\n read: TemplateRef\n }]\n }],\n optgroupTemplate: [{\n type: ContentChild,\n args: [NgOptgroupTemplateDirective, {\n read: TemplateRef\n }]\n }],\n labelTemplate: [{\n type: ContentChild,\n args: [NgLabelTemplateDirective, {\n read: TemplateRef\n }]\n }],\n multiLabelTemplate: [{\n type: ContentChild,\n args: [NgMultiLabelTemplateDirective, {\n read: TemplateRef\n }]\n }],\n headerTemplate: [{\n type: ContentChild,\n args: [NgHeaderTemplateDirective, {\n read: TemplateRef\n }]\n }],\n footerTemplate: [{\n type: ContentChild,\n args: [NgFooterTemplateDirective, {\n read: TemplateRef\n }]\n }],\n notFoundTemplate: [{\n type: ContentChild,\n args: [NgNotFoundTemplateDirective, {\n read: TemplateRef\n }]\n }],\n placeholderTemplate: [{\n type: ContentChild,\n args: [NgPlaceholderTemplateDirective, {\n read: TemplateRef\n }]\n }],\n typeToSearchTemplate: [{\n type: ContentChild,\n args: [NgTypeToSearchTemplateDirective, {\n read: TemplateRef\n }]\n }],\n loadingTextTemplate: [{\n type: ContentChild,\n args: [NgLoadingTextTemplateDirective, {\n read: TemplateRef\n }]\n }],\n tagTemplate: [{\n type: ContentChild,\n args: [NgTagTemplateDirective, {\n read: TemplateRef\n }]\n }],\n loadingSpinnerTemplate: [{\n type: ContentChild,\n args: [NgLoadingSpinnerTemplateDirective, {\n read: TemplateRef\n }]\n }],\n dropdownPanel: [{\n type: ViewChild,\n args: [forwardRef(() => NgDropdownPanelComponent)]\n }],\n searchInput: [{\n type: ViewChild,\n args: ['searchInput', {\n static: true\n }]\n }],\n clearButton: [{\n type: ViewChild,\n args: ['clearButton']\n }],\n ngOptions: [{\n type: ContentChildren,\n args: [NgOptionComponent, {\n descendants: true\n }]\n }],\n useDefaultClass: [{\n type: HostBinding,\n args: ['class.ng-select']\n }],\n filtered: [{\n type: HostBinding,\n args: ['class.ng-select-filtered']\n }],\n single: [{\n type: HostBinding,\n args: ['class.ng-select-single']\n }],\n items: [{\n type: Input\n }],\n disabled: [{\n type: HostBinding,\n args: ['class.ng-select-disabled']\n }],\n compareWith: [{\n type: Input\n }],\n clearSearchOnAdd: [{\n type: Input\n }],\n deselectOnClick: [{\n type: Input\n }],\n keyDownFn: [{\n type: Input\n }],\n handleKeyDown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }]\n });\n})();\nclass NgSelectModule {\n static {\n this.ɵfac = function NgSelectModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgSelectModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgSelectModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [{\n provide: SELECTION_MODEL_FACTORY,\n useValue: DefaultSelectionModelFactory\n }]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NgSelectModule, [{\n type: NgModule,\n args: [{\n imports: [NgDropdownPanelComponent, NgOptionComponent, NgSelectComponent, NgOptgroupTemplateDirective, NgOptionTemplateDirective, NgLabelTemplateDirective, NgMultiLabelTemplateDirective, NgHeaderTemplateDirective, NgFooterTemplateDirective, NgPlaceholderTemplateDirective, NgNotFoundTemplateDirective, NgTypeToSearchTemplateDirective, NgLoadingTextTemplateDirective, NgTagTemplateDirective, NgLoadingSpinnerTemplateDirective, NgItemLabelDirective],\n exports: [NgSelectComponent, NgOptionComponent, NgOptgroupTemplateDirective, NgOptionTemplateDirective, NgLabelTemplateDirective, NgMultiLabelTemplateDirective, NgHeaderTemplateDirective, NgFooterTemplateDirective, NgPlaceholderTemplateDirective, NgNotFoundTemplateDirective, NgTypeToSearchTemplateDirective, NgLoadingTextTemplateDirective, NgTagTemplateDirective, NgLoadingSpinnerTemplateDirective],\n providers: [{\n provide: SELECTION_MODEL_FACTORY,\n useValue: DefaultSelectionModelFactory\n }]\n }]\n }], null, null);\n})();\n\n/*\n * Public API Surface of ng-select\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ConsoleService, DefaultSelectionModel, DefaultSelectionModelFactory, NgDropdownPanelComponent, NgDropdownPanelService, NgFooterTemplateDirective, NgHeaderTemplateDirective, NgItemLabelDirective, NgLabelTemplateDirective, NgLoadingSpinnerTemplateDirective, NgLoadingTextTemplateDirective, NgMultiLabelTemplateDirective, NgNotFoundTemplateDirective, NgOptgroupTemplateDirective, NgOptionComponent, NgOptionTemplateDirective, NgPlaceholderTemplateDirective, NgSelectComponent, NgSelectConfig, NgSelectModule, NgTagTemplateDirective, NgTypeToSearchTemplateDirective, SELECTION_MODEL_FACTORY };\n","import * as i0 from '@angular/core';\nimport { Injectable, Inject, Directive, EventEmitter, HostBinding, Output, Input, HostListener, ContentChildren, Component, ChangeDetectionStrategy, TemplateRef, ContentChild, ViewContainerRef, ViewChild, SkipSelf, ViewEncapsulation, Optional, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport { Subject, fromEvent, BehaviorSubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { __decorate } from 'tslib';\n\n/**\n * Gets the width of the scrollbar. Nesc for windows\n * http://stackoverflow.com/a/13382873/888165\n */\nconst _c0 = [\"*\"];\nconst _c1 = [\"cellTemplate\"];\nconst _c2 = a0 => ({\n cellContext: a0\n});\nfunction DataTableBodyCellComponent_label_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"label\", 5)(1, \"input\", 6);\n i0.ɵɵlistener(\"click\", function DataTableBodyCellComponent_label_1_Template_input_click_1_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onCheckboxChange($event));\n });\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"checked\", ctx_r1.isSelected);\n }\n}\nfunction DataTableBodyCellComponent_ng_container_2_button_1_i_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"i\", 12);\n }\n}\nfunction DataTableBodyCellComponent_ng_container_2_button_1_i_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"i\", 13);\n }\n}\nfunction DataTableBodyCellComponent_ng_container_2_button_1_i_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"i\", 14);\n }\n}\nfunction DataTableBodyCellComponent_ng_container_2_button_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r3 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 8);\n i0.ɵɵlistener(\"click\", function DataTableBodyCellComponent_ng_container_2_button_1_Template_button_click_0_listener() {\n i0.ɵɵrestoreView(_r3);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.onTreeAction());\n });\n i0.ɵɵelementStart(1, \"span\");\n i0.ɵɵtemplate(2, DataTableBodyCellComponent_ng_container_2_button_1_i_2_Template, 1, 0, \"i\", 9)(3, DataTableBodyCellComponent_ng_container_2_button_1_i_3_Template, 1, 0, \"i\", 10)(4, DataTableBodyCellComponent_ng_container_2_button_1_i_4_Template, 1, 0, \"i\", 11);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"disabled\", ctx_r1.treeStatus === \"disabled\");\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r1.treeStatus === \"loading\");\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.treeStatus === \"collapsed\");\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.treeStatus === \"expanded\" || ctx_r1.treeStatus === \"disabled\");\n }\n}\nfunction DataTableBodyCellComponent_ng_container_2_2_ng_template_0_Template(rf, ctx) {}\nfunction DataTableBodyCellComponent_ng_container_2_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DataTableBodyCellComponent_ng_container_2_2_ng_template_0_Template, 0, 0, \"ng-template\", 15);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.column.treeToggleTemplate)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(2, _c2, ctx_r1.cellContext));\n }\n}\nfunction DataTableBodyCellComponent_ng_container_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtemplate(1, DataTableBodyCellComponent_ng_container_2_button_1_Template, 5, 4, \"button\", 7)(2, DataTableBodyCellComponent_ng_container_2_2_Template, 1, 4, null, 3);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r1.column.treeToggleTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.column.treeToggleTemplate);\n }\n}\nfunction DataTableBodyCellComponent_span_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"span\", 16);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"title\", ctx_r1.sanitizedValue)(\"innerHTML\", ctx_r1.value, i0.ɵɵsanitizeHtml);\n }\n}\nfunction DataTableBodyCellComponent_4_ng_template_0_Template(rf, ctx) {}\nfunction DataTableBodyCellComponent_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DataTableBodyCellComponent_4_ng_template_0_Template, 0, 0, \"ng-template\", 15, 0, i0.ɵɵtemplateRefExtractor);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.column.cellTemplate)(\"ngTemplateOutletContext\", ctx_r1.cellContext);\n }\n}\nfunction DataTableBodyRowComponent_div_0_datatable_body_cell_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"datatable-body-cell\", 3);\n i0.ɵɵlistener(\"activate\", function DataTableBodyRowComponent_div_0_datatable_body_cell_1_Template_datatable_body_cell_activate_0_listener($event) {\n const ii_r2 = i0.ɵɵrestoreView(_r1).index;\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.onActivate($event, ii_r2));\n })(\"treeAction\", function DataTableBodyRowComponent_div_0_datatable_body_cell_1_Template_datatable_body_cell_treeAction_0_listener() {\n i0.ɵɵrestoreView(_r1);\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.onTreeAction());\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const column_r4 = ctx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"row\", ctx_r2.row)(\"group\", ctx_r2.group)(\"expanded\", ctx_r2.expanded)(\"isSelected\", ctx_r2.isSelected)(\"rowIndex\", ctx_r2.rowIndex)(\"column\", column_r4)(\"rowHeight\", ctx_r2.rowHeight)(\"displayCheck\", ctx_r2.displayCheck)(\"treeStatus\", ctx_r2.treeStatus);\n }\n}\nfunction DataTableBodyRowComponent_div_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 1);\n i0.ɵɵtemplate(1, DataTableBodyRowComponent_div_0_datatable_body_cell_1_Template, 1, 9, \"datatable-body-cell\", 2);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const colGroup_r5 = ctx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵclassMapInterpolate1(\"datatable-row-\", colGroup_r5.type, \" datatable-row-group\");\n i0.ɵɵproperty(\"ngStyle\", ctx_r2._groupStyles[colGroup_r5.type]);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", colGroup_r5.columns)(\"ngForTrackBy\", ctx_r2.columnTrackingFn);\n }\n}\nfunction DataTableSummaryRowComponent_datatable_body_row_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"datatable-body-row\", 1);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"innerWidth\", ctx_r0.innerWidth)(\"offsetX\", ctx_r0.offsetX)(\"columns\", ctx_r0._internalColumns)(\"rowHeight\", ctx_r0.rowHeight)(\"row\", ctx_r0.summaryRow)(\"rowIndex\", -1);\n }\n}\nfunction DataTableRowWrapperComponent_div_0_1_ng_template_0_Template(rf, ctx) {}\nfunction DataTableRowWrapperComponent_div_0_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DataTableRowWrapperComponent_div_0_1_ng_template_0_Template, 0, 0, \"ng-template\", 4);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.groupHeader.template)(\"ngTemplateOutletContext\", ctx_r0.groupContext);\n }\n}\nfunction DataTableRowWrapperComponent_div_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 3);\n i0.ɵɵtemplate(1, DataTableRowWrapperComponent_div_0_1_Template, 1, 2, null, 1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngStyle\", ctx_r0.getGroupHeaderStyle());\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.groupHeader && ctx_r0.groupHeader.template);\n }\n}\nfunction DataTableRowWrapperComponent_ng_content_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojection(0, 0, [\"*ngIf\", \"(groupHeader && groupHeader.template && expanded) || !groupHeader || !groupHeader.template\"]);\n }\n}\nfunction DataTableRowWrapperComponent_div_2_1_ng_template_0_Template(rf, ctx) {}\nfunction DataTableRowWrapperComponent_div_2_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DataTableRowWrapperComponent_div_2_1_ng_template_0_Template, 0, 0, \"ng-template\", 4);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.rowDetail.template)(\"ngTemplateOutletContext\", ctx_r0.rowContext);\n }\n}\nfunction DataTableRowWrapperComponent_div_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 5);\n i0.ɵɵtemplate(1, DataTableRowWrapperComponent_div_2_1_Template, 1, 2, null, 1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵstyleProp(\"height\", ctx_r0.detailRowHeight, \"px\");\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.rowDetail && ctx_r0.rowDetail.template);\n }\n}\nfunction DataTableBodyComponent_datatable_progress_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"datatable-progress\");\n }\n}\nfunction DataTableBodyComponent_datatable_scroller_3_datatable_summary_row_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"datatable-summary-row\", 10);\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"rowHeight\", ctx_r2.summaryHeight)(\"offsetX\", ctx_r2.offsetX)(\"innerWidth\", ctx_r2.innerWidth)(\"rows\", ctx_r2.rows)(\"columns\", ctx_r2.columns);\n }\n}\nfunction DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_datatable_body_row_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r5 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"datatable-body-row\", 13);\n i0.ɵɵlistener(\"treeAction\", function DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_datatable_body_row_1_Template_datatable_body_row_treeAction_0_listener() {\n i0.ɵɵrestoreView(_r5);\n const group_r6 = i0.ɵɵnextContext().$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.onTreeAction(group_r6));\n })(\"activate\", function DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_datatable_body_row_1_Template_datatable_body_row_activate_0_listener($event) {\n i0.ɵɵrestoreView(_r5);\n const i_r7 = i0.ɵɵnextContext().index;\n const ctx_r2 = i0.ɵɵnextContext(2);\n const selector_r8 = i0.ɵɵreference(2);\n return i0.ɵɵresetView(selector_r8.onActivate($event, ctx_r2.indexes.first + i_r7));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const group_r6 = i0.ɵɵnextContext().$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n const selector_r8 = i0.ɵɵreference(2);\n i0.ɵɵproperty(\"isSelected\", selector_r8.getRowSelected(group_r6))(\"innerWidth\", ctx_r2.innerWidth)(\"offsetX\", ctx_r2.offsetX)(\"columns\", ctx_r2.columns)(\"rowHeight\", ctx_r2.getRowHeight(group_r6))(\"row\", group_r6)(\"rowIndex\", ctx_r2.getRowIndex(group_r6))(\"expanded\", ctx_r2.getRowExpanded(group_r6))(\"rowClass\", ctx_r2.rowClass)(\"displayCheck\", ctx_r2.displayCheck)(\"treeStatus\", group_r6 && group_r6.treeStatus);\n }\n}\nfunction DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_ng_template_2_datatable_body_row_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r9 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"datatable-body-row\", 15);\n i0.ɵɵlistener(\"activate\", function DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_ng_template_2_datatable_body_row_0_Template_datatable_body_row_activate_0_listener($event) {\n const i_r10 = i0.ɵɵrestoreView(_r9).index;\n i0.ɵɵnextContext(4);\n const selector_r8 = i0.ɵɵreference(2);\n return i0.ɵɵresetView(selector_r8.onActivate($event, i_r10));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const row_r11 = ctx.$implicit;\n const group_r6 = i0.ɵɵnextContext(2).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n const selector_r8 = i0.ɵɵreference(2);\n i0.ɵɵproperty(\"isSelected\", selector_r8.getRowSelected(row_r11))(\"innerWidth\", ctx_r2.innerWidth)(\"offsetX\", ctx_r2.offsetX)(\"columns\", ctx_r2.columns)(\"rowHeight\", ctx_r2.getRowHeight(row_r11))(\"row\", row_r11)(\"group\", group_r6.value)(\"rowIndex\", ctx_r2.getRowIndex(row_r11))(\"expanded\", ctx_r2.getRowExpanded(row_r11))(\"rowClass\", ctx_r2.rowClass);\n }\n}\nfunction DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_ng_template_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_ng_template_2_datatable_body_row_0_Template, 1, 10, \"datatable-body-row\", 14);\n }\n if (rf & 2) {\n const group_r6 = i0.ɵɵnextContext().$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngForOf\", group_r6.value)(\"ngForTrackBy\", ctx_r2.rowTrackingFn);\n }\n}\nfunction DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r4 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"datatable-row-wrapper\", 11);\n i0.ɵɵlistener(\"rowContextmenu\", function DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_Template_datatable_row_wrapper_rowContextmenu_0_listener($event) {\n i0.ɵɵrestoreView(_r4);\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.rowContextmenu.emit($event));\n });\n i0.ɵɵtemplate(1, DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_datatable_body_row_1_Template, 1, 11, \"datatable-body-row\", 12)(2, DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_ng_template_2_Template, 1, 2, \"ng-template\", null, 1, i0.ɵɵtemplateRefExtractor);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const group_r6 = ctx.$implicit;\n const i_r7 = ctx.index;\n const groupedRowsTemplate_r12 = i0.ɵɵreference(3);\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"groupedRows\", ctx_r2.groupedRows)(\"innerWidth\", ctx_r2.innerWidth)(\"ngStyle\", ctx_r2.getRowsStyles(group_r6))(\"rowDetail\", ctx_r2.rowDetail)(\"groupHeader\", ctx_r2.groupHeader)(\"offsetX\", ctx_r2.offsetX)(\"detailRowHeight\", ctx_r2.getDetailRowHeight(group_r6 && group_r6[i_r7], i_r7))(\"row\", group_r6)(\"expanded\", ctx_r2.getRowExpanded(group_r6))(\"rowIndex\", ctx_r2.getRowIndex(group_r6 && group_r6[i_r7]));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r2.groupedRows)(\"ngIfElse\", groupedRowsTemplate_r12);\n }\n}\nfunction DataTableBodyComponent_datatable_scroller_3_datatable_summary_row_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"datatable-summary-row\", 16);\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngStyle\", ctx_r2.getBottomSummaryRowStyles())(\"rowHeight\", ctx_r2.summaryHeight)(\"offsetX\", ctx_r2.offsetX)(\"innerWidth\", ctx_r2.innerWidth)(\"rows\", ctx_r2.rows)(\"columns\", ctx_r2.columns);\n }\n}\nfunction DataTableBodyComponent_datatable_scroller_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r2 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"datatable-scroller\", 6);\n i0.ɵɵlistener(\"scroll\", function DataTableBodyComponent_datatable_scroller_3_Template_datatable_scroller_scroll_0_listener($event) {\n i0.ɵɵrestoreView(_r2);\n const ctx_r2 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r2.onBodyScroll($event));\n });\n i0.ɵɵtemplate(1, DataTableBodyComponent_datatable_scroller_3_datatable_summary_row_1_Template, 1, 5, \"datatable-summary-row\", 7)(2, DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_Template, 4, 12, \"datatable-row-wrapper\", 8)(3, DataTableBodyComponent_datatable_scroller_3_datatable_summary_row_3_Template, 1, 6, \"datatable-summary-row\", 9);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"scrollbarV\", ctx_r2.scrollbarV)(\"scrollbarH\", ctx_r2.scrollbarH)(\"scrollHeight\", ctx_r2.scrollHeight)(\"scrollWidth\", ctx_r2.columnGroupWidths == null ? null : ctx_r2.columnGroupWidths.total);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r2.summaryRow && ctx_r2.summaryPosition === \"top\");\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r2.temp)(\"ngForTrackBy\", ctx_r2.rowTrackingFn);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r2.summaryRow && ctx_r2.summaryPosition === \"bottom\");\n }\n}\nfunction DataTableBodyComponent_div_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 17);\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"innerHTML\", ctx_r2.emptyMessage, i0.ɵɵsanitizeHtml);\n }\n}\nfunction DataTableHeaderCellComponent_1_ng_template_0_Template(rf, ctx) {}\nfunction DataTableHeaderCellComponent_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DataTableHeaderCellComponent_1_ng_template_0_Template, 0, 0, \"ng-template\", 5);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.targetMarkerTemplate)(\"ngTemplateOutletContext\", ctx_r0.targetMarkerContext);\n }\n}\nfunction DataTableHeaderCellComponent_label_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r2 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"label\", 6)(1, \"input\", 7);\n i0.ɵɵlistener(\"change\", function DataTableHeaderCellComponent_label_2_Template_input_change_1_listener() {\n i0.ɵɵrestoreView(_r2);\n const ctx_r0 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r0.select.emit(!ctx_r0.allRowsSelected));\n });\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"checked\", ctx_r0.allRowsSelected);\n }\n}\nfunction DataTableHeaderCellComponent_span_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r3 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"span\", 8)(1, \"span\", 9);\n i0.ɵɵlistener(\"click\", function DataTableHeaderCellComponent_span_3_Template_span_click_1_listener() {\n i0.ɵɵrestoreView(_r3);\n const ctx_r0 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r0.onSort());\n });\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"innerHTML\", ctx_r0.name, i0.ɵɵsanitizeHtml);\n }\n}\nfunction DataTableHeaderCellComponent_4_ng_template_0_Template(rf, ctx) {}\nfunction DataTableHeaderCellComponent_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DataTableHeaderCellComponent_4_ng_template_0_Template, 0, 0, \"ng-template\", 5);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.column.headerTemplate)(\"ngTemplateOutletContext\", ctx_r0.cellContext);\n }\n}\nfunction DataTableHeaderComponent_div_1_datatable_header_cell_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"datatable-header-cell\", 4);\n i0.ɵɵlistener(\"resize\", function DataTableHeaderComponent_div_1_datatable_header_cell_1_Template_datatable_header_cell_resize_0_listener($event) {\n const column_r2 = i0.ɵɵrestoreView(_r1).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.onColumnResized($event, column_r2));\n })(\"longPressStart\", function DataTableHeaderComponent_div_1_datatable_header_cell_1_Template_datatable_header_cell_longPressStart_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.onLongPressStart($event));\n })(\"longPressEnd\", function DataTableHeaderComponent_div_1_datatable_header_cell_1_Template_datatable_header_cell_longPressEnd_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.onLongPressEnd($event));\n })(\"sort\", function DataTableHeaderComponent_div_1_datatable_header_cell_1_Template_datatable_header_cell_sort_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.onSort($event));\n })(\"select\", function DataTableHeaderComponent_div_1_datatable_header_cell_1_Template_datatable_header_cell_select_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.select.emit($event));\n })(\"columnContextmenu\", function DataTableHeaderComponent_div_1_datatable_header_cell_1_Template_datatable_header_cell_columnContextmenu_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.columnContextmenu.emit($event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const column_r2 = ctx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"resizeEnabled\", column_r2.resizeable)(\"pressModel\", column_r2)(\"pressEnabled\", ctx_r2.reorderable && column_r2.draggable)(\"dragX\", ctx_r2.reorderable && column_r2.draggable && column_r2.dragging)(\"dragY\", false)(\"dragModel\", column_r2)(\"dragEventTarget\", ctx_r2.dragEventTarget)(\"headerHeight\", ctx_r2.headerHeight)(\"isTarget\", column_r2.isTarget)(\"targetMarkerTemplate\", ctx_r2.targetMarkerTemplate)(\"targetMarkerContext\", column_r2.targetMarkerContext)(\"column\", column_r2)(\"sortType\", ctx_r2.sortType)(\"sorts\", ctx_r2.sorts)(\"selectionType\", ctx_r2.selectionType)(\"sortAscendingIcon\", ctx_r2.sortAscendingIcon)(\"sortDescendingIcon\", ctx_r2.sortDescendingIcon)(\"sortUnsetIcon\", ctx_r2.sortUnsetIcon)(\"allRowsSelected\", ctx_r2.allRowsSelected);\n }\n}\nfunction DataTableHeaderComponent_div_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 2);\n i0.ɵɵtemplate(1, DataTableHeaderComponent_div_1_datatable_header_cell_1_Template, 1, 19, \"datatable-header-cell\", 3);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const colGroup_r4 = ctx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵclassMap(\"datatable-row-\" + colGroup_r4.type);\n i0.ɵɵproperty(\"ngStyle\", ctx_r2._styleByGroup[colGroup_r4.type]);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", colGroup_r4.columns)(\"ngForTrackBy\", ctx_r2.columnTrackingFn);\n }\n}\nfunction DataTablePagerComponent_li_7_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"li\", 6)(1, \"a\", 7);\n i0.ɵɵlistener(\"click\", function DataTablePagerComponent_li_7_Template_a_click_1_listener() {\n const pg_r2 = i0.ɵɵrestoreView(_r1).$implicit;\n const ctx_r2 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r2.selectPage(pg_r2.number));\n });\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const pg_r2 = ctx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵclassProp(\"active\", pg_r2.number === ctx_r2.page);\n i0.ɵɵattribute(\"aria-label\", \"page \" + pg_r2.number);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate1(\" \", pg_r2.text, \" \");\n }\n}\nconst _c3 = a0 => ({\n \"selected-count\": a0\n});\nconst _c4 = (a0, a1, a2, a3, a4) => ({\n rowCount: a0,\n pageSize: a1,\n selectedCount: a2,\n curPage: a3,\n offset: a4\n});\nfunction DataTableFooterComponent_1_ng_template_0_Template(rf, ctx) {}\nfunction DataTableFooterComponent_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DataTableFooterComponent_1_ng_template_0_Template, 0, 0, \"ng-template\", 4);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.footerTemplate.template)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction5(2, _c4, ctx_r0.rowCount, ctx_r0.pageSize, ctx_r0.selectedCount, ctx_r0.curPage, ctx_r0.offset));\n }\n}\nfunction DataTableFooterComponent_div_2_span_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\");\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate2(\" \", ctx_r0.selectedCount == null ? null : ctx_r0.selectedCount.toLocaleString(), \" \", ctx_r0.selectedMessage, \" / \");\n }\n}\nfunction DataTableFooterComponent_div_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 5);\n i0.ɵɵtemplate(1, DataTableFooterComponent_div_2_span_1_Template, 2, 2, \"span\", 1);\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r0.selectedMessage);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate2(\" \", ctx_r0.rowCount == null ? null : ctx_r0.rowCount.toLocaleString(), \" \", ctx_r0.totalMessage, \" \");\n }\n}\nfunction DataTableFooterComponent_datatable_pager_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r2 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"datatable-pager\", 6);\n i0.ɵɵlistener(\"change\", function DataTableFooterComponent_datatable_pager_3_Template_datatable_pager_change_0_listener($event) {\n i0.ɵɵrestoreView(_r2);\n const ctx_r0 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r0.page.emit($event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"pagerLeftArrowIcon\", ctx_r0.pagerLeftArrowIcon)(\"pagerRightArrowIcon\", ctx_r0.pagerRightArrowIcon)(\"pagerPreviousIcon\", ctx_r0.pagerPreviousIcon)(\"pagerNextIcon\", ctx_r0.pagerNextIcon)(\"page\", ctx_r0.curPage)(\"size\", ctx_r0.pageSize)(\"count\", ctx_r0.rowCount)(\"hidden\", !ctx_r0.isVisible);\n }\n}\nfunction DatatableComponent_datatable_header_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"datatable-header\", 4);\n i0.ɵɵpipe(1, \"async\");\n i0.ɵɵlistener(\"sort\", function DatatableComponent_datatable_header_1_Template_datatable_header_sort_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onColumnSort($event));\n })(\"resize\", function DatatableComponent_datatable_header_1_Template_datatable_header_resize_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onColumnResize($event));\n })(\"reorder\", function DatatableComponent_datatable_header_1_Template_datatable_header_reorder_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onColumnReorder($event));\n })(\"select\", function DatatableComponent_datatable_header_1_Template_datatable_header_select_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onHeaderSelect($event));\n })(\"columnContextmenu\", function DatatableComponent_datatable_header_1_Template_datatable_header_columnContextmenu_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onColumnContextmenu($event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"sorts\", ctx_r1.sorts)(\"sortType\", ctx_r1.sortType)(\"scrollbarH\", ctx_r1.scrollbarH)(\"innerWidth\", ctx_r1._innerWidth)(\"offsetX\", i0.ɵɵpipeBind1(1, 15, ctx_r1._offsetX))(\"dealsWithGroup\", ctx_r1.groupedRows !== undefined)(\"columns\", ctx_r1._internalColumns)(\"headerHeight\", ctx_r1.headerHeight)(\"reorderable\", ctx_r1.reorderable)(\"targetMarkerTemplate\", ctx_r1.targetMarkerTemplate)(\"sortAscendingIcon\", ctx_r1.cssClasses.sortAscending)(\"sortDescendingIcon\", ctx_r1.cssClasses.sortDescending)(\"sortUnsetIcon\", ctx_r1.cssClasses.sortUnset)(\"allRowsSelected\", ctx_r1.allRowsSelected)(\"selectionType\", ctx_r1.selectionType);\n }\n}\nfunction DatatableComponent_datatable_footer_4_Template(rf, ctx) {\n if (rf & 1) {\n const _r3 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"datatable-footer\", 5);\n i0.ɵɵlistener(\"page\", function DatatableComponent_datatable_footer_4_Template_datatable_footer_page_0_listener($event) {\n i0.ɵɵrestoreView(_r3);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onFooterPage($event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"rowCount\", ctx_r1.rowCount)(\"pageSize\", ctx_r1.pageSize)(\"offset\", ctx_r1.offset)(\"footerHeight\", ctx_r1.footerHeight)(\"footerTemplate\", ctx_r1.footer)(\"totalMessage\", ctx_r1.messages.totalMessage)(\"pagerLeftArrowIcon\", ctx_r1.cssClasses.pagerLeftArrow)(\"pagerRightArrowIcon\", ctx_r1.cssClasses.pagerRightArrow)(\"pagerPreviousIcon\", ctx_r1.cssClasses.pagerPrevious)(\"selectedCount\", ctx_r1.selected.length)(\"selectedMessage\", !!ctx_r1.selectionType && ctx_r1.messages.selectedMessage)(\"pagerNextIcon\", ctx_r1.cssClasses.pagerNext);\n }\n}\nclass ScrollbarHelper {\n constructor(document) {\n this.document = document;\n this.width = this.getWidth();\n }\n getWidth() {\n const outer = this.document.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.width = '100px';\n outer.style.msOverflowStyle = 'scrollbar';\n this.document.body.appendChild(outer);\n const widthNoScroll = outer.offsetWidth;\n outer.style.overflow = 'scroll';\n const inner = this.document.createElement('div');\n inner.style.width = '100%';\n outer.appendChild(inner);\n const widthWithScroll = inner.offsetWidth;\n outer.parentNode.removeChild(outer);\n return widthNoScroll - widthWithScroll;\n }\n}\nScrollbarHelper.ɵfac = function ScrollbarHelper_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ScrollbarHelper)(i0.ɵɵinject(DOCUMENT));\n};\nScrollbarHelper.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ScrollbarHelper,\n factory: ScrollbarHelper.ɵfac\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ScrollbarHelper, [{\n type: Injectable\n }], function () {\n return [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }];\n }, null);\n})();\n\n/**\n * Gets the width of the scrollbar. Nesc for windows\n * http://stackoverflow.com/a/13382873/888165\n */\nclass DimensionsHelper {\n getDimensions(element) {\n return element.getBoundingClientRect();\n }\n}\nDimensionsHelper.ɵfac = function DimensionsHelper_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DimensionsHelper)();\n};\nDimensionsHelper.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DimensionsHelper,\n factory: DimensionsHelper.ɵfac\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DimensionsHelper, [{\n type: Injectable\n }], null, null);\n})();\n\n/**\n * service to make DatatableComponent aware of changes to\n * input bindings of DataTableColumnDirective\n */\nclass ColumnChangesService {\n constructor() {\n this.columnInputChanges = new Subject();\n }\n get columnInputChanges$() {\n return this.columnInputChanges.asObservable();\n }\n onInputChange() {\n this.columnInputChanges.next();\n }\n}\nColumnChangesService.ɵfac = function ColumnChangesService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColumnChangesService)();\n};\nColumnChangesService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ColumnChangesService,\n factory: ColumnChangesService.ɵfac\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ColumnChangesService, [{\n type: Injectable\n }], null, null);\n})();\nclass DataTableFooterTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n}\nDataTableFooterTemplateDirective.ɵfac = function DataTableFooterTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DataTableFooterTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n};\nDataTableFooterTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DataTableFooterTemplateDirective,\n selectors: [[\"\", \"ngx-datatable-footer-template\", \"\"]]\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DataTableFooterTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[ngx-datatable-footer-template]'\n }]\n }], function () {\n return [{\n type: i0.TemplateRef\n }];\n }, null);\n})();\n\n/**\n * Visibility Observer Directive\n *\n * Usage:\n *\n * \t\t\n * \t\t\n *\n */\nclass VisibilityDirective {\n constructor(element, zone) {\n this.element = element;\n this.zone = zone;\n this.isVisible = false;\n this.visible = new EventEmitter();\n }\n ngOnInit() {\n this.runCheck();\n }\n ngOnDestroy() {\n clearTimeout(this.timeout);\n }\n onVisibilityChange() {\n // trigger zone recalc for columns\n this.zone.run(() => {\n this.isVisible = true;\n this.visible.emit(true);\n });\n }\n runCheck() {\n const check = () => {\n // https://davidwalsh.name/offsetheight-visibility\n const {\n offsetHeight,\n offsetWidth\n } = this.element.nativeElement;\n if (offsetHeight && offsetWidth) {\n clearTimeout(this.timeout);\n this.onVisibilityChange();\n } else {\n clearTimeout(this.timeout);\n this.zone.runOutsideAngular(() => {\n this.timeout = setTimeout(() => check(), 50);\n });\n }\n };\n this.timeout = setTimeout(() => check());\n }\n}\nVisibilityDirective.ɵfac = function VisibilityDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || VisibilityDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone));\n};\nVisibilityDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: VisibilityDirective,\n selectors: [[\"\", \"visibilityObserver\", \"\"]],\n hostVars: 2,\n hostBindings: function VisibilityDirective_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"visible\", ctx.isVisible);\n }\n },\n outputs: {\n visible: \"visible\"\n }\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(VisibilityDirective, [{\n type: Directive,\n args: [{\n selector: '[visibilityObserver]'\n }]\n }], function () {\n return [{\n type: i0.ElementRef\n }, {\n type: i0.NgZone\n }];\n }, {\n isVisible: [{\n type: HostBinding,\n args: ['class.visible']\n }],\n visible: [{\n type: Output\n }]\n });\n})();\n\n/**\n * Draggable Directive for Angular2\n *\n * Inspiration:\n * https://github.com/AngularClass/angular2-examples/blob/master/rx-draggable/directives/draggable.ts\n * http://stackoverflow.com/questions/35662530/how-to-implement-drag-and-drop-in-angular2\n *\n */\nclass DraggableDirective {\n constructor(element) {\n this.dragX = true;\n this.dragY = true;\n this.dragStart = new EventEmitter();\n this.dragging = new EventEmitter();\n this.dragEnd = new EventEmitter();\n this.isDragging = false;\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n if (changes['dragEventTarget'] && changes['dragEventTarget'].currentValue && this.dragModel.dragging) {\n this.onMousedown(changes['dragEventTarget'].currentValue);\n }\n }\n ngOnDestroy() {\n this._destroySubscription();\n }\n onMouseup(event) {\n if (!this.isDragging) return;\n this.isDragging = false;\n this.element.classList.remove('dragging');\n if (this.subscription) {\n this._destroySubscription();\n this.dragEnd.emit({\n event,\n element: this.element,\n model: this.dragModel\n });\n }\n }\n onMousedown(event) {\n // we only want to drag the inner header text\n const isDragElm = event.target.classList.contains('draggable');\n if (isDragElm && (this.dragX || this.dragY)) {\n event.preventDefault();\n this.isDragging = true;\n const mouseDownPos = {\n x: event.clientX,\n y: event.clientY\n };\n const mouseup = fromEvent(document, 'mouseup');\n this.subscription = mouseup.subscribe(ev => this.onMouseup(ev));\n const mouseMoveSub = fromEvent(document, 'mousemove').pipe(takeUntil(mouseup)).subscribe(ev => this.move(ev, mouseDownPos));\n this.subscription.add(mouseMoveSub);\n this.dragStart.emit({\n event,\n element: this.element,\n model: this.dragModel\n });\n }\n }\n move(event, mouseDownPos) {\n if (!this.isDragging) return;\n const x = event.clientX - mouseDownPos.x;\n const y = event.clientY - mouseDownPos.y;\n if (this.dragX) this.element.style.left = `${x}px`;\n if (this.dragY) this.element.style.top = `${y}px`;\n this.element.classList.add('dragging');\n this.dragging.emit({\n event,\n element: this.element,\n model: this.dragModel\n });\n }\n _destroySubscription() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n this.subscription = undefined;\n }\n }\n}\nDraggableDirective.ɵfac = function DraggableDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DraggableDirective)(i0.ɵɵdirectiveInject(i0.ElementRef));\n};\nDraggableDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DraggableDirective,\n selectors: [[\"\", \"draggable\", \"\"]],\n inputs: {\n dragEventTarget: \"dragEventTarget\",\n dragModel: \"dragModel\",\n dragX: \"dragX\",\n dragY: \"dragY\"\n },\n outputs: {\n dragStart: \"dragStart\",\n dragging: \"dragging\",\n dragEnd: \"dragEnd\"\n },\n features: [i0.ɵɵNgOnChangesFeature]\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DraggableDirective, [{\n type: Directive,\n args: [{\n selector: '[draggable]'\n }]\n }], function () {\n return [{\n type: i0.ElementRef\n }];\n }, {\n dragEventTarget: [{\n type: Input\n }],\n dragModel: [{\n type: Input\n }],\n dragX: [{\n type: Input\n }],\n dragY: [{\n type: Input\n }],\n dragStart: [{\n type: Output\n }],\n dragging: [{\n type: Output\n }],\n dragEnd: [{\n type: Output\n }]\n });\n})();\nclass ResizeableDirective {\n constructor(element, renderer) {\n this.renderer = renderer;\n this.resizeEnabled = true;\n this.resize = new EventEmitter();\n this.resizing = false;\n this.element = element.nativeElement;\n }\n ngAfterViewInit() {\n const renderer2 = this.renderer;\n this.resizeHandle = renderer2.createElement('span');\n if (this.resizeEnabled) {\n renderer2.addClass(this.resizeHandle, 'resize-handle');\n } else {\n renderer2.addClass(this.resizeHandle, 'resize-handle--not-resizable');\n }\n renderer2.appendChild(this.element, this.resizeHandle);\n }\n ngOnDestroy() {\n this._destroySubscription();\n if (this.renderer.destroyNode) {\n this.renderer.destroyNode(this.resizeHandle);\n } else if (this.resizeHandle) {\n this.renderer.removeChild(this.renderer.parentNode(this.resizeHandle), this.resizeHandle);\n }\n }\n onMouseup() {\n this.resizing = false;\n if (this.subscription && !this.subscription.closed) {\n this._destroySubscription();\n this.resize.emit(this.element.clientWidth);\n }\n }\n onMousedown(event) {\n const isHandle = event.target.classList.contains('resize-handle');\n const initialWidth = this.element.clientWidth;\n const mouseDownScreenX = event.screenX;\n if (isHandle) {\n event.stopPropagation();\n this.resizing = true;\n const mouseup = fromEvent(document, 'mouseup');\n this.subscription = mouseup.subscribe(ev => this.onMouseup());\n const mouseMoveSub = fromEvent(document, 'mousemove').pipe(takeUntil(mouseup)).subscribe(e => this.move(e, initialWidth, mouseDownScreenX));\n this.subscription.add(mouseMoveSub);\n }\n }\n move(event, initialWidth, mouseDownScreenX) {\n const movementX = event.screenX - mouseDownScreenX;\n const newWidth = initialWidth + movementX;\n const overMinWidth = !this.minWidth || newWidth >= this.minWidth;\n const underMaxWidth = !this.maxWidth || newWidth <= this.maxWidth;\n if (overMinWidth && underMaxWidth) {\n this.element.style.width = `${newWidth}px`;\n }\n }\n _destroySubscription() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n this.subscription = undefined;\n }\n }\n}\nResizeableDirective.ɵfac = function ResizeableDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ResizeableDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2));\n};\nResizeableDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: ResizeableDirective,\n selectors: [[\"\", \"resizeable\", \"\"]],\n hostVars: 2,\n hostBindings: function ResizeableDirective_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"mousedown\", function ResizeableDirective_mousedown_HostBindingHandler($event) {\n return ctx.onMousedown($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"resizeable\", ctx.resizeEnabled);\n }\n },\n inputs: {\n resizeEnabled: \"resizeEnabled\",\n minWidth: \"minWidth\",\n maxWidth: \"maxWidth\"\n },\n outputs: {\n resize: \"resize\"\n }\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ResizeableDirective, [{\n type: Directive,\n args: [{\n selector: '[resizeable]',\n host: {\n '[class.resizeable]': 'resizeEnabled'\n }\n }]\n }], function () {\n return [{\n type: i0.ElementRef\n }, {\n type: i0.Renderer2\n }];\n }, {\n resizeEnabled: [{\n type: Input\n }],\n minWidth: [{\n type: Input\n }],\n maxWidth: [{\n type: Input\n }],\n resize: [{\n type: Output\n }],\n onMousedown: [{\n type: HostListener,\n args: ['mousedown', ['$event']]\n }]\n });\n})();\nclass OrderableDirective {\n constructor(differs, document) {\n this.document = document;\n this.reorder = new EventEmitter();\n this.targetChanged = new EventEmitter();\n this.differ = differs.find({}).create();\n }\n ngAfterContentInit() {\n // HACK: Investigate Better Way\n this.updateSubscriptions();\n this.draggables.changes.subscribe(this.updateSubscriptions.bind(this));\n }\n ngOnDestroy() {\n this.draggables.forEach(d => {\n d.dragStart.unsubscribe();\n d.dragging.unsubscribe();\n d.dragEnd.unsubscribe();\n });\n }\n updateSubscriptions() {\n const diffs = this.differ.diff(this.createMapDiffs());\n if (diffs) {\n const subscribe = ({\n currentValue,\n previousValue\n }) => {\n unsubscribe({\n previousValue\n });\n if (currentValue) {\n currentValue.dragStart.subscribe(this.onDragStart.bind(this));\n currentValue.dragging.subscribe(this.onDragging.bind(this));\n currentValue.dragEnd.subscribe(this.onDragEnd.bind(this));\n }\n };\n const unsubscribe = ({\n previousValue\n }) => {\n if (previousValue) {\n previousValue.dragStart.unsubscribe();\n previousValue.dragging.unsubscribe();\n previousValue.dragEnd.unsubscribe();\n }\n };\n diffs.forEachAddedItem(subscribe);\n // diffs.forEachChangedItem(subscribe.bind(this));\n diffs.forEachRemovedItem(unsubscribe);\n }\n }\n onDragStart() {\n this.positions = {};\n let i = 0;\n for (const dragger of this.draggables.toArray()) {\n const elm = dragger.element;\n const left = parseInt(elm.offsetLeft.toString(), 0);\n this.positions[dragger.dragModel.prop] = {\n left,\n right: left + parseInt(elm.offsetWidth.toString(), 0),\n index: i++,\n element: elm\n };\n }\n }\n onDragging({\n element,\n model,\n event\n }) {\n const prevPos = this.positions[model.prop];\n const target = this.isTarget(model, event);\n if (target) {\n if (this.lastDraggingIndex !== target.i) {\n this.targetChanged.emit({\n prevIndex: this.lastDraggingIndex,\n newIndex: target.i,\n initialIndex: prevPos.index\n });\n this.lastDraggingIndex = target.i;\n }\n } else if (this.lastDraggingIndex !== prevPos.index) {\n this.targetChanged.emit({\n prevIndex: this.lastDraggingIndex,\n initialIndex: prevPos.index\n });\n this.lastDraggingIndex = prevPos.index;\n }\n }\n onDragEnd({\n element,\n model,\n event\n }) {\n const prevPos = this.positions[model.prop];\n const target = this.isTarget(model, event);\n if (target) {\n this.reorder.emit({\n prevIndex: prevPos.index,\n newIndex: target.i,\n model\n });\n }\n this.lastDraggingIndex = undefined;\n element.style.left = 'auto';\n }\n isTarget(model, event) {\n let i = 0;\n const x = event.x || event.clientX;\n const y = event.y || event.clientY;\n const targets = this.document.elementsFromPoint(x, y);\n for (const prop in this.positions) {\n // current column position which throws event.\n const pos = this.positions[prop];\n // since we drag the inner span, we need to find it in the elements at the cursor\n if (model.prop !== prop && targets.find(el => el === pos.element)) {\n return {\n pos,\n i\n };\n }\n i++;\n }\n }\n createMapDiffs() {\n return this.draggables.toArray().reduce((acc, curr) => {\n acc[curr.dragModel.$$id] = curr;\n return acc;\n }, {});\n }\n}\nOrderableDirective.ɵfac = function OrderableDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || OrderableDirective)(i0.ɵɵdirectiveInject(i0.KeyValueDiffers), i0.ɵɵdirectiveInject(DOCUMENT));\n};\nOrderableDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: OrderableDirective,\n selectors: [[\"\", \"orderable\", \"\"]],\n contentQueries: function OrderableDirective_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, DraggableDirective, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.draggables = _t);\n }\n },\n outputs: {\n reorder: \"reorder\",\n targetChanged: \"targetChanged\"\n }\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(OrderableDirective, [{\n type: Directive,\n args: [{\n selector: '[orderable]'\n }]\n }], function () {\n return [{\n type: i0.KeyValueDiffers\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }];\n }, {\n reorder: [{\n type: Output\n }],\n targetChanged: [{\n type: Output\n }],\n draggables: [{\n type: ContentChildren,\n args: [DraggableDirective, {\n descendants: true\n }]\n }]\n });\n})();\nclass LongPressDirective {\n constructor() {\n this.pressEnabled = true;\n this.duration = 500;\n this.longPressStart = new EventEmitter();\n this.longPressing = new EventEmitter();\n this.longPressEnd = new EventEmitter();\n this.mouseX = 0;\n this.mouseY = 0;\n }\n get press() {\n return this.pressing;\n }\n get isLongPress() {\n return this.isLongPressing;\n }\n onMouseDown(event) {\n // don't do right/middle clicks\n if (event.which !== 1 || !this.pressEnabled) return;\n // don't start drag if its on resize handle\n const target = event.target;\n if (target.classList.contains('resize-handle')) return;\n this.mouseX = event.clientX;\n this.mouseY = event.clientY;\n this.pressing = true;\n this.isLongPressing = false;\n const mouseup = fromEvent(document, 'mouseup');\n this.subscription = mouseup.subscribe(ev => this.onMouseup());\n this.timeout = setTimeout(() => {\n this.isLongPressing = true;\n this.longPressStart.emit({\n event,\n model: this.pressModel\n });\n this.subscription.add(fromEvent(document, 'mousemove').pipe(takeUntil(mouseup)).subscribe(mouseEvent => this.onMouseMove(mouseEvent)));\n this.loop(event);\n }, this.duration);\n this.loop(event);\n }\n onMouseMove(event) {\n if (this.pressing && !this.isLongPressing) {\n const xThres = Math.abs(event.clientX - this.mouseX) > 10;\n const yThres = Math.abs(event.clientY - this.mouseY) > 10;\n if (xThres || yThres) {\n this.endPress();\n }\n }\n }\n loop(event) {\n if (this.isLongPressing) {\n this.timeout = setTimeout(() => {\n this.longPressing.emit({\n event,\n model: this.pressModel\n });\n this.loop(event);\n }, 50);\n }\n }\n endPress() {\n clearTimeout(this.timeout);\n this.isLongPressing = false;\n this.pressing = false;\n this._destroySubscription();\n this.longPressEnd.emit({\n model: this.pressModel\n });\n }\n onMouseup() {\n this.endPress();\n }\n ngOnDestroy() {\n this._destroySubscription();\n }\n _destroySubscription() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n this.subscription = undefined;\n }\n }\n}\nLongPressDirective.ɵfac = function LongPressDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || LongPressDirective)();\n};\nLongPressDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: LongPressDirective,\n selectors: [[\"\", \"long-press\", \"\"]],\n hostVars: 4,\n hostBindings: function LongPressDirective_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"mousedown\", function LongPressDirective_mousedown_HostBindingHandler($event) {\n return ctx.onMouseDown($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"press\", ctx.press)(\"longpress\", ctx.isLongPress);\n }\n },\n inputs: {\n pressEnabled: \"pressEnabled\",\n pressModel: \"pressModel\",\n duration: \"duration\"\n },\n outputs: {\n longPressStart: \"longPressStart\",\n longPressing: \"longPressing\",\n longPressEnd: \"longPressEnd\"\n }\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(LongPressDirective, [{\n type: Directive,\n args: [{\n selector: '[long-press]'\n }]\n }], null, {\n pressEnabled: [{\n type: Input\n }],\n pressModel: [{\n type: Input\n }],\n duration: [{\n type: Input\n }],\n longPressStart: [{\n type: Output\n }],\n longPressing: [{\n type: Output\n }],\n longPressEnd: [{\n type: Output\n }],\n press: [{\n type: HostBinding,\n args: ['class.press']\n }],\n isLongPress: [{\n type: HostBinding,\n args: ['class.longpress']\n }],\n onMouseDown: [{\n type: HostListener,\n args: ['mousedown', ['$event']]\n }]\n });\n})();\nclass ScrollerComponent {\n constructor(ngZone, element, renderer) {\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.scrollbarV = false;\n this.scrollbarH = false;\n this.scroll = new EventEmitter();\n this.scrollYPos = 0;\n this.scrollXPos = 0;\n this.prevScrollYPos = 0;\n this.prevScrollXPos = 0;\n this._scrollEventListener = null;\n this.element = element.nativeElement;\n }\n ngOnInit() {\n // manual bind so we don't always listen\n if (this.scrollbarV || this.scrollbarH) {\n const renderer = this.renderer;\n this.parentElement = renderer.parentNode(renderer.parentNode(this.element));\n this._scrollEventListener = this.onScrolled.bind(this);\n this.parentElement.addEventListener('scroll', this._scrollEventListener);\n }\n }\n ngOnDestroy() {\n if (this._scrollEventListener) {\n this.parentElement.removeEventListener('scroll', this._scrollEventListener);\n this._scrollEventListener = null;\n }\n }\n setOffset(offsetY) {\n if (this.parentElement) {\n this.parentElement.scrollTop = offsetY;\n }\n }\n onScrolled(event) {\n const dom = event.currentTarget;\n requestAnimationFrame(() => {\n this.scrollYPos = dom.scrollTop;\n this.scrollXPos = dom.scrollLeft;\n this.updateOffset();\n });\n }\n updateOffset() {\n let direction;\n if (this.scrollYPos < this.prevScrollYPos) {\n direction = 'down';\n } else if (this.scrollYPos > this.prevScrollYPos) {\n direction = 'up';\n }\n this.scroll.emit({\n direction,\n scrollYPos: this.scrollYPos,\n scrollXPos: this.scrollXPos\n });\n this.prevScrollYPos = this.scrollYPos;\n this.prevScrollXPos = this.scrollXPos;\n }\n}\nScrollerComponent.ɵfac = function ScrollerComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ScrollerComponent)(i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2));\n};\nScrollerComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ScrollerComponent,\n selectors: [[\"datatable-scroller\"]],\n hostAttrs: [1, \"datatable-scroll\"],\n hostVars: 4,\n hostBindings: function ScrollerComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵstyleProp(\"height\", ctx.scrollHeight, \"px\")(\"width\", ctx.scrollWidth, \"px\");\n }\n },\n inputs: {\n scrollbarV: \"scrollbarV\",\n scrollbarH: \"scrollbarH\",\n scrollHeight: \"scrollHeight\",\n scrollWidth: \"scrollWidth\"\n },\n outputs: {\n scroll: \"scroll\"\n },\n ngContentSelectors: _c0,\n decls: 1,\n vars: 0,\n template: function ScrollerComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2,\n changeDetection: 0\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ScrollerComponent, [{\n type: Component,\n args: [{\n selector: 'datatable-scroller',\n template: ` `,\n host: {\n class: 'datatable-scroll'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () {\n return [{\n type: i0.NgZone\n }, {\n type: i0.ElementRef\n }, {\n type: i0.Renderer2\n }];\n }, {\n scrollbarV: [{\n type: Input\n }],\n scrollbarH: [{\n type: Input\n }],\n scrollHeight: [{\n type: HostBinding,\n args: ['style.height.px']\n }, {\n type: Input\n }],\n scrollWidth: [{\n type: HostBinding,\n args: ['style.width.px']\n }, {\n type: Input\n }],\n scroll: [{\n type: Output\n }]\n });\n})();\nclass DatatableGroupHeaderTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n}\nDatatableGroupHeaderTemplateDirective.ɵfac = function DatatableGroupHeaderTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DatatableGroupHeaderTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n};\nDatatableGroupHeaderTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DatatableGroupHeaderTemplateDirective,\n selectors: [[\"\", \"ngx-datatable-group-header-template\", \"\"]]\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DatatableGroupHeaderTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[ngx-datatable-group-header-template]'\n }]\n }], function () {\n return [{\n type: i0.TemplateRef\n }];\n }, null);\n})();\nclass DatatableGroupHeaderDirective {\n constructor() {\n /**\n * Row height is required when virtual scroll is enabled.\n */\n this.rowHeight = 0;\n /**\n * Track toggling of group visibility\n */\n this.toggle = new EventEmitter();\n }\n get template() {\n return this._templateInput || this._templateQuery;\n }\n /**\n * Toggle the expansion of a group\n */\n toggleExpandGroup(group) {\n this.toggle.emit({\n type: 'group',\n value: group\n });\n }\n /**\n * Expand all groups\n */\n expandAllGroups() {\n this.toggle.emit({\n type: 'all',\n value: true\n });\n }\n /**\n * Collapse all groups\n */\n collapseAllGroups() {\n this.toggle.emit({\n type: 'all',\n value: false\n });\n }\n}\nDatatableGroupHeaderDirective.ɵfac = function DatatableGroupHeaderDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DatatableGroupHeaderDirective)();\n};\nDatatableGroupHeaderDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DatatableGroupHeaderDirective,\n selectors: [[\"ngx-datatable-group-header\"]],\n contentQueries: function DatatableGroupHeaderDirective_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, DatatableGroupHeaderTemplateDirective, 7, TemplateRef);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._templateQuery = _t.first);\n }\n },\n inputs: {\n rowHeight: \"rowHeight\",\n _templateInput: [0, \"template\", \"_templateInput\"]\n },\n outputs: {\n toggle: \"toggle\"\n }\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DatatableGroupHeaderDirective, [{\n type: Directive,\n args: [{\n selector: 'ngx-datatable-group-header'\n }]\n }], null, {\n rowHeight: [{\n type: Input\n }],\n _templateInput: [{\n type: Input,\n args: ['template']\n }],\n _templateQuery: [{\n type: ContentChild,\n args: [DatatableGroupHeaderTemplateDirective, {\n read: TemplateRef,\n static: true\n }]\n }],\n toggle: [{\n type: Output\n }]\n });\n})();\n\n/**\n * Always returns the empty string ''\n */\nfunction emptyStringGetter() {\n return '';\n}\n/**\n * Returns the appropriate getter function for this kind of prop.\n * If prop == null, returns the emptyStringGetter.\n */\nfunction getterForProp(prop) {\n if (prop == null) {\n return emptyStringGetter;\n }\n if (typeof prop === 'number') {\n return numericIndexGetter;\n } else {\n // deep or simple\n if (prop.indexOf('.') !== -1) {\n return deepValueGetter;\n } else {\n return shallowValueGetter;\n }\n }\n}\n/**\n * Returns the value at this numeric index.\n * @param row array of values\n * @param index numeric index\n * @returns any or '' if invalid index\n */\nfunction numericIndexGetter(row, index) {\n if (row == null) {\n return '';\n }\n // mimic behavior of deepValueGetter\n if (!row || index == null) {\n return row;\n }\n const value = row[index];\n if (value == null) {\n return '';\n }\n return value;\n}\n/**\n * Returns the value of a field.\n * (more efficient than deepValueGetter)\n * @param obj object containing the field\n * @param fieldName field name string\n */\nfunction shallowValueGetter(obj, fieldName) {\n if (obj == null) {\n return '';\n }\n if (!obj || !fieldName) {\n return obj;\n }\n const value = obj[fieldName];\n if (value == null) {\n return '';\n }\n return value;\n}\n/**\n * Returns a deep object given a string. zoo['animal.type']\n */\nfunction deepValueGetter(obj, path) {\n if (obj == null) {\n return '';\n }\n if (!obj || !path) {\n return obj;\n }\n // check if path matches a root-level field\n // { \"a.b.c\": 123 }\n let current = obj[path];\n if (current !== undefined) {\n return current;\n }\n current = obj;\n const split = path.split('.');\n if (split.length) {\n for (let i = 0; i < split.length; i++) {\n current = current[split[i]];\n // if found undefined, return empty string\n if (current === undefined || current === null) {\n return '';\n }\n }\n }\n return current;\n}\nfunction optionalGetterForProp(prop) {\n return prop && (row => getterForProp(prop)(row, prop));\n}\n/**\n * This functions rearrange items by their parents\n * Also sets the level value to each of the items\n *\n * Note: Expecting each item has a property called parentId\n * Note: This algorithm will fail if a list has two or more items with same ID\n * NOTE: This algorithm will fail if there is a deadlock of relationship\n *\n * For example,\n *\n * Input\n *\n * id -> parent\n * 1 -> 0\n * 2 -> 0\n * 3 -> 1\n * 4 -> 1\n * 5 -> 2\n * 7 -> 8\n * 6 -> 3\n *\n *\n * Output\n * id -> level\n * 1 -> 0\n * --3 -> 1\n * ----6 -> 2\n * --4 -> 1\n * 2 -> 0\n * --5 -> 1\n * 7 -> 8\n *\n *\n * @param rows\n *\n */\nfunction groupRowsByParents(rows, from, to) {\n if (from && to) {\n const nodeById = {};\n const l = rows.length;\n let node = null;\n nodeById[0] = new TreeNode(); // that's the root node\n const uniqIDs = rows.reduce((arr, item) => {\n const toValue = to(item);\n if (arr.indexOf(toValue) === -1) {\n arr.push(toValue);\n }\n return arr;\n }, []);\n for (let i = 0; i < l; i++) {\n // make TreeNode objects for each item\n nodeById[to(rows[i])] = new TreeNode(rows[i]);\n }\n for (let i = 0; i < l; i++) {\n // link all TreeNode objects\n node = nodeById[to(rows[i])];\n let parent = 0;\n const fromValue = from(node.row);\n if (!!fromValue && uniqIDs.indexOf(fromValue) > -1) {\n parent = fromValue;\n }\n node.parent = nodeById[parent];\n node.row['level'] = node.parent.row['level'] + 1;\n node.parent.children.push(node);\n }\n let resolvedRows = [];\n nodeById[0].flatten(function () {\n resolvedRows = [...resolvedRows, this.row];\n }, true);\n return resolvedRows;\n } else {\n return rows;\n }\n}\nclass TreeNode {\n constructor(row = null) {\n if (!row) {\n row = {\n level: -1,\n treeStatus: 'expanded'\n };\n }\n this.row = row;\n this.parent = null;\n this.children = [];\n }\n flatten(f, recursive) {\n if (this.row['treeStatus'] === 'expanded') {\n for (let i = 0, l = this.children.length; i < l; i++) {\n const child = this.children[i];\n f.apply(child, Array.prototype.slice.call(arguments, 2));\n if (recursive) child.flatten.apply(child, arguments);\n }\n }\n }\n}\n\n/**\n * Converts strings from something to camel case\n * http://stackoverflow.com/questions/10425287/convert-dash-separated-string-to-camelcase\n */\nfunction camelCase(str) {\n // Replace special characters with a space\n str = str.replace(/[^a-zA-Z0-9 ]/g, ' ');\n // put a space before an uppercase letter\n str = str.replace(/([a-z](?=[A-Z]))/g, '$1 ');\n // Lower case first character and some other stuff\n str = str.replace(/([^a-zA-Z0-9 ])|^[0-9]+/g, '').trim().toLowerCase();\n // uppercase characters preceded by a space or number\n str = str.replace(/([ 0-9]+)([a-zA-Z])/g, function (a, b, c) {\n return b.trim() + c.toUpperCase();\n });\n return str;\n}\n/**\n * Converts strings from camel case to words\n * http://stackoverflow.com/questions/7225407/convert-camelcasetext-to-camel-case-text\n */\nfunction deCamelCase(str) {\n return str.replace(/([A-Z])/g, match => ` ${match}`).replace(/^./, match => match.toUpperCase());\n}\n\n/**\n * Creates a unique object id.\n * http://stackoverflow.com/questions/6248666/how-to-generate-short-uid-like-ax4j9z-in-js\n */\nfunction id() {\n return ('0000' + (Math.random() * Math.pow(36, 4) << 0).toString(36)).slice(-4);\n}\n\n/**\n * Sets the column defaults\n */\nfunction setColumnDefaults(columns) {\n if (!columns) return;\n // Only one column should hold the tree view\n // Thus if multiple columns are provided with\n // isTreeColumn as true we take only the first one\n let treeColumnFound = false;\n for (const column of columns) {\n if (!column.$$id) {\n column.$$id = id();\n }\n // prop can be numeric; zero is valid not a missing prop\n // translate name => prop\n if (isNullOrUndefined(column.prop) && column.name) {\n column.prop = camelCase(column.name);\n }\n if (!column.$$valueGetter) {\n column.$$valueGetter = getterForProp(column.prop);\n }\n // format props if no name passed\n if (!isNullOrUndefined(column.prop) && isNullOrUndefined(column.name)) {\n column.name = deCamelCase(String(column.prop));\n }\n if (isNullOrUndefined(column.prop) && isNullOrUndefined(column.name)) {\n column.name = ''; // Fixes IE and Edge displaying `null`\n }\n if (!column.hasOwnProperty('resizeable')) {\n column.resizeable = true;\n }\n if (!column.hasOwnProperty('sortable')) {\n column.sortable = true;\n }\n if (!column.hasOwnProperty('draggable')) {\n column.draggable = true;\n }\n if (!column.hasOwnProperty('canAutoResize')) {\n column.canAutoResize = true;\n }\n if (!column.hasOwnProperty('width')) {\n column.width = 150;\n }\n if (!column.hasOwnProperty('isTreeColumn')) {\n column.isTreeColumn = false;\n } else {\n if (column.isTreeColumn && !treeColumnFound) {\n // If the first column with isTreeColumn is true found\n // we mark that treeCoulmn is found\n treeColumnFound = true;\n } else {\n // After that isTreeColumn property for any other column\n // will be set as false\n column.isTreeColumn = false;\n }\n }\n }\n}\nfunction isNullOrUndefined(value) {\n return value === null || value === undefined;\n}\n/**\n * Translates templates definitions to objects\n */\nfunction translateTemplates(templates) {\n const result = [];\n for (const temp of templates) {\n const col = {};\n const props = Object.getOwnPropertyNames(temp);\n for (const prop of props) {\n col[prop] = temp[prop];\n }\n if (temp.headerTemplate) {\n col.headerTemplate = temp.headerTemplate;\n }\n if (temp.cellTemplate) {\n col.cellTemplate = temp.cellTemplate;\n }\n if (temp.summaryFunc) {\n col.summaryFunc = temp.summaryFunc;\n }\n if (temp.summaryTemplate) {\n col.summaryTemplate = temp.summaryTemplate;\n }\n result.push(col);\n }\n return result;\n}\nvar ColumnMode;\n(function (ColumnMode) {\n ColumnMode[\"standard\"] = \"standard\";\n ColumnMode[\"flex\"] = \"flex\";\n ColumnMode[\"force\"] = \"force\";\n})(ColumnMode || (ColumnMode = {}));\nvar SelectionType;\n(function (SelectionType) {\n SelectionType[\"single\"] = \"single\";\n SelectionType[\"multi\"] = \"multi\";\n SelectionType[\"multiClick\"] = \"multiClick\";\n SelectionType[\"cell\"] = \"cell\";\n SelectionType[\"checkbox\"] = \"checkbox\";\n})(SelectionType || (SelectionType = {}));\nvar SortType;\n(function (SortType) {\n SortType[\"single\"] = \"single\";\n SortType[\"multi\"] = \"multi\";\n})(SortType || (SortType = {}));\nvar ContextmenuType;\n(function (ContextmenuType) {\n ContextmenuType[\"header\"] = \"header\";\n ContextmenuType[\"body\"] = \"body\";\n})(ContextmenuType || (ContextmenuType = {}));\nclass DataTableColumnHeaderDirective {\n constructor(template) {\n this.template = template;\n }\n}\nDataTableColumnHeaderDirective.ɵfac = function DataTableColumnHeaderDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DataTableColumnHeaderDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n};\nDataTableColumnHeaderDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DataTableColumnHeaderDirective,\n selectors: [[\"\", \"ngx-datatable-header-template\", \"\"]]\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DataTableColumnHeaderDirective, [{\n type: Directive,\n args: [{\n selector: '[ngx-datatable-header-template]'\n }]\n }], function () {\n return [{\n type: i0.TemplateRef\n }];\n }, null);\n})();\nclass DataTableColumnCellDirective {\n constructor(template) {\n this.template = template;\n }\n}\nDataTableColumnCellDirective.ɵfac = function DataTableColumnCellDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DataTableColumnCellDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n};\nDataTableColumnCellDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DataTableColumnCellDirective,\n selectors: [[\"\", \"ngx-datatable-cell-template\", \"\"]]\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DataTableColumnCellDirective, [{\n type: Directive,\n args: [{\n selector: '[ngx-datatable-cell-template]'\n }]\n }], function () {\n return [{\n type: i0.TemplateRef\n }];\n }, null);\n})();\nclass DataTableColumnCellTreeToggle {\n constructor(template) {\n this.template = template;\n }\n}\nDataTableColumnCellTreeToggle.ɵfac = function DataTableColumnCellTreeToggle_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DataTableColumnCellTreeToggle)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n};\nDataTableColumnCellTreeToggle.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DataTableColumnCellTreeToggle,\n selectors: [[\"\", \"ngx-datatable-tree-toggle\", \"\"]]\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DataTableColumnCellTreeToggle, [{\n type: Directive,\n args: [{\n selector: '[ngx-datatable-tree-toggle]'\n }]\n }], function () {\n return [{\n type: i0.TemplateRef\n }];\n }, null);\n})();\nclass DataTableColumnDirective {\n constructor(columnChangesService) {\n this.columnChangesService = columnChangesService;\n this.isFirstChange = true;\n }\n get cellTemplate() {\n return this._cellTemplateInput || this._cellTemplateQuery;\n }\n get headerTemplate() {\n return this._headerTemplateInput || this._headerTemplateQuery;\n }\n get treeToggleTemplate() {\n return this._treeToggleTemplateInput || this._treeToggleTemplateQuery;\n }\n ngOnChanges() {\n if (this.isFirstChange) {\n this.isFirstChange = false;\n } else {\n this.columnChangesService.onInputChange();\n }\n }\n}\nDataTableColumnDirective.ɵfac = function DataTableColumnDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DataTableColumnDirective)(i0.ɵɵdirectiveInject(ColumnChangesService));\n};\nDataTableColumnDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DataTableColumnDirective,\n selectors: [[\"ngx-datatable-column\"]],\n contentQueries: function DataTableColumnDirective_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, DataTableColumnCellDirective, 7, TemplateRef);\n i0.ɵɵcontentQuery(dirIndex, DataTableColumnHeaderDirective, 7, TemplateRef);\n i0.ɵɵcontentQuery(dirIndex, DataTableColumnCellTreeToggle, 7, TemplateRef);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._cellTemplateQuery = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._headerTemplateQuery = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._treeToggleTemplateQuery = _t.first);\n }\n },\n inputs: {\n name: \"name\",\n prop: \"prop\",\n frozenLeft: \"frozenLeft\",\n frozenRight: \"frozenRight\",\n flexGrow: \"flexGrow\",\n resizeable: \"resizeable\",\n comparator: \"comparator\",\n pipe: \"pipe\",\n sortable: \"sortable\",\n draggable: \"draggable\",\n canAutoResize: \"canAutoResize\",\n minWidth: \"minWidth\",\n width: \"width\",\n maxWidth: \"maxWidth\",\n checkboxable: \"checkboxable\",\n headerCheckboxable: \"headerCheckboxable\",\n headerClass: \"headerClass\",\n cellClass: \"cellClass\",\n isTreeColumn: \"isTreeColumn\",\n treeLevelIndent: \"treeLevelIndent\",\n summaryFunc: \"summaryFunc\",\n summaryTemplate: \"summaryTemplate\",\n _cellTemplateInput: [0, \"cellTemplate\", \"_cellTemplateInput\"],\n _headerTemplateInput: [0, \"headerTemplate\", \"_headerTemplateInput\"],\n _treeToggleTemplateInput: [0, \"treeToggleTemplate\", \"_treeToggleTemplateInput\"]\n },\n features: [i0.ɵɵNgOnChangesFeature]\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DataTableColumnDirective, [{\n type: Directive,\n args: [{\n selector: 'ngx-datatable-column'\n }]\n }], function () {\n return [{\n type: ColumnChangesService\n }];\n }, {\n name: [{\n type: Input\n }],\n prop: [{\n type: Input\n }],\n frozenLeft: [{\n type: Input\n }],\n frozenRight: [{\n type: Input\n }],\n flexGrow: [{\n type: Input\n }],\n resizeable: [{\n type: Input\n }],\n comparator: [{\n type: Input\n }],\n pipe: [{\n type: Input\n }],\n sortable: [{\n type: Input\n }],\n draggable: [{\n type: Input\n }],\n canAutoResize: [{\n type: Input\n }],\n minWidth: [{\n type: Input\n }],\n width: [{\n type: Input\n }],\n maxWidth: [{\n type: Input\n }],\n checkboxable: [{\n type: Input\n }],\n headerCheckboxable: [{\n type: Input\n }],\n headerClass: [{\n type: Input\n }],\n cellClass: [{\n type: Input\n }],\n isTreeColumn: [{\n type: Input\n }],\n treeLevelIndent: [{\n type: Input\n }],\n summaryFunc: [{\n type: Input\n }],\n summaryTemplate: [{\n type: Input\n }],\n _cellTemplateInput: [{\n type: Input,\n args: ['cellTemplate']\n }],\n _cellTemplateQuery: [{\n type: ContentChild,\n args: [DataTableColumnCellDirective, {\n read: TemplateRef,\n static: true\n }]\n }],\n _headerTemplateInput: [{\n type: Input,\n args: ['headerTemplate']\n }],\n _headerTemplateQuery: [{\n type: ContentChild,\n args: [DataTableColumnHeaderDirective, {\n read: TemplateRef,\n static: true\n }]\n }],\n _treeToggleTemplateInput: [{\n type: Input,\n args: ['treeToggleTemplate']\n }],\n _treeToggleTemplateQuery: [{\n type: ContentChild,\n args: [DataTableColumnCellTreeToggle, {\n read: TemplateRef,\n static: true\n }]\n }]\n });\n})();\nclass DatatableRowDetailTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n}\nDatatableRowDetailTemplateDirective.ɵfac = function DatatableRowDetailTemplateDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DatatableRowDetailTemplateDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n};\nDatatableRowDetailTemplateDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DatatableRowDetailTemplateDirective,\n selectors: [[\"\", \"ngx-datatable-row-detail-template\", \"\"]]\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DatatableRowDetailTemplateDirective, [{\n type: Directive,\n args: [{\n selector: '[ngx-datatable-row-detail-template]'\n }]\n }], function () {\n return [{\n type: i0.TemplateRef\n }];\n }, null);\n})();\nclass DatatableRowDetailDirective {\n constructor() {\n /**\n * The detail row height is required especially\n * when virtual scroll is enabled.\n */\n this.rowHeight = 0;\n /**\n * Row detail row visbility was toggled.\n */\n this.toggle = new EventEmitter();\n }\n get template() {\n return this._templateInput || this._templateQuery;\n }\n /**\n * Toggle the expansion of the row\n */\n toggleExpandRow(row) {\n this.toggle.emit({\n type: 'row',\n value: row\n });\n }\n /**\n * API method to expand all the rows.\n */\n expandAllRows() {\n this.toggle.emit({\n type: 'all',\n value: true\n });\n }\n /**\n * API method to collapse all the rows.\n */\n collapseAllRows() {\n this.toggle.emit({\n type: 'all',\n value: false\n });\n }\n}\nDatatableRowDetailDirective.ɵfac = function DatatableRowDetailDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DatatableRowDetailDirective)();\n};\nDatatableRowDetailDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DatatableRowDetailDirective,\n selectors: [[\"ngx-datatable-row-detail\"]],\n contentQueries: function DatatableRowDetailDirective_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, DatatableRowDetailTemplateDirective, 7, TemplateRef);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._templateQuery = _t.first);\n }\n },\n inputs: {\n rowHeight: \"rowHeight\",\n _templateInput: [0, \"template\", \"_templateInput\"]\n },\n outputs: {\n toggle: \"toggle\"\n }\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DatatableRowDetailDirective, [{\n type: Directive,\n args: [{\n selector: 'ngx-datatable-row-detail'\n }]\n }], null, {\n rowHeight: [{\n type: Input\n }],\n _templateInput: [{\n type: Input,\n args: ['template']\n }],\n _templateQuery: [{\n type: ContentChild,\n args: [DatatableRowDetailTemplateDirective, {\n read: TemplateRef,\n static: true\n }]\n }],\n toggle: [{\n type: Output\n }]\n });\n})();\nclass DatatableFooterDirective {\n get template() {\n return this._templateInput || this._templateQuery;\n }\n}\nDatatableFooterDirective.ɵfac = function DatatableFooterDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DatatableFooterDirective)();\n};\nDatatableFooterDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DatatableFooterDirective,\n selectors: [[\"ngx-datatable-footer\"]],\n contentQueries: function DatatableFooterDirective_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, DataTableFooterTemplateDirective, 5, TemplateRef);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._templateQuery = _t.first);\n }\n },\n inputs: {\n footerHeight: \"footerHeight\",\n totalMessage: \"totalMessage\",\n selectedMessage: \"selectedMessage\",\n pagerLeftArrowIcon: \"pagerLeftArrowIcon\",\n pagerRightArrowIcon: \"pagerRightArrowIcon\",\n pagerPreviousIcon: \"pagerPreviousIcon\",\n pagerNextIcon: \"pagerNextIcon\",\n _templateInput: [0, \"template\", \"_templateInput\"]\n }\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DatatableFooterDirective, [{\n type: Directive,\n args: [{\n selector: 'ngx-datatable-footer'\n }]\n }], null, {\n footerHeight: [{\n type: Input\n }],\n totalMessage: [{\n type: Input\n }],\n selectedMessage: [{\n type: Input\n }],\n pagerLeftArrowIcon: [{\n type: Input\n }],\n pagerRightArrowIcon: [{\n type: Input\n }],\n pagerPreviousIcon: [{\n type: Input\n }],\n pagerNextIcon: [{\n type: Input\n }],\n _templateInput: [{\n type: Input,\n args: ['template']\n }],\n _templateQuery: [{\n type: ContentChild,\n args: [DataTableFooterTemplateDirective, {\n read: TemplateRef\n }]\n }]\n });\n})();\n\n/**\n * Returns the columns by pin.\n */\nfunction columnsByPin(cols) {\n const ret = {\n left: [],\n center: [],\n right: []\n };\n if (cols) {\n for (const col of cols) {\n if (col.frozenLeft) {\n ret.left.push(col);\n } else if (col.frozenRight) {\n ret.right.push(col);\n } else {\n ret.center.push(col);\n }\n }\n }\n return ret;\n}\n/**\n * Returns the widths of all group sets of a column\n */\nfunction columnGroupWidths(groups, all) {\n return {\n left: columnTotalWidth(groups.left),\n center: columnTotalWidth(groups.center),\n right: columnTotalWidth(groups.right),\n total: Math.floor(columnTotalWidth(all))\n };\n}\n/**\n * Calculates the total width of all columns and their groups\n */\nfunction columnTotalWidth(columns, prop) {\n let totalWidth = 0;\n if (columns) {\n for (const c of columns) {\n const has = prop && c[prop];\n const width = has ? c[prop] : c.width;\n totalWidth = totalWidth + parseFloat(width);\n }\n }\n return totalWidth;\n}\n/**\n * Calculates the total width of all columns and their groups\n */\nfunction columnsTotalWidth(columns, prop) {\n let totalWidth = 0;\n for (const column of columns) {\n const has = prop && column[prop];\n totalWidth = totalWidth + (has ? column[prop] : column.width);\n }\n return totalWidth;\n}\nfunction columnsByPinArr(val) {\n const colsByPinArr = [];\n const colsByPin = columnsByPin(val);\n colsByPinArr.push({\n type: 'left',\n columns: colsByPin['left']\n });\n colsByPinArr.push({\n type: 'center',\n columns: colsByPin['center']\n });\n colsByPinArr.push({\n type: 'right',\n columns: colsByPin['right']\n });\n return colsByPinArr;\n}\n\n/**\n * This object contains the cache of the various row heights that are present inside\n * the data table. Its based on Fenwick tree data structure that helps with\n * querying sums that have time complexity of log n.\n *\n * Fenwick Tree Credits: http://petr-mitrichev.blogspot.com/2013/05/fenwick-tree-range-updates.html\n * https://github.com/mikolalysenko/fenwick-tree\n *\n */\nclass RowHeightCache {\n constructor() {\n /**\n * Tree Array stores the cumulative information of the row heights to perform efficient\n * range queries and updates. Currently the tree is initialized to the base row\n * height instead of the detail row height.\n */\n this.treeArray = [];\n }\n /**\n * Clear the Tree array.\n */\n clearCache() {\n this.treeArray = [];\n }\n /**\n * Initialize the Fenwick tree with row Heights.\n *\n * @param rows The array of rows which contain the expanded status.\n * @param rowHeight The row height.\n * @param detailRowHeight The detail row height.\n */\n initCache(details) {\n const {\n rows,\n rowHeight,\n detailRowHeight,\n externalVirtual,\n rowCount,\n rowIndexes,\n rowExpansions\n } = details;\n const isFn = typeof rowHeight === 'function';\n const isDetailFn = typeof detailRowHeight === 'function';\n if (!isFn && isNaN(rowHeight)) {\n throw new Error(`Row Height cache initialization failed. Please ensure that 'rowHeight' is a\n valid number or function value: (${rowHeight}) when 'scrollbarV' is enabled.`);\n }\n // Add this additional guard in case detailRowHeight is set to 'auto' as it wont work.\n if (!isDetailFn && isNaN(detailRowHeight)) {\n throw new Error(`Row Height cache initialization failed. Please ensure that 'detailRowHeight' is a\n valid number or function value: (${detailRowHeight}) when 'scrollbarV' is enabled.`);\n }\n const n = externalVirtual ? rowCount : rows.length;\n this.treeArray = new Array(n);\n for (let i = 0; i < n; ++i) {\n this.treeArray[i] = 0;\n }\n for (let i = 0; i < n; ++i) {\n const row = rows[i];\n let currentRowHeight = rowHeight;\n if (isFn) {\n currentRowHeight = rowHeight(row);\n }\n // Add the detail row height to the already expanded rows.\n // This is useful for the table that goes through a filter or sort.\n const expanded = rowExpansions.has(row);\n if (row && expanded) {\n if (isDetailFn) {\n const index = rowIndexes.get(row);\n currentRowHeight += detailRowHeight(row, index);\n } else {\n currentRowHeight += detailRowHeight;\n }\n }\n this.update(i, currentRowHeight);\n }\n }\n /**\n * Given the ScrollY position i.e. sum, provide the rowIndex\n * that is present in the current view port. Below handles edge cases.\n */\n getRowIndex(scrollY) {\n if (scrollY === 0) return 0;\n return this.calcRowIndex(scrollY);\n }\n /**\n * When a row is expanded or rowHeight is changed, update the height. This can\n * be utilized in future when Angular Data table supports dynamic row heights.\n */\n update(atRowIndex, byRowHeight) {\n if (!this.treeArray.length) {\n throw new Error(`Update at index ${atRowIndex} with value ${byRowHeight} failed:\n Row Height cache not initialized.`);\n }\n const n = this.treeArray.length;\n atRowIndex |= 0;\n while (atRowIndex < n) {\n this.treeArray[atRowIndex] += byRowHeight;\n atRowIndex |= atRowIndex + 1;\n }\n }\n /**\n * Range Sum query from 1 to the rowIndex\n */\n query(atIndex) {\n if (!this.treeArray.length) {\n throw new Error(`query at index ${atIndex} failed: Fenwick tree array not initialized.`);\n }\n let sum = 0;\n atIndex |= 0;\n while (atIndex >= 0) {\n sum += this.treeArray[atIndex];\n atIndex = (atIndex & atIndex + 1) - 1;\n }\n return sum;\n }\n /**\n * Find the total height between 2 row indexes\n */\n queryBetween(atIndexA, atIndexB) {\n return this.query(atIndexB) - this.query(atIndexA - 1);\n }\n /**\n * Given the ScrollY position i.e. sum, provide the rowIndex\n * that is present in the current view port.\n */\n calcRowIndex(sum) {\n if (!this.treeArray.length) return 0;\n let pos = -1;\n const dataLength = this.treeArray.length;\n // Get the highest bit for the block size.\n const highestBit = Math.pow(2, dataLength.toString(2).length - 1);\n for (let blockSize = highestBit; blockSize !== 0; blockSize >>= 1) {\n const nextPos = pos + blockSize;\n if (nextPos < dataLength && sum >= this.treeArray[nextPos]) {\n sum -= this.treeArray[nextPos];\n pos = nextPos;\n }\n }\n return pos + 1;\n }\n}\nconst cache = {};\nconst testStyle = typeof document !== 'undefined' ? document.createElement('div').style : undefined;\n// Get Prefix\n// http://davidwalsh.name/vendor-prefix\nconst prefix = function () {\n const styles = typeof window !== 'undefined' ? window.getComputedStyle(document.documentElement, '') : undefined;\n const match = typeof styles !== 'undefined' ? Array.prototype.slice.call(styles).join('').match(/-(moz|webkit|ms)-/) : null;\n const pre = match !== null ? match[1] : undefined;\n // tslint:disable-next-line: tsr-detect-non-literal-regexp\n const dom = typeof pre !== 'undefined' ? 'WebKit|Moz|MS|O'.match(new RegExp('(' + pre + ')', 'i'))[1] : undefined;\n return dom ? {\n dom,\n lowercase: pre,\n css: `-${pre}-`,\n js: pre[0].toUpperCase() + pre.substr(1)\n } : undefined;\n}();\nfunction getVendorPrefixedName(property) {\n const name = camelCase(property);\n if (!cache[name]) {\n if (prefix !== undefined && testStyle[prefix.css + property] !== undefined) {\n cache[name] = prefix.css + property;\n } else if (testStyle[property] !== undefined) {\n cache[name] = property;\n }\n }\n return cache[name];\n}\n\n// browser detection and prefixing tools\nconst transform = typeof window !== 'undefined' ? getVendorPrefixedName('transform') : undefined;\nconst backfaceVisibility = typeof window !== 'undefined' ? getVendorPrefixedName('backfaceVisibility') : undefined;\nconst hasCSSTransforms = typeof window !== 'undefined' ? !!getVendorPrefixedName('transform') : undefined;\nconst hasCSS3DTransforms = typeof window !== 'undefined' ? !!getVendorPrefixedName('perspective') : undefined;\nconst ua = typeof window !== 'undefined' ? window.navigator.userAgent : 'Chrome';\nconst isSafari = /Safari\\//.test(ua) && !/Chrome\\//.test(ua);\nfunction translateXY(styles, x, y) {\n if (typeof transform !== 'undefined' && hasCSSTransforms) {\n if (!isSafari && hasCSS3DTransforms) {\n styles[transform] = `translate3d(${x}px, ${y}px, 0)`;\n styles[backfaceVisibility] = 'hidden';\n } else {\n styles[camelCase(transform)] = `translate(${x}px, ${y}px)`;\n }\n } else {\n styles.top = `${y}px`;\n styles.left = `${x}px`;\n }\n}\nclass ProgressBarComponent {}\nProgressBarComponent.ɵfac = function ProgressBarComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ProgressBarComponent)();\n};\nProgressBarComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ProgressBarComponent,\n selectors: [[\"datatable-progress\"]],\n decls: 3,\n vars: 0,\n consts: [[\"role\", \"progressbar\", 1, \"progress-linear\"], [1, \"container\"], [1, \"bar\"]],\n template: function ProgressBarComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0)(1, \"div\", 1);\n i0.ɵɵelement(2, \"div\", 2);\n i0.ɵɵelementEnd()();\n }\n },\n encapsulation: 2,\n changeDetection: 0\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ProgressBarComponent, [{\n type: Component,\n args: [{\n selector: 'datatable-progress',\n template: `\n
\n
\n
\n
\n
\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], null, null);\n})();\nfunction selectRows(selected, row, comparefn) {\n const selectedIndex = comparefn(row, selected);\n if (selectedIndex > -1) {\n selected.splice(selectedIndex, 1);\n } else {\n selected.push(row);\n }\n return selected;\n}\nfunction selectRowsBetween(selected, rows, index, prevIndex, comparefn) {\n const reverse = index < prevIndex;\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n const greater = i >= prevIndex && i <= index;\n const lesser = i <= prevIndex && i >= index;\n let range = {\n start: 0,\n end: 0\n };\n if (reverse) {\n range = {\n start: index,\n end: prevIndex\n };\n } else {\n range = {\n start: prevIndex,\n end: index + 1\n };\n }\n if (reverse && lesser || !reverse && greater) {\n // if in the positive range to be added to `selected`, and\n // not already in the selected array, add it\n if (i >= range.start && i <= range.end) {\n selected.push(row);\n }\n }\n }\n return selected;\n}\nvar Keys;\n(function (Keys) {\n Keys[Keys[\"up\"] = 38] = \"up\";\n Keys[Keys[\"down\"] = 40] = \"down\";\n Keys[Keys[\"return\"] = 13] = \"return\";\n Keys[Keys[\"escape\"] = 27] = \"escape\";\n Keys[Keys[\"left\"] = 37] = \"left\";\n Keys[Keys[\"right\"] = 39] = \"right\";\n})(Keys || (Keys = {}));\nclass DataTableSelectionComponent {\n constructor() {\n this.activate = new EventEmitter();\n this.select = new EventEmitter();\n }\n selectRow(event, index, row) {\n if (!this.selectEnabled) return;\n const chkbox = this.selectionType === SelectionType.checkbox;\n const multi = this.selectionType === SelectionType.multi;\n const multiClick = this.selectionType === SelectionType.multiClick;\n let selected = [];\n if (multi || chkbox || multiClick) {\n if (event.shiftKey) {\n selected = selectRowsBetween([], this.rows, index, this.prevIndex, this.getRowSelectedIdx.bind(this));\n } else if (event.ctrlKey || event.metaKey || multiClick || chkbox) {\n selected = selectRows([...this.selected], row, this.getRowSelectedIdx.bind(this));\n } else {\n selected = selectRows([], row, this.getRowSelectedIdx.bind(this));\n }\n } else {\n selected = selectRows([], row, this.getRowSelectedIdx.bind(this));\n }\n if (typeof this.selectCheck === 'function') {\n selected = selected.filter(this.selectCheck.bind(this));\n }\n this.selected.splice(0, this.selected.length);\n this.selected.push(...selected);\n this.prevIndex = index;\n this.select.emit({\n selected\n });\n }\n onActivate(model, index) {\n const {\n type,\n event,\n row\n } = model;\n const chkbox = this.selectionType === SelectionType.checkbox;\n const select = !chkbox && (type === 'click' || type === 'dblclick') || chkbox && type === 'checkbox';\n if (select) {\n this.selectRow(event, index, row);\n } else if (type === 'keydown') {\n if (event.keyCode === Keys.return) {\n this.selectRow(event, index, row);\n } else {\n this.onKeyboardFocus(model);\n }\n }\n this.activate.emit(model);\n }\n onKeyboardFocus(model) {\n const {\n keyCode\n } = model.event;\n const shouldFocus = keyCode === Keys.up || keyCode === Keys.down || keyCode === Keys.right || keyCode === Keys.left;\n if (shouldFocus) {\n const isCellSelection = this.selectionType === SelectionType.cell;\n if (!model.cellElement || !isCellSelection) {\n this.focusRow(model.rowElement, keyCode);\n } else if (isCellSelection) {\n this.focusCell(model.cellElement, model.rowElement, keyCode, model.cellIndex);\n }\n }\n }\n focusRow(rowElement, keyCode) {\n const nextRowElement = this.getPrevNextRow(rowElement, keyCode);\n if (nextRowElement) nextRowElement.focus();\n }\n getPrevNextRow(rowElement, keyCode) {\n const parentElement = rowElement.parentElement;\n if (parentElement) {\n let focusElement;\n if (keyCode === Keys.up) {\n focusElement = parentElement.previousElementSibling;\n } else if (keyCode === Keys.down) {\n focusElement = parentElement.nextElementSibling;\n }\n if (focusElement && focusElement.children.length) {\n return focusElement.children[0];\n }\n }\n }\n focusCell(cellElement, rowElement, keyCode, cellIndex) {\n let nextCellElement;\n if (keyCode === Keys.left) {\n nextCellElement = cellElement.previousElementSibling;\n } else if (keyCode === Keys.right) {\n nextCellElement = cellElement.nextElementSibling;\n } else if (keyCode === Keys.up || keyCode === Keys.down) {\n const nextRowElement = this.getPrevNextRow(rowElement, keyCode);\n if (nextRowElement) {\n const children = nextRowElement.getElementsByClassName('datatable-body-cell');\n if (children.length) nextCellElement = children[cellIndex];\n }\n }\n if (nextCellElement) nextCellElement.focus();\n }\n getRowSelected(row) {\n return this.getRowSelectedIdx(row, this.selected) > -1;\n }\n getRowSelectedIdx(row, selected) {\n if (!selected || !selected.length) return -1;\n const rowId = this.rowIdentity(row);\n return selected.findIndex(r => {\n const id = this.rowIdentity(r);\n return id === rowId;\n });\n }\n}\nDataTableSelectionComponent.ɵfac = function DataTableSelectionComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DataTableSelectionComponent)();\n};\nDataTableSelectionComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DataTableSelectionComponent,\n selectors: [[\"datatable-selection\"]],\n inputs: {\n rows: \"rows\",\n selected: \"selected\",\n selectEnabled: \"selectEnabled\",\n selectionType: \"selectionType\",\n rowIdentity: \"rowIdentity\",\n selectCheck: \"selectCheck\"\n },\n outputs: {\n activate: \"activate\",\n select: \"select\"\n },\n ngContentSelectors: _c0,\n decls: 1,\n vars: 0,\n template: function DataTableSelectionComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2,\n changeDetection: 0\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DataTableSelectionComponent, [{\n type: Component,\n args: [{\n selector: 'datatable-selection',\n template: ` `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], null, {\n rows: [{\n type: Input\n }],\n selected: [{\n type: Input\n }],\n selectEnabled: [{\n type: Input\n }],\n selectionType: [{\n type: Input\n }],\n rowIdentity: [{\n type: Input\n }],\n selectCheck: [{\n type: Input\n }],\n activate: [{\n type: Output\n }],\n select: [{\n type: Output\n }]\n });\n})();\nvar SortDirection;\n(function (SortDirection) {\n SortDirection[\"asc\"] = \"asc\";\n SortDirection[\"desc\"] = \"desc\";\n})(SortDirection || (SortDirection = {}));\nclass DataTableBodyCellComponent {\n constructor(element, cd) {\n this.cd = cd;\n this.activate = new EventEmitter();\n this.treeAction = new EventEmitter();\n this.isFocused = false;\n this.onCheckboxChangeFn = this.onCheckboxChange.bind(this);\n this.activateFn = this.activate.emit.bind(this.activate);\n this.cellContext = {\n onCheckboxChangeFn: this.onCheckboxChangeFn,\n activateFn: this.activateFn,\n row: this.row,\n group: this.group,\n value: this.value,\n column: this.column,\n rowHeight: this.rowHeight,\n isSelected: this.isSelected,\n rowIndex: this.rowIndex,\n treeStatus: this.treeStatus,\n onTreeAction: this.onTreeAction.bind(this)\n };\n this._element = element.nativeElement;\n }\n set group(group) {\n this._group = group;\n this.cellContext.group = group;\n this.checkValueUpdates();\n this.cd.markForCheck();\n }\n get group() {\n return this._group;\n }\n set rowHeight(val) {\n this._rowHeight = val;\n this.cellContext.rowHeight = val;\n this.checkValueUpdates();\n this.cd.markForCheck();\n }\n get rowHeight() {\n return this._rowHeight;\n }\n set isSelected(val) {\n this._isSelected = val;\n this.cellContext.isSelected = val;\n this.cd.markForCheck();\n }\n get isSelected() {\n return this._isSelected;\n }\n set expanded(val) {\n this._expanded = val;\n this.cellContext.expanded = val;\n this.cd.markForCheck();\n }\n get expanded() {\n return this._expanded;\n }\n set rowIndex(val) {\n this._rowIndex = val;\n this.cellContext.rowIndex = val;\n this.checkValueUpdates();\n this.cd.markForCheck();\n }\n get rowIndex() {\n return this._rowIndex;\n }\n set column(column) {\n this._column = column;\n this.cellContext.column = column;\n this.checkValueUpdates();\n this.cd.markForCheck();\n }\n get column() {\n return this._column;\n }\n set row(row) {\n this._row = row;\n this.cellContext.row = row;\n this.checkValueUpdates();\n this.cd.markForCheck();\n }\n get row() {\n return this._row;\n }\n set sorts(val) {\n this._sorts = val;\n this.calcSortDir = this.calcSortDir(val);\n }\n get sorts() {\n return this._sorts;\n }\n set treeStatus(status) {\n if (status !== 'collapsed' && status !== 'expanded' && status !== 'loading' && status !== 'disabled') {\n this._treeStatus = 'collapsed';\n } else {\n this._treeStatus = status;\n }\n this.cellContext.treeStatus = this._treeStatus;\n this.checkValueUpdates();\n this.cd.markForCheck();\n }\n get treeStatus() {\n return this._treeStatus;\n }\n get columnCssClasses() {\n let cls = 'datatable-body-cell';\n if (this.column.cellClass) {\n if (typeof this.column.cellClass === 'string') {\n cls += ' ' + this.column.cellClass;\n } else if (typeof this.column.cellClass === 'function') {\n const res = this.column.cellClass({\n row: this.row,\n group: this.group,\n column: this.column,\n value: this.value,\n rowHeight: this.rowHeight\n });\n if (typeof res === 'string') {\n cls += ' ' + res;\n } else if (typeof res === 'object') {\n const keys = Object.keys(res);\n for (const k of keys) {\n if (res[k] === true) {\n cls += ` ${k}`;\n }\n }\n }\n }\n }\n if (!this.sortDir) {\n cls += ' sort-active';\n }\n if (this.isFocused) {\n cls += ' active';\n }\n if (this.sortDir === SortDirection.asc) {\n cls += ' sort-asc';\n }\n if (this.sortDir === SortDirection.desc) {\n cls += ' sort-desc';\n }\n return cls;\n }\n get width() {\n return this.column.width;\n }\n get minWidth() {\n return this.column.minWidth;\n }\n get maxWidth() {\n return this.column.maxWidth;\n }\n get height() {\n const height = this.rowHeight;\n if (isNaN(height)) {\n return height;\n }\n return height + 'px';\n }\n ngDoCheck() {\n this.checkValueUpdates();\n }\n ngOnDestroy() {\n if (this.cellTemplate) {\n this.cellTemplate.clear();\n }\n }\n checkValueUpdates() {\n let value = '';\n if (!this.row || !this.column) {\n value = '';\n } else {\n const val = this.column.$$valueGetter(this.row, this.column.prop);\n const userPipe = this.column.pipe;\n if (userPipe) {\n value = userPipe.transform(val);\n } else if (value !== undefined) {\n value = val;\n }\n }\n if (this.value !== value) {\n this.value = value;\n this.cellContext.value = value;\n this.sanitizedValue = value !== null && value !== undefined ? this.stripHtml(value) : value;\n this.cd.markForCheck();\n }\n }\n onFocus() {\n this.isFocused = true;\n }\n onBlur() {\n this.isFocused = false;\n }\n onClick(event) {\n this.activate.emit({\n type: 'click',\n event,\n row: this.row,\n group: this.group,\n rowHeight: this.rowHeight,\n column: this.column,\n value: this.value,\n cellElement: this._element\n });\n }\n onDblClick(event) {\n this.activate.emit({\n type: 'dblclick',\n event,\n row: this.row,\n group: this.group,\n rowHeight: this.rowHeight,\n column: this.column,\n value: this.value,\n cellElement: this._element\n });\n }\n onKeyDown(event) {\n const keyCode = event.keyCode;\n const isTargetCell = event.target === this._element;\n const isAction = keyCode === Keys.return || keyCode === Keys.down || keyCode === Keys.up || keyCode === Keys.left || keyCode === Keys.right;\n if (isAction && isTargetCell) {\n event.preventDefault();\n event.stopPropagation();\n this.activate.emit({\n type: 'keydown',\n event,\n row: this.row,\n group: this.group,\n rowHeight: this.rowHeight,\n column: this.column,\n value: this.value,\n cellElement: this._element\n });\n }\n }\n onCheckboxChange(event) {\n this.activate.emit({\n type: 'checkbox',\n event,\n row: this.row,\n group: this.group,\n rowHeight: this.rowHeight,\n column: this.column,\n value: this.value,\n cellElement: this._element,\n treeStatus: 'collapsed'\n });\n }\n calcSortDir(sorts) {\n if (!sorts) {\n return;\n }\n const sort = sorts.find(s => {\n return s.prop === this.column.prop;\n });\n if (sort) {\n return sort.dir;\n }\n }\n stripHtml(html) {\n if (!html.replace) {\n return html;\n }\n return html.replace(/<\\/?[^>]+(>|$)/g, '');\n }\n onTreeAction() {\n this.treeAction.emit(this.row);\n }\n calcLeftMargin(column, row) {\n const levelIndent = column.treeLevelIndent != null ? column.treeLevelIndent : 50;\n return column.isTreeColumn ? row.level * levelIndent : 0;\n }\n}\nDataTableBodyCellComponent.ɵfac = function DataTableBodyCellComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DataTableBodyCellComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n};\nDataTableBodyCellComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DataTableBodyCellComponent,\n selectors: [[\"datatable-body-cell\"]],\n viewQuery: function DataTableBodyCellComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c1, 7, ViewContainerRef);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.cellTemplate = _t.first);\n }\n },\n hostVars: 10,\n hostBindings: function DataTableBodyCellComponent_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"focus\", function DataTableBodyCellComponent_focus_HostBindingHandler() {\n return ctx.onFocus();\n })(\"blur\", function DataTableBodyCellComponent_blur_HostBindingHandler() {\n return ctx.onBlur();\n })(\"click\", function DataTableBodyCellComponent_click_HostBindingHandler($event) {\n return ctx.onClick($event);\n })(\"dblclick\", function DataTableBodyCellComponent_dblclick_HostBindingHandler($event) {\n return ctx.onDblClick($event);\n })(\"keydown\", function DataTableBodyCellComponent_keydown_HostBindingHandler($event) {\n return ctx.onKeyDown($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵclassMap(ctx.columnCssClasses);\n i0.ɵɵstyleProp(\"width\", ctx.width, \"px\")(\"min-width\", ctx.minWidth, \"px\")(\"max-width\", ctx.maxWidth, \"px\")(\"height\", ctx.height);\n }\n },\n inputs: {\n displayCheck: \"displayCheck\",\n group: \"group\",\n rowHeight: \"rowHeight\",\n isSelected: \"isSelected\",\n expanded: \"expanded\",\n rowIndex: \"rowIndex\",\n column: \"column\",\n row: \"row\",\n sorts: \"sorts\",\n treeStatus: \"treeStatus\"\n },\n outputs: {\n activate: \"activate\",\n treeAction: \"treeAction\"\n },\n decls: 5,\n vars: 6,\n consts: [[\"cellTemplate\", \"\"], [1, \"datatable-body-cell-label\"], [\"class\", \"datatable-checkbox\", 4, \"ngIf\"], [4, \"ngIf\"], [3, \"title\", \"innerHTML\", 4, \"ngIf\"], [1, \"datatable-checkbox\"], [\"type\", \"checkbox\", 3, \"click\", \"checked\"], [\"class\", \"datatable-tree-button\", 3, \"disabled\", \"click\", 4, \"ngIf\"], [1, \"datatable-tree-button\", 3, \"click\", \"disabled\"], [\"class\", \"icon datatable-icon-collapse\", 4, \"ngIf\"], [\"class\", \"icon datatable-icon-up\", 4, \"ngIf\"], [\"class\", \"icon datatable-icon-down\", 4, \"ngIf\"], [1, \"icon\", \"datatable-icon-collapse\"], [1, \"icon\", \"datatable-icon-up\"], [1, \"icon\", \"datatable-icon-down\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [3, \"title\", \"innerHTML\"]],\n template: function DataTableBodyCellComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 1);\n i0.ɵɵtemplate(1, DataTableBodyCellComponent_label_1_Template, 2, 1, \"label\", 2)(2, DataTableBodyCellComponent_ng_container_2_Template, 3, 2, \"ng-container\", 3)(3, DataTableBodyCellComponent_span_3_Template, 1, 2, \"span\", 4)(4, DataTableBodyCellComponent_4_Template, 2, 2, null, 3);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵstyleProp(\"margin-left\", ctx.calcLeftMargin(ctx.column, ctx.row), \"px\");\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.column.checkboxable && (!ctx.displayCheck || ctx.displayCheck(ctx.row, ctx.column, ctx.value)));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.column.isTreeColumn);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx.column.cellTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.column.cellTemplate);\n }\n },\n dependencies: [i1.NgIf, i1.NgTemplateOutlet],\n encapsulation: 2,\n changeDetection: 0\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DataTableBodyCellComponent, [{\n type: Component,\n args: [{\n selector: 'datatable-body-cell',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n
\n `\n }]\n }], function () {\n return [{\n type: i0.ElementRef\n }, {\n type: i0.ChangeDetectorRef\n }];\n }, {\n displayCheck: [{\n type: Input\n }],\n group: [{\n type: Input\n }],\n rowHeight: [{\n type: Input\n }],\n isSelected: [{\n type: Input\n }],\n expanded: [{\n type: Input\n }],\n rowIndex: [{\n type: Input\n }],\n column: [{\n type: Input\n }],\n row: [{\n type: Input\n }],\n sorts: [{\n type: Input\n }],\n treeStatus: [{\n type: Input\n }],\n activate: [{\n type: Output\n }],\n treeAction: [{\n type: Output\n }],\n cellTemplate: [{\n type: ViewChild,\n args: ['cellTemplate', {\n read: ViewContainerRef,\n static: true\n }]\n }],\n columnCssClasses: [{\n type: HostBinding,\n args: ['class']\n }],\n width: [{\n type: HostBinding,\n args: ['style.width.px']\n }],\n minWidth: [{\n type: HostBinding,\n args: ['style.minWidth.px']\n }],\n maxWidth: [{\n type: HostBinding,\n args: ['style.maxWidth.px']\n }],\n height: [{\n type: HostBinding,\n args: ['style.height']\n }],\n onFocus: [{\n type: HostListener,\n args: ['focus']\n }],\n onBlur: [{\n type: HostListener,\n args: ['blur']\n }],\n onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }],\n onDblClick: [{\n type: HostListener,\n args: ['dblclick', ['$event']]\n }],\n onKeyDown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }]\n });\n})();\nclass DataTableBodyRowComponent {\n constructor(differs, scrollbarHelper, cd, element) {\n this.differs = differs;\n this.scrollbarHelper = scrollbarHelper;\n this.cd = cd;\n this.treeStatus = 'collapsed';\n this.activate = new EventEmitter();\n this.treeAction = new EventEmitter();\n this._groupStyles = {\n left: {},\n center: {},\n right: {}\n };\n this._element = element.nativeElement;\n this._rowDiffer = differs.find({}).create();\n }\n set columns(val) {\n this._columns = val;\n this.recalculateColumns(val);\n this.buildStylesByGroup();\n }\n get columns() {\n return this._columns;\n }\n set innerWidth(val) {\n if (this._columns) {\n const colByPin = columnsByPin(this._columns);\n this._columnGroupWidths = columnGroupWidths(colByPin, this._columns);\n }\n this._innerWidth = val;\n this.recalculateColumns();\n this.buildStylesByGroup();\n }\n get innerWidth() {\n return this._innerWidth;\n }\n set offsetX(val) {\n this._offsetX = val;\n this.buildStylesByGroup();\n }\n get offsetX() {\n return this._offsetX;\n }\n get cssClass() {\n let cls = 'datatable-body-row';\n if (this.isSelected) {\n cls += ' active';\n }\n if (this.rowIndex % 2 !== 0) {\n cls += ' datatable-row-odd';\n }\n if (this.rowIndex % 2 === 0) {\n cls += ' datatable-row-even';\n }\n if (this.rowClass) {\n const res = this.rowClass(this.row);\n if (typeof res === 'string') {\n cls += ` ${res}`;\n } else if (typeof res === 'object') {\n const keys = Object.keys(res);\n for (const k of keys) {\n if (res[k] === true) {\n cls += ` ${k}`;\n }\n }\n }\n }\n return cls;\n }\n get columnsTotalWidths() {\n return this._columnGroupWidths.total;\n }\n ngDoCheck() {\n if (this._rowDiffer.diff(this.row)) {\n this.cd.markForCheck();\n }\n }\n trackByGroups(index, colGroup) {\n return colGroup.type;\n }\n columnTrackingFn(index, column) {\n return column.$$id;\n }\n buildStylesByGroup() {\n this._groupStyles.left = this.calcStylesByGroup('left');\n this._groupStyles.center = this.calcStylesByGroup('center');\n this._groupStyles.right = this.calcStylesByGroup('right');\n this.cd.markForCheck();\n }\n calcStylesByGroup(group) {\n const widths = this._columnGroupWidths;\n const offsetX = this.offsetX;\n const styles = {\n width: `${widths[group]}px`\n };\n if (group === 'left') {\n translateXY(styles, offsetX, 0);\n } else if (group === 'right') {\n const bodyWidth = parseInt(this.innerWidth + '', 0);\n const totalDiff = widths.total - bodyWidth;\n const offsetDiff = totalDiff - offsetX;\n const offset = (offsetDiff + this.scrollbarHelper.width) * -1;\n translateXY(styles, offset, 0);\n }\n return styles;\n }\n onActivate(event, index) {\n event.cellIndex = index;\n event.rowElement = this._element;\n this.activate.emit(event);\n }\n onKeyDown(event) {\n const keyCode = event.keyCode;\n const isTargetRow = event.target === this._element;\n const isAction = keyCode === Keys.return || keyCode === Keys.down || keyCode === Keys.up || keyCode === Keys.left || keyCode === Keys.right;\n if (isAction && isTargetRow) {\n event.preventDefault();\n event.stopPropagation();\n this.activate.emit({\n type: 'keydown',\n event,\n row: this.row,\n rowElement: this._element\n });\n }\n }\n onMouseenter(event) {\n this.activate.emit({\n type: 'mouseenter',\n event,\n row: this.row,\n rowElement: this._element\n });\n }\n recalculateColumns(val = this.columns) {\n this._columns = val;\n const colsByPin = columnsByPin(this._columns);\n this._columnsByPin = columnsByPinArr(this._columns);\n this._columnGroupWidths = columnGroupWidths(colsByPin, this._columns);\n }\n onTreeAction() {\n this.treeAction.emit();\n }\n}\nDataTableBodyRowComponent.ɵfac = function DataTableBodyRowComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DataTableBodyRowComponent)(i0.ɵɵdirectiveInject(i0.KeyValueDiffers), i0.ɵɵdirectiveInject(ScrollbarHelper, 4), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.ElementRef));\n};\nDataTableBodyRowComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DataTableBodyRowComponent,\n selectors: [[\"datatable-body-row\"]],\n hostVars: 6,\n hostBindings: function DataTableBodyRowComponent_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"keydown\", function DataTableBodyRowComponent_keydown_HostBindingHandler($event) {\n return ctx.onKeyDown($event);\n })(\"mouseenter\", function DataTableBodyRowComponent_mouseenter_HostBindingHandler($event) {\n return ctx.onMouseenter($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵclassMap(ctx.cssClass);\n i0.ɵɵstyleProp(\"height\", ctx.rowHeight, \"px\")(\"width\", ctx.columnsTotalWidths, \"px\");\n }\n },\n inputs: {\n columns: \"columns\",\n innerWidth: \"innerWidth\",\n expanded: \"expanded\",\n rowClass: \"rowClass\",\n row: \"row\",\n group: \"group\",\n isSelected: \"isSelected\",\n rowIndex: \"rowIndex\",\n displayCheck: \"displayCheck\",\n treeStatus: \"treeStatus\",\n offsetX: \"offsetX\",\n rowHeight: \"rowHeight\"\n },\n outputs: {\n activate: \"activate\",\n treeAction: \"treeAction\"\n },\n decls: 1,\n vars: 2,\n consts: [[3, \"class\", \"ngStyle\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [3, \"ngStyle\"], [\"role\", \"cell\", \"tabindex\", \"-1\", 3, \"row\", \"group\", \"expanded\", \"isSelected\", \"rowIndex\", \"column\", \"rowHeight\", \"displayCheck\", \"treeStatus\", \"activate\", \"treeAction\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"role\", \"cell\", \"tabindex\", \"-1\", 3, \"activate\", \"treeAction\", \"row\", \"group\", \"expanded\", \"isSelected\", \"rowIndex\", \"column\", \"rowHeight\", \"displayCheck\", \"treeStatus\"]],\n template: function DataTableBodyRowComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DataTableBodyRowComponent_div_0_Template, 2, 6, \"div\", 0);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngForOf\", ctx._columnsByPin)(\"ngForTrackBy\", ctx.trackByGroups);\n }\n },\n dependencies: [DataTableBodyCellComponent, i1.NgForOf, i1.NgStyle],\n encapsulation: 2,\n changeDetection: 0\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DataTableBodyRowComponent, [{\n type: Component,\n args: [{\n selector: 'datatable-body-row',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n \n \n \n \n `\n }]\n }], function () {\n return [{\n type: i0.KeyValueDiffers\n }, {\n type: ScrollbarHelper,\n decorators: [{\n type: SkipSelf\n }]\n }, {\n type: i0.ChangeDetectorRef\n }, {\n type: i0.ElementRef\n }];\n }, {\n columns: [{\n type: Input\n }],\n innerWidth: [{\n type: Input\n }],\n expanded: [{\n type: Input\n }],\n rowClass: [{\n type: Input\n }],\n row: [{\n type: Input\n }],\n group: [{\n type: Input\n }],\n isSelected: [{\n type: Input\n }],\n rowIndex: [{\n type: Input\n }],\n displayCheck: [{\n type: Input\n }],\n treeStatus: [{\n type: Input\n }],\n offsetX: [{\n type: Input\n }],\n cssClass: [{\n type: HostBinding,\n args: ['class']\n }],\n rowHeight: [{\n type: HostBinding,\n args: ['style.height.px']\n }, {\n type: Input\n }],\n columnsTotalWidths: [{\n type: HostBinding,\n args: ['style.width.px']\n }],\n activate: [{\n type: Output\n }],\n treeAction: [{\n type: Output\n }],\n onKeyDown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }],\n onMouseenter: [{\n type: HostListener,\n args: ['mouseenter', ['$event']]\n }]\n });\n})();\nfunction defaultSumFunc(cells) {\n const cellsWithValues = cells.filter(cell => !!cell);\n if (!cellsWithValues.length) {\n return null;\n }\n if (cellsWithValues.some(cell => typeof cell !== 'number')) {\n return null;\n }\n return cellsWithValues.reduce((res, cell) => res + cell);\n}\nfunction noopSumFunc(cells) {\n return null;\n}\nclass DataTableSummaryRowComponent {\n constructor() {\n this.summaryRow = {};\n }\n ngOnChanges() {\n if (!this.columns || !this.rows) {\n return;\n }\n this.updateInternalColumns();\n this.updateValues();\n }\n updateInternalColumns() {\n this._internalColumns = this.columns.map(col => ({\n ...col,\n cellTemplate: col.summaryTemplate\n }));\n }\n updateValues() {\n this.summaryRow = {};\n this.columns.filter(col => !col.summaryTemplate).forEach(col => {\n const cellsFromSingleColumn = this.rows.map(row => row[col.prop]);\n const sumFunc = this.getSummaryFunction(col);\n this.summaryRow[col.prop] = col.pipe ? col.pipe.transform(sumFunc(cellsFromSingleColumn)) : sumFunc(cellsFromSingleColumn);\n });\n }\n getSummaryFunction(column) {\n if (column.summaryFunc === undefined) {\n return defaultSumFunc;\n } else if (column.summaryFunc === null) {\n return noopSumFunc;\n } else {\n return column.summaryFunc;\n }\n }\n}\nDataTableSummaryRowComponent.ɵfac = function DataTableSummaryRowComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DataTableSummaryRowComponent)();\n};\nDataTableSummaryRowComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DataTableSummaryRowComponent,\n selectors: [[\"datatable-summary-row\"]],\n hostAttrs: [1, \"datatable-summary-row\"],\n inputs: {\n rows: \"rows\",\n columns: \"columns\",\n rowHeight: \"rowHeight\",\n offsetX: \"offsetX\",\n innerWidth: \"innerWidth\"\n },\n features: [i0.ɵɵNgOnChangesFeature],\n decls: 1,\n vars: 1,\n consts: [[\"tabindex\", \"-1\", 3, \"innerWidth\", \"offsetX\", \"columns\", \"rowHeight\", \"row\", \"rowIndex\", 4, \"ngIf\"], [\"tabindex\", \"-1\", 3, \"innerWidth\", \"offsetX\", \"columns\", \"rowHeight\", \"row\", \"rowIndex\"]],\n template: function DataTableSummaryRowComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, DataTableSummaryRowComponent_datatable_body_row_0_Template, 1, 6, \"datatable-body-row\", 0);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.summaryRow && ctx._internalColumns);\n }\n },\n dependencies: [DataTableBodyRowComponent, i1.NgIf],\n encapsulation: 2\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DataTableSummaryRowComponent, [{\n type: Component,\n args: [{\n selector: 'datatable-summary-row',\n template: `\n \n \n `,\n host: {\n class: 'datatable-summary-row'\n }\n }]\n }], null, {\n rows: [{\n type: Input\n }],\n columns: [{\n type: Input\n }],\n rowHeight: [{\n type: Input\n }],\n offsetX: [{\n type: Input\n }],\n innerWidth: [{\n type: Input\n }]\n });\n})();\nclass DataTableRowWrapperComponent {\n constructor(cd, differs) {\n this.cd = cd;\n this.differs = differs;\n this.rowContextmenu = new EventEmitter(false);\n this._expanded = false;\n this.groupContext = {\n group: this.row,\n expanded: this.expanded,\n rowIndex: this.rowIndex\n };\n this.rowContext = {\n row: this.row,\n expanded: this.expanded,\n rowIndex: this.rowIndex\n };\n this.rowDiffer = differs.find({}).create();\n }\n set rowIndex(val) {\n this._rowIndex = val;\n this.rowContext.rowIndex = val;\n this.groupContext.rowIndex = val;\n this.cd.markForCheck();\n }\n get rowIndex() {\n return this._rowIndex;\n }\n set expanded(val) {\n this._expanded = val;\n this.groupContext.expanded = val;\n this.rowContext.expanded = val;\n this.cd.markForCheck();\n }\n get expanded() {\n return this._expanded;\n }\n ngDoCheck() {\n if (this.rowDiffer.diff(this.row)) {\n this.rowContext.row = this.row;\n this.groupContext.group = this.row;\n this.cd.markForCheck();\n }\n }\n onContextmenu($event) {\n this.rowContextmenu.emit({\n event: $event,\n row: this.row\n });\n }\n getGroupHeaderStyle() {\n const styles = {};\n styles['transform'] = 'translate3d(' + this.offsetX + 'px, 0px, 0px)';\n styles['backface-visibility'] = 'hidden';\n styles['width'] = this.innerWidth;\n return styles;\n }\n}\nDataTableRowWrapperComponent.ɵfac = function DataTableRowWrapperComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DataTableRowWrapperComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.KeyValueDiffers));\n};\nDataTableRowWrapperComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DataTableRowWrapperComponent,\n selectors: [[\"datatable-row-wrapper\"]],\n hostAttrs: [1, \"datatable-row-wrapper\"],\n hostBindings: function DataTableRowWrapperComponent_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"contextmenu\", function DataTableRowWrapperComponent_contextmenu_HostBindingHandler($event) {\n return ctx.onContextmenu($event);\n });\n }\n },\n inputs: {\n innerWidth: \"innerWidth\",\n rowDetail: \"rowDetail\",\n groupHeader: \"groupHeader\",\n offsetX: \"offsetX\",\n detailRowHeight: \"detailRowHeight\",\n row: \"row\",\n groupedRows: \"groupedRows\",\n rowIndex: \"rowIndex\",\n expanded: \"expanded\"\n },\n outputs: {\n rowContextmenu: \"rowContextmenu\"\n },\n ngContentSelectors: _c0,\n decls: 3,\n vars: 3,\n consts: [[\"class\", \"datatable-group-header\", 3, \"ngStyle\", 4, \"ngIf\"], [4, \"ngIf\"], [\"class\", \"datatable-row-detail\", 3, \"height\", 4, \"ngIf\"], [1, \"datatable-group-header\", 3, \"ngStyle\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"datatable-row-detail\"]],\n template: function DataTableRowWrapperComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, DataTableRowWrapperComponent_div_0_Template, 2, 2, \"div\", 0)(1, DataTableRowWrapperComponent_ng_content_1_Template, 1, 0, \"ng-content\", 1)(2, DataTableRowWrapperComponent_div_2_Template, 2, 3, \"div\", 2);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.groupHeader && ctx.groupHeader.template);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.groupHeader && ctx.groupHeader.template && ctx.expanded || !ctx.groupHeader || !ctx.groupHeader.template);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.rowDetail && ctx.rowDetail.template && ctx.expanded);\n }\n },\n dependencies: [i1.NgIf, i1.NgStyle, i1.NgTemplateOutlet],\n encapsulation: 2,\n changeDetection: 0\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DataTableRowWrapperComponent, [{\n type: Component,\n args: [{\n selector: 'datatable-row-wrapper',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n
\n \n \n
\n \n \n \n \n \n \n `,\n host: {\n class: 'datatable-row-wrapper'\n }\n }]\n }], function () {\n return [{\n type: i0.ChangeDetectorRef\n }, {\n type: i0.KeyValueDiffers\n }];\n }, {\n innerWidth: [{\n type: Input\n }],\n rowDetail: [{\n type: Input\n }],\n groupHeader: [{\n type: Input\n }],\n offsetX: [{\n type: Input\n }],\n detailRowHeight: [{\n type: Input\n }],\n row: [{\n type: Input\n }],\n groupedRows: [{\n type: Input\n }],\n rowContextmenu: [{\n type: Output\n }],\n rowIndex: [{\n type: Input\n }],\n expanded: [{\n type: Input\n }],\n onContextmenu: [{\n type: HostListener,\n args: ['contextmenu', ['$event']]\n }]\n });\n})();\nclass DataTableBodyComponent {\n /**\n * Creates an instance of DataTableBodyComponent.\n */\n constructor(cd) {\n this.cd = cd;\n this.selected = [];\n this.scroll = new EventEmitter();\n this.page = new EventEmitter();\n this.activate = new EventEmitter();\n this.select = new EventEmitter();\n this.detailToggle = new EventEmitter();\n this.rowContextmenu = new EventEmitter(false);\n this.treeAction = new EventEmitter();\n this.rowHeightsCache = new RowHeightCache();\n this.temp = [];\n this.offsetY = 0;\n this.indexes = {};\n this.rowIndexes = new WeakMap();\n this.rowExpansions = [];\n /**\n * Get the height of the detail row.\n */\n this.getDetailRowHeight = (row, index) => {\n if (!this.rowDetail) {\n return 0;\n }\n const rowHeight = this.rowDetail.rowHeight;\n return typeof rowHeight === 'function' ? rowHeight(row, index) : rowHeight;\n };\n // declare fn here so we can get access to the `this` property\n this.rowTrackingFn = (index, row) => {\n const idx = this.getRowIndex(row);\n if (this.trackByProp) {\n return row[this.trackByProp];\n } else {\n return idx;\n }\n };\n }\n set pageSize(val) {\n this._pageSize = val;\n this.recalcLayout();\n }\n get pageSize() {\n return this._pageSize;\n }\n set rows(val) {\n this._rows = val;\n this.recalcLayout();\n }\n get rows() {\n return this._rows;\n }\n set columns(val) {\n this._columns = val;\n const colsByPin = columnsByPin(val);\n this.columnGroupWidths = columnGroupWidths(colsByPin, val);\n }\n get columns() {\n return this._columns;\n }\n set offset(val) {\n this._offset = val;\n if (!this.scrollbarV || this.scrollbarV && !this.virtualization) this.recalcLayout();\n }\n get offset() {\n return this._offset;\n }\n set rowCount(val) {\n this._rowCount = val;\n this.recalcLayout();\n }\n get rowCount() {\n return this._rowCount;\n }\n get bodyWidth() {\n if (this.scrollbarH) {\n return this.innerWidth + 'px';\n } else {\n return '100%';\n }\n }\n set bodyHeight(val) {\n if (this.scrollbarV) {\n this._bodyHeight = val + 'px';\n } else {\n this._bodyHeight = 'auto';\n }\n this.recalcLayout();\n }\n get bodyHeight() {\n return this._bodyHeight;\n }\n /**\n * Returns if selection is enabled.\n */\n get selectEnabled() {\n return !!this.selectionType;\n }\n /**\n * Property that would calculate the height of scroll bar\n * based on the row heights cache for virtual scroll and virtualization. Other scenarios\n * calculate scroll height automatically (as height will be undefined).\n */\n get scrollHeight() {\n if (this.scrollbarV && this.virtualization && this.rowCount) {\n return this.rowHeightsCache.query(this.rowCount - 1);\n }\n // avoid TS7030: Not all code paths return a value.\n return undefined;\n }\n /**\n * Called after the constructor, initializing input properties\n */\n ngOnInit() {\n if (this.rowDetail) {\n this.listener = this.rowDetail.toggle.subscribe(({\n type,\n value\n }) => {\n if (type === 'row') {\n this.toggleRowExpansion(value);\n }\n if (type === 'all') {\n this.toggleAllRows(value);\n }\n // Refresh rows after toggle\n // Fixes #883\n this.updateIndexes();\n this.updateRows();\n this.cd.markForCheck();\n });\n }\n if (this.groupHeader) {\n this.listener = this.groupHeader.toggle.subscribe(({\n type,\n value\n }) => {\n if (type === 'group') {\n this.toggleRowExpansion(value);\n }\n if (type === 'all') {\n this.toggleAllRows(value);\n }\n // Refresh rows after toggle\n // Fixes #883\n this.updateIndexes();\n this.updateRows();\n this.cd.markForCheck();\n });\n }\n }\n /**\n * Called once, before the instance is destroyed.\n */\n ngOnDestroy() {\n if (this.rowDetail || this.groupHeader) {\n this.listener.unsubscribe();\n }\n }\n /**\n * Updates the Y offset given a new offset.\n */\n updateOffsetY(offset) {\n // scroller is missing on empty table\n if (!this.scroller) {\n return;\n }\n if (this.scrollbarV && this.virtualization && offset) {\n // First get the row Index that we need to move to.\n const rowIndex = this.pageSize * offset;\n offset = this.rowHeightsCache.query(rowIndex - 1);\n } else if (this.scrollbarV && !this.virtualization) {\n offset = 0;\n }\n this.scroller.setOffset(offset || 0);\n }\n /**\n * Body was scrolled, this is mainly useful for\n * when a user is server-side pagination via virtual scroll.\n */\n onBodyScroll(event) {\n const scrollYPos = event.scrollYPos;\n const scrollXPos = event.scrollXPos;\n // if scroll change, trigger update\n // this is mainly used for header cell positions\n if (this.offsetY !== scrollYPos || this.offsetX !== scrollXPos) {\n this.scroll.emit({\n offsetY: scrollYPos,\n offsetX: scrollXPos\n });\n }\n this.offsetY = scrollYPos;\n this.offsetX = scrollXPos;\n this.updateIndexes();\n this.updatePage(event.direction);\n this.updateRows();\n }\n /**\n * Updates the page given a direction.\n */\n updatePage(direction) {\n let offset = this.indexes.first / this.pageSize;\n if (direction === 'up') {\n offset = Math.ceil(offset);\n } else if (direction === 'down') {\n offset = Math.floor(offset);\n }\n if (direction !== undefined && !isNaN(offset)) {\n this.page.emit({\n offset\n });\n }\n }\n /**\n * Updates the rows in the view port\n */\n updateRows() {\n const {\n first,\n last\n } = this.indexes;\n let rowIndex = first;\n let idx = 0;\n const temp = [];\n // if grouprowsby has been specified treat row paging\n // parameters as group paging parameters ie if limit 10 has been\n // specified treat it as 10 groups rather than 10 rows\n if (this.groupedRows) {\n let maxRowsPerGroup = 3;\n // if there is only one group set the maximum number of\n // rows per group the same as the total number of rows\n if (this.groupedRows.length === 1) {\n maxRowsPerGroup = this.groupedRows[0].value.length;\n }\n while (rowIndex < last && rowIndex < this.groupedRows.length) {\n // Add the groups into this page\n const group = this.groupedRows[rowIndex];\n this.rowIndexes.set(group, rowIndex);\n if (group.value) {\n // add indexes for each group item\n group.value.forEach((g, i) => {\n const _idx = `${rowIndex}-${i}`;\n this.rowIndexes.set(g, _idx);\n });\n }\n temp[idx] = group;\n idx++;\n // Group index in this context\n rowIndex++;\n }\n } else {\n while (rowIndex < last && rowIndex < this.rowCount) {\n const row = this.rows[rowIndex];\n if (row) {\n // add indexes for each row\n this.rowIndexes.set(row, rowIndex);\n temp[idx] = row;\n }\n idx++;\n rowIndex++;\n }\n }\n this.temp = temp;\n }\n /**\n * Get the row height\n */\n getRowHeight(row) {\n // if its a function return it\n if (typeof this.rowHeight === 'function') {\n return this.rowHeight(row);\n }\n return this.rowHeight;\n }\n /**\n * @param group the group with all rows\n */\n getGroupHeight(group) {\n let rowHeight = 0;\n if (group.value) {\n for (let index = 0; index < group.value.length; index++) {\n rowHeight += this.getRowAndDetailHeight(group.value[index]);\n }\n }\n return rowHeight;\n }\n /**\n * Calculate row height based on the expanded state of the row.\n */\n getRowAndDetailHeight(row) {\n let rowHeight = this.getRowHeight(row);\n const expanded = this.getRowExpanded(row);\n // Adding detail row height if its expanded.\n if (expanded) {\n rowHeight += this.getDetailRowHeight(row);\n }\n return rowHeight;\n }\n /**\n * Calculates the styles for the row so that the rows can be moved in 2D space\n * during virtual scroll inside the DOM. In the below case the Y position is\n * manipulated. As an example, if the height of row 0 is 30 px and row 1 is\n * 100 px then following styles are generated:\n *\n * transform: translate3d(0px, 0px, 0px); -> row0\n * transform: translate3d(0px, 30px, 0px); -> row1\n * transform: translate3d(0px, 130px, 0px); -> row2\n *\n * Row heights have to be calculated based on the row heights cache as we wont\n * be able to determine which row is of what height before hand. In the above\n * case the positionY of the translate3d for row2 would be the sum of all the\n * heights of the rows before it (i.e. row0 and row1).\n *\n * @param rows the row that needs to be placed in the 2D space.\n * @returns the CSS3 style to be applied\n *\n * @memberOf DataTableBodyComponent\n */\n getRowsStyles(rows) {\n const styles = {};\n // only add styles for the group if there is a group\n if (this.groupedRows) {\n styles.width = this.columnGroupWidths.total;\n }\n if (this.scrollbarV && this.virtualization) {\n let idx = 0;\n if (this.groupedRows) {\n // Get the latest row rowindex in a group\n const row = rows[rows.length - 1];\n idx = row ? this.getRowIndex(row) : 0;\n } else {\n idx = this.getRowIndex(rows);\n }\n // const pos = idx * rowHeight;\n // The position of this row would be the sum of all row heights\n // until the previous row position.\n const pos = this.rowHeightsCache.query(idx - 1);\n translateXY(styles, 0, pos);\n }\n return styles;\n }\n /**\n * Calculate bottom summary row offset for scrollbar mode.\n * For more information about cache and offset calculation\n * see description for `getRowsStyles` method\n *\n * @returns the CSS3 style to be applied\n *\n * @memberOf DataTableBodyComponent\n */\n getBottomSummaryRowStyles() {\n if (!this.scrollbarV || !this.rows || !this.rows.length) {\n return null;\n }\n const styles = {\n position: 'absolute'\n };\n const pos = this.rowHeightsCache.query(this.rows.length - 1);\n translateXY(styles, 0, pos);\n return styles;\n }\n /**\n * Hides the loading indicator\n */\n hideIndicator() {\n setTimeout(() => this.loadingIndicator = false, 500);\n }\n /**\n * Updates the index of the rows in the viewport\n */\n updateIndexes() {\n let first = 0;\n let last = 0;\n if (this.scrollbarV) {\n if (this.virtualization) {\n // Calculation of the first and last indexes will be based on where the\n // scrollY position would be at. The last index would be the one\n // that shows up inside the view port the last.\n const height = parseInt(this.bodyHeight, 0);\n first = this.rowHeightsCache.getRowIndex(this.offsetY);\n last = this.rowHeightsCache.getRowIndex(height + this.offsetY) + 1;\n } else {\n // If virtual rows are not needed\n // We render all in one go\n first = 0;\n last = this.rowCount;\n }\n } else {\n // The server is handling paging and will pass an array that begins with the\n // element at a specified offset. first should always be 0 with external paging.\n if (!this.externalPaging) {\n first = Math.max(this.offset * this.pageSize, 0);\n }\n last = Math.min(first + this.pageSize, this.rowCount);\n }\n this.indexes = {\n first,\n last\n };\n }\n /**\n * Refreshes the full Row Height cache. Should be used\n * when the entire row array state has changed.\n */\n refreshRowHeightCache() {\n if (!this.scrollbarV || this.scrollbarV && !this.virtualization) {\n return;\n }\n // clear the previous row height cache if already present.\n // this is useful during sorts, filters where the state of the\n // rows array is changed.\n this.rowHeightsCache.clearCache();\n // Initialize the tree only if there are rows inside the tree.\n if (this.rows && this.rows.length) {\n const rowExpansions = new Set();\n for (const row of this.rows) {\n if (this.getRowExpanded(row)) {\n rowExpansions.add(row);\n }\n }\n this.rowHeightsCache.initCache({\n rows: this.rows,\n rowHeight: this.rowHeight,\n detailRowHeight: this.getDetailRowHeight,\n externalVirtual: this.scrollbarV && this.externalPaging,\n rowCount: this.rowCount,\n rowIndexes: this.rowIndexes,\n rowExpansions\n });\n }\n }\n /**\n * Gets the index for the view port\n */\n getAdjustedViewPortIndex() {\n // Capture the row index of the first row that is visible on the viewport.\n // If the scroll bar is just below the row which is highlighted then make that as the\n // first index.\n const viewPortFirstRowIndex = this.indexes.first;\n if (this.scrollbarV && this.virtualization) {\n const offsetScroll = this.rowHeightsCache.query(viewPortFirstRowIndex - 1);\n return offsetScroll <= this.offsetY ? viewPortFirstRowIndex - 1 : viewPortFirstRowIndex;\n }\n return viewPortFirstRowIndex;\n }\n /**\n * Toggle the Expansion of the row i.e. if the row is expanded then it will\n * collapse and vice versa. Note that the expanded status is stored as\n * a part of the row object itself as we have to preserve the expanded row\n * status in case of sorting and filtering of the row set.\n */\n toggleRowExpansion(row) {\n // Capture the row index of the first row that is visible on the viewport.\n const viewPortFirstRowIndex = this.getAdjustedViewPortIndex();\n const rowExpandedIdx = this.getRowExpandedIdx(row, this.rowExpansions);\n const expanded = rowExpandedIdx > -1;\n // If the detailRowHeight is auto --> only in case of non-virtualized scroll\n if (this.scrollbarV && this.virtualization) {\n const detailRowHeight = this.getDetailRowHeight(row) * (expanded ? -1 : 1);\n // const idx = this.rowIndexes.get(row) || 0;\n const idx = this.getRowIndex(row);\n this.rowHeightsCache.update(idx, detailRowHeight);\n }\n // Update the toggled row and update thive nevere heights in the cache.\n if (expanded) {\n this.rowExpansions.splice(rowExpandedIdx, 1);\n } else {\n this.rowExpansions.push(row);\n }\n this.detailToggle.emit({\n rows: [row],\n currentIndex: viewPortFirstRowIndex\n });\n }\n /**\n * Expand/Collapse all the rows no matter what their state is.\n */\n toggleAllRows(expanded) {\n // clear prev expansions\n this.rowExpansions = [];\n // Capture the row index of the first row that is visible on the viewport.\n const viewPortFirstRowIndex = this.getAdjustedViewPortIndex();\n if (expanded) {\n for (const row of this.rows) {\n this.rowExpansions.push(row);\n }\n }\n if (this.scrollbarV) {\n // Refresh the full row heights cache since every row was affected.\n this.recalcLayout();\n }\n // Emit all rows that have been expanded.\n this.detailToggle.emit({\n rows: this.rows,\n currentIndex: viewPortFirstRowIndex\n });\n }\n /**\n * Recalculates the table\n */\n recalcLayout() {\n this.refreshRowHeightCache();\n this.updateIndexes();\n this.updateRows();\n }\n /**\n * Tracks the column\n */\n columnTrackingFn(index, column) {\n return column.$$id;\n }\n /**\n * Gets the row pinning group styles\n */\n stylesByGroup(group) {\n const widths = this.columnGroupWidths;\n const offsetX = this.offsetX;\n const styles = {\n width: `${widths[group]}px`\n };\n if (group === 'left') {\n translateXY(styles, offsetX, 0);\n } else if (group === 'right') {\n const bodyWidth = parseInt(this.innerWidth + '', 0);\n const totalDiff = widths.total - bodyWidth;\n const offsetDiff = totalDiff - offsetX;\n const offset = offsetDiff * -1;\n translateXY(styles, offset, 0);\n }\n return styles;\n }\n /**\n * Returns if the row was expanded and set default row expansion when row expansion is empty\n */\n getRowExpanded(row) {\n if (this.rowExpansions.length === 0 && this.groupExpansionDefault) {\n for (const group of this.groupedRows) {\n this.rowExpansions.push(group);\n }\n }\n return this.getRowExpandedIdx(row, this.rowExpansions) > -1;\n }\n getRowExpandedIdx(row, expanded) {\n if (!expanded || !expanded.length) return -1;\n const rowId = this.rowIdentity(row);\n return expanded.findIndex(r => {\n const id = this.rowIdentity(r);\n return id === rowId;\n });\n }\n /**\n * Gets the row index given a row\n */\n getRowIndex(row) {\n return this.rowIndexes.get(row) || 0;\n }\n onTreeAction(row) {\n this.treeAction.emit({\n row\n });\n }\n}\nDataTableBodyComponent.ɵfac = function DataTableBodyComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DataTableBodyComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n};\nDataTableBodyComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DataTableBodyComponent,\n selectors: [[\"datatable-body\"]],\n viewQuery: function DataTableBodyComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(ScrollerComponent, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.scroller = _t.first);\n }\n },\n hostAttrs: [1, \"datatable-body\"],\n hostVars: 4,\n hostBindings: function DataTableBodyComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵstyleProp(\"width\", ctx.bodyWidth)(\"height\", ctx.bodyHeight);\n }\n },\n inputs: {\n scrollbarV: \"scrollbarV\",\n scrollbarH: \"scrollbarH\",\n loadingIndicator: \"loadingIndicator\",\n externalPaging: \"externalPaging\",\n rowHeight: \"rowHeight\",\n offsetX: \"offsetX\",\n emptyMessage: \"emptyMessage\",\n selectionType: \"selectionType\",\n selected: \"selected\",\n rowIdentity: \"rowIdentity\",\n rowDetail: \"rowDetail\",\n groupHeader: \"groupHeader\",\n selectCheck: \"selectCheck\",\n displayCheck: \"displayCheck\",\n trackByProp: \"trackByProp\",\n rowClass: \"rowClass\",\n groupedRows: \"groupedRows\",\n groupExpansionDefault: \"groupExpansionDefault\",\n innerWidth: \"innerWidth\",\n groupRowsBy: \"groupRowsBy\",\n virtualization: \"virtualization\",\n summaryRow: \"summaryRow\",\n summaryPosition: \"summaryPosition\",\n summaryHeight: \"summaryHeight\",\n pageSize: \"pageSize\",\n rows: \"rows\",\n columns: \"columns\",\n offset: \"offset\",\n rowCount: \"rowCount\",\n bodyHeight: \"bodyHeight\"\n },\n outputs: {\n scroll: \"scroll\",\n page: \"page\",\n activate: \"activate\",\n select: \"select\",\n detailToggle: \"detailToggle\",\n rowContextmenu: \"rowContextmenu\",\n treeAction: \"treeAction\"\n },\n decls: 5,\n vars: 9,\n consts: [[\"selector\", \"\"], [\"groupedRowsTemplate\", \"\"], [4, \"ngIf\"], [3, \"select\", \"activate\", \"selected\", \"rows\", \"selectCheck\", \"selectEnabled\", \"selectionType\", \"rowIdentity\"], [3, \"scrollbarV\", \"scrollbarH\", \"scrollHeight\", \"scrollWidth\", \"scroll\", 4, \"ngIf\"], [\"class\", \"empty-row\", 3, \"innerHTML\", 4, \"ngIf\"], [3, \"scroll\", \"scrollbarV\", \"scrollbarH\", \"scrollHeight\", \"scrollWidth\"], [3, \"rowHeight\", \"offsetX\", \"innerWidth\", \"rows\", \"columns\", 4, \"ngIf\"], [3, \"groupedRows\", \"innerWidth\", \"ngStyle\", \"rowDetail\", \"groupHeader\", \"offsetX\", \"detailRowHeight\", \"row\", \"expanded\", \"rowIndex\", \"rowContextmenu\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"role\", \"row\", 3, \"ngStyle\", \"rowHeight\", \"offsetX\", \"innerWidth\", \"rows\", \"columns\", 4, \"ngIf\"], [3, \"rowHeight\", \"offsetX\", \"innerWidth\", \"rows\", \"columns\"], [3, \"rowContextmenu\", \"groupedRows\", \"innerWidth\", \"ngStyle\", \"rowDetail\", \"groupHeader\", \"offsetX\", \"detailRowHeight\", \"row\", \"expanded\", \"rowIndex\"], [\"role\", \"row\", \"tabindex\", \"-1\", 3, \"isSelected\", \"innerWidth\", \"offsetX\", \"columns\", \"rowHeight\", \"row\", \"rowIndex\", \"expanded\", \"rowClass\", \"displayCheck\", \"treeStatus\", \"treeAction\", \"activate\", 4, \"ngIf\", \"ngIfElse\"], [\"role\", \"row\", \"tabindex\", \"-1\", 3, \"treeAction\", \"activate\", \"isSelected\", \"innerWidth\", \"offsetX\", \"columns\", \"rowHeight\", \"row\", \"rowIndex\", \"expanded\", \"rowClass\", \"displayCheck\", \"treeStatus\"], [\"role\", \"row\", \"tabindex\", \"-1\", 3, \"isSelected\", \"innerWidth\", \"offsetX\", \"columns\", \"rowHeight\", \"row\", \"group\", \"rowIndex\", \"expanded\", \"rowClass\", \"activate\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"role\", \"row\", \"tabindex\", \"-1\", 3, \"activate\", \"isSelected\", \"innerWidth\", \"offsetX\", \"columns\", \"rowHeight\", \"row\", \"group\", \"rowIndex\", \"expanded\", \"rowClass\"], [\"role\", \"row\", 3, \"ngStyle\", \"rowHeight\", \"offsetX\", \"innerWidth\", \"rows\", \"columns\"], [1, \"empty-row\", 3, \"innerHTML\"]],\n template: function DataTableBodyComponent_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵtemplate(0, DataTableBodyComponent_datatable_progress_0_Template, 1, 0, \"datatable-progress\", 2);\n i0.ɵɵelementStart(1, \"datatable-selection\", 3, 0);\n i0.ɵɵlistener(\"select\", function DataTableBodyComponent_Template_datatable_selection_select_1_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.select.emit($event));\n })(\"activate\", function DataTableBodyComponent_Template_datatable_selection_activate_1_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.activate.emit($event));\n });\n i0.ɵɵtemplate(3, DataTableBodyComponent_datatable_scroller_3_Template, 4, 8, \"datatable-scroller\", 4)(4, DataTableBodyComponent_div_4_Template, 1, 1, \"div\", 5);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.loadingIndicator);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"selected\", ctx.selected)(\"rows\", ctx.rows)(\"selectCheck\", ctx.selectCheck)(\"selectEnabled\", ctx.selectEnabled)(\"selectionType\", ctx.selectionType)(\"rowIdentity\", ctx.rowIdentity);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx.rows == null ? null : ctx.rows.length);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !(ctx.rows == null ? null : ctx.rows.length) && !ctx.loadingIndicator);\n }\n },\n dependencies: [ProgressBarComponent, DataTableSelectionComponent, ScrollerComponent, DataTableSummaryRowComponent, DataTableRowWrapperComponent, DataTableBodyRowComponent, i1.NgIf, i1.NgForOf, i1.NgStyle],\n encapsulation: 2,\n changeDetection: 0\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DataTableBodyComponent, [{\n type: Component,\n args: [{\n selector: 'datatable-body',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'datatable-body'\n }\n }]\n }], function () {\n return [{\n type: i0.ChangeDetectorRef\n }];\n }, {\n scrollbarV: [{\n type: Input\n }],\n scrollbarH: [{\n type: Input\n }],\n loadingIndicator: [{\n type: Input\n }],\n externalPaging: [{\n type: Input\n }],\n rowHeight: [{\n type: Input\n }],\n offsetX: [{\n type: Input\n }],\n emptyMessage: [{\n type: Input\n }],\n selectionType: [{\n type: Input\n }],\n selected: [{\n type: Input\n }],\n rowIdentity: [{\n type: Input\n }],\n rowDetail: [{\n type: Input\n }],\n groupHeader: [{\n type: Input\n }],\n selectCheck: [{\n type: Input\n }],\n displayCheck: [{\n type: Input\n }],\n trackByProp: [{\n type: Input\n }],\n rowClass: [{\n type: Input\n }],\n groupedRows: [{\n type: Input\n }],\n groupExpansionDefault: [{\n type: Input\n }],\n innerWidth: [{\n type: Input\n }],\n groupRowsBy: [{\n type: Input\n }],\n virtualization: [{\n type: Input\n }],\n summaryRow: [{\n type: Input\n }],\n summaryPosition: [{\n type: Input\n }],\n summaryHeight: [{\n type: Input\n }],\n pageSize: [{\n type: Input\n }],\n rows: [{\n type: Input\n }],\n columns: [{\n type: Input\n }],\n offset: [{\n type: Input\n }],\n rowCount: [{\n type: Input\n }],\n bodyWidth: [{\n type: HostBinding,\n args: ['style.width']\n }],\n bodyHeight: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['style.height']\n }],\n scroll: [{\n type: Output\n }],\n page: [{\n type: Output\n }],\n activate: [{\n type: Output\n }],\n select: [{\n type: Output\n }],\n detailToggle: [{\n type: Output\n }],\n rowContextmenu: [{\n type: Output\n }],\n treeAction: [{\n type: Output\n }],\n scroller: [{\n type: ViewChild,\n args: [ScrollerComponent]\n }]\n });\n})();\n\n/**\n * Gets the next sort direction\n */\nfunction nextSortDir(sortType, current) {\n if (sortType === SortType.single) {\n if (current === SortDirection.asc) {\n return SortDirection.desc;\n } else {\n return SortDirection.asc;\n }\n } else {\n if (!current) {\n return SortDirection.asc;\n } else if (current === SortDirection.asc) {\n return SortDirection.desc;\n } else if (current === SortDirection.desc) {\n return undefined;\n }\n // avoid TS7030: Not all code paths return a value.\n return undefined;\n }\n}\n/**\n * Adapted from fueld-ui on 6/216\n * https://github.com/FuelInteractive/fuel-ui/tree/master/src/pipes/OrderBy\n */\nfunction orderByComparator(a, b) {\n if (a === null || typeof a === 'undefined') a = 0;\n if (b === null || typeof b === 'undefined') b = 0;\n if (a instanceof Date && b instanceof Date) {\n if (a < b) return -1;\n if (a > b) return 1;\n } else if (isNaN(parseFloat(a)) || !isFinite(a) || isNaN(parseFloat(b)) || !isFinite(b)) {\n // Convert to string in case of a=0 or b=0\n a = String(a);\n b = String(b);\n // Isn't a number so lowercase the string to properly compare\n if (a.toLowerCase() < b.toLowerCase()) return -1;\n if (a.toLowerCase() > b.toLowerCase()) return 1;\n } else {\n // Parse strings as numbers to compare properly\n if (parseFloat(a) < parseFloat(b)) return -1;\n if (parseFloat(a) > parseFloat(b)) return 1;\n }\n // equal each other\n return 0;\n}\n/**\n * creates a shallow copy of the `rows` input and returns the sorted copy. this function\n * does not sort the `rows` argument in place\n */\nfunction sortRows(rows, columns, dirs) {\n if (!rows) return [];\n if (!dirs || !dirs.length || !columns) return [...rows];\n /**\n * record the row ordering of results from prior sort operations (if applicable)\n * this is necessary to guarantee stable sorting behavior\n */\n const rowToIndexMap = new Map();\n rows.forEach((row, index) => rowToIndexMap.set(row, index));\n const temp = [...rows];\n const cols = columns.reduce((obj, col) => {\n if (col.comparator && typeof col.comparator === 'function') {\n obj[col.prop] = col.comparator;\n }\n return obj;\n }, {});\n // cache valueGetter and compareFn so that they\n // do not need to be looked-up in the sort function body\n const cachedDirs = dirs.map(dir => {\n const prop = dir.prop;\n return {\n prop,\n dir: dir.dir,\n valueGetter: getterForProp(prop),\n compareFn: cols[prop] || orderByComparator\n };\n });\n return temp.sort(function (rowA, rowB) {\n for (const cachedDir of cachedDirs) {\n // Get property and valuegetters for column to be sorted\n const {\n prop,\n valueGetter\n } = cachedDir;\n // Get A and B cell values from rows based on properties of the columns\n const propA = valueGetter(rowA, prop);\n const propB = valueGetter(rowB, prop);\n // Compare function gets five parameters:\n // Two cell values to be compared as propA and propB\n // Two rows corresponding to the cells as rowA and rowB\n // Direction of the sort for this column as SortDirection\n // Compare can be a standard JS comparison function (a,b) => -1|0|1\n // as additional parameters are silently ignored. The whole row and sort\n // direction enable more complex sort logic.\n const comparison = cachedDir.dir !== SortDirection.desc ? cachedDir.compareFn(propA, propB, rowA, rowB, cachedDir.dir) : -cachedDir.compareFn(propA, propB, rowA, rowB, cachedDir.dir);\n // Don't return 0 yet in case of needing to sort by next property\n if (comparison !== 0) return comparison;\n }\n if (!(rowToIndexMap.has(rowA) && rowToIndexMap.has(rowB))) return 0;\n /**\n * all else being equal, preserve original order of the rows (stable sort)\n */\n return rowToIndexMap.get(rowA) < rowToIndexMap.get(rowB) ? -1 : 1;\n });\n}\nclass DataTableHeaderCellComponent {\n constructor(cd) {\n this.cd = cd;\n this.sort = new EventEmitter();\n this.select = new EventEmitter();\n this.columnContextmenu = new EventEmitter(false);\n this.sortFn = this.onSort.bind(this);\n this.selectFn = this.select.emit.bind(this.select);\n this.cellContext = {\n column: this.column,\n sortDir: this.sortDir,\n sortFn: this.sortFn,\n allRowsSelected: this.allRowsSelected,\n selectFn: this.selectFn\n };\n }\n set allRowsSelected(value) {\n this._allRowsSelected = value;\n this.cellContext.allRowsSelected = value;\n }\n get allRowsSelected() {\n return this._allRowsSelected;\n }\n set column(column) {\n this._column = column;\n this.cellContext.column = column;\n this.cd.markForCheck();\n }\n get column() {\n return this._column;\n }\n set sorts(val) {\n this._sorts = val;\n this.sortDir = this.calcSortDir(val);\n this.cellContext.sortDir = this.sortDir;\n this.sortClass = this.calcSortClass(this.sortDir);\n this.cd.markForCheck();\n }\n get sorts() {\n return this._sorts;\n }\n get columnCssClasses() {\n let cls = 'datatable-header-cell';\n if (this.column.sortable) cls += ' sortable';\n if (this.column.resizeable) cls += ' resizeable';\n if (this.column.headerClass) {\n if (typeof this.column.headerClass === 'string') {\n cls += ' ' + this.column.headerClass;\n } else if (typeof this.column.headerClass === 'function') {\n const res = this.column.headerClass({\n column: this.column\n });\n if (typeof res === 'string') {\n cls += res;\n } else if (typeof res === 'object') {\n const keys = Object.keys(res);\n for (const k of keys) {\n if (res[k] === true) cls += ` ${k}`;\n }\n }\n }\n }\n const sortDir = this.sortDir;\n if (sortDir) {\n cls += ` sort-active sort-${sortDir}`;\n }\n return cls;\n }\n get name() {\n // guaranteed to have a value by setColumnDefaults() in column-helper.ts\n return this.column.headerTemplate === undefined ? this.column.name : undefined;\n }\n get minWidth() {\n return this.column.minWidth;\n }\n get maxWidth() {\n return this.column.maxWidth;\n }\n get width() {\n return this.column.width;\n }\n get isCheckboxable() {\n return this.column.checkboxable && this.column.headerCheckboxable && this.selectionType === SelectionType.checkbox;\n }\n onContextmenu($event) {\n this.columnContextmenu.emit({\n event: $event,\n column: this.column\n });\n }\n ngOnInit() {\n this.sortClass = this.calcSortClass(this.sortDir);\n }\n calcSortDir(sorts) {\n if (sorts && this.column) {\n const sort = sorts.find(s => {\n return s.prop === this.column.prop;\n });\n if (sort) return sort.dir;\n }\n }\n onSort() {\n if (!this.column.sortable) return;\n const newValue = nextSortDir(this.sortType, this.sortDir);\n this.sort.emit({\n column: this.column,\n prevValue: this.sortDir,\n newValue\n });\n }\n calcSortClass(sortDir) {\n if (!this.cellContext.column.sortable) return;\n if (sortDir === SortDirection.asc) {\n return `sort-btn sort-asc ${this.sortAscendingIcon}`;\n } else if (sortDir === SortDirection.desc) {\n return `sort-btn sort-desc ${this.sortDescendingIcon}`;\n } else {\n return `sort-btn ${this.sortUnsetIcon}`;\n }\n }\n}\nDataTableHeaderCellComponent.ɵfac = function DataTableHeaderCellComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DataTableHeaderCellComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n};\nDataTableHeaderCellComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DataTableHeaderCellComponent,\n selectors: [[\"datatable-header-cell\"]],\n hostAttrs: [1, \"datatable-header-cell\"],\n hostVars: 11,\n hostBindings: function DataTableHeaderCellComponent_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"contextmenu\", function DataTableHeaderCellComponent_contextmenu_HostBindingHandler($event) {\n return ctx.onContextmenu($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"title\", ctx.name);\n i0.ɵɵclassMap(ctx.columnCssClasses);\n i0.ɵɵstyleProp(\"height\", ctx.headerHeight, \"px\")(\"min-width\", ctx.minWidth, \"px\")(\"max-width\", ctx.maxWidth, \"px\")(\"width\", ctx.width, \"px\");\n }\n },\n inputs: {\n sortType: \"sortType\",\n sortAscendingIcon: \"sortAscendingIcon\",\n sortDescendingIcon: \"sortDescendingIcon\",\n sortUnsetIcon: \"sortUnsetIcon\",\n isTarget: \"isTarget\",\n targetMarkerTemplate: \"targetMarkerTemplate\",\n targetMarkerContext: \"targetMarkerContext\",\n allRowsSelected: \"allRowsSelected\",\n selectionType: \"selectionType\",\n column: \"column\",\n headerHeight: \"headerHeight\",\n sorts: \"sorts\"\n },\n outputs: {\n sort: \"sort\",\n select: \"select\",\n columnContextmenu: \"columnContextmenu\"\n },\n decls: 6,\n vars: 6,\n consts: [[1, \"datatable-header-cell-template-wrap\"], [4, \"ngIf\"], [\"class\", \"datatable-checkbox\", 4, \"ngIf\"], [\"class\", \"datatable-header-cell-wrapper\", 4, \"ngIf\"], [3, \"click\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"datatable-checkbox\"], [\"type\", \"checkbox\", 3, \"change\", \"checked\"], [1, \"datatable-header-cell-wrapper\"], [1, \"datatable-header-cell-label\", \"draggable\", 3, \"click\", \"innerHTML\"]],\n template: function DataTableHeaderCellComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0);\n i0.ɵɵtemplate(1, DataTableHeaderCellComponent_1_Template, 1, 2, null, 1)(2, DataTableHeaderCellComponent_label_2_Template, 2, 1, \"label\", 2)(3, DataTableHeaderCellComponent_span_3_Template, 2, 1, \"span\", 3)(4, DataTableHeaderCellComponent_4_Template, 1, 2, null, 1);\n i0.ɵɵelementStart(5, \"span\", 4);\n i0.ɵɵlistener(\"click\", function DataTableHeaderCellComponent_Template_span_click_5_listener() {\n return ctx.onSort();\n });\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.isTarget);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.isCheckboxable);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx.column.headerTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.column.headerTemplate);\n i0.ɵɵadvance();\n i0.ɵɵclassMap(ctx.sortClass);\n }\n },\n dependencies: [i1.NgIf, i1.NgTemplateOutlet],\n encapsulation: 2,\n changeDetection: 0\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DataTableHeaderCellComponent, [{\n type: Component,\n args: [{\n selector: 'datatable-header-cell',\n template: `\n
\n \n \n \n \n \n \n \n \n \n
\n `,\n host: {\n class: 'datatable-header-cell'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () {\n return [{\n type: i0.ChangeDetectorRef\n }];\n }, {\n sortType: [{\n type: Input\n }],\n sortAscendingIcon: [{\n type: Input\n }],\n sortDescendingIcon: [{\n type: Input\n }],\n sortUnsetIcon: [{\n type: Input\n }],\n isTarget: [{\n type: Input\n }],\n targetMarkerTemplate: [{\n type: Input\n }],\n targetMarkerContext: [{\n type: Input\n }],\n allRowsSelected: [{\n type: Input\n }],\n selectionType: [{\n type: Input\n }],\n column: [{\n type: Input\n }],\n headerHeight: [{\n type: HostBinding,\n args: ['style.height.px']\n }, {\n type: Input\n }],\n sorts: [{\n type: Input\n }],\n sort: [{\n type: Output\n }],\n select: [{\n type: Output\n }],\n columnContextmenu: [{\n type: Output\n }],\n columnCssClasses: [{\n type: HostBinding,\n args: ['class']\n }],\n name: [{\n type: HostBinding,\n args: ['attr.title']\n }],\n minWidth: [{\n type: HostBinding,\n args: ['style.minWidth.px']\n }],\n maxWidth: [{\n type: HostBinding,\n args: ['style.maxWidth.px']\n }],\n width: [{\n type: HostBinding,\n args: ['style.width.px']\n }],\n onContextmenu: [{\n type: HostListener,\n args: ['contextmenu', ['$event']]\n }]\n });\n})();\nclass DataTableHeaderComponent {\n constructor(cd) {\n this.cd = cd;\n this.sort = new EventEmitter();\n this.reorder = new EventEmitter();\n this.resize = new EventEmitter();\n this.select = new EventEmitter();\n this.columnContextmenu = new EventEmitter(false);\n this._columnGroupWidths = {\n total: 100\n };\n this._styleByGroup = {\n left: {},\n center: {},\n right: {}\n };\n this.destroyed = false;\n }\n set innerWidth(val) {\n this._innerWidth = val;\n setTimeout(() => {\n if (this._columns) {\n const colByPin = columnsByPin(this._columns);\n this._columnGroupWidths = columnGroupWidths(colByPin, this._columns);\n this.setStylesByGroup();\n }\n });\n }\n get innerWidth() {\n return this._innerWidth;\n }\n set headerHeight(val) {\n if (val !== 'auto') {\n this._headerHeight = `${val}px`;\n } else {\n this._headerHeight = val;\n }\n }\n get headerHeight() {\n return this._headerHeight;\n }\n set columns(val) {\n this._columns = val;\n const colsByPin = columnsByPin(val);\n this._columnsByPin = columnsByPinArr(val);\n setTimeout(() => {\n this._columnGroupWidths = columnGroupWidths(colsByPin, val);\n this.setStylesByGroup();\n });\n }\n get columns() {\n return this._columns;\n }\n set offsetX(val) {\n this._offsetX = val;\n this.setStylesByGroup();\n }\n get offsetX() {\n return this._offsetX;\n }\n ngOnDestroy() {\n this.destroyed = true;\n }\n onLongPressStart({\n event,\n model\n }) {\n model.dragging = true;\n this.dragEventTarget = event;\n }\n onLongPressEnd({\n event,\n model\n }) {\n this.dragEventTarget = event;\n // delay resetting so sort can be\n // prevented if we were dragging\n setTimeout(() => {\n // datatable component creates copies from columns on reorder\n // set dragging to false on new objects\n const column = this._columns.find(c => c.$$id === model.$$id);\n if (column) {\n column.dragging = false;\n }\n }, 5);\n }\n get headerWidth() {\n if (this.scrollbarH) {\n return this.innerWidth + 'px';\n }\n return '100%';\n }\n trackByGroups(index, colGroup) {\n return colGroup.type;\n }\n columnTrackingFn(index, column) {\n return column.$$id;\n }\n onColumnResized(width, column) {\n if (width <= column.minWidth) {\n width = column.minWidth;\n } else if (width >= column.maxWidth) {\n width = column.maxWidth;\n }\n this.resize.emit({\n column,\n prevValue: column.width,\n newValue: width\n });\n }\n onColumnReordered({\n prevIndex,\n newIndex,\n model\n }) {\n const column = this.getColumn(newIndex);\n column.isTarget = false;\n column.targetMarkerContext = undefined;\n this.reorder.emit({\n column: model,\n prevValue: prevIndex,\n newValue: newIndex\n });\n }\n onTargetChanged({\n prevIndex,\n newIndex,\n initialIndex\n }) {\n if (prevIndex || prevIndex === 0) {\n const oldColumn = this.getColumn(prevIndex);\n oldColumn.isTarget = false;\n oldColumn.targetMarkerContext = undefined;\n }\n if (newIndex || newIndex === 0) {\n const newColumn = this.getColumn(newIndex);\n newColumn.isTarget = true;\n if (initialIndex !== newIndex) {\n newColumn.targetMarkerContext = {\n class: 'targetMarker '.concat(initialIndex > newIndex ? 'dragFromRight' : 'dragFromLeft')\n };\n }\n }\n }\n getColumn(index) {\n const leftColumnCount = this._columnsByPin[0].columns.length;\n if (index < leftColumnCount) {\n return this._columnsByPin[0].columns[index];\n }\n const centerColumnCount = this._columnsByPin[1].columns.length;\n if (index < leftColumnCount + centerColumnCount) {\n return this._columnsByPin[1].columns[index - leftColumnCount];\n }\n return this._columnsByPin[2].columns[index - leftColumnCount - centerColumnCount];\n }\n onSort({\n column,\n prevValue,\n newValue\n }) {\n // if we are dragging don't sort!\n if (column.dragging) {\n return;\n }\n const sorts = this.calcNewSorts(column, prevValue, newValue);\n this.sort.emit({\n sorts,\n column,\n prevValue,\n newValue\n });\n }\n calcNewSorts(column, prevValue, newValue) {\n let idx = 0;\n if (!this.sorts) {\n this.sorts = [];\n }\n const sorts = this.sorts.map((s, i) => {\n s = {\n ...s\n };\n if (s.prop === column.prop) {\n idx = i;\n }\n return s;\n });\n if (newValue === undefined) {\n sorts.splice(idx, 1);\n } else if (prevValue) {\n sorts[idx].dir = newValue;\n } else {\n if (this.sortType === SortType.single) {\n sorts.splice(0, this.sorts.length);\n }\n sorts.push({\n dir: newValue,\n prop: column.prop\n });\n }\n return sorts;\n }\n setStylesByGroup() {\n this._styleByGroup.left = this.calcStylesByGroup('left');\n this._styleByGroup.center = this.calcStylesByGroup('center');\n this._styleByGroup.right = this.calcStylesByGroup('right');\n if (!this.destroyed) {\n this.cd.detectChanges();\n }\n }\n calcStylesByGroup(group) {\n const widths = this._columnGroupWidths;\n const offsetX = this.offsetX;\n const styles = {\n width: `${widths[group]}px`\n };\n if (group === 'center') {\n translateXY(styles, offsetX * -1, 0);\n } else if (group === 'right') {\n const totalDiff = widths.total - this.innerWidth;\n const offset = totalDiff * -1;\n translateXY(styles, offset, 0);\n }\n return styles;\n }\n}\nDataTableHeaderComponent.ɵfac = function DataTableHeaderComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DataTableHeaderComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n};\nDataTableHeaderComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DataTableHeaderComponent,\n selectors: [[\"datatable-header\"]],\n hostAttrs: [1, \"datatable-header\"],\n hostVars: 4,\n hostBindings: function DataTableHeaderComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵstyleProp(\"height\", ctx.headerHeight)(\"width\", ctx.headerWidth);\n }\n },\n inputs: {\n sortAscendingIcon: \"sortAscendingIcon\",\n sortDescendingIcon: \"sortDescendingIcon\",\n sortUnsetIcon: \"sortUnsetIcon\",\n scrollbarH: \"scrollbarH\",\n dealsWithGroup: \"dealsWithGroup\",\n targetMarkerTemplate: \"targetMarkerTemplate\",\n innerWidth: \"innerWidth\",\n sorts: \"sorts\",\n sortType: \"sortType\",\n allRowsSelected: \"allRowsSelected\",\n selectionType: \"selectionType\",\n reorderable: \"reorderable\",\n headerHeight: \"headerHeight\",\n columns: \"columns\",\n offsetX: \"offsetX\"\n },\n outputs: {\n sort: \"sort\",\n reorder: \"reorder\",\n resize: \"resize\",\n select: \"select\",\n columnContextmenu: \"columnContextmenu\"\n },\n decls: 2,\n vars: 4,\n consts: [[\"role\", \"row\", \"orderable\", \"\", 1, \"datatable-header-inner\", 3, \"reorder\", \"targetChanged\"], [3, \"class\", \"ngStyle\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [3, \"ngStyle\"], [\"role\", \"columnheader\", \"resizeable\", \"\", \"long-press\", \"\", \"draggable\", \"\", 3, \"resizeEnabled\", \"pressModel\", \"pressEnabled\", \"dragX\", \"dragY\", \"dragModel\", \"dragEventTarget\", \"headerHeight\", \"isTarget\", \"targetMarkerTemplate\", \"targetMarkerContext\", \"column\", \"sortType\", \"sorts\", \"selectionType\", \"sortAscendingIcon\", \"sortDescendingIcon\", \"sortUnsetIcon\", \"allRowsSelected\", \"resize\", \"longPressStart\", \"longPressEnd\", \"sort\", \"select\", \"columnContextmenu\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"role\", \"columnheader\", \"resizeable\", \"\", \"long-press\", \"\", \"draggable\", \"\", 3, \"resize\", \"longPressStart\", \"longPressEnd\", \"sort\", \"select\", \"columnContextmenu\", \"resizeEnabled\", \"pressModel\", \"pressEnabled\", \"dragX\", \"dragY\", \"dragModel\", \"dragEventTarget\", \"headerHeight\", \"isTarget\", \"targetMarkerTemplate\", \"targetMarkerContext\", \"column\", \"sortType\", \"sorts\", \"selectionType\", \"sortAscendingIcon\", \"sortDescendingIcon\", \"sortUnsetIcon\", \"allRowsSelected\"]],\n template: function DataTableHeaderComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0);\n i0.ɵɵlistener(\"reorder\", function DataTableHeaderComponent_Template_div_reorder_0_listener($event) {\n return ctx.onColumnReordered($event);\n })(\"targetChanged\", function DataTableHeaderComponent_Template_div_targetChanged_0_listener($event) {\n return ctx.onTargetChanged($event);\n });\n i0.ɵɵtemplate(1, DataTableHeaderComponent_div_1_Template, 2, 5, \"div\", 1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵstyleProp(\"width\", ctx._columnGroupWidths.total, \"px\");\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx._columnsByPin)(\"ngForTrackBy\", ctx.trackByGroups);\n }\n },\n dependencies: [DataTableHeaderCellComponent, OrderableDirective, i1.NgForOf, i1.NgStyle, ResizeableDirective, LongPressDirective, DraggableDirective],\n encapsulation: 2,\n changeDetection: 0\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DataTableHeaderComponent, [{\n type: Component,\n args: [{\n selector: 'datatable-header',\n template: `\n \n \n \n \n \n \n `,\n host: {\n class: 'datatable-header'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () {\n return [{\n type: i0.ChangeDetectorRef\n }];\n }, {\n sortAscendingIcon: [{\n type: Input\n }],\n sortDescendingIcon: [{\n type: Input\n }],\n sortUnsetIcon: [{\n type: Input\n }],\n scrollbarH: [{\n type: Input\n }],\n dealsWithGroup: [{\n type: Input\n }],\n targetMarkerTemplate: [{\n type: Input\n }],\n innerWidth: [{\n type: Input\n }],\n sorts: [{\n type: Input\n }],\n sortType: [{\n type: Input\n }],\n allRowsSelected: [{\n type: Input\n }],\n selectionType: [{\n type: Input\n }],\n reorderable: [{\n type: Input\n }],\n headerHeight: [{\n type: HostBinding,\n args: ['style.height']\n }, {\n type: Input\n }],\n columns: [{\n type: Input\n }],\n offsetX: [{\n type: Input\n }],\n sort: [{\n type: Output\n }],\n reorder: [{\n type: Output\n }],\n resize: [{\n type: Output\n }],\n select: [{\n type: Output\n }],\n columnContextmenu: [{\n type: Output\n }],\n headerWidth: [{\n type: HostBinding,\n args: ['style.width']\n }]\n });\n})();\n\n/**\n * Throttle a function\n */\nfunction throttle(func, wait, options) {\n options = options || {};\n let context;\n let args;\n let result;\n let timeout = null;\n let previous = 0;\n function later() {\n previous = options.leading === false ? 0 : +new Date();\n timeout = null;\n result = func.apply(context, args);\n }\n return function () {\n const now = +new Date();\n if (!previous && options.leading === false) {\n previous = now;\n }\n const remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0) {\n clearTimeout(timeout);\n timeout = null;\n previous = now;\n result = func.apply(context, args);\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n}\n/**\n * Throttle decorator\n *\n * class MyClass {\n * throttleable(10)\n * myFn() { ... }\n * }\n */\nfunction throttleable(duration, options) {\n return function innerDecorator(target, key, descriptor) {\n return {\n configurable: true,\n enumerable: descriptor.enumerable,\n get: function getter() {\n Object.defineProperty(this, key, {\n configurable: true,\n enumerable: descriptor.enumerable,\n value: throttle(descriptor.value, duration, options)\n });\n return this[key];\n }\n };\n };\n}\n\n/**\n * Calculates the Total Flex Grow\n */\nfunction getTotalFlexGrow(columns) {\n let totalFlexGrow = 0;\n for (const c of columns) {\n totalFlexGrow += c.flexGrow || 0;\n }\n return totalFlexGrow;\n}\n/**\n * Adjusts the column widths.\n * Inspired by: https://github.com/facebook/fixed-data-table/blob/master/src/FixedDataTableWidthHelper.js\n */\nfunction adjustColumnWidths(allColumns, expectedWidth) {\n const columnsWidth = columnsTotalWidth(allColumns);\n const totalFlexGrow = getTotalFlexGrow(allColumns);\n const colsByGroup = columnsByPin(allColumns);\n if (columnsWidth !== expectedWidth) {\n scaleColumns(colsByGroup, expectedWidth, totalFlexGrow);\n }\n}\n/**\n * Resizes columns based on the flexGrow property, while respecting manually set widths\n */\nfunction scaleColumns(colsByGroup, maxWidth, totalFlexGrow) {\n // calculate total width and flexgrow points for coulumns that can be resized\n for (const attr in colsByGroup) {\n for (const column of colsByGroup[attr]) {\n if (!column.canAutoResize) {\n maxWidth -= column.width;\n totalFlexGrow -= column.flexGrow ? column.flexGrow : 0;\n } else {\n column.width = 0;\n }\n }\n }\n const hasMinWidth = {};\n let remainingWidth = maxWidth;\n // resize columns until no width is left to be distributed\n do {\n const widthPerFlexPoint = remainingWidth / totalFlexGrow;\n remainingWidth = 0;\n for (const attr in colsByGroup) {\n for (const column of colsByGroup[attr]) {\n // if the column can be resize and it hasn't reached its minimum width yet\n if (column.canAutoResize && !hasMinWidth[column.prop]) {\n const newWidth = column.width + column.flexGrow * widthPerFlexPoint;\n if (column.minWidth !== undefined && newWidth < column.minWidth) {\n remainingWidth += newWidth - column.minWidth;\n column.width = column.minWidth;\n hasMinWidth[column.prop] = true;\n } else {\n column.width = newWidth;\n }\n }\n }\n }\n } while (remainingWidth !== 0);\n}\n/**\n * Forces the width of the columns to\n * distribute equally but overflowing when necessary\n *\n * Rules:\n *\n * - If combined withs are less than the total width of the grid,\n * proportion the widths given the min / max / normal widths to fill the width.\n *\n * - If the combined widths, exceed the total width of the grid,\n * use the standard widths.\n *\n * - If a column is resized, it should always use that width\n *\n * - The proportional widths should never fall below min size if specified.\n *\n * - If the grid starts off small but then becomes greater than the size ( + / - )\n * the width should use the original width; not the newly proportioned widths.\n */\nfunction forceFillColumnWidths(allColumns, expectedWidth, startIdx, allowBleed, defaultColWidth = 300) {\n const columnsToResize = allColumns.slice(startIdx + 1, allColumns.length).filter(c => {\n return c.canAutoResize !== false;\n });\n for (const column of columnsToResize) {\n if (!column.$$oldWidth) {\n column.$$oldWidth = column.width;\n }\n }\n let additionWidthPerColumn = 0;\n let exceedsWindow = false;\n let contentWidth = getContentWidth(allColumns, defaultColWidth);\n let remainingWidth = expectedWidth - contentWidth;\n const columnsProcessed = [];\n const remainingWidthLimit = 1; // when to stop\n // This loop takes care of the\n do {\n additionWidthPerColumn = remainingWidth / columnsToResize.length;\n exceedsWindow = contentWidth >= expectedWidth;\n for (const column of columnsToResize) {\n if (exceedsWindow && allowBleed) {\n column.width = column.$$oldWidth || column.width || defaultColWidth;\n } else {\n const newSize = (column.width || defaultColWidth) + additionWidthPerColumn;\n if (column.minWidth && newSize < column.minWidth) {\n column.width = column.minWidth;\n columnsProcessed.push(column);\n } else if (column.maxWidth && newSize > column.maxWidth) {\n column.width = column.maxWidth;\n columnsProcessed.push(column);\n } else {\n column.width = newSize;\n }\n }\n column.width = Math.max(0, column.width);\n }\n contentWidth = getContentWidth(allColumns);\n remainingWidth = expectedWidth - contentWidth;\n removeProcessedColumns(columnsToResize, columnsProcessed);\n } while (remainingWidth > remainingWidthLimit && columnsToResize.length !== 0);\n}\n/**\n * Remove the processed columns from the current active columns.\n */\nfunction removeProcessedColumns(columnsToResize, columnsProcessed) {\n for (const column of columnsProcessed) {\n const index = columnsToResize.indexOf(column);\n columnsToResize.splice(index, 1);\n }\n}\n/**\n * Gets the width of the columns\n */\nfunction getContentWidth(allColumns, defaultColWidth = 300) {\n let contentWidth = 0;\n for (const column of allColumns) {\n contentWidth += column.width || defaultColWidth;\n }\n return contentWidth;\n}\nclass DataTablePagerComponent {\n constructor() {\n this.change = new EventEmitter();\n this._count = 0;\n this._page = 1;\n this._size = 0;\n }\n set size(val) {\n this._size = val;\n this.pages = this.calcPages();\n }\n get size() {\n return this._size;\n }\n set count(val) {\n this._count = val;\n this.pages = this.calcPages();\n }\n get count() {\n return this._count;\n }\n set page(val) {\n this._page = val;\n this.pages = this.calcPages();\n }\n get page() {\n return this._page;\n }\n get totalPages() {\n const count = this.size < 1 ? 1 : Math.ceil(this.count / this.size);\n return Math.max(count || 0, 1);\n }\n canPrevious() {\n return this.page > 1;\n }\n canNext() {\n return this.page < this.totalPages;\n }\n prevPage() {\n this.selectPage(this.page - 1);\n }\n nextPage() {\n this.selectPage(this.page + 1);\n }\n selectPage(page) {\n if (page > 0 && page <= this.totalPages && page !== this.page) {\n this.page = page;\n this.change.emit({\n page\n });\n }\n }\n calcPages(page) {\n const pages = [];\n let startPage = 1;\n let endPage = this.totalPages;\n const maxSize = 5;\n const isMaxSized = maxSize < this.totalPages;\n page = page || this.page;\n if (isMaxSized) {\n startPage = page - Math.floor(maxSize / 2);\n endPage = page + Math.floor(maxSize / 2);\n if (startPage < 1) {\n startPage = 1;\n endPage = Math.min(startPage + maxSize - 1, this.totalPages);\n } else if (endPage > this.totalPages) {\n startPage = Math.max(this.totalPages - maxSize + 1, 1);\n endPage = this.totalPages;\n }\n }\n for (let num = startPage; num <= endPage; num++) {\n pages.push({\n number: num,\n text: num\n });\n }\n return pages;\n }\n}\nDataTablePagerComponent.ɵfac = function DataTablePagerComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DataTablePagerComponent)();\n};\nDataTablePagerComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DataTablePagerComponent,\n selectors: [[\"datatable-pager\"]],\n hostAttrs: [1, \"datatable-pager\"],\n inputs: {\n pagerLeftArrowIcon: \"pagerLeftArrowIcon\",\n pagerRightArrowIcon: \"pagerRightArrowIcon\",\n pagerPreviousIcon: \"pagerPreviousIcon\",\n pagerNextIcon: \"pagerNextIcon\",\n size: \"size\",\n count: \"count\",\n page: \"page\"\n },\n outputs: {\n change: \"change\"\n },\n decls: 14,\n vars: 21,\n consts: [[1, \"pager\"], [\"role\", \"button\", \"aria-label\", \"go to first page\", \"href\", \"javascript:void(0)\", 3, \"click\"], [\"role\", \"button\", \"aria-label\", \"go to previous page\", \"href\", \"javascript:void(0)\", 3, \"click\"], [\"role\", \"button\", \"class\", \"pages\", 3, \"active\", 4, \"ngFor\", \"ngForOf\"], [\"role\", \"button\", \"aria-label\", \"go to next page\", \"href\", \"javascript:void(0)\", 3, \"click\"], [\"role\", \"button\", \"aria-label\", \"go to last page\", \"href\", \"javascript:void(0)\", 3, \"click\"], [\"role\", \"button\", 1, \"pages\"], [\"href\", \"javascript:void(0)\", 3, \"click\"]],\n template: function DataTablePagerComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"ul\", 0)(1, \"li\")(2, \"a\", 1);\n i0.ɵɵlistener(\"click\", function DataTablePagerComponent_Template_a_click_2_listener() {\n return ctx.selectPage(1);\n });\n i0.ɵɵelement(3, \"i\");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(4, \"li\")(5, \"a\", 2);\n i0.ɵɵlistener(\"click\", function DataTablePagerComponent_Template_a_click_5_listener() {\n return ctx.prevPage();\n });\n i0.ɵɵelement(6, \"i\");\n i0.ɵɵelementEnd()();\n i0.ɵɵtemplate(7, DataTablePagerComponent_li_7_Template, 3, 4, \"li\", 3);\n i0.ɵɵelementStart(8, \"li\")(9, \"a\", 4);\n i0.ɵɵlistener(\"click\", function DataTablePagerComponent_Template_a_click_9_listener() {\n return ctx.nextPage();\n });\n i0.ɵɵelement(10, \"i\");\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(11, \"li\")(12, \"a\", 5);\n i0.ɵɵlistener(\"click\", function DataTablePagerComponent_Template_a_click_12_listener() {\n return ctx.selectPage(ctx.totalPages);\n });\n i0.ɵɵelement(13, \"i\");\n i0.ɵɵelementEnd()()();\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵclassProp(\"disabled\", !ctx.canPrevious());\n i0.ɵɵadvance(2);\n i0.ɵɵclassMap(ctx.pagerPreviousIcon);\n i0.ɵɵadvance();\n i0.ɵɵclassProp(\"disabled\", !ctx.canPrevious());\n i0.ɵɵadvance(2);\n i0.ɵɵclassMap(ctx.pagerLeftArrowIcon);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx.pages);\n i0.ɵɵadvance();\n i0.ɵɵclassProp(\"disabled\", !ctx.canNext());\n i0.ɵɵadvance(2);\n i0.ɵɵclassMap(ctx.pagerRightArrowIcon);\n i0.ɵɵadvance();\n i0.ɵɵclassProp(\"disabled\", !ctx.canNext());\n i0.ɵɵadvance(2);\n i0.ɵɵclassMap(ctx.pagerNextIcon);\n }\n },\n dependencies: [i1.NgForOf],\n encapsulation: 2,\n changeDetection: 0\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DataTablePagerComponent, [{\n type: Component,\n args: [{\n selector: 'datatable-pager',\n template: `\n \n `,\n host: {\n class: 'datatable-pager'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], null, {\n pagerLeftArrowIcon: [{\n type: Input\n }],\n pagerRightArrowIcon: [{\n type: Input\n }],\n pagerPreviousIcon: [{\n type: Input\n }],\n pagerNextIcon: [{\n type: Input\n }],\n size: [{\n type: Input\n }],\n count: [{\n type: Input\n }],\n page: [{\n type: Input\n }],\n change: [{\n type: Output\n }]\n });\n})();\nclass DataTableFooterComponent {\n constructor() {\n this.selectedCount = 0;\n this.page = new EventEmitter();\n }\n get isVisible() {\n return this.rowCount / this.pageSize > 1;\n }\n get curPage() {\n return this.offset + 1;\n }\n}\nDataTableFooterComponent.ɵfac = function DataTableFooterComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DataTableFooterComponent)();\n};\nDataTableFooterComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DataTableFooterComponent,\n selectors: [[\"datatable-footer\"]],\n hostAttrs: [1, \"datatable-footer\"],\n inputs: {\n footerHeight: \"footerHeight\",\n rowCount: \"rowCount\",\n pageSize: \"pageSize\",\n offset: \"offset\",\n pagerLeftArrowIcon: \"pagerLeftArrowIcon\",\n pagerRightArrowIcon: \"pagerRightArrowIcon\",\n pagerPreviousIcon: \"pagerPreviousIcon\",\n pagerNextIcon: \"pagerNextIcon\",\n totalMessage: \"totalMessage\",\n footerTemplate: \"footerTemplate\",\n selectedCount: \"selectedCount\",\n selectedMessage: \"selectedMessage\"\n },\n outputs: {\n page: \"page\"\n },\n decls: 4,\n vars: 8,\n consts: [[1, \"datatable-footer-inner\", 3, \"ngClass\"], [4, \"ngIf\"], [\"class\", \"page-count\", 4, \"ngIf\"], [3, \"pagerLeftArrowIcon\", \"pagerRightArrowIcon\", \"pagerPreviousIcon\", \"pagerNextIcon\", \"page\", \"size\", \"count\", \"hidden\", \"change\", 4, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"page-count\"], [3, \"change\", \"pagerLeftArrowIcon\", \"pagerRightArrowIcon\", \"pagerPreviousIcon\", \"pagerNextIcon\", \"page\", \"size\", \"count\", \"hidden\"]],\n template: function DataTableFooterComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0);\n i0.ɵɵtemplate(1, DataTableFooterComponent_1_Template, 1, 8, null, 1)(2, DataTableFooterComponent_div_2_Template, 3, 3, \"div\", 2)(3, DataTableFooterComponent_datatable_pager_3_Template, 1, 8, \"datatable-pager\", 3);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵstyleProp(\"height\", ctx.footerHeight, \"px\");\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(6, _c3, ctx.selectedMessage));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.footerTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx.footerTemplate);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx.footerTemplate);\n }\n },\n dependencies: [DataTablePagerComponent, i1.NgClass, i1.NgIf, i1.NgTemplateOutlet],\n encapsulation: 2,\n changeDetection: 0\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DataTableFooterComponent, [{\n type: Component,\n args: [{\n selector: 'datatable-footer',\n template: `\n \n \n \n
\n {{ selectedCount?.toLocaleString() }} {{ selectedMessage }} / \n {{ rowCount?.toLocaleString() }} {{ totalMessage }}\n
\n \n \n \n `,\n host: {\n class: 'datatable-footer'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], null, {\n footerHeight: [{\n type: Input\n }],\n rowCount: [{\n type: Input\n }],\n pageSize: [{\n type: Input\n }],\n offset: [{\n type: Input\n }],\n pagerLeftArrowIcon: [{\n type: Input\n }],\n pagerRightArrowIcon: [{\n type: Input\n }],\n pagerPreviousIcon: [{\n type: Input\n }],\n pagerNextIcon: [{\n type: Input\n }],\n totalMessage: [{\n type: Input\n }],\n footerTemplate: [{\n type: Input\n }],\n selectedCount: [{\n type: Input\n }],\n selectedMessage: [{\n type: Input\n }],\n page: [{\n type: Output\n }]\n });\n})();\nclass DatatableComponent {\n constructor(scrollbarHelper, dimensionsHelper, cd, element, differs, columnChangesService, configuration) {\n this.scrollbarHelper = scrollbarHelper;\n this.dimensionsHelper = dimensionsHelper;\n this.cd = cd;\n this.columnChangesService = columnChangesService;\n this.configuration = configuration;\n /**\n * List of row objects that should be\n * represented as selected in the grid.\n * Default value: `[]`\n */\n this.selected = [];\n /**\n * Enable vertical scrollbars\n */\n this.scrollbarV = false;\n /**\n * Enable horz scrollbars\n */\n this.scrollbarH = false;\n /**\n * The row height; which is necessary\n * to calculate the height for the lazy rendering.\n */\n this.rowHeight = 30;\n /**\n * Type of column width distribution formula.\n * Example: flex, force, standard\n */\n this.columnMode = ColumnMode.standard;\n /**\n * The minimum header height in pixels.\n * Pass a falsey for no header\n */\n this.headerHeight = 30;\n /**\n * The minimum footer height in pixels.\n * Pass falsey for no footer\n */\n this.footerHeight = 0;\n /**\n * If the table should use external paging\n * otherwise its assumed that all data is preloaded.\n */\n this.externalPaging = false;\n /**\n * If the table should use external sorting or\n * the built-in basic sorting.\n */\n this.externalSorting = false;\n /**\n * Show the linear loading bar.\n * Default value: `false`\n */\n this.loadingIndicator = false;\n /**\n * Enable/Disable ability to re-order columns\n * by dragging them.\n */\n this.reorderable = true;\n /**\n * Swap columns on re-order columns or\n * move them.\n */\n this.swapColumns = true;\n /**\n * The type of sorting\n */\n this.sortType = SortType.single;\n /**\n * Array of sorted columns by property and type.\n * Default value: `[]`\n */\n this.sorts = [];\n /**\n * Css class overrides\n */\n this.cssClasses = {\n sortAscending: 'datatable-icon-up',\n sortDescending: 'datatable-icon-down',\n sortUnset: 'datatable-icon-sort-unset',\n pagerLeftArrow: 'datatable-icon-left',\n pagerRightArrow: 'datatable-icon-right',\n pagerPrevious: 'datatable-icon-prev',\n pagerNext: 'datatable-icon-skip'\n };\n /**\n * Message overrides for localization\n *\n * emptyMessage [default] = 'No data to display'\n * totalMessage [default] = 'total'\n * selectedMessage [default] = 'selected'\n */\n this.messages = {\n // Message to show when array is presented\n // but contains no values\n emptyMessage: 'No data to display',\n // Footer total message\n totalMessage: 'total',\n // Footer selected message\n selectedMessage: 'selected'\n };\n /**\n * A boolean you can use to set the detault behaviour of rows and groups\n * whether they will start expanded or not. If ommited the default is NOT expanded.\n *\n */\n this.groupExpansionDefault = false;\n /**\n * Property to which you can use for determining select all\n * rows on current page or not.\n *\n * @memberOf DatatableComponent\n */\n this.selectAllRowsOnPage = false;\n /**\n * A flag for row virtualization on / off\n */\n this.virtualization = true;\n /**\n * A flag for switching summary row on / off\n */\n this.summaryRow = false;\n /**\n * A height of summary row\n */\n this.summaryHeight = 30;\n /**\n * A property holds a summary row position: top/bottom\n */\n this.summaryPosition = 'top';\n /**\n * Body was scrolled typically in a `scrollbarV:true` scenario.\n */\n this.scroll = new EventEmitter();\n /**\n * A cell or row was focused via keyboard or mouse click.\n */\n this.activate = new EventEmitter();\n /**\n * A cell or row was selected.\n */\n this.select = new EventEmitter();\n /**\n * Column sort was invoked.\n */\n this.sort = new EventEmitter();\n /**\n * The table was paged either triggered by the pager or the body scroll.\n */\n this.page = new EventEmitter();\n /**\n * Columns were re-ordered.\n */\n this.reorder = new EventEmitter();\n /**\n * Column was resized.\n */\n this.resize = new EventEmitter();\n /**\n * The context menu was invoked on the table.\n * type indicates whether the header or the body was clicked.\n * content contains either the column or the row that was clicked.\n */\n this.tableContextmenu = new EventEmitter(false);\n /**\n * A row was expanded ot collapsed for tree\n */\n this.treeAction = new EventEmitter();\n this.rowCount = 0;\n this._offsetX = new BehaviorSubject(0);\n this._count = 0;\n this._offset = 0;\n this._subscriptions = [];\n /**\n * This will be used when displaying or selecting rows.\n * when tracking/comparing them, we'll use the value of this fn,\n *\n * (`fn(x) === fn(y)` instead of `x === y`)\n */\n this.rowIdentity = x => {\n if (this._groupRowsBy) {\n // each group in groupedRows are stored as {key, value: [rows]},\n // where key is the groupRowsBy index\n return x.key;\n } else {\n return x;\n }\n };\n // get ref to elm for measuring\n this.element = element.nativeElement;\n this.rowDiffer = differs.find({}).create();\n // apply global settings from Module.forRoot\n if (this.configuration && this.configuration.messages) {\n this.messages = {\n ...this.configuration.messages\n };\n }\n }\n /**\n * Rows that are displayed in the table.\n */\n set rows(val) {\n this._rows = val;\n if (val) {\n this._internalRows = [...val];\n }\n // auto sort on new updates\n if (!this.externalSorting) {\n this.sortInternalRows();\n }\n // auto group by parent on new update\n this._internalRows = groupRowsByParents(this._internalRows, optionalGetterForProp(this.treeFromRelation), optionalGetterForProp(this.treeToRelation));\n // recalculate sizes/etc\n this.recalculate();\n if (this._rows && this._groupRowsBy) {\n // If a column has been specified in _groupRowsBy created a new array with the data grouped by that row\n this.groupedRows = this.groupArrayBy(this._rows, this._groupRowsBy);\n }\n this.cd.markForCheck();\n }\n /**\n * Gets the rows.\n */\n get rows() {\n return this._rows;\n }\n /**\n * This attribute allows the user to set the name of the column to group the data with\n */\n set groupRowsBy(val) {\n if (val) {\n this._groupRowsBy = val;\n if (this._rows && this._groupRowsBy) {\n // cretes a new array with the data grouped\n this.groupedRows = this.groupArrayBy(this._rows, this._groupRowsBy);\n }\n }\n }\n get groupRowsBy() {\n return this._groupRowsBy;\n }\n /**\n * Columns to be displayed.\n */\n set columns(val) {\n if (val) {\n this._internalColumns = [...val];\n setColumnDefaults(this._internalColumns);\n this.recalculateColumns();\n }\n this._columns = val;\n }\n /**\n * Get the columns.\n */\n get columns() {\n return this._columns;\n }\n /**\n * The page size to be shown.\n * Default value: `undefined`\n */\n set limit(val) {\n this._limit = val;\n // recalculate sizes/etc\n this.recalculate();\n }\n /**\n * Gets the limit.\n */\n get limit() {\n return this._limit;\n }\n /**\n * The total count of all rows.\n * Default value: `0`\n */\n set count(val) {\n this._count = val;\n // recalculate sizes/etc\n this.recalculate();\n }\n /**\n * Gets the count.\n */\n get count() {\n return this._count;\n }\n /**\n * The current offset ( page - 1 ) shown.\n * Default value: `0`\n */\n set offset(val) {\n this._offset = val;\n }\n get offset() {\n return Math.max(Math.min(this._offset, Math.ceil(this.rowCount / this.pageSize) - 1), 0);\n }\n /**\n * CSS class applied if the header height if fixed height.\n */\n get isFixedHeader() {\n const headerHeight = this.headerHeight;\n return typeof headerHeight === 'string' ? headerHeight !== 'auto' : true;\n }\n /**\n * CSS class applied to the root element if\n * the row heights are fixed heights.\n */\n get isFixedRow() {\n return this.rowHeight !== 'auto';\n }\n /**\n * CSS class applied to root element if\n * vertical scrolling is enabled.\n */\n get isVertScroll() {\n return this.scrollbarV;\n }\n /**\n * CSS class applied to root element if\n * virtualization is enabled.\n */\n get isVirtualized() {\n return this.virtualization;\n }\n /**\n * CSS class applied to the root element\n * if the horziontal scrolling is enabled.\n */\n get isHorScroll() {\n return this.scrollbarH;\n }\n /**\n * CSS class applied to root element is selectable.\n */\n get isSelectable() {\n return this.selectionType !== undefined;\n }\n /**\n * CSS class applied to root is checkbox selection.\n */\n get isCheckboxSelection() {\n return this.selectionType === SelectionType.checkbox;\n }\n /**\n * CSS class applied to root if cell selection.\n */\n get isCellSelection() {\n return this.selectionType === SelectionType.cell;\n }\n /**\n * CSS class applied to root if single select.\n */\n get isSingleSelection() {\n return this.selectionType === SelectionType.single;\n }\n /**\n * CSS class added to root element if mulit select\n */\n get isMultiSelection() {\n return this.selectionType === SelectionType.multi;\n }\n /**\n * CSS class added to root element if mulit click select\n */\n get isMultiClickSelection() {\n return this.selectionType === SelectionType.multiClick;\n }\n /**\n * Column templates gathered from `ContentChildren`\n * if described in your markup.\n */\n set columnTemplates(val) {\n this._columnTemplates = val;\n this.translateColumns(val);\n }\n /**\n * Returns the column templates.\n */\n get columnTemplates() {\n return this._columnTemplates;\n }\n /**\n * Returns if all rows are selected.\n */\n get allRowsSelected() {\n let allRowsSelected = this.rows && this.selected && this.selected.length === this.rows.length;\n if (this.bodyComponent && this.selectAllRowsOnPage) {\n const indexes = this.bodyComponent.indexes;\n const rowsOnPage = indexes.last - indexes.first;\n allRowsSelected = this.selected.length === rowsOnPage;\n }\n return this.selected && this.rows && this.rows.length !== 0 && allRowsSelected;\n }\n /**\n * Lifecycle hook that is called after data-bound\n * properties of a directive are initialized.\n */\n ngOnInit() {\n // need to call this immediatly to size\n // if the table is hidden the visibility\n // listener will invoke this itself upon show\n this.recalculate();\n }\n /**\n * Lifecycle hook that is called after a component's\n * view has been fully initialized.\n */\n ngAfterViewInit() {\n if (!this.externalSorting) {\n this.sortInternalRows();\n }\n // this has to be done to prevent the change detection\n // tree from freaking out because we are readjusting\n if (typeof requestAnimationFrame === 'undefined') {\n return;\n }\n requestAnimationFrame(() => {\n this.recalculate();\n // emit page for virtual server-side kickoff\n if (this.externalPaging && this.scrollbarV) {\n this.page.emit({\n count: this.count,\n pageSize: this.pageSize,\n limit: this.limit,\n offset: 0\n });\n }\n });\n }\n /**\n * Lifecycle hook that is called after a component's\n * content has been fully initialized.\n */\n ngAfterContentInit() {\n this.columnTemplates.changes.subscribe(v => this.translateColumns(v));\n this.listenForColumnInputChanges();\n }\n /**\n * Translates the templates to the column objects\n */\n translateColumns(val) {\n if (val) {\n const arr = val.toArray();\n if (arr.length) {\n this._internalColumns = translateTemplates(arr);\n setColumnDefaults(this._internalColumns);\n this.recalculateColumns();\n this.sortInternalRows();\n this.cd.markForCheck();\n }\n }\n }\n /**\n * Creates a map with the data grouped by the user choice of grouping index\n *\n * @param originalArray the original array passed via parameter\n * @param groupByIndex the index of the column to group the data by\n */\n groupArrayBy(originalArray, groupBy) {\n // create a map to hold groups with their corresponding results\n const map = new Map();\n let i = 0;\n originalArray.forEach(item => {\n const key = item[groupBy];\n if (!map.has(key)) {\n map.set(key, [item]);\n } else {\n map.get(key).push(item);\n }\n i++;\n });\n const addGroup = (key, value) => {\n return {\n key,\n value\n };\n };\n // convert map back to a simple array of objects\n return Array.from(map, x => addGroup(x[0], x[1]));\n }\n /*\n * Lifecycle hook that is called when Angular dirty checks a directive.\n */\n ngDoCheck() {\n if (this.rowDiffer.diff(this.rows)) {\n if (!this.externalSorting) {\n this.sortInternalRows();\n } else {\n this._internalRows = [...this.rows];\n }\n // auto group by parent on new update\n this._internalRows = groupRowsByParents(this._internalRows, optionalGetterForProp(this.treeFromRelation), optionalGetterForProp(this.treeToRelation));\n this.recalculatePages();\n this.cd.markForCheck();\n }\n }\n /**\n * Recalc's the sizes of the grid.\n *\n * Updated automatically on changes to:\n *\n * - Columns\n * - Rows\n * - Paging related\n *\n * Also can be manually invoked or upon window resize.\n */\n recalculate() {\n this.recalculateDims();\n this.recalculateColumns();\n this.cd.markForCheck();\n }\n /**\n * Window resize handler to update sizes.\n */\n onWindowResize() {\n this.recalculate();\n }\n /**\n * Recalulcates the column widths based on column width\n * distribution mode and scrollbar offsets.\n */\n recalculateColumns(columns = this._internalColumns, forceIdx = -1, allowBleed = this.scrollbarH) {\n if (!columns) return undefined;\n let width = this._innerWidth;\n if (this.scrollbarV) {\n width = width - this.scrollbarHelper.width;\n }\n if (this.columnMode === ColumnMode.force) {\n forceFillColumnWidths(columns, width, forceIdx, allowBleed);\n } else if (this.columnMode === ColumnMode.flex) {\n adjustColumnWidths(columns, width);\n }\n return columns;\n }\n /**\n * Recalculates the dimensions of the table size.\n * Internally calls the page size and row count calcs too.\n *\n */\n recalculateDims() {\n const dims = this.dimensionsHelper.getDimensions(this.element);\n this._innerWidth = Math.floor(dims.width);\n if (this.scrollbarV) {\n let height = dims.height;\n if (this.headerHeight) height = height - this.headerHeight;\n if (this.footerHeight) height = height - this.footerHeight;\n this.bodyHeight = height;\n }\n this.recalculatePages();\n }\n /**\n * Recalculates the pages after a update.\n */\n recalculatePages() {\n this.pageSize = this.calcPageSize();\n this.rowCount = this.calcRowCount();\n }\n /**\n * Body triggered a page event.\n */\n onBodyPage({\n offset\n }) {\n // Avoid pagination caming from body events like scroll when the table\n // has no virtualization and the external paging is enable.\n // This means, let's the developer handle pagination by my him(her) self\n if (this.externalPaging && !this.virtualization) {\n return;\n }\n this.offset = offset;\n this.page.emit({\n count: this.count,\n pageSize: this.pageSize,\n limit: this.limit,\n offset: this.offset\n });\n }\n /**\n * The body triggered a scroll event.\n */\n onBodyScroll(event) {\n this._offsetX.next(event.offsetX);\n this.scroll.emit(event);\n this.cd.detectChanges();\n }\n /**\n * The footer triggered a page event.\n */\n onFooterPage(event) {\n this.offset = event.page - 1;\n this.bodyComponent.updateOffsetY(this.offset);\n this.page.emit({\n count: this.count,\n pageSize: this.pageSize,\n limit: this.limit,\n offset: this.offset\n });\n if (this.selectAllRowsOnPage) {\n this.selected = [];\n this.select.emit({\n selected: this.selected\n });\n }\n }\n /**\n * Recalculates the sizes of the page\n */\n calcPageSize(val = this.rows) {\n // Keep the page size constant even if the row has been expanded.\n // This is because an expanded row is still considered to be a child of\n // the original row. Hence calculation would use rowHeight only.\n if (this.scrollbarV && this.virtualization) {\n const size = Math.ceil(this.bodyHeight / this.rowHeight);\n return Math.max(size, 0);\n }\n // if limit is passed, we are paging\n if (this.limit !== undefined) {\n return this.limit;\n }\n // otherwise use row length\n if (val) {\n return val.length;\n }\n // other empty :(\n return 0;\n }\n /**\n * Calculates the row count.\n */\n calcRowCount(val = this.rows) {\n if (!this.externalPaging) {\n if (!val) return 0;\n if (this.groupedRows) {\n return this.groupedRows.length;\n } else if (this.treeFromRelation != null && this.treeToRelation != null) {\n return this._internalRows.length;\n } else {\n return val.length;\n }\n }\n return this.count;\n }\n /**\n * The header triggered a contextmenu event.\n */\n onColumnContextmenu({\n event,\n column\n }) {\n this.tableContextmenu.emit({\n event,\n type: ContextmenuType.header,\n content: column\n });\n }\n /**\n * The body triggered a contextmenu event.\n */\n onRowContextmenu({\n event,\n row\n }) {\n this.tableContextmenu.emit({\n event,\n type: ContextmenuType.body,\n content: row\n });\n }\n /**\n * The header triggered a column resize event.\n */\n onColumnResize({\n column,\n newValue\n }) {\n /* Safari/iOS 10.2 workaround */\n if (column === undefined) {\n return;\n }\n let idx;\n const cols = this._internalColumns.map((c, i) => {\n c = {\n ...c\n };\n if (c.$$id === column.$$id) {\n idx = i;\n c.width = newValue;\n // set this so we can force the column\n // width distribution to be to this value\n c.$$oldWidth = newValue;\n }\n return c;\n });\n this.recalculateColumns(cols, idx);\n this._internalColumns = cols;\n this.resize.emit({\n column,\n newValue\n });\n }\n /**\n * The header triggered a column re-order event.\n */\n onColumnReorder({\n column,\n newValue,\n prevValue\n }) {\n const cols = this._internalColumns.map(c => {\n return {\n ...c\n };\n });\n if (this.swapColumns) {\n const prevCol = cols[newValue];\n cols[newValue] = column;\n cols[prevValue] = prevCol;\n } else {\n if (newValue > prevValue) {\n const movedCol = cols[prevValue];\n for (let i = prevValue; i < newValue; i++) {\n cols[i] = cols[i + 1];\n }\n cols[newValue] = movedCol;\n } else {\n const movedCol = cols[prevValue];\n for (let i = prevValue; i > newValue; i--) {\n cols[i] = cols[i - 1];\n }\n cols[newValue] = movedCol;\n }\n }\n this._internalColumns = cols;\n this.reorder.emit({\n column,\n newValue,\n prevValue\n });\n }\n /**\n * The header triggered a column sort event.\n */\n onColumnSort(event) {\n // clean selected rows\n if (this.selectAllRowsOnPage) {\n this.selected = [];\n this.select.emit({\n selected: this.selected\n });\n }\n this.sorts = event.sorts;\n // this could be optimized better since it will resort\n // the rows again on the 'push' detection...\n if (this.externalSorting === false) {\n // don't use normal setter so we don't resort\n this.sortInternalRows();\n }\n // auto group by parent on new update\n this._internalRows = groupRowsByParents(this._internalRows, optionalGetterForProp(this.treeFromRelation), optionalGetterForProp(this.treeToRelation));\n // Always go to first page when sorting to see the newly sorted data\n this.offset = 0;\n this.bodyComponent.updateOffsetY(this.offset);\n this.sort.emit(event);\n }\n /**\n * Toggle all row selection\n */\n onHeaderSelect(event) {\n if (this.bodyComponent && this.selectAllRowsOnPage) {\n // before we splice, chk if we currently have all selected\n const first = this.bodyComponent.indexes.first;\n const last = this.bodyComponent.indexes.last;\n const allSelected = this.selected.length === last - first;\n // remove all existing either way\n this.selected = [];\n // do the opposite here\n if (!allSelected) {\n this.selected.push(...this._internalRows.slice(first, last));\n }\n } else {\n // before we splice, chk if we currently have all selected\n const allSelected = this.selected.length === this.rows.length;\n // remove all existing either way\n this.selected = [];\n // do the opposite here\n if (!allSelected) {\n this.selected.push(...this.rows);\n }\n }\n this.select.emit({\n selected: this.selected\n });\n }\n /**\n * A row was selected from body\n */\n onBodySelect(event) {\n this.select.emit(event);\n }\n /**\n * A row was expanded or collapsed for tree\n */\n onTreeAction(event) {\n const row = event.row;\n // TODO: For duplicated items this will not work\n const rowIndex = this._rows.findIndex(r => r[this.treeToRelation] === event.row[this.treeToRelation]);\n this.treeAction.emit({\n row,\n rowIndex\n });\n }\n ngOnDestroy() {\n this._subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n /**\n * listen for changes to input bindings of all DataTableColumnDirective and\n * trigger the columnTemplates.changes observable to emit\n */\n listenForColumnInputChanges() {\n this._subscriptions.push(this.columnChangesService.columnInputChanges$.subscribe(() => {\n if (this.columnTemplates) {\n this.columnTemplates.notifyOnChanges();\n }\n }));\n }\n sortInternalRows() {\n this._internalRows = sortRows(this._internalRows, this._internalColumns, this.sorts);\n }\n}\nDatatableComponent.ɵfac = function DatatableComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DatatableComponent)(i0.ɵɵdirectiveInject(ScrollbarHelper, 4), i0.ɵɵdirectiveInject(DimensionsHelper, 4), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.KeyValueDiffers), i0.ɵɵdirectiveInject(ColumnChangesService), i0.ɵɵdirectiveInject('configuration', 8));\n};\nDatatableComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DatatableComponent,\n selectors: [[\"ngx-datatable\"]],\n contentQueries: function DatatableComponent_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, DatatableRowDetailDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, DatatableGroupHeaderDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, DatatableFooterDirective, 5);\n i0.ɵɵcontentQuery(dirIndex, DataTableColumnDirective, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.rowDetail = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.groupHeader = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.footer = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.columnTemplates = _t);\n }\n },\n viewQuery: function DatatableComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(DataTableBodyComponent, 5);\n i0.ɵɵviewQuery(DataTableHeaderComponent, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.bodyComponent = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.headerComponent = _t.first);\n }\n },\n hostAttrs: [1, \"ngx-datatable\"],\n hostVars: 22,\n hostBindings: function DatatableComponent_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"resize\", function DatatableComponent_resize_HostBindingHandler() {\n return ctx.onWindowResize();\n }, false, i0.ɵɵresolveWindow);\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"fixed-header\", ctx.isFixedHeader)(\"fixed-row\", ctx.isFixedRow)(\"scroll-vertical\", ctx.isVertScroll)(\"virtualized\", ctx.isVirtualized)(\"scroll-horz\", ctx.isHorScroll)(\"selectable\", ctx.isSelectable)(\"checkbox-selection\", ctx.isCheckboxSelection)(\"cell-selection\", ctx.isCellSelection)(\"single-selection\", ctx.isSingleSelection)(\"multi-selection\", ctx.isMultiSelection)(\"multi-click-selection\", ctx.isMultiClickSelection);\n }\n },\n inputs: {\n targetMarkerTemplate: \"targetMarkerTemplate\",\n rows: \"rows\",\n groupRowsBy: \"groupRowsBy\",\n groupedRows: \"groupedRows\",\n columns: \"columns\",\n selected: \"selected\",\n scrollbarV: \"scrollbarV\",\n scrollbarH: \"scrollbarH\",\n rowHeight: \"rowHeight\",\n columnMode: \"columnMode\",\n headerHeight: \"headerHeight\",\n footerHeight: \"footerHeight\",\n externalPaging: \"externalPaging\",\n externalSorting: \"externalSorting\",\n limit: \"limit\",\n count: \"count\",\n offset: \"offset\",\n loadingIndicator: \"loadingIndicator\",\n selectionType: \"selectionType\",\n reorderable: \"reorderable\",\n swapColumns: \"swapColumns\",\n sortType: \"sortType\",\n sorts: \"sorts\",\n cssClasses: \"cssClasses\",\n messages: \"messages\",\n rowClass: \"rowClass\",\n selectCheck: \"selectCheck\",\n displayCheck: \"displayCheck\",\n groupExpansionDefault: \"groupExpansionDefault\",\n trackByProp: \"trackByProp\",\n selectAllRowsOnPage: \"selectAllRowsOnPage\",\n virtualization: \"virtualization\",\n treeFromRelation: \"treeFromRelation\",\n treeToRelation: \"treeToRelation\",\n summaryRow: \"summaryRow\",\n summaryHeight: \"summaryHeight\",\n summaryPosition: \"summaryPosition\",\n rowIdentity: \"rowIdentity\"\n },\n outputs: {\n scroll: \"scroll\",\n activate: \"activate\",\n select: \"select\",\n sort: \"sort\",\n page: \"page\",\n reorder: \"reorder\",\n resize: \"resize\",\n tableContextmenu: \"tableContextmenu\",\n treeAction: \"treeAction\"\n },\n decls: 5,\n vars: 34,\n consts: [[\"role\", \"table\", \"visibilityObserver\", \"\", 3, \"visible\"], [\"role\", \"rowgroup\", 3, \"sorts\", \"sortType\", \"scrollbarH\", \"innerWidth\", \"offsetX\", \"dealsWithGroup\", \"columns\", \"headerHeight\", \"reorderable\", \"targetMarkerTemplate\", \"sortAscendingIcon\", \"sortDescendingIcon\", \"sortUnsetIcon\", \"allRowsSelected\", \"selectionType\", \"sort\", \"resize\", \"reorder\", \"select\", \"columnContextmenu\", 4, \"ngIf\"], [\"role\", \"rowgroup\", 3, \"page\", \"activate\", \"rowContextmenu\", \"select\", \"scroll\", \"treeAction\", \"groupRowsBy\", \"groupedRows\", \"rows\", \"groupExpansionDefault\", \"scrollbarV\", \"scrollbarH\", \"virtualization\", \"loadingIndicator\", \"externalPaging\", \"rowHeight\", \"rowCount\", \"offset\", \"trackByProp\", \"columns\", \"pageSize\", \"offsetX\", \"rowDetail\", \"groupHeader\", \"selected\", \"innerWidth\", \"bodyHeight\", \"selectionType\", \"emptyMessage\", \"rowIdentity\", \"rowClass\", \"selectCheck\", \"displayCheck\", \"summaryRow\", \"summaryHeight\", \"summaryPosition\"], [3, \"rowCount\", \"pageSize\", \"offset\", \"footerHeight\", \"footerTemplate\", \"totalMessage\", \"pagerLeftArrowIcon\", \"pagerRightArrowIcon\", \"pagerPreviousIcon\", \"selectedCount\", \"selectedMessage\", \"pagerNextIcon\", \"page\", 4, \"ngIf\"], [\"role\", \"rowgroup\", 3, \"sort\", \"resize\", \"reorder\", \"select\", \"columnContextmenu\", \"sorts\", \"sortType\", \"scrollbarH\", \"innerWidth\", \"offsetX\", \"dealsWithGroup\", \"columns\", \"headerHeight\", \"reorderable\", \"targetMarkerTemplate\", \"sortAscendingIcon\", \"sortDescendingIcon\", \"sortUnsetIcon\", \"allRowsSelected\", \"selectionType\"], [3, \"page\", \"rowCount\", \"pageSize\", \"offset\", \"footerHeight\", \"footerTemplate\", \"totalMessage\", \"pagerLeftArrowIcon\", \"pagerRightArrowIcon\", \"pagerPreviousIcon\", \"selectedCount\", \"selectedMessage\", \"pagerNextIcon\"]],\n template: function DatatableComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0);\n i0.ɵɵlistener(\"visible\", function DatatableComponent_Template_div_visible_0_listener() {\n return ctx.recalculate();\n });\n i0.ɵɵtemplate(1, DatatableComponent_datatable_header_1_Template, 2, 17, \"datatable-header\", 1);\n i0.ɵɵelementStart(2, \"datatable-body\", 2);\n i0.ɵɵpipe(3, \"async\");\n i0.ɵɵlistener(\"page\", function DatatableComponent_Template_datatable_body_page_2_listener($event) {\n return ctx.onBodyPage($event);\n })(\"activate\", function DatatableComponent_Template_datatable_body_activate_2_listener($event) {\n return ctx.activate.emit($event);\n })(\"rowContextmenu\", function DatatableComponent_Template_datatable_body_rowContextmenu_2_listener($event) {\n return ctx.onRowContextmenu($event);\n })(\"select\", function DatatableComponent_Template_datatable_body_select_2_listener($event) {\n return ctx.onBodySelect($event);\n })(\"scroll\", function DatatableComponent_Template_datatable_body_scroll_2_listener($event) {\n return ctx.onBodyScroll($event);\n })(\"treeAction\", function DatatableComponent_Template_datatable_body_treeAction_2_listener($event) {\n return ctx.onTreeAction($event);\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(4, DatatableComponent_datatable_footer_4_Template, 1, 12, \"datatable-footer\", 3);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.headerHeight);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"groupRowsBy\", ctx.groupRowsBy)(\"groupedRows\", ctx.groupedRows)(\"rows\", ctx._internalRows)(\"groupExpansionDefault\", ctx.groupExpansionDefault)(\"scrollbarV\", ctx.scrollbarV)(\"scrollbarH\", ctx.scrollbarH)(\"virtualization\", ctx.virtualization)(\"loadingIndicator\", ctx.loadingIndicator)(\"externalPaging\", ctx.externalPaging)(\"rowHeight\", ctx.rowHeight)(\"rowCount\", ctx.rowCount)(\"offset\", ctx.offset)(\"trackByProp\", ctx.trackByProp)(\"columns\", ctx._internalColumns)(\"pageSize\", ctx.pageSize)(\"offsetX\", i0.ɵɵpipeBind1(3, 32, ctx._offsetX))(\"rowDetail\", ctx.rowDetail)(\"groupHeader\", ctx.groupHeader)(\"selected\", ctx.selected)(\"innerWidth\", ctx._innerWidth)(\"bodyHeight\", ctx.bodyHeight)(\"selectionType\", ctx.selectionType)(\"emptyMessage\", ctx.messages.emptyMessage)(\"rowIdentity\", ctx.rowIdentity)(\"rowClass\", ctx.rowClass)(\"selectCheck\", ctx.selectCheck)(\"displayCheck\", ctx.displayCheck)(\"summaryRow\", ctx.summaryRow)(\"summaryHeight\", ctx.summaryHeight)(\"summaryPosition\", ctx.summaryPosition);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx.footerHeight);\n }\n },\n dependencies: [DataTableHeaderComponent, DataTableBodyComponent, DataTableFooterComponent, VisibilityDirective, i1.NgIf, i1.AsyncPipe],\n styles: [\".ngx-datatable{display:block;overflow:hidden;justify-content:center;position:relative;transform:translate(0)}.ngx-datatable [hidden]{display:none!important}.ngx-datatable *,.ngx-datatable *:before,.ngx-datatable *:after{box-sizing:border-box}.ngx-datatable.scroll-vertical .datatable-body{overflow-y:auto}.ngx-datatable.scroll-vertical.virtualized .datatable-body .datatable-row-wrapper{position:absolute}.ngx-datatable.scroll-horz .datatable-body{overflow-x:auto;-webkit-overflow-scrolling:touch}.ngx-datatable.fixed-header .datatable-header .datatable-header-inner{white-space:nowrap}.ngx-datatable.fixed-header .datatable-header .datatable-header-inner .datatable-header-cell{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ngx-datatable.fixed-row .datatable-scroll,.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row{white-space:nowrap}.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-cell,.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-group-cell{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ngx-datatable .datatable-body-row,.ngx-datatable .datatable-row-center,.ngx-datatable .datatable-header-inner{display:flex;flex-direction:row;-o-flex-flow:row;flex-flow:row}.ngx-datatable .datatable-body-cell,.ngx-datatable .datatable-header-cell{overflow-x:hidden;vertical-align:top;display:inline-block;line-height:1.625}.ngx-datatable .datatable-body-cell:focus,.ngx-datatable .datatable-header-cell:focus{outline:none}.ngx-datatable .datatable-row-left,.ngx-datatable .datatable-row-right{z-index:9}.ngx-datatable .datatable-row-left,.ngx-datatable .datatable-row-center,.ngx-datatable .datatable-row-group,.ngx-datatable .datatable-row-right{position:relative}.ngx-datatable .datatable-header{display:block;overflow:hidden}.ngx-datatable .datatable-header .datatable-header-inner{align-items:stretch;-webkit-align-items:stretch}.ngx-datatable .datatable-header .datatable-header-cell{position:relative;display:inline-block}.ngx-datatable .datatable-header .datatable-header-cell.sortable .datatable-header-cell-wrapper{cursor:pointer}.ngx-datatable .datatable-header .datatable-header-cell.longpress .datatable-header-cell-wrapper{cursor:move}.ngx-datatable .datatable-header .datatable-header-cell .sort-btn{line-height:100%;vertical-align:middle;display:inline-block;cursor:pointer}.ngx-datatable .datatable-header .datatable-header-cell .resize-handle,.ngx-datatable .datatable-header .datatable-header-cell .resize-handle--not-resizable{display:inline-block;position:absolute;right:0;top:0;bottom:0;width:5px;padding:0 4px;visibility:hidden}.ngx-datatable .datatable-header .datatable-header-cell .resize-handle{cursor:ew-resize}.ngx-datatable .datatable-header .datatable-header-cell.resizeable:hover .resize-handle,.ngx-datatable .datatable-header .datatable-header-cell:hover .resize-handle--not-resizable{visibility:visible}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker{position:absolute;top:0;bottom:0}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromLeft{right:0}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromRight{left:0}.ngx-datatable .datatable-header .datatable-header-cell .datatable-header-cell-template-wrap{height:inherit}.ngx-datatable .datatable-body{position:relative;z-index:10;display:block}.ngx-datatable .datatable-body .datatable-scroll{display:inline-block}.ngx-datatable .datatable-body .datatable-row-detail{overflow-y:hidden}.ngx-datatable .datatable-body .datatable-row-wrapper{display:flex;flex-direction:column}.ngx-datatable .datatable-body .datatable-body-row{outline:none}.ngx-datatable .datatable-body .datatable-body-row>div{display:flex}.ngx-datatable .datatable-footer{display:block;width:100%;overflow:auto}.ngx-datatable .datatable-footer .datatable-footer-inner{display:flex;align-items:center;width:100%}.ngx-datatable .datatable-footer .selected-count .page-count{flex:1 1 40%}.ngx-datatable .datatable-footer .selected-count .datatable-pager{flex:1 1 60%}.ngx-datatable .datatable-footer .page-count{flex:1 1 20%}.ngx-datatable .datatable-footer .datatable-pager{flex:1 1 80%;text-align:right}.ngx-datatable .datatable-footer .datatable-pager .pager,.ngx-datatable .datatable-footer .datatable-pager .pager li{padding:0;margin:0;display:inline-block;list-style:none}.ngx-datatable .datatable-footer .datatable-pager .pager li,.ngx-datatable .datatable-footer .datatable-pager .pager li a{outline:none}.ngx-datatable .datatable-footer .datatable-pager .pager li a{cursor:pointer;display:inline-block}.ngx-datatable .datatable-footer .datatable-pager .pager li.disabled a{cursor:not-allowed}\\n\"],\n encapsulation: 2,\n changeDetection: 0\n});\n__decorate([throttleable(5)], DatatableComponent.prototype, \"onWindowResize\", null);\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DatatableComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-datatable',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'ngx-datatable'\n },\n template: \"
\\n \\n \\n \\n \\n \\n \\n
\\n\",\n styles: [\".ngx-datatable{display:block;overflow:hidden;justify-content:center;position:relative;transform:translate(0)}.ngx-datatable [hidden]{display:none!important}.ngx-datatable *,.ngx-datatable *:before,.ngx-datatable *:after{box-sizing:border-box}.ngx-datatable.scroll-vertical .datatable-body{overflow-y:auto}.ngx-datatable.scroll-vertical.virtualized .datatable-body .datatable-row-wrapper{position:absolute}.ngx-datatable.scroll-horz .datatable-body{overflow-x:auto;-webkit-overflow-scrolling:touch}.ngx-datatable.fixed-header .datatable-header .datatable-header-inner{white-space:nowrap}.ngx-datatable.fixed-header .datatable-header .datatable-header-inner .datatable-header-cell{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ngx-datatable.fixed-row .datatable-scroll,.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row{white-space:nowrap}.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-cell,.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-group-cell{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ngx-datatable .datatable-body-row,.ngx-datatable .datatable-row-center,.ngx-datatable .datatable-header-inner{display:flex;flex-direction:row;-o-flex-flow:row;flex-flow:row}.ngx-datatable .datatable-body-cell,.ngx-datatable .datatable-header-cell{overflow-x:hidden;vertical-align:top;display:inline-block;line-height:1.625}.ngx-datatable .datatable-body-cell:focus,.ngx-datatable .datatable-header-cell:focus{outline:none}.ngx-datatable .datatable-row-left,.ngx-datatable .datatable-row-right{z-index:9}.ngx-datatable .datatable-row-left,.ngx-datatable .datatable-row-center,.ngx-datatable .datatable-row-group,.ngx-datatable .datatable-row-right{position:relative}.ngx-datatable .datatable-header{display:block;overflow:hidden}.ngx-datatable .datatable-header .datatable-header-inner{align-items:stretch;-webkit-align-items:stretch}.ngx-datatable .datatable-header .datatable-header-cell{position:relative;display:inline-block}.ngx-datatable .datatable-header .datatable-header-cell.sortable .datatable-header-cell-wrapper{cursor:pointer}.ngx-datatable .datatable-header .datatable-header-cell.longpress .datatable-header-cell-wrapper{cursor:move}.ngx-datatable .datatable-header .datatable-header-cell .sort-btn{line-height:100%;vertical-align:middle;display:inline-block;cursor:pointer}.ngx-datatable .datatable-header .datatable-header-cell .resize-handle,.ngx-datatable .datatable-header .datatable-header-cell .resize-handle--not-resizable{display:inline-block;position:absolute;right:0;top:0;bottom:0;width:5px;padding:0 4px;visibility:hidden}.ngx-datatable .datatable-header .datatable-header-cell .resize-handle{cursor:ew-resize}.ngx-datatable .datatable-header .datatable-header-cell.resizeable:hover .resize-handle,.ngx-datatable .datatable-header .datatable-header-cell:hover .resize-handle--not-resizable{visibility:visible}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker{position:absolute;top:0;bottom:0}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromLeft{right:0}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromRight{left:0}.ngx-datatable .datatable-header .datatable-header-cell .datatable-header-cell-template-wrap{height:inherit}.ngx-datatable .datatable-body{position:relative;z-index:10;display:block}.ngx-datatable .datatable-body .datatable-scroll{display:inline-block}.ngx-datatable .datatable-body .datatable-row-detail{overflow-y:hidden}.ngx-datatable .datatable-body .datatable-row-wrapper{display:flex;flex-direction:column}.ngx-datatable .datatable-body .datatable-body-row{outline:none}.ngx-datatable .datatable-body .datatable-body-row>div{display:flex}.ngx-datatable .datatable-footer{display:block;width:100%;overflow:auto}.ngx-datatable .datatable-footer .datatable-footer-inner{display:flex;align-items:center;width:100%}.ngx-datatable .datatable-footer .selected-count .page-count{flex:1 1 40%}.ngx-datatable .datatable-footer .selected-count .datatable-pager{flex:1 1 60%}.ngx-datatable .datatable-footer .page-count{flex:1 1 20%}.ngx-datatable .datatable-footer .datatable-pager{flex:1 1 80%;text-align:right}.ngx-datatable .datatable-footer .datatable-pager .pager,.ngx-datatable .datatable-footer .datatable-pager .pager li{padding:0;margin:0;display:inline-block;list-style:none}.ngx-datatable .datatable-footer .datatable-pager .pager li,.ngx-datatable .datatable-footer .datatable-pager .pager li a{outline:none}.ngx-datatable .datatable-footer .datatable-pager .pager li a{cursor:pointer;display:inline-block}.ngx-datatable .datatable-footer .datatable-pager .pager li.disabled a{cursor:not-allowed}\\n\"]\n }]\n }], function () {\n return [{\n type: ScrollbarHelper,\n decorators: [{\n type: SkipSelf\n }]\n }, {\n type: DimensionsHelper,\n decorators: [{\n type: SkipSelf\n }]\n }, {\n type: i0.ChangeDetectorRef\n }, {\n type: i0.ElementRef\n }, {\n type: i0.KeyValueDiffers\n }, {\n type: ColumnChangesService\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: ['configuration']\n }]\n }];\n }, {\n targetMarkerTemplate: [{\n type: Input\n }],\n rows: [{\n type: Input\n }],\n groupRowsBy: [{\n type: Input\n }],\n groupedRows: [{\n type: Input\n }],\n columns: [{\n type: Input\n }],\n selected: [{\n type: Input\n }],\n scrollbarV: [{\n type: Input\n }],\n scrollbarH: [{\n type: Input\n }],\n rowHeight: [{\n type: Input\n }],\n columnMode: [{\n type: Input\n }],\n headerHeight: [{\n type: Input\n }],\n footerHeight: [{\n type: Input\n }],\n externalPaging: [{\n type: Input\n }],\n externalSorting: [{\n type: Input\n }],\n limit: [{\n type: Input\n }],\n count: [{\n type: Input\n }],\n offset: [{\n type: Input\n }],\n loadingIndicator: [{\n type: Input\n }],\n selectionType: [{\n type: Input\n }],\n reorderable: [{\n type: Input\n }],\n swapColumns: [{\n type: Input\n }],\n sortType: [{\n type: Input\n }],\n sorts: [{\n type: Input\n }],\n cssClasses: [{\n type: Input\n }],\n messages: [{\n type: Input\n }],\n rowClass: [{\n type: Input\n }],\n selectCheck: [{\n type: Input\n }],\n displayCheck: [{\n type: Input\n }],\n groupExpansionDefault: [{\n type: Input\n }],\n trackByProp: [{\n type: Input\n }],\n selectAllRowsOnPage: [{\n type: Input\n }],\n virtualization: [{\n type: Input\n }],\n treeFromRelation: [{\n type: Input\n }],\n treeToRelation: [{\n type: Input\n }],\n summaryRow: [{\n type: Input\n }],\n summaryHeight: [{\n type: Input\n }],\n summaryPosition: [{\n type: Input\n }],\n scroll: [{\n type: Output\n }],\n activate: [{\n type: Output\n }],\n select: [{\n type: Output\n }],\n sort: [{\n type: Output\n }],\n page: [{\n type: Output\n }],\n reorder: [{\n type: Output\n }],\n resize: [{\n type: Output\n }],\n tableContextmenu: [{\n type: Output\n }],\n treeAction: [{\n type: Output\n }],\n isFixedHeader: [{\n type: HostBinding,\n args: ['class.fixed-header']\n }],\n isFixedRow: [{\n type: HostBinding,\n args: ['class.fixed-row']\n }],\n isVertScroll: [{\n type: HostBinding,\n args: ['class.scroll-vertical']\n }],\n isVirtualized: [{\n type: HostBinding,\n args: ['class.virtualized']\n }],\n isHorScroll: [{\n type: HostBinding,\n args: ['class.scroll-horz']\n }],\n isSelectable: [{\n type: HostBinding,\n args: ['class.selectable']\n }],\n isCheckboxSelection: [{\n type: HostBinding,\n args: ['class.checkbox-selection']\n }],\n isCellSelection: [{\n type: HostBinding,\n args: ['class.cell-selection']\n }],\n isSingleSelection: [{\n type: HostBinding,\n args: ['class.single-selection']\n }],\n isMultiSelection: [{\n type: HostBinding,\n args: ['class.multi-selection']\n }],\n isMultiClickSelection: [{\n type: HostBinding,\n args: ['class.multi-click-selection']\n }],\n columnTemplates: [{\n type: ContentChildren,\n args: [DataTableColumnDirective]\n }],\n rowDetail: [{\n type: ContentChild,\n args: [DatatableRowDetailDirective]\n }],\n groupHeader: [{\n type: ContentChild,\n args: [DatatableGroupHeaderDirective]\n }],\n footer: [{\n type: ContentChild,\n args: [DatatableFooterDirective]\n }],\n bodyComponent: [{\n type: ViewChild,\n args: [DataTableBodyComponent]\n }],\n headerComponent: [{\n type: ViewChild,\n args: [DataTableHeaderComponent]\n }],\n rowIdentity: [{\n type: Input\n }],\n onWindowResize: [{\n type: HostListener,\n args: ['window:resize']\n }]\n });\n})();\nclass NgxDatatableModule {\n /**\n * Configure global configuration via INgxDatatableConfig\n * @param configuration\n */\n static forRoot(configuration) {\n return {\n ngModule: NgxDatatableModule,\n providers: [{\n provide: 'configuration',\n useValue: configuration\n }]\n };\n }\n}\nNgxDatatableModule.ɵfac = function NgxDatatableModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgxDatatableModule)();\n};\nNgxDatatableModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgxDatatableModule\n});\nNgxDatatableModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [ScrollbarHelper, DimensionsHelper, ColumnChangesService],\n imports: [[CommonModule]]\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NgxDatatableModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n providers: [ScrollbarHelper, DimensionsHelper, ColumnChangesService],\n declarations: [DataTableFooterTemplateDirective, VisibilityDirective, DraggableDirective, ResizeableDirective, OrderableDirective, LongPressDirective, ScrollerComponent, DatatableComponent, DataTableColumnDirective, DataTableHeaderComponent, DataTableHeaderCellComponent, DataTableBodyComponent, DataTableFooterComponent, DataTablePagerComponent, ProgressBarComponent, DataTableBodyRowComponent, DataTableRowWrapperComponent, DatatableRowDetailDirective, DatatableGroupHeaderDirective, DatatableRowDetailTemplateDirective, DataTableBodyCellComponent, DataTableSelectionComponent, DataTableColumnHeaderDirective, DataTableColumnCellDirective, DataTableColumnCellTreeToggle, DatatableFooterDirective, DatatableGroupHeaderTemplateDirective, DataTableSummaryRowComponent],\n exports: [DatatableComponent, DatatableRowDetailDirective, DatatableGroupHeaderDirective, DatatableRowDetailTemplateDirective, DataTableColumnDirective, DataTableColumnHeaderDirective, DataTableColumnCellDirective, DataTableColumnCellTreeToggle, DataTableFooterTemplateDirective, DatatableFooterDirective, DataTablePagerComponent, DatatableGroupHeaderTemplateDirective]\n }]\n }], null, null);\n})();\nvar ClickType;\n(function (ClickType) {\n ClickType[\"single\"] = \"single\";\n ClickType[\"double\"] = \"double\";\n})(ClickType || (ClickType = {}));\nif (typeof document !== 'undefined' && !document.elementsFromPoint) {\n document.elementsFromPoint = elementsFromPoint;\n}\n/*tslint:disable*/\n/**\n * Polyfill for `elementsFromPoint`\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Document/elementsFromPoint\n * https://gist.github.com/iddan/54d5d9e58311b0495a91bf06de661380\n * https://gist.github.com/oslego/7265412\n */\nfunction elementsFromPoint(x, y) {\n const elements = [];\n const previousPointerEvents = [];\n let current; // TODO: window.getComputedStyle should be used with inferred type (Element)\n let i;\n let d;\n //if (document === undefined) return elements;\n // get all elements via elementFromPoint, and remove them from hit-testing in order\n while ((current = document.elementFromPoint(x, y)) && elements.indexOf(current) === -1 && current != null) {\n // push the element and its current style\n elements.push(current);\n previousPointerEvents.push({\n value: current.style.getPropertyValue('pointer-events'),\n priority: current.style.getPropertyPriority('pointer-events')\n });\n // add \"pointer-events: none\", to get to the underlying element\n current.style.setProperty('pointer-events', 'none', 'important');\n }\n // restore the previous pointer-events values\n for (i = previousPointerEvents.length; d = previousPointerEvents[--i];) {\n elements[i].style.setProperty('pointer-events', d.value ? d.value : '', d.priority);\n }\n // return our results\n return elements;\n}\n/*tslint:enable*/\n\n/*\n * Public API Surface of ngx-datatable\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ClickType, ColumnChangesService, ColumnMode, ContextmenuType, DataTableBodyCellComponent, DataTableBodyComponent, DataTableBodyRowComponent, DataTableColumnCellDirective, DataTableColumnCellTreeToggle, DataTableColumnDirective, DataTableColumnHeaderDirective, DataTableFooterComponent, DataTableFooterTemplateDirective, DataTableHeaderCellComponent, DataTableHeaderComponent, DataTablePagerComponent, DataTableRowWrapperComponent, DataTableSelectionComponent, DataTableSummaryRowComponent, DatatableComponent, DatatableFooterDirective, DatatableGroupHeaderDirective, DatatableGroupHeaderTemplateDirective, DatatableRowDetailDirective, DatatableRowDetailTemplateDirective, DimensionsHelper, DraggableDirective, Keys, LongPressDirective, NgxDatatableModule, OrderableDirective, ProgressBarComponent, ResizeableDirective, RowHeightCache, ScrollbarHelper, ScrollerComponent, SelectionType, SortDirection, SortType, VisibilityDirective, adjustColumnWidths, camelCase, columnGroupWidths, columnTotalWidth, columnsByPin, columnsByPinArr, columnsTotalWidth, deCamelCase, deepValueGetter, elementsFromPoint, emptyStringGetter, forceFillColumnWidths, getTotalFlexGrow, getVendorPrefixedName, getterForProp, groupRowsByParents, id, isNullOrUndefined, nextSortDir, numericIndexGetter, optionalGetterForProp, orderByComparator, selectRows, selectRowsBetween, setColumnDefaults, shallowValueGetter, sortRows, throttle, throttleable, translateTemplates, translateXY };\n","export var SECONDS_A_MINUTE = 60;\nexport var SECONDS_A_HOUR = SECONDS_A_MINUTE * 60;\nexport var SECONDS_A_DAY = SECONDS_A_HOUR * 24;\nexport var SECONDS_A_WEEK = SECONDS_A_DAY * 7;\nexport var MILLISECONDS_A_SECOND = 1e3;\nexport var MILLISECONDS_A_MINUTE = SECONDS_A_MINUTE * MILLISECONDS_A_SECOND;\nexport var MILLISECONDS_A_HOUR = SECONDS_A_HOUR * MILLISECONDS_A_SECOND;\nexport var MILLISECONDS_A_DAY = SECONDS_A_DAY * MILLISECONDS_A_SECOND;\nexport var MILLISECONDS_A_WEEK = SECONDS_A_WEEK * MILLISECONDS_A_SECOND; // English locales\n\nexport var MS = 'millisecond';\nexport var S = 'second';\nexport var MIN = 'minute';\nexport var H = 'hour';\nexport var D = 'day';\nexport var W = 'week';\nexport var M = 'month';\nexport var Q = 'quarter';\nexport var Y = 'year';\nexport var DATE = 'date';\nexport var FORMAT_DEFAULT = 'YYYY-MM-DDTHH:mm:ssZ';\nexport var INVALID_DATE_STRING = 'Invalid Date'; // regex\n\nexport var REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/;\nexport var REGEX_FORMAT = /\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g;","// English [en]\n// We don't need weekdaysShort, weekdaysMin, monthsShort in en.js locale\nexport default {\n name: 'en',\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n ordinal: function ordinal(n) {\n var s = ['th', 'st', 'nd', 'rd'];\n var v = n % 100;\n return \"[\" + n + (s[(v - 20) % 10] || s[v] || s[0]) + \"]\";\n }\n};","import * as C from './constant';\nvar padStart = function padStart(string, length, pad) {\n var s = String(string);\n if (!s || s.length >= length) return string;\n return \"\" + Array(length + 1 - s.length).join(pad) + string;\n};\nvar padZoneStr = function padZoneStr(instance) {\n var negMinutes = -instance.utcOffset();\n var minutes = Math.abs(negMinutes);\n var hourOffset = Math.floor(minutes / 60);\n var minuteOffset = minutes % 60;\n return \"\" + (negMinutes <= 0 ? '+' : '-') + padStart(hourOffset, 2, '0') + \":\" + padStart(minuteOffset, 2, '0');\n};\nvar monthDiff = function monthDiff(a, b) {\n // function from moment.js in order to keep the same result\n if (a.date() < b.date()) return -monthDiff(b, a);\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month());\n var anchor = a.clone().add(wholeMonthDiff, C.M);\n var c = b - anchor < 0;\n var anchor2 = a.clone().add(wholeMonthDiff + (c ? -1 : 1), C.M);\n return +(-(wholeMonthDiff + (b - anchor) / (c ? anchor - anchor2 : anchor2 - anchor)) || 0);\n};\nvar absFloor = function absFloor(n) {\n return n < 0 ? Math.ceil(n) || 0 : Math.floor(n);\n};\nvar prettyUnit = function prettyUnit(u) {\n var special = {\n M: C.M,\n y: C.Y,\n w: C.W,\n d: C.D,\n D: C.DATE,\n h: C.H,\n m: C.MIN,\n s: C.S,\n ms: C.MS,\n Q: C.Q\n };\n return special[u] || String(u || '').toLowerCase().replace(/s$/, '');\n};\nvar isUndefined = function isUndefined(s) {\n return s === undefined;\n};\nexport default {\n s: padStart,\n z: padZoneStr,\n m: monthDiff,\n a: absFloor,\n p: prettyUnit,\n u: isUndefined\n};","import * as C from './constant';\nimport en from './locale/en';\nimport U from './utils';\nvar L = 'en'; // global locale\n\nvar Ls = {}; // global loaded locale\n\nLs[L] = en;\nvar IS_DAYJS = '$isDayjsObject'; // eslint-disable-next-line no-use-before-define\n\nvar isDayjs = function isDayjs(d) {\n return d instanceof Dayjs || !!(d && d[IS_DAYJS]);\n};\nvar parseLocale = function parseLocale(preset, object, isLocal) {\n var l;\n if (!preset) return L;\n if (typeof preset === 'string') {\n var presetLower = preset.toLowerCase();\n if (Ls[presetLower]) {\n l = presetLower;\n }\n if (object) {\n Ls[presetLower] = object;\n l = presetLower;\n }\n var presetSplit = preset.split('-');\n if (!l && presetSplit.length > 1) {\n return parseLocale(presetSplit[0]);\n }\n } else {\n var name = preset.name;\n Ls[name] = preset;\n l = name;\n }\n if (!isLocal && l) L = l;\n return l || !isLocal && L;\n};\nvar dayjs = function dayjs(date, c) {\n if (isDayjs(date)) {\n return date.clone();\n } // eslint-disable-next-line no-nested-ternary\n\n var cfg = typeof c === 'object' ? c : {};\n cfg.date = date;\n cfg.args = arguments; // eslint-disable-line prefer-rest-params\n\n return new Dayjs(cfg); // eslint-disable-line no-use-before-define\n};\nvar wrapper = function wrapper(date, instance) {\n return dayjs(date, {\n locale: instance.$L,\n utc: instance.$u,\n x: instance.$x,\n $offset: instance.$offset // todo: refactor; do not use this.$offset in you code\n });\n};\nvar Utils = U; // for plugin use\n\nUtils.l = parseLocale;\nUtils.i = isDayjs;\nUtils.w = wrapper;\nvar parseDate = function parseDate(cfg) {\n var date = cfg.date,\n utc = cfg.utc;\n if (date === null) return new Date(NaN); // null is invalid\n\n if (Utils.u(date)) return new Date(); // today\n\n if (date instanceof Date) return new Date(date);\n if (typeof date === 'string' && !/Z$/i.test(date)) {\n var d = date.match(C.REGEX_PARSE);\n if (d) {\n var m = d[2] - 1 || 0;\n var ms = (d[7] || '0').substring(0, 3);\n if (utc) {\n return new Date(Date.UTC(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms));\n }\n return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);\n }\n }\n return new Date(date); // everything else\n};\nvar Dayjs = /*#__PURE__*/function () {\n function Dayjs(cfg) {\n this.$L = parseLocale(cfg.locale, null, true);\n this.parse(cfg); // for plugin\n\n this.$x = this.$x || cfg.x || {};\n this[IS_DAYJS] = true;\n }\n var _proto = Dayjs.prototype;\n _proto.parse = function parse(cfg) {\n this.$d = parseDate(cfg);\n this.init();\n };\n _proto.init = function init() {\n var $d = this.$d;\n this.$y = $d.getFullYear();\n this.$M = $d.getMonth();\n this.$D = $d.getDate();\n this.$W = $d.getDay();\n this.$H = $d.getHours();\n this.$m = $d.getMinutes();\n this.$s = $d.getSeconds();\n this.$ms = $d.getMilliseconds();\n } // eslint-disable-next-line class-methods-use-this\n ;\n _proto.$utils = function $utils() {\n return Utils;\n };\n _proto.isValid = function isValid() {\n return !(this.$d.toString() === C.INVALID_DATE_STRING);\n };\n _proto.isSame = function isSame(that, units) {\n var other = dayjs(that);\n return this.startOf(units) <= other && other <= this.endOf(units);\n };\n _proto.isAfter = function isAfter(that, units) {\n return dayjs(that) < this.startOf(units);\n };\n _proto.isBefore = function isBefore(that, units) {\n return this.endOf(units) < dayjs(that);\n };\n _proto.$g = function $g(input, get, set) {\n if (Utils.u(input)) return this[get];\n return this.set(set, input);\n };\n _proto.unix = function unix() {\n return Math.floor(this.valueOf() / 1000);\n };\n _proto.valueOf = function valueOf() {\n // timezone(hour) * 60 * 60 * 1000 => ms\n return this.$d.getTime();\n };\n _proto.startOf = function startOf(units, _startOf) {\n var _this = this;\n\n // startOf -> endOf\n var isStartOf = !Utils.u(_startOf) ? _startOf : true;\n var unit = Utils.p(units);\n var instanceFactory = function instanceFactory(d, m) {\n var ins = Utils.w(_this.$u ? Date.UTC(_this.$y, m, d) : new Date(_this.$y, m, d), _this);\n return isStartOf ? ins : ins.endOf(C.D);\n };\n var instanceFactorySet = function instanceFactorySet(method, slice) {\n var argumentStart = [0, 0, 0, 0];\n var argumentEnd = [23, 59, 59, 999];\n return Utils.w(_this.toDate()[method].apply(\n // eslint-disable-line prefer-spread\n _this.toDate('s'), (isStartOf ? argumentStart : argumentEnd).slice(slice)), _this);\n };\n var $W = this.$W,\n $M = this.$M,\n $D = this.$D;\n var utcPad = \"set\" + (this.$u ? 'UTC' : '');\n switch (unit) {\n case C.Y:\n return isStartOf ? instanceFactory(1, 0) : instanceFactory(31, 11);\n case C.M:\n return isStartOf ? instanceFactory(1, $M) : instanceFactory(0, $M + 1);\n case C.W:\n {\n var weekStart = this.$locale().weekStart || 0;\n var gap = ($W < weekStart ? $W + 7 : $W) - weekStart;\n return instanceFactory(isStartOf ? $D - gap : $D + (6 - gap), $M);\n }\n case C.D:\n case C.DATE:\n return instanceFactorySet(utcPad + \"Hours\", 0);\n case C.H:\n return instanceFactorySet(utcPad + \"Minutes\", 1);\n case C.MIN:\n return instanceFactorySet(utcPad + \"Seconds\", 2);\n case C.S:\n return instanceFactorySet(utcPad + \"Milliseconds\", 3);\n default:\n return this.clone();\n }\n };\n _proto.endOf = function endOf(arg) {\n return this.startOf(arg, false);\n };\n _proto.$set = function $set(units, _int) {\n var _C$D$C$DATE$C$M$C$Y$C;\n\n // private set\n var unit = Utils.p(units);\n var utcPad = \"set\" + (this.$u ? 'UTC' : '');\n var name = (_C$D$C$DATE$C$M$C$Y$C = {}, _C$D$C$DATE$C$M$C$Y$C[C.D] = utcPad + \"Date\", _C$D$C$DATE$C$M$C$Y$C[C.DATE] = utcPad + \"Date\", _C$D$C$DATE$C$M$C$Y$C[C.M] = utcPad + \"Month\", _C$D$C$DATE$C$M$C$Y$C[C.Y] = utcPad + \"FullYear\", _C$D$C$DATE$C$M$C$Y$C[C.H] = utcPad + \"Hours\", _C$D$C$DATE$C$M$C$Y$C[C.MIN] = utcPad + \"Minutes\", _C$D$C$DATE$C$M$C$Y$C[C.S] = utcPad + \"Seconds\", _C$D$C$DATE$C$M$C$Y$C[C.MS] = utcPad + \"Milliseconds\", _C$D$C$DATE$C$M$C$Y$C)[unit];\n var arg = unit === C.D ? this.$D + (_int - this.$W) : _int;\n if (unit === C.M || unit === C.Y) {\n // clone is for badMutable plugin\n var date = this.clone().set(C.DATE, 1);\n date.$d[name](arg);\n date.init();\n this.$d = date.set(C.DATE, Math.min(this.$D, date.daysInMonth())).$d;\n } else if (name) this.$d[name](arg);\n this.init();\n return this;\n };\n _proto.set = function set(string, _int2) {\n return this.clone().$set(string, _int2);\n };\n _proto.get = function get(unit) {\n return this[Utils.p(unit)]();\n };\n _proto.add = function add(number, units) {\n var _this2 = this,\n _C$MIN$C$H$C$S$unit;\n number = Number(number); // eslint-disable-line no-param-reassign\n\n var unit = Utils.p(units);\n var instanceFactorySet = function instanceFactorySet(n) {\n var d = dayjs(_this2);\n return Utils.w(d.date(d.date() + Math.round(n * number)), _this2);\n };\n if (unit === C.M) {\n return this.set(C.M, this.$M + number);\n }\n if (unit === C.Y) {\n return this.set(C.Y, this.$y + number);\n }\n if (unit === C.D) {\n return instanceFactorySet(1);\n }\n if (unit === C.W) {\n return instanceFactorySet(7);\n }\n var step = (_C$MIN$C$H$C$S$unit = {}, _C$MIN$C$H$C$S$unit[C.MIN] = C.MILLISECONDS_A_MINUTE, _C$MIN$C$H$C$S$unit[C.H] = C.MILLISECONDS_A_HOUR, _C$MIN$C$H$C$S$unit[C.S] = C.MILLISECONDS_A_SECOND, _C$MIN$C$H$C$S$unit)[unit] || 1; // ms\n\n var nextTimeStamp = this.$d.getTime() + number * step;\n return Utils.w(nextTimeStamp, this);\n };\n _proto.subtract = function subtract(number, string) {\n return this.add(number * -1, string);\n };\n _proto.format = function format(formatStr) {\n var _this3 = this;\n var locale = this.$locale();\n if (!this.isValid()) return locale.invalidDate || C.INVALID_DATE_STRING;\n var str = formatStr || C.FORMAT_DEFAULT;\n var zoneStr = Utils.z(this);\n var $H = this.$H,\n $m = this.$m,\n $M = this.$M;\n var weekdays = locale.weekdays,\n months = locale.months,\n meridiem = locale.meridiem;\n var getShort = function getShort(arr, index, full, length) {\n return arr && (arr[index] || arr(_this3, str)) || full[index].slice(0, length);\n };\n var get$H = function get$H(num) {\n return Utils.s($H % 12 || 12, num, '0');\n };\n var meridiemFunc = meridiem || function (hour, minute, isLowercase) {\n var m = hour < 12 ? 'AM' : 'PM';\n return isLowercase ? m.toLowerCase() : m;\n };\n var matches = function matches(match) {\n switch (match) {\n case 'YY':\n return String(_this3.$y).slice(-2);\n case 'YYYY':\n return Utils.s(_this3.$y, 4, '0');\n case 'M':\n return $M + 1;\n case 'MM':\n return Utils.s($M + 1, 2, '0');\n case 'MMM':\n return getShort(locale.monthsShort, $M, months, 3);\n case 'MMMM':\n return getShort(months, $M);\n case 'D':\n return _this3.$D;\n case 'DD':\n return Utils.s(_this3.$D, 2, '0');\n case 'd':\n return String(_this3.$W);\n case 'dd':\n return getShort(locale.weekdaysMin, _this3.$W, weekdays, 2);\n case 'ddd':\n return getShort(locale.weekdaysShort, _this3.$W, weekdays, 3);\n case 'dddd':\n return weekdays[_this3.$W];\n case 'H':\n return String($H);\n case 'HH':\n return Utils.s($H, 2, '0');\n case 'h':\n return get$H(1);\n case 'hh':\n return get$H(2);\n case 'a':\n return meridiemFunc($H, $m, true);\n case 'A':\n return meridiemFunc($H, $m, false);\n case 'm':\n return String($m);\n case 'mm':\n return Utils.s($m, 2, '0');\n case 's':\n return String(_this3.$s);\n case 'ss':\n return Utils.s(_this3.$s, 2, '0');\n case 'SSS':\n return Utils.s(_this3.$ms, 3, '0');\n case 'Z':\n return zoneStr;\n // 'ZZ' logic below\n\n default:\n break;\n }\n return null;\n };\n return str.replace(C.REGEX_FORMAT, function (match, $1) {\n return $1 || matches(match) || zoneStr.replace(':', '');\n }); // 'ZZ'\n };\n _proto.utcOffset = function utcOffset() {\n // Because a bug at FF24, we're rounding the timezone offset around 15 minutes\n // https://github.com/moment/moment/pull/1871\n return -Math.round(this.$d.getTimezoneOffset() / 15) * 15;\n };\n _proto.diff = function diff(input, units, _float) {\n var _this4 = this;\n var unit = Utils.p(units);\n var that = dayjs(input);\n var zoneDelta = (that.utcOffset() - this.utcOffset()) * C.MILLISECONDS_A_MINUTE;\n var diff = this - that;\n var getMonth = function getMonth() {\n return Utils.m(_this4, that);\n };\n var result;\n switch (unit) {\n case C.Y:\n result = getMonth() / 12;\n break;\n case C.M:\n result = getMonth();\n break;\n case C.Q:\n result = getMonth() / 3;\n break;\n case C.W:\n result = (diff - zoneDelta) / C.MILLISECONDS_A_WEEK;\n break;\n case C.D:\n result = (diff - zoneDelta) / C.MILLISECONDS_A_DAY;\n break;\n case C.H:\n result = diff / C.MILLISECONDS_A_HOUR;\n break;\n case C.MIN:\n result = diff / C.MILLISECONDS_A_MINUTE;\n break;\n case C.S:\n result = diff / C.MILLISECONDS_A_SECOND;\n break;\n default:\n result = diff; // milliseconds\n\n break;\n }\n return _float ? result : Utils.a(result);\n };\n _proto.daysInMonth = function daysInMonth() {\n return this.endOf(C.M).$D;\n };\n _proto.$locale = function $locale() {\n // get locale object\n return Ls[this.$L];\n };\n _proto.locale = function locale(preset, object) {\n if (!preset) return this.$L;\n var that = this.clone();\n var nextLocaleName = parseLocale(preset, object, true);\n if (nextLocaleName) that.$L = nextLocaleName;\n return that;\n };\n _proto.clone = function clone() {\n return Utils.w(this.$d, this);\n };\n _proto.toDate = function toDate() {\n return new Date(this.valueOf());\n };\n _proto.toJSON = function toJSON() {\n return this.isValid() ? this.toISOString() : null;\n };\n _proto.toISOString = function toISOString() {\n // ie 8 return\n // new Dayjs(this.valueOf() + this.$d.getTimezoneOffset() * 60000)\n // .format('YYYY-MM-DDTHH:mm:ss.SSS[Z]')\n return this.$d.toISOString();\n };\n _proto.toString = function toString() {\n return this.$d.toUTCString();\n };\n return Dayjs;\n}();\nvar proto = Dayjs.prototype;\ndayjs.prototype = proto;\n[['$ms', C.MS], ['$s', C.S], ['$m', C.MIN], ['$H', C.H], ['$W', C.D], ['$M', C.M], ['$y', C.Y], ['$D', C.DATE]].forEach(function (g) {\n proto[g[1]] = function (input) {\n return this.$g(input, g[0], g[1]);\n };\n});\ndayjs.extend = function (plugin, option) {\n if (!plugin.$i) {\n // install plugin only once\n plugin(option, Dayjs, dayjs);\n plugin.$i = true;\n }\n return dayjs;\n};\ndayjs.locale = parseLocale;\ndayjs.isDayjs = isDayjs;\ndayjs.unix = function (timestamp) {\n return dayjs(timestamp * 1e3);\n};\ndayjs.en = Ls[L];\ndayjs.Ls = Ls;\ndayjs.p = {};\nexport default dayjs;","// eslint-disable-next-line import/prefer-default-export\nexport var t = function t(format) {\n return format.replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g, function (_, a, b) {\n return a || b.slice(1);\n });\n};\nexport var englishFormats = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A'\n};\nexport var u = function u(formatStr, formats) {\n return formatStr.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g, function (_, a, b) {\n var B = b && b.toUpperCase();\n return a || formats[b] || englishFormats[b] || t(formats[B]);\n });\n};","import { t } from '../localizedFormat/utils';\nexport default (function (o, c, dayjs) {\n // locale needed later\n var proto = c.prototype;\n var getLocalePart = function getLocalePart(part) {\n return part && (part.indexOf ? part : part.s);\n };\n var getShort = function getShort(ins, target, full, num, localeOrder) {\n var locale = ins.name ? ins : ins.$locale();\n var targetLocale = getLocalePart(locale[target]);\n var fullLocale = getLocalePart(locale[full]);\n var result = targetLocale || fullLocale.map(function (f) {\n return f.slice(0, num);\n });\n if (!localeOrder) return result;\n var weekStart = locale.weekStart;\n return result.map(function (_, index) {\n return result[(index + (weekStart || 0)) % 7];\n });\n };\n var getDayjsLocaleObject = function getDayjsLocaleObject() {\n return dayjs.Ls[dayjs.locale()];\n };\n var getLongDateFormat = function getLongDateFormat(l, format) {\n return l.formats[format] || t(l.formats[format.toUpperCase()]);\n };\n var localeData = function localeData() {\n var _this = this;\n return {\n months: function months(instance) {\n return instance ? instance.format('MMMM') : getShort(_this, 'months');\n },\n monthsShort: function monthsShort(instance) {\n return instance ? instance.format('MMM') : getShort(_this, 'monthsShort', 'months', 3);\n },\n firstDayOfWeek: function firstDayOfWeek() {\n return _this.$locale().weekStart || 0;\n },\n weekdays: function weekdays(instance) {\n return instance ? instance.format('dddd') : getShort(_this, 'weekdays');\n },\n weekdaysMin: function weekdaysMin(instance) {\n return instance ? instance.format('dd') : getShort(_this, 'weekdaysMin', 'weekdays', 2);\n },\n weekdaysShort: function weekdaysShort(instance) {\n return instance ? instance.format('ddd') : getShort(_this, 'weekdaysShort', 'weekdays', 3);\n },\n longDateFormat: function longDateFormat(format) {\n return getLongDateFormat(_this.$locale(), format);\n },\n meridiem: this.$locale().meridiem,\n ordinal: this.$locale().ordinal\n };\n };\n proto.localeData = function () {\n return localeData.bind(this)();\n };\n dayjs.localeData = function () {\n var localeObject = getDayjsLocaleObject();\n return {\n firstDayOfWeek: function firstDayOfWeek() {\n return localeObject.weekStart || 0;\n },\n weekdays: function weekdays() {\n return dayjs.weekdays();\n },\n weekdaysShort: function weekdaysShort() {\n return dayjs.weekdaysShort();\n },\n weekdaysMin: function weekdaysMin() {\n return dayjs.weekdaysMin();\n },\n months: function months() {\n return dayjs.months();\n },\n monthsShort: function monthsShort() {\n return dayjs.monthsShort();\n },\n longDateFormat: function longDateFormat(format) {\n return getLongDateFormat(localeObject, format);\n },\n meridiem: localeObject.meridiem,\n ordinal: localeObject.ordinal\n };\n };\n dayjs.months = function () {\n return getShort(getDayjsLocaleObject(), 'months');\n };\n dayjs.monthsShort = function () {\n return getShort(getDayjsLocaleObject(), 'monthsShort', 'months', 3);\n };\n dayjs.weekdays = function (localeOrder) {\n return getShort(getDayjsLocaleObject(), 'weekdays', null, null, localeOrder);\n };\n dayjs.weekdaysShort = function (localeOrder) {\n return getShort(getDayjsLocaleObject(), 'weekdaysShort', 'weekdays', 3, localeOrder);\n };\n dayjs.weekdaysMin = function (localeOrder) {\n return getShort(getDayjsLocaleObject(), 'weekdaysMin', 'weekdays', 2, localeOrder);\n };\n});","import { FORMAT_DEFAULT } from '../../constant';\nimport { u, englishFormats } from './utils';\nexport default (function (o, c, d) {\n var proto = c.prototype;\n var oldFormat = proto.format;\n d.en.formats = englishFormats;\n proto.format = function (formatStr) {\n if (formatStr === void 0) {\n formatStr = FORMAT_DEFAULT;\n }\n var _this$$locale = this.$locale(),\n _this$$locale$formats = _this$$locale.formats,\n formats = _this$$locale$formats === void 0 ? {} : _this$$locale$formats;\n var result = u(formatStr, formats);\n return oldFormat.call(this, result);\n };\n});","import { D, W, Y } from '../../constant';\nvar isoWeekPrettyUnit = 'isoweek';\nexport default (function (o, c, d) {\n var getYearFirstThursday = function getYearFirstThursday(year, isUtc) {\n var yearFirstDay = (isUtc ? d.utc : d)().year(year).startOf(Y);\n var addDiffDays = 4 - yearFirstDay.isoWeekday();\n if (yearFirstDay.isoWeekday() > 4) {\n addDiffDays += 7;\n }\n return yearFirstDay.add(addDiffDays, D);\n };\n var getCurrentWeekThursday = function getCurrentWeekThursday(ins) {\n return ins.add(4 - ins.isoWeekday(), D);\n };\n var proto = c.prototype;\n proto.isoWeekYear = function () {\n var nowWeekThursday = getCurrentWeekThursday(this);\n return nowWeekThursday.year();\n };\n proto.isoWeek = function (week) {\n if (!this.$utils().u(week)) {\n return this.add((week - this.isoWeek()) * 7, D);\n }\n var nowWeekThursday = getCurrentWeekThursday(this);\n var diffWeekThursday = getYearFirstThursday(this.isoWeekYear(), this.$u);\n return nowWeekThursday.diff(diffWeekThursday, W) + 1;\n };\n proto.isoWeekday = function (week) {\n if (!this.$utils().u(week)) {\n return this.day(this.day() % 7 ? week : week - 7);\n }\n return this.day() || 7;\n };\n var oldStartOf = proto.startOf;\n proto.startOf = function (units, startOf) {\n var utils = this.$utils();\n var isStartOf = !utils.u(startOf) ? startOf : true;\n var unit = utils.p(units);\n if (unit === isoWeekPrettyUnit) {\n return isStartOf ? this.date(this.date() - (this.isoWeekday() - 1)).startOf('day') : this.date(this.date() - 1 - (this.isoWeekday() - 1) + 7).endOf('day');\n }\n return oldStartOf.bind(this)(units, startOf);\n };\n});","import { MS, Y, D, W } from '../../constant';\nexport default (function (o, c, d) {\n var proto = c.prototype;\n proto.week = function (week) {\n if (week === void 0) {\n week = null;\n }\n if (week !== null) {\n return this.add((week - this.week()) * 7, D);\n }\n var yearStart = this.$locale().yearStart || 1;\n if (this.month() === 11 && this.date() > 25) {\n // d(this) is for badMutable\n var nextYearStartDay = d(this).startOf(Y).add(1, Y).date(yearStart);\n var thisEndOfWeek = d(this).endOf(W);\n if (nextYearStartDay.isBefore(thisEndOfWeek)) {\n return 1;\n }\n }\n var yearStartDay = d(this).startOf(Y).date(yearStart);\n var yearStartWeek = yearStartDay.startOf(W).subtract(1, MS);\n var diffInWeek = this.diff(yearStartWeek, W, true);\n if (diffInWeek < 0) {\n return d(this).startOf('week').week();\n }\n return Math.ceil(diffInWeek);\n };\n proto.weeks = function (week) {\n if (week === void 0) {\n week = null;\n }\n return this.week(week);\n };\n});","import { u } from '../localizedFormat/utils';\nvar formattingTokens = /(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g;\nvar match1 = /\\d/; // 0 - 9\n\nvar match2 = /\\d\\d/; // 00 - 99\n\nvar match3 = /\\d{3}/; // 000 - 999\n\nvar match4 = /\\d{4}/; // 0000 - 9999\n\nvar match1to2 = /\\d\\d?/; // 0 - 99\n\nvar matchSigned = /[+-]?\\d+/; // -inf - inf\n\nvar matchOffset = /[+-]\\d\\d:?(\\d\\d)?|Z/; // +00:00 -00:00 +0000 or -0000 +00 or Z\n\nvar matchWord = /\\d*[^-_:/,()\\s\\d]+/; // Word\n\nvar locale = {};\nvar parseTwoDigitYear = function parseTwoDigitYear(input) {\n input = +input;\n return input + (input > 68 ? 1900 : 2000);\n};\nfunction offsetFromString(string) {\n if (!string) return 0;\n if (string === 'Z') return 0;\n var parts = string.match(/([+-]|\\d\\d)/g);\n var minutes = +(parts[1] * 60) + (+parts[2] || 0);\n return minutes === 0 ? 0 : parts[0] === '+' ? -minutes : minutes; // eslint-disable-line no-nested-ternary\n}\nvar addInput = function addInput(property) {\n return function (input) {\n this[property] = +input;\n };\n};\nvar zoneExpressions = [matchOffset, function (input) {\n var zone = this.zone || (this.zone = {});\n zone.offset = offsetFromString(input);\n}];\nvar getLocalePart = function getLocalePart(name) {\n var part = locale[name];\n return part && (part.indexOf ? part : part.s.concat(part.f));\n};\nvar meridiemMatch = function meridiemMatch(input, isLowerCase) {\n var isAfternoon;\n var _locale = locale,\n meridiem = _locale.meridiem;\n if (!meridiem) {\n isAfternoon = input === (isLowerCase ? 'pm' : 'PM');\n } else {\n for (var i = 1; i <= 24; i += 1) {\n // todo: fix input === meridiem(i, 0, isLowerCase)\n if (input.indexOf(meridiem(i, 0, isLowerCase)) > -1) {\n isAfternoon = i > 12;\n break;\n }\n }\n }\n return isAfternoon;\n};\nvar expressions = {\n A: [matchWord, function (input) {\n this.afternoon = meridiemMatch(input, false);\n }],\n a: [matchWord, function (input) {\n this.afternoon = meridiemMatch(input, true);\n }],\n Q: [match1, function (input) {\n this.month = (input - 1) * 3 + 1;\n }],\n S: [match1, function (input) {\n this.milliseconds = +input * 100;\n }],\n SS: [match2, function (input) {\n this.milliseconds = +input * 10;\n }],\n SSS: [match3, function (input) {\n this.milliseconds = +input;\n }],\n s: [match1to2, addInput('seconds')],\n ss: [match1to2, addInput('seconds')],\n m: [match1to2, addInput('minutes')],\n mm: [match1to2, addInput('minutes')],\n H: [match1to2, addInput('hours')],\n h: [match1to2, addInput('hours')],\n HH: [match1to2, addInput('hours')],\n hh: [match1to2, addInput('hours')],\n D: [match1to2, addInput('day')],\n DD: [match2, addInput('day')],\n Do: [matchWord, function (input) {\n var _locale2 = locale,\n ordinal = _locale2.ordinal;\n var _input$match = input.match(/\\d+/);\n this.day = _input$match[0];\n if (!ordinal) return;\n for (var i = 1; i <= 31; i += 1) {\n if (ordinal(i).replace(/\\[|\\]/g, '') === input) {\n this.day = i;\n }\n }\n }],\n w: [match1to2, addInput('week')],\n ww: [match2, addInput('week')],\n M: [match1to2, addInput('month')],\n MM: [match2, addInput('month')],\n MMM: [matchWord, function (input) {\n var months = getLocalePart('months');\n var monthsShort = getLocalePart('monthsShort');\n var matchIndex = (monthsShort || months.map(function (_) {\n return _.slice(0, 3);\n })).indexOf(input) + 1;\n if (matchIndex < 1) {\n throw new Error();\n }\n this.month = matchIndex % 12 || matchIndex;\n }],\n MMMM: [matchWord, function (input) {\n var months = getLocalePart('months');\n var matchIndex = months.indexOf(input) + 1;\n if (matchIndex < 1) {\n throw new Error();\n }\n this.month = matchIndex % 12 || matchIndex;\n }],\n Y: [matchSigned, addInput('year')],\n YY: [match2, function (input) {\n this.year = parseTwoDigitYear(input);\n }],\n YYYY: [match4, addInput('year')],\n Z: zoneExpressions,\n ZZ: zoneExpressions\n};\nfunction correctHours(time) {\n var afternoon = time.afternoon;\n if (afternoon !== undefined) {\n var hours = time.hours;\n if (afternoon) {\n if (hours < 12) {\n time.hours += 12;\n }\n } else if (hours === 12) {\n time.hours = 0;\n }\n delete time.afternoon;\n }\n}\nfunction makeParser(format) {\n format = u(format, locale && locale.formats);\n var array = format.match(formattingTokens);\n var length = array.length;\n for (var i = 0; i < length; i += 1) {\n var token = array[i];\n var parseTo = expressions[token];\n var regex = parseTo && parseTo[0];\n var parser = parseTo && parseTo[1];\n if (parser) {\n array[i] = {\n regex: regex,\n parser: parser\n };\n } else {\n array[i] = token.replace(/^\\[|\\]$/g, '');\n }\n }\n return function (input) {\n var time = {};\n for (var _i = 0, start = 0; _i < length; _i += 1) {\n var _token = array[_i];\n if (typeof _token === 'string') {\n start += _token.length;\n } else {\n var _regex = _token.regex,\n _parser = _token.parser;\n var part = input.slice(start);\n var match = _regex.exec(part);\n var value = match[0];\n _parser.call(time, value);\n input = input.replace(value, '');\n }\n }\n correctHours(time);\n return time;\n };\n}\nvar parseFormattedInput = function parseFormattedInput(input, format, utc, dayjs) {\n try {\n if (['x', 'X'].indexOf(format) > -1) return new Date((format === 'X' ? 1000 : 1) * input);\n var parser = makeParser(format);\n var _parser2 = parser(input),\n year = _parser2.year,\n month = _parser2.month,\n day = _parser2.day,\n hours = _parser2.hours,\n minutes = _parser2.minutes,\n seconds = _parser2.seconds,\n milliseconds = _parser2.milliseconds,\n zone = _parser2.zone,\n week = _parser2.week;\n var now = new Date();\n var d = day || (!year && !month ? now.getDate() : 1);\n var y = year || now.getFullYear();\n var M = 0;\n if (!(year && !month)) {\n M = month > 0 ? month - 1 : now.getMonth();\n }\n var h = hours || 0;\n var m = minutes || 0;\n var s = seconds || 0;\n var ms = milliseconds || 0;\n if (zone) {\n return new Date(Date.UTC(y, M, d, h, m, s, ms + zone.offset * 60 * 1000));\n }\n if (utc) {\n return new Date(Date.UTC(y, M, d, h, m, s, ms));\n }\n var newDate;\n newDate = new Date(y, M, d, h, m, s, ms);\n if (week) {\n newDate = dayjs(newDate).week(week).toDate();\n }\n return newDate;\n } catch (e) {\n return new Date(''); // Invalid Date\n }\n};\nexport default (function (o, C, d) {\n d.p.customParseFormat = true;\n if (o && o.parseTwoDigitYear) {\n parseTwoDigitYear = o.parseTwoDigitYear;\n }\n var proto = C.prototype;\n var oldParse = proto.parse;\n proto.parse = function (cfg) {\n var date = cfg.date,\n utc = cfg.utc,\n args = cfg.args;\n this.$u = utc;\n var format = args[1];\n if (typeof format === 'string') {\n var isStrictWithoutLocale = args[2] === true;\n var isStrictWithLocale = args[3] === true;\n var isStrict = isStrictWithoutLocale || isStrictWithLocale;\n var pl = args[2];\n if (isStrictWithLocale) {\n pl = args[2];\n }\n locale = this.$locale();\n if (!isStrictWithoutLocale && pl) {\n locale = d.Ls[pl];\n }\n this.$d = parseFormattedInput(date, format, utc, d);\n this.init();\n if (pl && pl !== true) this.$L = this.locale(pl).$L; // use != to treat\n // input number 1410715640579 and format string '1410715640579' equal\n // eslint-disable-next-line eqeqeq\n\n if (isStrict && date != this.format(format)) {\n this.$d = new Date('');\n } // reset global locale to make parallel unit test\n\n locale = {};\n } else if (format instanceof Array) {\n var len = format.length;\n for (var i = 1; i <= len; i += 1) {\n args[1] = format[i - 1];\n var result = d.apply(this, args);\n if (result.isValid()) {\n this.$d = result.$d;\n this.$L = result.$L;\n this.init();\n break;\n }\n if (i === len) this.$d = new Date('');\n }\n } else {\n oldParse.call(this, cfg);\n }\n };\n});","import { MILLISECONDS_A_MINUTE, MIN } from '../../constant';\nvar REGEX_VALID_OFFSET_FORMAT = /[+-]\\d\\d(?::?\\d\\d)?/g;\nvar REGEX_OFFSET_HOURS_MINUTES_FORMAT = /([+-]|\\d\\d)/g;\nfunction offsetFromString(value) {\n if (value === void 0) {\n value = '';\n }\n var offset = value.match(REGEX_VALID_OFFSET_FORMAT);\n if (!offset) {\n return null;\n }\n var _ref = (\"\" + offset[0]).match(REGEX_OFFSET_HOURS_MINUTES_FORMAT) || ['-', 0, 0],\n indicator = _ref[0],\n hoursOffset = _ref[1],\n minutesOffset = _ref[2];\n var totalOffsetInMinutes = +hoursOffset * 60 + +minutesOffset;\n if (totalOffsetInMinutes === 0) {\n return 0;\n }\n return indicator === '+' ? totalOffsetInMinutes : -totalOffsetInMinutes;\n}\nexport default (function (option, Dayjs, dayjs) {\n var proto = Dayjs.prototype;\n dayjs.utc = function (date) {\n var cfg = {\n date: date,\n utc: true,\n args: arguments\n }; // eslint-disable-line prefer-rest-params\n\n return new Dayjs(cfg); // eslint-disable-line no-use-before-define\n };\n proto.utc = function (keepLocalTime) {\n var ins = dayjs(this.toDate(), {\n locale: this.$L,\n utc: true\n });\n if (keepLocalTime) {\n return ins.add(this.utcOffset(), MIN);\n }\n return ins;\n };\n proto.local = function () {\n return dayjs(this.toDate(), {\n locale: this.$L,\n utc: false\n });\n };\n var oldParse = proto.parse;\n proto.parse = function (cfg) {\n if (cfg.utc) {\n this.$u = true;\n }\n if (!this.$utils().u(cfg.$offset)) {\n this.$offset = cfg.$offset;\n }\n oldParse.call(this, cfg);\n };\n var oldInit = proto.init;\n proto.init = function () {\n if (this.$u) {\n var $d = this.$d;\n this.$y = $d.getUTCFullYear();\n this.$M = $d.getUTCMonth();\n this.$D = $d.getUTCDate();\n this.$W = $d.getUTCDay();\n this.$H = $d.getUTCHours();\n this.$m = $d.getUTCMinutes();\n this.$s = $d.getUTCSeconds();\n this.$ms = $d.getUTCMilliseconds();\n } else {\n oldInit.call(this);\n }\n };\n var oldUtcOffset = proto.utcOffset;\n proto.utcOffset = function (input, keepLocalTime) {\n var _this$$utils = this.$utils(),\n u = _this$$utils.u;\n if (u(input)) {\n if (this.$u) {\n return 0;\n }\n if (!u(this.$offset)) {\n return this.$offset;\n }\n return oldUtcOffset.call(this);\n }\n if (typeof input === 'string') {\n input = offsetFromString(input);\n if (input === null) {\n return this;\n }\n }\n var offset = Math.abs(input) <= 16 ? input * 60 : input;\n var ins = this;\n if (keepLocalTime) {\n ins.$offset = offset;\n ins.$u = input === 0;\n return ins;\n }\n if (input !== 0) {\n var localTimezoneOffset = this.$u ? this.toDate().getTimezoneOffset() : -1 * this.utcOffset();\n ins = this.local().add(offset + localTimezoneOffset, MIN);\n ins.$offset = offset;\n ins.$x.$localOffset = localTimezoneOffset;\n } else {\n ins = this.utc();\n }\n return ins;\n };\n var oldFormat = proto.format;\n var UTC_FORMAT_DEFAULT = 'YYYY-MM-DDTHH:mm:ss[Z]';\n proto.format = function (formatStr) {\n var str = formatStr || (this.$u ? UTC_FORMAT_DEFAULT : '');\n return oldFormat.call(this, str);\n };\n proto.valueOf = function () {\n var addedOffset = !this.$utils().u(this.$offset) ? this.$offset + (this.$x.$localOffset || this.$d.getTimezoneOffset()) : 0;\n return this.$d.valueOf() - addedOffset * MILLISECONDS_A_MINUTE;\n };\n proto.isUTC = function () {\n return !!this.$u;\n };\n proto.toISOString = function () {\n return this.toDate().toISOString();\n };\n proto.toString = function () {\n return this.toDate().toUTCString();\n };\n var oldToDate = proto.toDate;\n proto.toDate = function (type) {\n if (type === 's' && this.$offset) {\n return dayjs(this.format('YYYY-MM-DD HH:mm:ss:SSS')).toDate();\n }\n return oldToDate.call(this);\n };\n var oldDiff = proto.diff;\n proto.diff = function (input, units, _float) {\n if (input && this.$u === input.$u) {\n return oldDiff.call(this, input, units, _float);\n }\n var localThis = this.local();\n var localInput = dayjs(input).local();\n return oldDiff.call(localThis, localInput, units, _float);\n };\n});","import * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Injectable, Inject, EventEmitter, forwardRef, Component, ViewEncapsulation, Input, Output, ViewChild, HostListener, Directive, HostBinding, NgModule } from '@angular/core';\nimport * as i3 from '@angular/forms';\nimport { FormControl, NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport dayjs from 'dayjs/esm';\nimport localeData from 'dayjs/esm/plugin/localeData';\nimport LocalizedFormat from 'dayjs/esm/plugin/localizedFormat';\nimport isoWeek from 'dayjs/esm/plugin/isoWeek';\nimport week from 'dayjs/esm/plugin/weekOfYear';\nimport customParseFormat from 'dayjs/esm/plugin/customParseFormat';\nimport utc from 'dayjs/esm/plugin/utc';\nconst _c0 = [\"pickerContainer\"];\nconst _c1 = (a0, a1, a2, a3, a4, a5, a6) => ({\n ltr: a0,\n rtl: a1,\n shown: a2,\n hidden: a3,\n inline: a4,\n double: a5,\n \"show-ranges\": a6\n});\nconst _c2 = a0 => ({\n active: a0\n});\nconst _c3 = (a0, a1) => ({\n right: a0,\n left: a1\n});\nfunction DaterangepickerComponent_ng_container_2_li_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"li\")(1, \"button\", 8);\n i0.ɵɵlistener(\"click\", function DaterangepickerComponent_ng_container_2_li_3_Template_button_click_1_listener($event) {\n const range_r2 = i0.ɵɵrestoreView(_r1).$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.clickRange($event, range_r2));\n });\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const range_r2 = ctx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"disabled\", ctx_r2.disableRange(range_r2))(\"ngClass\", i0.ɵɵpureFunction1(3, _c2, range_r2 === ctx_r2.chosenRange));\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", range_r2, \" \");\n }\n}\nfunction DaterangepickerComponent_ng_container_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementStart(1, \"div\", 6)(2, \"ul\");\n i0.ɵɵtemplate(3, DaterangepickerComponent_ng_container_2_li_3_Template, 3, 5, \"li\", 7);\n i0.ɵɵelementEnd()();\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngForOf\", ctx_r2.rangesArray);\n }\n}\nfunction DaterangepickerComponent_div_3_table_2_th_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"th\");\n }\n}\nfunction DaterangepickerComponent_div_3_table_2_ng_container_4_Template(rf, ctx) {\n if (rf & 1) {\n const _r4 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementStart(1, \"th\", 19);\n i0.ɵɵlistener(\"click\", function DaterangepickerComponent_div_3_table_2_ng_container_4_Template_th_click_1_listener() {\n i0.ɵɵrestoreView(_r4);\n const ctx_r2 = i0.ɵɵnextContext(3);\n return i0.ɵɵresetView(ctx_r2.clickPrev(ctx_r2.sideEnum.left));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵelementContainerEnd();\n }\n}\nfunction DaterangepickerComponent_div_3_table_2_ng_container_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelement(1, \"th\");\n i0.ɵɵelementContainerEnd();\n }\n}\nfunction DaterangepickerComponent_div_3_table_2_ng_container_7_option_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"option\", 25);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const m_r6 = ctx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext(4);\n i0.ɵɵproperty(\"disabled\", ctx_r2.calendarVariables.left.dropdowns.inMinYear && m_r6 < ctx_r2.calendarVariables.left.minDate.month() || ctx_r2.calendarVariables.left.dropdowns.inMaxYear && m_r6 > ctx_r2.calendarVariables.left.maxDate.month())(\"value\", m_r6)(\"selected\", ctx_r2.calendarVariables.left.dropdowns.currentMonth === m_r6);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r2.locale.monthNames[m_r6], \" \");\n }\n}\nfunction DaterangepickerComponent_div_3_table_2_ng_container_7_option_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"option\", 26);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const y_r7 = ctx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext(4);\n i0.ɵɵproperty(\"selected\", y_r7 === ctx_r2.calendarVariables.left.dropdowns.currentYear);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", y_r7, \" \");\n }\n}\nfunction DaterangepickerComponent_div_3_table_2_ng_container_7_Template(rf, ctx) {\n if (rf & 1) {\n const _r5 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementStart(1, \"div\", 20);\n i0.ɵɵtext(2);\n i0.ɵɵelementStart(3, \"select\", 21);\n i0.ɵɵlistener(\"change\", function DaterangepickerComponent_div_3_table_2_ng_container_7_Template_select_change_3_listener($event) {\n i0.ɵɵrestoreView(_r5);\n const ctx_r2 = i0.ɵɵnextContext(3);\n return i0.ɵɵresetView(ctx_r2.monthChanged($event, ctx_r2.sideEnum.left));\n });\n i0.ɵɵtemplate(4, DaterangepickerComponent_div_3_table_2_ng_container_7_option_4_Template, 2, 4, \"option\", 22);\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(5, \"div\", 20);\n i0.ɵɵtext(6);\n i0.ɵɵelementStart(7, \"select\", 23);\n i0.ɵɵlistener(\"change\", function DaterangepickerComponent_div_3_table_2_ng_container_7_Template_select_change_7_listener($event) {\n i0.ɵɵrestoreView(_r5);\n const ctx_r2 = i0.ɵɵnextContext(3);\n return i0.ɵɵresetView(ctx_r2.yearChanged($event, ctx_r2.sideEnum.left));\n });\n i0.ɵɵtemplate(8, DaterangepickerComponent_div_3_table_2_ng_container_7_option_8_Template, 2, 2, \"option\", 24);\n i0.ɵɵelementEnd()();\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate1(\" \", ctx_r2.locale.monthNames[ctx_r2.calendarVariables == null ? null : ctx_r2.calendarVariables.left == null ? null : ctx_r2.calendarVariables.left.calendar[1][1].month()], \" \");\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngForOf\", ctx_r2.calendarVariables.left.dropdowns.monthArrays);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate1(\" \", ctx_r2.calendarVariables == null ? null : ctx_r2.calendarVariables.left == null ? null : ctx_r2.calendarVariables.left.calendar[1][1].format(\" YYYY\"), \" \");\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngForOf\", ctx_r2.calendarVariables.left.dropdowns.yearArrays);\n }\n}\nfunction DaterangepickerComponent_div_3_table_2_ng_container_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtext(1);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate2(\" \", ctx_r2.locale.monthNames[ctx_r2.calendarVariables == null ? null : ctx_r2.calendarVariables.left == null ? null : ctx_r2.calendarVariables.left.calendar[1][1].month()], \" \", ctx_r2.calendarVariables == null ? null : ctx_r2.calendarVariables.left == null ? null : ctx_r2.calendarVariables.left.calendar[1][1].format(\" YYYY\"), \" \");\n }\n}\nfunction DaterangepickerComponent_div_3_table_2_ng_container_9_Template(rf, ctx) {\n if (rf & 1) {\n const _r8 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementStart(1, \"th\", 27);\n i0.ɵɵlistener(\"click\", function DaterangepickerComponent_div_3_table_2_ng_container_9_Template_th_click_1_listener() {\n i0.ɵɵrestoreView(_r8);\n const ctx_r2 = i0.ɵɵnextContext(3);\n return i0.ɵɵresetView(ctx_r2.clickNext(ctx_r2.sideEnum.left));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵelementContainerEnd();\n }\n}\nfunction DaterangepickerComponent_div_3_table_2_ng_container_10_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelement(1, \"th\");\n i0.ɵɵelementContainerEnd();\n }\n}\nfunction DaterangepickerComponent_div_3_table_2_th_12_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"th\", 28)(1, \"span\");\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(ctx_r2.locale.weekLabel);\n }\n}\nfunction DaterangepickerComponent_div_3_table_2_th_13_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"th\")(1, \"span\");\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const dayofweek_r9 = ctx.$implicit;\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(dayofweek_r9);\n }\n}\nfunction DaterangepickerComponent_div_3_table_2_tr_15_td_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"td\", 28)(1, \"span\");\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const row_r10 = i0.ɵɵnextContext().$implicit;\n const ctx_r2 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(ctx_r2.calendarVariables.left.calendar[row_r10][0].week());\n }\n}\nfunction DaterangepickerComponent_div_3_table_2_tr_15_td_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"td\", 28)(1, \"span\");\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const row_r10 = i0.ɵɵnextContext().$implicit;\n const ctx_r2 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(ctx_r2.calendarVariables.left.calendar[row_r10][0].isoWeek());\n }\n}\nfunction DaterangepickerComponent_div_3_table_2_tr_15_td_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r11 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"td\", 30);\n i0.ɵɵlistener(\"click\", function DaterangepickerComponent_div_3_table_2_tr_15_td_3_Template_td_click_0_listener($event) {\n const col_r12 = i0.ɵɵrestoreView(_r11).$implicit;\n const row_r10 = i0.ɵɵnextContext().$implicit;\n const ctx_r2 = i0.ɵɵnextContext(3);\n return i0.ɵɵresetView(ctx_r2.clickDate($event, ctx_r2.sideEnum.left, row_r10, col_r12));\n })(\"mouseenter\", function DaterangepickerComponent_div_3_table_2_tr_15_td_3_Template_td_mouseenter_0_listener($event) {\n const col_r12 = i0.ɵɵrestoreView(_r11).$implicit;\n const row_r10 = i0.ɵɵnextContext().$implicit;\n const ctx_r2 = i0.ɵɵnextContext(3);\n return i0.ɵɵresetView(ctx_r2.hoverDate($event, ctx_r2.sideEnum.left, row_r10, col_r12));\n });\n i0.ɵɵelementStart(1, \"span\");\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const col_r12 = ctx.$implicit;\n const row_r10 = i0.ɵɵnextContext().$implicit;\n const ctx_r2 = i0.ɵɵnextContext(3);\n i0.ɵɵclassMap(ctx_r2.calendarVariables.left.classes[row_r10][col_r12]);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(ctx_r2.calendarVariables.left.calendar[row_r10][col_r12].date());\n }\n}\nfunction DaterangepickerComponent_div_3_table_2_tr_15_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"tr\");\n i0.ɵɵtemplate(1, DaterangepickerComponent_div_3_table_2_tr_15_td_1_Template, 3, 1, \"td\", 16)(2, DaterangepickerComponent_div_3_table_2_tr_15_td_2_Template, 3, 1, \"td\", 16)(3, DaterangepickerComponent_div_3_table_2_tr_15_td_3_Template, 3, 3, \"td\", 29);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const row_r10 = ctx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext(3);\n i0.ɵɵclassMap(ctx_r2.calendarVariables.left.classes[row_r10].classList);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r2.showWeekNumbers);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r2.showISOWeekNumbers);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r2.calendarVariables.left.calCols);\n }\n}\nfunction DaterangepickerComponent_div_3_table_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"table\", 13)(1, \"thead\")(2, \"tr\");\n i0.ɵɵtemplate(3, DaterangepickerComponent_div_3_table_2_th_3_Template, 1, 0, \"th\", 2)(4, DaterangepickerComponent_div_3_table_2_ng_container_4_Template, 2, 0, \"ng-container\", 2)(5, DaterangepickerComponent_div_3_table_2_ng_container_5_Template, 2, 0, \"ng-container\", 2);\n i0.ɵɵelementStart(6, \"th\", 14);\n i0.ɵɵtemplate(7, DaterangepickerComponent_div_3_table_2_ng_container_7_Template, 9, 4, \"ng-container\", 2)(8, DaterangepickerComponent_div_3_table_2_ng_container_8_Template, 2, 2, \"ng-container\", 2);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(9, DaterangepickerComponent_div_3_table_2_ng_container_9_Template, 2, 0, \"ng-container\", 2)(10, DaterangepickerComponent_div_3_table_2_ng_container_10_Template, 2, 0, \"ng-container\", 2);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(11, \"tr\", 15);\n i0.ɵɵtemplate(12, DaterangepickerComponent_div_3_table_2_th_12_Template, 3, 1, \"th\", 16)(13, DaterangepickerComponent_div_3_table_2_th_13_Template, 3, 1, \"th\", 7);\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(14, \"tbody\", 17);\n i0.ɵɵtemplate(15, DaterangepickerComponent_div_3_table_2_tr_15_Template, 4, 5, \"tr\", 18);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngIf\", ctx_r2.showWeekNumbers || ctx_r2.showISOWeekNumbers);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r2.calendarVariables.left.minDate || ctx_r2.calendarVariables.left.minDate.isBefore(ctx_r2.calendarVariables.left.calendar.firstDay) && (!ctx_r2.linkedCalendars || true));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !(!ctx_r2.calendarVariables.left.minDate || ctx_r2.calendarVariables.left.minDate.isBefore(ctx_r2.calendarVariables.left.calendar.firstDay) && (!ctx_r2.linkedCalendars || true)));\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r2.showDropdowns && ctx_r2.calendarVariables.left.dropdowns);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r2.showDropdowns || !ctx_r2.calendarVariables.left.dropdowns);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", (!ctx_r2.calendarVariables.left.maxDate || ctx_r2.calendarVariables.left.maxDate.isAfter(ctx_r2.calendarVariables.left.calendar.lastDay)) && (!ctx_r2.linkedCalendars || ctx_r2.singleDatePicker));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !((!ctx_r2.calendarVariables.left.maxDate || ctx_r2.calendarVariables.left.maxDate.isAfter(ctx_r2.calendarVariables.left.calendar.lastDay)) && (!ctx_r2.linkedCalendars || ctx_r2.singleDatePicker)));\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r2.showWeekNumbers || ctx_r2.showISOWeekNumbers);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r2.locale.daysOfWeek);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngForOf\", ctx_r2.calendarVariables.left.calRows);\n }\n}\nfunction DaterangepickerComponent_div_3_div_3_option_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"option\", 40);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const i_r14 = ctx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"value\", i_r14)(\"disabled\", ctx_r2.timepickerVariables.left.disabledHours.indexOf(i_r14) > -1);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", i_r14, \" \");\n }\n}\nfunction DaterangepickerComponent_div_3_div_3_option_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"option\", 40);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const i_r15 = ctx.$implicit;\n const index_r16 = ctx.index;\n const ctx_r2 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"value\", i_r15)(\"disabled\", ctx_r2.timepickerVariables.left.disabledMinutes.indexOf(i_r15) > -1);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r2.timepickerVariables.left.minutesLabel[index_r16], \" \");\n }\n}\nfunction DaterangepickerComponent_div_3_div_3_select_10_option_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"option\", 40);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const i_r18 = ctx.$implicit;\n const index_r19 = ctx.index;\n const ctx_r2 = i0.ɵɵnextContext(4);\n i0.ɵɵproperty(\"value\", i_r18)(\"disabled\", ctx_r2.timepickerVariables.left.disabledSeconds.indexOf(i_r18) > -1);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r2.timepickerVariables.left.secondsLabel[index_r19], \" \");\n }\n}\nfunction DaterangepickerComponent_div_3_div_3_select_10_Template(rf, ctx) {\n if (rf & 1) {\n const _r17 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"select\", 41);\n i0.ɵɵtwoWayListener(\"ngModelChange\", function DaterangepickerComponent_div_3_div_3_select_10_Template_select_ngModelChange_0_listener($event) {\n i0.ɵɵrestoreView(_r17);\n const ctx_r2 = i0.ɵɵnextContext(3);\n i0.ɵɵtwoWayBindingSet(ctx_r2.timepickerVariables.left.selectedSecond, $event) || (ctx_r2.timepickerVariables.left.selectedSecond = $event);\n return i0.ɵɵresetView($event);\n });\n i0.ɵɵlistener(\"ngModelChange\", function DaterangepickerComponent_div_3_div_3_select_10_Template_select_ngModelChange_0_listener($event) {\n i0.ɵɵrestoreView(_r17);\n const ctx_r2 = i0.ɵɵnextContext(3);\n return i0.ɵɵresetView(ctx_r2.timeChanged($event, ctx_r2.sideEnum.left));\n });\n i0.ɵɵtemplate(1, DaterangepickerComponent_div_3_div_3_select_10_option_1_Template, 2, 3, \"option\", 34);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"disabled\", !ctx_r2.startDate);\n i0.ɵɵtwoWayProperty(\"ngModel\", ctx_r2.timepickerVariables.left.selectedSecond);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r2.timepickerVariables.left.seconds);\n }\n}\nfunction DaterangepickerComponent_div_3_div_3_select_14_Template(rf, ctx) {\n if (rf & 1) {\n const _r20 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"select\", 42);\n i0.ɵɵtwoWayListener(\"ngModelChange\", function DaterangepickerComponent_div_3_div_3_select_14_Template_select_ngModelChange_0_listener($event) {\n i0.ɵɵrestoreView(_r20);\n const ctx_r2 = i0.ɵɵnextContext(3);\n i0.ɵɵtwoWayBindingSet(ctx_r2.timepickerVariables.left.ampmModel, $event) || (ctx_r2.timepickerVariables.left.ampmModel = $event);\n return i0.ɵɵresetView($event);\n });\n i0.ɵɵlistener(\"ngModelChange\", function DaterangepickerComponent_div_3_div_3_select_14_Template_select_ngModelChange_0_listener($event) {\n i0.ɵɵrestoreView(_r20);\n const ctx_r2 = i0.ɵɵnextContext(3);\n return i0.ɵɵresetView(ctx_r2.timeChanged($event, ctx_r2.sideEnum.left));\n });\n i0.ɵɵelementStart(1, \"option\", 43);\n i0.ɵɵtext(2, \"AM\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(3, \"option\", 44);\n i0.ɵɵtext(4, \"PM\");\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(3);\n i0.ɵɵtwoWayProperty(\"ngModel\", ctx_r2.timepickerVariables.left.ampmModel);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"disabled\", ctx_r2.timepickerVariables.left.amDisabled);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"disabled\", ctx_r2.timepickerVariables.left.pmDisabled);\n }\n}\nfunction DaterangepickerComponent_div_3_div_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r13 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 31)(1, \"div\", 32)(2, \"select\", 33);\n i0.ɵɵtwoWayListener(\"ngModelChange\", function DaterangepickerComponent_div_3_div_3_Template_select_ngModelChange_2_listener($event) {\n i0.ɵɵrestoreView(_r13);\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵtwoWayBindingSet(ctx_r2.timepickerVariables.left.selectedHour, $event) || (ctx_r2.timepickerVariables.left.selectedHour = $event);\n return i0.ɵɵresetView($event);\n });\n i0.ɵɵlistener(\"ngModelChange\", function DaterangepickerComponent_div_3_div_3_Template_select_ngModelChange_2_listener($event) {\n i0.ɵɵrestoreView(_r13);\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.timeChanged($event, ctx_r2.sideEnum.left));\n });\n i0.ɵɵtemplate(3, DaterangepickerComponent_div_3_div_3_option_3_Template, 2, 3, \"option\", 34);\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(4, \"div\", 32)(5, \"select\", 35);\n i0.ɵɵtwoWayListener(\"ngModelChange\", function DaterangepickerComponent_div_3_div_3_Template_select_ngModelChange_5_listener($event) {\n i0.ɵɵrestoreView(_r13);\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵtwoWayBindingSet(ctx_r2.timepickerVariables.left.selectedMinute, $event) || (ctx_r2.timepickerVariables.left.selectedMinute = $event);\n return i0.ɵɵresetView($event);\n });\n i0.ɵɵlistener(\"ngModelChange\", function DaterangepickerComponent_div_3_div_3_Template_select_ngModelChange_5_listener($event) {\n i0.ɵɵrestoreView(_r13);\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.timeChanged($event, ctx_r2.sideEnum.left));\n });\n i0.ɵɵtemplate(6, DaterangepickerComponent_div_3_div_3_option_6_Template, 2, 3, \"option\", 34);\n i0.ɵɵelementEnd();\n i0.ɵɵelement(7, \"span\", 36)(8, \"span\", 37);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(9, \"div\", 32);\n i0.ɵɵtemplate(10, DaterangepickerComponent_div_3_div_3_select_10_Template, 2, 3, \"select\", 38);\n i0.ɵɵelement(11, \"span\", 36)(12, \"span\", 37);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(13, \"div\", 32);\n i0.ɵɵtemplate(14, DaterangepickerComponent_div_3_div_3_select_14_Template, 5, 3, \"select\", 39);\n i0.ɵɵelement(15, \"span\", 36)(16, \"span\", 37);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"disabled\", !ctx_r2.startDate);\n i0.ɵɵtwoWayProperty(\"ngModel\", ctx_r2.timepickerVariables.left.selectedHour);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r2.timepickerVariables.left.hours);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"disabled\", !ctx_r2.startDate);\n i0.ɵɵtwoWayProperty(\"ngModel\", ctx_r2.timepickerVariables.left.selectedMinute);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r2.timepickerVariables.left.minutes);\n i0.ɵɵadvance(4);\n i0.ɵɵproperty(\"ngIf\", ctx_r2.timePickerSeconds);\n i0.ɵɵadvance(4);\n i0.ɵɵproperty(\"ngIf\", !ctx_r2.timePicker24Hour);\n }\n}\nfunction DaterangepickerComponent_div_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 9)(1, \"div\", 10);\n i0.ɵɵtemplate(2, DaterangepickerComponent_div_3_table_2_Template, 16, 10, \"table\", 11);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(3, DaterangepickerComponent_div_3_div_3_Template, 17, 8, \"div\", 12);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction2(3, _c3, ctx_r2.singleDatePicker, !ctx_r2.singleDatePicker));\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r2.calendarVariables);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r2.timePicker);\n }\n}\nfunction DaterangepickerComponent_div_4_table_2_th_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"th\");\n }\n}\nfunction DaterangepickerComponent_div_4_table_2_ng_container_4_Template(rf, ctx) {\n if (rf & 1) {\n const _r21 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementStart(1, \"th\", 19);\n i0.ɵɵlistener(\"click\", function DaterangepickerComponent_div_4_table_2_ng_container_4_Template_th_click_1_listener() {\n i0.ɵɵrestoreView(_r21);\n const ctx_r2 = i0.ɵɵnextContext(3);\n return i0.ɵɵresetView(ctx_r2.clickPrev(ctx_r2.sideEnum.right));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵelementContainerEnd();\n }\n}\nfunction DaterangepickerComponent_div_4_table_2_ng_container_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelement(1, \"th\");\n i0.ɵɵelementContainerEnd();\n }\n}\nfunction DaterangepickerComponent_div_4_table_2_ng_container_7_option_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"option\", 25);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const m_r23 = ctx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext(4);\n i0.ɵɵproperty(\"disabled\", ctx_r2.calendarVariables.right.dropdowns.inMinYear && ctx_r2.calendarVariables.right.minDate && m_r23 < ctx_r2.calendarVariables.right.minDate.month() || ctx_r2.calendarVariables.right.dropdowns.inMaxYear && ctx_r2.calendarVariables.right.maxDate && m_r23 > ctx_r2.calendarVariables.right.maxDate.month())(\"value\", m_r23)(\"selected\", ctx_r2.calendarVariables.right.dropdowns.currentMonth === m_r23);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r2.locale.monthNames[m_r23], \" \");\n }\n}\nfunction DaterangepickerComponent_div_4_table_2_ng_container_7_option_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"option\", 26);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const y_r24 = ctx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext(4);\n i0.ɵɵproperty(\"selected\", y_r24 === ctx_r2.calendarVariables.right.dropdowns.currentYear);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", y_r24, \" \");\n }\n}\nfunction DaterangepickerComponent_div_4_table_2_ng_container_7_Template(rf, ctx) {\n if (rf & 1) {\n const _r22 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementStart(1, \"div\", 20);\n i0.ɵɵtext(2);\n i0.ɵɵelementStart(3, \"select\", 21);\n i0.ɵɵlistener(\"change\", function DaterangepickerComponent_div_4_table_2_ng_container_7_Template_select_change_3_listener($event) {\n i0.ɵɵrestoreView(_r22);\n const ctx_r2 = i0.ɵɵnextContext(3);\n return i0.ɵɵresetView(ctx_r2.monthChanged($event, ctx_r2.sideEnum.right));\n });\n i0.ɵɵtemplate(4, DaterangepickerComponent_div_4_table_2_ng_container_7_option_4_Template, 2, 4, \"option\", 22);\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(5, \"div\", 20);\n i0.ɵɵtext(6);\n i0.ɵɵelementStart(7, \"select\", 23);\n i0.ɵɵlistener(\"change\", function DaterangepickerComponent_div_4_table_2_ng_container_7_Template_select_change_7_listener($event) {\n i0.ɵɵrestoreView(_r22);\n const ctx_r2 = i0.ɵɵnextContext(3);\n return i0.ɵɵresetView(ctx_r2.yearChanged($event, ctx_r2.sideEnum.right));\n });\n i0.ɵɵtemplate(8, DaterangepickerComponent_div_4_table_2_ng_container_7_option_8_Template, 2, 2, \"option\", 24);\n i0.ɵɵelementEnd()();\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate1(\" \", ctx_r2.locale.monthNames[ctx_r2.calendarVariables == null ? null : ctx_r2.calendarVariables.right == null ? null : ctx_r2.calendarVariables.right.calendar[1][1].month()], \" \");\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngForOf\", ctx_r2.calendarVariables.right.dropdowns.monthArrays);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate1(\" \", ctx_r2.calendarVariables == null ? null : ctx_r2.calendarVariables.right == null ? null : ctx_r2.calendarVariables.right.calendar[1][1].format(\" YYYY\"), \" \");\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngForOf\", ctx_r2.calendarVariables.right.dropdowns.yearArrays);\n }\n}\nfunction DaterangepickerComponent_div_4_table_2_ng_container_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtext(1);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate2(\" \", ctx_r2.locale.monthNames[ctx_r2.calendarVariables == null ? null : ctx_r2.calendarVariables.right == null ? null : ctx_r2.calendarVariables.right.calendar[1][1].month()], \" \", ctx_r2.calendarVariables == null ? null : ctx_r2.calendarVariables.right == null ? null : ctx_r2.calendarVariables.right.calendar[1][1].format(\" YYYY\"), \" \");\n }\n}\nfunction DaterangepickerComponent_div_4_table_2_ng_container_9_Template(rf, ctx) {\n if (rf & 1) {\n const _r25 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementStart(1, \"th\", 27);\n i0.ɵɵlistener(\"click\", function DaterangepickerComponent_div_4_table_2_ng_container_9_Template_th_click_1_listener() {\n i0.ɵɵrestoreView(_r25);\n const ctx_r2 = i0.ɵɵnextContext(3);\n return i0.ɵɵresetView(ctx_r2.clickNext(ctx_r2.sideEnum.right));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵelementContainerEnd();\n }\n}\nfunction DaterangepickerComponent_div_4_table_2_ng_container_10_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelement(1, \"th\");\n i0.ɵɵelementContainerEnd();\n }\n}\nfunction DaterangepickerComponent_div_4_table_2_th_12_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"th\", 28)(1, \"span\");\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(ctx_r2.locale.weekLabel);\n }\n}\nfunction DaterangepickerComponent_div_4_table_2_th_13_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"th\")(1, \"span\");\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const dayofweek_r26 = ctx.$implicit;\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(dayofweek_r26);\n }\n}\nfunction DaterangepickerComponent_div_4_table_2_tr_15_td_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"td\", 28)(1, \"span\");\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const row_r27 = i0.ɵɵnextContext().$implicit;\n const ctx_r2 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(ctx_r2.calendarVariables.right.calendar[row_r27][0].week());\n }\n}\nfunction DaterangepickerComponent_div_4_table_2_tr_15_td_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"td\", 28)(1, \"span\");\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const row_r27 = i0.ɵɵnextContext().$implicit;\n const ctx_r2 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(ctx_r2.calendarVariables.right.calendar[row_r27][0].isoWeek());\n }\n}\nfunction DaterangepickerComponent_div_4_table_2_tr_15_td_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r28 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"td\", 30);\n i0.ɵɵlistener(\"click\", function DaterangepickerComponent_div_4_table_2_tr_15_td_3_Template_td_click_0_listener($event) {\n const col_r29 = i0.ɵɵrestoreView(_r28).$implicit;\n const row_r27 = i0.ɵɵnextContext().$implicit;\n const ctx_r2 = i0.ɵɵnextContext(3);\n return i0.ɵɵresetView(ctx_r2.clickDate($event, ctx_r2.sideEnum.right, row_r27, col_r29));\n })(\"mouseenter\", function DaterangepickerComponent_div_4_table_2_tr_15_td_3_Template_td_mouseenter_0_listener($event) {\n const col_r29 = i0.ɵɵrestoreView(_r28).$implicit;\n const row_r27 = i0.ɵɵnextContext().$implicit;\n const ctx_r2 = i0.ɵɵnextContext(3);\n return i0.ɵɵresetView(ctx_r2.hoverDate($event, ctx_r2.sideEnum.right, row_r27, col_r29));\n });\n i0.ɵɵelementStart(1, \"span\");\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const col_r29 = ctx.$implicit;\n const row_r27 = i0.ɵɵnextContext().$implicit;\n const ctx_r2 = i0.ɵɵnextContext(3);\n i0.ɵɵclassMap(ctx_r2.calendarVariables.right.classes[row_r27][col_r29]);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(ctx_r2.calendarVariables.right.calendar[row_r27][col_r29].date());\n }\n}\nfunction DaterangepickerComponent_div_4_table_2_tr_15_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"tr\");\n i0.ɵɵtemplate(1, DaterangepickerComponent_div_4_table_2_tr_15_td_1_Template, 3, 1, \"td\", 16)(2, DaterangepickerComponent_div_4_table_2_tr_15_td_2_Template, 3, 1, \"td\", 16)(3, DaterangepickerComponent_div_4_table_2_tr_15_td_3_Template, 3, 3, \"td\", 29);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const row_r27 = ctx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext(3);\n i0.ɵɵclassMap(ctx_r2.calendarVariables.right.classes[row_r27].classList);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r2.showWeekNumbers);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r2.showISOWeekNumbers);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r2.calendarVariables.right.calCols);\n }\n}\nfunction DaterangepickerComponent_div_4_table_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"table\", 13)(1, \"thead\")(2, \"tr\");\n i0.ɵɵtemplate(3, DaterangepickerComponent_div_4_table_2_th_3_Template, 1, 0, \"th\", 2)(4, DaterangepickerComponent_div_4_table_2_ng_container_4_Template, 2, 0, \"ng-container\", 2)(5, DaterangepickerComponent_div_4_table_2_ng_container_5_Template, 2, 0, \"ng-container\", 2);\n i0.ɵɵelementStart(6, \"th\", 46);\n i0.ɵɵtemplate(7, DaterangepickerComponent_div_4_table_2_ng_container_7_Template, 9, 4, \"ng-container\", 2)(8, DaterangepickerComponent_div_4_table_2_ng_container_8_Template, 2, 2, \"ng-container\", 2);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(9, DaterangepickerComponent_div_4_table_2_ng_container_9_Template, 2, 0, \"ng-container\", 2)(10, DaterangepickerComponent_div_4_table_2_ng_container_10_Template, 2, 0, \"ng-container\", 2);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(11, \"tr\", 15);\n i0.ɵɵtemplate(12, DaterangepickerComponent_div_4_table_2_th_12_Template, 3, 1, \"th\", 16)(13, DaterangepickerComponent_div_4_table_2_th_13_Template, 3, 1, \"th\", 7);\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(14, \"tbody\");\n i0.ɵɵtemplate(15, DaterangepickerComponent_div_4_table_2_tr_15_Template, 4, 5, \"tr\", 18);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngIf\", ctx_r2.showWeekNumbers || ctx_r2.showISOWeekNumbers);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", (!ctx_r2.calendarVariables.right.minDate || ctx_r2.calendarVariables.right.minDate.isBefore(ctx_r2.calendarVariables.right.calendar.firstDay)) && !ctx_r2.linkedCalendars);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !((!ctx_r2.calendarVariables.right.minDate || ctx_r2.calendarVariables.right.minDate.isBefore(ctx_r2.calendarVariables.right.calendar.firstDay)) && !ctx_r2.linkedCalendars));\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r2.showDropdowns && ctx_r2.calendarVariables.right.dropdowns);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r2.showDropdowns || !ctx_r2.calendarVariables.right.dropdowns);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx_r2.calendarVariables.right.maxDate || ctx_r2.calendarVariables.right.maxDate.isAfter(ctx_r2.calendarVariables.right.calendar.lastDay) && (!ctx_r2.linkedCalendars || ctx_r2.singleDatePicker || true));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !(!ctx_r2.calendarVariables.right.maxDate || ctx_r2.calendarVariables.right.maxDate.isAfter(ctx_r2.calendarVariables.right.calendar.lastDay) && (!ctx_r2.linkedCalendars || ctx_r2.singleDatePicker || true)));\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r2.showWeekNumbers || ctx_r2.showISOWeekNumbers);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r2.locale.daysOfWeek);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngForOf\", ctx_r2.calendarVariables.right.calRows);\n }\n}\nfunction DaterangepickerComponent_div_4_div_3_option_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"option\", 40);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const i_r31 = ctx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"value\", i_r31)(\"disabled\", ctx_r2.timepickerVariables.right.disabledHours.indexOf(i_r31) > -1);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", i_r31, \" \");\n }\n}\nfunction DaterangepickerComponent_div_4_div_3_option_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"option\", 40);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const i_r32 = ctx.$implicit;\n const index_r33 = ctx.index;\n const ctx_r2 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"value\", i_r32)(\"disabled\", ctx_r2.timepickerVariables.right.disabledMinutes.indexOf(i_r32) > -1);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r2.timepickerVariables.right.minutesLabel[index_r33], \" \");\n }\n}\nfunction DaterangepickerComponent_div_4_div_3_select_12_option_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"option\", 40);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const i_r35 = ctx.$implicit;\n const index_r36 = ctx.index;\n const ctx_r2 = i0.ɵɵnextContext(4);\n i0.ɵɵproperty(\"value\", i_r35)(\"disabled\", ctx_r2.timepickerVariables.right.disabledSeconds.indexOf(i_r35) > -1);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r2.timepickerVariables.right.secondsLabel[index_r36], \" \");\n }\n}\nfunction DaterangepickerComponent_div_4_div_3_select_12_Template(rf, ctx) {\n if (rf & 1) {\n const _r34 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"select\", 41);\n i0.ɵɵtwoWayListener(\"ngModelChange\", function DaterangepickerComponent_div_4_div_3_select_12_Template_select_ngModelChange_0_listener($event) {\n i0.ɵɵrestoreView(_r34);\n const ctx_r2 = i0.ɵɵnextContext(3);\n i0.ɵɵtwoWayBindingSet(ctx_r2.timepickerVariables.right.selectedSecond, $event) || (ctx_r2.timepickerVariables.right.selectedSecond = $event);\n return i0.ɵɵresetView($event);\n });\n i0.ɵɵlistener(\"ngModelChange\", function DaterangepickerComponent_div_4_div_3_select_12_Template_select_ngModelChange_0_listener($event) {\n i0.ɵɵrestoreView(_r34);\n const ctx_r2 = i0.ɵɵnextContext(3);\n return i0.ɵɵresetView(ctx_r2.timeChanged($event, ctx_r2.sideEnum.right));\n });\n i0.ɵɵtemplate(1, DaterangepickerComponent_div_4_div_3_select_12_option_1_Template, 2, 3, \"option\", 34);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"disabled\", !ctx_r2.startDate);\n i0.ɵɵtwoWayProperty(\"ngModel\", ctx_r2.timepickerVariables.right.selectedSecond);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r2.timepickerVariables.right.seconds);\n }\n}\nfunction DaterangepickerComponent_div_4_div_3_select_16_Template(rf, ctx) {\n if (rf & 1) {\n const _r37 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"select\", 42);\n i0.ɵɵtwoWayListener(\"ngModelChange\", function DaterangepickerComponent_div_4_div_3_select_16_Template_select_ngModelChange_0_listener($event) {\n i0.ɵɵrestoreView(_r37);\n const ctx_r2 = i0.ɵɵnextContext(3);\n i0.ɵɵtwoWayBindingSet(ctx_r2.timepickerVariables.right.ampmModel, $event) || (ctx_r2.timepickerVariables.right.ampmModel = $event);\n return i0.ɵɵresetView($event);\n });\n i0.ɵɵlistener(\"ngModelChange\", function DaterangepickerComponent_div_4_div_3_select_16_Template_select_ngModelChange_0_listener($event) {\n i0.ɵɵrestoreView(_r37);\n const ctx_r2 = i0.ɵɵnextContext(3);\n return i0.ɵɵresetView(ctx_r2.timeChanged($event, ctx_r2.sideEnum.right));\n });\n i0.ɵɵelementStart(1, \"option\", 43);\n i0.ɵɵtext(2, \"AM\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(3, \"option\", 44);\n i0.ɵɵtext(4, \"PM\");\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(3);\n i0.ɵɵtwoWayProperty(\"ngModel\", ctx_r2.timepickerVariables.right.ampmModel);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"disabled\", ctx_r2.timepickerVariables.right.amDisabled);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"disabled\", ctx_r2.timepickerVariables.right.pmDisabled);\n }\n}\nfunction DaterangepickerComponent_div_4_div_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r30 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 31)(1, \"div\", 32)(2, \"select\", 47);\n i0.ɵɵtwoWayListener(\"ngModelChange\", function DaterangepickerComponent_div_4_div_3_Template_select_ngModelChange_2_listener($event) {\n i0.ɵɵrestoreView(_r30);\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵtwoWayBindingSet(ctx_r2.timepickerVariables.right.selectedHour, $event) || (ctx_r2.timepickerVariables.right.selectedHour = $event);\n return i0.ɵɵresetView($event);\n });\n i0.ɵɵlistener(\"ngModelChange\", function DaterangepickerComponent_div_4_div_3_Template_select_ngModelChange_2_listener($event) {\n i0.ɵɵrestoreView(_r30);\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.timeChanged($event, ctx_r2.sideEnum.right));\n });\n i0.ɵɵtemplate(3, DaterangepickerComponent_div_4_div_3_option_3_Template, 2, 3, \"option\", 34);\n i0.ɵɵelementEnd();\n i0.ɵɵelement(4, \"span\", 36)(5, \"span\", 37);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(6, \"div\", 32)(7, \"select\", 35);\n i0.ɵɵtwoWayListener(\"ngModelChange\", function DaterangepickerComponent_div_4_div_3_Template_select_ngModelChange_7_listener($event) {\n i0.ɵɵrestoreView(_r30);\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵtwoWayBindingSet(ctx_r2.timepickerVariables.right.selectedMinute, $event) || (ctx_r2.timepickerVariables.right.selectedMinute = $event);\n return i0.ɵɵresetView($event);\n });\n i0.ɵɵlistener(\"ngModelChange\", function DaterangepickerComponent_div_4_div_3_Template_select_ngModelChange_7_listener($event) {\n i0.ɵɵrestoreView(_r30);\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.timeChanged($event, ctx_r2.sideEnum.right));\n });\n i0.ɵɵtemplate(8, DaterangepickerComponent_div_4_div_3_option_8_Template, 2, 3, \"option\", 34);\n i0.ɵɵelementEnd();\n i0.ɵɵelement(9, \"span\", 36)(10, \"span\", 37);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(11, \"div\", 32);\n i0.ɵɵtemplate(12, DaterangepickerComponent_div_4_div_3_select_12_Template, 2, 3, \"select\", 38);\n i0.ɵɵelement(13, \"span\", 36)(14, \"span\", 37);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(15, \"div\", 32);\n i0.ɵɵtemplate(16, DaterangepickerComponent_div_4_div_3_select_16_Template, 5, 3, \"select\", 39);\n i0.ɵɵelement(17, \"span\", 36)(18, \"span\", 37);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"disabled\", !ctx_r2.startDate);\n i0.ɵɵtwoWayProperty(\"ngModel\", ctx_r2.timepickerVariables.right.selectedHour);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r2.timepickerVariables.right.hours);\n i0.ɵɵadvance(4);\n i0.ɵɵproperty(\"disabled\", !ctx_r2.startDate);\n i0.ɵɵtwoWayProperty(\"ngModel\", ctx_r2.timepickerVariables.right.selectedMinute);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r2.timepickerVariables.right.minutes);\n i0.ɵɵadvance(4);\n i0.ɵɵproperty(\"ngIf\", ctx_r2.timePickerSeconds);\n i0.ɵɵadvance(4);\n i0.ɵɵproperty(\"ngIf\", !ctx_r2.timePicker24Hour);\n }\n}\nfunction DaterangepickerComponent_div_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 45)(1, \"div\", 10);\n i0.ɵɵtemplate(2, DaterangepickerComponent_div_4_table_2_Template, 16, 10, \"table\", 11);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(3, DaterangepickerComponent_div_4_div_3_Template, 19, 8, \"div\", 12);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r2.calendarVariables);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r2.timePicker);\n }\n}\nfunction DaterangepickerComponent_div_5_button_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r39 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 53);\n i0.ɵɵlistener(\"click\", function DaterangepickerComponent_div_5_button_2_Template_button_click_0_listener() {\n i0.ɵɵrestoreView(_r39);\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.clear());\n });\n i0.ɵɵtext(1);\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(2, \"svg\", 54);\n i0.ɵɵelement(3, \"path\", 55);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"title\", ctx_r2.locale.clearLabel);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r2.locale.clearLabel, \" \");\n }\n}\nfunction DaterangepickerComponent_div_5_button_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r40 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 56);\n i0.ɵɵlistener(\"click\", function DaterangepickerComponent_div_5_button_3_Template_button_click_0_listener($event) {\n i0.ɵɵrestoreView(_r40);\n const ctx_r2 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r2.clickCancel($event));\n });\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r2.locale.cancelLabel);\n }\n}\nfunction DaterangepickerComponent_div_5_Template(rf, ctx) {\n if (rf & 1) {\n const _r38 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 48)(1, \"div\", 49);\n i0.ɵɵtemplate(2, DaterangepickerComponent_div_5_button_2_Template, 4, 2, \"button\", 50)(3, DaterangepickerComponent_div_5_button_3_Template, 2, 1, \"button\", 51);\n i0.ɵɵelementStart(4, \"button\", 52);\n i0.ɵɵlistener(\"click\", function DaterangepickerComponent_div_5_Template_button_click_4_listener($event) {\n i0.ɵɵrestoreView(_r38);\n const ctx_r2 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r2.clickApply($event));\n });\n i0.ɵɵtext(5);\n i0.ɵɵelementEnd()()();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r2.showClearButton);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r2.showCancel);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"disabled\", ctx_r2.applyBtn.disabled);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r2.locale.applyLabel);\n }\n}\ndayjs.extend(localeData);\nconst LOCALE_CONFIG = new InjectionToken('daterangepicker.config');\nconst DefaultLocaleConfig = {\n direction: 'ltr',\n separator: ' - ',\n weekLabel: 'W',\n applyLabel: 'Apply',\n cancelLabel: 'Cancel',\n clearLabel: 'Clear',\n customRangeLabel: 'Custom range',\n daysOfWeek: dayjs.weekdaysMin(),\n monthNames: dayjs.monthsShort(),\n firstDay: dayjs.localeData().firstDayOfWeek()\n};\nclass LocaleService {\n constructor(configHolder) {\n this.configHolder = configHolder;\n }\n get config() {\n if (!this.configHolder) {\n return DefaultLocaleConfig;\n }\n return {\n ...DefaultLocaleConfig,\n ...this.configHolder\n };\n }\n configWithLocale(locale) {\n if (!this.configHolder && !locale) {\n return DefaultLocaleConfig;\n }\n return {\n ...DefaultLocaleConfig,\n ...{\n daysOfWeek: locale.weekdaysMin,\n monthNames: locale.monthsShort,\n firstDay: locale.weekStart\n },\n ...this.configHolder\n };\n }\n}\nLocaleService.ɵfac = function LocaleService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || LocaleService)(i0.ɵɵinject(LOCALE_CONFIG));\n};\nLocaleService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: LocaleService,\n factory: LocaleService.ɵfac\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(LocaleService, [{\n type: Injectable\n }], function () {\n return [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [LOCALE_CONFIG]\n }]\n }];\n }, null);\n})();\ndayjs.extend(localeData);\ndayjs.extend(LocalizedFormat);\ndayjs.extend(isoWeek);\ndayjs.extend(week);\ndayjs.extend(customParseFormat);\ndayjs.extend(utc);\nvar SideEnum;\n(function (SideEnum) {\n SideEnum[\"left\"] = \"left\";\n SideEnum[\"right\"] = \"right\";\n})(SideEnum || (SideEnum = {}));\nclass DaterangepickerComponent {\n constructor(el, ref, localeHolderService) {\n this.el = el;\n this.ref = ref;\n this.localeHolderService = localeHolderService;\n this.startDate = dayjs().utc(true).startOf('day');\n this.endDate = dayjs().utc(true).endOf('day');\n this.dateLimit = null;\n this.autoApply = false;\n this.singleDatePicker = false;\n this.showDropdowns = false;\n this.showWeekNumbers = false;\n this.showISOWeekNumbers = false;\n this.linkedCalendars = false;\n this.autoUpdateInput = true;\n this.alwaysShowCalendars = false;\n this.maxSpan = false;\n this.lockStartDate = false;\n this.timePicker = false;\n this.timePicker24Hour = false;\n this.timePickerIncrement = 1;\n this.timePickerSeconds = false;\n this.showClearButton = false;\n this.firstMonthDayClass = null;\n this.lastMonthDayClass = null;\n this.emptyWeekRowClass = null;\n this.emptyWeekColumnClass = null;\n this.firstDayOfNextMonthClass = null;\n this.lastDayOfPreviousMonthClass = null;\n this.showCancel = false;\n this.keepCalendarOpeningWithRange = false;\n this.showRangeLabelOnInput = false;\n this.customRangeDirection = false;\n this.closeOnAutoApply = true;\n this.calendarVariables = {};\n this.timepickerVariables = {};\n this.daterangepicker = {\n start: new FormControl(),\n end: new FormControl()\n };\n this.applyBtn = {\n disabled: false\n };\n this.sideEnum = SideEnum;\n this.rangesArray = [];\n this.isShown = false;\n this.inline = true;\n this.leftCalendar = {\n month: null,\n calendar: []\n };\n this.rightCalendar = {\n month: null,\n calendar: []\n };\n this.showCalInRanges = false;\n this.nowHoveredDate = null;\n this.pickingDate = false;\n this.localeHolder = {};\n this.rangesHolder = {};\n this.cachedVersion = {\n start: null,\n end: null\n };\n this.clickNext = side => {\n if (side === SideEnum.left) {\n this.leftCalendar.month = this.leftCalendar.month.add(1, 'month');\n } else {\n this.rightCalendar.month = this.rightCalendar.month.add(1, 'month');\n if (this.linkedCalendars) {\n this.leftCalendar.month = this.leftCalendar.month.add(1, 'month');\n }\n }\n this.updateCalendars();\n };\n this.choosedDate = new EventEmitter();\n this.rangeClicked = new EventEmitter();\n this.datesUpdated = new EventEmitter();\n this.startDateChanged = new EventEmitter();\n this.endDateChanged = new EventEmitter();\n this.cancelClicked = new EventEmitter();\n this.clearClicked = new EventEmitter();\n }\n get minDate() {\n return this.minDateHolder;\n }\n set minDate(value) {\n if (dayjs.isDayjs(value)) {\n this.minDateHolder = value;\n } else if (typeof value === 'string') {\n this.minDateHolder = dayjs(value).utc(true);\n } else {\n this.minDateHolder = null;\n }\n }\n get locale() {\n return this.localeHolder;\n }\n set locale(value) {\n this.localeHolder = {\n ...this.localeHolderService.config,\n ...value\n };\n if (value.locale) {\n this.localeHolder = this.localeHolderService.configWithLocale(value.locale);\n }\n }\n get ranges() {\n return this.rangesHolder;\n }\n set ranges(value) {\n this.rangesHolder = value;\n this.renderRanges();\n }\n get maxDate() {\n return this.maxDateHolder;\n }\n set maxDate(value) {\n if (dayjs.isDayjs(value)) {\n this.maxDateHolder = value;\n } else if (typeof value === 'string') {\n this.maxDateHolder = dayjs(value).utc(true);\n } else {\n this.maxDateHolder = null;\n }\n }\n isInvalidDate(date) {\n return false;\n }\n isCustomDate(date) {\n return false;\n }\n isTooltipDate(date) {\n return null;\n }\n handleInternalClick(e) {\n return e.stopPropagation();\n }\n ngOnChanges(changes) {\n if ((changes.startDate || changes.endDate) && this.inline) {\n this.updateView();\n }\n }\n ngOnInit() {\n this.buildLocale();\n const daysOfWeek = [...this.locale.daysOfWeek];\n this.locale.firstDay = this.locale.firstDay % 7;\n if (this.locale.firstDay !== 0) {\n let iterator = this.locale.firstDay;\n while (iterator > 0) {\n daysOfWeek.push(daysOfWeek.shift());\n iterator--;\n }\n }\n this.locale.daysOfWeek = daysOfWeek;\n if (this.inline) {\n this.cachedVersion.start = this.startDate.clone();\n this.cachedVersion.end = this.endDate.clone();\n }\n if (this.startDate && this.timePicker) {\n this.setStartDate(this.startDate);\n this.renderTimePicker(SideEnum.left);\n }\n if (this.endDate && this.timePicker) {\n this.setEndDate(this.endDate);\n this.renderTimePicker(SideEnum.right);\n }\n this.updateMonthsInView();\n this.renderCalendar(SideEnum.left);\n this.renderCalendar(SideEnum.right);\n this.renderRanges();\n }\n renderRanges() {\n this.rangesArray = [];\n let start;\n let end;\n if (typeof this.ranges === 'object') {\n for (const range in this.ranges) {\n if (this.ranges[range]) {\n if (typeof this.ranges[range][0] === 'string') {\n start = dayjs(this.ranges[range][0], this.locale.format).utc(true);\n } else {\n start = dayjs(this.ranges[range][0]).utc(true);\n }\n if (typeof this.ranges[range][1] === 'string') {\n end = dayjs(this.ranges[range][1], this.locale.format).utc(true);\n } else {\n end = dayjs(this.ranges[range][1]).utc(true);\n }\n if (this.minDate && start.isBefore(this.minDate)) {\n start = this.minDate.clone();\n }\n let maxDate = this.maxDate;\n if (this.maxSpan && maxDate && start.clone().add(this.maxSpan).isAfter(maxDate)) {\n maxDate = start.clone().add(this.maxSpan);\n }\n if (maxDate && end.isAfter(maxDate)) {\n end = maxDate.clone();\n }\n if (this.minDate && end.isBefore(this.minDate, this.timePicker ? 'minute' : 'day') || maxDate && start.isAfter(maxDate, this.timePicker ? 'minute' : 'day')) {\n continue;\n }\n const elem = document.createElement('textarea');\n elem.innerHTML = range;\n const rangeHtml = elem.value;\n this.ranges[rangeHtml] = [start, end];\n }\n }\n for (const range in this.ranges) {\n if (this.ranges[range]) {\n this.rangesArray.push(range);\n }\n }\n if (this.showCustomRangeLabel) {\n this.rangesArray.push(this.locale.customRangeLabel);\n }\n this.showCalInRanges = !this.rangesArray.length || this.alwaysShowCalendars;\n if (!this.timePicker) {\n this.startDate = this.startDate.startOf('day');\n this.endDate = this.endDate.endOf('day');\n }\n }\n }\n renderTimePicker(side) {\n let selected;\n let minDate;\n const maxDate = this.maxDate;\n if (side === SideEnum.left) {\n selected = this.startDate.clone();\n minDate = this.minDate;\n } else if (side === SideEnum.right && this.endDate) {\n selected = this.endDate.clone();\n minDate = this.startDate;\n } else if (side === SideEnum.right && !this.endDate) {\n selected = this.getDateWithTime(this.startDate, SideEnum.right);\n if (selected.isBefore(this.startDate)) {\n selected = this.startDate.clone();\n }\n minDate = this.startDate;\n }\n const start = this.timePicker24Hour ? 0 : 1;\n const end = this.timePicker24Hour ? 23 : 12;\n this.timepickerVariables[side] = {\n hours: [],\n minutes: [],\n minutesLabel: [],\n seconds: [],\n secondsLabel: [],\n disabledHours: [],\n disabledMinutes: [],\n disabledSeconds: [],\n selectedHour: 0,\n selectedMinute: 0,\n selectedSecond: 0,\n selected\n };\n for (let i = start; i <= end; i++) {\n let iIn24 = i;\n if (!this.timePicker24Hour) {\n iIn24 = selected.hour() >= 12 ? i === 12 ? 12 : i + 12 : i === 12 ? 0 : i;\n }\n const time = selected.clone().hour(iIn24);\n let disabled = false;\n if (minDate && time.minute(59).isBefore(minDate)) {\n disabled = true;\n }\n if (maxDate && time.minute(0).isAfter(maxDate)) {\n disabled = true;\n }\n this.timepickerVariables[side].hours.push(i);\n if (iIn24 === selected.hour() && !disabled) {\n this.timepickerVariables[side].selectedHour = i;\n } else if (disabled) {\n this.timepickerVariables[side].disabledHours.push(i);\n }\n }\n for (let i = 0; i < 60; i += this.timePickerIncrement) {\n const padded = i < 10 ? `0${i}` : `${i}`;\n const time = selected.clone().minute(i);\n let disabled = false;\n if (minDate && time.second(59).isBefore(minDate)) {\n disabled = true;\n }\n if (maxDate && time.second(0).isAfter(maxDate)) {\n disabled = true;\n }\n this.timepickerVariables[side].minutes.push(i);\n this.timepickerVariables[side].minutesLabel.push(padded);\n if (selected.minute() === i && !disabled) {\n this.timepickerVariables[side].selectedMinute = i;\n } else if (disabled) {\n this.timepickerVariables[side].disabledMinutes.push(i);\n }\n }\n if (this.timePickerSeconds) {\n for (let i = 0; i < 60; i++) {\n const padded = i < 10 ? `0${i}` : `${i}`;\n const time = selected.clone().second(i);\n let disabled = false;\n if (minDate && time.isBefore(minDate)) {\n disabled = true;\n }\n if (maxDate && time.isAfter(maxDate)) {\n disabled = true;\n }\n this.timepickerVariables[side].seconds.push(i);\n this.timepickerVariables[side].secondsLabel.push(padded);\n if (selected.second() === i && !disabled) {\n this.timepickerVariables[side].selectedSecond = i;\n } else if (disabled) {\n this.timepickerVariables[side].disabledSeconds.push(i);\n }\n }\n }\n if (!this.timePicker24Hour) {\n if (minDate && selected.clone().hour(12).minute(0).second(0).isBefore(minDate)) {\n this.timepickerVariables[side].amDisabled = true;\n }\n if (maxDate && selected.clone().hour(0).minute(0).second(0).isAfter(maxDate)) {\n this.timepickerVariables[side].pmDisabled = true;\n }\n if (selected.hour() >= 12) {\n this.timepickerVariables[side].ampmModel = 'PM';\n } else {\n this.timepickerVariables[side].ampmModel = 'AM';\n }\n }\n this.timepickerVariables[side].selected = selected;\n }\n renderCalendar(side) {\n const mainCalendar = side === SideEnum.left ? this.leftCalendar : this.rightCalendar;\n const month = mainCalendar.month.month();\n const year = mainCalendar.month.year();\n const hour = mainCalendar.month.hour();\n const minute = mainCalendar.month.minute();\n const second = mainCalendar.month.second();\n const daysInMonth = dayjs(new Date(year, month)).utc(true).daysInMonth();\n const firstDay = dayjs(new Date(year, month, 1)).utc(true);\n const lastDay = dayjs(new Date(year, month, daysInMonth)).utc(true);\n const lastMonth = dayjs(firstDay).utc(true).subtract(1, 'month').month();\n const lastYear = dayjs(firstDay).utc(true).subtract(1, 'month').year();\n const daysInLastMonth = dayjs(new Date(lastYear, lastMonth)).utc(true).daysInMonth();\n const dayOfWeek = firstDay.day();\n const calendar = [];\n calendar.firstDay = firstDay;\n calendar.lastDay = lastDay;\n for (let i = 0; i < 6; i++) {\n calendar[i] = [];\n }\n let startDay = daysInLastMonth - dayOfWeek + this.locale.firstDay + 1;\n if (startDay > daysInLastMonth) {\n startDay -= 7;\n }\n if (dayOfWeek === this.locale.firstDay) {\n startDay = daysInLastMonth - 6;\n }\n let curDate = dayjs(new Date(lastYear, lastMonth, startDay, 12, minute, second)).utc(true);\n for (let i = 0, col = 0, row = 0; i < 42; i++, col++, curDate = dayjs(curDate).utc(true).add(24, 'hours')) {\n if (i > 0 && col % 7 === 0) {\n col = 0;\n row++;\n }\n calendar[row][col] = curDate.clone().hour(hour).minute(minute).second(second);\n curDate = curDate.hour(12);\n if (this.minDate && calendar[row][col].format('YYYY-MM-DD') === this.minDate.format('YYYY-MM-DD') && calendar[row][col].isBefore(this.minDate) && side === 'left') {\n calendar[row][col] = this.minDate.clone();\n }\n if (this.maxDate && calendar[row][col].format('YYYY-MM-DD') === this.maxDate.format('YYYY-MM-DD') && calendar[row][col].isAfter(this.maxDate) && side === 'right') {\n calendar[row][col] = this.maxDate.clone();\n }\n }\n if (side === SideEnum.left) {\n this.leftCalendar.calendar = calendar;\n } else {\n this.rightCalendar.calendar = calendar;\n }\n let minDate = side === 'left' ? this.minDate : this.startDate;\n let maxDate = this.maxDate;\n if (this.endDate === null && this.dateLimit) {\n const maxLimit = this.startDate.clone().add(this.dateLimit, 'day').endOf('day');\n if (!maxDate || maxLimit.isBefore(maxDate)) {\n maxDate = maxLimit;\n }\n if (this.customRangeDirection) {\n minDate = this.minDate;\n const minLimit = this.startDate.clone().subtract(this.dateLimit, 'day').endOf('day');\n if (!minDate || minLimit.isAfter(minDate)) {\n minDate = minLimit;\n }\n }\n }\n this.calendarVariables[side] = {\n month,\n year,\n hour,\n minute,\n second,\n daysInMonth,\n firstDay,\n lastDay,\n lastMonth,\n lastYear,\n daysInLastMonth,\n dayOfWeek,\n calRows: Array.from(Array(6).keys()),\n calCols: Array.from(Array(7).keys()),\n classes: {},\n minDate,\n maxDate,\n calendar\n };\n if (this.showDropdowns) {\n const currentMonth = calendar[1][1].month();\n const currentYear = calendar[1][1].year();\n const realCurrentYear = dayjs().utc(true).year();\n const maxYear = maxDate && maxDate.year() || realCurrentYear + 5;\n const minYear = minDate && minDate.year() || realCurrentYear - 50;\n const inMinYear = currentYear === minYear;\n const inMaxYear = currentYear === maxYear;\n const years = [];\n for (let y = minYear; y <= maxYear; y++) {\n years.push(y);\n }\n this.calendarVariables[side].dropdowns = {\n currentMonth,\n currentYear,\n maxYear,\n minYear,\n inMinYear,\n inMaxYear,\n monthArrays: Array.from(Array(12).keys()),\n yearArrays: years\n };\n }\n this.buildCells(calendar, side);\n }\n setStartDate(startDate) {\n if (typeof startDate === 'string') {\n this.startDate = dayjs(startDate, this.locale.format).utc(true);\n }\n if (typeof startDate === 'object') {\n this.pickingDate = true;\n this.startDate = dayjs(startDate).utc(true);\n }\n if (!this.timePicker) {\n this.pickingDate = true;\n this.startDate = this.startDate.startOf('day');\n }\n if (this.timePicker && this.timePickerIncrement) {\n this.startDate = this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\n }\n if (this.minDate && this.startDate.isBefore(this.minDate)) {\n this.startDate = this.minDate.clone();\n if (this.timePicker && this.timePickerIncrement) {\n this.startDate = this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\n }\n }\n if (this.maxDate && this.startDate.isAfter(this.maxDate)) {\n this.startDate = this.maxDate.clone();\n if (this.timePicker && this.timePickerIncrement) {\n this.startDate = this.startDate.minute(Math.floor(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\n }\n }\n if (!this.isShown) {\n this.updateElement();\n }\n this.startDateChanged.emit({\n startDate: this.startDate\n });\n this.updateMonthsInView();\n }\n setEndDate(endDate) {\n if (typeof endDate === 'string') {\n this.endDate = dayjs(endDate, this.locale.format).utc(true);\n }\n if (typeof endDate === 'object') {\n this.pickingDate = false;\n this.endDate = dayjs(endDate).utc(true);\n }\n if (!this.timePicker) {\n this.pickingDate = false;\n this.endDate = this.endDate.add(1, 'd').startOf('day').subtract(1, 'second');\n }\n if (this.timePicker && this.timePickerIncrement) {\n this.endDate.minute(Math.round(this.endDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\n }\n if (this.endDate.isBefore(this.startDate)) {\n this.endDate = this.startDate.clone();\n }\n if (this.maxDate && this.endDate.isAfter(this.maxDate)) {\n this.endDate = this.maxDate.clone();\n }\n if (this.dateLimit && this.startDate.clone().add(this.dateLimit, 'day').isBefore(this.endDate)) {\n this.endDate = this.startDate.clone().add(this.dateLimit, 'day');\n }\n if (!this.isShown) {}\n this.endDateChanged.emit({\n endDate: this.endDate\n });\n this.updateMonthsInView();\n }\n updateView() {\n if (this.timePicker) {\n this.renderTimePicker(SideEnum.left);\n this.renderTimePicker(SideEnum.right);\n }\n this.updateMonthsInView();\n this.updateCalendars();\n }\n updateMonthsInView() {\n if (this.endDate) {\n if (!this.singleDatePicker && this.leftCalendar.month && this.rightCalendar.month && (this.startDate && this.leftCalendar && this.startDate.format('YYYY-MM') === this.leftCalendar.month.format('YYYY-MM') || this.startDate && this.rightCalendar && this.startDate.format('YYYY-MM') === this.rightCalendar.month.format('YYYY-MM')) && (this.endDate.format('YYYY-MM') === this.leftCalendar.month.format('YYYY-MM') || this.endDate.format('YYYY-MM') === this.rightCalendar.month.format('YYYY-MM'))) {\n return;\n }\n if (this.startDate) {\n this.leftCalendar.month = this.startDate.clone().date(2);\n if (!this.linkedCalendars && (this.endDate.month() !== this.startDate.month() || this.endDate.year() !== this.startDate.year())) {\n this.rightCalendar.month = this.endDate.clone().date(2);\n } else {\n this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month');\n }\n }\n } else {\n if (this.leftCalendar.month.format('YYYY-MM') !== this.startDate.format('YYYY-MM') && this.rightCalendar.month.format('YYYY-MM') !== this.startDate.format('YYYY-MM')) {\n this.leftCalendar.month = this.startDate.clone().date(2);\n this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month');\n }\n }\n if (this.maxDate && this.linkedCalendars && !this.singleDatePicker && this.rightCalendar.month > this.maxDate) {\n this.rightCalendar.month = this.maxDate.clone().date(2);\n this.leftCalendar.month = this.maxDate.clone().date(2).subtract(1, 'month');\n }\n }\n updateCalendars() {\n this.renderCalendar(SideEnum.left);\n this.renderCalendar(SideEnum.right);\n if (this.endDate === null) {\n return;\n }\n this.calculateChosenLabel();\n }\n updateElement() {\n const format = this.locale.displayFormat ? this.locale.displayFormat : this.locale.format;\n if (!this.singleDatePicker && this.autoUpdateInput) {\n if (this.startDate && this.endDate) {\n if (this.rangesArray.length && this.showRangeLabelOnInput === true && this.chosenRange && this.locale.customRangeLabel !== this.chosenRange) {\n this.chosenLabel = this.chosenRange;\n } else {\n this.chosenLabel = this.startDate.format(format) + this.locale.separator + this.endDate.format(format);\n }\n }\n } else if (this.autoUpdateInput) {\n this.chosenLabel = this.startDate.format(format);\n }\n }\n remove() {\n this.isShown = false;\n }\n calculateChosenLabel() {\n if (!this.locale || !this.locale.separator) {\n this.buildLocale();\n }\n let customRange = true;\n let i = 0;\n if (this.rangesArray.length > 0) {\n for (const range in this.ranges) {\n if (this.ranges[range]) {\n if (this.timePicker) {\n const format = this.timePickerSeconds ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD HH:mm';\n if (this.startDate.format(format) === this.ranges[range][0].format(format) && this.endDate.format(format) === this.ranges[range][1].format(format)) {\n customRange = false;\n this.chosenRange = this.rangesArray[i];\n break;\n }\n } else {\n if (this.startDate.format('YYYY-MM-DD') === this.ranges[range][0].format('YYYY-MM-DD') && this.endDate.format('YYYY-MM-DD') === this.ranges[range][1].format('YYYY-MM-DD')) {\n customRange = false;\n this.chosenRange = this.rangesArray[i];\n break;\n }\n }\n i++;\n }\n }\n if (customRange) {\n if (this.showCustomRangeLabel) {\n this.chosenRange = this.locale.customRangeLabel;\n } else {\n this.chosenRange = null;\n }\n this.showCalInRanges = true;\n }\n }\n this.updateElement();\n }\n clickApply(e) {\n if (!this.singleDatePicker && this.startDate && !this.endDate) {\n this.endDate = this.getDateWithTime(this.startDate, SideEnum.right);\n this.calculateChosenLabel();\n }\n if (this.isInvalidDate && this.startDate && this.endDate) {\n let d = this.startDate.clone();\n while (d.isBefore(this.endDate)) {\n if (this.isInvalidDate(d)) {\n this.endDate = d.subtract(1, 'days');\n this.calculateChosenLabel();\n break;\n }\n d = d.add(1, 'days');\n }\n }\n if (this.chosenLabel) {\n this.choosedDate.emit({\n chosenLabel: this.chosenLabel,\n startDate: this.startDate,\n endDate: this.endDate\n });\n }\n this.datesUpdated.emit({\n startDate: this.startDate,\n endDate: this.endDate\n });\n if (e || this.closeOnAutoApply && !e) {\n this.hide();\n }\n }\n clickCancel(e) {\n this.startDate = this.cachedVersion.start;\n this.endDate = this.cachedVersion.end;\n if (this.inline) {\n this.updateView();\n }\n this.cancelClicked.emit();\n this.hide();\n }\n monthChanged(monthEvent, side) {\n const year = this.calendarVariables[side].dropdowns.currentYear;\n const month = parseInt(monthEvent.target.value, 10);\n this.monthOrYearChanged(month, year, side);\n }\n yearChanged(yearEvent, side) {\n const month = this.calendarVariables[side].dropdowns.currentMonth;\n const year = parseInt(yearEvent.target.value, 10);\n this.monthOrYearChanged(month, year, side);\n }\n timeChanged(timeEvent, side) {\n let hour = parseInt(String(this.timepickerVariables[side].selectedHour), 10);\n const minute = parseInt(String(this.timepickerVariables[side].selectedMinute), 10);\n const second = this.timePickerSeconds ? parseInt(String(this.timepickerVariables[side].selectedSecond), 10) : 0;\n if (!this.timePicker24Hour) {\n const ampm = this.timepickerVariables[side].ampmModel;\n if (ampm === 'PM' && hour < 12) {\n hour += 12;\n }\n if (ampm === 'AM' && hour === 12) {\n hour = 0;\n }\n }\n if (side === SideEnum.left) {\n let start = this.startDate.clone();\n start = start.hour(hour);\n start = start.minute(minute);\n start = start.second(second);\n this.setStartDate(start);\n if (this.singleDatePicker) {\n this.endDate = this.startDate.clone();\n } else if (this.endDate && this.endDate.format('YYYY-MM-DD') === start.format('YYYY-MM-DD') && this.endDate.isBefore(start)) {\n this.setEndDate(start.clone());\n } else if (!this.endDate && this.timePicker) {\n const startClone = this.getDateWithTime(start, SideEnum.right);\n if (startClone.isBefore(start)) {\n this.timepickerVariables[SideEnum.right].selectedHour = hour;\n this.timepickerVariables[SideEnum.right].selectedMinute = minute;\n this.timepickerVariables[SideEnum.right].selectedSecond = second;\n }\n }\n } else if (this.endDate) {\n let end = this.endDate.clone();\n end = end.hour(hour);\n end = end.minute(minute);\n end = end.second(second);\n this.setEndDate(end);\n }\n this.updateCalendars();\n this.renderTimePicker(SideEnum.left);\n this.renderTimePicker(SideEnum.right);\n if (this.autoApply) {\n this.clickApply();\n }\n }\n monthOrYearChanged(month, year, side) {\n const isLeft = side === SideEnum.left;\n let newMonth = month;\n let newYear = year;\n if (!isLeft) {\n if (newYear < this.startDate.year() || newYear === this.startDate.year() && newMonth < this.startDate.month()) {\n newMonth = this.startDate.month();\n newYear = this.startDate.year();\n }\n }\n if (this.minDate) {\n if (newYear < this.minDate.year() || newYear === this.minDate.year() && newMonth < this.minDate.month()) {\n newMonth = this.minDate.month();\n newYear = this.minDate.year();\n }\n }\n if (this.maxDate) {\n if (newYear > this.maxDate.year() || newYear === this.maxDate.year() && newMonth > this.maxDate.month()) {\n newMonth = this.maxDate.month();\n newYear = this.maxDate.year();\n }\n }\n this.calendarVariables[side].dropdowns.currentYear = newYear;\n this.calendarVariables[side].dropdowns.currentMonth = newMonth;\n if (isLeft) {\n this.leftCalendar.month = this.leftCalendar.month.month(newMonth).year(newYear);\n if (this.linkedCalendars) {\n this.rightCalendar.month = this.leftCalendar.month.clone().add(1, 'month');\n }\n } else {\n this.rightCalendar.month = this.rightCalendar.month.month(newMonth).year(newYear);\n if (this.linkedCalendars) {\n this.leftCalendar.month = this.rightCalendar.month.clone().subtract(1, 'month');\n }\n }\n this.updateCalendars();\n }\n clickPrev(side) {\n if (side === SideEnum.left) {\n this.leftCalendar.month = this.leftCalendar.month.subtract(1, 'month');\n if (this.linkedCalendars) {\n this.rightCalendar.month = this.rightCalendar.month.subtract(1, 'month');\n }\n } else {\n this.rightCalendar.month = this.rightCalendar.month.subtract(1, 'month');\n }\n this.updateCalendars();\n }\n hoverDate(e, side, row, col) {\n const leftCalDate = this.calendarVariables.left.calendar[row][col];\n const rightCalDate = this.calendarVariables.right.calendar[row][col];\n if (this.pickingDate) {\n this.nowHoveredDate = side === SideEnum.left ? leftCalDate : rightCalDate;\n this.renderCalendar(SideEnum.left);\n this.renderCalendar(SideEnum.right);\n }\n }\n clickDate(e, side, row, col) {\n if (e.target.tagName === 'TD') {\n if (!e.target.classList.contains('available')) {\n return;\n }\n } else if (e.target.tagName === 'SPAN') {\n if (!e.target.parentElement.classList.contains('available')) {\n return;\n }\n }\n if (this.rangesArray.length) {\n this.chosenRange = this.locale.customRangeLabel;\n }\n let date = side === SideEnum.left ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col];\n if ((this.endDate || date.isBefore(this.startDate, 'day') && this.customRangeDirection === false) && this.lockStartDate === false) {\n if (this.timePicker) {\n date = this.getDateWithTime(date, SideEnum.left);\n }\n this.endDate = null;\n this.setStartDate(date.clone());\n } else if (!this.endDate && date.isBefore(this.startDate) && this.customRangeDirection === false) {\n this.setEndDate(this.startDate.clone());\n } else {\n if (this.timePicker) {\n date = this.getDateWithTime(date, SideEnum.right);\n }\n if (date.isBefore(this.startDate, 'day') === true && this.customRangeDirection === true) {\n this.setEndDate(this.startDate);\n this.setStartDate(date.clone());\n } else {\n this.setEndDate(date.clone());\n }\n if (this.autoApply) {\n this.calculateChosenLabel();\n }\n }\n if (this.singleDatePicker) {\n this.setEndDate(this.startDate);\n this.updateElement();\n if (this.autoApply) {\n this.clickApply();\n }\n }\n this.updateView();\n if (this.autoApply && this.startDate && this.endDate) {\n this.clickApply();\n }\n e.stopPropagation();\n }\n clickRange(e, label) {\n this.chosenRange = label;\n if (label === this.locale.customRangeLabel) {\n this.isShown = true;\n this.showCalInRanges = true;\n } else {\n const dates = this.ranges[label];\n console.log('1 ', dates);\n this.startDate = dates[0].clone();\n this.endDate = dates[1].clone();\n if (this.showRangeLabelOnInput && label !== this.locale.customRangeLabel) {\n this.chosenLabel = label;\n } else {\n this.calculateChosenLabel();\n }\n this.showCalInRanges = !this.rangesArray.length || this.alwaysShowCalendars;\n if (!this.timePicker) {\n this.startDate = this.startDate.startOf('day');\n this.endDate = this.endDate.endOf('day');\n }\n if (!this.alwaysShowCalendars) {\n this.isShown = false;\n }\n this.rangeClicked.emit({\n label,\n dates\n });\n if (!this.keepCalendarOpeningWithRange || this.autoApply) {\n this.clickApply();\n } else {\n if (!this.alwaysShowCalendars) {\n return this.clickApply();\n }\n if (this.maxDate && this.maxDate.isSame(dates[0], 'month')) {\n this.rightCalendar.month = this.rightCalendar.month.month(dates[0].month());\n this.rightCalendar.month = this.rightCalendar.month.year(dates[0].year());\n this.leftCalendar.month = this.leftCalendar.month.month(dates[0].month() - 1);\n this.leftCalendar.month = this.leftCalendar.month.year(dates[1].year());\n } else {\n this.leftCalendar.month = this.leftCalendar.month.month(dates[0].month());\n this.leftCalendar.month = this.leftCalendar.month.year(dates[0].year());\n const nextMonth = !this.linkedCalendars ? dates[1].clone() : dates[0].clone().add(1, 'month');\n this.rightCalendar.month = this.rightCalendar.month.month(nextMonth.month());\n this.rightCalendar.month = this.rightCalendar.month.year(nextMonth.year());\n }\n this.updateCalendars();\n if (this.timePicker) {\n this.renderTimePicker(SideEnum.left);\n this.renderTimePicker(SideEnum.right);\n }\n }\n }\n }\n show(e) {\n if (this.isShown) {\n return;\n }\n this.cachedVersion.start = this.startDate.clone();\n this.cachedVersion.end = this.endDate.clone();\n this.isShown = true;\n this.updateView();\n }\n hide(e) {\n if (!this.isShown) {\n return;\n }\n if (!this.endDate) {\n if (this.cachedVersion.start) {\n this.startDate = this.cachedVersion.start.clone();\n }\n if (this.cachedVersion.end) {\n this.endDate = this.cachedVersion.end.clone();\n }\n }\n if (!this.startDate.isSame(this.cachedVersion.start) || !this.endDate.isSame(this.cachedVersion.end)) {}\n this.updateElement();\n this.isShown = false;\n this.ref.detectChanges();\n }\n updateLocale(locale) {\n for (const key in locale) {\n if (Object.prototype.hasOwnProperty.call(locale, key)) {\n this.locale[key] = locale[key];\n if (key === 'customRangeLabel') {\n this.renderRanges();\n }\n }\n }\n }\n clear() {\n this.startDate = dayjs().utc(true).startOf('day');\n this.endDate = dayjs().utc(true).endOf('day');\n this.choosedDate.emit({\n chosenLabel: '',\n startDate: null,\n endDate: null\n });\n this.datesUpdated.emit({\n startDate: null,\n endDate: null\n });\n this.clearClicked.emit();\n this.hide();\n }\n disableRange(range) {\n if (range === this.locale.customRangeLabel) {\n return false;\n }\n const rangeMarkers = this.ranges[range];\n const areBothBefore = rangeMarkers.every(date => {\n if (!this.minDate) {\n return false;\n }\n return date.isBefore(this.minDate);\n });\n const areBothAfter = rangeMarkers.every(date => {\n if (!this.maxDate) {\n return false;\n }\n return date.isAfter(this.maxDate);\n });\n return areBothBefore || areBothAfter;\n }\n getDateWithTime(date, side) {\n let hour = parseInt(String(this.timepickerVariables[side].selectedHour), 10);\n if (!this.timePicker24Hour) {\n const ampm = this.timepickerVariables[side].ampmModel;\n if (ampm === 'PM' && hour < 12) {\n hour += 12;\n }\n if (ampm === 'AM' && hour === 12) {\n hour = 0;\n }\n }\n const minute = parseInt(String(this.timepickerVariables[side].selectedMinute), 10);\n const second = this.timePickerSeconds ? parseInt(String(this.timepickerVariables[side].selectedSecond), 10) : 0;\n return date.clone().hour(hour).minute(minute).second(second);\n }\n buildLocale() {\n this.locale = {\n ...this.localeHolderService.config,\n ...this.locale\n };\n if (!this.locale.format) {\n if (this.timePicker) {\n this.locale.format = dayjs.localeData().longDateFormat('lll');\n } else {\n this.locale.format = dayjs.localeData().longDateFormat('L');\n }\n }\n }\n buildCells(calendar, side) {\n for (let row = 0; row < 6; row++) {\n this.calendarVariables[side].classes[row] = {\n classList: ''\n };\n const rowClasses = [];\n if (this.emptyWeekRowClass && Array.from(Array(7).keys()).some(i => calendar[row][i].month() !== this.calendarVariables[side].month)) {\n rowClasses.push(this.emptyWeekRowClass);\n }\n for (let col = 0; col < 7; col++) {\n const classes = [];\n if (this.emptyWeekColumnClass) {\n if (calendar[row][col].month() !== this.calendarVariables[side].month) {\n classes.push(this.emptyWeekColumnClass);\n }\n }\n if (calendar[row][col].isSame(dayjs().utc(true), 'day')) {\n classes.push('today');\n }\n if (calendar[row][col].isoWeekday() > 5) {\n classes.push('weekend');\n }\n if (calendar[row][col].month() !== calendar[1][1].month()) {\n classes.push('off');\n if (this.lastDayOfPreviousMonthClass && (calendar[row][col].month() < calendar[1][1].month() || calendar[1][1].month() === 0) && calendar[row][col].date() === this.calendarVariables[side].daysInLastMonth) {\n classes.push(this.lastDayOfPreviousMonthClass);\n }\n if (this.firstDayOfNextMonthClass && (calendar[row][col].month() > calendar[1][1].month() || calendar[row][col].month() === 0) && calendar[row][col].date() === 1) {\n classes.push(this.firstDayOfNextMonthClass);\n }\n }\n if (this.firstMonthDayClass && calendar[row][col].month() === calendar[1][1].month() && calendar[row][col].date() === calendar.firstDay.date()) {\n classes.push(this.firstMonthDayClass);\n }\n if (this.lastMonthDayClass && calendar[row][col].month() === calendar[1][1].month() && calendar[row][col].date() === calendar.lastDay.date()) {\n classes.push(this.lastMonthDayClass);\n }\n if (this.minDate && calendar[row][col].isBefore(this.minDate, 'day')) {\n classes.push('off', 'disabled');\n }\n if (this.calendarVariables[side].maxDate && calendar[row][col].isAfter(this.calendarVariables[side].maxDate, 'day')) {\n classes.push('off', 'disabled');\n }\n if (this.isInvalidDate(calendar[row][col])) {\n classes.push('off', 'disabled', 'invalid');\n }\n if (this.startDate && calendar[row][col].format('YYYY-MM-DD') === this.startDate.format('YYYY-MM-DD')) {\n classes.push('active', 'start-date');\n }\n if (this.endDate != null && calendar[row][col].format('YYYY-MM-DD') === this.endDate.format('YYYY-MM-DD')) {\n classes.push('active', 'end-date');\n }\n if ((this.nowHoveredDate != null && this.pickingDate || this.endDate != null) && calendar[row][col] > this.startDate && (calendar[row][col] < this.endDate || calendar[row][col] < this.nowHoveredDate && this.pickingDate) && !classes.find(el => el === 'off')) {\n classes.push('in-range');\n }\n const isCustom = this.isCustomDate(calendar[row][col]);\n if (isCustom !== false) {\n if (typeof isCustom === 'string') {\n classes.push(isCustom);\n } else {\n Array.prototype.push.apply(classes, isCustom);\n }\n }\n let cname = '';\n let disabled = false;\n for (const className of classes) {\n cname += className + ' ';\n if (className === 'disabled') {\n disabled = true;\n }\n }\n if (!disabled) {\n cname += 'available';\n }\n this.calendarVariables[side].classes[row][col] = cname.replace(/^\\s+|\\s+$/g, '');\n }\n this.calendarVariables[side].classes[row].classList = rowClasses.join(' ');\n }\n }\n}\nDaterangepickerComponent.ɵfac = function DaterangepickerComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DaterangepickerComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(LocaleService));\n};\nDaterangepickerComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: DaterangepickerComponent,\n selectors: [[\"ngx-daterangepicker-material\"]],\n viewQuery: function DaterangepickerComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c0, 7);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.pickerContainer = _t.first);\n }\n },\n hostBindings: function DaterangepickerComponent_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function DaterangepickerComponent_click_HostBindingHandler($event) {\n return ctx.handleInternalClick($event);\n });\n }\n },\n inputs: {\n startDate: \"startDate\",\n endDate: \"endDate\",\n dateLimit: \"dateLimit\",\n autoApply: \"autoApply\",\n singleDatePicker: \"singleDatePicker\",\n showDropdowns: \"showDropdowns\",\n showWeekNumbers: \"showWeekNumbers\",\n showISOWeekNumbers: \"showISOWeekNumbers\",\n linkedCalendars: \"linkedCalendars\",\n autoUpdateInput: \"autoUpdateInput\",\n alwaysShowCalendars: \"alwaysShowCalendars\",\n maxSpan: \"maxSpan\",\n lockStartDate: \"lockStartDate\",\n timePicker: \"timePicker\",\n timePicker24Hour: \"timePicker24Hour\",\n timePickerIncrement: \"timePickerIncrement\",\n timePickerSeconds: \"timePickerSeconds\",\n showClearButton: \"showClearButton\",\n firstMonthDayClass: \"firstMonthDayClass\",\n lastMonthDayClass: \"lastMonthDayClass\",\n emptyWeekRowClass: \"emptyWeekRowClass\",\n emptyWeekColumnClass: \"emptyWeekColumnClass\",\n firstDayOfNextMonthClass: \"firstDayOfNextMonthClass\",\n lastDayOfPreviousMonthClass: \"lastDayOfPreviousMonthClass\",\n showCustomRangeLabel: \"showCustomRangeLabel\",\n showCancel: \"showCancel\",\n keepCalendarOpeningWithRange: \"keepCalendarOpeningWithRange\",\n showRangeLabelOnInput: \"showRangeLabelOnInput\",\n customRangeDirection: \"customRangeDirection\",\n drops: \"drops\",\n opens: \"opens\",\n closeOnAutoApply: \"closeOnAutoApply\",\n minDate: \"minDate\",\n locale: \"locale\",\n ranges: \"ranges\",\n maxDate: \"maxDate\",\n isInvalidDate: \"isInvalidDate\",\n isCustomDate: \"isCustomDate\",\n isTooltipDate: \"isTooltipDate\"\n },\n outputs: {\n choosedDate: \"choosedDate\",\n rangeClicked: \"rangeClicked\",\n datesUpdated: \"datesUpdated\",\n startDateChanged: \"startDateChanged\",\n endDateChanged: \"endDateChanged\",\n cancelClicked: \"cancelClicked\",\n clearClicked: \"clearClicked\"\n },\n features: [i0.ɵɵProvidersFeature([{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DaterangepickerComponent),\n multi: true\n }]), i0.ɵɵNgOnChangesFeature],\n decls: 6,\n vars: 15,\n consts: [[\"pickerContainer\", \"\"], [1, \"md-drppicker\", 3, \"ngClass\"], [4, \"ngIf\"], [\"class\", \"calendar\", 3, \"ngClass\", 4, \"ngIf\"], [\"class\", \"calendar right\", 4, \"ngIf\"], [\"class\", \"buttons\", 4, \"ngIf\"], [1, \"ranges\"], [4, \"ngFor\", \"ngForOf\"], [\"type\", \"button\", 3, \"click\", \"disabled\", \"ngClass\"], [1, \"calendar\", 3, \"ngClass\"], [1, \"calendar-table\"], [\"class\", \"table-condensed\", 4, \"ngIf\"], [\"class\", \"calendar-time\", 4, \"ngIf\"], [1, \"table-condensed\"], [\"colspan\", \"5\", 1, \"month\", \"drp-animate\"], [1, \"week-days\"], [\"class\", \"week\", 4, \"ngIf\"], [1, \"drp-animate\"], [3, \"class\", 4, \"ngFor\", \"ngForOf\"], [1, \"prev\", \"available\", 3, \"click\"], [1, \"dropdowns\"], [1, \"monthselect\", 3, \"change\"], [3, \"disabled\", \"value\", \"selected\", 4, \"ngFor\", \"ngForOf\"], [1, \"yearselect\", 3, \"change\"], [3, \"selected\", 4, \"ngFor\", \"ngForOf\"], [3, \"disabled\", \"value\", \"selected\"], [3, \"selected\"], [1, \"next\", \"available\", 3, \"click\"], [1, \"week\"], [3, \"class\", \"click\", \"mouseenter\", 4, \"ngFor\", \"ngForOf\"], [3, \"click\", \"mouseenter\"], [1, \"calendar-time\"], [1, \"select\"], [1, \"hourselect\", \"select-item\", 3, \"ngModelChange\", \"disabled\", \"ngModel\"], [3, \"value\", \"disabled\", 4, \"ngFor\", \"ngForOf\"], [1, \"select-item\", \"minuteselect\", 3, \"ngModelChange\", \"disabled\", \"ngModel\"], [1, \"select-highlight\"], [1, \"select-bar\"], [\"class\", \"select-item secondselect\", 3, \"disabled\", \"ngModel\", \"ngModelChange\", 4, \"ngIf\"], [\"class\", \"select-item ampmselect\", 3, \"ngModel\", \"ngModelChange\", 4, \"ngIf\"], [3, \"value\", \"disabled\"], [1, \"select-item\", \"secondselect\", 3, \"ngModelChange\", \"disabled\", \"ngModel\"], [1, \"select-item\", \"ampmselect\", 3, \"ngModelChange\", \"ngModel\"], [\"value\", \"AM\", 3, \"disabled\"], [\"value\", \"PM\", 3, \"disabled\"], [1, \"calendar\", \"right\"], [\"colspan\", \"5\", 1, \"month\"], [1, \"select-item\", \"hourselect\", 3, \"ngModelChange\", \"disabled\", \"ngModel\"], [1, \"buttons\"], [1, \"buttons_input\"], [\"class\", \"btn btn-default clear\", \"type\", \"button\", 3, \"title\", \"click\", 4, \"ngIf\"], [\"class\", \"btn btn-default\", \"type\", \"button\", 3, \"click\", 4, \"ngIf\"], [\"type\", \"button\", 1, \"btn\", 3, \"click\", \"disabled\"], [\"type\", \"button\", 1, \"btn\", \"btn-default\", \"clear\", 3, \"click\", \"title\"], [\"xmlns\", \"http://www.w3.org/2000/svg\", \"width\", \"30\", \"height\", \"30\", \"viewBox\", \"0 -5 24 24\"], [\"d\", \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\"], [\"type\", \"button\", 1, \"btn\", \"btn-default\", 3, \"click\"]],\n template: function DaterangepickerComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 1, 0);\n i0.ɵɵtemplate(2, DaterangepickerComponent_ng_container_2_Template, 4, 1, \"ng-container\", 2)(3, DaterangepickerComponent_div_3_Template, 4, 6, \"div\", 3)(4, DaterangepickerComponent_div_4_Template, 4, 2, \"div\", 4)(5, DaterangepickerComponent_div_5_Template, 6, 4, \"div\", 5);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵclassMap(\"drops-\" + ctx.drops + \"-\" + ctx.opens);\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction7(7, _c1, ctx.locale.direction === \"ltr\", ctx.locale.direction === \"rtl\", ctx.isShown || ctx.inline, !ctx.isShown && !ctx.inline, ctx.inline, !ctx.singleDatePicker && ctx.showCalInRanges, ctx.rangesArray.length));\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx.rangesArray.length);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.showCalInRanges);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.showCalInRanges && !ctx.singleDatePicker);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx.autoApply && (!ctx.rangesArray.length || ctx.showCalInRanges && !ctx.singleDatePicker));\n }\n },\n dependencies: [i2.NgClass, i2.NgIf, i2.NgForOf, i3.NgSelectOption, i3.ɵNgSelectMultipleOption, i3.SelectControlValueAccessor, i3.NgControlStatus, i3.NgModel],\n styles: [\".md-drppicker{position:absolute;font-family:Roboto,sans-serif;color:inherit;border-radius:4px;width:278px;padding:4px;margin-top:-10px;overflow:hidden;z-index:1000;font-size:14px;background-color:#fff;box-shadow:0 2px 4px #00000029,0 2px 8px #0000001f}.md-drppicker.double{width:auto}.md-drppicker.inline{position:relative;display:inline-block}.md-drppicker:before,.md-drppicker:after{position:absolute;display:inline-block;border-bottom-color:#0003;content:\\\"\\\"}.md-drppicker.openscenter:before{left:0;right:0;width:0;margin-left:auto;margin-right:auto}.md-drppicker.openscenter:after{left:0;right:0;width:0;margin-left:auto;margin-right:auto}.md-drppicker.single .ranges,.md-drppicker.single .calendar{float:none}.md-drppicker.shown{transform:scale(1);transition:all .1s ease-in-out;transform-origin:0 0;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.md-drppicker.shown.drops-up-left{transform-origin:100% 100%}.md-drppicker.shown.drops-up-right{transform-origin:0 100%}.md-drppicker.shown.drops-down-left{transform-origin:100% 0}.md-drppicker.shown.drops-down-right{transform-origin:0 0}.md-drppicker.shown.drops-down-center{transform-origin:NaN%}.md-drppicker.shown.drops-up-center{transform-origin:50%}.md-drppicker.shown .calendar{display:block}.md-drppicker.hidden{transition:all .1s ease;transform:scale(0);transform-origin:0 0;cursor:default;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.md-drppicker.hidden.drops-up-left{transform-origin:100% 100%}.md-drppicker.hidden.drops-up-right{transform-origin:0 100%}.md-drppicker.hidden.drops-down-left{transform-origin:100% 0}.md-drppicker.hidden.drops-down-right{transform-origin:0 0}.md-drppicker.hidden.drops-down-center{transform-origin:50% 0}.md-drppicker.hidden.drops-up-center{transform-origin:50% 100%}.md-drppicker.hidden .calendar{display:none}.md-drppicker .calendar{max-width:270px;margin:4px}.md-drppicker .calendar.single .calendar-table{border:none}.md-drppicker .calendar th,.md-drppicker .calendar td{padding:0;white-space:nowrap;text-align:center;min-width:32px}.md-drppicker .calendar th span,.md-drppicker .calendar td span{pointer-events:none}.md-drppicker .calendar-table{border:1px solid #fff;padding:4px;border-radius:4px;background-color:#fff}.md-drppicker table{width:100%;margin:0}.md-drppicker th{color:#988c8c}.md-drppicker td,.md-drppicker th{text-align:center;width:20px;height:20px;border-radius:4px;border:1px solid transparent;white-space:nowrap;cursor:pointer;height:2em;width:2em}.md-drppicker td.available.prev,.md-drppicker th.available.prev{display:block;background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K);background-repeat:no-repeat;background-size:.5em;background-position:center;opacity:.8;transition:background-color .2s ease;border-radius:2em}.md-drppicker td.available.prev:hover,.md-drppicker th.available.prev:hover{margin:0}.md-drppicker td.available.next,.md-drppicker th.available.next{transform:rotate(180deg);display:block;background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K);background-repeat:no-repeat;background-size:.5em;background-position:center;opacity:.8;transition:background-color .2s ease;border-radius:2em}.md-drppicker td.available.next:hover,.md-drppicker th.available.next:hover{margin:0;transform:rotate(180deg)}.md-drppicker td.available:hover,.md-drppicker th.available:hover{background-color:#eee;border-color:transparent;color:inherit;background-repeat:no-repeat;background-size:.5em;background-position:center;margin:.25em 0;opacity:.8;border-radius:2em;transform:scale(1);transition:all .45s cubic-bezier(.23,1,.32,1) 0ms}.md-drppicker td.week,.md-drppicker th.week{font-size:80%;color:#ccc}.md-drppicker td{margin:.25em 0;opacity:.8;transition:background-color .2s ease;border-radius:2em;transform:scale(1);transition:all .45s cubic-bezier(.23,1,.32,1) 0ms}.md-drppicker td.off,.md-drppicker td.off.in-range,.md-drppicker td.off.start-date,.md-drppicker td.off.end-date{background-color:#fff;border-color:transparent;color:#999}.md-drppicker td.in-range{background-color:#dde2e4;border-color:transparent;color:#000;border-radius:0}.md-drppicker td.start-date{border-radius:2em 0 0 2em}.md-drppicker td.end-date{border-radius:0 2em 2em 0}.md-drppicker td.start-date.end-date{border-radius:4px}.md-drppicker td.active{transition:background .3s ease-out;background:rgba(0,0,0,.1)}.md-drppicker td.active,.md-drppicker td.active:hover{background-color:#3f51b5;border-color:transparent;color:#fff}.md-drppicker th.month{width:auto}.md-drppicker td.disabled,.md-drppicker option.disabled{color:#999;cursor:not-allowed;text-decoration:line-through}.md-drppicker .dropdowns{background-repeat:no-repeat;background-size:10px;background-position-y:center;background-position-x:right;width:50px;background-image:url(data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTYuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjE2cHgiIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDI1NSAyNTUiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDI1NSAyNTU7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPGc+Cgk8ZyBpZD0iYXJyb3ctZHJvcC1kb3duIj4KCQk8cG9seWdvbiBwb2ludHM9IjAsNjMuNzUgMTI3LjUsMTkxLjI1IDI1NSw2My43NSAgICIgZmlsbD0iIzk4OGM4YyIvPgoJPC9nPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+Cjwvc3ZnPgo=)}.md-drppicker .dropdowns select{display:inline-block;background-color:#ffffffe6;width:100%;padding:5px;border:1px solid #f2f2f2;border-radius:2px;height:3rem}.md-drppicker .dropdowns select.monthselect,.md-drppicker .dropdowns select.yearselect{font-size:12px;padding:1px;height:auto;margin:0;cursor:default}.md-drppicker .dropdowns select.hourselect,.md-drppicker .dropdowns select.minuteselect,.md-drppicker .dropdowns select.secondselect,.md-drppicker .dropdowns select.ampmselect{width:50px;margin:0 auto;background:#eee;border:1px solid #eee;padding:2px;outline:0;font-size:12px}.md-drppicker .dropdowns select.monthselect,.md-drppicker .dropdowns select.yearselect{cursor:pointer;opacity:0;position:absolute;top:0;left:0;margin:0;padding:0}.md-drppicker th.month>div{position:relative;display:inline-block}.md-drppicker .calendar-time{text-align:center;margin:4px auto 0;line-height:30px;position:relative}.md-drppicker .calendar-time .select{display:inline}.md-drppicker .calendar-time .select .select-item{display:inline-block;width:auto;position:relative;font-family:inherit;background-color:transparent;padding:10px 10px 10px 0;font-size:18px;border-radius:0;border:none;border-bottom:1px solid rgba(0,0,0,.12)}.md-drppicker .calendar-time .select .select-item:after{position:absolute;top:18px;right:10px;width:0;height:0;padding:0;content:\\\"\\\";border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid rgba(0,0,0,.12);pointer-events:none}.md-drppicker .calendar-time .select .select-item:focus{outline:none}.md-drppicker .calendar-time .select .select-item .select-label{color:#00000042;font-size:16px;font-weight:400;position:absolute;pointer-events:none;left:0;top:10px;transition:.2s ease all}.md-drppicker .calendar-time select.disabled{color:#ccc;cursor:not-allowed}.md-drppicker .label-input{border:1px solid #ccc;border-radius:4px;color:#555;height:30px;line-height:30px;display:block;vertical-align:middle;margin:0 auto 5px;padding:0 0 0 28px;width:100%}.md-drppicker .label-input.active{border:1px solid #08c;border-radius:4px}.md-drppicker .md-drppicker_input{position:relative;padding:0 30px 0 0}.md-drppicker .md-drppicker_input i,.md-drppicker .md-drppicker_input svg{position:absolute;left:8px;top:8px}.md-drppicker.rtl .label-input{padding-right:28px;padding-left:6px}.md-drppicker.rtl .md-drppicker_input i,.md-drppicker.rtl .md-drppicker_input svg{left:auto;right:8px}.md-drppicker .show-ranges .drp-calendar.left{border-left:1px solid #ddd}.md-drppicker .ranges{float:none;text-align:left;margin:0}.md-drppicker .ranges ul{list-style:none;margin:0 auto;padding:0;width:100%}.md-drppicker .ranges ul li{font-size:12px}.md-drppicker .ranges ul li button{padding:8px 12px;width:100%;background:none;border:none;text-align:left;cursor:pointer}.md-drppicker .ranges ul li button.active{background-color:#3f51b5;color:#fff}.md-drppicker .ranges ul li button[disabled]{opacity:.3}.md-drppicker .ranges ul li button:active{background:transparent}.md-drppicker .ranges ul li:hover{background-color:#eee}.md-drppicker .show-calendar .ranges{margin-top:8px}.md-drppicker [hidden]{display:none}.md-drppicker .buttons{text-align:right;margin:0 5px 5px 0}.md-drppicker .btn{position:relative;overflow:hidden;border-width:0;outline:none;padding:0 6px;cursor:pointer;border-radius:2px;box-shadow:0 1px 4px #0009;background-color:#3f51b5;color:#ecf0f1;transition:background-color .4s;height:auto;text-transform:uppercase;line-height:36px;border:none}.md-drppicker .btn:hover,.md-drppicker .btn:focus{background-color:#3f51b5}.md-drppicker .btn>*{position:relative}.md-drppicker .btn span{display:block;padding:12px 24px}.md-drppicker .btn:before{content:\\\"\\\";position:absolute;top:50%;left:50%;display:block;width:0;padding-top:0;border-radius:100%;background-color:#ecf0f14d;transform:translate(-50%,-50%)}.md-drppicker .btn:active:before{width:120%;padding-top:120%;transition:width .2s ease-out,padding-top .2s ease-out}.md-drppicker .btn:disabled{opacity:.5}.md-drppicker .btn.btn-default{color:#000;background-color:#dcdcdc}.md-drppicker .clear{box-shadow:none;background-color:#fff!important}.md-drppicker .clear svg{color:#eb3232;fill:currentColor}@media (min-width: 564px){.md-drppicker{width:auto}.md-drppicker.single .calendar.left{clear:none}.md-drppicker.ltr{direction:ltr;text-align:left}.md-drppicker.ltr .calendar.left{clear:left}.md-drppicker.ltr .calendar.left .calendar-table{border-right:none;border-top-right-radius:0;border-bottom-right-radius:0}.md-drppicker.ltr .calendar.right{margin-left:0}.md-drppicker.ltr .calendar.right .calendar-table{border-left:none;border-top-left-radius:0;border-bottom-left-radius:0}.md-drppicker.ltr .left .md-drppicker_input,.md-drppicker.ltr .right .md-drppicker_input{padding-right:35px}.md-drppicker.ltr .calendar.left .calendar-table{padding-right:12px}.md-drppicker.ltr .ranges,.md-drppicker.ltr .calendar{float:left}.md-drppicker.rtl{direction:rtl;text-align:right}.md-drppicker.rtl .calendar.left{clear:right;margin-left:0}.md-drppicker.rtl .calendar.left .calendar-table{border-left:none;border-top-left-radius:0;border-bottom-left-radius:0}.md-drppicker.rtl .calendar.right{margin-right:0}.md-drppicker.rtl .calendar.right .calendar-table{border-right:none;border-top-right-radius:0;border-bottom-right-radius:0}.md-drppicker.rtl .left .md-drppicker_input,.md-drppicker.rtl .calendar.left .calendar-table{padding-left:12px}.md-drppicker.rtl .ranges,.md-drppicker.rtl .calendar{text-align:right;float:right}.drp-animate{transform:translate(0);transition:transform .2s ease,opacity .2s ease}.drp-animate.drp-picker-site-this{transition-timing-function:linear}.drp-animate.drp-animate-right{transform:translate(10%);opacity:0}.drp-animate.drp-animate-left{transform:translate(-10%);opacity:0}}@media (min-width: 730px){.md-drppicker .ranges{width:auto}.md-drppicker.ltr .ranges{float:left}.md-drppicker.rtl .ranges{float:right}.md-drppicker .calendar.left{clear:none!important}}\\n\"],\n encapsulation: 2\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DaterangepickerComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-daterangepicker-material',\n encapsulation: ViewEncapsulation.None,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DaterangepickerComponent),\n multi: true\n }],\n template: \"\\n \\n
\\n
    \\n
  • \\n \\n {{ range }}\\n \\n
  • \\n
\\n
\\n
\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n {{ calendarVariables.left.calendar[row][col].date() }}\\n \\n \\n \\n
\\n \\n
\\n {{ this.locale.monthNames[calendarVariables?.left?.calendar[1][1].month()] }}\\n \\n
\\n
\\n {{ calendarVariables?.left?.calendar[1][1].format(' YYYY') }}\\n \\n
\\n
\\n \\n {{ this.locale.monthNames[calendarVariables?.left?.calendar[1][1].month()] }}\\n {{ calendarVariables?.left?.calendar[1][1].format(' YYYY') }}\\n \\n
\\n {{ this.locale.weekLabel }}\\n \\n {{ dayofweek }}\\n
\\n {{ calendarVariables.left.calendar[row][0].week() }}\\n \\n {{ calendarVariables.left.calendar[row][0].isoWeek() }}\\n
\\n
\\n
\\n
\\n \\n -1\\\">\\n {{ i }}\\n \\n \\n
\\n
\\n \\n -1\\\">\\n {{ timepickerVariables.left.minutesLabel[index] }}\\n \\n \\n \\n \\n
\\n
\\n \\n -1\\\">\\n {{ timepickerVariables.left.secondsLabel[index] }}\\n \\n \\n \\n \\n
\\n
\\n \\n \\n \\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n {{ calendarVariables.right.calendar[row][col].date() }}\\n \\n \\n \\n
\\n \\n
\\n {{ this.locale.monthNames[calendarVariables?.right?.calendar[1][1].month()] }}\\n \\n
\\n
\\n {{ calendarVariables?.right?.calendar[1][1].format(' YYYY') }}\\n \\n
\\n
\\n \\n {{ this.locale.monthNames[calendarVariables?.right?.calendar[1][1].month()] }}\\n {{ calendarVariables?.right?.calendar[1][1].format(' YYYY') }}\\n \\n
\\n {{ this.locale.weekLabel }}\\n \\n {{ dayofweek }}\\n
\\n {{ calendarVariables.right.calendar[row][0].week() }}\\n \\n {{ calendarVariables.right.calendar[row][0].isoWeek() }}\\n
\\n
\\n
\\n
\\n \\n -1\\\">\\n {{ i }}\\n \\n \\n \\n \\n
\\n
\\n \\n -1\\\">\\n {{ timepickerVariables.right.minutesLabel[index] }}\\n \\n \\n \\n \\n
\\n
\\n \\n -1\\\">\\n {{ timepickerVariables.right.secondsLabel[index] }}\\n \\n \\n \\n \\n
\\n
\\n \\n \\n \\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n \\n \\n
\\n
\\n\\n\",\n styles: [\".md-drppicker{position:absolute;font-family:Roboto,sans-serif;color:inherit;border-radius:4px;width:278px;padding:4px;margin-top:-10px;overflow:hidden;z-index:1000;font-size:14px;background-color:#fff;box-shadow:0 2px 4px #00000029,0 2px 8px #0000001f}.md-drppicker.double{width:auto}.md-drppicker.inline{position:relative;display:inline-block}.md-drppicker:before,.md-drppicker:after{position:absolute;display:inline-block;border-bottom-color:#0003;content:\\\"\\\"}.md-drppicker.openscenter:before{left:0;right:0;width:0;margin-left:auto;margin-right:auto}.md-drppicker.openscenter:after{left:0;right:0;width:0;margin-left:auto;margin-right:auto}.md-drppicker.single .ranges,.md-drppicker.single .calendar{float:none}.md-drppicker.shown{transform:scale(1);transition:all .1s ease-in-out;transform-origin:0 0;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.md-drppicker.shown.drops-up-left{transform-origin:100% 100%}.md-drppicker.shown.drops-up-right{transform-origin:0 100%}.md-drppicker.shown.drops-down-left{transform-origin:100% 0}.md-drppicker.shown.drops-down-right{transform-origin:0 0}.md-drppicker.shown.drops-down-center{transform-origin:NaN%}.md-drppicker.shown.drops-up-center{transform-origin:50%}.md-drppicker.shown .calendar{display:block}.md-drppicker.hidden{transition:all .1s ease;transform:scale(0);transform-origin:0 0;cursor:default;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.md-drppicker.hidden.drops-up-left{transform-origin:100% 100%}.md-drppicker.hidden.drops-up-right{transform-origin:0 100%}.md-drppicker.hidden.drops-down-left{transform-origin:100% 0}.md-drppicker.hidden.drops-down-right{transform-origin:0 0}.md-drppicker.hidden.drops-down-center{transform-origin:50% 0}.md-drppicker.hidden.drops-up-center{transform-origin:50% 100%}.md-drppicker.hidden .calendar{display:none}.md-drppicker .calendar{max-width:270px;margin:4px}.md-drppicker .calendar.single .calendar-table{border:none}.md-drppicker .calendar th,.md-drppicker .calendar td{padding:0;white-space:nowrap;text-align:center;min-width:32px}.md-drppicker .calendar th span,.md-drppicker .calendar td span{pointer-events:none}.md-drppicker .calendar-table{border:1px solid #fff;padding:4px;border-radius:4px;background-color:#fff}.md-drppicker table{width:100%;margin:0}.md-drppicker th{color:#988c8c}.md-drppicker td,.md-drppicker th{text-align:center;width:20px;height:20px;border-radius:4px;border:1px solid transparent;white-space:nowrap;cursor:pointer;height:2em;width:2em}.md-drppicker td.available.prev,.md-drppicker th.available.prev{display:block;background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K);background-repeat:no-repeat;background-size:.5em;background-position:center;opacity:.8;transition:background-color .2s ease;border-radius:2em}.md-drppicker td.available.prev:hover,.md-drppicker th.available.prev:hover{margin:0}.md-drppicker td.available.next,.md-drppicker th.available.next{transform:rotate(180deg);display:block;background-image:url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMy43IDYiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDMuNyA2IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGQ9Ik0zLjcsMC43TDEuNCwzbDIuMywyLjNMMyw2TDAsM2wzLTNMMy43LDAuN3oiLz4NCjwvZz4NCjwvc3ZnPg0K);background-repeat:no-repeat;background-size:.5em;background-position:center;opacity:.8;transition:background-color .2s ease;border-radius:2em}.md-drppicker td.available.next:hover,.md-drppicker th.available.next:hover{margin:0;transform:rotate(180deg)}.md-drppicker td.available:hover,.md-drppicker th.available:hover{background-color:#eee;border-color:transparent;color:inherit;background-repeat:no-repeat;background-size:.5em;background-position:center;margin:.25em 0;opacity:.8;border-radius:2em;transform:scale(1);transition:all .45s cubic-bezier(.23,1,.32,1) 0ms}.md-drppicker td.week,.md-drppicker th.week{font-size:80%;color:#ccc}.md-drppicker td{margin:.25em 0;opacity:.8;transition:background-color .2s ease;border-radius:2em;transform:scale(1);transition:all .45s cubic-bezier(.23,1,.32,1) 0ms}.md-drppicker td.off,.md-drppicker td.off.in-range,.md-drppicker td.off.start-date,.md-drppicker td.off.end-date{background-color:#fff;border-color:transparent;color:#999}.md-drppicker td.in-range{background-color:#dde2e4;border-color:transparent;color:#000;border-radius:0}.md-drppicker td.start-date{border-radius:2em 0 0 2em}.md-drppicker td.end-date{border-radius:0 2em 2em 0}.md-drppicker td.start-date.end-date{border-radius:4px}.md-drppicker td.active{transition:background .3s ease-out;background:rgba(0,0,0,.1)}.md-drppicker td.active,.md-drppicker td.active:hover{background-color:#3f51b5;border-color:transparent;color:#fff}.md-drppicker th.month{width:auto}.md-drppicker td.disabled,.md-drppicker option.disabled{color:#999;cursor:not-allowed;text-decoration:line-through}.md-drppicker .dropdowns{background-repeat:no-repeat;background-size:10px;background-position-y:center;background-position-x:right;width:50px;background-image:url(data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTYuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjE2cHgiIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDI1NSAyNTUiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDI1NSAyNTU7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPGc+Cgk8ZyBpZD0iYXJyb3ctZHJvcC1kb3duIj4KCQk8cG9seWdvbiBwb2ludHM9IjAsNjMuNzUgMTI3LjUsMTkxLjI1IDI1NSw2My43NSAgICIgZmlsbD0iIzk4OGM4YyIvPgoJPC9nPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+Cjwvc3ZnPgo=)}.md-drppicker .dropdowns select{display:inline-block;background-color:#ffffffe6;width:100%;padding:5px;border:1px solid #f2f2f2;border-radius:2px;height:3rem}.md-drppicker .dropdowns select.monthselect,.md-drppicker .dropdowns select.yearselect{font-size:12px;padding:1px;height:auto;margin:0;cursor:default}.md-drppicker .dropdowns select.hourselect,.md-drppicker .dropdowns select.minuteselect,.md-drppicker .dropdowns select.secondselect,.md-drppicker .dropdowns select.ampmselect{width:50px;margin:0 auto;background:#eee;border:1px solid #eee;padding:2px;outline:0;font-size:12px}.md-drppicker .dropdowns select.monthselect,.md-drppicker .dropdowns select.yearselect{cursor:pointer;opacity:0;position:absolute;top:0;left:0;margin:0;padding:0}.md-drppicker th.month>div{position:relative;display:inline-block}.md-drppicker .calendar-time{text-align:center;margin:4px auto 0;line-height:30px;position:relative}.md-drppicker .calendar-time .select{display:inline}.md-drppicker .calendar-time .select .select-item{display:inline-block;width:auto;position:relative;font-family:inherit;background-color:transparent;padding:10px 10px 10px 0;font-size:18px;border-radius:0;border:none;border-bottom:1px solid rgba(0,0,0,.12)}.md-drppicker .calendar-time .select .select-item:after{position:absolute;top:18px;right:10px;width:0;height:0;padding:0;content:\\\"\\\";border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid rgba(0,0,0,.12);pointer-events:none}.md-drppicker .calendar-time .select .select-item:focus{outline:none}.md-drppicker .calendar-time .select .select-item .select-label{color:#00000042;font-size:16px;font-weight:400;position:absolute;pointer-events:none;left:0;top:10px;transition:.2s ease all}.md-drppicker .calendar-time select.disabled{color:#ccc;cursor:not-allowed}.md-drppicker .label-input{border:1px solid #ccc;border-radius:4px;color:#555;height:30px;line-height:30px;display:block;vertical-align:middle;margin:0 auto 5px;padding:0 0 0 28px;width:100%}.md-drppicker .label-input.active{border:1px solid #08c;border-radius:4px}.md-drppicker .md-drppicker_input{position:relative;padding:0 30px 0 0}.md-drppicker .md-drppicker_input i,.md-drppicker .md-drppicker_input svg{position:absolute;left:8px;top:8px}.md-drppicker.rtl .label-input{padding-right:28px;padding-left:6px}.md-drppicker.rtl .md-drppicker_input i,.md-drppicker.rtl .md-drppicker_input svg{left:auto;right:8px}.md-drppicker .show-ranges .drp-calendar.left{border-left:1px solid #ddd}.md-drppicker .ranges{float:none;text-align:left;margin:0}.md-drppicker .ranges ul{list-style:none;margin:0 auto;padding:0;width:100%}.md-drppicker .ranges ul li{font-size:12px}.md-drppicker .ranges ul li button{padding:8px 12px;width:100%;background:none;border:none;text-align:left;cursor:pointer}.md-drppicker .ranges ul li button.active{background-color:#3f51b5;color:#fff}.md-drppicker .ranges ul li button[disabled]{opacity:.3}.md-drppicker .ranges ul li button:active{background:transparent}.md-drppicker .ranges ul li:hover{background-color:#eee}.md-drppicker .show-calendar .ranges{margin-top:8px}.md-drppicker [hidden]{display:none}.md-drppicker .buttons{text-align:right;margin:0 5px 5px 0}.md-drppicker .btn{position:relative;overflow:hidden;border-width:0;outline:none;padding:0 6px;cursor:pointer;border-radius:2px;box-shadow:0 1px 4px #0009;background-color:#3f51b5;color:#ecf0f1;transition:background-color .4s;height:auto;text-transform:uppercase;line-height:36px;border:none}.md-drppicker .btn:hover,.md-drppicker .btn:focus{background-color:#3f51b5}.md-drppicker .btn>*{position:relative}.md-drppicker .btn span{display:block;padding:12px 24px}.md-drppicker .btn:before{content:\\\"\\\";position:absolute;top:50%;left:50%;display:block;width:0;padding-top:0;border-radius:100%;background-color:#ecf0f14d;transform:translate(-50%,-50%)}.md-drppicker .btn:active:before{width:120%;padding-top:120%;transition:width .2s ease-out,padding-top .2s ease-out}.md-drppicker .btn:disabled{opacity:.5}.md-drppicker .btn.btn-default{color:#000;background-color:#dcdcdc}.md-drppicker .clear{box-shadow:none;background-color:#fff!important}.md-drppicker .clear svg{color:#eb3232;fill:currentColor}@media (min-width: 564px){.md-drppicker{width:auto}.md-drppicker.single .calendar.left{clear:none}.md-drppicker.ltr{direction:ltr;text-align:left}.md-drppicker.ltr .calendar.left{clear:left}.md-drppicker.ltr .calendar.left .calendar-table{border-right:none;border-top-right-radius:0;border-bottom-right-radius:0}.md-drppicker.ltr .calendar.right{margin-left:0}.md-drppicker.ltr .calendar.right .calendar-table{border-left:none;border-top-left-radius:0;border-bottom-left-radius:0}.md-drppicker.ltr .left .md-drppicker_input,.md-drppicker.ltr .right .md-drppicker_input{padding-right:35px}.md-drppicker.ltr .calendar.left .calendar-table{padding-right:12px}.md-drppicker.ltr .ranges,.md-drppicker.ltr .calendar{float:left}.md-drppicker.rtl{direction:rtl;text-align:right}.md-drppicker.rtl .calendar.left{clear:right;margin-left:0}.md-drppicker.rtl .calendar.left .calendar-table{border-left:none;border-top-left-radius:0;border-bottom-left-radius:0}.md-drppicker.rtl .calendar.right{margin-right:0}.md-drppicker.rtl .calendar.right .calendar-table{border-right:none;border-top-right-radius:0;border-bottom-right-radius:0}.md-drppicker.rtl .left .md-drppicker_input,.md-drppicker.rtl .calendar.left .calendar-table{padding-left:12px}.md-drppicker.rtl .ranges,.md-drppicker.rtl .calendar{text-align:right;float:right}.drp-animate{transform:translate(0);transition:transform .2s ease,opacity .2s ease}.drp-animate.drp-picker-site-this{transition-timing-function:linear}.drp-animate.drp-animate-right{transform:translate(10%);opacity:0}.drp-animate.drp-animate-left{transform:translate(-10%);opacity:0}}@media (min-width: 730px){.md-drppicker .ranges{width:auto}.md-drppicker.ltr .ranges{float:left}.md-drppicker.rtl .ranges{float:right}.md-drppicker .calendar.left{clear:none!important}}\\n\"]\n }]\n }], function () {\n return [{\n type: i0.ElementRef\n }, {\n type: i0.ChangeDetectorRef\n }, {\n type: LocaleService\n }];\n }, {\n startDate: [{\n type: Input\n }],\n endDate: [{\n type: Input\n }],\n dateLimit: [{\n type: Input\n }],\n autoApply: [{\n type: Input\n }],\n singleDatePicker: [{\n type: Input\n }],\n showDropdowns: [{\n type: Input\n }],\n showWeekNumbers: [{\n type: Input\n }],\n showISOWeekNumbers: [{\n type: Input\n }],\n linkedCalendars: [{\n type: Input\n }],\n autoUpdateInput: [{\n type: Input\n }],\n alwaysShowCalendars: [{\n type: Input\n }],\n maxSpan: [{\n type: Input\n }],\n lockStartDate: [{\n type: Input\n }],\n timePicker: [{\n type: Input\n }],\n timePicker24Hour: [{\n type: Input\n }],\n timePickerIncrement: [{\n type: Input\n }],\n timePickerSeconds: [{\n type: Input\n }],\n showClearButton: [{\n type: Input\n }],\n firstMonthDayClass: [{\n type: Input\n }],\n lastMonthDayClass: [{\n type: Input\n }],\n emptyWeekRowClass: [{\n type: Input\n }],\n emptyWeekColumnClass: [{\n type: Input\n }],\n firstDayOfNextMonthClass: [{\n type: Input\n }],\n lastDayOfPreviousMonthClass: [{\n type: Input\n }],\n showCustomRangeLabel: [{\n type: Input\n }],\n showCancel: [{\n type: Input\n }],\n keepCalendarOpeningWithRange: [{\n type: Input\n }],\n showRangeLabelOnInput: [{\n type: Input\n }],\n customRangeDirection: [{\n type: Input\n }],\n drops: [{\n type: Input\n }],\n opens: [{\n type: Input\n }],\n closeOnAutoApply: [{\n type: Input\n }],\n choosedDate: [{\n type: Output\n }],\n rangeClicked: [{\n type: Output\n }],\n datesUpdated: [{\n type: Output\n }],\n startDateChanged: [{\n type: Output\n }],\n endDateChanged: [{\n type: Output\n }],\n cancelClicked: [{\n type: Output\n }],\n clearClicked: [{\n type: Output\n }],\n pickerContainer: [{\n type: ViewChild,\n args: ['pickerContainer', {\n static: true\n }]\n }],\n minDate: [{\n type: Input\n }],\n locale: [{\n type: Input\n }],\n ranges: [{\n type: Input\n }],\n maxDate: [{\n type: Input\n }],\n isInvalidDate: [{\n type: Input\n }],\n isCustomDate: [{\n type: Input\n }],\n isTooltipDate: [{\n type: Input\n }],\n handleInternalClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }]\n });\n})();\nclass DaterangepickerDirective {\n constructor(viewContainerRef, ref, el, renderer, differs, localeHolderService, elementRef) {\n this.viewContainerRef = viewContainerRef;\n this.ref = ref;\n this.el = el;\n this.renderer = renderer;\n this.differs = differs;\n this.localeHolderService = localeHolderService;\n this.elementRef = elementRef;\n this.onChange = new EventEmitter();\n this.rangeClicked = new EventEmitter();\n this.datesUpdated = new EventEmitter();\n this.startDateChanged = new EventEmitter();\n this.endDateChanged = new EventEmitter();\n this.clearClicked = new EventEmitter();\n this.dateLimit = null;\n this.showCancel = false;\n this.lockStartDate = false;\n this.timePicker = false;\n this.timePicker24Hour = false;\n this.timePickerIncrement = 1;\n this.timePickerSeconds = false;\n this.closeOnAutoApply = true;\n this.notForChangesProperty = ['locale', 'endKey', 'startKey'];\n this.onChangeFn = Function.prototype;\n this.onTouched = Function.prototype;\n this.validatorChange = Function.prototype;\n this.localeHolder = {};\n this.endKey = 'endDate';\n this.startKey = 'startDate';\n this.drops = 'down';\n this.opens = 'auto';\n viewContainerRef.clear();\n const componentRef = viewContainerRef.createComponent(DaterangepickerComponent);\n this.picker = componentRef.instance;\n this.picker.inline = false;\n }\n get disabled() {\n return this.disabledHolder;\n }\n set startKey(value) {\n if (value !== null) {\n this.startKeyHolder = value;\n } else {\n this.startKeyHolder = 'startDate';\n }\n }\n get locale() {\n return this.localeHolder;\n }\n set locale(value) {\n this.localeHolder = {\n ...this.localeHolderService.config,\n ...value\n };\n }\n set endKey(value) {\n if (value !== null) {\n this.endKeyHolder = value;\n } else {\n this.endKeyHolder = 'endDate';\n }\n }\n get value() {\n return this.valueHolder || null;\n }\n set value(val) {\n this.valueHolder = val;\n this.onChangeFn(val);\n this.ref.markForCheck();\n }\n outsideClick(event) {\n if (!event.target) {\n return;\n }\n if (event.target.classList.contains('ngx-daterangepicker-action')) {\n return;\n }\n if (!this.elementRef.nativeElement.contains(event.target)) {\n this.hide();\n }\n }\n hide(e) {\n this.picker.hide(e);\n }\n onBlur() {\n this.onTouched();\n }\n inputChanged(e) {\n if (e.target.tagName.toLowerCase() !== 'input') {\n return;\n }\n if (!e.target.value.length) {\n return;\n }\n const dateString = e.target.value.split(this.picker.locale.separator);\n let start = null;\n let end = null;\n if (dateString.length === 2) {\n start = dayjs(dateString[0], this.picker.locale.format);\n end = dayjs(dateString[1], this.picker.locale.format);\n }\n if (this.singleDatePicker || start === null || end === null) {\n start = dayjs(e.target.value, this.picker.locale.format);\n end = start;\n }\n if (!start.isValid() || !end.isValid()) {\n return;\n }\n this.picker.setStartDate(start);\n this.picker.setEndDate(end);\n this.picker.updateView();\n }\n open(event) {\n if (this.disabled) {\n return;\n }\n this.picker.show(event);\n setTimeout(() => {\n this.setPosition();\n });\n }\n ngOnInit() {\n this.picker.startDateChanged.asObservable().subscribe(itemChanged => {\n this.startDateChanged.emit(itemChanged);\n });\n this.picker.endDateChanged.asObservable().subscribe(itemChanged => {\n this.endDateChanged.emit(itemChanged);\n });\n this.picker.rangeClicked.asObservable().subscribe(range => {\n this.rangeClicked.emit(range);\n });\n this.picker.datesUpdated.asObservable().subscribe(range => {\n this.datesUpdated.emit(range);\n });\n this.picker.clearClicked.asObservable().subscribe(() => {\n this.clearClicked.emit();\n });\n this.picker.choosedDate.asObservable().subscribe(change => {\n if (change) {\n const value = {\n [this.startKeyHolder]: change.startDate,\n [this.endKeyHolder]: change.endDate\n };\n this.value = value;\n this.onChange.emit(value);\n if (typeof change.chosenLabel === 'string') {\n this.el.nativeElement.value = change.chosenLabel;\n }\n }\n });\n this.picker.firstMonthDayClass = this.firstMonthDayClass;\n this.picker.lastMonthDayClass = this.lastMonthDayClass;\n this.picker.emptyWeekRowClass = this.emptyWeekRowClass;\n this.picker.emptyWeekColumnClass = this.emptyWeekColumnClass;\n this.picker.firstDayOfNextMonthClass = this.firstDayOfNextMonthClass;\n this.picker.lastDayOfPreviousMonthClass = this.lastDayOfPreviousMonthClass;\n this.picker.drops = this.drops;\n this.picker.opens = this.opens;\n this.localeDiffer = this.differs.find(this.locale).create();\n this.picker.closeOnAutoApply = this.closeOnAutoApply;\n }\n ngOnChanges(changes) {\n for (const change in changes) {\n if (Object.prototype.hasOwnProperty.call(changes, change)) {\n if (this.notForChangesProperty.indexOf(change) === -1) {\n this.picker[change] = changes[change].currentValue;\n }\n }\n }\n }\n ngDoCheck() {\n if (this.localeDiffer) {\n const changes = this.localeDiffer.diff(this.locale);\n if (changes) {\n this.picker.updateLocale(this.locale);\n }\n }\n }\n toggle(e) {\n if (this.picker.isShown) {\n this.hide(e);\n } else {\n this.open(e);\n }\n }\n clear() {\n this.picker.clear();\n }\n writeValue(value) {\n this.setValue(value);\n }\n registerOnChange(fn) {\n this.onChangeFn = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n setDisabledState(state) {\n this.disabledHolder = state;\n }\n setPosition() {\n let style;\n let containerTop;\n const container = this.picker.pickerContainer.nativeElement;\n const element = this.el.nativeElement;\n if (this.drops && this.drops === 'up') {\n containerTop = element.offsetTop - container.clientHeight + 'px';\n } else {\n containerTop = 'auto';\n }\n if (this.opens === 'left') {\n style = {\n top: containerTop,\n left: element.offsetLeft - container.clientWidth + element.clientWidth + 'px',\n right: 'auto'\n };\n } else if (this.opens === 'center') {\n style = {\n top: containerTop,\n left: element.offsetLeft + element.clientWidth / 2 - container.clientWidth / 2 + 'px',\n right: 'auto'\n };\n } else if (this.opens === 'right') {\n style = {\n top: containerTop,\n left: element.offsetLeft + 'px',\n right: 'auto'\n };\n } else {\n const position = element.offsetLeft + element.clientWidth / 2 - container.clientWidth / 2;\n if (position < 0) {\n style = {\n top: containerTop,\n left: element.offsetLeft + 'px',\n right: 'auto'\n };\n } else {\n style = {\n top: containerTop,\n left: position + 'px',\n right: 'auto'\n };\n }\n }\n if (style) {\n this.renderer.setStyle(container, 'top', style.top);\n this.renderer.setStyle(container, 'left', style.left);\n this.renderer.setStyle(container, 'right', style.right);\n }\n }\n setValue(val) {\n if (val) {\n this.value = val;\n if (val[this.startKeyHolder]) {\n this.picker.setStartDate(val[this.startKeyHolder]);\n }\n if (val[this.endKeyHolder]) {\n this.picker.setEndDate(val[this.endKeyHolder]);\n }\n this.picker.calculateChosenLabel();\n if (this.picker.chosenLabel) {\n this.el.nativeElement.value = this.picker.chosenLabel;\n }\n } else {\n this.picker.clear();\n }\n }\n}\nDaterangepickerDirective.ɵfac = function DaterangepickerDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DaterangepickerDirective)(i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.KeyValueDiffers), i0.ɵɵdirectiveInject(LocaleService), i0.ɵɵdirectiveInject(i0.ElementRef));\n};\nDaterangepickerDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: DaterangepickerDirective,\n selectors: [[\"input\", \"ngxDaterangepickerMd\", \"\"]],\n hostVars: 1,\n hostBindings: function DaterangepickerDirective_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function DaterangepickerDirective_click_HostBindingHandler($event) {\n return ctx.outsideClick($event);\n }, false, i0.ɵɵresolveDocument)(\"keyup.esc\", function DaterangepickerDirective_keyup_esc_HostBindingHandler($event) {\n return ctx.hide($event);\n })(\"blur\", function DaterangepickerDirective_blur_HostBindingHandler() {\n return ctx.onBlur();\n })(\"keyup\", function DaterangepickerDirective_keyup_HostBindingHandler($event) {\n return ctx.inputChanged($event);\n })(\"click\", function DaterangepickerDirective_click_HostBindingHandler($event) {\n return ctx.open($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵhostProperty(\"disabled\", ctx.disabled);\n }\n },\n inputs: {\n minDate: \"minDate\",\n maxDate: \"maxDate\",\n autoApply: \"autoApply\",\n alwaysShowCalendars: \"alwaysShowCalendars\",\n showCustomRangeLabel: \"showCustomRangeLabel\",\n linkedCalendars: \"linkedCalendars\",\n dateLimit: \"dateLimit\",\n singleDatePicker: \"singleDatePicker\",\n showWeekNumbers: \"showWeekNumbers\",\n showISOWeekNumbers: \"showISOWeekNumbers\",\n showDropdowns: \"showDropdowns\",\n isInvalidDate: \"isInvalidDate\",\n isCustomDate: \"isCustomDate\",\n isTooltipDate: \"isTooltipDate\",\n showClearButton: \"showClearButton\",\n customRangeDirection: \"customRangeDirection\",\n ranges: \"ranges\",\n opens: \"opens\",\n drops: \"drops\",\n firstMonthDayClass: \"firstMonthDayClass\",\n lastMonthDayClass: \"lastMonthDayClass\",\n emptyWeekRowClass: \"emptyWeekRowClass\",\n emptyWeekColumnClass: \"emptyWeekColumnClass\",\n firstDayOfNextMonthClass: \"firstDayOfNextMonthClass\",\n lastDayOfPreviousMonthClass: \"lastDayOfPreviousMonthClass\",\n keepCalendarOpeningWithRange: \"keepCalendarOpeningWithRange\",\n showRangeLabelOnInput: \"showRangeLabelOnInput\",\n showCancel: \"showCancel\",\n lockStartDate: \"lockStartDate\",\n timePicker: \"timePicker\",\n timePicker24Hour: \"timePicker24Hour\",\n timePickerIncrement: \"timePickerIncrement\",\n timePickerSeconds: \"timePickerSeconds\",\n closeOnAutoApply: \"closeOnAutoApply\",\n endKeyHolder: \"endKeyHolder\",\n startKey: \"startKey\",\n locale: \"locale\",\n endKey: \"endKey\"\n },\n outputs: {\n onChange: \"change\",\n rangeClicked: \"rangeClicked\",\n datesUpdated: \"datesUpdated\",\n startDateChanged: \"startDateChanged\",\n endDateChanged: \"endDateChanged\",\n clearClicked: \"clearClicked\"\n },\n features: [i0.ɵɵProvidersFeature([{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DaterangepickerDirective),\n multi: true\n }]), i0.ɵɵNgOnChangesFeature]\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DaterangepickerDirective, [{\n type: Directive,\n args: [{\n selector: 'input[ngxDaterangepickerMd]',\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DaterangepickerDirective),\n multi: true\n }]\n }]\n }], function () {\n return [{\n type: i0.ViewContainerRef\n }, {\n type: i0.ChangeDetectorRef\n }, {\n type: i0.ElementRef\n }, {\n type: i0.Renderer2\n }, {\n type: i0.KeyValueDiffers\n }, {\n type: LocaleService\n }, {\n type: i0.ElementRef\n }];\n }, {\n onChange: [{\n type: Output,\n args: ['change']\n }],\n rangeClicked: [{\n type: Output,\n args: ['rangeClicked']\n }],\n datesUpdated: [{\n type: Output,\n args: ['datesUpdated']\n }],\n startDateChanged: [{\n type: Output\n }],\n endDateChanged: [{\n type: Output\n }],\n clearClicked: [{\n type: Output\n }],\n minDate: [{\n type: Input\n }],\n maxDate: [{\n type: Input\n }],\n autoApply: [{\n type: Input\n }],\n alwaysShowCalendars: [{\n type: Input\n }],\n showCustomRangeLabel: [{\n type: Input\n }],\n linkedCalendars: [{\n type: Input\n }],\n dateLimit: [{\n type: Input\n }],\n singleDatePicker: [{\n type: Input\n }],\n showWeekNumbers: [{\n type: Input\n }],\n showISOWeekNumbers: [{\n type: Input\n }],\n showDropdowns: [{\n type: Input\n }],\n isInvalidDate: [{\n type: Input\n }],\n isCustomDate: [{\n type: Input\n }],\n isTooltipDate: [{\n type: Input\n }],\n showClearButton: [{\n type: Input\n }],\n customRangeDirection: [{\n type: Input\n }],\n ranges: [{\n type: Input\n }],\n opens: [{\n type: Input\n }],\n drops: [{\n type: Input\n }],\n firstMonthDayClass: [{\n type: Input\n }],\n lastMonthDayClass: [{\n type: Input\n }],\n emptyWeekRowClass: [{\n type: Input\n }],\n emptyWeekColumnClass: [{\n type: Input\n }],\n firstDayOfNextMonthClass: [{\n type: Input\n }],\n lastDayOfPreviousMonthClass: [{\n type: Input\n }],\n keepCalendarOpeningWithRange: [{\n type: Input\n }],\n showRangeLabelOnInput: [{\n type: Input\n }],\n showCancel: [{\n type: Input\n }],\n lockStartDate: [{\n type: Input\n }],\n timePicker: [{\n type: Input\n }],\n timePicker24Hour: [{\n type: Input\n }],\n timePickerIncrement: [{\n type: Input\n }],\n timePickerSeconds: [{\n type: Input\n }],\n closeOnAutoApply: [{\n type: Input\n }],\n endKeyHolder: [{\n type: Input\n }],\n disabled: [{\n type: HostBinding,\n args: ['disabled']\n }],\n startKey: [{\n type: Input\n }],\n locale: [{\n type: Input\n }],\n endKey: [{\n type: Input\n }],\n outsideClick: [{\n type: HostListener,\n args: ['document:click', ['$event']]\n }],\n hide: [{\n type: HostListener,\n args: ['keyup.esc', ['$event']]\n }],\n onBlur: [{\n type: HostListener,\n args: ['blur']\n }],\n inputChanged: [{\n type: HostListener,\n args: ['keyup', ['$event']]\n }],\n open: [{\n type: HostListener,\n args: ['click', ['$event']]\n }]\n });\n})();\nclass NgxDaterangepickerMd {\n constructor() {}\n static forRoot(config = {}) {\n return {\n ngModule: NgxDaterangepickerMd,\n providers: [{\n provide: LOCALE_CONFIG,\n useValue: config\n }, {\n provide: LocaleService,\n useClass: LocaleService,\n deps: [LOCALE_CONFIG]\n }]\n };\n }\n}\nNgxDaterangepickerMd.ɵfac = function NgxDaterangepickerMd_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgxDaterangepickerMd)();\n};\nNgxDaterangepickerMd.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgxDaterangepickerMd\n});\nNgxDaterangepickerMd.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [],\n imports: [[CommonModule, FormsModule, ReactiveFormsModule]]\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NgxDaterangepickerMd, [{\n type: NgModule,\n args: [{\n declarations: [DaterangepickerComponent, DaterangepickerDirective],\n imports: [CommonModule, FormsModule, ReactiveFormsModule],\n providers: [],\n exports: [DaterangepickerComponent, DaterangepickerDirective]\n }]\n }], function () {\n return [];\n }, null);\n})();\nexport { DaterangepickerComponent, DaterangepickerDirective, DefaultLocaleConfig, LOCALE_CONFIG, LocaleService, NgxDaterangepickerMd };\n","import { NgModule } from \"@angular/core\";\r\nimport { Routes, RouterModule } from \"@angular/router\";\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n})\r\nexport class SharedRoutingModule {}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport moment from 'moment';\r\n\r\n@Component({\r\n selector: 'app-calendar-picker',\r\n templateUrl: './calendar-picker.component.html',\r\n styleUrls: ['./calendar-picker.component.css']\r\n})\r\nexport class CalendarPickerComponent implements OnInit {\r\n\r\n selected: any;\r\n alwaysShowCalendars: boolean;\r\n ranges: any = {\r\n 'Today': [moment().subtract(0, 'days'), moment()],\r\n 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],\r\n 'Last 7 Days': [moment().subtract(6, 'days'), moment()],\r\n 'Last 15 Days': [moment().subtract(14, 'days'), moment()],\r\n 'Last 30 Days': [moment().subtract(29, 'days'), moment()],\r\n 'This Week': [moment().startOf('isoWeek'), moment()],\r\n 'This Month': [moment().startOf('month'), moment()]\r\n }\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class AppMenuService {\r\n\r\n constructor() {\r\n }\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { NgbModule } from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\nimport { NgxDaterangepickerMd } from \"ngx-daterangepicker-material\";\r\n\r\nimport { SharedRoutingModule } from \"./shared-routing.module\";\r\nimport { CalendarPickerComponent } from \"./calendar-picker/calendar-picker.component\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { AppMenuService } from \"src/app/app-menu/app-menu.service\";\r\n\r\n@NgModule({\r\n declarations: [CalendarPickerComponent],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n NgbModule,\r\n NgxDaterangepickerMd.forRoot({\r\n separator: \" - \",\r\n applyLabel: \"Apply\",\r\n cancelLabel: \"Cancel\",\r\n }),\r\n SharedRoutingModule,\r\n ],\r\n providers: [AppMenuService],\r\n exports: [CalendarPickerComponent],\r\n})\r\nexport class SharedModule {}\r\n","import * as i0 from '@angular/core';\nimport { EventEmitter, forwardRef, Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChild, Input, Output, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nconst _c0 = [\"selector\"];\nconst _c1 = [[[\"option\"], [\"optgroup\"]]];\nconst _c2 = [\"option, optgroup\"];\nclass NgSelect2Component {\n // private style = `CSS`;\n constructor(renderer, zone, _element) {\n this.renderer = renderer;\n this.zone = zone;\n this._element = _element;\n // value for placeholder\n this.placeholder = '';\n this.dropdownParent = '';\n this.allowClear = false;\n // enable / disable select2\n this.disabled = false;\n // Specify the select's ID\n this.id = null;\n // Specify the select's class(es)\n this.class = null;\n // Specify the select's required attribute\n this.required = null;\n // emitter when value is changed\n this.valueChanged = new EventEmitter();\n this.element = undefined;\n this.check = false;\n this.propagateChange = value => {};\n }\n ngDoCheck() {\n if (!this.element) {\n return;\n }\n }\n ngOnInit() {\n // if (this.cssImport) {\n // const head = document.getElementsByTagName('head')[0];\n // const link: any = head.children[head.children.length - 1];\n // if (!link.version) {\n // const newLink = this.renderer.createElement(head, 'style');\n // this.renderer.setElementProperty(newLink, 'type', 'text/css');\n // this.renderer.setElementProperty(newLink, 'version', 'select2');\n // this.renderer.setElementProperty(newLink, 'innerHTML', this.style);\n // }\n // }\n }\n ngOnChanges(changes) {\n if (!this.element) {\n return;\n }\n if (changes['data'] && JSON.stringify(changes['data'].previousValue) !== JSON.stringify(changes['data'].currentValue)) {\n this.initPlugin();\n const newValue = this.value;\n this.setElementValue(newValue);\n this.valueChanged.emit(newValue);\n this.propagateChange(newValue);\n }\n if (changes['value'] && changes['value'].previousValue !== changes['value'].currentValue) {\n const newValue = changes['value'].currentValue;\n this.setElementValue(newValue);\n this.valueChanged.emit(newValue);\n this.propagateChange(newValue);\n }\n if (changes['disabled'] && changes['disabled'].previousValue !== changes['disabled'].currentValue) {\n this.renderer.setProperty(this.selector.nativeElement, 'disabled', this.disabled);\n }\n if (changes['placeholder'] && changes['placeholder'].previousValue !== changes['placeholder'].currentValue) {\n this.element.data('select2').$container.find('.select2-selection__placeholder').text(this.placeholder);\n }\n if (changes['dropdownParent'] && changes['dropdownParent'].previousValue !== changes['dropdownParent'].currentValue) {\n this.renderer.setAttribute(this.selector.nativeElement, 'data-dropdownParent', '#' + this.dropdownParent);\n }\n if (changes['allowClear'] && changes['allowClear'].previousValue !== changes['allowClear'].currentValue) {\n this.renderer.setAttribute(this.selector.nativeElement, 'data-allow-clear', this.allowClear.toString());\n }\n }\n ngAfterViewInit() {\n this.element = jQuery(this.selector.nativeElement);\n this.renderer.setAttribute(this.selector.nativeElement, 'data-dropdownParent', '#' + this.dropdownParent);\n this.renderer.setAttribute(this.selector.nativeElement, 'data-allow-clear', this.allowClear.toString());\n // console.log(this.selector.nativeElement);\n this.initPlugin();\n if (this.value !== undefined && this.value !== null) {\n this.setElementValue(this.value);\n }\n this.element.on('select2:select select2:unselect change', e => {\n // const newValue: string = (e.type === 'select2:unselect') ? '' : this.element.val();\n const newValue = this.element.val();\n this.valueChanged.emit(newValue);\n if (e.type !== 'change') {\n this.propagateChange(newValue);\n }\n });\n }\n ngOnDestroy() {\n if (this.element) {\n this.element.off('select2:select');\n }\n }\n initPlugin() {\n if (!this.element.select2) {\n if (!this.check) {\n this.check = true;\n console.log('Please add Select2 library (js file) to the project.' + 'You can download it from https://github.com/select2/select2/tree/master/dist/js.');\n }\n return;\n }\n // If select2 already initialized remove him and remove all tags inside\n if (this.element.hasClass('select2-hidden-accessible') === true) {\n this.element.select2('destroy');\n this.renderer.setProperty(this.selector.nativeElement, 'innerHTML', '');\n }\n const options = {\n data: this.data,\n width: this.width ? this.width : 'resolve',\n placeholder: this.placeholder\n };\n if (this.dropdownParent) {\n options.dropdownParent = jQuery('#' + this.dropdownParent);\n }\n Object.assign(options, this.options);\n if (options.matcher) {\n jQuery.fn.select2.amd.require(['select2/compat/matcher'], oldMatcher => {\n options.matcher = oldMatcher(options.matcher);\n this.element.select2(options);\n if (typeof this.value !== 'undefined') {\n this.setElementValue(this.value);\n }\n });\n } else {\n this.element.select2(options);\n }\n this.renderer.setProperty(this.selector.nativeElement, 'disabled', this.disabled);\n }\n setElementValue(newValue) {\n // this.zone.run(() => {\n if (Array.isArray(newValue)) {\n for (const option of this.selector.nativeElement.options) {\n this.renderer.setProperty(option, 'selected', newValue.indexOf(option.value) > -1);\n }\n } else {\n this.renderer.setProperty(this.selector.nativeElement, 'value', newValue);\n }\n if (this.element) {\n this.element.trigger('change.select2');\n }\n // });\n }\n writeValue(value) {\n if (value !== undefined) {\n this.value = value;\n this.setElementValue(value);\n }\n }\n registerOnChange(fn) {\n this.propagateChange = fn;\n }\n registerOnTouched() {}\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.renderer.setProperty(this.selector.nativeElement, 'disabled', this.disabled);\n }\n}\nNgSelect2Component.ɵfac = function NgSelect2Component_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgSelect2Component)(i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ElementRef));\n};\nNgSelect2Component.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgSelect2Component,\n selectors: [[\"ng-select2\"]],\n viewQuery: function NgSelect2Component_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c0, 7);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.selector = _t.first);\n }\n },\n inputs: {\n data: \"data\",\n placeholder: \"placeholder\",\n dropdownParent: \"dropdownParent\",\n allowClear: \"allowClear\",\n value: \"value\",\n width: \"width\",\n disabled: \"disabled\",\n id: \"id\",\n class: \"class\",\n required: \"required\",\n options: \"options\"\n },\n outputs: {\n valueChanged: \"valueChanged\"\n },\n features: [i0.ɵɵProvidersFeature([{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgSelect2Component),\n multi: true\n }]), i0.ɵɵNgOnChangesFeature],\n ngContentSelectors: _c2,\n decls: 3,\n vars: 3,\n consts: [[\"selector\", \"\"]],\n template: function NgSelect2Component_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c1);\n i0.ɵɵelementStart(0, \"select\", null, 0);\n i0.ɵɵprojection(2);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"id\", ctx.id)(\"class\", ctx.class)(\"required\", ctx.required);\n }\n },\n encapsulation: 2,\n changeDetection: 0\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NgSelect2Component, [{\n type: Component,\n args: [{\n selector: 'ng-select2',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgSelect2Component),\n multi: true\n }],\n template: \"\\r\\n\"\n }]\n }], function () {\n return [{\n type: i0.Renderer2\n }, {\n type: i0.NgZone\n }, {\n type: i0.ElementRef\n }];\n }, {\n selector: [{\n type: ViewChild,\n args: ['selector', {\n static: true\n }]\n }],\n data: [{\n type: Input\n }],\n placeholder: [{\n type: Input\n }],\n dropdownParent: [{\n type: Input\n }],\n allowClear: [{\n type: Input\n }],\n value: [{\n type: Input\n }],\n width: [{\n type: Input\n }],\n disabled: [{\n type: Input\n }],\n id: [{\n type: Input\n }],\n class: [{\n type: Input\n }],\n required: [{\n type: Input\n }],\n options: [{\n type: Input\n }],\n valueChanged: [{\n type: Output\n }]\n });\n})();\nclass NgSelect2Module {}\nNgSelect2Module.ɵfac = function NgSelect2Module_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgSelect2Module)();\n};\nNgSelect2Module.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgSelect2Module\n});\nNgSelect2Module.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [[CommonModule]]\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NgSelect2Module, [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [NgSelect2Component],\n exports: [NgSelect2Component]\n }]\n }], null, null);\n})();\n\n/*\r\n * Public API Surface of ng-select2\r\n */\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { NgSelect2Component, NgSelect2Module };"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAOA,KAAC,SAAU,QAAQ,SAAS;AAC1B,aAAO,YAAY,YAAY,OAAO,WAAW,cAAc,OAAO,UAAU,QAAQ,IAAI,OAAO,WAAW,cAAc,OAAO,MAAM,OAAO,OAAO,IAAI,OAAO,SAAS,QAAQ;AAAA,IACrL,GAAG,SAAM,WAAY;AACnB;AAEA,UAAI;AACJ,eAAS,QAAQ;AACf,eAAO,aAAa,MAAM,MAAM,SAAS;AAAA,MAC3C;AAIA,eAAS,gBAAgB,UAAU;AACjC,uBAAe;AAAA,MACjB;AACA,eAAS,QAAQ,OAAO;AACtB,eAAO,iBAAiB,SAAS,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AAAA,MAC7E;AACA,eAASA,UAAS,OAAO;AAGvB,eAAO,SAAS,QAAQ,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AAAA,MACpE;AACA,eAAS,WAAW,GAAG,GAAG;AACxB,eAAO,OAAO,UAAU,eAAe,KAAK,GAAG,CAAC;AAAA,MAClD;AACA,eAAS,cAAc,KAAK;AAC1B,YAAI,OAAO,qBAAqB;AAC9B,iBAAO,OAAO,oBAAoB,GAAG,EAAE,WAAW;AAAA,QACpD,OAAO;AACL,cAAI;AACJ,eAAK,KAAK,KAAK;AACb,gBAAI,WAAW,KAAK,CAAC,GAAG;AACtB,qBAAO;AAAA,YACT;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AACA,eAASC,aAAY,OAAO;AAC1B,eAAO,UAAU;AAAA,MACnB;AACA,eAAS,SAAS,OAAO;AACvB,eAAO,OAAO,UAAU,YAAY,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AAAA,MAChF;AACA,eAAS,OAAO,OAAO;AACrB,eAAO,iBAAiB,QAAQ,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AAAA,MAC5E;AACA,eAASC,KAAI,KAAK,IAAI;AACpB,YAAI,MAAM,CAAC,GACT,GACA,SAAS,IAAI;AACf,aAAK,IAAI,GAAG,IAAI,QAAQ,EAAE,GAAG;AAC3B,cAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AAAA,QACxB;AACA,eAAO;AAAA,MACT;AACA,eAAS,OAAO,GAAG,GAAG;AACpB,iBAAS,KAAK,GAAG;AACf,cAAI,WAAW,GAAG,CAAC,GAAG;AACpB,cAAE,CAAC,IAAI,EAAE,CAAC;AAAA,UACZ;AAAA,QACF;AACA,YAAI,WAAW,GAAG,UAAU,GAAG;AAC7B,YAAE,WAAW,EAAE;AAAA,QACjB;AACA,YAAI,WAAW,GAAG,SAAS,GAAG;AAC5B,YAAE,UAAU,EAAE;AAAA,QAChB;AACA,eAAO;AAAA,MACT;AACA,eAAS,UAAU,OAAOC,SAAQC,SAAQ,QAAQ;AAChD,eAAO,iBAAiB,OAAOD,SAAQC,SAAQ,QAAQ,IAAI,EAAE,IAAI;AAAA,MACnE;AACA,eAAS,sBAAsB;AAE7B,eAAO;AAAA,UACL,OAAO;AAAA,UACP,cAAc,CAAC;AAAA,UACf,aAAa,CAAC;AAAA,UACd,UAAU;AAAA,UACV,eAAe;AAAA,UACf,WAAW;AAAA,UACX,YAAY;AAAA,UACZ,cAAc;AAAA,UACd,eAAe;AAAA,UACf,iBAAiB;AAAA,UACjB,KAAK;AAAA,UACL,iBAAiB,CAAC;AAAA,UAClB,KAAK;AAAA,UACL,UAAU;AAAA,UACV,SAAS;AAAA,UACT,iBAAiB;AAAA,QACnB;AAAA,MACF;AACA,eAAS,gBAAgB,GAAG;AAC1B,YAAI,EAAE,OAAO,MAAM;AACjB,YAAE,MAAM,oBAAoB;AAAA,QAC9B;AACA,eAAO,EAAE;AAAA,MACX;AACA,UAAI;AACJ,UAAI,MAAM,UAAU,MAAM;AACxB,eAAO,MAAM,UAAU;AAAA,MACzB,OAAO;AACL,eAAO,SAAU,KAAK;AACpB,cAAIC,KAAI,OAAO,IAAI,GACjB,MAAMA,GAAE,WAAW,GACnB;AACF,eAAK,IAAI,GAAG,IAAI,KAAK,KAAK;AACxB,gBAAI,KAAKA,MAAK,IAAI,KAAK,MAAMA,GAAE,CAAC,GAAG,GAAGA,EAAC,GAAG;AACxC,qBAAO;AAAA,YACT;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AACA,eAAS,QAAQ,GAAG;AAClB,YAAI,EAAE,YAAY,MAAM;AACtB,cAAI,QAAQ,gBAAgB,CAAC,GAC3B,cAAc,KAAK,KAAK,MAAM,iBAAiB,SAAU,GAAG;AAC1D,mBAAO,KAAK;AAAA,UACd,CAAC,GACD,aAAa,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,MAAM,WAAW,KAAK,CAAC,MAAM,SAAS,CAAC,MAAM,cAAc,CAAC,MAAM,gBAAgB,CAAC,MAAM,kBAAkB,CAAC,MAAM,mBAAmB,CAAC,MAAM,aAAa,CAAC,MAAM,iBAAiB,CAAC,MAAM,oBAAoB,CAAC,MAAM,YAAY,MAAM,YAAY;AAC1R,cAAI,EAAE,SAAS;AACb,yBAAa,cAAc,MAAM,kBAAkB,KAAK,MAAM,aAAa,WAAW,KAAK,MAAM,YAAY;AAAA,UAC/G;AACA,cAAI,OAAO,YAAY,QAAQ,CAAC,OAAO,SAAS,CAAC,GAAG;AAClD,cAAE,WAAW;AAAA,UACf,OAAO;AACL,mBAAO;AAAA,UACT;AAAA,QACF;AACA,eAAO,EAAE;AAAA,MACX;AACA,eAAS,cAAc,OAAO;AAC5B,YAAI,IAAI,UAAU,GAAG;AACrB,YAAI,SAAS,MAAM;AACjB,iBAAO,gBAAgB,CAAC,GAAG,KAAK;AAAA,QAClC,OAAO;AACL,0BAAgB,CAAC,EAAE,kBAAkB;AAAA,QACvC;AACA,eAAO;AAAA,MACT;AAIA,UAAI,mBAAmB,MAAM,mBAAmB,CAAC,GAC/C,mBAAmB;AACrB,eAAS,WAAWC,KAAIC,OAAM;AAC5B,YAAI,GACF,MACA,KACA,sBAAsB,iBAAiB;AACzC,YAAI,CAACN,aAAYM,MAAK,gBAAgB,GAAG;AACvC,UAAAD,IAAG,mBAAmBC,MAAK;AAAA,QAC7B;AACA,YAAI,CAACN,aAAYM,MAAK,EAAE,GAAG;AACzB,UAAAD,IAAG,KAAKC,MAAK;AAAA,QACf;AACA,YAAI,CAACN,aAAYM,MAAK,EAAE,GAAG;AACzB,UAAAD,IAAG,KAAKC,MAAK;AAAA,QACf;AACA,YAAI,CAACN,aAAYM,MAAK,EAAE,GAAG;AACzB,UAAAD,IAAG,KAAKC,MAAK;AAAA,QACf;AACA,YAAI,CAACN,aAAYM,MAAK,OAAO,GAAG;AAC9B,UAAAD,IAAG,UAAUC,MAAK;AAAA,QACpB;AACA,YAAI,CAACN,aAAYM,MAAK,IAAI,GAAG;AAC3B,UAAAD,IAAG,OAAOC,MAAK;AAAA,QACjB;AACA,YAAI,CAACN,aAAYM,MAAK,MAAM,GAAG;AAC7B,UAAAD,IAAG,SAASC,MAAK;AAAA,QACnB;AACA,YAAI,CAACN,aAAYM,MAAK,OAAO,GAAG;AAC9B,UAAAD,IAAG,UAAUC,MAAK;AAAA,QACpB;AACA,YAAI,CAACN,aAAYM,MAAK,GAAG,GAAG;AAC1B,UAAAD,IAAG,MAAM,gBAAgBC,KAAI;AAAA,QAC/B;AACA,YAAI,CAACN,aAAYM,MAAK,OAAO,GAAG;AAC9B,UAAAD,IAAG,UAAUC,MAAK;AAAA,QACpB;AACA,YAAI,sBAAsB,GAAG;AAC3B,eAAK,IAAI,GAAG,IAAI,qBAAqB,KAAK;AACxC,mBAAO,iBAAiB,CAAC;AACzB,kBAAMA,MAAK,IAAI;AACf,gBAAI,CAACN,aAAY,GAAG,GAAG;AACrB,cAAAK,IAAG,IAAI,IAAI;AAAA,YACb;AAAA,UACF;AAAA,QACF;AACA,eAAOA;AAAA,MACT;AAGA,eAAS,OAAO,QAAQ;AACtB,mBAAW,MAAM,MAAM;AACvB,aAAK,KAAK,IAAI,KAAK,OAAO,MAAM,OAAO,OAAO,GAAG,QAAQ,IAAI,GAAG;AAChE,YAAI,CAAC,KAAK,QAAQ,GAAG;AACnB,eAAK,KAAK,oBAAI,KAAK,GAAG;AAAA,QACxB;AAGA,YAAI,qBAAqB,OAAO;AAC9B,6BAAmB;AACnB,gBAAM,aAAa,IAAI;AACvB,6BAAmB;AAAA,QACrB;AAAA,MACF;AACA,eAAS,SAAS,KAAK;AACrB,eAAO,eAAe,UAAU,OAAO,QAAQ,IAAI,oBAAoB;AAAA,MACzE;AACA,eAAS,KAAK,KAAK;AACjB,YAAI,MAAM,gCAAgC,SAAS,OAAO,YAAY,eAAe,QAAQ,MAAM;AACjG,kBAAQ,KAAK,0BAA0B,GAAG;AAAA,QAC5C;AAAA,MACF;AACA,eAAS,UAAU,KAAK,IAAI;AAC1B,YAAI,YAAY;AAChB,eAAO,OAAO,WAAY;AACxB,cAAI,MAAM,sBAAsB,MAAM;AACpC,kBAAM,mBAAmB,MAAM,GAAG;AAAA,UACpC;AACA,cAAI,WAAW;AACb,gBAAI,OAAO,CAAC,GACV,KACA,GACA,KACA,SAAS,UAAU;AACrB,iBAAK,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC3B,oBAAM;AACN,kBAAI,OAAO,UAAU,CAAC,MAAM,UAAU;AACpC,uBAAO,QAAQ,IAAI;AACnB,qBAAK,OAAO,UAAU,CAAC,GAAG;AACxB,sBAAI,WAAW,UAAU,CAAC,GAAG,GAAG,GAAG;AACjC,2BAAO,MAAM,OAAO,UAAU,CAAC,EAAE,GAAG,IAAI;AAAA,kBAC1C;AAAA,gBACF;AACA,sBAAM,IAAI,MAAM,GAAG,EAAE;AAAA,cACvB,OAAO;AACL,sBAAM,UAAU,CAAC;AAAA,cACnB;AACA,mBAAK,KAAK,GAAG;AAAA,YACf;AACA,iBAAK,MAAM,kBAAkB,MAAM,UAAU,MAAM,KAAK,IAAI,EAAE,KAAK,EAAE,IAAI,OAAO,IAAI,MAAM,EAAE,KAAK;AACjG,wBAAY;AAAA,UACd;AACA,iBAAO,GAAG,MAAM,MAAM,SAAS;AAAA,QACjC,GAAG,EAAE;AAAA,MACP;AACA,UAAI,eAAe,CAAC;AACpB,eAAS,gBAAgB,MAAM,KAAK;AAClC,YAAI,MAAM,sBAAsB,MAAM;AACpC,gBAAM,mBAAmB,MAAM,GAAG;AAAA,QACpC;AACA,YAAI,CAAC,aAAa,IAAI,GAAG;AACvB,eAAK,GAAG;AACR,uBAAa,IAAI,IAAI;AAAA,QACvB;AAAA,MACF;AACA,YAAM,8BAA8B;AACpC,YAAM,qBAAqB;AAC3B,eAASE,YAAW,OAAO;AACzB,eAAO,OAAO,aAAa,eAAe,iBAAiB,YAAY,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AAAA,MACnH;AACA,eAAS,IAAI,QAAQ;AACnB,YAAI,MAAM;AACV,aAAK,KAAK,QAAQ;AAChB,cAAI,WAAW,QAAQ,CAAC,GAAG;AACzB,mBAAO,OAAO,CAAC;AACf,gBAAIA,YAAW,IAAI,GAAG;AACpB,mBAAK,CAAC,IAAI;AAAA,YACZ,OAAO;AACL,mBAAK,MAAM,CAAC,IAAI;AAAA,YAClB;AAAA,UACF;AAAA,QACF;AACA,aAAK,UAAU;AAIf,aAAK,iCAAiC,IAAI,QAAQ,KAAK,wBAAwB,UAAU,KAAK,cAAc,UAAU,MAAM,UAAU,MAAM;AAAA,MAC9I;AACA,eAAS,aAAa,cAAc,aAAa;AAC/C,YAAI,MAAM,OAAO,CAAC,GAAG,YAAY,GAC/B;AACF,aAAK,QAAQ,aAAa;AACxB,cAAI,WAAW,aAAa,IAAI,GAAG;AACjC,gBAAIR,UAAS,aAAa,IAAI,CAAC,KAAKA,UAAS,YAAY,IAAI,CAAC,GAAG;AAC/D,kBAAI,IAAI,IAAI,CAAC;AACb,qBAAO,IAAI,IAAI,GAAG,aAAa,IAAI,CAAC;AACpC,qBAAO,IAAI,IAAI,GAAG,YAAY,IAAI,CAAC;AAAA,YACrC,WAAW,YAAY,IAAI,KAAK,MAAM;AACpC,kBAAI,IAAI,IAAI,YAAY,IAAI;AAAA,YAC9B,OAAO;AACL,qBAAO,IAAI,IAAI;AAAA,YACjB;AAAA,UACF;AAAA,QACF;AACA,aAAK,QAAQ,cAAc;AACzB,cAAI,WAAW,cAAc,IAAI,KAAK,CAAC,WAAW,aAAa,IAAI,KAAKA,UAAS,aAAa,IAAI,CAAC,GAAG;AAEpG,gBAAI,IAAI,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC;AAAA,UAClC;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,eAAS,OAAO,QAAQ;AACtB,YAAI,UAAU,MAAM;AAClB,eAAK,IAAI,MAAM;AAAA,QACjB;AAAA,MACF;AACA,UAAI;AACJ,UAAI,OAAO,MAAM;AACf,eAAO,OAAO;AAAA,MAChB,OAAO;AACL,eAAO,SAAU,KAAK;AACpB,cAAI,GACF,MAAM,CAAC;AACT,eAAK,KAAK,KAAK;AACb,gBAAI,WAAW,KAAK,CAAC,GAAG;AACtB,kBAAI,KAAK,CAAC;AAAA,YACZ;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AACA,UAAI,kBAAkB;AAAA,QACpB,SAAS;AAAA,QACT,SAAS;AAAA,QACT,UAAU;AAAA,QACV,SAAS;AAAA,QACT,UAAU;AAAA,QACV,UAAU;AAAA,MACZ;AACA,eAAS,SAAS,KAAK,KAAKS,MAAK;AAC/B,YAAI,SAAS,KAAK,UAAU,GAAG,KAAK,KAAK,UAAU,UAAU;AAC7D,eAAOD,YAAW,MAAM,IAAI,OAAO,KAAK,KAAKC,IAAG,IAAI;AAAA,MACtD;AACA,eAAS,SAAS,QAAQ,cAAc,WAAW;AACjD,YAAI,YAAY,KAAK,KAAK,IAAI,MAAM,GAClC,cAAc,eAAe,UAAU,QACvCC,QAAO,UAAU;AACnB,gBAAQA,QAAO,YAAY,MAAM,KAAK,OAAO,KAAK,IAAI,IAAI,KAAK,IAAI,GAAG,WAAW,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,IAAI;AAAA,MAC7G;AACA,UAAIC,oBAAmB,0MACrB,wBAAwB,8CACxB,kBAAkB,CAAC,GACnB,uBAAuB,CAAC;AAM1B,eAAS,eAAeC,QAAO,QAAQC,UAAS,UAAU;AACxD,YAAI,OAAO;AACX,YAAI,OAAO,aAAa,UAAU;AAChC,iBAAO,WAAY;AACjB,mBAAO,KAAK,QAAQ,EAAE;AAAA,UACxB;AAAA,QACF;AACA,YAAID,QAAO;AACT,+BAAqBA,MAAK,IAAI;AAAA,QAChC;AACA,YAAI,QAAQ;AACV,+BAAqB,OAAO,CAAC,CAAC,IAAI,WAAY;AAC5C,mBAAO,SAAS,KAAK,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;AAAA,UACnE;AAAA,QACF;AACA,YAAIC,UAAS;AACX,+BAAqBA,QAAO,IAAI,WAAY;AAC1C,mBAAO,KAAK,WAAW,EAAE,QAAQ,KAAK,MAAM,MAAM,SAAS,GAAGD,MAAK;AAAA,UACrE;AAAA,QACF;AAAA,MACF;AACA,eAAS,uBAAuB,OAAO;AACrC,YAAI,MAAM,MAAM,UAAU,GAAG;AAC3B,iBAAO,MAAM,QAAQ,YAAY,EAAE;AAAA,QACrC;AACA,eAAO,MAAM,QAAQ,OAAO,EAAE;AAAA,MAChC;AACA,eAAS,mBAAmBT,SAAQ;AAClC,YAAI,QAAQA,QAAO,MAAMQ,iBAAgB,GACvC,GACA;AACF,aAAK,IAAI,GAAG,SAAS,MAAM,QAAQ,IAAI,QAAQ,KAAK;AAClD,cAAI,qBAAqB,MAAM,CAAC,CAAC,GAAG;AAClC,kBAAM,CAAC,IAAI,qBAAqB,MAAM,CAAC,CAAC;AAAA,UAC1C,OAAO;AACL,kBAAM,CAAC,IAAI,uBAAuB,MAAM,CAAC,CAAC;AAAA,UAC5C;AAAA,QACF;AACA,eAAO,SAAU,KAAK;AACpB,cAAI,SAAS,IACXG;AACF,eAAKA,KAAI,GAAGA,KAAI,QAAQA,MAAK;AAC3B,sBAAUN,YAAW,MAAMM,EAAC,CAAC,IAAI,MAAMA,EAAC,EAAE,KAAK,KAAKX,OAAM,IAAI,MAAMW,EAAC;AAAA,UACvE;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AAGA,eAAS,aAAa,GAAGX,SAAQ;AAC/B,YAAI,CAAC,EAAE,QAAQ,GAAG;AAChB,iBAAO,EAAE,WAAW,EAAE,YAAY;AAAA,QACpC;AACA,QAAAA,UAAS,aAAaA,SAAQ,EAAE,WAAW,CAAC;AAC5C,wBAAgBA,OAAM,IAAI,gBAAgBA,OAAM,KAAK,mBAAmBA,OAAM;AAC9E,eAAO,gBAAgBA,OAAM,EAAE,CAAC;AAAA,MAClC;AACA,eAAS,aAAaA,SAAQC,SAAQ;AACpC,YAAI,IAAI;AACR,iBAAS,4BAA4B,OAAO;AAC1C,iBAAOA,QAAO,eAAe,KAAK,KAAK;AAAA,QACzC;AACA,8BAAsB,YAAY;AAClC,eAAO,KAAK,KAAK,sBAAsB,KAAKD,OAAM,GAAG;AACnD,UAAAA,UAASA,QAAO,QAAQ,uBAAuB,2BAA2B;AAC1E,gCAAsB,YAAY;AAClC,eAAK;AAAA,QACP;AACA,eAAOA;AAAA,MACT;AACA,UAAI,wBAAwB;AAAA,QAC1B,KAAK;AAAA,QACL,IAAI;AAAA,QACJ,GAAG;AAAA,QACH,IAAI;AAAA,QACJ,KAAK;AAAA,QACL,MAAM;AAAA,MACR;AACA,eAAS,eAAe,KAAK;AAC3B,YAAIA,UAAS,KAAK,gBAAgB,GAAG,GACnC,cAAc,KAAK,gBAAgB,IAAI,YAAY,CAAC;AACtD,YAAIA,WAAU,CAAC,aAAa;AAC1B,iBAAOA;AAAA,QACT;AACA,aAAK,gBAAgB,GAAG,IAAI,YAAY,MAAMQ,iBAAgB,EAAE,IAAI,SAAU,KAAK;AACjF,cAAI,QAAQ,UAAU,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ;AACpE,mBAAO,IAAI,MAAM,CAAC;AAAA,UACpB;AACA,iBAAO;AAAA,QACT,CAAC,EAAE,KAAK,EAAE;AACV,eAAO,KAAK,gBAAgB,GAAG;AAAA,MACjC;AACA,UAAI,qBAAqB;AACzB,eAAS,cAAc;AACrB,eAAO,KAAK;AAAA,MACd;AACA,UAAI,iBAAiB,MACnB,gCAAgC;AAClC,eAASE,SAAQ,QAAQ;AACvB,eAAO,KAAK,SAAS,QAAQ,MAAM,MAAM;AAAA,MAC3C;AACA,UAAI,sBAAsB;AAAA,QACxB,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,GAAG;AAAA,QACH,IAAI;AAAA,QACJ,GAAG;AAAA,QACH,IAAI;AAAA,QACJ,GAAG;AAAA,QACH,IAAI;AAAA,QACJ,GAAG;AAAA,QACH,IAAI;AAAA,QACJ,GAAG;AAAA,QACH,IAAI;AAAA,QACJ,GAAG;AAAA,QACH,IAAI;AAAA,QACJ,GAAG;AAAA,QACH,IAAI;AAAA,MACN;AACA,eAAS,aAAa,QAAQ,eAAe,QAAQ,UAAU;AAC7D,YAAI,SAAS,KAAK,cAAc,MAAM;AACtC,eAAOL,YAAW,MAAM,IAAI,OAAO,QAAQ,eAAe,QAAQ,QAAQ,IAAI,OAAO,QAAQ,OAAO,MAAM;AAAA,MAC5G;AACA,eAAS,WAAWO,OAAM,QAAQ;AAChC,YAAIZ,UAAS,KAAK,cAAcY,QAAO,IAAI,WAAW,MAAM;AAC5D,eAAOP,YAAWL,OAAM,IAAIA,QAAO,MAAM,IAAIA,QAAO,QAAQ,OAAO,MAAM;AAAA,MAC3E;AACA,UAAI,UAAU,CAAC;AACf,eAAS,aAAa,MAAM,WAAW;AACrC,YAAI,YAAY,KAAK,YAAY;AACjC,gBAAQ,SAAS,IAAI,QAAQ,YAAY,GAAG,IAAI,QAAQ,SAAS,IAAI;AAAA,MACvE;AACA,eAAS,eAAe,OAAO;AAC7B,eAAO,OAAO,UAAU,WAAW,QAAQ,KAAK,KAAK,QAAQ,MAAM,YAAY,CAAC,IAAI;AAAA,MACtF;AACA,eAAS,qBAAqB,aAAa;AACzC,YAAI,kBAAkB,CAAC,GACrB,gBACA;AACF,aAAK,QAAQ,aAAa;AACxB,cAAI,WAAW,aAAa,IAAI,GAAG;AACjC,6BAAiB,eAAe,IAAI;AACpC,gBAAI,gBAAgB;AAClB,8BAAgB,cAAc,IAAI,YAAY,IAAI;AAAA,YACpD;AAAA,UACF;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,UAAI,aAAa,CAAC;AAClB,eAAS,gBAAgB,MAAM,UAAU;AACvC,mBAAW,IAAI,IAAI;AAAA,MACrB;AACA,eAAS,oBAAoB,UAAU;AACrC,YAAI,QAAQ,CAAC,GACXa;AACF,aAAKA,MAAK,UAAU;AAClB,cAAI,WAAW,UAAUA,EAAC,GAAG;AAC3B,kBAAM,KAAK;AAAA,cACT,MAAMA;AAAA,cACN,UAAU,WAAWA,EAAC;AAAA,YACxB,CAAC;AAAA,UACH;AAAA,QACF;AACA,cAAM,KAAK,SAAU,GAAG,GAAG;AACzB,iBAAO,EAAE,WAAW,EAAE;AAAA,QACxB,CAAC;AACD,eAAO;AAAA,MACT;AACA,eAAS,WAAW,MAAM;AACxB,eAAO,OAAO,MAAM,KAAK,OAAO,QAAQ,KAAK,OAAO,QAAQ;AAAA,MAC9D;AACA,eAASC,UAAS,QAAQ;AACxB,YAAI,SAAS,GAAG;AAEd,iBAAO,KAAK,KAAK,MAAM,KAAK;AAAA,QAC9B,OAAO;AACL,iBAAO,KAAK,MAAM,MAAM;AAAA,QAC1B;AAAA,MACF;AACA,eAAS,MAAM,qBAAqB;AAClC,YAAI,gBAAgB,CAAC,qBACnB,QAAQ;AACV,YAAI,kBAAkB,KAAK,SAAS,aAAa,GAAG;AAClD,kBAAQA,UAAS,aAAa;AAAA,QAChC;AACA,eAAO;AAAA,MACT;AACA,eAAS,WAAW,MAAM,UAAU;AAClC,eAAO,SAAU,OAAO;AACtB,cAAI,SAAS,MAAM;AACjB,kBAAM,MAAM,MAAM,KAAK;AACvB,kBAAM,aAAa,MAAM,QAAQ;AACjC,mBAAO;AAAA,UACT,OAAO;AACL,mBAAO,IAAI,MAAM,IAAI;AAAA,UACvB;AAAA,QACF;AAAA,MACF;AACA,eAAS,IAAI,KAAK,MAAM;AACtB,eAAO,IAAI,QAAQ,IAAI,IAAI,GAAG,SAAS,IAAI,SAAS,QAAQ,MAAM,IAAI,EAAE,IAAI;AAAA,MAC9E;AACA,eAAS,MAAM,KAAK,MAAM,OAAO;AAC/B,YAAI,IAAI,QAAQ,KAAK,CAAC,MAAM,KAAK,GAAG;AAClC,cAAI,SAAS,cAAc,WAAW,IAAI,KAAK,CAAC,KAAK,IAAI,MAAM,MAAM,KAAK,IAAI,KAAK,MAAM,IAAI;AAC3F,oBAAQ,MAAM,KAAK;AACnB,gBAAI,GAAG,SAAS,IAAI,SAAS,QAAQ,MAAM,IAAI,EAAE,OAAO,IAAI,MAAM,GAAG,YAAY,OAAO,IAAI,MAAM,CAAC,CAAC;AAAA,UACtG,OAAO;AACL,gBAAI,GAAG,SAAS,IAAI,SAAS,QAAQ,MAAM,IAAI,EAAE,KAAK;AAAA,UACxD;AAAA,QACF;AAAA,MACF;AAIA,eAAS,UAAU,OAAO;AACxB,gBAAQ,eAAe,KAAK;AAC5B,YAAIT,YAAW,KAAK,KAAK,CAAC,GAAG;AAC3B,iBAAO,KAAK,KAAK,EAAE;AAAA,QACrB;AACA,eAAO;AAAA,MACT;AACA,eAAS,UAAU,OAAO,OAAO;AAC/B,YAAI,OAAO,UAAU,UAAU;AAC7B,kBAAQ,qBAAqB,KAAK;AAClC,cAAI,cAAc,oBAAoB,KAAK,GACzC,GACA,iBAAiB,YAAY;AAC/B,eAAK,IAAI,GAAG,IAAI,gBAAgB,KAAK;AACnC,iBAAK,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC,EAAE,IAAI,CAAC;AAAA,UACtD;AAAA,QACF,OAAO;AACL,kBAAQ,eAAe,KAAK;AAC5B,cAAIA,YAAW,KAAK,KAAK,CAAC,GAAG;AAC3B,mBAAO,KAAK,KAAK,EAAE,KAAK;AAAA,UAC1B;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,UAAIU,UAAS,MAEXC,UAAS,QAETC,UAAS,SAETC,UAAS,SAET,SAAS,cAETC,aAAY,SAEZ,YAAY,aAEZ,YAAY,iBAEZ,YAAY,WAEZ,YAAY,WAEZ,YAAY,gBAEZ,gBAAgB,OAEhBC,eAAc,YAEdC,eAAc,sBAEd,mBAAmB,2BAEnB,iBAAiB,wBAIjBC,aAAY,yJACZ;AACF,gBAAU,CAAC;AACX,eAAS,cAAcb,QAAO,OAAO,aAAa;AAChD,gBAAQA,MAAK,IAAIJ,YAAW,KAAK,IAAI,QAAQ,SAAU,UAAUkB,aAAY;AAC3E,iBAAO,YAAY,cAAc,cAAc;AAAA,QACjD;AAAA,MACF;AACA,eAAS,sBAAsBd,QAAO,QAAQ;AAC5C,YAAI,CAAC,WAAW,SAASA,MAAK,GAAG;AAC/B,iBAAO,IAAI,OAAO,eAAeA,MAAK,CAAC;AAAA,QACzC;AACA,eAAO,QAAQA,MAAK,EAAE,OAAO,SAAS,OAAO,OAAO;AAAA,MACtD;AAGA,eAAS,eAAe,GAAG;AACzB,eAAO,YAAY,EAAE,QAAQ,MAAM,EAAE,EAAE,QAAQ,uCAAuC,SAAU,SAAS,IAAI,IAAI,IAAI,IAAI;AACvH,iBAAO,MAAM,MAAM,MAAM;AAAA,QAC3B,CAAC,CAAC;AAAA,MACJ;AACA,eAAS,YAAY,GAAG;AACtB,eAAO,EAAE,QAAQ,0BAA0B,MAAM;AAAA,MACnD;AACA,UAAI,SAAS,CAAC;AACd,eAAS,cAAcA,QAAO,UAAU;AACtC,YAAI,GACF,OAAO,UACP;AACF,YAAI,OAAOA,WAAU,UAAU;AAC7B,UAAAA,SAAQ,CAACA,MAAK;AAAA,QAChB;AACA,YAAI,SAAS,QAAQ,GAAG;AACtB,iBAAO,SAAU,OAAO,OAAO;AAC7B,kBAAM,QAAQ,IAAI,MAAM,KAAK;AAAA,UAC/B;AAAA,QACF;AACA,mBAAWA,OAAM;AACjB,aAAK,IAAI,GAAG,IAAI,UAAU,KAAK;AAC7B,iBAAOA,OAAM,CAAC,CAAC,IAAI;AAAA,QACrB;AAAA,MACF;AACA,eAAS,kBAAkBA,QAAO,UAAU;AAC1C,sBAAcA,QAAO,SAAU,OAAO,OAAO,QAAQA,QAAO;AAC1D,iBAAO,KAAK,OAAO,MAAM,CAAC;AAC1B,mBAAS,OAAO,OAAO,IAAI,QAAQA,MAAK;AAAA,QAC1C,CAAC;AAAA,MACH;AACA,eAAS,wBAAwBA,QAAO,OAAO,QAAQ;AACrD,YAAI,SAAS,QAAQ,WAAW,QAAQA,MAAK,GAAG;AAC9C,iBAAOA,MAAK,EAAE,OAAO,OAAO,IAAI,QAAQA,MAAK;AAAA,QAC/C;AAAA,MACF;AACA,UAAI,OAAO,GACT,QAAQ,GACRe,QAAO,GACP,OAAO,GACP,SAAS,GACT,SAAS,GACT,cAAc,GACd,OAAO,GACP,UAAU;AACZ,eAAS,IAAI,GAAG,GAAG;AACjB,gBAAQ,IAAI,IAAI,KAAK;AAAA,MACvB;AACA,UAAI;AACJ,UAAI,MAAM,UAAU,SAAS;AAC3B,kBAAU,MAAM,UAAU;AAAA,MAC5B,OAAO;AACL,kBAAU,SAAU,GAAG;AAErB,cAAI;AACJ,eAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,EAAE,GAAG;AAChC,gBAAI,KAAK,CAAC,MAAM,GAAG;AACjB,qBAAO;AAAA,YACT;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AACA,eAAS,YAAY,MAAM,OAAO;AAChC,YAAI,MAAM,IAAI,KAAK,MAAM,KAAK,GAAG;AAC/B,iBAAO;AAAA,QACT;AACA,YAAI,WAAW,IAAI,OAAO,EAAE;AAC5B,iBAAS,QAAQ,YAAY;AAC7B,eAAO,aAAa,IAAI,WAAW,IAAI,IAAI,KAAK,KAAK,KAAK,WAAW,IAAI;AAAA,MAC3E;AAIA,qBAAe,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,WAAY;AAC/C,eAAO,KAAK,MAAM,IAAI;AAAA,MACxB,CAAC;AACD,qBAAe,OAAO,GAAG,GAAG,SAAUxB,SAAQ;AAC5C,eAAO,KAAK,WAAW,EAAE,YAAY,MAAMA,OAAM;AAAA,MACnD,CAAC;AACD,qBAAe,QAAQ,GAAG,GAAG,SAAUA,SAAQ;AAC7C,eAAO,KAAK,WAAW,EAAE,OAAO,MAAMA,OAAM;AAAA,MAC9C,CAAC;AAID,mBAAa,SAAS,GAAG;AAIzB,sBAAgB,SAAS,CAAC;AAI1B,oBAAc,KAAKmB,UAAS;AAC5B,oBAAc,MAAMA,YAAWH,OAAM;AACrC,oBAAc,OAAO,SAAU,UAAUf,SAAQ;AAC/C,eAAOA,QAAO,iBAAiB,QAAQ;AAAA,MACzC,CAAC;AACD,oBAAc,QAAQ,SAAU,UAAUA,SAAQ;AAChD,eAAOA,QAAO,YAAY,QAAQ;AAAA,MACpC,CAAC;AACD,oBAAc,CAAC,KAAK,IAAI,GAAG,SAAU,OAAO,OAAO;AACjD,cAAM,KAAK,IAAI,MAAM,KAAK,IAAI;AAAA,MAChC,CAAC;AACD,oBAAc,CAAC,OAAO,MAAM,GAAG,SAAU,OAAO,OAAO,QAAQQ,QAAO;AACpE,YAAI,QAAQ,OAAO,QAAQ,YAAY,OAAOA,QAAO,OAAO,OAAO;AAEnE,YAAI,SAAS,MAAM;AACjB,gBAAM,KAAK,IAAI;AAAA,QACjB,OAAO;AACL,0BAAgB,MAAM,EAAE,eAAe;AAAA,QACzC;AAAA,MACF,CAAC;AAID,UAAI,sBAAsB,wFAAwF,MAAM,GAAG,GACzH,2BAA2B,kDAAkD,MAAM,GAAG,GACtF,mBAAmB,iCACnB,0BAA0Ba,YAC1B,qBAAqBA;AACvB,eAAS,aAAa,GAAGtB,SAAQ;AAC/B,YAAI,CAAC,GAAG;AACN,iBAAO,QAAQ,KAAK,OAAO,IAAI,KAAK,UAAU,KAAK,QAAQ,YAAY;AAAA,QACzE;AACA,eAAO,QAAQ,KAAK,OAAO,IAAI,KAAK,QAAQ,EAAE,MAAM,CAAC,IAAI,KAAK,SAAS,KAAK,QAAQ,YAAY,kBAAkB,KAAKA,OAAM,IAAI,WAAW,YAAY,EAAE,EAAE,MAAM,CAAC;AAAA,MACrK;AACA,eAAS,kBAAkB,GAAGA,SAAQ;AACpC,YAAI,CAAC,GAAG;AACN,iBAAO,QAAQ,KAAK,YAAY,IAAI,KAAK,eAAe,KAAK,aAAa,YAAY;AAAA,QACxF;AACA,eAAO,QAAQ,KAAK,YAAY,IAAI,KAAK,aAAa,EAAE,MAAM,CAAC,IAAI,KAAK,aAAa,iBAAiB,KAAKA,OAAM,IAAI,WAAW,YAAY,EAAE,EAAE,MAAM,CAAC;AAAA,MACzJ;AACA,eAAS,kBAAkB,WAAWA,SAAQ,QAAQ;AACpD,YAAI,GACF,IACA,KACA,MAAM,UAAU,kBAAkB;AACpC,YAAI,CAAC,KAAK,cAAc;AAEtB,eAAK,eAAe,CAAC;AACrB,eAAK,mBAAmB,CAAC;AACzB,eAAK,oBAAoB,CAAC;AAC1B,eAAK,IAAI,GAAG,IAAI,IAAI,EAAE,GAAG;AACvB,kBAAM,UAAU,CAAC,KAAM,CAAC,CAAC;AACzB,iBAAK,kBAAkB,CAAC,IAAI,KAAK,YAAY,KAAK,EAAE,EAAE,kBAAkB;AACxE,iBAAK,iBAAiB,CAAC,IAAI,KAAK,OAAO,KAAK,EAAE,EAAE,kBAAkB;AAAA,UACpE;AAAA,QACF;AACA,YAAI,QAAQ;AACV,cAAIA,YAAW,OAAO;AACpB,iBAAK,QAAQ,KAAK,KAAK,mBAAmB,GAAG;AAC7C,mBAAO,OAAO,KAAK,KAAK;AAAA,UAC1B,OAAO;AACL,iBAAK,QAAQ,KAAK,KAAK,kBAAkB,GAAG;AAC5C,mBAAO,OAAO,KAAK,KAAK;AAAA,UAC1B;AAAA,QACF,OAAO;AACL,cAAIA,YAAW,OAAO;AACpB,iBAAK,QAAQ,KAAK,KAAK,mBAAmB,GAAG;AAC7C,gBAAI,OAAO,IAAI;AACb,qBAAO;AAAA,YACT;AACA,iBAAK,QAAQ,KAAK,KAAK,kBAAkB,GAAG;AAC5C,mBAAO,OAAO,KAAK,KAAK;AAAA,UAC1B,OAAO;AACL,iBAAK,QAAQ,KAAK,KAAK,kBAAkB,GAAG;AAC5C,gBAAI,OAAO,IAAI;AACb,qBAAO;AAAA,YACT;AACA,iBAAK,QAAQ,KAAK,KAAK,mBAAmB,GAAG;AAC7C,mBAAO,OAAO,KAAK,KAAK;AAAA,UAC1B;AAAA,QACF;AAAA,MACF;AACA,eAAS,kBAAkB,WAAWA,SAAQ,QAAQ;AACpD,YAAI,GAAG,KAAK;AACZ,YAAI,KAAK,mBAAmB;AAC1B,iBAAO,kBAAkB,KAAK,MAAM,WAAWA,SAAQ,MAAM;AAAA,QAC/D;AACA,YAAI,CAAC,KAAK,cAAc;AACtB,eAAK,eAAe,CAAC;AACrB,eAAK,mBAAmB,CAAC;AACzB,eAAK,oBAAoB,CAAC;AAAA,QAC5B;AAKA,aAAK,IAAI,GAAG,IAAI,IAAI,KAAK;AAEvB,gBAAM,UAAU,CAAC,KAAM,CAAC,CAAC;AACzB,cAAI,UAAU,CAAC,KAAK,iBAAiB,CAAC,GAAG;AACvC,iBAAK,iBAAiB,CAAC,IAAI,IAAI,OAAO,MAAM,KAAK,OAAO,KAAK,EAAE,EAAE,QAAQ,KAAK,EAAE,IAAI,KAAK,GAAG;AAC5F,iBAAK,kBAAkB,CAAC,IAAI,IAAI,OAAO,MAAM,KAAK,YAAY,KAAK,EAAE,EAAE,QAAQ,KAAK,EAAE,IAAI,KAAK,GAAG;AAAA,UACpG;AACA,cAAI,CAAC,UAAU,CAAC,KAAK,aAAa,CAAC,GAAG;AACpC,oBAAQ,MAAM,KAAK,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,YAAY,KAAK,EAAE;AACpE,iBAAK,aAAa,CAAC,IAAI,IAAI,OAAO,MAAM,QAAQ,KAAK,EAAE,GAAG,GAAG;AAAA,UAC/D;AAEA,cAAI,UAAUA,YAAW,UAAU,KAAK,iBAAiB,CAAC,EAAE,KAAK,SAAS,GAAG;AAC3E,mBAAO;AAAA,UACT,WAAW,UAAUA,YAAW,SAAS,KAAK,kBAAkB,CAAC,EAAE,KAAK,SAAS,GAAG;AAClF,mBAAO;AAAA,UACT,WAAW,CAAC,UAAU,KAAK,aAAa,CAAC,EAAE,KAAK,SAAS,GAAG;AAC1D,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAIA,eAAS,SAAS,KAAK,OAAO;AAC5B,YAAI;AACJ,YAAI,CAAC,IAAI,QAAQ,GAAG;AAElB,iBAAO;AAAA,QACT;AACA,YAAI,OAAO,UAAU,UAAU;AAC7B,cAAI,QAAQ,KAAK,KAAK,GAAG;AACvB,oBAAQ,MAAM,KAAK;AAAA,UACrB,OAAO;AACL,oBAAQ,IAAI,WAAW,EAAE,YAAY,KAAK;AAE1C,gBAAI,CAAC,SAAS,KAAK,GAAG;AACpB,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AACA,qBAAa,KAAK,IAAI,IAAI,KAAK,GAAG,YAAY,IAAI,KAAK,GAAG,KAAK,CAAC;AAChE,YAAI,GAAG,SAAS,IAAI,SAAS,QAAQ,MAAM,OAAO,EAAE,OAAO,UAAU;AACrE,eAAO;AAAA,MACT;AACA,eAAS,YAAY,OAAO;AAC1B,YAAI,SAAS,MAAM;AACjB,mBAAS,MAAM,KAAK;AACpB,gBAAM,aAAa,MAAM,IAAI;AAC7B,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO,IAAI,MAAM,OAAO;AAAA,QAC1B;AAAA,MACF;AACA,eAAS,iBAAiB;AACxB,eAAO,YAAY,KAAK,KAAK,GAAG,KAAK,MAAM,CAAC;AAAA,MAC9C;AACA,eAAS,iBAAiB,UAAU;AAClC,YAAI,KAAK,mBAAmB;AAC1B,cAAI,CAAC,WAAW,MAAM,cAAc,GAAG;AACrC,+BAAmB,KAAK,IAAI;AAAA,UAC9B;AACA,cAAI,UAAU;AACZ,mBAAO,KAAK;AAAA,UACd,OAAO;AACL,mBAAO,KAAK;AAAA,UACd;AAAA,QACF,OAAO;AACL,cAAI,CAAC,WAAW,MAAM,mBAAmB,GAAG;AAC1C,iBAAK,oBAAoB;AAAA,UAC3B;AACA,iBAAO,KAAK,2BAA2B,WAAW,KAAK,0BAA0B,KAAK;AAAA,QACxF;AAAA,MACF;AACA,eAAS,YAAY,UAAU;AAC7B,YAAI,KAAK,mBAAmB;AAC1B,cAAI,CAAC,WAAW,MAAM,cAAc,GAAG;AACrC,+BAAmB,KAAK,IAAI;AAAA,UAC9B;AACA,cAAI,UAAU;AACZ,mBAAO,KAAK;AAAA,UACd,OAAO;AACL,mBAAO,KAAK;AAAA,UACd;AAAA,QACF,OAAO;AACL,cAAI,CAAC,WAAW,MAAM,cAAc,GAAG;AACrC,iBAAK,eAAe;AAAA,UACtB;AACA,iBAAO,KAAK,sBAAsB,WAAW,KAAK,qBAAqB,KAAK;AAAA,QAC9E;AAAA,MACF;AACA,eAAS,qBAAqB;AAC5B,iBAAS,UAAU,GAAG,GAAG;AACvB,iBAAO,EAAE,SAAS,EAAE;AAAA,QACtB;AACA,YAAI,cAAc,CAAC,GACjB,aAAa,CAAC,GACd,cAAc,CAAC,GACf,GACA;AACF,aAAK,IAAI,GAAG,IAAI,IAAI,KAAK;AAEvB,gBAAM,UAAU,CAAC,KAAM,CAAC,CAAC;AACzB,sBAAY,KAAK,KAAK,YAAY,KAAK,EAAE,CAAC;AAC1C,qBAAW,KAAK,KAAK,OAAO,KAAK,EAAE,CAAC;AACpC,sBAAY,KAAK,KAAK,OAAO,KAAK,EAAE,CAAC;AACrC,sBAAY,KAAK,KAAK,YAAY,KAAK,EAAE,CAAC;AAAA,QAC5C;AAGA,oBAAY,KAAK,SAAS;AAC1B,mBAAW,KAAK,SAAS;AACzB,oBAAY,KAAK,SAAS;AAC1B,aAAK,IAAI,GAAG,IAAI,IAAI,KAAK;AACvB,sBAAY,CAAC,IAAI,YAAY,YAAY,CAAC,CAAC;AAC3C,qBAAW,CAAC,IAAI,YAAY,WAAW,CAAC,CAAC;AAAA,QAC3C;AACA,aAAK,IAAI,GAAG,IAAI,IAAI,KAAK;AACvB,sBAAY,CAAC,IAAI,YAAY,YAAY,CAAC,CAAC;AAAA,QAC7C;AACA,aAAK,eAAe,IAAI,OAAO,OAAO,YAAY,KAAK,GAAG,IAAI,KAAK,GAAG;AACtE,aAAK,oBAAoB,KAAK;AAC9B,aAAK,qBAAqB,IAAI,OAAO,OAAO,WAAW,KAAK,GAAG,IAAI,KAAK,GAAG;AAC3E,aAAK,0BAA0B,IAAI,OAAO,OAAO,YAAY,KAAK,GAAG,IAAI,KAAK,GAAG;AAAA,MACnF;AAIA,qBAAe,KAAK,GAAG,GAAG,WAAY;AACpC,YAAI,IAAI,KAAK,KAAK;AAClB,eAAO,KAAK,OAAO,SAAS,GAAG,CAAC,IAAI,MAAM;AAAA,MAC5C,CAAC;AACD,qBAAe,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,WAAY;AAC1C,eAAO,KAAK,KAAK,IAAI;AAAA,MACvB,CAAC;AACD,qBAAe,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,MAAM;AACxC,qBAAe,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,MAAM;AACzC,qBAAe,GAAG,CAAC,UAAU,GAAG,IAAI,GAAG,GAAG,MAAM;AAIhD,mBAAa,QAAQ,GAAG;AAIxB,sBAAgB,QAAQ,CAAC;AAIzB,oBAAc,KAAKoB,YAAW;AAC9B,oBAAc,MAAMD,YAAWH,OAAM;AACrC,oBAAc,QAAQ,WAAWE,OAAM;AACvC,oBAAc,SAAS,WAAW,MAAM;AACxC,oBAAc,UAAU,WAAW,MAAM;AACzC,oBAAc,CAAC,SAAS,QAAQ,GAAG,IAAI;AACvC,oBAAc,QAAQ,SAAU,OAAO,OAAO;AAC5C,cAAM,IAAI,IAAI,MAAM,WAAW,IAAI,MAAM,kBAAkB,KAAK,IAAI,MAAM,KAAK;AAAA,MACjF,CAAC;AACD,oBAAc,MAAM,SAAU,OAAO,OAAO;AAC1C,cAAM,IAAI,IAAI,MAAM,kBAAkB,KAAK;AAAA,MAC7C,CAAC;AACD,oBAAc,KAAK,SAAU,OAAO,OAAO;AACzC,cAAM,IAAI,IAAI,SAAS,OAAO,EAAE;AAAA,MAClC,CAAC;AAID,eAAS,WAAW,MAAM;AACxB,eAAO,WAAW,IAAI,IAAI,MAAM;AAAA,MAClC;AAIA,YAAM,oBAAoB,SAAU,OAAO;AACzC,eAAO,MAAM,KAAK,KAAK,MAAM,KAAK,IAAI,KAAK,OAAO;AAAA,MACpD;AAIA,UAAI,aAAa,WAAW,YAAY,IAAI;AAC5C,eAAS,gBAAgB;AACvB,eAAO,WAAW,KAAK,KAAK,CAAC;AAAA,MAC/B;AACA,eAAS,WAAW,GAAG,GAAG,GAAG,GAAGO,IAAG,GAAG,IAAI;AAGxC,YAAI;AAEJ,YAAI,IAAI,OAAO,KAAK,GAAG;AAErB,iBAAO,IAAI,KAAK,IAAI,KAAK,GAAG,GAAG,GAAGA,IAAG,GAAG,EAAE;AAC1C,cAAI,SAAS,KAAK,YAAY,CAAC,GAAG;AAChC,iBAAK,YAAY,CAAC;AAAA,UACpB;AAAA,QACF,OAAO;AACL,iBAAO,IAAI,KAAK,GAAG,GAAG,GAAG,GAAGA,IAAG,GAAG,EAAE;AAAA,QACtC;AACA,eAAO;AAAA,MACT;AACA,eAAS,cAAc,GAAG;AACxB,YAAI,MAAM;AAEV,YAAI,IAAI,OAAO,KAAK,GAAG;AACrB,iBAAO,MAAM,UAAU,MAAM,KAAK,SAAS;AAE3C,eAAK,CAAC,IAAI,IAAI;AACd,iBAAO,IAAI,KAAK,KAAK,IAAI,MAAM,MAAM,IAAI,CAAC;AAC1C,cAAI,SAAS,KAAK,eAAe,CAAC,GAAG;AACnC,iBAAK,eAAe,CAAC;AAAA,UACvB;AAAA,QACF,OAAO;AACL,iBAAO,IAAI,KAAK,KAAK,IAAI,MAAM,MAAM,SAAS,CAAC;AAAA,QACjD;AACA,eAAO;AAAA,MACT;AAGA,eAAS,gBAAgB,MAAM,KAAK,KAAK;AACvC,YAEE,MAAM,IAAI,MAAM,KAEhB,SAAS,IAAI,cAAc,MAAM,GAAG,GAAG,EAAE,UAAU,IAAI,OAAO;AAChE,eAAO,CAAC,QAAQ,MAAM;AAAA,MACxB;AAGA,eAAS,mBAAmB,MAAM,MAAM,SAAS,KAAK,KAAK;AACzD,YAAI,gBAAgB,IAAI,UAAU,OAAO,GACvC,aAAa,gBAAgB,MAAM,KAAK,GAAG,GAC3C,YAAY,IAAI,KAAK,OAAO,KAAK,eAAe,YAChD,SACA;AACF,YAAI,aAAa,GAAG;AAClB,oBAAU,OAAO;AACjB,yBAAe,WAAW,OAAO,IAAI;AAAA,QACvC,WAAW,YAAY,WAAW,IAAI,GAAG;AACvC,oBAAU,OAAO;AACjB,yBAAe,YAAY,WAAW,IAAI;AAAA,QAC5C,OAAO;AACL,oBAAU;AACV,yBAAe;AAAA,QACjB;AACA,eAAO;AAAA,UACL,MAAM;AAAA,UACN,WAAW;AAAA,QACb;AAAA,MACF;AACA,eAAS,WAAW,KAAK,KAAK,KAAK;AACjC,YAAI,aAAa,gBAAgB,IAAI,KAAK,GAAG,KAAK,GAAG,GACnD,OAAO,KAAK,OAAO,IAAI,UAAU,IAAI,aAAa,KAAK,CAAC,IAAI,GAC5D,SACA;AACF,YAAI,OAAO,GAAG;AACZ,oBAAU,IAAI,KAAK,IAAI;AACvB,oBAAU,OAAO,YAAY,SAAS,KAAK,GAAG;AAAA,QAChD,WAAW,OAAO,YAAY,IAAI,KAAK,GAAG,KAAK,GAAG,GAAG;AACnD,oBAAU,OAAO,YAAY,IAAI,KAAK,GAAG,KAAK,GAAG;AACjD,oBAAU,IAAI,KAAK,IAAI;AAAA,QACzB,OAAO;AACL,oBAAU,IAAI,KAAK;AACnB,oBAAU;AAAA,QACZ;AACA,eAAO;AAAA,UACL,MAAM;AAAA,UACN,MAAM;AAAA,QACR;AAAA,MACF;AACA,eAAS,YAAY,MAAM,KAAK,KAAK;AACnC,YAAI,aAAa,gBAAgB,MAAM,KAAK,GAAG,GAC7C,iBAAiB,gBAAgB,OAAO,GAAG,KAAK,GAAG;AACrD,gBAAQ,WAAW,IAAI,IAAI,aAAa,kBAAkB;AAAA,MAC5D;AAIA,qBAAe,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,MAAM;AAC3C,qBAAe,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,SAAS;AAI9C,mBAAa,QAAQ,GAAG;AACxB,mBAAa,WAAW,GAAG;AAI3B,sBAAgB,QAAQ,CAAC;AACzB,sBAAgB,WAAW,CAAC;AAI5B,oBAAc,KAAKN,UAAS;AAC5B,oBAAc,MAAMA,YAAWH,OAAM;AACrC,oBAAc,KAAKG,UAAS;AAC5B,oBAAc,MAAMA,YAAWH,OAAM;AACrC,wBAAkB,CAAC,KAAK,MAAM,KAAK,IAAI,GAAG,SAAU,OAAO,MAAM,QAAQP,QAAO;AAC9E,aAAKA,OAAM,OAAO,GAAG,CAAC,CAAC,IAAI,MAAM,KAAK;AAAA,MACxC,CAAC;AAMD,eAAS,WAAW,KAAK;AACvB,eAAO,WAAW,KAAK,KAAK,MAAM,KAAK,KAAK,MAAM,GAAG,EAAE;AAAA,MACzD;AACA,UAAI,oBAAoB;AAAA,QACtB,KAAK;AAAA;AAAA,QAEL,KAAK;AAAA;AAAA,MACP;AACA,eAAS,uBAAuB;AAC9B,eAAO,KAAK,MAAM;AAAA,MACpB;AACA,eAAS,uBAAuB;AAC9B,eAAO,KAAK,MAAM;AAAA,MACpB;AAIA,eAAS,WAAW,OAAO;AACzB,YAAI,OAAO,KAAK,WAAW,EAAE,KAAK,IAAI;AACtC,eAAO,SAAS,OAAO,OAAO,KAAK,KAAK,QAAQ,QAAQ,GAAG,GAAG;AAAA,MAChE;AACA,eAAS,cAAc,OAAO;AAC5B,YAAI,OAAO,WAAW,MAAM,GAAG,CAAC,EAAE;AAClC,eAAO,SAAS,OAAO,OAAO,KAAK,KAAK,QAAQ,QAAQ,GAAG,GAAG;AAAA,MAChE;AAIA,qBAAe,KAAK,GAAG,MAAM,KAAK;AAClC,qBAAe,MAAM,GAAG,GAAG,SAAUT,SAAQ;AAC3C,eAAO,KAAK,WAAW,EAAE,YAAY,MAAMA,OAAM;AAAA,MACnD,CAAC;AACD,qBAAe,OAAO,GAAG,GAAG,SAAUA,SAAQ;AAC5C,eAAO,KAAK,WAAW,EAAE,cAAc,MAAMA,OAAM;AAAA,MACrD,CAAC;AACD,qBAAe,QAAQ,GAAG,GAAG,SAAUA,SAAQ;AAC7C,eAAO,KAAK,WAAW,EAAE,SAAS,MAAMA,OAAM;AAAA,MAChD,CAAC;AACD,qBAAe,KAAK,GAAG,GAAG,SAAS;AACnC,qBAAe,KAAK,GAAG,GAAG,YAAY;AAItC,mBAAa,OAAO,GAAG;AACvB,mBAAa,WAAW,GAAG;AAC3B,mBAAa,cAAc,GAAG;AAG9B,sBAAgB,OAAO,EAAE;AACzB,sBAAgB,WAAW,EAAE;AAC7B,sBAAgB,cAAc,EAAE;AAIhC,oBAAc,KAAKmB,UAAS;AAC5B,oBAAc,KAAKA,UAAS;AAC5B,oBAAc,KAAKA,UAAS;AAC5B,oBAAc,MAAM,SAAU,UAAUlB,SAAQ;AAC9C,eAAOA,QAAO,iBAAiB,QAAQ;AAAA,MACzC,CAAC;AACD,oBAAc,OAAO,SAAU,UAAUA,SAAQ;AAC/C,eAAOA,QAAO,mBAAmB,QAAQ;AAAA,MAC3C,CAAC;AACD,oBAAc,QAAQ,SAAU,UAAUA,SAAQ;AAChD,eAAOA,QAAO,cAAc,QAAQ;AAAA,MACtC,CAAC;AACD,wBAAkB,CAAC,MAAM,OAAO,MAAM,GAAG,SAAU,OAAO,MAAM,QAAQQ,QAAO;AAC7E,YAAI,UAAU,OAAO,QAAQ,cAAc,OAAOA,QAAO,OAAO,OAAO;AAEvE,YAAI,WAAW,MAAM;AACnB,eAAK,IAAI;AAAA,QACX,OAAO;AACL,0BAAgB,MAAM,EAAE,iBAAiB;AAAA,QAC3C;AAAA,MACF,CAAC;AACD,wBAAkB,CAAC,KAAK,KAAK,GAAG,GAAG,SAAU,OAAO,MAAM,QAAQA,QAAO;AACvE,aAAKA,MAAK,IAAI,MAAM,KAAK;AAAA,MAC3B,CAAC;AAID,eAAS,aAAa,OAAOR,SAAQ;AACnC,YAAI,OAAO,UAAU,UAAU;AAC7B,iBAAO;AAAA,QACT;AACA,YAAI,CAAC,MAAM,KAAK,GAAG;AACjB,iBAAO,SAAS,OAAO,EAAE;AAAA,QAC3B;AACA,gBAAQA,QAAO,cAAc,KAAK;AAClC,YAAI,OAAO,UAAU,UAAU;AAC7B,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AACA,eAAS,gBAAgB,OAAOA,SAAQ;AACtC,YAAI,OAAO,UAAU,UAAU;AAC7B,iBAAOA,QAAO,cAAc,KAAK,IAAI,KAAK;AAAA,QAC5C;AACA,eAAO,MAAM,KAAK,IAAI,OAAO;AAAA,MAC/B;AAGA,eAAS,cAAc,IAAI,GAAG;AAC5B,eAAO,GAAG,MAAM,GAAG,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,CAAC,CAAC;AAAA,MAC7C;AACA,UAAI,wBAAwB,2DAA2D,MAAM,GAAG,GAC9F,6BAA6B,8BAA8B,MAAM,GAAG,GACpE,2BAA2B,uBAAuB,MAAM,GAAG,GAC3D,uBAAuBqB,YACvB,4BAA4BA,YAC5B,0BAA0BA;AAC5B,eAAS,eAAe,GAAGtB,SAAQ;AACjC,YAAI,WAAW,QAAQ,KAAK,SAAS,IAAI,KAAK,YAAY,KAAK,UAAU,KAAK,MAAM,QAAQ,KAAK,UAAU,SAAS,KAAKA,OAAM,IAAI,WAAW,YAAY;AAC1J,eAAO,MAAM,OAAO,cAAc,UAAU,KAAK,MAAM,GAAG,IAAI,IAAI,SAAS,EAAE,IAAI,CAAC,IAAI;AAAA,MACxF;AACA,eAAS,oBAAoB,GAAG;AAC9B,eAAO,MAAM,OAAO,cAAc,KAAK,gBAAgB,KAAK,MAAM,GAAG,IAAI,IAAI,KAAK,eAAe,EAAE,IAAI,CAAC,IAAI,KAAK;AAAA,MACnH;AACA,eAAS,kBAAkB,GAAG;AAC5B,eAAO,MAAM,OAAO,cAAc,KAAK,cAAc,KAAK,MAAM,GAAG,IAAI,IAAI,KAAK,aAAa,EAAE,IAAI,CAAC,IAAI,KAAK;AAAA,MAC/G;AACA,eAAS,oBAAoB,aAAaA,SAAQ,QAAQ;AACxD,YAAI,GACF,IACA,KACA,MAAM,YAAY,kBAAkB;AACtC,YAAI,CAAC,KAAK,gBAAgB;AACxB,eAAK,iBAAiB,CAAC;AACvB,eAAK,sBAAsB,CAAC;AAC5B,eAAK,oBAAoB,CAAC;AAC1B,eAAK,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACtB,kBAAM,UAAU,CAAC,KAAM,CAAC,CAAC,EAAE,IAAI,CAAC;AAChC,iBAAK,kBAAkB,CAAC,IAAI,KAAK,YAAY,KAAK,EAAE,EAAE,kBAAkB;AACxE,iBAAK,oBAAoB,CAAC,IAAI,KAAK,cAAc,KAAK,EAAE,EAAE,kBAAkB;AAC5E,iBAAK,eAAe,CAAC,IAAI,KAAK,SAAS,KAAK,EAAE,EAAE,kBAAkB;AAAA,UACpE;AAAA,QACF;AACA,YAAI,QAAQ;AACV,cAAIA,YAAW,QAAQ;AACrB,iBAAK,QAAQ,KAAK,KAAK,gBAAgB,GAAG;AAC1C,mBAAO,OAAO,KAAK,KAAK;AAAA,UAC1B,WAAWA,YAAW,OAAO;AAC3B,iBAAK,QAAQ,KAAK,KAAK,qBAAqB,GAAG;AAC/C,mBAAO,OAAO,KAAK,KAAK;AAAA,UAC1B,OAAO;AACL,iBAAK,QAAQ,KAAK,KAAK,mBAAmB,GAAG;AAC7C,mBAAO,OAAO,KAAK,KAAK;AAAA,UAC1B;AAAA,QACF,OAAO;AACL,cAAIA,YAAW,QAAQ;AACrB,iBAAK,QAAQ,KAAK,KAAK,gBAAgB,GAAG;AAC1C,gBAAI,OAAO,IAAI;AACb,qBAAO;AAAA,YACT;AACA,iBAAK,QAAQ,KAAK,KAAK,qBAAqB,GAAG;AAC/C,gBAAI,OAAO,IAAI;AACb,qBAAO;AAAA,YACT;AACA,iBAAK,QAAQ,KAAK,KAAK,mBAAmB,GAAG;AAC7C,mBAAO,OAAO,KAAK,KAAK;AAAA,UAC1B,WAAWA,YAAW,OAAO;AAC3B,iBAAK,QAAQ,KAAK,KAAK,qBAAqB,GAAG;AAC/C,gBAAI,OAAO,IAAI;AACb,qBAAO;AAAA,YACT;AACA,iBAAK,QAAQ,KAAK,KAAK,gBAAgB,GAAG;AAC1C,gBAAI,OAAO,IAAI;AACb,qBAAO;AAAA,YACT;AACA,iBAAK,QAAQ,KAAK,KAAK,mBAAmB,GAAG;AAC7C,mBAAO,OAAO,KAAK,KAAK;AAAA,UAC1B,OAAO;AACL,iBAAK,QAAQ,KAAK,KAAK,mBAAmB,GAAG;AAC7C,gBAAI,OAAO,IAAI;AACb,qBAAO;AAAA,YACT;AACA,iBAAK,QAAQ,KAAK,KAAK,gBAAgB,GAAG;AAC1C,gBAAI,OAAO,IAAI;AACb,qBAAO;AAAA,YACT;AACA,iBAAK,QAAQ,KAAK,KAAK,qBAAqB,GAAG;AAC/C,mBAAO,OAAO,KAAK,KAAK;AAAA,UAC1B;AAAA,QACF;AAAA,MACF;AACA,eAAS,oBAAoB,aAAaA,SAAQ,QAAQ;AACxD,YAAI,GAAG,KAAK;AACZ,YAAI,KAAK,qBAAqB;AAC5B,iBAAO,oBAAoB,KAAK,MAAM,aAAaA,SAAQ,MAAM;AAAA,QACnE;AACA,YAAI,CAAC,KAAK,gBAAgB;AACxB,eAAK,iBAAiB,CAAC;AACvB,eAAK,oBAAoB,CAAC;AAC1B,eAAK,sBAAsB,CAAC;AAC5B,eAAK,qBAAqB,CAAC;AAAA,QAC7B;AACA,aAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AAGtB,gBAAM,UAAU,CAAC,KAAM,CAAC,CAAC,EAAE,IAAI,CAAC;AAChC,cAAI,UAAU,CAAC,KAAK,mBAAmB,CAAC,GAAG;AACzC,iBAAK,mBAAmB,CAAC,IAAI,IAAI,OAAO,MAAM,KAAK,SAAS,KAAK,EAAE,EAAE,QAAQ,KAAK,MAAM,IAAI,KAAK,GAAG;AACpG,iBAAK,oBAAoB,CAAC,IAAI,IAAI,OAAO,MAAM,KAAK,cAAc,KAAK,EAAE,EAAE,QAAQ,KAAK,MAAM,IAAI,KAAK,GAAG;AAC1G,iBAAK,kBAAkB,CAAC,IAAI,IAAI,OAAO,MAAM,KAAK,YAAY,KAAK,EAAE,EAAE,QAAQ,KAAK,MAAM,IAAI,KAAK,GAAG;AAAA,UACxG;AACA,cAAI,CAAC,KAAK,eAAe,CAAC,GAAG;AAC3B,oBAAQ,MAAM,KAAK,SAAS,KAAK,EAAE,IAAI,OAAO,KAAK,cAAc,KAAK,EAAE,IAAI,OAAO,KAAK,YAAY,KAAK,EAAE;AAC3G,iBAAK,eAAe,CAAC,IAAI,IAAI,OAAO,MAAM,QAAQ,KAAK,EAAE,GAAG,GAAG;AAAA,UACjE;AAEA,cAAI,UAAUA,YAAW,UAAU,KAAK,mBAAmB,CAAC,EAAE,KAAK,WAAW,GAAG;AAC/E,mBAAO;AAAA,UACT,WAAW,UAAUA,YAAW,SAAS,KAAK,oBAAoB,CAAC,EAAE,KAAK,WAAW,GAAG;AACtF,mBAAO;AAAA,UACT,WAAW,UAAUA,YAAW,QAAQ,KAAK,kBAAkB,CAAC,EAAE,KAAK,WAAW,GAAG;AACnF,mBAAO;AAAA,UACT,WAAW,CAAC,UAAU,KAAK,eAAe,CAAC,EAAE,KAAK,WAAW,GAAG;AAC9D,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAIA,eAAS,gBAAgB,OAAO;AAC9B,YAAI,CAAC,KAAK,QAAQ,GAAG;AACnB,iBAAO,SAAS,OAAO,OAAO;AAAA,QAChC;AACA,YAAI,MAAM,KAAK,SAAS,KAAK,GAAG,UAAU,IAAI,KAAK,GAAG,OAAO;AAC7D,YAAI,SAAS,MAAM;AACjB,kBAAQ,aAAa,OAAO,KAAK,WAAW,CAAC;AAC7C,iBAAO,KAAK,IAAI,QAAQ,KAAK,GAAG;AAAA,QAClC,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AACA,eAAS,sBAAsB,OAAO;AACpC,YAAI,CAAC,KAAK,QAAQ,GAAG;AACnB,iBAAO,SAAS,OAAO,OAAO;AAAA,QAChC;AACA,YAAI,WAAW,KAAK,IAAI,IAAI,IAAI,KAAK,WAAW,EAAE,MAAM,OAAO;AAC/D,eAAO,SAAS,OAAO,UAAU,KAAK,IAAI,QAAQ,SAAS,GAAG;AAAA,MAChE;AACA,eAAS,mBAAmB,OAAO;AACjC,YAAI,CAAC,KAAK,QAAQ,GAAG;AACnB,iBAAO,SAAS,OAAO,OAAO;AAAA,QAChC;AAMA,YAAI,SAAS,MAAM;AACjB,cAAI,UAAU,gBAAgB,OAAO,KAAK,WAAW,CAAC;AACtD,iBAAO,KAAK,IAAI,KAAK,IAAI,IAAI,IAAI,UAAU,UAAU,CAAC;AAAA,QACxD,OAAO;AACL,iBAAO,KAAK,IAAI,KAAK;AAAA,QACvB;AAAA,MACF;AACA,eAAS,cAAc,UAAU;AAC/B,YAAI,KAAK,qBAAqB;AAC5B,cAAI,CAAC,WAAW,MAAM,gBAAgB,GAAG;AACvC,iCAAqB,KAAK,IAAI;AAAA,UAChC;AACA,cAAI,UAAU;AACZ,mBAAO,KAAK;AAAA,UACd,OAAO;AACL,mBAAO,KAAK;AAAA,UACd;AAAA,QACF,OAAO;AACL,cAAI,CAAC,WAAW,MAAM,gBAAgB,GAAG;AACvC,iBAAK,iBAAiB;AAAA,UACxB;AACA,iBAAO,KAAK,wBAAwB,WAAW,KAAK,uBAAuB,KAAK;AAAA,QAClF;AAAA,MACF;AACA,eAAS,mBAAmB,UAAU;AACpC,YAAI,KAAK,qBAAqB;AAC5B,cAAI,CAAC,WAAW,MAAM,gBAAgB,GAAG;AACvC,iCAAqB,KAAK,IAAI;AAAA,UAChC;AACA,cAAI,UAAU;AACZ,mBAAO,KAAK;AAAA,UACd,OAAO;AACL,mBAAO,KAAK;AAAA,UACd;AAAA,QACF,OAAO;AACL,cAAI,CAAC,WAAW,MAAM,qBAAqB,GAAG;AAC5C,iBAAK,sBAAsB;AAAA,UAC7B;AACA,iBAAO,KAAK,6BAA6B,WAAW,KAAK,4BAA4B,KAAK;AAAA,QAC5F;AAAA,MACF;AACA,eAAS,iBAAiB,UAAU;AAClC,YAAI,KAAK,qBAAqB;AAC5B,cAAI,CAAC,WAAW,MAAM,gBAAgB,GAAG;AACvC,iCAAqB,KAAK,IAAI;AAAA,UAChC;AACA,cAAI,UAAU;AACZ,mBAAO,KAAK;AAAA,UACd,OAAO;AACL,mBAAO,KAAK;AAAA,UACd;AAAA,QACF,OAAO;AACL,cAAI,CAAC,WAAW,MAAM,mBAAmB,GAAG;AAC1C,iBAAK,oBAAoB;AAAA,UAC3B;AACA,iBAAO,KAAK,2BAA2B,WAAW,KAAK,0BAA0B,KAAK;AAAA,QACxF;AAAA,MACF;AACA,eAAS,uBAAuB;AAC9B,iBAAS,UAAU,GAAG,GAAG;AACvB,iBAAO,EAAE,SAAS,EAAE;AAAA,QACtB;AACA,YAAI,YAAY,CAAC,GACf,cAAc,CAAC,GACf,aAAa,CAAC,GACd,cAAc,CAAC,GACf,GACA,KACA,MACA,QACA;AACF,aAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AAEtB,gBAAM,UAAU,CAAC,KAAM,CAAC,CAAC,EAAE,IAAI,CAAC;AAChC,iBAAO,YAAY,KAAK,YAAY,KAAK,EAAE,CAAC;AAC5C,mBAAS,YAAY,KAAK,cAAc,KAAK,EAAE,CAAC;AAChD,kBAAQ,YAAY,KAAK,SAAS,KAAK,EAAE,CAAC;AAC1C,oBAAU,KAAK,IAAI;AACnB,sBAAY,KAAK,MAAM;AACvB,qBAAW,KAAK,KAAK;AACrB,sBAAY,KAAK,IAAI;AACrB,sBAAY,KAAK,MAAM;AACvB,sBAAY,KAAK,KAAK;AAAA,QACxB;AAGA,kBAAU,KAAK,SAAS;AACxB,oBAAY,KAAK,SAAS;AAC1B,mBAAW,KAAK,SAAS;AACzB,oBAAY,KAAK,SAAS;AAC1B,aAAK,iBAAiB,IAAI,OAAO,OAAO,YAAY,KAAK,GAAG,IAAI,KAAK,GAAG;AACxE,aAAK,sBAAsB,KAAK;AAChC,aAAK,oBAAoB,KAAK;AAC9B,aAAK,uBAAuB,IAAI,OAAO,OAAO,WAAW,KAAK,GAAG,IAAI,KAAK,GAAG;AAC7E,aAAK,4BAA4B,IAAI,OAAO,OAAO,YAAY,KAAK,GAAG,IAAI,KAAK,GAAG;AACnF,aAAK,0BAA0B,IAAI,OAAO,OAAO,UAAU,KAAK,GAAG,IAAI,KAAK,GAAG;AAAA,MACjF;AAIA,eAAS,UAAU;AACjB,eAAO,KAAK,MAAM,IAAI,MAAM;AAAA,MAC9B;AACA,eAAS,UAAU;AACjB,eAAO,KAAK,MAAM,KAAK;AAAA,MACzB;AACA,qBAAe,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,MAAM;AACxC,qBAAe,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,OAAO;AACzC,qBAAe,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,OAAO;AACzC,qBAAe,OAAO,GAAG,GAAG,WAAY;AACtC,eAAO,KAAK,QAAQ,MAAM,IAAI,IAAI,SAAS,KAAK,QAAQ,GAAG,CAAC;AAAA,MAC9D,CAAC;AACD,qBAAe,SAAS,GAAG,GAAG,WAAY;AACxC,eAAO,KAAK,QAAQ,MAAM,IAAI,IAAI,SAAS,KAAK,QAAQ,GAAG,CAAC,IAAI,SAAS,KAAK,QAAQ,GAAG,CAAC;AAAA,MAC5F,CAAC;AACD,qBAAe,OAAO,GAAG,GAAG,WAAY;AACtC,eAAO,KAAK,KAAK,MAAM,IAAI,SAAS,KAAK,QAAQ,GAAG,CAAC;AAAA,MACvD,CAAC;AACD,qBAAe,SAAS,GAAG,GAAG,WAAY;AACxC,eAAO,KAAK,KAAK,MAAM,IAAI,SAAS,KAAK,QAAQ,GAAG,CAAC,IAAI,SAAS,KAAK,QAAQ,GAAG,CAAC;AAAA,MACrF,CAAC;AACD,eAAS,SAASS,QAAO,WAAW;AAClC,uBAAeA,QAAO,GAAG,GAAG,WAAY;AACtC,iBAAO,KAAK,WAAW,EAAE,SAAS,KAAK,MAAM,GAAG,KAAK,QAAQ,GAAG,SAAS;AAAA,QAC3E,CAAC;AAAA,MACH;AACA,eAAS,KAAK,IAAI;AAClB,eAAS,KAAK,KAAK;AAInB,mBAAa,QAAQ,GAAG;AAGxB,sBAAgB,QAAQ,EAAE;AAI1B,eAAS,cAAc,UAAUR,SAAQ;AACvC,eAAOA,QAAO;AAAA,MAChB;AACA,oBAAc,KAAK,aAAa;AAChC,oBAAc,KAAK,aAAa;AAChC,oBAAc,KAAKkB,UAAS;AAC5B,oBAAc,KAAKA,UAAS;AAC5B,oBAAc,KAAKA,UAAS;AAC5B,oBAAc,MAAMA,YAAWH,OAAM;AACrC,oBAAc,MAAMG,YAAWH,OAAM;AACrC,oBAAc,MAAMG,YAAWH,OAAM;AACrC,oBAAc,OAAO,SAAS;AAC9B,oBAAc,SAAS,SAAS;AAChC,oBAAc,OAAO,SAAS;AAC9B,oBAAc,SAAS,SAAS;AAChC,oBAAc,CAAC,KAAK,IAAI,GAAG,IAAI;AAC/B,oBAAc,CAAC,KAAK,IAAI,GAAG,SAAU,OAAO,OAAO,QAAQ;AACzD,YAAI,SAAS,MAAM,KAAK;AACxB,cAAM,IAAI,IAAI,WAAW,KAAK,IAAI;AAAA,MACpC,CAAC;AACD,oBAAc,CAAC,KAAK,GAAG,GAAG,SAAU,OAAO,OAAO,QAAQ;AACxD,eAAO,QAAQ,OAAO,QAAQ,KAAK,KAAK;AACxC,eAAO,YAAY;AAAA,MACrB,CAAC;AACD,oBAAc,CAAC,KAAK,IAAI,GAAG,SAAU,OAAO,OAAO,QAAQ;AACzD,cAAM,IAAI,IAAI,MAAM,KAAK;AACzB,wBAAgB,MAAM,EAAE,UAAU;AAAA,MACpC,CAAC;AACD,oBAAc,OAAO,SAAU,OAAO,OAAO,QAAQ;AACnD,YAAI,MAAM,MAAM,SAAS;AACzB,cAAM,IAAI,IAAI,MAAM,MAAM,OAAO,GAAG,GAAG,CAAC;AACxC,cAAM,MAAM,IAAI,MAAM,MAAM,OAAO,GAAG,CAAC;AACvC,wBAAgB,MAAM,EAAE,UAAU;AAAA,MACpC,CAAC;AACD,oBAAc,SAAS,SAAU,OAAO,OAAO,QAAQ;AACrD,YAAI,OAAO,MAAM,SAAS,GACxB,OAAO,MAAM,SAAS;AACxB,cAAM,IAAI,IAAI,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC;AACzC,cAAM,MAAM,IAAI,MAAM,MAAM,OAAO,MAAM,CAAC,CAAC;AAC3C,cAAM,MAAM,IAAI,MAAM,MAAM,OAAO,IAAI,CAAC;AACxC,wBAAgB,MAAM,EAAE,UAAU;AAAA,MACpC,CAAC;AACD,oBAAc,OAAO,SAAU,OAAO,OAAO,QAAQ;AACnD,YAAI,MAAM,MAAM,SAAS;AACzB,cAAM,IAAI,IAAI,MAAM,MAAM,OAAO,GAAG,GAAG,CAAC;AACxC,cAAM,MAAM,IAAI,MAAM,MAAM,OAAO,GAAG,CAAC;AAAA,MACzC,CAAC;AACD,oBAAc,SAAS,SAAU,OAAO,OAAO,QAAQ;AACrD,YAAI,OAAO,MAAM,SAAS,GACxB,OAAO,MAAM,SAAS;AACxB,cAAM,IAAI,IAAI,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC;AACzC,cAAM,MAAM,IAAI,MAAM,MAAM,OAAO,MAAM,CAAC,CAAC;AAC3C,cAAM,MAAM,IAAI,MAAM,MAAM,OAAO,IAAI,CAAC;AAAA,MAC1C,CAAC;AAID,eAAS,WAAW,OAAO;AAGzB,gBAAQ,QAAQ,IAAI,YAAY,EAAE,OAAO,CAAC,MAAM;AAAA,MAClD;AACA,UAAI,6BAA6B,iBAK/B,aAAa,WAAW,SAAS,IAAI;AACvC,eAAS,eAAeU,QAAOC,UAAS,SAAS;AAC/C,YAAID,SAAQ,IAAI;AACd,iBAAO,UAAU,OAAO;AAAA,QAC1B,OAAO;AACL,iBAAO,UAAU,OAAO;AAAA,QAC1B;AAAA,MACF;AACA,UAAI,aAAa;AAAA,QACf,UAAU;AAAA,QACV,gBAAgB;AAAA,QAChB,aAAa;AAAA,QACb,SAAS;AAAA,QACT,wBAAwB;AAAA,QACxB,cAAc;AAAA,QACd,QAAQ;AAAA,QACR,aAAa;AAAA,QACb,MAAM;AAAA,QACN,UAAU;AAAA,QACV,aAAa;AAAA,QACb,eAAe;AAAA,QACf,eAAe;AAAA,MACjB;AAGA,UAAI,UAAU,CAAC,GACb,iBAAiB,CAAC,GAClB;AACF,eAAS,aAAa,MAAM,MAAM;AAChC,YAAI,GACF,OAAO,KAAK,IAAI,KAAK,QAAQ,KAAK,MAAM;AAC1C,aAAK,IAAI,GAAG,IAAI,MAAM,KAAK,GAAG;AAC5B,cAAI,KAAK,CAAC,MAAM,KAAK,CAAC,GAAG;AACvB,mBAAO;AAAA,UACT;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,eAAS,gBAAgB,KAAK;AAC5B,eAAO,MAAM,IAAI,YAAY,EAAE,QAAQ,KAAK,GAAG,IAAI;AAAA,MACrD;AAKA,eAAS,aAAa,OAAO;AAC3B,YAAI,IAAI,GACN,GACA,MACAzB,SACA;AACF,eAAO,IAAI,MAAM,QAAQ;AACvB,kBAAQ,gBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG;AAC3C,cAAI,MAAM;AACV,iBAAO,gBAAgB,MAAM,IAAI,CAAC,CAAC;AACnC,iBAAO,OAAO,KAAK,MAAM,GAAG,IAAI;AAChC,iBAAO,IAAI,GAAG;AACZ,YAAAA,UAAS,WAAW,MAAM,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC;AAC/C,gBAAIA,SAAQ;AACV,qBAAOA;AAAA,YACT;AACA,gBAAI,QAAQ,KAAK,UAAU,KAAK,aAAa,OAAO,IAAI,KAAK,IAAI,GAAG;AAElE;AAAA,YACF;AACA;AAAA,UACF;AACA;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,eAAS,iBAAiB,MAAM;AAE9B,eAAO,KAAK,MAAM,aAAa,KAAK;AAAA,MACtC;AACA,eAAS,WAAW,MAAM;AACxB,YAAI,YAAY,MACd;AAEF,YAAI,QAAQ,IAAI,MAAM,UAAa,OAAO,WAAW,eAAe,UAAU,OAAO,WAAW,iBAAiB,IAAI,GAAG;AACtH,cAAI;AACF,wBAAY,aAAa;AACzB,6BAAiB;AACjB,2BAAe,cAAc,IAAI;AACjC,+BAAmB,SAAS;AAAA,UAC9B,SAAS,GAAG;AAGV,oBAAQ,IAAI,IAAI;AAAA,UAClB;AAAA,QACF;AACA,eAAO,QAAQ,IAAI;AAAA,MACrB;AAKA,eAAS,mBAAmB,KAAK,QAAQ;AACvC,YAAI;AACJ,YAAI,KAAK;AACP,cAAIH,aAAY,MAAM,GAAG;AACvB,mBAAO,UAAU,GAAG;AAAA,UACtB,OAAO;AACL,mBAAO,aAAa,KAAK,MAAM;AAAA,UACjC;AACA,cAAI,MAAM;AAER,2BAAe;AAAA,UACjB,OAAO;AACL,gBAAI,OAAO,YAAY,eAAe,QAAQ,MAAM;AAElD,sBAAQ,KAAK,YAAY,MAAM,wCAAwC;AAAA,YACzE;AAAA,UACF;AAAA,QACF;AACA,eAAO,aAAa;AAAA,MACtB;AACA,eAAS,aAAa,MAAM,QAAQ;AAClC,YAAI,WAAW,MAAM;AACnB,cAAIG,SACF,eAAe;AACjB,iBAAO,OAAO;AACd,cAAI,QAAQ,IAAI,KAAK,MAAM;AACzB,4BAAgB,wBAAwB,yOAAwP;AAChS,2BAAe,QAAQ,IAAI,EAAE;AAAA,UAC/B,WAAW,OAAO,gBAAgB,MAAM;AACtC,gBAAI,QAAQ,OAAO,YAAY,KAAK,MAAM;AACxC,6BAAe,QAAQ,OAAO,YAAY,EAAE;AAAA,YAC9C,OAAO;AACL,cAAAA,UAAS,WAAW,OAAO,YAAY;AACvC,kBAAIA,WAAU,MAAM;AAClB,+BAAeA,QAAO;AAAA,cACxB,OAAO;AACL,oBAAI,CAAC,eAAe,OAAO,YAAY,GAAG;AACxC,iCAAe,OAAO,YAAY,IAAI,CAAC;AAAA,gBACzC;AACA,+BAAe,OAAO,YAAY,EAAE,KAAK;AAAA,kBACvC;AAAA,kBACA;AAAA,gBACF,CAAC;AACD,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AACA,kBAAQ,IAAI,IAAI,IAAI,OAAO,aAAa,cAAc,MAAM,CAAC;AAC7D,cAAI,eAAe,IAAI,GAAG;AACxB,2BAAe,IAAI,EAAE,QAAQ,SAAU,GAAG;AACxC,2BAAa,EAAE,MAAM,EAAE,MAAM;AAAA,YAC/B,CAAC;AAAA,UACH;AAKA,6BAAmB,IAAI;AACvB,iBAAO,QAAQ,IAAI;AAAA,QACrB,OAAO;AAEL,iBAAO,QAAQ,IAAI;AACnB,iBAAO;AAAA,QACT;AAAA,MACF;AACA,eAAS,aAAa,MAAM,QAAQ;AAClC,YAAI,UAAU,MAAM;AAClB,cAAIA,SACF,WACA,eAAe;AACjB,cAAI,QAAQ,IAAI,KAAK,QAAQ,QAAQ,IAAI,EAAE,gBAAgB,MAAM;AAE/D,oBAAQ,IAAI,EAAE,IAAI,aAAa,QAAQ,IAAI,EAAE,SAAS,MAAM,CAAC;AAAA,UAC/D,OAAO;AAEL,wBAAY,WAAW,IAAI;AAC3B,gBAAI,aAAa,MAAM;AACrB,6BAAe,UAAU;AAAA,YAC3B;AACA,qBAAS,aAAa,cAAc,MAAM;AAC1C,gBAAI,aAAa,MAAM;AAIrB,qBAAO,OAAO;AAAA,YAChB;AACA,YAAAA,UAAS,IAAI,OAAO,MAAM;AAC1B,YAAAA,QAAO,eAAe,QAAQ,IAAI;AAClC,oBAAQ,IAAI,IAAIA;AAAA,UAClB;AAGA,6BAAmB,IAAI;AAAA,QACzB,OAAO;AAEL,cAAI,QAAQ,IAAI,KAAK,MAAM;AACzB,gBAAI,QAAQ,IAAI,EAAE,gBAAgB,MAAM;AACtC,sBAAQ,IAAI,IAAI,QAAQ,IAAI,EAAE;AAC9B,kBAAI,SAAS,mBAAmB,GAAG;AACjC,mCAAmB,IAAI;AAAA,cACzB;AAAA,YACF,WAAW,QAAQ,IAAI,KAAK,MAAM;AAChC,qBAAO,QAAQ,IAAI;AAAA,YACrB;AAAA,UACF;AAAA,QACF;AACA,eAAO,QAAQ,IAAI;AAAA,MACrB;AAGA,eAAS,UAAU,KAAK;AACtB,YAAIA;AACJ,YAAI,OAAO,IAAI,WAAW,IAAI,QAAQ,OAAO;AAC3C,gBAAM,IAAI,QAAQ;AAAA,QACpB;AACA,YAAI,CAAC,KAAK;AACR,iBAAO;AAAA,QACT;AACA,YAAI,CAAC,QAAQ,GAAG,GAAG;AAEjB,UAAAA,UAAS,WAAW,GAAG;AACvB,cAAIA,SAAQ;AACV,mBAAOA;AAAA,UACT;AACA,gBAAM,CAAC,GAAG;AAAA,QACZ;AACA,eAAO,aAAa,GAAG;AAAA,MACzB;AACA,eAAS,cAAc;AACrB,eAAO,KAAK,OAAO;AAAA,MACrB;AACA,eAAS,cAAc,GAAG;AACxB,YAAI,UACF,IAAI,EAAE;AACR,YAAI,KAAK,gBAAgB,CAAC,EAAE,aAAa,IAAI;AAC3C,qBAAW,EAAE,KAAK,IAAI,KAAK,EAAE,KAAK,IAAI,KAAK,QAAQ,EAAEuB,KAAI,IAAI,KAAK,EAAEA,KAAI,IAAI,YAAY,EAAE,IAAI,GAAG,EAAE,KAAK,CAAC,IAAIA,QAAO,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,MAAM,EAAE,IAAI,MAAM,OAAO,EAAE,MAAM,MAAM,KAAK,EAAE,MAAM,MAAM,KAAK,EAAE,WAAW,MAAM,KAAK,OAAO,EAAE,MAAM,IAAI,KAAK,EAAE,MAAM,IAAI,KAAK,SAAS,EAAE,MAAM,IAAI,KAAK,EAAE,MAAM,IAAI,KAAK,SAAS,EAAE,WAAW,IAAI,KAAK,EAAE,WAAW,IAAI,MAAM,cAAc;AAC5X,cAAI,gBAAgB,CAAC,EAAE,uBAAuB,WAAW,QAAQ,WAAWA,QAAO;AACjF,uBAAWA;AAAA,UACb;AACA,cAAI,gBAAgB,CAAC,EAAE,kBAAkB,aAAa,IAAI;AACxD,uBAAW;AAAA,UACb;AACA,cAAI,gBAAgB,CAAC,EAAE,oBAAoB,aAAa,IAAI;AAC1D,uBAAW;AAAA,UACb;AACA,0BAAgB,CAAC,EAAE,WAAW;AAAA,QAChC;AACA,eAAO;AAAA,MACT;AAIA,UAAI,mBAAmB,kJACrB,gBAAgB,8IAChB,UAAU,yBACV,WAAW,CAAC,CAAC,gBAAgB,qBAAqB,GAAG,CAAC,cAAc,iBAAiB,GAAG,CAAC,gBAAgB,gBAAgB,GAAG,CAAC,cAAc,eAAe,KAAK,GAAG,CAAC,YAAY,aAAa,GAAG,CAAC,WAAW,cAAc,KAAK,GAAG,CAAC,cAAc,YAAY,GAAG,CAAC,YAAY,OAAO,GAAG,CAAC,cAAc,aAAa,GAAG,CAAC,aAAa,eAAe,KAAK,GAAG,CAAC,WAAW,OAAO,GAAG,CAAC,UAAU,SAAS,KAAK,GAAG,CAAC,QAAQ,SAAS,KAAK,CAAC,GAEpa,WAAW,CAAC,CAAC,iBAAiB,qBAAqB,GAAG,CAAC,iBAAiB,oBAAoB,GAAG,CAAC,YAAY,gBAAgB,GAAG,CAAC,SAAS,WAAW,GAAG,CAAC,eAAe,mBAAmB,GAAG,CAAC,eAAe,kBAAkB,GAAG,CAAC,UAAU,cAAc,GAAG,CAAC,QAAQ,UAAU,GAAG,CAAC,MAAM,MAAM,CAAC,GAClS,kBAAkB,sBAElB,UAAU,2LACV,aAAa;AAAA,QACX,IAAI;AAAA,QACJ,KAAK;AAAA,QACL,KAAK,KAAK;AAAA,QACV,KAAK,KAAK;AAAA,QACV,KAAK,KAAK;AAAA,QACV,KAAK,KAAK;AAAA,QACV,KAAK,KAAK;AAAA,QACV,KAAK,KAAK;AAAA,QACV,KAAK,KAAK;AAAA,QACV,KAAK,KAAK;AAAA,MACZ;AAGF,eAAS,cAAc,QAAQ;AAC7B,YAAI,GACF,GACA,SAAS,OAAO,IAChB,QAAQ,iBAAiB,KAAK,MAAM,KAAK,cAAc,KAAK,MAAM,GAClE,WACA,YACA,YACA,UACA,cAAc,SAAS,QACvB,cAAc,SAAS;AACzB,YAAI,OAAO;AACT,0BAAgB,MAAM,EAAE,MAAM;AAC9B,eAAK,IAAI,GAAG,IAAI,aAAa,IAAI,GAAG,KAAK;AACvC,gBAAI,SAAS,CAAC,EAAE,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC,GAAG;AACjC,2BAAa,SAAS,CAAC,EAAE,CAAC;AAC1B,0BAAY,SAAS,CAAC,EAAE,CAAC,MAAM;AAC/B;AAAA,YACF;AAAA,UACF;AACA,cAAI,cAAc,MAAM;AACtB,mBAAO,WAAW;AAClB;AAAA,UACF;AACA,cAAI,MAAM,CAAC,GAAG;AACZ,iBAAK,IAAI,GAAG,IAAI,aAAa,IAAI,GAAG,KAAK;AACvC,kBAAI,SAAS,CAAC,EAAE,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC,GAAG;AAEjC,8BAAc,MAAM,CAAC,KAAK,OAAO,SAAS,CAAC,EAAE,CAAC;AAC9C;AAAA,cACF;AAAA,YACF;AACA,gBAAI,cAAc,MAAM;AACtB,qBAAO,WAAW;AAClB;AAAA,YACF;AAAA,UACF;AACA,cAAI,CAAC,aAAa,cAAc,MAAM;AACpC,mBAAO,WAAW;AAClB;AAAA,UACF;AACA,cAAI,MAAM,CAAC,GAAG;AACZ,gBAAI,QAAQ,KAAK,MAAM,CAAC,CAAC,GAAG;AAC1B,yBAAW;AAAA,YACb,OAAO;AACL,qBAAO,WAAW;AAClB;AAAA,YACF;AAAA,UACF;AACA,iBAAO,KAAK,cAAc,cAAc,OAAO,YAAY;AAC3D,oCAA0B,MAAM;AAAA,QAClC,OAAO;AACL,iBAAO,WAAW;AAAA,QACpB;AAAA,MACF;AACA,eAAS,0BAA0B,SAAS,UAAU,QAAQ,SAAS,WAAW,WAAW;AAC3F,YAAI,SAAS,CAAC,eAAe,OAAO,GAAG,yBAAyB,QAAQ,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,SAAS,SAAS,EAAE,GAAG,SAAS,WAAW,EAAE,CAAC;AACvJ,YAAI,WAAW;AACb,iBAAO,KAAK,SAAS,WAAW,EAAE,CAAC;AAAA,QACrC;AACA,eAAO;AAAA,MACT;AACA,eAAS,eAAe,SAAS;AAC/B,YAAI,OAAO,SAAS,SAAS,EAAE;AAC/B,YAAI,QAAQ,IAAI;AACd,iBAAO,MAAO;AAAA,QAChB,WAAW,QAAQ,KAAK;AACtB,iBAAO,OAAO;AAAA,QAChB;AACA,eAAO;AAAA,MACT;AACA,eAAS,kBAAkB,GAAG;AAE5B,eAAO,EAAE,QAAQ,sBAAsB,GAAG,EAAE,QAAQ,YAAY,GAAG,EAAE,QAAQ,UAAU,EAAE,EAAE,QAAQ,UAAU,EAAE;AAAA,MACjH;AACA,eAAS,aAAa,YAAY,aAAa,QAAQ;AACrD,YAAI,YAAY;AAEd,cAAI,kBAAkB,2BAA2B,QAAQ,UAAU,GACjE,gBAAgB,IAAI,KAAK,YAAY,CAAC,GAAG,YAAY,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,OAAO;AAClF,cAAI,oBAAoB,eAAe;AACrC,4BAAgB,MAAM,EAAE,kBAAkB;AAC1C,mBAAO,WAAW;AAClB,mBAAO;AAAA,UACT;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,eAAS,gBAAgB,WAAW,gBAAgB,WAAW;AAC7D,YAAI,WAAW;AACb,iBAAO,WAAW,SAAS;AAAA,QAC7B,WAAW,gBAAgB;AAEzB,iBAAO;AAAA,QACT,OAAO;AACL,cAAI,KAAK,SAAS,WAAW,EAAE,GAC7B,IAAI,KAAK,KACT,KAAK,KAAK,KAAK;AACjB,iBAAO,IAAI,KAAK;AAAA,QAClB;AAAA,MACF;AAGA,eAAS,kBAAkB,QAAQ;AACjC,YAAI,QAAQ,QAAQ,KAAK,kBAAkB,OAAO,EAAE,CAAC,GACnD;AACF,YAAI,OAAO;AACT,wBAAc,0BAA0B,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AAClG,cAAI,CAAC,aAAa,MAAM,CAAC,GAAG,aAAa,MAAM,GAAG;AAChD;AAAA,UACF;AACA,iBAAO,KAAK;AACZ,iBAAO,OAAO,gBAAgB,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC;AAC3D,iBAAO,KAAK,cAAc,MAAM,MAAM,OAAO,EAAE;AAC/C,iBAAO,GAAG,cAAc,OAAO,GAAG,cAAc,IAAI,OAAO,IAAI;AAC/D,0BAAgB,MAAM,EAAE,UAAU;AAAA,QACpC,OAAO;AACL,iBAAO,WAAW;AAAA,QACpB;AAAA,MACF;AAGA,eAAS,iBAAiB,QAAQ;AAChC,YAAI,UAAU,gBAAgB,KAAK,OAAO,EAAE;AAC5C,YAAI,YAAY,MAAM;AACpB,iBAAO,KAAK,oBAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChC;AAAA,QACF;AACA,sBAAc,MAAM;AACpB,YAAI,OAAO,aAAa,OAAO;AAC7B,iBAAO,OAAO;AAAA,QAChB,OAAO;AACL;AAAA,QACF;AACA,0BAAkB,MAAM;AACxB,YAAI,OAAO,aAAa,OAAO;AAC7B,iBAAO,OAAO;AAAA,QAChB,OAAO;AACL;AAAA,QACF;AACA,YAAI,OAAO,SAAS;AAClB,iBAAO,WAAW;AAAA,QACpB,OAAO;AAEL,gBAAM,wBAAwB,MAAM;AAAA,QACtC;AAAA,MACF;AACA,YAAM,0BAA0B,UAAU,iSAA2S,SAAU,QAAQ;AACrW,eAAO,KAAK,oBAAI,KAAK,OAAO,MAAM,OAAO,UAAU,SAAS,GAAG;AAAA,MACjE,CAAC;AAGD,eAAS,SAAS,GAAG,GAAG,GAAG;AACzB,YAAI,KAAK,MAAM;AACb,iBAAO;AAAA,QACT;AACA,YAAI,KAAK,MAAM;AACb,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AACA,eAAS,iBAAiB,QAAQ;AAEhC,YAAI,WAAW,IAAI,KAAK,MAAM,IAAI,CAAC;AACnC,YAAI,OAAO,SAAS;AAClB,iBAAO,CAAC,SAAS,eAAe,GAAG,SAAS,YAAY,GAAG,SAAS,WAAW,CAAC;AAAA,QAClF;AACA,eAAO,CAAC,SAAS,YAAY,GAAG,SAAS,SAAS,GAAG,SAAS,QAAQ,CAAC;AAAA,MACzE;AAMA,eAAS,gBAAgB,QAAQ;AAC/B,YAAI,GACF,MACA,QAAQ,CAAC,GACT,aACA,iBACA;AACF,YAAI,OAAO,IAAI;AACb;AAAA,QACF;AACA,sBAAc,iBAAiB,MAAM;AAGrC,YAAI,OAAO,MAAM,OAAO,GAAGA,KAAI,KAAK,QAAQ,OAAO,GAAG,KAAK,KAAK,MAAM;AACpE,gCAAsB,MAAM;AAAA,QAC9B;AAGA,YAAI,OAAO,cAAc,MAAM;AAC7B,sBAAY,SAAS,OAAO,GAAG,IAAI,GAAG,YAAY,IAAI,CAAC;AACvD,cAAI,OAAO,aAAa,WAAW,SAAS,KAAK,OAAO,eAAe,GAAG;AACxE,4BAAgB,MAAM,EAAE,qBAAqB;AAAA,UAC/C;AACA,iBAAO,cAAc,WAAW,GAAG,OAAO,UAAU;AACpD,iBAAO,GAAG,KAAK,IAAI,KAAK,YAAY;AACpC,iBAAO,GAAGA,KAAI,IAAI,KAAK,WAAW;AAAA,QACpC;AAOA,aAAK,IAAI,GAAG,IAAI,KAAK,OAAO,GAAG,CAAC,KAAK,MAAM,EAAE,GAAG;AAC9C,iBAAO,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,YAAY,CAAC;AAAA,QACzC;AAGA,eAAO,IAAI,GAAG,KAAK;AACjB,iBAAO,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,CAAC,KAAK,OAAO,MAAM,IAAI,IAAI,IAAI,OAAO,GAAG,CAAC;AAAA,QAChF;AAGA,YAAI,OAAO,GAAG,IAAI,MAAM,MAAM,OAAO,GAAG,MAAM,MAAM,KAAK,OAAO,GAAG,MAAM,MAAM,KAAK,OAAO,GAAG,WAAW,MAAM,GAAG;AAChH,iBAAO,WAAW;AAClB,iBAAO,GAAG,IAAI,IAAI;AAAA,QACpB;AACA,eAAO,MAAM,OAAO,UAAU,gBAAgB,YAAY,MAAM,MAAM,KAAK;AAC3E,0BAAkB,OAAO,UAAU,OAAO,GAAG,UAAU,IAAI,OAAO,GAAG,OAAO;AAI5E,YAAI,OAAO,QAAQ,MAAM;AACvB,iBAAO,GAAG,cAAc,OAAO,GAAG,cAAc,IAAI,OAAO,IAAI;AAAA,QACjE;AACA,YAAI,OAAO,UAAU;AACnB,iBAAO,GAAG,IAAI,IAAI;AAAA,QACpB;AAGA,YAAI,OAAO,MAAM,OAAO,OAAO,GAAG,MAAM,eAAe,OAAO,GAAG,MAAM,iBAAiB;AACtF,0BAAgB,MAAM,EAAE,kBAAkB;AAAA,QAC5C;AAAA,MACF;AACA,eAAS,sBAAsB,QAAQ;AACrC,YAAI,GAAG,UAAU,MAAM,SAAS,KAAK,KAAK,MAAM,iBAAiB;AACjE,YAAI,OAAO;AACX,YAAI,EAAE,MAAM,QAAQ,EAAE,KAAK,QAAQ,EAAE,KAAK,MAAM;AAC9C,gBAAM;AACN,gBAAM;AAMN,qBAAW,SAAS,EAAE,IAAI,OAAO,GAAG,IAAI,GAAG,WAAW,YAAY,GAAG,GAAG,CAAC,EAAE,IAAI;AAC/E,iBAAO,SAAS,EAAE,GAAG,CAAC;AACtB,oBAAU,SAAS,EAAE,GAAG,CAAC;AACzB,cAAI,UAAU,KAAK,UAAU,GAAG;AAC9B,8BAAkB;AAAA,UACpB;AAAA,QACF,OAAO;AACL,gBAAM,OAAO,QAAQ,MAAM;AAC3B,gBAAM,OAAO,QAAQ,MAAM;AAC3B,oBAAU,WAAW,YAAY,GAAG,KAAK,GAAG;AAC5C,qBAAW,SAAS,EAAE,IAAI,OAAO,GAAG,IAAI,GAAG,QAAQ,IAAI;AAGvD,iBAAO,SAAS,EAAE,GAAG,QAAQ,IAAI;AACjC,cAAI,EAAE,KAAK,MAAM;AAEf,sBAAU,EAAE;AACZ,gBAAI,UAAU,KAAK,UAAU,GAAG;AAC9B,gCAAkB;AAAA,YACpB;AAAA,UACF,WAAW,EAAE,KAAK,MAAM;AAEtB,sBAAU,EAAE,IAAI;AAChB,gBAAI,EAAE,IAAI,KAAK,EAAE,IAAI,GAAG;AACtB,gCAAkB;AAAA,YACpB;AAAA,UACF,OAAO;AAEL,sBAAU;AAAA,UACZ;AAAA,QACF;AACA,YAAI,OAAO,KAAK,OAAO,YAAY,UAAU,KAAK,GAAG,GAAG;AACtD,0BAAgB,MAAM,EAAE,iBAAiB;AAAA,QAC3C,WAAW,mBAAmB,MAAM;AAClC,0BAAgB,MAAM,EAAE,mBAAmB;AAAA,QAC7C,OAAO;AACL,iBAAO,mBAAmB,UAAU,MAAM,SAAS,KAAK,GAAG;AAC3D,iBAAO,GAAG,IAAI,IAAI,KAAK;AACvB,iBAAO,aAAa,KAAK;AAAA,QAC3B;AAAA,MACF;AAGA,YAAM,WAAW,WAAY;AAAA,MAAC;AAG9B,YAAM,WAAW,WAAY;AAAA,MAAC;AAG9B,eAAS,0BAA0B,QAAQ;AAEzC,YAAI,OAAO,OAAO,MAAM,UAAU;AAChC,wBAAc,MAAM;AACpB;AAAA,QACF;AACA,YAAI,OAAO,OAAO,MAAM,UAAU;AAChC,4BAAkB,MAAM;AACxB;AAAA,QACF;AACA,eAAO,KAAK,CAAC;AACb,wBAAgB,MAAM,EAAE,QAAQ;AAGhC,YAAI,SAAS,KAAK,OAAO,IACvB,GACA,aACAI,SACAnB,QACA,SACA,eAAe,OAAO,QACtB,yBAAyB,GACzB,KACA;AACF,QAAAmB,UAAS,aAAa,OAAO,IAAI,OAAO,OAAO,EAAE,MAAMpB,iBAAgB,KAAK,CAAC;AAC7E,mBAAWoB,QAAO;AAClB,aAAK,IAAI,GAAG,IAAI,UAAU,KAAK;AAC7B,UAAAnB,SAAQmB,QAAO,CAAC;AAChB,yBAAe,OAAO,MAAM,sBAAsBnB,QAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;AAC1E,cAAI,aAAa;AACf,sBAAU,OAAO,OAAO,GAAG,OAAO,QAAQ,WAAW,CAAC;AACtD,gBAAI,QAAQ,SAAS,GAAG;AACtB,8BAAgB,MAAM,EAAE,YAAY,KAAK,OAAO;AAAA,YAClD;AACA,qBAAS,OAAO,MAAM,OAAO,QAAQ,WAAW,IAAI,YAAY,MAAM;AACtE,sCAA0B,YAAY;AAAA,UACxC;AAEA,cAAI,qBAAqBA,MAAK,GAAG;AAC/B,gBAAI,aAAa;AACf,8BAAgB,MAAM,EAAE,QAAQ;AAAA,YAClC,OAAO;AACL,8BAAgB,MAAM,EAAE,aAAa,KAAKA,MAAK;AAAA,YACjD;AACA,oCAAwBA,QAAO,aAAa,MAAM;AAAA,UACpD,WAAW,OAAO,WAAW,CAAC,aAAa;AACzC,4BAAgB,MAAM,EAAE,aAAa,KAAKA,MAAK;AAAA,UACjD;AAAA,QACF;AAGA,wBAAgB,MAAM,EAAE,gBAAgB,eAAe;AACvD,YAAI,OAAO,SAAS,GAAG;AACrB,0BAAgB,MAAM,EAAE,YAAY,KAAK,MAAM;AAAA,QACjD;AAGA,YAAI,OAAO,GAAG,IAAI,KAAK,MAAM,gBAAgB,MAAM,EAAE,YAAY,QAAQ,OAAO,GAAG,IAAI,IAAI,GAAG;AAC5F,0BAAgB,MAAM,EAAE,UAAU;AAAA,QACpC;AACA,wBAAgB,MAAM,EAAE,kBAAkB,OAAO,GAAG,MAAM,CAAC;AAC3D,wBAAgB,MAAM,EAAE,WAAW,OAAO;AAE1C,eAAO,GAAG,IAAI,IAAI,gBAAgB,OAAO,SAAS,OAAO,GAAG,IAAI,GAAG,OAAO,SAAS;AAGnF,cAAM,gBAAgB,MAAM,EAAE;AAC9B,YAAI,QAAQ,MAAM;AAChB,iBAAO,GAAG,IAAI,IAAI,OAAO,QAAQ,gBAAgB,KAAK,OAAO,GAAG,IAAI,CAAC;AAAA,QACvE;AACA,wBAAgB,MAAM;AACtB,sBAAc,MAAM;AAAA,MACtB;AACA,eAAS,gBAAgBR,SAAQ,MAAM4B,WAAU;AAC/C,YAAI;AACJ,YAAIA,aAAY,MAAM;AAEpB,iBAAO;AAAA,QACT;AACA,YAAI5B,QAAO,gBAAgB,MAAM;AAC/B,iBAAOA,QAAO,aAAa,MAAM4B,SAAQ;AAAA,QAC3C,WAAW5B,QAAO,QAAQ,MAAM;AAE9B,iBAAOA,QAAO,KAAK4B,SAAQ;AAC3B,cAAI,QAAQ,OAAO,IAAI;AACrB,oBAAQ;AAAA,UACV;AACA,cAAI,CAAC,QAAQ,SAAS,IAAI;AACxB,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT,OAAO;AAEL,iBAAO;AAAA,QACT;AAAA,MACF;AAGA,eAAS,yBAAyB,QAAQ;AACxC,YAAI,YACF,YACA,aACA,GACA,cACA,kBACA,oBAAoB,OACpB,aAAa,OAAO,GAAG;AACzB,YAAI,eAAe,GAAG;AACpB,0BAAgB,MAAM,EAAE,gBAAgB;AACxC,iBAAO,KAAK,oBAAI,KAAK,GAAG;AACxB;AAAA,QACF;AACA,aAAK,IAAI,GAAG,IAAI,YAAY,KAAK;AAC/B,yBAAe;AACf,6BAAmB;AACnB,uBAAa,WAAW,CAAC,GAAG,MAAM;AAClC,cAAI,OAAO,WAAW,MAAM;AAC1B,uBAAW,UAAU,OAAO;AAAA,UAC9B;AACA,qBAAW,KAAK,OAAO,GAAG,CAAC;AAC3B,oCAA0B,UAAU;AACpC,cAAI,QAAQ,UAAU,GAAG;AACvB,+BAAmB;AAAA,UACrB;AAGA,0BAAgB,gBAAgB,UAAU,EAAE;AAG5C,0BAAgB,gBAAgB,UAAU,EAAE,aAAa,SAAS;AAClE,0BAAgB,UAAU,EAAE,QAAQ;AACpC,cAAI,CAAC,mBAAmB;AACtB,gBAAI,eAAe,QAAQ,eAAe,eAAe,kBAAkB;AACzE,4BAAc;AACd,2BAAa;AACb,kBAAI,kBAAkB;AACpB,oCAAoB;AAAA,cACtB;AAAA,YACF;AAAA,UACF,OAAO;AACL,gBAAI,eAAe,aAAa;AAC9B,4BAAc;AACd,2BAAa;AAAA,YACf;AAAA,UACF;AAAA,QACF;AACA,eAAO,QAAQ,cAAc,UAAU;AAAA,MACzC;AACA,eAAS,iBAAiB,QAAQ;AAChC,YAAI,OAAO,IAAI;AACb;AAAA,QACF;AACA,YAAI,IAAI,qBAAqB,OAAO,EAAE,GACpC,YAAY,EAAE,QAAQ,SAAY,EAAE,OAAO,EAAE;AAC/C,eAAO,KAAK9B,KAAI,CAAC,EAAE,MAAM,EAAE,OAAO,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,GAAG,SAAU,KAAK;AACtG,iBAAO,OAAO,SAAS,KAAK,EAAE;AAAA,QAChC,CAAC;AACD,wBAAgB,MAAM;AAAA,MACxB;AACA,eAAS,iBAAiB,QAAQ;AAChC,YAAI,MAAM,IAAI,OAAO,cAAc,cAAc,MAAM,CAAC,CAAC;AACzD,YAAI,IAAI,UAAU;AAEhB,cAAI,IAAI,GAAG,GAAG;AACd,cAAI,WAAW;AAAA,QACjB;AACA,eAAO;AAAA,MACT;AACA,eAAS,cAAc,QAAQ;AAC7B,YAAI,QAAQ,OAAO,IACjBC,UAAS,OAAO;AAClB,eAAO,UAAU,OAAO,WAAW,UAAU,OAAO,EAAE;AACtD,YAAI,UAAU,QAAQA,YAAW,UAAa,UAAU,IAAI;AAC1D,iBAAO,cAAc;AAAA,YACnB,WAAW;AAAA,UACb,CAAC;AAAA,QACH;AACA,YAAI,OAAO,UAAU,UAAU;AAC7B,iBAAO,KAAK,QAAQ,OAAO,QAAQ,SAAS,KAAK;AAAA,QACnD;AACA,YAAI,SAAS,KAAK,GAAG;AACnB,iBAAO,IAAI,OAAO,cAAc,KAAK,CAAC;AAAA,QACxC,WAAW,OAAO,KAAK,GAAG;AACxB,iBAAO,KAAK;AAAA,QACd,WAAW,QAAQA,OAAM,GAAG;AAC1B,mCAAyB,MAAM;AAAA,QACjC,WAAWA,SAAQ;AACjB,oCAA0B,MAAM;AAAA,QAClC,OAAO;AACL,0BAAgB,MAAM;AAAA,QACxB;AACA,YAAI,CAAC,QAAQ,MAAM,GAAG;AACpB,iBAAO,KAAK;AAAA,QACd;AACA,eAAO;AAAA,MACT;AACA,eAAS,gBAAgB,QAAQ;AAC/B,YAAI,QAAQ,OAAO;AACnB,YAAIF,aAAY,KAAK,GAAG;AACtB,iBAAO,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;AAAA,QAClC,WAAW,OAAO,KAAK,GAAG;AACxB,iBAAO,KAAK,IAAI,KAAK,MAAM,QAAQ,CAAC;AAAA,QACtC,WAAW,OAAO,UAAU,UAAU;AACpC,2BAAiB,MAAM;AAAA,QACzB,WAAW,QAAQ,KAAK,GAAG;AACzB,iBAAO,KAAKC,KAAI,MAAM,MAAM,CAAC,GAAG,SAAU,KAAK;AAC7C,mBAAO,SAAS,KAAK,EAAE;AAAA,UACzB,CAAC;AACD,0BAAgB,MAAM;AAAA,QACxB,WAAWF,UAAS,KAAK,GAAG;AAC1B,2BAAiB,MAAM;AAAA,QACzB,WAAW,SAAS,KAAK,GAAG;AAE1B,iBAAO,KAAK,IAAI,KAAK,KAAK;AAAA,QAC5B,OAAO;AACL,gBAAM,wBAAwB,MAAM;AAAA,QACtC;AAAA,MACF;AACA,eAAS,iBAAiB,OAAOG,SAAQC,SAAQ,QAAQ,OAAO;AAC9D,YAAI,IAAI,CAAC;AACT,YAAID,YAAW,QAAQA,YAAW,OAAO;AACvC,mBAASA;AACT,UAAAA,UAAS;AAAA,QACX;AACA,YAAIC,YAAW,QAAQA,YAAW,OAAO;AACvC,mBAASA;AACT,UAAAA,UAAS;AAAA,QACX;AACA,YAAIJ,UAAS,KAAK,KAAK,cAAc,KAAK,KAAK,QAAQ,KAAK,KAAK,MAAM,WAAW,GAAG;AACnF,kBAAQ;AAAA,QACV;AAGA,UAAE,mBAAmB;AACrB,UAAE,UAAU,EAAE,SAAS;AACvB,UAAE,KAAKI;AACP,UAAE,KAAK;AACP,UAAE,KAAKD;AACP,UAAE,UAAU;AACZ,eAAO,iBAAiB,CAAC;AAAA,MAC3B;AACA,eAAS,YAAY,OAAOA,SAAQC,SAAQ,QAAQ;AAClD,eAAO,iBAAiB,OAAOD,SAAQC,SAAQ,QAAQ,KAAK;AAAA,MAC9D;AACA,UAAI,eAAe,UAAU,sGAAsG,WAAY;AAC3I,YAAI,QAAQ,YAAY,MAAM,MAAM,SAAS;AAC7C,YAAI,KAAK,QAAQ,KAAK,MAAM,QAAQ,GAAG;AACrC,iBAAO,QAAQ,OAAO,OAAO;AAAA,QAC/B,OAAO;AACL,iBAAO,cAAc;AAAA,QACvB;AAAA,MACF,CAAC,GACD,eAAe,UAAU,sGAAsG,WAAY;AACzI,YAAI,QAAQ,YAAY,MAAM,MAAM,SAAS;AAC7C,YAAI,KAAK,QAAQ,KAAK,MAAM,QAAQ,GAAG;AACrC,iBAAO,QAAQ,OAAO,OAAO;AAAA,QAC/B,OAAO;AACL,iBAAO,cAAc;AAAA,QACvB;AAAA,MACF,CAAC;AAOH,eAAS,OAAO,IAAI,SAAS;AAC3B,YAAI,KAAK;AACT,YAAI,QAAQ,WAAW,KAAK,QAAQ,QAAQ,CAAC,CAAC,GAAG;AAC/C,oBAAU,QAAQ,CAAC;AAAA,QACrB;AACA,YAAI,CAAC,QAAQ,QAAQ;AACnB,iBAAO,YAAY;AAAA,QACrB;AACA,cAAM,QAAQ,CAAC;AACf,aAAK,IAAI,GAAG,IAAI,QAAQ,QAAQ,EAAE,GAAG;AACnC,cAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,KAAK,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG;AAChD,kBAAM,QAAQ,CAAC;AAAA,UACjB;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAGA,eAAS,MAAM;AACb,YAAI,OAAO,CAAC,EAAE,MAAM,KAAK,WAAW,CAAC;AACrC,eAAO,OAAO,YAAY,IAAI;AAAA,MAChC;AACA,eAAS,MAAM;AACb,YAAI,OAAO,CAAC,EAAE,MAAM,KAAK,WAAW,CAAC;AACrC,eAAO,OAAO,WAAW,IAAI;AAAA,MAC/B;AACA,UAAI,MAAM,WAAY;AACpB,eAAO,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,oBAAI,KAAK;AAAA,MAC3C;AACA,UAAI,WAAW,CAAC,QAAQ,WAAW,SAAS,QAAQ,OAAO,QAAQ,UAAU,UAAU,aAAa;AACpG,eAAS,gBAAgB,GAAG;AAC1B,YAAI,KACF,iBAAiB,OACjB,GACA,WAAW,SAAS;AACtB,aAAK,OAAO,GAAG;AACb,cAAI,WAAW,GAAG,GAAG,KAAK,EAAE,QAAQ,KAAK,UAAU,GAAG,MAAM,OAAO,EAAE,GAAG,KAAK,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK;AACrG,mBAAO;AAAA,UACT;AAAA,QACF;AACA,aAAK,IAAI,GAAG,IAAI,UAAU,EAAE,GAAG;AAC7B,cAAI,EAAE,SAAS,CAAC,CAAC,GAAG;AAClB,gBAAI,gBAAgB;AAClB,qBAAO;AAAA,YACT;AACA,gBAAI,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG;AACxD,+BAAiB;AAAA,YACnB;AAAA,UACF;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,eAAS,YAAY;AACnB,eAAO,KAAK;AAAA,MACd;AACA,eAAS,kBAAkB;AACzB,eAAO,eAAe,GAAG;AAAA,MAC3B;AACA,eAAS,SAAS,UAAU;AAC1B,YAAI,kBAAkB,qBAAqB,QAAQ,GACjD6B,SAAQ,gBAAgB,QAAQ,GAChC,WAAW,gBAAgB,WAAW,GACtCC,UAAS,gBAAgB,SAAS,GAClCC,SAAQ,gBAAgB,QAAQ,gBAAgB,WAAW,GAC3DC,QAAO,gBAAgB,OAAO,GAC9BP,SAAQ,gBAAgB,QAAQ,GAChCC,WAAU,gBAAgB,UAAU,GACpCO,WAAU,gBAAgB,UAAU,GACpCC,gBAAe,gBAAgB,eAAe;AAChD,aAAK,WAAW,gBAAgB,eAAe;AAG/C,aAAK,gBAAgB,CAACA,gBAAeD,WAAU;AAAA,QAE/CP,WAAU;AAAA,QAEVD,SAAQ,MAAO,KAAK;AAGpB,aAAK,QAAQ,CAACO,QAAOD,SAAQ;AAI7B,aAAK,UAAU,CAACD,UAAS,WAAW,IAAID,SAAQ;AAChD,aAAK,QAAQ,CAAC;AACd,aAAK,UAAU,UAAU;AACzB,aAAK,QAAQ;AAAA,MACf;AACA,eAAS,WAAW,KAAK;AACvB,eAAO,eAAe;AAAA,MACxB;AACA,eAAS,SAAS,QAAQ;AACxB,YAAI,SAAS,GAAG;AACd,iBAAO,KAAK,MAAM,KAAK,MAAM,IAAI;AAAA,QACnC,OAAO;AACL,iBAAO,KAAK,MAAM,MAAM;AAAA,QAC1B;AAAA,MACF;AAGA,eAAS,cAAc,QAAQ,QAAQ,aAAa;AAClD,YAAI,MAAM,KAAK,IAAI,OAAO,QAAQ,OAAO,MAAM,GAC7C,aAAa,KAAK,IAAI,OAAO,SAAS,OAAO,MAAM,GACnD,QAAQ,GACR;AACF,aAAK,IAAI,GAAG,IAAI,KAAK,KAAK;AACxB,cAAI,eAAe,OAAO,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,eAAe,MAAM,OAAO,CAAC,CAAC,MAAM,MAAM,OAAO,CAAC,CAAC,GAAG;AACnG;AAAA,UACF;AAAA,QACF;AACA,eAAO,QAAQ;AAAA,MACjB;AAIA,eAAS,OAAOrB,QAAO,WAAW;AAChC,uBAAeA,QAAO,GAAG,GAAG,WAAY;AACtC,cAAI2B,UAAS,KAAK,UAAU,GAC1B7B,QAAO;AACT,cAAI6B,UAAS,GAAG;AACd,YAAAA,UAAS,CAACA;AACV,YAAA7B,QAAO;AAAA,UACT;AACA,iBAAOA,QAAO,SAAS,CAAC,EAAE6B,UAAS,KAAK,CAAC,IAAI,YAAY,SAAS,CAAC,CAACA,UAAS,IAAI,CAAC;AAAA,QACpF,CAAC;AAAA,MACH;AACA,aAAO,KAAK,GAAG;AACf,aAAO,MAAM,EAAE;AAIf,oBAAc,KAAK,gBAAgB;AACnC,oBAAc,MAAM,gBAAgB;AACpC,oBAAc,CAAC,KAAK,IAAI,GAAG,SAAU,OAAO,OAAO,QAAQ;AACzD,eAAO,UAAU;AACjB,eAAO,OAAOC,kBAAiB,kBAAkB,KAAK;AAAA,MACxD,CAAC;AAOD,UAAI,cAAc;AAClB,eAASA,kBAAiB,SAAS,QAAQ;AACzC,YAAI,WAAW,UAAU,IAAI,MAAM,OAAO,GACxC,OACA,OACAV;AACF,YAAI,YAAY,MAAM;AACpB,iBAAO;AAAA,QACT;AACA,gBAAQ,QAAQ,QAAQ,SAAS,CAAC,KAAK,CAAC;AACxC,iBAAS,QAAQ,IAAI,MAAM,WAAW,KAAK,CAAC,KAAK,GAAG,CAAC;AACrD,QAAAA,WAAU,EAAE,MAAM,CAAC,IAAI,MAAM,MAAM,MAAM,CAAC,CAAC;AAC3C,eAAOA,aAAY,IAAI,IAAI,MAAM,CAAC,MAAM,MAAMA,WAAU,CAACA;AAAA,MAC3D;AAGA,eAAS,gBAAgB,OAAO,OAAO;AACrC,YAAI,KAAKf;AACT,YAAI,MAAM,QAAQ;AAChB,gBAAM,MAAM,MAAM;AAClB,UAAAA,SAAQ,SAAS,KAAK,KAAK,OAAO,KAAK,IAAI,MAAM,QAAQ,IAAI,YAAY,KAAK,EAAE,QAAQ,KAAK,IAAI,QAAQ;AAEzG,cAAI,GAAG,QAAQ,IAAI,GAAG,QAAQ,IAAIA,KAAI;AACtC,gBAAM,aAAa,KAAK,KAAK;AAC7B,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO,YAAY,KAAK,EAAE,MAAM;AAAA,QAClC;AAAA,MACF;AACA,eAAS,cAAc,GAAG;AAGxB,eAAO,CAAC,KAAK,MAAM,EAAE,GAAG,kBAAkB,CAAC;AAAA,MAC7C;AAMA,YAAM,eAAe,WAAY;AAAA,MAAC;AAclC,eAAS,aAAa,OAAO,eAAe,aAAa;AACvD,YAAIwB,UAAS,KAAK,WAAW,GAC3B;AACF,YAAI,CAAC,KAAK,QAAQ,GAAG;AACnB,iBAAO,SAAS,OAAO,OAAO;AAAA,QAChC;AACA,YAAI,SAAS,MAAM;AACjB,cAAI,OAAO,UAAU,UAAU;AAC7B,oBAAQC,kBAAiB,kBAAkB,KAAK;AAChD,gBAAI,UAAU,MAAM;AAClB,qBAAO;AAAA,YACT;AAAA,UACF,WAAW,KAAK,IAAI,KAAK,IAAI,MAAM,CAAC,aAAa;AAC/C,oBAAQ,QAAQ;AAAA,UAClB;AACA,cAAI,CAAC,KAAK,UAAU,eAAe;AACjC,0BAAc,cAAc,IAAI;AAAA,UAClC;AACA,eAAK,UAAU;AACf,eAAK,SAAS;AACd,cAAI,eAAe,MAAM;AACvB,iBAAK,IAAI,aAAa,GAAG;AAAA,UAC3B;AACA,cAAID,YAAW,OAAO;AACpB,gBAAI,CAAC,iBAAiB,KAAK,mBAAmB;AAC5C,0BAAY,MAAM,eAAe,QAAQA,SAAQ,GAAG,GAAG,GAAG,KAAK;AAAA,YACjE,WAAW,CAAC,KAAK,mBAAmB;AAClC,mBAAK,oBAAoB;AACzB,oBAAM,aAAa,MAAM,IAAI;AAC7B,mBAAK,oBAAoB;AAAA,YAC3B;AAAA,UACF;AACA,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO,KAAK,SAASA,UAAS,cAAc,IAAI;AAAA,QAClD;AAAA,MACF;AACA,eAAS,WAAW,OAAO,eAAe;AACxC,YAAI,SAAS,MAAM;AACjB,cAAI,OAAO,UAAU,UAAU;AAC7B,oBAAQ,CAAC;AAAA,UACX;AACA,eAAK,UAAU,OAAO,aAAa;AACnC,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO,CAAC,KAAK,UAAU;AAAA,QACzB;AAAA,MACF;AACA,eAAS,eAAe,eAAe;AACrC,eAAO,KAAK,UAAU,GAAG,aAAa;AAAA,MACxC;AACA,eAAS,iBAAiB,eAAe;AACvC,YAAI,KAAK,QAAQ;AACf,eAAK,UAAU,GAAG,aAAa;AAC/B,eAAK,SAAS;AACd,cAAI,eAAe;AACjB,iBAAK,SAAS,cAAc,IAAI,GAAG,GAAG;AAAA,UACxC;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,eAAS,0BAA0B;AACjC,YAAI,KAAK,QAAQ,MAAM;AACrB,eAAK,UAAU,KAAK,MAAM,OAAO,IAAI;AAAA,QACvC,WAAW,OAAO,KAAK,OAAO,UAAU;AACtC,cAAI,QAAQC,kBAAiBhB,cAAa,KAAK,EAAE;AACjD,cAAI,SAAS,MAAM;AACjB,iBAAK,UAAU,KAAK;AAAA,UACtB,OAAO;AACL,iBAAK,UAAU,GAAG,IAAI;AAAA,UACxB;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,eAAS,qBAAqB,OAAO;AACnC,YAAI,CAAC,KAAK,QAAQ,GAAG;AACnB,iBAAO;AAAA,QACT;AACA,gBAAQ,QAAQ,YAAY,KAAK,EAAE,UAAU,IAAI;AACjD,gBAAQ,KAAK,UAAU,IAAI,SAAS,OAAO;AAAA,MAC7C;AACA,eAAS,uBAAuB;AAC9B,eAAO,KAAK,UAAU,IAAI,KAAK,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,KAAK,KAAK,UAAU,IAAI,KAAK,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU;AAAA,MACpH;AACA,eAAS,8BAA8B;AACrC,YAAI,CAACvB,aAAY,KAAK,aAAa,GAAG;AACpC,iBAAO,KAAK;AAAA,QACd;AACA,YAAI,IAAI,CAAC,GACP;AACF,mBAAW,GAAG,IAAI;AAClB,YAAI,cAAc,CAAC;AACnB,YAAI,EAAE,IAAI;AACR,kBAAQ,EAAE,SAAS,UAAU,EAAE,EAAE,IAAI,YAAY,EAAE,EAAE;AACrD,eAAK,gBAAgB,KAAK,QAAQ,KAAK,cAAc,EAAE,IAAI,MAAM,QAAQ,CAAC,IAAI;AAAA,QAChF,OAAO;AACL,eAAK,gBAAgB;AAAA,QACvB;AACA,eAAO,KAAK;AAAA,MACd;AACA,eAAS,UAAU;AACjB,eAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,SAAS;AAAA,MACzC;AACA,eAAS,cAAc;AACrB,eAAO,KAAK,QAAQ,IAAI,KAAK,SAAS;AAAA,MACxC;AACA,eAAS,QAAQ;AACf,eAAO,KAAK,QAAQ,IAAI,KAAK,UAAU,KAAK,YAAY,IAAI;AAAA,MAC9D;AAGA,UAAI,cAAc,yDAIhB,WAAW;AACb,eAAS,eAAe,OAAO,KAAK;AAClC,YAAI,WAAW,OAEb,QAAQ,MACRS,OACA,KACA;AACF,YAAI,WAAW,KAAK,GAAG;AACrB,qBAAW;AAAA,YACT,IAAI,MAAM;AAAA,YACV,GAAG,MAAM;AAAA,YACT,GAAG,MAAM;AAAA,UACX;AAAA,QACF,WAAW,SAAS,KAAK,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG;AAC5C,qBAAW,CAAC;AACZ,cAAI,KAAK;AACP,qBAAS,GAAG,IAAI,CAAC;AAAA,UACnB,OAAO;AACL,qBAAS,eAAe,CAAC;AAAA,UAC3B;AAAA,QACF,WAAW,QAAQ,YAAY,KAAK,KAAK,GAAG;AAC1C,UAAAA,QAAO,MAAM,CAAC,MAAM,MAAM,KAAK;AAC/B,qBAAW;AAAA,YACT,GAAG;AAAA,YACH,GAAG,MAAM,MAAMiB,KAAI,CAAC,IAAIjB;AAAA,YACxB,GAAG,MAAM,MAAM,IAAI,CAAC,IAAIA;AAAA,YACxB,GAAG,MAAM,MAAM,MAAM,CAAC,IAAIA;AAAA,YAC1B,GAAG,MAAM,MAAM,MAAM,CAAC,IAAIA;AAAA,YAC1B,IAAI,MAAM,SAAS,MAAM,WAAW,IAAI,GAAI,CAAC,IAAIA;AAAA;AAAA,UACnD;AAAA,QACF,WAAW,QAAQ,SAAS,KAAK,KAAK,GAAG;AACvC,UAAAA,QAAO,MAAM,CAAC,MAAM,MAAM,KAAK;AAC/B,qBAAW;AAAA,YACT,GAAG,SAAS,MAAM,CAAC,GAAGA,KAAI;AAAA,YAC1B,GAAG,SAAS,MAAM,CAAC,GAAGA,KAAI;AAAA,YAC1B,GAAG,SAAS,MAAM,CAAC,GAAGA,KAAI;AAAA,YAC1B,GAAG,SAAS,MAAM,CAAC,GAAGA,KAAI;AAAA,YAC1B,GAAG,SAAS,MAAM,CAAC,GAAGA,KAAI;AAAA,YAC1B,GAAG,SAAS,MAAM,CAAC,GAAGA,KAAI;AAAA,YAC1B,GAAG,SAAS,MAAM,CAAC,GAAGA,KAAI;AAAA,UAC5B;AAAA,QACF,WAAW,YAAY,MAAM;AAE3B,qBAAW,CAAC;AAAA,QACd,WAAW,OAAO,aAAa,aAAa,UAAU,YAAY,QAAQ,WAAW;AACnF,oBAAU,kBAAkB,YAAY,SAAS,IAAI,GAAG,YAAY,SAAS,EAAE,CAAC;AAChF,qBAAW,CAAC;AACZ,mBAAS,KAAK,QAAQ;AACtB,mBAAS,IAAI,QAAQ;AAAA,QACvB;AACA,cAAM,IAAI,SAAS,QAAQ;AAC3B,YAAI,WAAW,KAAK,KAAK,WAAW,OAAO,SAAS,GAAG;AACrD,cAAI,UAAU,MAAM;AAAA,QACtB;AACA,YAAI,WAAW,KAAK,KAAK,WAAW,OAAO,UAAU,GAAG;AACtD,cAAI,WAAW,MAAM;AAAA,QACvB;AACA,eAAO;AAAA,MACT;AACA,qBAAe,KAAK,SAAS;AAC7B,qBAAe,UAAU;AACzB,eAAS,SAAS,KAAKA,OAAM;AAI3B,YAAI,MAAM,OAAO,WAAW,IAAI,QAAQ,KAAK,GAAG,CAAC;AAEjD,gBAAQ,MAAM,GAAG,IAAI,IAAI,OAAOA;AAAA,MAClC;AACA,eAAS,0BAA0B,MAAM,OAAO;AAC9C,YAAI,MAAM,CAAC;AACX,YAAI,SAAS,MAAM,MAAM,IAAI,KAAK,MAAM,KAAK,MAAM,KAAK,IAAI,KAAK,KAAK,KAAK;AAC3E,YAAI,KAAK,MAAM,EAAE,IAAI,IAAI,QAAQ,GAAG,EAAE,QAAQ,KAAK,GAAG;AACpD,YAAE,IAAI;AAAA,QACR;AACA,YAAI,eAAe,CAAC,QAAQ,CAAC,KAAK,MAAM,EAAE,IAAI,IAAI,QAAQ,GAAG;AAC7D,eAAO;AAAA,MACT;AACA,eAAS,kBAAkB,MAAM,OAAO;AACtC,YAAI;AACJ,YAAI,EAAE,KAAK,QAAQ,KAAK,MAAM,QAAQ,IAAI;AACxC,iBAAO;AAAA,YACL,cAAc;AAAA,YACd,QAAQ;AAAA,UACV;AAAA,QACF;AACA,gBAAQ,gBAAgB,OAAO,IAAI;AACnC,YAAI,KAAK,SAAS,KAAK,GAAG;AACxB,gBAAM,0BAA0B,MAAM,KAAK;AAAA,QAC7C,OAAO;AACL,gBAAM,0BAA0B,OAAO,IAAI;AAC3C,cAAI,eAAe,CAAC,IAAI;AACxB,cAAI,SAAS,CAAC,IAAI;AAAA,QACpB;AACA,eAAO;AAAA,MACT;AAGA,eAAS,YAAY,WAAW,MAAM;AACpC,eAAO,SAAU,KAAK,QAAQ;AAC5B,cAAI,KAAK;AAET,cAAI,WAAW,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG;AACtC,4BAAgB,MAAM,cAAc,OAAO,yDAAyD,OAAO,gGAAqG;AAChN,kBAAM;AACN,kBAAM;AACN,qBAAS;AAAA,UACX;AACA,gBAAM,eAAe,KAAK,MAAM;AAChC,sBAAY,MAAM,KAAK,SAAS;AAChC,iBAAO;AAAA,QACT;AAAA,MACF;AACA,eAAS,YAAY,KAAK,UAAU,UAAU,cAAc;AAC1D,YAAI4B,gBAAe,SAAS,eAC1BF,QAAO,SAAS,SAAS,KAAK,GAC9BF,UAAS,SAAS,SAAS,OAAO;AACpC,YAAI,CAAC,IAAI,QAAQ,GAAG;AAElB;AAAA,QACF;AACA,uBAAe,gBAAgB,OAAO,OAAO;AAC7C,YAAIA,SAAQ;AACV,mBAAS,KAAK,IAAI,KAAK,OAAO,IAAIA,UAAS,QAAQ;AAAA,QACrD;AACA,YAAIE,OAAM;AACR,gBAAM,KAAK,QAAQ,IAAI,KAAK,MAAM,IAAIA,QAAO,QAAQ;AAAA,QACvD;AACA,YAAIE,eAAc;AAChB,cAAI,GAAG,QAAQ,IAAI,GAAG,QAAQ,IAAIA,gBAAe,QAAQ;AAAA,QAC3D;AACA,YAAI,cAAc;AAChB,gBAAM,aAAa,KAAKF,SAAQF,OAAM;AAAA,QACxC;AAAA,MACF;AACA,UAAI,MAAM,YAAY,GAAG,KAAK,GAC5B,WAAW,YAAY,IAAI,UAAU;AACvC,eAAS,SAAS,OAAO;AACvB,eAAO,OAAO,UAAU,YAAY,iBAAiB;AAAA,MACvD;AAGA,eAAS,cAAc,OAAO;AAC5B,eAAO,SAAS,KAAK,KAAK,OAAO,KAAK,KAAK,SAAS,KAAK,KAAK,SAAS,KAAK,KAAK,sBAAsB,KAAK,KAAK,oBAAoB,KAAK,KAAK,UAAU,QAAQ,UAAU;AAAA,MAC7K;AACA,eAAS,oBAAoB,OAAO;AAClC,YAAI,aAAalC,UAAS,KAAK,KAAK,CAAC,cAAc,KAAK,GACtD,eAAe,OACf,aAAa,CAAC,SAAS,QAAQ,KAAK,UAAU,SAAS,KAAK,QAAQ,OAAO,KAAK,SAAS,QAAQ,KAAK,SAAS,QAAQ,KAAK,WAAW,UAAU,KAAK,WAAW,UAAU,KAAK,gBAAgB,eAAe,IAAI,GACnN,GACA,UACA,cAAc,WAAW;AAC3B,aAAK,IAAI,GAAG,IAAI,aAAa,KAAK,GAAG;AACnC,qBAAW,WAAW,CAAC;AACvB,yBAAe,gBAAgB,WAAW,OAAO,QAAQ;AAAA,QAC3D;AACA,eAAO,cAAc;AAAA,MACvB;AACA,eAAS,sBAAsB,OAAO;AACpC,YAAI,YAAY,QAAQ,KAAK,GAC3B,eAAe;AACjB,YAAI,WAAW;AACb,yBAAe,MAAM,OAAO,SAAU,MAAM;AAC1C,mBAAO,CAAC,SAAS,IAAI,KAAK,SAAS,KAAK;AAAA,UAC1C,CAAC,EAAE,WAAW;AAAA,QAChB;AACA,eAAO,aAAa;AAAA,MACtB;AACA,eAAS,eAAe,OAAO;AAC7B,YAAI,aAAaA,UAAS,KAAK,KAAK,CAAC,cAAc,KAAK,GACtD,eAAe,OACf,aAAa,CAAC,WAAW,WAAW,WAAW,YAAY,YAAY,UAAU,GACjF,GACA;AACF,aAAK,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK,GAAG;AACzC,qBAAW,WAAW,CAAC;AACvB,yBAAe,gBAAgB,WAAW,OAAO,QAAQ;AAAA,QAC3D;AACA,eAAO,cAAc;AAAA,MACvB;AACA,eAAS,kBAAkB,UAAUS,MAAK;AACxC,YAAIM,QAAO,SAAS,KAAKN,MAAK,QAAQ,IAAI;AAC1C,eAAOM,QAAO,KAAK,aAAaA,QAAO,KAAK,aAAaA,QAAO,IAAI,YAAYA,QAAO,IAAI,YAAYA,QAAO,IAAI,YAAYA,QAAO,IAAI,aAAa;AAAA,MACxJ;AACA,eAAS,WAAW,MAAM,SAAS;AAEjC,YAAI,UAAU,WAAW,GAAG;AAC1B,cAAI,CAAC,UAAU,CAAC,GAAG;AACjB,mBAAO;AACP,sBAAU;AAAA,UACZ,WAAW,cAAc,UAAU,CAAC,CAAC,GAAG;AACtC,mBAAO,UAAU,CAAC;AAClB,sBAAU;AAAA,UACZ,WAAW,eAAe,UAAU,CAAC,CAAC,GAAG;AACvC,sBAAU,UAAU,CAAC;AACrB,mBAAO;AAAA,UACT;AAAA,QACF;AAGA,YAAIN,OAAM,QAAQ,YAAY,GAC5B,MAAM,gBAAgBA,MAAK,IAAI,EAAE,QAAQ,KAAK,GAC9CN,UAAS,MAAM,eAAe,MAAM,GAAG,KAAK,YAC5C,SAAS,YAAYK,YAAW,QAAQL,OAAM,CAAC,IAAI,QAAQA,OAAM,EAAE,KAAK,MAAMM,IAAG,IAAI,QAAQN,OAAM;AACrG,eAAO,KAAK,OAAO,UAAU,KAAK,WAAW,EAAE,SAASA,SAAQ,MAAM,YAAYM,IAAG,CAAC,CAAC;AAAA,MACzF;AACA,eAAS,QAAQ;AACf,eAAO,IAAI,OAAO,IAAI;AAAA,MACxB;AACA,eAAS,QAAQ,OAAO,OAAO;AAC7B,YAAI,aAAa,SAAS,KAAK,IAAI,QAAQ,YAAY,KAAK;AAC5D,YAAI,EAAE,KAAK,QAAQ,KAAK,WAAW,QAAQ,IAAI;AAC7C,iBAAO;AAAA,QACT;AACA,gBAAQ,eAAe,KAAK,KAAK;AACjC,YAAI,UAAU,eAAe;AAC3B,iBAAO,KAAK,QAAQ,IAAI,WAAW,QAAQ;AAAA,QAC7C,OAAO;AACL,iBAAO,WAAW,QAAQ,IAAI,KAAK,MAAM,EAAE,QAAQ,KAAK,EAAE,QAAQ;AAAA,QACpE;AAAA,MACF;AACA,eAAS,SAAS,OAAO,OAAO;AAC9B,YAAI,aAAa,SAAS,KAAK,IAAI,QAAQ,YAAY,KAAK;AAC5D,YAAI,EAAE,KAAK,QAAQ,KAAK,WAAW,QAAQ,IAAI;AAC7C,iBAAO;AAAA,QACT;AACA,gBAAQ,eAAe,KAAK,KAAK;AACjC,YAAI,UAAU,eAAe;AAC3B,iBAAO,KAAK,QAAQ,IAAI,WAAW,QAAQ;AAAA,QAC7C,OAAO;AACL,iBAAO,KAAK,MAAM,EAAE,MAAM,KAAK,EAAE,QAAQ,IAAI,WAAW,QAAQ;AAAA,QAClE;AAAA,MACF;AACA,eAAS,UAAUF,OAAMD,KAAI,OAAO,aAAa;AAC/C,YAAI,YAAY,SAASC,KAAI,IAAIA,QAAO,YAAYA,KAAI,GACtD,UAAU,SAASD,GAAE,IAAIA,MAAK,YAAYA,GAAE;AAC9C,YAAI,EAAE,KAAK,QAAQ,KAAK,UAAU,QAAQ,KAAK,QAAQ,QAAQ,IAAI;AACjE,iBAAO;AAAA,QACT;AACA,sBAAc,eAAe;AAC7B,gBAAQ,YAAY,CAAC,MAAM,MAAM,KAAK,QAAQ,WAAW,KAAK,IAAI,CAAC,KAAK,SAAS,WAAW,KAAK,OAAO,YAAY,CAAC,MAAM,MAAM,KAAK,SAAS,SAAS,KAAK,IAAI,CAAC,KAAK,QAAQ,SAAS,KAAK;AAAA,MAC/L;AACA,eAAS,OAAO,OAAO,OAAO;AAC5B,YAAI,aAAa,SAAS,KAAK,IAAI,QAAQ,YAAY,KAAK,GAC1D;AACF,YAAI,EAAE,KAAK,QAAQ,KAAK,WAAW,QAAQ,IAAI;AAC7C,iBAAO;AAAA,QACT;AACA,gBAAQ,eAAe,KAAK,KAAK;AACjC,YAAI,UAAU,eAAe;AAC3B,iBAAO,KAAK,QAAQ,MAAM,WAAW,QAAQ;AAAA,QAC/C,OAAO;AACL,oBAAU,WAAW,QAAQ;AAC7B,iBAAO,KAAK,MAAM,EAAE,QAAQ,KAAK,EAAE,QAAQ,KAAK,WAAW,WAAW,KAAK,MAAM,EAAE,MAAM,KAAK,EAAE,QAAQ;AAAA,QAC1G;AAAA,MACF;AACA,eAAS,cAAc,OAAO,OAAO;AACnC,eAAO,KAAK,OAAO,OAAO,KAAK,KAAK,KAAK,QAAQ,OAAO,KAAK;AAAA,MAC/D;AACA,eAAS,eAAe,OAAO,OAAO;AACpC,eAAO,KAAK,OAAO,OAAO,KAAK,KAAK,KAAK,SAAS,OAAO,KAAK;AAAA,MAChE;AACA,eAAS,KAAK,OAAO,OAAO,SAAS;AACnC,YAAI,MAAM,WAAW;AACrB,YAAI,CAAC,KAAK,QAAQ,GAAG;AACnB,iBAAO;AAAA,QACT;AACA,eAAO,gBAAgB,OAAO,IAAI;AAClC,YAAI,CAAC,KAAK,QAAQ,GAAG;AACnB,iBAAO;AAAA,QACT;AACA,qBAAa,KAAK,UAAU,IAAI,KAAK,UAAU,KAAK;AACpD,gBAAQ,eAAe,KAAK;AAC5B,gBAAQ,OAAO;AAAA,UACb,KAAK;AACH,qBAASmC,WAAU,MAAM,IAAI,IAAI;AACjC;AAAA,UACF,KAAK;AACH,qBAASA,WAAU,MAAM,IAAI;AAC7B;AAAA,UACF,KAAK;AACH,qBAASA,WAAU,MAAM,IAAI,IAAI;AACjC;AAAA,UACF,KAAK;AACH,sBAAU,OAAO,QAAQ;AACzB;AAAA,UAEF,KAAK;AACH,sBAAU,OAAO,QAAQ;AACzB;AAAA,UAEF,KAAK;AACH,sBAAU,OAAO,QAAQ;AACzB;AAAA,UAEF,KAAK;AACH,sBAAU,OAAO,OAAO,aAAa;AACrC;AAAA,UAEF,KAAK;AACH,sBAAU,OAAO,OAAO,aAAa;AACrC;AAAA,UAEF;AACE,qBAAS,OAAO;AAAA,QACpB;AACA,eAAO,UAAU,SAASxB,UAAS,MAAM;AAAA,MAC3C;AACA,eAASwB,WAAU,GAAG,GAAG;AACvB,YAAI,EAAE,KAAK,IAAI,EAAE,KAAK,GAAG;AAGvB,iBAAO,CAACA,WAAU,GAAG,CAAC;AAAA,QACxB;AAEA,YAAI,kBAAkB,EAAE,KAAK,IAAI,EAAE,KAAK,KAAK,MAAM,EAAE,MAAM,IAAI,EAAE,MAAM,IAErE,SAAS,EAAE,MAAM,EAAE,IAAI,gBAAgB,QAAQ,GAC/C,SACA;AACF,YAAI,IAAI,SAAS,GAAG;AAClB,oBAAU,EAAE,MAAM,EAAE,IAAI,iBAAiB,GAAG,QAAQ;AAEpD,oBAAU,IAAI,WAAW,SAAS;AAAA,QACpC,OAAO;AACL,oBAAU,EAAE,MAAM,EAAE,IAAI,iBAAiB,GAAG,QAAQ;AAEpD,oBAAU,IAAI,WAAW,UAAU;AAAA,QACrC;AAGA,eAAO,EAAE,iBAAiB,WAAW;AAAA,MACvC;AACA,YAAM,gBAAgB;AACtB,YAAM,mBAAmB;AACzB,eAAS,WAAW;AAClB,eAAO,KAAK,MAAM,EAAE,OAAO,IAAI,EAAE,OAAO,kCAAkC;AAAA,MAC5E;AACA,eAAS,YAAY,YAAY;AAC/B,YAAI,CAAC,KAAK,QAAQ,GAAG;AACnB,iBAAO;AAAA,QACT;AACA,YAAI,MAAM,eAAe,MACvB,IAAI,MAAM,KAAK,MAAM,EAAE,IAAI,IAAI;AACjC,YAAI,EAAE,KAAK,IAAI,KAAK,EAAE,KAAK,IAAI,MAAM;AACnC,iBAAO,aAAa,GAAG,MAAM,mCAAmC,8BAA8B;AAAA,QAChG;AACA,YAAIjC,YAAW,KAAK,UAAU,WAAW,GAAG;AAE1C,cAAI,KAAK;AACP,mBAAO,KAAK,OAAO,EAAE,YAAY;AAAA,UACnC,OAAO;AACL,mBAAO,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,UAAU,IAAI,KAAK,GAAI,EAAE,YAAY,EAAE,QAAQ,KAAK,aAAa,GAAG,GAAG,CAAC;AAAA,UAChH;AAAA,QACF;AACA,eAAO,aAAa,GAAG,MAAM,iCAAiC,4BAA4B;AAAA,MAC5F;AAQA,eAAS,UAAU;AACjB,YAAI,CAAC,KAAK,QAAQ,GAAG;AACnB,iBAAO,uBAAuB,KAAK,KAAK;AAAA,QAC1C;AACA,YAAI,OAAO,UACT,OAAO,IACPkC,SACA,MACA,UACA;AACF,YAAI,CAAC,KAAK,QAAQ,GAAG;AACnB,iBAAO,KAAK,UAAU,MAAM,IAAI,eAAe;AAC/C,iBAAO;AAAA,QACT;AACA,QAAAA,UAAS,MAAM,OAAO;AACtB,eAAO,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,OAAO,SAAS;AAC1D,mBAAW;AACX,iBAAS,OAAO;AAChB,eAAO,KAAK,OAAOA,UAAS,OAAO,WAAW,MAAM;AAAA,MACtD;AACA,eAAS,OAAO,aAAa;AAC3B,YAAI,CAAC,aAAa;AAChB,wBAAc,KAAK,MAAM,IAAI,MAAM,mBAAmB,MAAM;AAAA,QAC9D;AACA,YAAI,SAAS,aAAa,MAAM,WAAW;AAC3C,eAAO,KAAK,WAAW,EAAE,WAAW,MAAM;AAAA,MAC5C;AACA,eAAS,KAAK,MAAM,eAAe;AACjC,YAAI,KAAK,QAAQ,MAAM,SAAS,IAAI,KAAK,KAAK,QAAQ,KAAK,YAAY,IAAI,EAAE,QAAQ,IAAI;AACvF,iBAAO,eAAe;AAAA,YACpB,IAAI;AAAA,YACJ,MAAM;AAAA,UACR,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,EAAE,SAAS,CAAC,aAAa;AAAA,QAClD,OAAO;AACL,iBAAO,KAAK,WAAW,EAAE,YAAY;AAAA,QACvC;AAAA,MACF;AACA,eAAS,QAAQ,eAAe;AAC9B,eAAO,KAAK,KAAK,YAAY,GAAG,aAAa;AAAA,MAC/C;AACA,eAAS,GAAG,MAAM,eAAe;AAC/B,YAAI,KAAK,QAAQ,MAAM,SAAS,IAAI,KAAK,KAAK,QAAQ,KAAK,YAAY,IAAI,EAAE,QAAQ,IAAI;AACvF,iBAAO,eAAe;AAAA,YACpB,MAAM;AAAA,YACN,IAAI;AAAA,UACN,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,EAAE,SAAS,CAAC,aAAa;AAAA,QAClD,OAAO;AACL,iBAAO,KAAK,WAAW,EAAE,YAAY;AAAA,QACvC;AAAA,MACF;AACA,eAAS,MAAM,eAAe;AAC5B,eAAO,KAAK,GAAG,YAAY,GAAG,aAAa;AAAA,MAC7C;AAKA,eAAStC,QAAO,KAAK;AACnB,YAAI;AACJ,YAAI,QAAQ,QAAW;AACrB,iBAAO,KAAK,QAAQ;AAAA,QACtB,OAAO;AACL,0BAAgB,UAAU,GAAG;AAC7B,cAAI,iBAAiB,MAAM;AACzB,iBAAK,UAAU;AAAA,UACjB;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AACA,UAAI,OAAO,UAAU,mJAAmJ,SAAU,KAAK;AACrL,YAAI,QAAQ,QAAW;AACrB,iBAAO,KAAK,WAAW;AAAA,QACzB,OAAO;AACL,iBAAO,KAAK,OAAO,GAAG;AAAA,QACxB;AAAA,MACF,CAAC;AACD,eAAS,aAAa;AACpB,eAAO,KAAK;AAAA,MACd;AACA,UAAI,gBAAgB,KAClB,gBAAgB,KAAK,eACrB,cAAc,KAAK,eACnB,oBAAoB,MAAM,MAAM,MAAM,KAAK;AAG7C,eAAS,MAAM,UAAU,SAAS;AAChC,gBAAQ,WAAW,UAAU,WAAW;AAAA,MAC1C;AACA,eAAS,iBAAiB,GAAG,GAAG,GAAG;AAEjC,YAAI,IAAI,OAAO,KAAK,GAAG;AAErB,iBAAO,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,IAAI;AAAA,QACnC,OAAO;AACL,iBAAO,IAAI,KAAK,GAAG,GAAG,CAAC,EAAE,QAAQ;AAAA,QACnC;AAAA,MACF;AACA,eAAS,eAAe,GAAG,GAAG,GAAG;AAE/B,YAAI,IAAI,OAAO,KAAK,GAAG;AAErB,iBAAO,KAAK,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI;AAAA,QACnC,OAAO;AACL,iBAAO,KAAK,IAAI,GAAG,GAAG,CAAC;AAAA,QACzB;AAAA,MACF;AACA,eAAS,QAAQ,OAAO;AACtB,YAAI,MAAM;AACV,gBAAQ,eAAe,KAAK;AAC5B,YAAI,UAAU,UAAa,UAAU,iBAAiB,CAAC,KAAK,QAAQ,GAAG;AACrE,iBAAO;AAAA,QACT;AACA,sBAAc,KAAK,SAAS,iBAAiB;AAC7C,gBAAQ,OAAO;AAAA,UACb,KAAK;AACH,mBAAO,YAAY,KAAK,KAAK,GAAG,GAAG,CAAC;AACpC;AAAA,UACF,KAAK;AACH,mBAAO,YAAY,KAAK,KAAK,GAAG,KAAK,MAAM,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC;AAClE;AAAA,UACF,KAAK;AACH,mBAAO,YAAY,KAAK,KAAK,GAAG,KAAK,MAAM,GAAG,CAAC;AAC/C;AAAA,UACF,KAAK;AACH,mBAAO,YAAY,KAAK,KAAK,GAAG,KAAK,MAAM,GAAG,KAAK,KAAK,IAAI,KAAK,QAAQ,CAAC;AAC1E;AAAA,UACF,KAAK;AACH,mBAAO,YAAY,KAAK,KAAK,GAAG,KAAK,MAAM,GAAG,KAAK,KAAK,KAAK,KAAK,WAAW,IAAI,EAAE;AACnF;AAAA,UACF,KAAK;AAAA,UACL,KAAK;AACH,mBAAO,YAAY,KAAK,KAAK,GAAG,KAAK,MAAM,GAAG,KAAK,KAAK,CAAC;AACzD;AAAA,UACF,KAAK;AACH,mBAAO,KAAK,GAAG,QAAQ;AACvB,oBAAQ,MAAM,QAAQ,KAAK,SAAS,IAAI,KAAK,UAAU,IAAI,gBAAgB,WAAW;AACtF;AAAA,UACF,KAAK;AACH,mBAAO,KAAK,GAAG,QAAQ;AACvB,oBAAQ,MAAM,MAAM,aAAa;AACjC;AAAA,UACF,KAAK;AACH,mBAAO,KAAK,GAAG,QAAQ;AACvB,oBAAQ,MAAM,MAAM,aAAa;AACjC;AAAA,QACJ;AACA,aAAK,GAAG,QAAQ,IAAI;AACpB,cAAM,aAAa,MAAM,IAAI;AAC7B,eAAO;AAAA,MACT;AACA,eAAS,MAAM,OAAO;AACpB,YAAI,MAAM;AACV,gBAAQ,eAAe,KAAK;AAC5B,YAAI,UAAU,UAAa,UAAU,iBAAiB,CAAC,KAAK,QAAQ,GAAG;AACrE,iBAAO;AAAA,QACT;AACA,sBAAc,KAAK,SAAS,iBAAiB;AAC7C,gBAAQ,OAAO;AAAA,UACb,KAAK;AACH,mBAAO,YAAY,KAAK,KAAK,IAAI,GAAG,GAAG,CAAC,IAAI;AAC5C;AAAA,UACF,KAAK;AACH,mBAAO,YAAY,KAAK,KAAK,GAAG,KAAK,MAAM,IAAI,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,IAAI;AAC1E;AAAA,UACF,KAAK;AACH,mBAAO,YAAY,KAAK,KAAK,GAAG,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI;AACvD;AAAA,UACF,KAAK;AACH,mBAAO,YAAY,KAAK,KAAK,GAAG,KAAK,MAAM,GAAG,KAAK,KAAK,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI;AAClF;AAAA,UACF,KAAK;AACH,mBAAO,YAAY,KAAK,KAAK,GAAG,KAAK,MAAM,GAAG,KAAK,KAAK,KAAK,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI;AAC3F;AAAA,UACF,KAAK;AAAA,UACL,KAAK;AACH,mBAAO,YAAY,KAAK,KAAK,GAAG,KAAK,MAAM,GAAG,KAAK,KAAK,IAAI,CAAC,IAAI;AACjE;AAAA,UACF,KAAK;AACH,mBAAO,KAAK,GAAG,QAAQ;AACvB,oBAAQ,cAAc,MAAM,QAAQ,KAAK,SAAS,IAAI,KAAK,UAAU,IAAI,gBAAgB,WAAW,IAAI;AACxG;AAAA,UACF,KAAK;AACH,mBAAO,KAAK,GAAG,QAAQ;AACvB,oBAAQ,gBAAgB,MAAM,MAAM,aAAa,IAAI;AACrD;AAAA,UACF,KAAK;AACH,mBAAO,KAAK,GAAG,QAAQ;AACvB,oBAAQ,gBAAgB,MAAM,MAAM,aAAa,IAAI;AACrD;AAAA,QACJ;AACA,aAAK,GAAG,QAAQ,IAAI;AACpB,cAAM,aAAa,MAAM,IAAI;AAC7B,eAAO;AAAA,MACT;AACA,eAAS,UAAU;AACjB,eAAO,KAAK,GAAG,QAAQ,KAAK,KAAK,WAAW,KAAK;AAAA,MACnD;AACA,eAAS,OAAO;AACd,eAAO,KAAK,MAAM,KAAK,QAAQ,IAAI,GAAI;AAAA,MACzC;AACA,eAAS,SAAS;AAChB,eAAO,IAAI,KAAK,KAAK,QAAQ,CAAC;AAAA,MAChC;AACA,eAAS,UAAU;AACjB,YAAI,IAAI;AACR,eAAO,CAAC,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,OAAO,GAAG,EAAE,OAAO,GAAG,EAAE,YAAY,CAAC;AAAA,MAC1F;AACA,eAAS,WAAW;AAClB,YAAI,IAAI;AACR,eAAO;AAAA,UACL,OAAO,EAAE,KAAK;AAAA,UACd,QAAQ,EAAE,MAAM;AAAA,UAChB,MAAM,EAAE,KAAK;AAAA,UACb,OAAO,EAAE,MAAM;AAAA,UACf,SAAS,EAAE,QAAQ;AAAA,UACnB,SAAS,EAAE,QAAQ;AAAA,UACnB,cAAc,EAAE,aAAa;AAAA,QAC/B;AAAA,MACF;AACA,eAAS,SAAS;AAEhB,eAAO,KAAK,QAAQ,IAAI,KAAK,YAAY,IAAI;AAAA,MAC/C;AACA,eAAS,YAAY;AACnB,eAAO,QAAQ,IAAI;AAAA,MACrB;AACA,eAAS,eAAe;AACtB,eAAO,OAAO,CAAC,GAAG,gBAAgB,IAAI,CAAC;AAAA,MACzC;AACA,eAAS,YAAY;AACnB,eAAO,gBAAgB,IAAI,EAAE;AAAA,MAC/B;AACA,eAAS,eAAe;AACtB,eAAO;AAAA,UACL,OAAO,KAAK;AAAA,UACZ,QAAQ,KAAK;AAAA,UACb,QAAQ,KAAK;AAAA,UACb,OAAO,KAAK;AAAA,UACZ,QAAQ,KAAK;AAAA,QACf;AAAA,MACF;AACA,qBAAe,KAAK,GAAG,GAAG,SAAS;AACnC,qBAAe,MAAM,GAAG,GAAG,SAAS;AACpC,qBAAe,OAAO,GAAG,GAAG,SAAS;AACrC,qBAAe,QAAQ,GAAG,GAAG,SAAS;AACtC,qBAAe,SAAS,GAAG,GAAG,WAAW;AACzC,qBAAe,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,SAAS;AAC7C,qBAAe,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,SAAS;AAC3C,qBAAe,KAAK,CAAC,OAAO,CAAC,GAAG,GAAG,SAAS;AAC5C,qBAAe,KAAK,CAAC,QAAQ,CAAC,GAAG,GAAG,SAAS;AAC7C,oBAAc,KAAK,YAAY;AAC/B,oBAAc,MAAM,YAAY;AAChC,oBAAc,OAAO,YAAY;AACjC,oBAAc,QAAQ,YAAY;AAClC,oBAAc,SAAS,cAAc;AACrC,oBAAc,CAAC,KAAK,MAAM,OAAO,QAAQ,OAAO,GAAG,SAAU,OAAO,OAAO,QAAQQ,QAAO;AACxF,YAAI,MAAM,OAAO,QAAQ,UAAU,OAAOA,QAAO,OAAO,OAAO;AAC/D,YAAI,KAAK;AACP,0BAAgB,MAAM,EAAE,MAAM;AAAA,QAChC,OAAO;AACL,0BAAgB,MAAM,EAAE,aAAa;AAAA,QACvC;AAAA,MACF,CAAC;AACD,oBAAc,KAAK,aAAa;AAChC,oBAAc,MAAM,aAAa;AACjC,oBAAc,OAAO,aAAa;AAClC,oBAAc,QAAQ,aAAa;AACnC,oBAAc,MAAM,mBAAmB;AACvC,oBAAc,CAAC,KAAK,MAAM,OAAO,MAAM,GAAG,IAAI;AAC9C,oBAAc,CAAC,IAAI,GAAG,SAAU,OAAO,OAAO,QAAQA,QAAO;AAC3D,YAAI;AACJ,YAAI,OAAO,QAAQ,sBAAsB;AACvC,kBAAQ,MAAM,MAAM,OAAO,QAAQ,oBAAoB;AAAA,QACzD;AACA,YAAI,OAAO,QAAQ,qBAAqB;AACtC,gBAAM,IAAI,IAAI,OAAO,QAAQ,oBAAoB,OAAO,KAAK;AAAA,QAC/D,OAAO;AACL,gBAAM,IAAI,IAAI,SAAS,OAAO,EAAE;AAAA,QAClC;AAAA,MACF,CAAC;AACD,eAAS,WAAW,GAAGT,SAAQ;AAC7B,YAAI,GACF,GACA,MACA,OAAO,KAAK,SAAS,UAAU,IAAI,EAAE;AACvC,aAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,GAAG,EAAE,GAAG;AACvC,kBAAQ,OAAO,KAAK,CAAC,EAAE,OAAO;AAAA,YAC5B,KAAK;AAEH,qBAAO,MAAM,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,KAAK;AACzC,mBAAK,CAAC,EAAE,QAAQ,KAAK,QAAQ;AAC7B;AAAA,UACJ;AACA,kBAAQ,OAAO,KAAK,CAAC,EAAE,OAAO;AAAA,YAC5B,KAAK;AACH,mBAAK,CAAC,EAAE,QAAQ;AAChB;AAAA,YACF,KAAK;AAEH,qBAAO,MAAM,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,KAAK,EAAE,QAAQ;AACnD,mBAAK,CAAC,EAAE,QAAQ,KAAK,QAAQ;AAC7B;AAAA,UACJ;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,eAAS,gBAAgB,SAASA,SAAQ,QAAQ;AAChD,YAAI,GACF,GACA,OAAO,KAAK,KAAK,GACjB,MACA,MACA;AACF,kBAAU,QAAQ,YAAY;AAC9B,aAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,GAAG,EAAE,GAAG;AACvC,iBAAO,KAAK,CAAC,EAAE,KAAK,YAAY;AAChC,iBAAO,KAAK,CAAC,EAAE,KAAK,YAAY;AAChC,mBAAS,KAAK,CAAC,EAAE,OAAO,YAAY;AACpC,cAAI,QAAQ;AACV,oBAAQA,SAAQ;AAAA,cACd,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACH,oBAAI,SAAS,SAAS;AACpB,yBAAO,KAAK,CAAC;AAAA,gBACf;AACA;AAAA,cACF,KAAK;AACH,oBAAI,SAAS,SAAS;AACpB,yBAAO,KAAK,CAAC;AAAA,gBACf;AACA;AAAA,cACF,KAAK;AACH,oBAAI,WAAW,SAAS;AACtB,yBAAO,KAAK,CAAC;AAAA,gBACf;AACA;AAAA,YACJ;AAAA,UACF,WAAW,CAAC,MAAM,MAAM,MAAM,EAAE,QAAQ,OAAO,KAAK,GAAG;AACrD,mBAAO,KAAK,CAAC;AAAA,UACf;AAAA,QACF;AAAA,MACF;AACA,eAAS,sBAAsB,KAAK,MAAM;AACxC,YAAI,MAAM,IAAI,SAAS,IAAI,QAAQ,IAAK;AACxC,YAAI,SAAS,QAAW;AACtB,iBAAO,MAAM,IAAI,KAAK,EAAE,KAAK;AAAA,QAC/B,OAAO;AACL,iBAAO,MAAM,IAAI,KAAK,EAAE,KAAK,KAAK,OAAO,IAAI,UAAU;AAAA,QACzD;AAAA,MACF;AACA,eAAS,aAAa;AACpB,YAAI,GACF,GACA,KACA,OAAO,KAAK,WAAW,EAAE,KAAK;AAChC,aAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,GAAG,EAAE,GAAG;AAEvC,gBAAM,KAAK,MAAM,EAAE,QAAQ,KAAK,EAAE,QAAQ;AAC1C,cAAI,KAAK,CAAC,EAAE,SAAS,OAAO,OAAO,KAAK,CAAC,EAAE,OAAO;AAChD,mBAAO,KAAK,CAAC,EAAE;AAAA,UACjB;AACA,cAAI,KAAK,CAAC,EAAE,SAAS,OAAO,OAAO,KAAK,CAAC,EAAE,OAAO;AAChD,mBAAO,KAAK,CAAC,EAAE;AAAA,UACjB;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,eAAS,eAAe;AACtB,YAAI,GACF,GACA,KACA,OAAO,KAAK,WAAW,EAAE,KAAK;AAChC,aAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,GAAG,EAAE,GAAG;AAEvC,gBAAM,KAAK,MAAM,EAAE,QAAQ,KAAK,EAAE,QAAQ;AAC1C,cAAI,KAAK,CAAC,EAAE,SAAS,OAAO,OAAO,KAAK,CAAC,EAAE,OAAO;AAChD,mBAAO,KAAK,CAAC,EAAE;AAAA,UACjB;AACA,cAAI,KAAK,CAAC,EAAE,SAAS,OAAO,OAAO,KAAK,CAAC,EAAE,OAAO;AAChD,mBAAO,KAAK,CAAC,EAAE;AAAA,UACjB;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,eAAS,aAAa;AACpB,YAAI,GACF,GACA,KACA,OAAO,KAAK,WAAW,EAAE,KAAK;AAChC,aAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,GAAG,EAAE,GAAG;AAEvC,gBAAM,KAAK,MAAM,EAAE,QAAQ,KAAK,EAAE,QAAQ;AAC1C,cAAI,KAAK,CAAC,EAAE,SAAS,OAAO,OAAO,KAAK,CAAC,EAAE,OAAO;AAChD,mBAAO,KAAK,CAAC,EAAE;AAAA,UACjB;AACA,cAAI,KAAK,CAAC,EAAE,SAAS,OAAO,OAAO,KAAK,CAAC,EAAE,OAAO;AAChD,mBAAO,KAAK,CAAC,EAAE;AAAA,UACjB;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,eAAS,aAAa;AACpB,YAAI,GACF,GACA,KACA,KACA,OAAO,KAAK,WAAW,EAAE,KAAK;AAChC,aAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,GAAG,EAAE,GAAG;AACvC,gBAAM,KAAK,CAAC,EAAE,SAAS,KAAK,CAAC,EAAE,QAAQ,IAAK;AAG5C,gBAAM,KAAK,MAAM,EAAE,QAAQ,KAAK,EAAE,QAAQ;AAC1C,cAAI,KAAK,CAAC,EAAE,SAAS,OAAO,OAAO,KAAK,CAAC,EAAE,SAAS,KAAK,CAAC,EAAE,SAAS,OAAO,OAAO,KAAK,CAAC,EAAE,OAAO;AAChG,oBAAQ,KAAK,KAAK,IAAI,MAAM,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,MAAM,KAAK,CAAC,EAAE;AAAA,UACrE;AAAA,QACF;AACA,eAAO,KAAK,KAAK;AAAA,MACnB;AACA,eAAS,cAAc,UAAU;AAC/B,YAAI,CAAC,WAAW,MAAM,gBAAgB,GAAG;AACvC,2BAAiB,KAAK,IAAI;AAAA,QAC5B;AACA,eAAO,WAAW,KAAK,iBAAiB,KAAK;AAAA,MAC/C;AACA,eAAS,cAAc,UAAU;AAC/B,YAAI,CAAC,WAAW,MAAM,gBAAgB,GAAG;AACvC,2BAAiB,KAAK,IAAI;AAAA,QAC5B;AACA,eAAO,WAAW,KAAK,iBAAiB,KAAK;AAAA,MAC/C;AACA,eAAS,gBAAgB,UAAU;AACjC,YAAI,CAAC,WAAW,MAAM,kBAAkB,GAAG;AACzC,2BAAiB,KAAK,IAAI;AAAA,QAC5B;AACA,eAAO,WAAW,KAAK,mBAAmB,KAAK;AAAA,MACjD;AACA,eAAS,aAAa,UAAUC,SAAQ;AACtC,eAAOA,QAAO,cAAc,QAAQ;AAAA,MACtC;AACA,eAAS,aAAa,UAAUA,SAAQ;AACtC,eAAOA,QAAO,cAAc,QAAQ;AAAA,MACtC;AACA,eAAS,eAAe,UAAUA,SAAQ;AACxC,eAAOA,QAAO,gBAAgB,QAAQ;AAAA,MACxC;AACA,eAAS,oBAAoB,UAAUA,SAAQ;AAC7C,eAAOA,QAAO,wBAAwB;AAAA,MACxC;AACA,eAAS,mBAAmB;AAC1B,YAAI,aAAa,CAAC,GAChB,aAAa,CAAC,GACd,eAAe,CAAC,GAChB,cAAc,CAAC,GACf,GACA,GACA,OAAO,KAAK,KAAK;AACnB,aAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,GAAG,EAAE,GAAG;AACvC,qBAAW,KAAK,YAAY,KAAK,CAAC,EAAE,IAAI,CAAC;AACzC,qBAAW,KAAK,YAAY,KAAK,CAAC,EAAE,IAAI,CAAC;AACzC,uBAAa,KAAK,YAAY,KAAK,CAAC,EAAE,MAAM,CAAC;AAC7C,sBAAY,KAAK,YAAY,KAAK,CAAC,EAAE,IAAI,CAAC;AAC1C,sBAAY,KAAK,YAAY,KAAK,CAAC,EAAE,IAAI,CAAC;AAC1C,sBAAY,KAAK,YAAY,KAAK,CAAC,EAAE,MAAM,CAAC;AAAA,QAC9C;AACA,aAAK,aAAa,IAAI,OAAO,OAAO,YAAY,KAAK,GAAG,IAAI,KAAK,GAAG;AACpE,aAAK,iBAAiB,IAAI,OAAO,OAAO,WAAW,KAAK,GAAG,IAAI,KAAK,GAAG;AACvE,aAAK,iBAAiB,IAAI,OAAO,OAAO,WAAW,KAAK,GAAG,IAAI,KAAK,GAAG;AACvE,aAAK,mBAAmB,IAAI,OAAO,OAAO,aAAa,KAAK,GAAG,IAAI,KAAK,GAAG;AAAA,MAC7E;AAIA,qBAAe,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,WAAY;AAC1C,eAAO,KAAK,SAAS,IAAI;AAAA,MAC3B,CAAC;AACD,qBAAe,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,WAAY;AAC1C,eAAO,KAAK,YAAY,IAAI;AAAA,MAC9B,CAAC;AACD,eAAS,uBAAuBQ,QAAO,QAAQ;AAC7C,uBAAe,GAAG,CAACA,QAAOA,OAAM,MAAM,GAAG,GAAG,MAAM;AAAA,MACpD;AACA,6BAAuB,QAAQ,UAAU;AACzC,6BAAuB,SAAS,UAAU;AAC1C,6BAAuB,QAAQ,aAAa;AAC5C,6BAAuB,SAAS,aAAa;AAI7C,mBAAa,YAAY,IAAI;AAC7B,mBAAa,eAAe,IAAI;AAIhC,sBAAgB,YAAY,CAAC;AAC7B,sBAAgB,eAAe,CAAC;AAIhC,oBAAc,KAAKW,YAAW;AAC9B,oBAAc,KAAKA,YAAW;AAC9B,oBAAc,MAAMD,YAAWH,OAAM;AACrC,oBAAc,MAAMG,YAAWH,OAAM;AACrC,oBAAc,QAAQ,WAAWE,OAAM;AACvC,oBAAc,QAAQ,WAAWA,OAAM;AACvC,oBAAc,SAAS,WAAW,MAAM;AACxC,oBAAc,SAAS,WAAW,MAAM;AACxC,wBAAkB,CAAC,QAAQ,SAAS,QAAQ,OAAO,GAAG,SAAU,OAAO,MAAM,QAAQT,QAAO;AAC1F,aAAKA,OAAM,OAAO,GAAG,CAAC,CAAC,IAAI,MAAM,KAAK;AAAA,MACxC,CAAC;AACD,wBAAkB,CAAC,MAAM,IAAI,GAAG,SAAU,OAAO,MAAM,QAAQA,QAAO;AACpE,aAAKA,MAAK,IAAI,MAAM,kBAAkB,KAAK;AAAA,MAC7C,CAAC;AAID,eAAS,eAAe,OAAO;AAC7B,eAAO,qBAAqB,KAAK,MAAM,OAAO,KAAK,KAAK,GAAG,KAAK,QAAQ,GAAG,KAAK,WAAW,EAAE,MAAM,KAAK,KAAK,WAAW,EAAE,MAAM,GAAG;AAAA,MACrI;AACA,eAAS,kBAAkB,OAAO;AAChC,eAAO,qBAAqB,KAAK,MAAM,OAAO,KAAK,QAAQ,GAAG,KAAK,WAAW,GAAG,GAAG,CAAC;AAAA,MACvF;AACA,eAAS,oBAAoB;AAC3B,eAAO,YAAY,KAAK,KAAK,GAAG,GAAG,CAAC;AAAA,MACtC;AACA,eAAS,2BAA2B;AAClC,eAAO,YAAY,KAAK,YAAY,GAAG,GAAG,CAAC;AAAA,MAC7C;AACA,eAAS,iBAAiB;AACxB,YAAI,WAAW,KAAK,WAAW,EAAE;AACjC,eAAO,YAAY,KAAK,KAAK,GAAG,SAAS,KAAK,SAAS,GAAG;AAAA,MAC5D;AACA,eAAS,qBAAqB;AAC5B,YAAI,WAAW,KAAK,WAAW,EAAE;AACjC,eAAO,YAAY,KAAK,SAAS,GAAG,SAAS,KAAK,SAAS,GAAG;AAAA,MAChE;AACA,eAAS,qBAAqB,OAAO,MAAM,SAAS,KAAK,KAAK;AAC5D,YAAI;AACJ,YAAI,SAAS,MAAM;AACjB,iBAAO,WAAW,MAAM,KAAK,GAAG,EAAE;AAAA,QACpC,OAAO;AACL,wBAAc,YAAY,OAAO,KAAK,GAAG;AACzC,cAAI,OAAO,aAAa;AACtB,mBAAO;AAAA,UACT;AACA,iBAAO,WAAW,KAAK,MAAM,OAAO,MAAM,SAAS,KAAK,GAAG;AAAA,QAC7D;AAAA,MACF;AACA,eAAS,WAAW,UAAU,MAAM,SAAS,KAAK,KAAK;AACrD,YAAI,gBAAgB,mBAAmB,UAAU,MAAM,SAAS,KAAK,GAAG,GACtE,OAAO,cAAc,cAAc,MAAM,GAAG,cAAc,SAAS;AACrE,aAAK,KAAK,KAAK,eAAe,CAAC;AAC/B,aAAK,MAAM,KAAK,YAAY,CAAC;AAC7B,aAAK,KAAK,KAAK,WAAW,CAAC;AAC3B,eAAO;AAAA,MACT;AAIA,qBAAe,KAAK,GAAG,MAAM,SAAS;AAItC,mBAAa,WAAW,GAAG;AAI3B,sBAAgB,WAAW,CAAC;AAI5B,oBAAc,KAAKM,OAAM;AACzB,oBAAc,KAAK,SAAU,OAAO,OAAO;AACzC,cAAM,KAAK,KAAK,MAAM,KAAK,IAAI,KAAK;AAAA,MACtC,CAAC;AAID,eAAS,cAAc,OAAO;AAC5B,eAAO,SAAS,OAAO,KAAK,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,QAAQ,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;AAAA,MAC1G;AAIA,qBAAe,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,MAAM;AAI3C,mBAAa,QAAQ,GAAG;AAGxB,sBAAgB,QAAQ,CAAC;AAIzB,oBAAc,KAAKI,UAAS;AAC5B,oBAAc,MAAMA,YAAWH,OAAM;AACrC,oBAAc,MAAM,SAAU,UAAUf,SAAQ;AAE9C,eAAO,WAAWA,QAAO,2BAA2BA,QAAO,gBAAgBA,QAAO;AAAA,MACpF,CAAC;AACD,oBAAc,CAAC,KAAK,IAAI,GAAGuB,KAAI;AAC/B,oBAAc,MAAM,SAAU,OAAO,OAAO;AAC1C,cAAMA,KAAI,IAAI,MAAM,MAAM,MAAML,UAAS,EAAE,CAAC,CAAC;AAAA,MAC/C,CAAC;AAID,UAAI,mBAAmB,WAAW,QAAQ,IAAI;AAI9C,qBAAe,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,WAAW;AAItD,mBAAa,aAAa,KAAK;AAG/B,sBAAgB,aAAa,CAAC;AAI9B,oBAAc,OAAO,SAAS;AAC9B,oBAAc,QAAQF,OAAM;AAC5B,oBAAc,CAAC,OAAO,MAAM,GAAG,SAAU,OAAO,OAAO,QAAQ;AAC7D,eAAO,aAAa,MAAM,KAAK;AAAA,MACjC,CAAC;AAMD,eAAS,gBAAgB,OAAO;AAC9B,YAAI,YAAY,KAAK,OAAO,KAAK,MAAM,EAAE,QAAQ,KAAK,IAAI,KAAK,MAAM,EAAE,QAAQ,MAAM,KAAK,KAAK,IAAI;AACnG,eAAO,SAAS,OAAO,YAAY,KAAK,IAAI,QAAQ,WAAW,GAAG;AAAA,MACpE;AAIA,qBAAe,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ;AAI1C,mBAAa,UAAU,GAAG;AAI1B,sBAAgB,UAAU,EAAE;AAI5B,oBAAc,KAAKE,UAAS;AAC5B,oBAAc,MAAMA,YAAWH,OAAM;AACrC,oBAAc,CAAC,KAAK,IAAI,GAAG,MAAM;AAIjC,UAAI,eAAe,WAAW,WAAW,KAAK;AAI9C,qBAAe,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ;AAI1C,mBAAa,UAAU,GAAG;AAI1B,sBAAgB,UAAU,EAAE;AAI5B,oBAAc,KAAKG,UAAS;AAC5B,oBAAc,MAAMA,YAAWH,OAAM;AACrC,oBAAc,CAAC,KAAK,IAAI,GAAG,MAAM;AAIjC,UAAI,eAAe,WAAW,WAAW,KAAK;AAI9C,qBAAe,KAAK,GAAG,GAAG,WAAY;AACpC,eAAO,CAAC,EAAE,KAAK,YAAY,IAAI;AAAA,MACjC,CAAC;AACD,qBAAe,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,WAAY;AAC1C,eAAO,CAAC,EAAE,KAAK,YAAY,IAAI;AAAA,MACjC,CAAC;AACD,qBAAe,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,aAAa;AAC9C,qBAAe,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,WAAY;AAC5C,eAAO,KAAK,YAAY,IAAI;AAAA,MAC9B,CAAC;AACD,qBAAe,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,WAAY;AAC7C,eAAO,KAAK,YAAY,IAAI;AAAA,MAC9B,CAAC;AACD,qBAAe,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,WAAY;AAC9C,eAAO,KAAK,YAAY,IAAI;AAAA,MAC9B,CAAC;AACD,qBAAe,GAAG,CAAC,WAAW,CAAC,GAAG,GAAG,WAAY;AAC/C,eAAO,KAAK,YAAY,IAAI;AAAA,MAC9B,CAAC;AACD,qBAAe,GAAG,CAAC,YAAY,CAAC,GAAG,GAAG,WAAY;AAChD,eAAO,KAAK,YAAY,IAAI;AAAA,MAC9B,CAAC;AACD,qBAAe,GAAG,CAAC,aAAa,CAAC,GAAG,GAAG,WAAY;AACjD,eAAO,KAAK,YAAY,IAAI;AAAA,MAC9B,CAAC;AAID,mBAAa,eAAe,IAAI;AAIhC,sBAAgB,eAAe,EAAE;AAIjC,oBAAc,KAAK,WAAWD,OAAM;AACpC,oBAAc,MAAM,WAAWC,OAAM;AACrC,oBAAc,OAAO,WAAWC,OAAM;AACtC,UAAI,OAAO;AACX,WAAK,QAAQ,QAAQ,MAAM,UAAU,GAAG,SAAS,KAAK;AACpD,sBAAc,OAAO,aAAa;AAAA,MACpC;AACA,eAAS,QAAQ,OAAO,OAAO;AAC7B,cAAM,WAAW,IAAI,OAAO,OAAO,SAAS,GAAI;AAAA,MAClD;AACA,WAAK,QAAQ,KAAK,MAAM,UAAU,GAAG,SAAS,KAAK;AACjD,sBAAc,OAAO,OAAO;AAAA,MAC9B;AACA,0BAAoB,WAAW,gBAAgB,KAAK;AAIpD,qBAAe,KAAK,GAAG,GAAG,UAAU;AACpC,qBAAe,MAAM,GAAG,GAAG,UAAU;AAIrC,eAAS,cAAc;AACrB,eAAO,KAAK,SAAS,QAAQ;AAAA,MAC/B;AACA,eAAS,cAAc;AACrB,eAAO,KAAK,SAAS,+BAA+B;AAAA,MACtD;AACA,UAAIuB,SAAQ,OAAO;AACnB,MAAAA,OAAM,MAAM;AACZ,MAAAA,OAAM,WAAW;AACjB,MAAAA,OAAM,QAAQ;AACd,MAAAA,OAAM,OAAO;AACb,MAAAA,OAAM,QAAQ;AACd,MAAAA,OAAM,SAAS;AACf,MAAAA,OAAM,OAAO;AACb,MAAAA,OAAM,UAAU;AAChB,MAAAA,OAAM,KAAK;AACX,MAAAA,OAAM,QAAQ;AACd,MAAAA,OAAM,MAAM;AACZ,MAAAA,OAAM,YAAY;AAClB,MAAAA,OAAM,UAAU;AAChB,MAAAA,OAAM,WAAW;AACjB,MAAAA,OAAM,YAAY;AAClB,MAAAA,OAAM,SAAS;AACf,MAAAA,OAAM,gBAAgB;AACtB,MAAAA,OAAM,iBAAiB;AACvB,MAAAA,OAAM,UAAU;AAChB,MAAAA,OAAM,OAAO;AACb,MAAAA,OAAM,SAASvC;AACf,MAAAuC,OAAM,aAAa;AACnB,MAAAA,OAAM,MAAM;AACZ,MAAAA,OAAM,MAAM;AACZ,MAAAA,OAAM,eAAe;AACrB,MAAAA,OAAM,MAAM;AACZ,MAAAA,OAAM,UAAU;AAChB,MAAAA,OAAM,WAAW;AACjB,MAAAA,OAAM,UAAU;AAChB,MAAAA,OAAM,WAAW;AACjB,MAAAA,OAAM,SAAS;AACf,MAAAA,OAAM,cAAc;AACpB,MAAAA,OAAM,UAAU;AAChB,UAAI,OAAO,WAAW,eAAe,OAAO,OAAO,MAAM;AACvD,QAAAA,OAAM,OAAO,IAAI,4BAA4B,CAAC,IAAI,WAAY;AAC5D,iBAAO,YAAY,KAAK,OAAO,IAAI;AAAA,QACrC;AAAA,MACF;AACA,MAAAA,OAAM,SAAS;AACf,MAAAA,OAAM,WAAW;AACjB,MAAAA,OAAM,OAAO;AACb,MAAAA,OAAM,UAAU;AAChB,MAAAA,OAAM,eAAe;AACrB,MAAAA,OAAM,UAAU;AAChB,MAAAA,OAAM,YAAY;AAClB,MAAAA,OAAM,UAAU;AAChB,MAAAA,OAAM,UAAU;AAChB,MAAAA,OAAM,OAAO;AACb,MAAAA,OAAM,aAAa;AACnB,MAAAA,OAAM,WAAW;AACjB,MAAAA,OAAM,cAAc;AACpB,MAAAA,OAAM,UAAUA,OAAM,WAAW;AACjC,MAAAA,OAAM,QAAQ;AACd,MAAAA,OAAM,cAAc;AACpB,MAAAA,OAAM,OAAOA,OAAM,QAAQ;AAC3B,MAAAA,OAAM,UAAUA,OAAM,WAAW;AACjC,MAAAA,OAAM,cAAc;AACpB,MAAAA,OAAM,kBAAkB;AACxB,MAAAA,OAAM,iBAAiB;AACvB,MAAAA,OAAM,wBAAwB;AAC9B,MAAAA,OAAM,OAAO;AACb,MAAAA,OAAM,MAAMA,OAAM,OAAO;AACzB,MAAAA,OAAM,UAAU;AAChB,MAAAA,OAAM,aAAa;AACnB,MAAAA,OAAM,YAAY;AAClB,MAAAA,OAAM,OAAOA,OAAM,QAAQ;AAC3B,MAAAA,OAAM,SAASA,OAAM,UAAU;AAC/B,MAAAA,OAAM,SAASA,OAAM,UAAU;AAC/B,MAAAA,OAAM,cAAcA,OAAM,eAAe;AACzC,MAAAA,OAAM,YAAY;AAClB,MAAAA,OAAM,MAAM;AACZ,MAAAA,OAAM,QAAQ;AACd,MAAAA,OAAM,YAAY;AAClB,MAAAA,OAAM,uBAAuB;AAC7B,MAAAA,OAAM,QAAQ;AACd,MAAAA,OAAM,UAAU;AAChB,MAAAA,OAAM,cAAc;AACpB,MAAAA,OAAM,QAAQ;AACd,MAAAA,OAAM,QAAQ;AACd,MAAAA,OAAM,WAAW;AACjB,MAAAA,OAAM,WAAW;AACjB,MAAAA,OAAM,QAAQ,UAAU,mDAAmD,gBAAgB;AAC3F,MAAAA,OAAM,SAAS,UAAU,oDAAoD,WAAW;AACxF,MAAAA,OAAM,QAAQ,UAAU,kDAAkD,UAAU;AACpF,MAAAA,OAAM,OAAO,UAAU,4GAA4G,UAAU;AAC7I,MAAAA,OAAM,eAAe,UAAU,2GAA2G,2BAA2B;AACrK,eAAS,WAAW,OAAO;AACzB,eAAO,YAAY,QAAQ,GAAI;AAAA,MACjC;AACA,eAAS,eAAe;AACtB,eAAO,YAAY,MAAM,MAAM,SAAS,EAAE,UAAU;AAAA,MACtD;AACA,eAAS,mBAAmB,QAAQ;AAClC,eAAO;AAAA,MACT;AACA,UAAI,UAAU,OAAO;AACrB,cAAQ,WAAW;AACnB,cAAQ,iBAAiB;AACzB,cAAQ,cAAc;AACtB,cAAQ,UAAU9B;AAClB,cAAQ,WAAW;AACnB,cAAQ,aAAa;AACrB,cAAQ,eAAe;AACvB,cAAQ,aAAa;AACrB,cAAQ,MAAM;AACd,cAAQ,OAAO;AACf,cAAQ,YAAY;AACpB,cAAQ,kBAAkB;AAC1B,cAAQ,gBAAgB;AACxB,cAAQ,gBAAgB;AACxB,cAAQ,kBAAkB;AAC1B,cAAQ,SAAS;AACjB,cAAQ,cAAc;AACtB,cAAQ,cAAc;AACtB,cAAQ,cAAc;AACtB,cAAQ,mBAAmB;AAC3B,cAAQ,OAAO;AACf,cAAQ,iBAAiB;AACzB,cAAQ,iBAAiB;AACzB,cAAQ,WAAW;AACnB,cAAQ,cAAc;AACtB,cAAQ,gBAAgB;AACxB,cAAQ,gBAAgB;AACxB,cAAQ,gBAAgB;AACxB,cAAQ,qBAAqB;AAC7B,cAAQ,mBAAmB;AAC3B,cAAQ,OAAO;AACf,cAAQ,WAAW;AACnB,eAAS,MAAMV,SAAQ,OAAO,OAAO,QAAQ;AAC3C,YAAIC,UAAS,UAAU,GACrB,MAAM,UAAU,EAAE,IAAI,QAAQ,KAAK;AACrC,eAAOA,QAAO,KAAK,EAAE,KAAKD,OAAM;AAAA,MAClC;AACA,eAAS,eAAeA,SAAQ,OAAO,OAAO;AAC5C,YAAI,SAASA,OAAM,GAAG;AACpB,kBAAQA;AACR,UAAAA,UAAS;AAAA,QACX;AACA,QAAAA,UAASA,WAAU;AACnB,YAAI,SAAS,MAAM;AACjB,iBAAO,MAAMA,SAAQ,OAAO,OAAO,OAAO;AAAA,QAC5C;AACA,YAAI,GACF,MAAM,CAAC;AACT,aAAK,IAAI,GAAG,IAAI,IAAI,KAAK;AACvB,cAAI,CAAC,IAAI,MAAMA,SAAQ,GAAG,OAAO,OAAO;AAAA,QAC1C;AACA,eAAO;AAAA,MACT;AAUA,eAAS,iBAAiB,cAAcA,SAAQ,OAAO,OAAO;AAC5D,YAAI,OAAO,iBAAiB,WAAW;AACrC,cAAI,SAASA,OAAM,GAAG;AACpB,oBAAQA;AACR,YAAAA,UAAS;AAAA,UACX;AACA,UAAAA,UAASA,WAAU;AAAA,QACrB,OAAO;AACL,UAAAA,UAAS;AACT,kBAAQA;AACR,yBAAe;AACf,cAAI,SAASA,OAAM,GAAG;AACpB,oBAAQA;AACR,YAAAA,UAAS;AAAA,UACX;AACA,UAAAA,UAASA,WAAU;AAAA,QACrB;AACA,YAAIC,UAAS,UAAU,GACrB,QAAQ,eAAeA,QAAO,MAAM,MAAM,GAC1C,GACA,MAAM,CAAC;AACT,YAAI,SAAS,MAAM;AACjB,iBAAO,MAAMD,UAAS,QAAQ,SAAS,GAAG,OAAO,KAAK;AAAA,QACxD;AACA,aAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,cAAI,CAAC,IAAI,MAAMA,UAAS,IAAI,SAAS,GAAG,OAAO,KAAK;AAAA,QACtD;AACA,eAAO;AAAA,MACT;AACA,eAAS,WAAWA,SAAQ,OAAO;AACjC,eAAO,eAAeA,SAAQ,OAAO,QAAQ;AAAA,MAC/C;AACA,eAAS,gBAAgBA,SAAQ,OAAO;AACtC,eAAO,eAAeA,SAAQ,OAAO,aAAa;AAAA,MACpD;AACA,eAAS,aAAa,cAAcA,SAAQ,OAAO;AACjD,eAAO,iBAAiB,cAAcA,SAAQ,OAAO,UAAU;AAAA,MACjE;AACA,eAAS,kBAAkB,cAAcA,SAAQ,OAAO;AACtD,eAAO,iBAAiB,cAAcA,SAAQ,OAAO,eAAe;AAAA,MACtE;AACA,eAAS,gBAAgB,cAAcA,SAAQ,OAAO;AACpD,eAAO,iBAAiB,cAAcA,SAAQ,OAAO,aAAa;AAAA,MACpE;AACA,yBAAmB,MAAM;AAAA,QACvB,MAAM,CAAC;AAAA,UACL,OAAO;AAAA,UACP,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,MAAM;AAAA,QACR,GAAG;AAAA,UACD,OAAO;AAAA,UACP,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,MAAM;AAAA,QACR,CAAC;AAAA,QACD,wBAAwB;AAAA,QACxB,SAAS,SAAU,QAAQ;AACzB,cAAI,IAAI,SAAS,IACf,SAAS,MAAM,SAAS,MAAM,EAAE,MAAM,IAAI,OAAO,MAAM,IAAI,OAAO,MAAM,IAAI,OAAO,MAAM,IAAI,OAAO;AACtG,iBAAO,SAAS;AAAA,QAClB;AAAA,MACF,CAAC;AAID,YAAM,OAAO,UAAU,yDAAyD,kBAAkB;AAClG,YAAM,WAAW,UAAU,iEAAiE,SAAS;AACrG,UAAI,UAAU,KAAK;AACnB,eAAS,MAAM;AACb,YAAI,OAAO,KAAK;AAChB,aAAK,gBAAgB,QAAQ,KAAK,aAAa;AAC/C,aAAK,QAAQ,QAAQ,KAAK,KAAK;AAC/B,aAAK,UAAU,QAAQ,KAAK,OAAO;AACnC,aAAK,eAAe,QAAQ,KAAK,YAAY;AAC7C,aAAK,UAAU,QAAQ,KAAK,OAAO;AACnC,aAAK,UAAU,QAAQ,KAAK,OAAO;AACnC,aAAK,QAAQ,QAAQ,KAAK,KAAK;AAC/B,aAAK,SAAS,QAAQ,KAAK,MAAM;AACjC,aAAK,QAAQ,QAAQ,KAAK,KAAK;AAC/B,eAAO;AAAA,MACT;AACA,eAAS,cAAc,UAAU,OAAO,OAAO,WAAW;AACxD,YAAI,QAAQ,eAAe,OAAO,KAAK;AACvC,iBAAS,iBAAiB,YAAY,MAAM;AAC5C,iBAAS,SAAS,YAAY,MAAM;AACpC,iBAAS,WAAW,YAAY,MAAM;AACtC,eAAO,SAAS,QAAQ;AAAA,MAC1B;AAGA,eAAS,MAAM,OAAO,OAAO;AAC3B,eAAO,cAAc,MAAM,OAAO,OAAO,CAAC;AAAA,MAC5C;AAGA,eAAS,WAAW,OAAO,OAAO;AAChC,eAAO,cAAc,MAAM,OAAO,OAAO,EAAE;AAAA,MAC7C;AACA,eAAS,QAAQ,QAAQ;AACvB,YAAI,SAAS,GAAG;AACd,iBAAO,KAAK,MAAM,MAAM;AAAA,QAC1B,OAAO;AACL,iBAAO,KAAK,KAAK,MAAM;AAAA,QACzB;AAAA,MACF;AACA,eAAS,SAAS;AAChB,YAAImC,gBAAe,KAAK,eACtBF,QAAO,KAAK,OACZF,UAAS,KAAK,SACd,OAAO,KAAK,OACZG,UACAP,UACAD,QACAI,QACA;AAIF,YAAI,EAAEK,iBAAgB,KAAKF,SAAQ,KAAKF,WAAU,KAAKI,iBAAgB,KAAKF,SAAQ,KAAKF,WAAU,IAAI;AACrG,UAAAI,iBAAgB,QAAQ,aAAaJ,OAAM,IAAIE,KAAI,IAAI;AACvD,UAAAA,QAAO;AACP,UAAAF,UAAS;AAAA,QACX;AAIA,aAAK,eAAeI,gBAAe;AACnC,QAAAD,WAAUpB,UAASqB,gBAAe,GAAI;AACtC,aAAK,UAAUD,WAAU;AACzB,QAAAP,WAAUb,UAASoB,WAAU,EAAE;AAC/B,aAAK,UAAUP,WAAU;AACzB,QAAAD,SAAQZ,UAASa,WAAU,EAAE;AAC7B,aAAK,QAAQD,SAAQ;AACrB,QAAAO,SAAQnB,UAASY,SAAQ,EAAE;AAG3B,yBAAiBZ,UAAS,aAAamB,KAAI,CAAC;AAC5C,QAAAF,WAAU;AACV,QAAAE,SAAQ,QAAQ,aAAa,cAAc,CAAC;AAG5C,QAAAH,SAAQhB,UAASiB,UAAS,EAAE;AAC5B,QAAAA,WAAU;AACV,aAAK,OAAOE;AACZ,aAAK,SAASF;AACd,aAAK,QAAQD;AACb,eAAO;AAAA,MACT;AACA,eAAS,aAAaG,OAAM;AAG1B,eAAOA,QAAO,OAAO;AAAA,MACvB;AACA,eAAS,aAAaF,SAAQ;AAE5B,eAAOA,UAAS,SAAS;AAAA,MAC3B;AACA,eAAS,GAAG,OAAO;AACjB,YAAI,CAAC,KAAK,QAAQ,GAAG;AACnB,iBAAO;AAAA,QACT;AACA,YAAIE,OACFF,SACAI,gBAAe,KAAK;AACtB,gBAAQ,eAAe,KAAK;AAC5B,YAAI,UAAU,WAAW,UAAU,aAAa,UAAU,QAAQ;AAChE,UAAAF,QAAO,KAAK,QAAQE,gBAAe;AACnC,UAAAJ,UAAS,KAAK,UAAU,aAAaE,KAAI;AACzC,kBAAQ,OAAO;AAAA,YACb,KAAK;AACH,qBAAOF;AAAA,YACT,KAAK;AACH,qBAAOA,UAAS;AAAA,YAClB,KAAK;AACH,qBAAOA,UAAS;AAAA,UACpB;AAAA,QACF,OAAO;AAEL,UAAAE,QAAO,KAAK,QAAQ,KAAK,MAAM,aAAa,KAAK,OAAO,CAAC;AACzD,kBAAQ,OAAO;AAAA,YACb,KAAK;AACH,qBAAOA,QAAO,IAAIE,gBAAe;AAAA,YACnC,KAAK;AACH,qBAAOF,QAAOE,gBAAe;AAAA,YAC/B,KAAK;AACH,qBAAOF,QAAO,KAAKE,gBAAe;AAAA,YACpC,KAAK;AACH,qBAAOF,QAAO,OAAOE,gBAAe;AAAA,YACtC,KAAK;AACH,qBAAOF,QAAO,QAAQE,gBAAe;AAAA,YAEvC,KAAK;AACH,qBAAO,KAAK,MAAMF,QAAO,KAAK,IAAIE;AAAA,YACpC;AACE,oBAAM,IAAI,MAAM,kBAAkB,KAAK;AAAA,UAC3C;AAAA,QACF;AAAA,MACF;AAGA,eAAS,YAAY;AACnB,YAAI,CAAC,KAAK,QAAQ,GAAG;AACnB,iBAAO;AAAA,QACT;AACA,eAAO,KAAK,gBAAgB,KAAK,QAAQ,QAAQ,KAAK,UAAU,KAAK,SAAS,MAAM,KAAK,UAAU,EAAE,IAAI;AAAA,MAC3G;AACA,eAAS,OAAO,OAAO;AACrB,eAAO,WAAY;AACjB,iBAAO,KAAK,GAAG,KAAK;AAAA,QACtB;AAAA,MACF;AACA,UAAI,iBAAiB,OAAO,IAAI,GAC9B,YAAY,OAAO,GAAG,GACtB,YAAY,OAAO,GAAG,GACtB,UAAU,OAAO,GAAG,GACpB,SAAS,OAAO,GAAG,GACnB,UAAU,OAAO,GAAG,GACpB,WAAW,OAAO,GAAG,GACrB,aAAa,OAAO,GAAG,GACvB,UAAU,OAAO,GAAG;AACtB,eAAS,UAAU;AACjB,eAAO,eAAe,IAAI;AAAA,MAC5B;AACA,eAAS,MAAM,OAAO;AACpB,gBAAQ,eAAe,KAAK;AAC5B,eAAO,KAAK,QAAQ,IAAI,KAAK,QAAQ,GAAG,EAAE,IAAI;AAAA,MAChD;AACA,eAAS,WAAW,MAAM;AACxB,eAAO,WAAY;AACjB,iBAAO,KAAK,QAAQ,IAAI,KAAK,MAAM,IAAI,IAAI;AAAA,QAC7C;AAAA,MACF;AACA,UAAI,eAAe,WAAW,cAAc,GAC1C,UAAU,WAAW,SAAS,GAC9B,UAAU,WAAW,SAAS,GAC9B,QAAQ,WAAW,OAAO,GAC1B,OAAO,WAAW,MAAM,GACxB,SAAS,WAAW,QAAQ,GAC5B,QAAQ,WAAW,OAAO;AAC5B,eAAS,QAAQ;AACf,eAAOrB,UAAS,KAAK,KAAK,IAAI,CAAC;AAAA,MACjC;AACA,UAAI,QAAQ,KAAK,OACf,aAAa;AAAA,QACX,IAAI;AAAA;AAAA,QAEJ,GAAG;AAAA;AAAA,QAEH,GAAG;AAAA;AAAA,QAEH,GAAG;AAAA;AAAA,QAEH,GAAG;AAAA;AAAA,QAEH,GAAG;AAAA;AAAA,QAEH,GAAG;AAAA;AAAA,MACL;AAGF,eAAS,kBAAkB,QAAQ,QAAQ,eAAe,UAAUb,SAAQ;AAC1E,eAAOA,QAAO,aAAa,UAAU,GAAG,CAAC,CAAC,eAAe,QAAQ,QAAQ;AAAA,MAC3E;AACA,eAAS,eAAe,gBAAgB,eAAewC,aAAYxC,SAAQ;AACzE,YAAI,WAAW,eAAe,cAAc,EAAE,IAAI,GAChDiC,WAAU,MAAM,SAAS,GAAG,GAAG,CAAC,GAChCP,WAAU,MAAM,SAAS,GAAG,GAAG,CAAC,GAChCD,SAAQ,MAAM,SAAS,GAAG,GAAG,CAAC,GAC9BO,QAAO,MAAM,SAAS,GAAG,GAAG,CAAC,GAC7BF,UAAS,MAAM,SAAS,GAAG,GAAG,CAAC,GAC/BC,SAAQ,MAAM,SAAS,GAAG,GAAG,CAAC,GAC9BF,SAAQ,MAAM,SAAS,GAAG,GAAG,CAAC,GAC9B,IAAII,YAAWO,YAAW,MAAM,CAAC,KAAKP,QAAO,KAAKA,WAAUO,YAAW,KAAK,CAAC,MAAMP,QAAO,KAAKP,YAAW,KAAK,CAAC,GAAG,KAAKA,WAAUc,YAAW,KAAK,CAAC,MAAMd,QAAO,KAAKD,UAAS,KAAK,CAAC,GAAG,KAAKA,SAAQe,YAAW,KAAK,CAAC,MAAMf,MAAK,KAAKO,SAAQ,KAAK,CAAC,GAAG,KAAKA,QAAOQ,YAAW,KAAK,CAAC,MAAMR,KAAI;AAC/R,YAAIQ,YAAW,KAAK,MAAM;AACxB,cAAI,KAAKT,UAAS,KAAK,CAAC,GAAG,KAAKA,SAAQS,YAAW,KAAK,CAAC,MAAMT,MAAK;AAAA,QACtE;AACA,YAAI,KAAKD,WAAU,KAAK,CAAC,GAAG,KAAKA,UAASU,YAAW,KAAK,CAAC,MAAMV,OAAM,KAAKD,UAAS,KAAK,CAAC,GAAG,KAAK,CAAC,MAAMA,MAAK;AAC/G,UAAE,CAAC,IAAI;AACP,UAAE,CAAC,IAAI,CAAC,iBAAiB;AACzB,UAAE,CAAC,IAAI7B;AACP,eAAO,kBAAkB,MAAM,MAAM,CAAC;AAAA,MACxC;AAGA,eAAS,2BAA2B,kBAAkB;AACpD,YAAI,qBAAqB,QAAW;AAClC,iBAAO;AAAA,QACT;AACA,YAAI,OAAO,qBAAqB,YAAY;AAC1C,kBAAQ;AACR,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAGA,eAAS,4BAA4B,WAAW,OAAO;AACrD,YAAI,WAAW,SAAS,MAAM,QAAW;AACvC,iBAAO;AAAA,QACT;AACA,YAAI,UAAU,QAAW;AACvB,iBAAO,WAAW,SAAS;AAAA,QAC7B;AACA,mBAAW,SAAS,IAAI;AACxB,YAAI,cAAc,KAAK;AACrB,qBAAW,KAAK,QAAQ;AAAA,QAC1B;AACA,eAAO;AAAA,MACT;AACA,eAAS,SAAS,eAAe,eAAe;AAC9C,YAAI,CAAC,KAAK,QAAQ,GAAG;AACnB,iBAAO,KAAK,WAAW,EAAE,YAAY;AAAA,QACvC;AACA,YAAI,aAAa,OACf,KAAK,YACLA,SACA;AACF,YAAI,OAAO,kBAAkB,UAAU;AACrC,0BAAgB;AAChB,0BAAgB;AAAA,QAClB;AACA,YAAI,OAAO,kBAAkB,WAAW;AACtC,uBAAa;AAAA,QACf;AACA,YAAI,OAAO,kBAAkB,UAAU;AACrC,eAAK,OAAO,OAAO,CAAC,GAAG,YAAY,aAAa;AAChD,cAAI,cAAc,KAAK,QAAQ,cAAc,MAAM,MAAM;AACvD,eAAG,KAAK,cAAc,IAAI;AAAA,UAC5B;AAAA,QACF;AACA,QAAAA,UAAS,KAAK,WAAW;AACzB,iBAAS,eAAe,MAAM,CAAC,YAAY,IAAIA,OAAM;AACrD,YAAI,YAAY;AACd,mBAASA,QAAO,WAAW,CAAC,MAAM,MAAM;AAAA,QAC1C;AACA,eAAOA,QAAO,WAAW,MAAM;AAAA,MACjC;AACA,UAAI,QAAQ,KAAK;AACjB,eAAS,KAAK,GAAG;AACf,gBAAQ,IAAI,MAAM,IAAI,MAAM,CAAC;AAAA,MAC/B;AACA,eAAS,gBAAgB;AAQvB,YAAI,CAAC,KAAK,QAAQ,GAAG;AACnB,iBAAO,KAAK,WAAW,EAAE,YAAY;AAAA,QACvC;AACA,YAAIiC,WAAU,MAAM,KAAK,aAAa,IAAI,KACxCD,QAAO,MAAM,KAAK,KAAK,GACvBF,UAAS,MAAM,KAAK,OAAO,GAC3BJ,UACAD,QACAI,QACA,GACA,QAAQ,KAAK,UAAU,GACvB,WACA,QACA,UACA;AACF,YAAI,CAAC,OAAO;AAGV,iBAAO;AAAA,QACT;AAGA,QAAAH,WAAUb,UAASoB,WAAU,EAAE;AAC/B,QAAAR,SAAQZ,UAASa,WAAU,EAAE;AAC7B,QAAAO,YAAW;AACX,QAAAP,YAAW;AAGX,QAAAG,SAAQhB,UAASiB,UAAS,EAAE;AAC5B,QAAAA,WAAU;AAGV,YAAIG,WAAUA,SAAQ,QAAQ,CAAC,EAAE,QAAQ,UAAU,EAAE,IAAI;AACzD,oBAAY,QAAQ,IAAI,MAAM;AAC9B,iBAAS,KAAK,KAAK,OAAO,MAAM,KAAK,KAAK,IAAI,MAAM;AACpD,mBAAW,KAAK,KAAK,KAAK,MAAM,KAAK,KAAK,IAAI,MAAM;AACpD,kBAAU,KAAK,KAAK,aAAa,MAAM,KAAK,KAAK,IAAI,MAAM;AAC3D,eAAO,YAAY,OAAOJ,SAAQ,SAASA,SAAQ,MAAM,OAAOC,UAAS,SAASA,UAAS,MAAM,OAAOE,QAAO,WAAWA,QAAO,MAAM,OAAOP,UAASC,YAAWO,WAAU,MAAM,OAAOR,SAAQ,UAAUA,SAAQ,MAAM,OAAOC,WAAU,UAAUA,WAAU,MAAM,OAAOO,WAAU,UAAU,IAAI,MAAM;AAAA,MAC3S;AACA,UAAI,UAAU,SAAS;AACvB,cAAQ,UAAU;AAClB,cAAQ,MAAM;AACd,cAAQ,MAAM;AACd,cAAQ,WAAW;AACnB,cAAQ,KAAK;AACb,cAAQ,iBAAiB;AACzB,cAAQ,YAAY;AACpB,cAAQ,YAAY;AACpB,cAAQ,UAAU;AAClB,cAAQ,SAAS;AACjB,cAAQ,UAAU;AAClB,cAAQ,WAAW;AACnB,cAAQ,aAAa;AACrB,cAAQ,UAAU;AAClB,cAAQ,UAAU;AAClB,cAAQ,UAAU;AAClB,cAAQ,QAAQ;AAChB,cAAQ,MAAM;AACd,cAAQ,eAAe;AACvB,cAAQ,UAAU;AAClB,cAAQ,UAAU;AAClB,cAAQ,QAAQ;AAChB,cAAQ,OAAO;AACf,cAAQ,QAAQ;AAChB,cAAQ,SAAS;AACjB,cAAQ,QAAQ;AAChB,cAAQ,WAAW;AACnB,cAAQ,cAAc;AACtB,cAAQ,WAAW;AACnB,cAAQ,SAAS;AACjB,cAAQ,SAASjC;AACjB,cAAQ,aAAa;AACrB,cAAQ,cAAc,UAAU,uFAAuF,aAAa;AACpI,cAAQ,OAAO;AAIf,qBAAe,KAAK,GAAG,GAAG,MAAM;AAChC,qBAAe,KAAK,GAAG,GAAG,SAAS;AAInC,oBAAc,KAAKmB,YAAW;AAC9B,oBAAc,KAAK,cAAc;AACjC,oBAAc,KAAK,SAAU,OAAO,OAAO,QAAQ;AACjD,eAAO,KAAK,IAAI,KAAK,WAAW,KAAK,IAAI,GAAI;AAAA,MAC/C,CAAC;AACD,oBAAc,KAAK,SAAU,OAAO,OAAO,QAAQ;AACjD,eAAO,KAAK,IAAI,KAAK,MAAM,KAAK,CAAC;AAAA,MACnC,CAAC;AAID,YAAM,UAAU;AAChB,sBAAgB,WAAW;AAC3B,YAAM,KAAKoB;AACX,YAAM,MAAM;AACZ,YAAM,MAAM;AACZ,YAAM,MAAM;AACZ,YAAM,MAAM;AACZ,YAAM,OAAO;AACb,YAAM,SAAS;AACf,YAAM,SAAS;AACf,YAAM,SAAS;AACf,YAAM,UAAU;AAChB,YAAM,WAAW;AACjB,YAAM,WAAW;AACjB,YAAM,WAAW;AACjB,YAAM,YAAY;AAClB,YAAM,aAAa;AACnB,YAAM,aAAa;AACnB,YAAM,cAAc;AACpB,YAAM,cAAc;AACpB,YAAM,eAAe;AACrB,YAAM,eAAe;AACrB,YAAM,UAAU;AAChB,YAAM,gBAAgB;AACtB,YAAM,iBAAiB;AACvB,YAAM,uBAAuB;AAC7B,YAAM,wBAAwB;AAC9B,YAAM,iBAAiB;AACvB,YAAM,YAAYA;AAGlB,YAAM,YAAY;AAAA,QAChB,gBAAgB;AAAA;AAAA,QAEhB,wBAAwB;AAAA;AAAA,QAExB,mBAAmB;AAAA;AAAA,QAEnB,MAAM;AAAA;AAAA,QAEN,MAAM;AAAA;AAAA,QAEN,cAAc;AAAA;AAAA,QAEd,SAAS;AAAA;AAAA,QAET,MAAM;AAAA;AAAA,QAEN,OAAO;AAAA;AAAA,MACT;AACA,aAAO;AAAA,IACT,CAAC;AAAA;AAAA;;;ACl6ID,IAAM,MAAM,CAAC,SAAS;AACtB,IAAM,MAAM,CAAC,QAAQ;AACrB,IAAM,MAAM,CAAC,SAAS;AACtB,IAAM,MAAM,CAAC,GAAG;AAChB,IAAM,MAAM,SAAO;AAAA,EACjB,YAAY;AACd;AACA,SAAS,gDAAgD,IAAI,KAAK;AAChE,MAAI,KAAK,GAAG;AACV,IAAG,yBAAe,GAAG,OAAO,CAAC;AAC7B,IAAG,6BAAmB,GAAG,CAAC;AAC1B,IAAG,uBAAa;AAAA,EAClB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc;AAChC,IAAG,oBAAU;AACb,IAAG,qBAAW,oBAAoB,OAAO,cAAc,EAAE,2BAA8B,0BAAgB,GAAG,KAAK,OAAO,WAAW,CAAC;AAAA,EACpI;AACF;AACA,SAAS,gDAAgD,IAAI,KAAK;AAChE,MAAI,KAAK,GAAG;AACV,IAAG,yBAAe,GAAG,OAAO,CAAC;AAC7B,IAAG,6BAAmB,GAAG,CAAC;AAC1B,IAAG,uBAAa;AAAA,EAClB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc;AAChC,IAAG,oBAAU;AACb,IAAG,qBAAW,oBAAoB,OAAO,cAAc,EAAE,2BAA8B,0BAAgB,GAAG,KAAK,OAAO,WAAW,CAAC;AAAA,EACpI;AACF;AACA,IAAM,MAAM,CAAC,aAAa;AAC1B,IAAM,MAAM,CAAC,aAAa;AAC1B,IAAM,MAAM,CAAC,IAAI,IAAI,QAAQ;AAAA,EAC3B,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO;AACT;AACA,IAAM,MAAM,CAAC,IAAI,QAAQ;AAAA,EACvB,OAAO;AAAA,EACP,OAAO;AACT;AACA,IAAM,MAAM,CAAC,IAAI,IAAI,IAAI,QAAQ;AAAA,EAC/B,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO;AAAA,EACP,YAAY;AACd;AACA,SAAS,uDAAuD,IAAI,KAAK;AACvE,MAAI,KAAK,GAAG;AACV,IAAG,yBAAe,GAAG,OAAO,EAAE;AAC9B,IAAG,iBAAO,CAAC;AACX,IAAG,uBAAa;AAAA,EAClB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc,CAAC;AACjC,IAAG,oBAAU;AACb,IAAG,4BAAkB,OAAO,WAAW;AAAA,EACzC;AACF;AACA,SAAS,uDAAuD,IAAI,KAAK;AAAC;AAC1E,SAAS,yCAAyC,IAAI,KAAK;AACzD,MAAI,KAAK,GAAG;AACV,IAAG,qBAAW,GAAG,wDAAwD,GAAG,GAAG,eAAe,MAAM,GAAM,gCAAsB,EAAE,GAAG,wDAAwD,GAAG,GAAG,eAAe,EAAE;AAAA,EACtN;AACA,MAAI,KAAK,GAAG;AACV,UAAM,gCAAmC,sBAAY,CAAC;AACtD,UAAM,SAAY,wBAAc;AAChC,IAAG,oBAAU,CAAC;AACd,IAAG,qBAAW,oBAAoB,OAAO,uBAAuB,6BAA6B;AAAA,EAC/F;AACF;AACA,SAAS,6DAA6D,IAAI,KAAK;AAC7E,MAAI,KAAK,GAAG;AACV,UAAM,MAAS,2BAAiB;AAChC,IAAG,yBAAe,GAAG,QAAQ,EAAE;AAC/B,IAAG,qBAAW,SAAS,SAAS,qFAAqF;AACnH,MAAG,wBAAc,GAAG;AACpB,YAAM,UAAa,wBAAc,EAAE;AACnC,YAAM,SAAY,wBAAc,CAAC;AACjC,aAAU,sBAAY,OAAO,SAAS,OAAO,CAAC;AAAA,IAChD,CAAC;AACD,IAAG,iBAAO,GAAG,MAAM;AACnB,IAAG,uBAAa;AAChB,IAAG,oBAAU,GAAG,QAAQ,EAAE;AAAA,EAC5B;AACA,MAAI,KAAK,GAAG;AACV,UAAM,UAAa,wBAAc,EAAE;AACnC,UAAM,SAAY,wBAAc,CAAC;AACjC,IAAG,oBAAU,CAAC;AACd,IAAG,qBAAW,eAAe,QAAQ,KAAK,EAAE,UAAU,OAAO,UAAU;AAAA,EACzE;AACF;AACA,SAAS,6DAA6D,IAAI,KAAK;AAAC;AAChF,SAAS,+CAA+C,IAAI,KAAK;AAC/D,MAAI,KAAK,GAAG;AACV,IAAG,yBAAe,GAAG,OAAO,EAAE;AAC9B,IAAG,qBAAW,GAAG,8DAA8D,GAAG,GAAG,eAAe,MAAM,GAAM,gCAAsB,EAAE,GAAG,8DAA8D,GAAG,GAAG,eAAe,EAAE;AAChO,IAAG,uBAAa;AAAA,EAClB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,UAAU,IAAI;AACpB,UAAM,0BAA6B,sBAAY,CAAC;AAChD,UAAM,SAAY,wBAAc,CAAC;AACjC,IAAG,sBAAY,qBAAqB,QAAQ,QAAQ;AACpD,IAAG,oBAAU,CAAC;AACd,IAAG,qBAAW,oBAAoB,OAAO,iBAAiB,uBAAuB,EAAE,2BAA8B,0BAAgB,GAAG,KAAK,QAAQ,OAAO,OAAO,WAAW,QAAQ,KAAK,CAAC;AAAA,EAC1L;AACF;AACA,SAAS,yCAAyC,IAAI,KAAK;AACzD,MAAI,KAAK,GAAG;AACV,IAAG,2BAAiB,GAAG,gDAAgD,GAAG,GAAG,OAAO,IAAO,8BAAoB,EAAE,eAAe,IAAI;AAAA,EACtI;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc;AAChC,IAAG,qBAAW,OAAO,aAAa;AAAA,EACpC;AACF;AACA,SAAS,uDAAuD,IAAI,KAAK;AAAC;AAC1E,SAAS,yCAAyC,IAAI,KAAK;AACzD,MAAI,KAAK,GAAG;AACV,IAAG,qBAAW,GAAG,wDAAwD,GAAG,GAAG,eAAe,EAAE;AAAA,EAClG;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc;AAChC,IAAG,qBAAW,oBAAoB,OAAO,kBAAkB,EAAE,2BAA8B,0BAAgB,GAAG,KAAK,OAAO,gBAAgB,OAAO,SAAS,CAAC;AAAA,EAC7J;AACF;AACA,SAAS,uDAAuD,IAAI,KAAK;AACvE,MAAI,KAAK,GAAG;AACV,IAAG,oBAAU,GAAG,OAAO,EAAE;AAAA,EAC3B;AACF;AACA,SAAS,uDAAuD,IAAI,KAAK;AAAC;AAC1E,SAAS,yCAAyC,IAAI,KAAK;AACzD,MAAI,KAAK,GAAG;AACV,IAAG,qBAAW,GAAG,wDAAwD,GAAG,GAAG,eAAe,MAAM,GAAM,gCAAsB,EAAE,GAAG,wDAAwD,GAAG,GAAG,eAAe,EAAE;AAAA,EACtN;AACA,MAAI,KAAK,GAAG;AACV,UAAM,mCAAsC,sBAAY,CAAC;AACzD,UAAM,SAAY,wBAAc;AAChC,IAAG,oBAAU,CAAC;AACd,IAAG,qBAAW,oBAAoB,OAAO,0BAA0B,gCAAgC;AAAA,EACrG;AACF;AACA,SAAS,yCAAyC,IAAI,KAAK;AACzD,MAAI,KAAK,GAAG;AACV,IAAG,yBAAe,GAAG,QAAQ,IAAI,CAAC,EAAE,GAAG,QAAQ,EAAE;AACjD,IAAG,iBAAO,GAAG,MAAM;AACnB,IAAG,uBAAa,EAAE;AAAA,EACpB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc;AAChC,IAAG,gCAAsB,SAAS,OAAO,YAAY;AAAA,EACvD;AACF;AACA,SAAS,8DAA8D,IAAI,KAAK;AAC9E,MAAI,KAAK,GAAG;AACV,IAAG,oBAAU,GAAG,QAAQ,EAAE;AAAA,EAC5B;AACA,MAAI,KAAK,GAAG;AACV,UAAM,WAAc,wBAAc,EAAE;AACpC,UAAM,SAAY,wBAAc,CAAC;AACjC,IAAG,qBAAW,eAAe,SAAS,KAAK,EAAE,UAAU,OAAO,UAAU;AAAA,EAC1E;AACF;AACA,SAAS,8DAA8D,IAAI,KAAK;AAAC;AACjF,SAAS,gDAAgD,IAAI,KAAK;AAChE,MAAI,KAAK,GAAG;AACV,UAAM,OAAU,2BAAiB;AACjC,IAAG,yBAAe,GAAG,OAAO,EAAE;AAC9B,IAAG,qBAAW,SAAS,SAAS,uEAAuE;AACrG,YAAM,WAAc,wBAAc,IAAI,EAAE;AACxC,YAAM,SAAY,wBAAc,CAAC;AACjC,aAAU,sBAAY,OAAO,WAAW,QAAQ,CAAC;AAAA,IACnD,CAAC,EAAE,aAAa,SAAS,2EAA2E;AAClG,YAAM,WAAc,wBAAc,IAAI,EAAE;AACxC,YAAM,SAAY,wBAAc,CAAC;AACjC,aAAU,sBAAY,OAAO,YAAY,QAAQ,CAAC;AAAA,IACpD,CAAC;AACD,IAAG,qBAAW,GAAG,+DAA+D,GAAG,GAAG,eAAe,MAAM,GAAM,gCAAsB,EAAE,GAAG,+DAA+D,GAAG,GAAG,eAAe,EAAE;AAClO,IAAG,uBAAa;AAAA,EAClB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,WAAW,IAAI;AACrB,UAAM,4BAA+B,sBAAY,CAAC;AAClD,UAAM,SAAY,wBAAc,CAAC;AACjC,IAAG,sBAAY,sBAAsB,SAAS,QAAQ,EAAE,sBAAsB,SAAS,QAAQ,EAAE,eAAe,SAAS,QAAQ,EAAE,aAAa,CAAC,SAAS,QAAQ,EAAE,mBAAmB,CAAC,CAAC,SAAS,MAAM,EAAE,oBAAoB,aAAa,OAAO,UAAU,UAAU;AACtQ,IAAG,sBAAY,QAAQ,SAAS,WAAW,UAAU,QAAQ,EAAE,iBAAiB,SAAS,QAAQ,EAAE,MAAM,YAAY,OAAO,OAAO,SAAS,MAAM;AAClJ,IAAG,oBAAU,CAAC;AACd,IAAG,qBAAW,oBAAoB,SAAS,WAAW,OAAO,oBAAoB,4BAA4B,OAAO,kBAAkB,yBAAyB,EAAE,2BAA8B,0BAAgB,IAAI,KAAK,SAAS,OAAO,UAAU,SAAS,OAAO,OAAO,UAAU,CAAC;AAAA,EACtR;AACF;AACA,SAAS,sEAAsE,IAAI,KAAK;AACtF,MAAI,KAAK,GAAG;AACV,IAAG,yBAAe,GAAG,MAAM,EAAE,GAAG,QAAQ,EAAE;AAC1C,IAAG,iBAAO,CAAC;AACX,IAAG,uBAAa;AAChB,IAAG,iBAAO,CAAC;AACX,IAAG,uBAAa;AAAA,EAClB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc,CAAC;AACjC,IAAG,oBAAU,CAAC;AACd,IAAG,4BAAkB,OAAO,UAAU;AACtC,IAAG,oBAAU;AACb,IAAG,6BAAmB,KAAM,OAAO,YAAY,GAAI;AAAA,EACrD;AACF;AACA,SAAS,sEAAsE,IAAI,KAAK;AAAC;AACzF,SAAS,wDAAwD,IAAI,KAAK;AACxE,MAAI,KAAK,GAAG;AACV,UAAM,OAAU,2BAAiB;AACjC,IAAG,yBAAe,GAAG,OAAO,EAAE;AAC9B,IAAG,qBAAW,aAAa,SAAS,mFAAmF;AACrH,MAAG,wBAAc,IAAI;AACrB,YAAM,SAAY,wBAAc,CAAC;AACjC,aAAU,sBAAY,OAAO,UAAU,WAAW,CAAC;AAAA,IACrD,CAAC,EAAE,SAAS,SAAS,+EAA+E;AAClG,MAAG,wBAAc,IAAI;AACrB,YAAM,SAAY,wBAAc,CAAC;AACjC,aAAU,sBAAY,OAAO,UAAU,CAAC;AAAA,IAC1C,CAAC;AACD,IAAG,qBAAW,GAAG,uEAAuE,GAAG,GAAG,eAAe,MAAM,GAAM,gCAAsB,EAAE,GAAG,uEAAuE,GAAG,GAAG,eAAe,EAAE;AAClP,IAAG,uBAAa;AAAA,EAClB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,yBAA4B,sBAAY,CAAC;AAC/C,UAAM,SAAY,wBAAc,CAAC;AACjC,IAAG,sBAAY,oBAAoB,CAAC,OAAO,UAAU,UAAU;AAC/D,IAAG,oBAAU,CAAC;AACd,IAAG,qBAAW,oBAAoB,OAAO,eAAe,sBAAsB,EAAE,2BAA8B,0BAAgB,GAAG,KAAK,OAAO,UAAU,CAAC;AAAA,EAC1J;AACF;AACA,SAAS,sEAAsE,IAAI,KAAK;AACtF,MAAI,KAAK,GAAG;AACV,IAAG,yBAAe,GAAG,OAAO,EAAE;AAC9B,IAAG,iBAAO,CAAC;AACX,IAAG,uBAAa;AAAA,EAClB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc,CAAC;AACjC,IAAG,oBAAU;AACb,IAAG,4BAAkB,OAAO,YAAY;AAAA,EAC1C;AACF;AACA,SAAS,sEAAsE,IAAI,KAAK;AAAC;AACzF,SAAS,wDAAwD,IAAI,KAAK;AACxE,MAAI,KAAK,GAAG;AACV,IAAG,qBAAW,GAAG,uEAAuE,GAAG,GAAG,eAAe,MAAM,GAAM,gCAAsB,EAAE,GAAG,uEAAuE,GAAG,GAAG,eAAe,EAAE;AAAA,EACpP;AACA,MAAI,KAAK,GAAG;AACV,UAAM,8BAAiC,sBAAY,CAAC;AACpD,UAAM,SAAY,wBAAc,CAAC;AACjC,IAAG,oBAAU,CAAC;AACd,IAAG,qBAAW,oBAAoB,OAAO,oBAAoB,2BAA2B,EAAE,2BAA8B,0BAAgB,GAAG,KAAK,OAAO,UAAU,CAAC;AAAA,EACpK;AACF;AACA,SAAS,sEAAsE,IAAI,KAAK;AACtF,MAAI,KAAK,GAAG;AACV,IAAG,yBAAe,GAAG,OAAO,EAAE;AAC9B,IAAG,iBAAO,CAAC;AACX,IAAG,uBAAa;AAAA,EAClB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc,CAAC;AACjC,IAAG,oBAAU;AACb,IAAG,4BAAkB,OAAO,gBAAgB;AAAA,EAC9C;AACF;AACA,SAAS,sEAAsE,IAAI,KAAK;AAAC;AACzF,SAAS,wDAAwD,IAAI,KAAK;AACxE,MAAI,KAAK,GAAG;AACV,IAAG,qBAAW,GAAG,uEAAuE,GAAG,GAAG,eAAe,MAAM,GAAM,gCAAsB,EAAE,GAAG,uEAAuE,GAAG,GAAG,eAAe,EAAE;AAAA,EACpP;AACA,MAAI,KAAK,GAAG;AACV,UAAM,kCAAqC,sBAAY,CAAC;AACxD,UAAM,SAAY,wBAAc,CAAC;AACjC,IAAG,oBAAU,CAAC;AACd,IAAG,qBAAW,oBAAoB,OAAO,wBAAwB,+BAA+B;AAAA,EAClG;AACF;AACA,SAAS,sEAAsE,IAAI,KAAK;AACtF,MAAI,KAAK,GAAG;AACV,IAAG,yBAAe,GAAG,OAAO,EAAE;AAC9B,IAAG,iBAAO,CAAC;AACX,IAAG,uBAAa;AAAA,EAClB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc,CAAC;AACjC,IAAG,oBAAU;AACb,IAAG,4BAAkB,OAAO,WAAW;AAAA,EACzC;AACF;AACA,SAAS,sEAAsE,IAAI,KAAK;AAAC;AACzF,SAAS,wDAAwD,IAAI,KAAK;AACxE,MAAI,KAAK,GAAG;AACV,IAAG,qBAAW,GAAG,uEAAuE,GAAG,GAAG,eAAe,MAAM,GAAM,gCAAsB,EAAE,GAAG,uEAAuE,GAAG,GAAG,eAAe,EAAE;AAAA,EACpP;AACA,MAAI,KAAK,GAAG;AACV,UAAM,iCAAoC,sBAAY,CAAC;AACvD,UAAM,SAAY,wBAAc,CAAC;AACjC,IAAG,oBAAU,CAAC;AACd,IAAG,qBAAW,oBAAoB,OAAO,uBAAuB,8BAA8B,EAAE,2BAA8B,0BAAgB,GAAG,KAAK,OAAO,UAAU,CAAC;AAAA,EAC1K;AACF;AACA,SAAS,0CAA0C,IAAI,KAAK;AAC1D,MAAI,KAAK,GAAG;AACV,UAAM,MAAS,2BAAiB;AAChC,IAAG,yBAAe,GAAG,qBAAqB,EAAE;AAC5C,IAAG,qBAAW,UAAU,SAAS,8EAA8E,QAAQ;AACrH,MAAG,wBAAc,GAAG;AACpB,YAAM,SAAY,wBAAc;AAChC,aAAU,sBAAY,OAAO,gBAAgB,MAAM;AAAA,IACrD,CAAC,EAAE,UAAU,SAAS,8EAA8E,QAAQ;AAC1G,MAAG,wBAAc,GAAG;AACpB,YAAM,SAAY,wBAAc;AAChC,aAAU,sBAAY,OAAO,OAAO,KAAK,MAAM,CAAC;AAAA,IAClD,CAAC,EAAE,eAAe,SAAS,mFAAmF,QAAQ;AACpH,MAAG,wBAAc,GAAG;AACpB,YAAM,SAAY,wBAAc;AAChC,aAAU,sBAAY,OAAO,YAAY,KAAK,MAAM,CAAC;AAAA,IACvD,CAAC,EAAE,gBAAgB,SAAS,sFAAsF;AAChH,MAAG,wBAAc,GAAG;AACpB,YAAM,SAAY,wBAAc;AAChC,aAAU,sBAAY,OAAO,MAAM,CAAC;AAAA,IACtC,CAAC;AACD,IAAG,kCAAwB,CAAC;AAC5B,IAAG,2BAAiB,GAAG,iDAAiD,GAAG,IAAI,OAAO,IAAO,8BAAoB,EAAE,eAAe,IAAI;AACtI,IAAG,qBAAW,GAAG,yDAAyD,GAAG,GAAG,OAAO,EAAE;AACzF,IAAG,gCAAsB;AACzB,IAAG,qBAAW,GAAG,yDAAyD,GAAG,CAAC,EAAE,GAAG,yDAAyD,GAAG,CAAC,EAAE,GAAG,yDAAyD,GAAG,CAAC;AAClN,IAAG,uBAAa;AAAA,EAClB;AACA,MAAI,KAAK,GAAG;AACV,UAAM,SAAY,wBAAc;AAChC,IAAG,sBAAY,sBAAsB,OAAO,QAAQ;AACpD,IAAG,qBAAW,iBAAiB,OAAO,aAAa,EAAE,gBAAgB,OAAO,YAAY,EAAE,YAAY,OAAO,QAAQ,EAAE,YAAY,OAAO,gBAAgB,EAAE,kBAAkB,OAAO,cAAc,EAAE,kBAAkB,OAAO,cAAc,EAAE,eAAe,OAAO,UAAU,EAAE,SAAS,OAAO,UAAU,aAAa,EAAE,cAAc,OAAO,UAAU,UAAU,EAAE,WAAW,OAAO,WAAW,OAAO,UAAU,OAAO,UAAU,OAAO,UAAU,IAAI,EAAE,MAAM,OAAO,UAAU;AACjd,IAAG,oBAAU,CAAC;AACd,IAAG,qBAAW,OAAO,aAAa;AAClC,IAAG,oBAAU,CAAC;AACd,IAAG,wBAAc,OAAO,aAAa,IAAI,EAAE;AAC3C,IAAG,oBAAU;AACb,IAAG,wBAAc,OAAO,iBAAiB,IAAI,IAAI,EAAE;AACnD,IAAG,oBAAU;AACb,IAAG,wBAAc,OAAO,iBAAiB,IAAI,IAAI,EAAE;AACnD,IAAG,oBAAU;AACb,IAAG,wBAAc,OAAO,WAAW,OAAO,UAAU,cAAc,WAAW,IAAI,IAAI,EAAE;AAAA,EACzF;AACF;AACA,IAAM,mBAAmB;AACzB,IAAM,sBAAsB,OAAO,iBAAiB,MAAM;AAC1D,IAAM,cAAc;AAAA,EAClB,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AACP;AACA,SAAS,WAAW,OAAO;AACzB,SAAO,SAAS,oBAAoB,KAAK,KAAK,IAAI,MAAM,QAAQ,kBAAkB,SAAO,YAAY,GAAG,CAAC,IAAI;AAC/G;AACA,SAAS,UAAU,OAAO;AACxB,SAAO,UAAU,UAAa,UAAU;AAC1C;AACA,SAAS,SAAS,OAAO;AACvB,SAAO,OAAO,UAAU,YAAY,UAAU,KAAK;AACrD;AACA,SAAS,UAAU,OAAO;AACxB,SAAO,iBAAiB;AAC1B;AACA,SAAS,WAAW,OAAO;AACzB,SAAO,iBAAiB;AAC1B;AACA,IAAM,uBAAN,MAAM,sBAAqB;AAAA,EACzB,YAAY,SAAS;AACnB,SAAK,UAAU;AACf,SAAK,SAAS;AAAA,EAChB;AAAA,EACA,YAAY,SAAS;AACnB,SAAK,QAAQ,cAAc,YAAY,KAAK,SAAS,WAAW,KAAK,WAAW,IAAI,KAAK;AAAA,EAC3F;AAAA,EACA,OAAO;AACL,SAAK,YAAO,SAAS,6BAA6B,mBAAmB;AACnE,aAAO,KAAK,qBAAqB,uBAAyB,4BAAqB,UAAU,CAAC;AAAA,IAC5F;AAAA,EACF;AAAA,EACA,OAAO;AACL,SAAK,YAAsB,gBAAG,4BAAkB;AAAA,MAC9C,MAAM;AAAA,MACN,WAAW,CAAC,CAAC,IAAI,eAAe,EAAE,CAAC;AAAA,MACnC,QAAQ;AAAA,QACN,aAAa;AAAA,QACb,QAAQ;AAAA,MACV;AAAA,MACA,YAAY;AAAA,MACZ,UAAU,CAAI,8BAAoB;AAAA,IACpC,CAAC;AAAA,EACH;AACF;AAAA,CACC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,sBAAsB,CAAC;AAAA,IAC7F,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,MACL,UAAU;AAAA,MACV,YAAY;AAAA,IACd,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,CAAC;AAAA,IACT,MAAS;AAAA,EACX,CAAC,GAAG;AAAA,IACF,aAAa,CAAC;AAAA,MACZ,MAAM;AAAA,IACR,CAAC;AAAA,IACD,QAAQ,CAAC;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AAAA,EACH,CAAC;AACH,GAAG;AACH,IAAM,4BAAN,MAAM,2BAA0B;AAAA,EAC9B,YAAY,UAAU;AACpB,SAAK,WAAW;AAAA,EAClB;AAAA,EACA,OAAO;AACL,SAAK,YAAO,SAAS,kCAAkC,mBAAmB;AACxE,aAAO,KAAK,qBAAqB,4BAA8B,4BAAqB,WAAW,CAAC;AAAA,IAClG;AAAA,EACF;AAAA,EACA,OAAO;AACL,SAAK,YAAsB,gBAAG,4BAAkB;AAAA,MAC9C,MAAM;AAAA,MACN,WAAW,CAAC,CAAC,IAAI,iBAAiB,EAAE,CAAC;AAAA,MACrC,YAAY;AAAA,IACd,CAAC;AAAA,EACH;AACF;AAAA,CACC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,2BAA2B,CAAC;AAAA,IAClG,MAAM;AAAA,IACN,MAAM,CAAC;AAAA;AAAA,MAEL,UAAU;AAAA,MACV,YAAY;AAAA,IACd,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,CAAC;AAAA,IACT,MAAS;AAAA,EACX,CAAC,GAAG,IAAI;AACV,GAAG;AACH,IAAM,8BAAN,MAAM,6BAA4B;AAAA,EAChC,YAAY,UAAU;AACpB,SAAK,WAAW;AAAA,EAClB;AAAA,EACA,OAAO;AACL,SAAK,YAAO,SAAS,oCAAoC,mBAAmB;AAC1E,aAAO,KAAK,qBAAqB,8BAAgC,4BAAqB,WAAW,CAAC;AAAA,IACpG;AAAA,EACF;AAAA,EACA,OAAO;AACL,SAAK,YAAsB,gBAAG,4BAAkB;AAAA,MAC9C,MAAM;AAAA,MACN,WAAW,CAAC,CAAC,IAAI,mBAAmB,EAAE,CAAC;AAAA,MACvC,YAAY;AAAA,IACd,CAAC;AAAA,EACH;AACF;AAAA,CACC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,6BAA6B,CAAC;AAAA,IACpG,MAAM;AAAA,IACN,MAAM,CAAC;AAAA;AAAA,MAEL,UAAU;AAAA,MACV,YAAY;AAAA,IACd,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,CAAC;AAAA,IACT,MAAS;AAAA,EACX,CAAC,GAAG,IAAI;AACV,GAAG;AACH,IAAM,2BAAN,MAAM,0BAAyB;AAAA,EAC7B,YAAY,UAAU;AACpB,SAAK,WAAW;AAAA,EAClB;AAAA,EACA,OAAO;AACL,SAAK,YAAO,SAAS,iCAAiC,mBAAmB;AACvE,aAAO,KAAK,qBAAqB,2BAA6B,4BAAqB,WAAW,CAAC;AAAA,IACjG;AAAA,EACF;AAAA,EACA,OAAO;AACL,SAAK,YAAsB,gBAAG,4BAAkB;AAAA,MAC9C,MAAM;AAAA,MACN,WAAW,CAAC,CAAC,IAAI,gBAAgB,EAAE,CAAC;AAAA,MACpC,YAAY;AAAA,IACd,CAAC;AAAA,EACH;AACF;AAAA,CACC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,0BAA0B,CAAC;AAAA,IACjG,MAAM;AAAA,IACN,MAAM,CAAC;AAAA;AAAA,MAEL,UAAU;AAAA,MACV,YAAY;AAAA,IACd,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,CAAC;AAAA,IACT,MAAS;AAAA,EACX,CAAC,GAAG,IAAI;AACV,GAAG;AACH,IAAM,gCAAN,MAAM,+BAA8B;AAAA,EAClC,YAAY,UAAU;AACpB,SAAK,WAAW;AAAA,EAClB;AAAA,EACA,OAAO;AACL,SAAK,YAAO,SAAS,sCAAsC,mBAAmB;AAC5E,aAAO,KAAK,qBAAqB,gCAAkC,4BAAqB,WAAW,CAAC;AAAA,IACtG;AAAA,EACF;AAAA,EACA,OAAO;AACL,SAAK,YAAsB,gBAAG,4BAAkB;AAAA,MAC9C,MAAM;AAAA,MACN,WAAW,CAAC,CAAC,IAAI,sBAAsB,EAAE,CAAC;AAAA,MAC1C,YAAY;AAAA,IACd,CAAC;AAAA,EACH;AACF;AAAA,CACC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,+BAA+B,CAAC;AAAA,IACtG,MAAM;AAAA,IACN,MAAM,CAAC;AAAA;AAAA,MAEL,UAAU;AAAA,MACV,YAAY;AAAA,IACd,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,CAAC;AAAA,IACT,MAAS;AAAA,EACX,CAAC,GAAG,IAAI;AACV,GAAG;AACH,IAAM,4BAAN,MAAM,2BAA0B;AAAA,EAC9B,YAAY,UAAU;AACpB,SAAK,WAAW;AAAA,EAClB;AAAA,EACA,OAAO;AACL,SAAK,YAAO,SAAS,kCAAkC,mBAAmB;AACxE,aAAO,KAAK,qBAAqB,4BAA8B,4BAAqB,WAAW,CAAC;AAAA,IAClG;AAAA,EACF;AAAA,EACA,OAAO;AACL,SAAK,YAAsB,gBAAG,4BAAkB;AAAA,MAC9C,MAAM;AAAA,MACN,WAAW,CAAC,CAAC,IAAI,iBAAiB,EAAE,CAAC;AAAA,MACrC,YAAY;AAAA,IACd,CAAC;AAAA,EACH;AACF;AAAA,CACC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,2BAA2B,CAAC;AAAA,IAClG,MAAM;AAAA,IACN,MAAM,CAAC;AAAA;AAAA,MAEL,UAAU;AAAA,MACV,YAAY;AAAA,IACd,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,CAAC;AAAA,IACT,MAAS;AAAA,EACX,CAAC,GAAG,IAAI;AACV,GAAG;AACH,IAAM,4BAAN,MAAM,2BAA0B;AAAA,EAC9B,YAAY,UAAU;AACpB,SAAK,WAAW;AAAA,EAClB;AAAA,EACA,OAAO;AACL,SAAK,YAAO,SAAS,kCAAkC,mBAAmB;AACxE,aAAO,KAAK,qBAAqB,4BAA8B,4BAAqB,WAAW,CAAC;AAAA,IAClG;AAAA,EACF;AAAA,EACA,OAAO;AACL,SAAK,YAAsB,gBAAG,4BAAkB;AAAA,MAC9C,MAAM;AAAA,MACN,WAAW,CAAC,CAAC,IAAI,iBAAiB,EAAE,CAAC;AAAA,MACrC,YAAY;AAAA,IACd,CAAC;AAAA,EACH;AACF;AAAA,CACC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,2BAA2B,CAAC;AAAA,IAClG,MAAM;AAAA,IACN,MAAM,CAAC;AAAA;AAAA,MAEL,UAAU;AAAA,MACV,YAAY;AAAA,IACd,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,CAAC;AAAA,IACT,MAAS;AAAA,EACX,CAAC,GAAG,IAAI;AACV,GAAG;AACH,IAAM,8BAAN,MAAM,6BAA4B;AAAA,EAChC,YAAY,UAAU;AACpB,SAAK,WAAW;AAAA,EAClB;AAAA,EACA,OAAO;AACL,SAAK,YAAO,SAAS,oCAAoC,mBAAmB;AAC1E,aAAO,KAAK,qBAAqB,8BAAgC,4BAAqB,WAAW,CAAC;AAAA,IACpG;AAAA,EACF;AAAA,EACA,OAAO;AACL,SAAK,YAAsB,gBAAG,4BAAkB;AAAA,MAC9C,MAAM;AAAA,MACN,WAAW,CAAC,CAAC,IAAI,mBAAmB,EAAE,CAAC;AAAA,MACvC,YAAY;AAAA,IACd,CAAC;AAAA,EACH;AACF;AAAA,CACC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,6BAA6B,CAAC;AAAA,IACpG,MAAM;AAAA,IACN,MAAM,CAAC;AAAA;AAAA,MAEL,UAAU;AAAA,MACV,YAAY;AAAA,IACd,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,CAAC;AAAA,IACT,MAAS;AAAA,EACX,CAAC,GAAG,IAAI;AACV,GAAG;AACH,IAAM,iCAAN,MAAM,gCAA+B;AAAA,EACnC,YAAY,UAAU;AACpB,SAAK,WAAW;AAAA,EAClB;AAAA,EACA,OAAO;AACL,SAAK,YAAO,SAAS,uCAAuC,mBAAmB;AAC7E,aAAO,KAAK,qBAAqB,iCAAmC,4BAAqB,WAAW,CAAC;AAAA,IACvG;AAAA,EACF;AAAA,EACA,OAAO;AACL,SAAK,YAAsB,gBAAG,4BAAkB;AAAA,MAC9C,MAAM;AAAA,MACN,WAAW,CAAC,CAAC,IAAI,sBAAsB,EAAE,CAAC;AAAA,MAC1C,YAAY;AAAA,IACd,CAAC;AAAA,EACH;AACF;AAAA,CACC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,gCAAgC,CAAC;AAAA,IACvG,MAAM;AAAA,IACN,MAAM,CAAC;AAAA;AAAA,MAEL,UAAU;AAAA,MACV,YAAY;AAAA,IACd,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,CAAC;AAAA,IACT,MAAS;AAAA,EACX,CAAC,GAAG,IAAI;AACV,GAAG;AACH,IAAM,kCAAN,MAAM,iCAAgC;AAAA,EACpC,YAAY,UAAU;AACpB,SAAK,WAAW;AAAA,EAClB;AAAA,EACA,OAAO;AACL,SAAK,YAAO,SAAS,wCAAwC,mBAAmB;AAC9E,aAAO,KAAK,qBAAqB,kCAAoC,4BAAqB,WAAW,CAAC;AAAA,IACxG;AAAA,EACF;AAAA,EACA,OAAO;AACL,SAAK,YAAsB,gBAAG,4BAAkB;AAAA,MAC9C,MAAM;AAAA,MACN,WAAW,CAAC,CAAC,IAAI,uBAAuB,EAAE,CAAC;AAAA,MAC3C,YAAY;AAAA,IACd,CAAC;AAAA,EACH;AACF;AAAA,CACC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,iCAAiC,CAAC;AAAA,IACxG,MAAM;AAAA,IACN,MAAM,CAAC;AAAA;AAAA,MAEL,UAAU;AAAA,MACV,YAAY;AAAA,IACd,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,CAAC;AAAA,IACT,MAAS;AAAA,EACX,CAAC,GAAG,IAAI;AACV,GAAG;AACH,IAAM,iCAAN,MAAM,gCAA+B;AAAA,EACnC,YAAY,UAAU;AACpB,SAAK,WAAW;AAAA,EAClB;AAAA,EACA,OAAO;AACL,SAAK,YAAO,SAAS,uCAAuC,mBAAmB;AAC7E,aAAO,KAAK,qBAAqB,iCAAmC,4BAAqB,WAAW,CAAC;AAAA,IACvG;AAAA,EACF;AAAA,EACA,OAAO;AACL,SAAK,YAAsB,gBAAG,4BAAkB;AAAA,MAC9C,MAAM;AAAA,MACN,WAAW,CAAC,CAAC,IAAI,sBAAsB,EAAE,CAAC;AAAA,MAC1C,YAAY;AAAA,IACd,CAAC;AAAA,EACH;AACF;AAAA,CACC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,gCAAgC,CAAC;AAAA,IACvG,MAAM;AAAA,IACN,MAAM,CAAC;AAAA;AAAA,MAEL,UAAU;AAAA,MACV,YAAY;AAAA,IACd,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,CAAC;AAAA,IACT,MAAS;AAAA,EACX,CAAC,GAAG,IAAI;AACV,GAAG;AACH,IAAM,yBAAN,MAAM,wBAAuB;AAAA,EAC3B,YAAY,UAAU;AACpB,SAAK,WAAW;AAAA,EAClB;AAAA,EACA,OAAO;AACL,SAAK,YAAO,SAAS,+BAA+B,mBAAmB;AACrE,aAAO,KAAK,qBAAqB,yBAA2B,4BAAqB,WAAW,CAAC;AAAA,IAC/F;AAAA,EACF;AAAA,EACA,OAAO;AACL,SAAK,YAAsB,gBAAG,4BAAkB;AAAA,MAC9C,MAAM;AAAA,MACN,WAAW,CAAC,CAAC,IAAI,cAAc,EAAE,CAAC;AAAA,MAClC,YAAY;AAAA,IACd,CAAC;AAAA,EACH;AACF;AAAA,CACC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,wBAAwB,CAAC;AAAA,IAC/F,MAAM;AAAA,IACN,MAAM,CAAC;AAAA;AAAA,MAEL,UAAU;AAAA,MACV,YAAY;AAAA,IACd,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,CAAC;AAAA,IACT,MAAS;AAAA,EACX,CAAC,GAAG,IAAI;AACV,GAAG;AACH,IAAM,oCAAN,MAAM,mCAAkC;AAAA,EACtC,YAAY,UAAU;AACpB,SAAK,WAAW;AAAA,EAClB;AAAA,EACA,OAAO;AACL,SAAK,YAAO,SAAS,0CAA0C,mBAAmB;AAChF,aAAO,KAAK,qBAAqB,oCAAsC,4BAAqB,WAAW,CAAC;AAAA,IAC1G;AAAA,EACF;AAAA,EACA,OAAO;AACL,SAAK,YAAsB,gBAAG,4BAAkB;AAAA,MAC9C,MAAM;AAAA,MACN,WAAW,CAAC,CAAC,IAAI,yBAAyB,EAAE,CAAC;AAAA,MAC7C,YAAY;AAAA,IACd,CAAC;AAAA,EACH;AACF;AAAA,CACC,MAAM;AACL,GAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,mCAAmC,CAAC;AAAA,IAC1G,MAAM;AAAA,IACN,MAAM,CAAC;AAAA;AAAA,MAEL,UAAU;AAAA,MACV,YAAY;AAAA,IACd,CAAC;AAAA,EACH,CAAC,GAAG,MAAM,CAAC;AAAA,IACT,MAAS;AAAA,EACX,CAAC,GAAG,IAAI;AACV,GAAG;AACH,SAAS,QAAQ;AAEf,SAAO,eAAe,QAAQ,QAAQ,MAAM;AAE1C,UAAM,MAAM,KAAK,OAAO,IAAI,KAAK;AACjC,WAAO,IAAI,SAAS,EAAE;AAAA,EACxB,CAAC;AACH;AACA,IAAM,aAAa;AAAA,EACjB,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,QAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,QAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,QAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,QAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,QAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,QAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,QAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,QAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,QAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,QAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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","names":["isObject","isUndefined","map","format","locale","t","to","from","isFunction","now","sign","formattingTokens","token","ordinal","i","diff","u","absFloor","match1","match2","match3","match4","match1to2","matchSigned","matchOffset","matchWord","localeData","DATE","M","hours","minutes","tokens","meridiem","years","months","weeks","days","seconds","milliseconds","offset","offsetFromString","monthDiff","prefix","proto","thresholds","KeyCode","_c0","_c1","_c2","_c3","_c4","document","ColumnMode","SelectionType","SortType","ContextmenuType","Keys","id","SortDirection","map","ClickType","padStart","padZoneStr","monthDiff","absFloor","prettyUnit","u","isUndefined","isDayjs","parseLocale","dayjs","wrapper","parseDate","Dayjs","instanceFactory","instanceFactorySet","locale","getShort","get$H","matches","diff","getMonth","t","u","dayjs","proto","getLocalePart","getShort","locale","getDayjsLocaleObject","getLongDateFormat","localeData","proto","getYearFirstThursday","getCurrentWeekThursday","proto","proto","parseTwoDigitYear","addInput","getLocalePart","meridiemMatch","ordinal","parseFormattedInput","dayjs","M","proto","offsetFromString","Dayjs","dayjs","proto","u","_c0","_c1","_c2","_c3","locale","SideEnum","moment","_c0","_c1","_c2"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,20]}