[
  {
    "__docId__": 0,
    "kind": "file",
    "name": "src/datetime.js",
    "content": "import { Duration } from './duration';\nimport { Interval } from './interval';\nimport { Settings } from './settings';\nimport { Formatter } from './impl/formatter';\nimport { FixedOffsetZone } from './zones/fixedOffsetZone';\nimport { LocalZone } from './zones/localZone';\nimport { Locale } from './impl/locale';\nimport { Util } from './impl/util';\nimport { RegexParser } from './impl/regexParser';\nimport { TokenParser } from './impl/tokenParser';\nimport { Conversions } from './impl/conversions';\nimport {\n  InvalidArgumentError,\n  ConflictingSpecificationError,\n  InvalidUnitError,\n  InvalidDateTimeError\n} from './errors';\n\nconst INVALID = 'Invalid DateTime',\n  UNSUPPORTED_ZONE = 'unsupported zone',\n  UNPARSABLE = 'unparsable';\n\nfunction possiblyCachedWeekData(dt) {\n  if (dt.weekData === null) {\n    dt.weekData = Conversions.gregorianToWeek(dt.c);\n  }\n  return dt.weekData;\n}\n\nfunction clone(inst, alts = {}) {\n  const current = {\n    ts: inst.ts,\n    zone: inst.zone,\n    c: inst.c,\n    o: inst.o,\n    loc: inst.loc,\n    invalidReason: inst.invalidReason\n  };\n  return new DateTime(Object.assign({}, current, alts, { old: current }));\n}\n\nfunction fixOffset(localTS, o, tz) {\n  // Our UTC time is just a guess because our offset is just a guess\n  let utcGuess = localTS - o * 60 * 1000;\n\n  // Test whether the zone matches the offset for this ts\n  const o2 = tz.offset(utcGuess);\n\n  // If so, offset didn't change and we're done\n  if (o === o2) {\n    return [utcGuess, o];\n  }\n\n  // If not, change the ts by the difference in the offset\n  utcGuess -= (o2 - o) * 60 * 1000;\n\n  // If that gives us the local time we want, we're done\n  const o3 = tz.offset(utcGuess);\n  if (o2 === o3) {\n    return [utcGuess, o2];\n  }\n\n  // If it's different, we're in a hole time. The offset has changed, but the we don't adjust the time\n  return [localTS - Math.min(o2, o3) * 60 * 1000, Math.max(o2, o3)];\n}\n\nfunction tsToObj(ts, offset) {\n  ts += offset * 60 * 1000;\n\n  const d = new Date(ts);\n\n  return {\n    year: d.getUTCFullYear(),\n    month: d.getUTCMonth() + 1,\n    day: d.getUTCDate(),\n    hour: d.getUTCHours(),\n    minute: d.getUTCMinutes(),\n    second: d.getUTCSeconds(),\n    millisecond: d.getUTCMilliseconds()\n  };\n}\n\nfunction objToLocalTS(obj) {\n  let d = Date.UTC(\n    obj.year,\n    obj.month - 1,\n    obj.day,\n    obj.hour,\n    obj.minute,\n    obj.second,\n    obj.millisecond\n  );\n\n  // javascript is stupid and i hate it\n  if (obj.year < 100 && obj.year >= 0) {\n    d = new Date(d);\n    d.setFullYear(obj.year);\n  }\n  return +d;\n}\n\nfunction objToTS(obj, offset, zone) {\n  return fixOffset(objToLocalTS(obj), offset, zone);\n}\n\nfunction adjustTime(inst, dur) {\n  const oPre = inst.o,\n    c = Object.assign({}, inst.c, {\n      year: inst.c.year + dur.years,\n      month: inst.c.month + dur.months,\n      day: inst.c.day + dur.days + dur.weeks * 7\n    }),\n    millisToAdd = Duration.fromObject({\n      hours: dur.hours,\n      minutes: dur.minutes,\n      seconds: dur.seconds,\n      milliseconds: dur.milliseconds\n    }).as('milliseconds'),\n    localTS = objToLocalTS(c);\n\n  let [ts, o] = fixOffset(localTS, oPre, inst.zone);\n\n  if (millisToAdd !== 0) {\n    ts += millisToAdd;\n    // that could have changed the offset by going over a DST, but we want to keep the ts the same\n    o = inst.zone.offset(ts);\n  }\n\n  return { ts, o };\n}\n\nfunction parseDataToDateTime(parsed, parsedZone, opts = {}) {\n  const { setZone, zone } = opts;\n  if (parsed && Object.keys(parsed).length !== 0) {\n    const interpretationZone = parsedZone || zone,\n      inst = DateTime.fromObject(\n        Object.assign(parsed, opts, {\n          zone: interpretationZone\n        })\n      );\n    return setZone ? inst : inst.setZone(zone);\n  } else {\n    return DateTime.invalid(UNPARSABLE);\n  }\n}\n\nfunction formatMaybe(dt, format) {\n  return dt.isValid\n    ? Formatter.create(Locale.create('en')).formatDateTimeFromString(dt, format)\n    : null;\n}\n\nconst defaultUnitValues = {\n    month: 1,\n    day: 1,\n    hour: 0,\n    minute: 0,\n    second: 0,\n    millisecond: 0\n  },\n  defaultWeekUnitValues = {\n    weekNumber: 1,\n    weekday: 1,\n    hour: 0,\n    minute: 0,\n    second: 0,\n    millisecond: 0\n  },\n  defaultOrdinalUnitValues = {\n    ordinal: 1,\n    hour: 0,\n    minute: 0,\n    second: 0,\n    millisecond: 0\n  };\n\nfunction isoTimeFormat(dateTime, suppressSecs, suppressMillis) {\n  return suppressSecs && dateTime.second === 0 && dateTime.millisecond === 0\n    ? 'HH:mmZ'\n    : suppressMillis && dateTime.millisecond === 0 ? 'HH:mm:ssZZ' : 'HH:mm:ss.SSSZZ';\n}\n\nconst orderedUnits = ['year', 'month', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\nconst orderedWeekUnits = [\n  'weekYear',\n  'weekNumber',\n  'weekday',\n  'hour',\n  'minute',\n  'second',\n  'millisecond'\n];\n\nconst orderedOrdinalUnits = ['year', 'ordinal', 'hour', 'minute', 'second', 'millisecond'];\n\nfunction normalizeUnit(unit, ignoreUnknown = false) {\n  const normalized = {\n    year: 'year',\n    years: 'year',\n    month: 'month',\n    months: 'month',\n    day: 'day',\n    days: 'day',\n    hour: 'hour',\n    hours: 'hour',\n    minute: 'minute',\n    minutes: 'minute',\n    second: 'second',\n    seconds: 'second',\n    millisecond: 'millisecond',\n    milliseconds: 'millisecond',\n    weekday: 'weekday',\n    weekdays: 'weekday',\n    weeknumber: 'weekNumber',\n    weeksnumber: 'weekNumber',\n    weeknumbers: 'weekNumber',\n    weekyear: 'weekYear',\n    weekyears: 'weekYear',\n    ordinal: 'ordinal'\n  }[unit ? unit.toLowerCase() : unit];\n\n  if (!ignoreUnknown && !normalized) throw new InvalidUnitError(unit);\n\n  return normalized;\n}\n\n/**\n * A DateTime is an immutable data structure representing a specific date and time and accompanying methods. It contains class and instance methods for creating, parsing, interrogating, transforming, and formatting them.\n *\n * A DateTime comprises of:\n * * A timestamp. Each DateTime instance refers to a specific millisecond of the Unix epoch.\n * * A time zone. Each instance is considered in the context of a specific zone (by default the local system's zone).\n * * Configuration properties that effect how output strings are formatted, such as `locale`, `numberingSystem`, and `outputCalendar`.\n *\n * Here is a brief overview of the most commonly used functionality it provides:\n *\n * * **Creation**: To create a DateTime from its components, use one of its factory class methods: {@link local}, {@link utc}, and (most flexibly) {@link fromObject}. To create one from a standard string format, use {@link fromISO}, {@link fromHTTP}, and {@link fromRFC2822}. To create one from a custom string format, use {@link fromString}. To create one from a native JS date, use {@link fromJSDate}.\n * * **Gregorian calendar and time**: To examine the Gregorian properties of a DateTime individually (i.e as opposed to collectively through {@link toObject}), use the {@link year}, {@link month},\n * {@link day}, {@link hour}, {@link minute}, {@link second}, {@link millisecond} accessors.\n * * **Week calendar**: For ISO week calendar attributes, see the {@link weekYear}, {@link weekNumber}, and {@link weekday} accessors.\n * * **Configuration** See the {@link locale} and {@link numberingSystem} accessors.\n * * **Transformation**: To transform the DateTime into other DateTimes, use {@link set}, {@link reconfigure}, {@link setZone}, {@link setLocale}, {@link plus}, {@link minus}, {@link endOf}, {@link startOf}, {@link toUTC}, and {@link toLocal}.\n * * **Output**: To convert the DateTime to other representations, use the {@link toJSON}, {@link toISO}, {@link toHTTP}, {@link toObject}, {@link toRFC2822}, {@link toString}, {@link toLocaleString}, {@link toFormat}, and {@link valueOf}.\n *\n * There's plenty others documented below. In addition, for more information on subtler topics like internationalization, time zones, alternative calendars, validity, and so on, see the external documentation.\n */\nexport class DateTime {\n  /**\n   * @access private\n   */\n  constructor(config = {}) {\n    const zone = config.zone || Settings.defaultZone,\n      invalidReason = config.invalidReason || (zone.isValid ? null : UNSUPPORTED_ZONE);\n\n    Object.defineProperty(this, 'ts', {\n      value: config.ts || Settings.now(),\n      enumerable: true\n    });\n\n    Object.defineProperty(this, 'zone', {\n      value: zone,\n      enumerable: true\n    });\n\n    Object.defineProperty(this, 'loc', {\n      value: config.loc || Locale.create(),\n      enumerable: true\n    });\n\n    Object.defineProperty(this, 'invalidReason', {\n      value: invalidReason,\n      enumerable: false\n    });\n\n    Object.defineProperty(this, 'weekData', {\n      writable: true, // !!!\n      value: null,\n      enumerable: false\n    });\n\n    if (!invalidReason) {\n      const unchanged =\n          config.old && config.old.ts === this.ts && config.old.zone.equals(this.zone),\n        c = unchanged ? config.old.c : tsToObj(this.ts, this.zone.offset(this.ts)),\n        o = unchanged ? config.old.o : this.zone.offset(this.ts);\n\n      Object.defineProperty(this, 'c', { value: c });\n      Object.defineProperty(this, 'o', { value: o });\n    }\n  }\n\n  // CONSTRUCT\n\n  /**\n   * Create a local DateTime\n   * @param {number} year - The calendar year. If omitted (as in, call `local()` with no arguments), the current time will be used\n   * @param {number} [month=1] - The month, 1-indexed\n   * @param {number} [day=1] - The day of the month\n   * @param {number} [hour=0] - The hour of the day, in 24-hour time\n   * @param {number} [minute=0] - The minute of the hour, i.e. a number between 0 and 59\n   * @param {number} [second=0] - The second of the minute, i.e. a number between 0 and 59\n   * @param {number} [millisecond=0] - The millisecond of the second, i.e. a number between 0 and 999\n   * @example DateTime.local()                            //~> now\n   * @example DateTime.local(2017)                        //~> 2017-01-01T00:00:00\n   * @example DateTime.local(2017, 3)                     //~> 2017-03-01T00:00:00\n   * @example DateTime.local(2017, 3, 12)                 //~> 2017-03-12T00:00:00\n   * @example DateTime.local(2017, 3, 12, 5)              //~> 2017-03-12T05:00:00\n   * @example DateTime.local(2017, 3, 12, 5, 45)          //~> 2017-03-12T05:45:00\n   * @example DateTime.local(2017, 3, 12, 5, 45, 10)      //~> 2017-03-12T05:45:10\n   * @example DateTime.local(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.675\n   * @return {DateTime}\n   */\n  static local(year, month, day, hour, minute, second, millisecond) {\n    if (Util.isUndefined(year)) {\n      return new DateTime({ ts: Settings.now() });\n    } else {\n      return DateTime.fromObject({\n        year,\n        month,\n        day,\n        hour,\n        minute,\n        second,\n        millisecond,\n        zone: Settings.defaultZone\n      });\n    }\n  }\n\n  /**\n   * Create a DateTime in UTC\n   * @param {number} year - The calendar year. If omitted (as in, call `utc()` with no arguments), the current time will be used\n   * @param {number} [month=1] - The month, 1-indexed\n   * @param {number} [day=1] - The day of the month\n   * @param {number} [hour=0] - The hour of the day, in 24-hour time\n   * @param {number} [minute=0] - The minute of the hour, i.e. a number between 0 and 59\n   * @param {number} [second=0] - The second of the minute, i.e. a number between 0 and 59\n   * @param {number} [millisecond=0] - The millisecond of the second, i.e. a number between 0 and 999\n   * @example DateTime.utc()                            //~> now\n   * @example DateTime.utc(2017)                        //~> 2017-01-01T00:00:00Z\n   * @example DateTime.utc(2017, 3)                     //~> 2017-03-01T00:00:00Z\n   * @example DateTime.utc(2017, 3, 12)                 //~> 2017-03-12T00:00:00Z\n   * @example DateTime.utc(2017, 3, 12, 5)              //~> 2017-03-12T05:00:00Z\n   * @example DateTime.utc(2017, 3, 12, 5, 45)          //~> 2017-03-12T05:45:00Z\n   * @example DateTime.utc(2017, 3, 12, 5, 45, 10)      //~> 2017-03-12T05:45:10Z\n   * @example DateTime.utc(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.675Z\n   * @return {DateTime}\n   */\n  static utc(year, month, day, hour, minute, second, millisecond) {\n    if (Util.isUndefined(year)) {\n      return new DateTime({\n        ts: Settings.now(),\n        zone: FixedOffsetZone.utcInstance\n      });\n    } else {\n      return DateTime.fromObject({\n        year,\n        month,\n        day,\n        hour,\n        minute,\n        second,\n        millisecond,\n        zone: FixedOffsetZone.utcInstance\n      });\n    }\n  }\n\n  /**\n   * Create an DateTime from a Javascript Date object. Uses the default zone.\n   * @param {Date|Any} date - a Javascript Date object\n   * @param {Object} options - configuration options for the DateTime\n   * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n   * @return {DateTime}\n   */\n  static fromJSDate(date, options = {}) {\n    return new DateTime({\n      ts: new Date(date).valueOf(),\n      zone: Util.normalizeZone(options.zone),\n      loc: Locale.fromObject(options)\n    });\n  }\n\n  /**\n   * Create an DateTime from a count of epoch milliseconds. Uses the default zone.\n   * @param {number} milliseconds - a number of milliseconds since 1970 UTC\n   * @param {Object} options - configuration options for the DateTime\n   * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n   * @param {string} [options.locale='en-US'] - a locale to set on the resulting DateTime instance\n   * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n   * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n   * @return {DateTime}\n   */\n  static fromMillis(milliseconds, options = {}) {\n    return new DateTime({\n      ts: milliseconds,\n      zone: Util.normalizeZone(options.zone),\n      loc: Locale.fromObject(options)\n    });\n  }\n\n  /**\n   * Create an DateTime from a Javascript object with keys like 'year' and 'hour' with reasonable defaults.\n   * @param {Object} obj - the object to create the DateTime from\n   * @param {number} obj.year - a year, such as 1987\n   * @param {number} obj.month - a month, 1-12\n   * @param {number} obj.day - a day of the month, 1-31, depending on the month\n   * @param {number} obj.ordinal - day of the year, 1-365 or 366\n   * @param {number} obj.weekYear - an ISO week year\n   * @param {number} obj.weekNumber - an ISO week number, between 1 and 52 or 53, depending on the year\n   * @param {number} obj.weekday - an ISO weekday, 1-7, where 1 is Monday and 7 is Sunday\n   * @param {number} obj.hour - hour of the day, 0-23\n   * @param {number} obj.minute - minute of the hour, 0-59\n   * @param {number} obj.second - second of the minute, 0-59\n   * @param {number} obj.millisecond - millisecond of the second, 0-999\n   * @param {string|Zone} [obj.zone='local'] - interpret the numbers in the context of a particular zone. Can take any value taken as the first argument to setZone()\n   * @param {string} [obj.locale='en-US'] - a locale to set on the resulting DateTime instance\n   * @param {string} obj.outputCalendar - the output calendar to set on the resulting DateTime instance\n   * @param {string} obj.numberingSystem - the numbering system to set on the resulting DateTime instance\n   * @example DateTime.fromObject({ year: 1982, month: 5, day: 25}).toISODate() //=> '1982-05-25'\n   * @example DateTime.fromObject({ year: 1982 }).toISODate() //=> '1982-01-01T00'\n   * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }) //~> today at 10:26:06\n   * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6, zone: 'utc' }),\n   * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6, zone: 'local' })\n   * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6, zone: 'America/New_York' })\n   * @example DateTime.fromObject({ weekYear: 2016, weekNumber: 2, weekday: 3 }).toISODate() //=> '2016-01-13'\n   * @return {DateTime}\n   */\n  static fromObject(obj) {\n    const zoneToUse = Util.normalizeZone(obj.zone);\n    if (!zoneToUse.isValid) {\n      return DateTime.invalid(UNSUPPORTED_ZONE);\n    }\n\n    const tsNow = Settings.now(),\n      offsetProvis = zoneToUse.offset(tsNow),\n      normalized = Util.normalizeObject(obj, normalizeUnit, true),\n      containsOrdinal = !Util.isUndefined(normalized.ordinal),\n      containsGregorYear = !Util.isUndefined(normalized.year),\n      containsGregorMD = !Util.isUndefined(normalized.month) || !Util.isUndefined(normalized.day),\n      containsGregor = containsGregorYear || containsGregorMD,\n      definiteWeekDef = normalized.weekYear || normalized.weekNumber,\n      loc = Locale.fromObject(obj);\n\n    // cases:\n    // just a weekday -> this week's instance of that weekday, no worries\n    // (gregorian data or ordinal) + (weekYear or weekNumber) -> error\n    // (gregorian month or day) + ordinal -> error\n    // otherwise just use weeks or ordinals or gregorian, depending on what's specified\n\n    if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n      throw new ConflictingSpecificationError(\n        \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n      );\n    }\n\n    if (containsGregorMD && containsOrdinal) {\n      throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n    }\n\n    const useWeekData = definiteWeekDef || (normalized.weekday && !containsGregor);\n\n    // configure ourselves to deal with gregorian dates or week stuff\n    let units,\n      defaultValues,\n      objNow = tsToObj(tsNow, offsetProvis);\n    if (useWeekData) {\n      units = orderedWeekUnits;\n      defaultValues = defaultWeekUnitValues;\n      objNow = Conversions.gregorianToWeek(objNow);\n    } else if (containsOrdinal) {\n      units = orderedOrdinalUnits;\n      defaultValues = defaultOrdinalUnitValues;\n      objNow = Conversions.gregorianToOrdinal(objNow);\n    } else {\n      units = orderedUnits;\n      defaultValues = defaultUnitValues;\n    }\n\n    // set default values for missing stuff\n    let foundFirst = false;\n    for (const u of units) {\n      const v = normalized[u];\n      if (!Util.isUndefined(v)) {\n        foundFirst = true;\n      } else if (foundFirst) {\n        normalized[u] = defaultValues[u];\n      } else {\n        normalized[u] = objNow[u];\n      }\n    }\n\n    // make sure the values we have are in range\n    const higherOrderInvalid = useWeekData\n        ? Conversions.hasInvalidWeekData(normalized)\n        : containsOrdinal\n          ? Conversions.hasInvalidOrdinalData(normalized)\n          : Conversions.hasInvalidGregorianData(normalized),\n      invalidReason = higherOrderInvalid || Conversions.hasInvalidTimeData(normalized);\n\n    if (invalidReason) {\n      return DateTime.invalid(invalidReason);\n    }\n\n    // compute the actual time\n    const gregorian = useWeekData\n        ? Conversions.weekToGregorian(normalized)\n        : containsOrdinal ? Conversions.ordinalToGregorian(normalized) : normalized,\n      [tsFinal, offsetFinal] = objToTS(gregorian, offsetProvis, zoneToUse),\n      inst = new DateTime({\n        ts: tsFinal,\n        zone: zoneToUse,\n        o: offsetFinal,\n        loc\n      });\n\n    // gregorian data + weekday serves only to validate\n    if (normalized.weekday && containsGregor && obj.weekday !== inst.weekday) {\n      return DateTime.invalid('mismatched weekday');\n    }\n\n    return inst;\n  }\n\n  /**\n   * Create a DateTime from an ISO 8601 string\n   * @param {string} text - the ISO string\n   * @param {Object} opts - options to affect the creation\n   * @param {boolean} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the time to this zone\n   * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n   * @param {string} [opts.locale='en-US'] - a locale to set on the resulting DateTime instance\n   * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n   * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n   * @example DateTime.fromISO('2016-05-25T09:08:34.123')\n   * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00')\n   * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00', {setZone: true})\n   * @example DateTime.fromISO('2016-05-25T09:08:34.123', {zone: 'utc')\n   * @example DateTime.fromISO('2016-W05-4')\n   * @return {DateTime}\n   */\n  static fromISO(text, opts = {}) {\n    const [vals, parsedZone] = RegexParser.parseISODate(text);\n    return parseDataToDateTime(vals, parsedZone, opts);\n  }\n\n  /**\n   * Create a DateTime from an RFC 2822 string\n   * @param {string} text - the RFC 2822 string\n   * @param {Object} opts - options to affect the creation\n   * @param {boolean} [opts.zone='local'] - convert the time to this zone. Since the offset is always specified in the string itself, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n   * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n   * @param {string} [opts.locale='en-US'] - a locale to set on the resulting DateTime instance\n   * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n   * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n   * @example DateTime.fromRFC2822('25 Nov 2016 13:23:12 GMT')\n   * @example DateTime.fromRFC2822('Tue, 25 Nov 2016 13:23:12 +0600')\n   * @example DateTime.fromRFC2822('25 Nov 2016 13:23 Z')\n   * @return {DateTime}\n   */\n  static fromRFC2822(text, opts = {}) {\n    const [vals, parsedZone] = RegexParser.parseRFC2822Date(text);\n    return parseDataToDateTime(vals, parsedZone, opts);\n  }\n\n  /**\n   * Create a DateTime from an HTTP header date\n   * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n   * @param {string} text - the HTTP header date\n   * @param {object} options - options to affect the creation\n   * @param {boolean} [options.zone='local'] - convert the time to this zone. Since HTTP dates are always in UTC, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n   * @param {boolean} [options.setZone=false] - override the zone with the fixed-offset zone specified in the string. For HTTP dates, this is always UTC, so this option is equivalent to setting the `zone` option to 'utc', but this option is included for consistency with similar methods.\n   * @param {string} [options.locale='en-US'] - a locale to set on the resulting DateTime instance\n   * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n   * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n   * @example DateTime.fromHTTP('Sun, 06 Nov 1994 08:49:37 GMT')\n   * @example DateTime.fromHTTP('Sunday, 06-Nov-94 08:49:37 GMT')\n   * @example DateTime.fromHTTP('Sun Nov  6 08:49:37 1994')\n   * @return {DateTime}\n   */\n  static fromHTTP(text, options = {}) {\n    const [vals, parsedZone] = RegexParser.parseHTTPDate(text);\n    return parseDataToDateTime(vals, parsedZone, options);\n  }\n\n  /**\n   * Create a DateTime from an input string and format string\n   * @param {string} text - the string to parse\n   * @param {string} fmt - the format the string is expected to be in (see description)\n   * @param {Object} options - options to affect the creation\n   * @param {boolean} [options.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n   * @param {boolean} [options.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n   * @param {string} [options.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n   * @param {string} options.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n   * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n   * @return {DateTime}\n   */\n  static fromString(text, fmt, options = {}) {\n    const { locale = null, numberingSystem = null } = options,\n      parser = new TokenParser(Locale.fromOpts({ locale, numberingSystem })),\n      [vals, parsedZone, invalidReason] = parser.parseDateTime(text, fmt);\n    if (invalidReason) {\n      return DateTime.invalid(invalidReason);\n    } else {\n      return parseDataToDateTime(vals, parsedZone, options);\n    }\n  }\n\n  /**\n   * Create an invalid DateTime.\n   * @return {DateTime}\n   */\n  static invalid(reason) {\n    if (!reason) {\n      throw new InvalidArgumentError('need to specify a reason the DateTime is invalid');\n    }\n    if (Settings.throwOnInvalid) {\n      throw new InvalidDateTimeError(reason);\n    } else {\n      return new DateTime({ invalidReason: reason });\n    }\n  }\n\n  // INFO\n\n  /**\n   * Get the value of unit.\n   * @param {string} unit - a unit such as 'minute' or 'day'\n   * @example DateTime.local(2017, 7, 4).get('month'); //=> 7\n   * @example DateTime.local(2017, 7, 4).get('day'); //=> 4\n   * @return {number}\n   */\n  get(unit) {\n    return this[unit];\n  }\n\n  /**\n   * Returns whether the DateTime is valid. Invalid DateTimes occur when:\n   * * The DateTime was created from invalid calendar information, such as the 13th month or February 30\n   * * The DateTime was created by an operation on another invalid date\n   * @return {boolean}\n   */\n  get isValid() {\n    return this.invalidReason === null;\n  }\n\n  /**\n   * Returns an explanation of why this DateTime became invalid, or null if the DateTime is valid\n   * @return {string}\n   */\n  get invalidReason() {\n    return this.invalidReason;\n  }\n\n  /**\n   * Get the locale of a DateTime, such 'en-GB'. The locale is used when formatting the DateTime\n   *\n   * @return {string}\n   */\n  get locale() {\n    return this.loc.locale;\n  }\n\n  /**\n   * Get the numbering system of a DateTime, such 'beng'. The numbering system is used when formatting the DateTime\n   *\n   * @return {string}\n   */\n  get numberingSystem() {\n    return this.loc.numberingSystem;\n  }\n\n  /**\n   * Get the output calendar of a DateTime, such 'islamic'. The output calendar is used when formatting the DateTime\n   *\n   * @return {string}\n   */\n  get outputCalendar() {\n    return this.loc.outputCalendar;\n  }\n\n  /**\n   * Get the name of the time zone.\n   * @return {String}\n   */\n  get zoneName() {\n    return this.zone.name;\n  }\n\n  /**\n   * Get the year\n   * @example DateTime.local(2017, 5, 25).year //=> 2017\n   * @return {number}\n   */\n  get year() {\n    return this.isValid ? this.c.year : NaN;\n  }\n\n  /**\n   * Get the month (1-12).\n   * @example DateTime.local(2017, 5, 25).month //=> 5\n   * @return {number}\n   */\n  get month() {\n    return this.isValid ? this.c.month : NaN;\n  }\n\n  /**\n   * Get the day of the month (1-30ish).\n   * @example DateTime.local(2017, 5, 25).day //=> 25\n   * @return {number}\n   */\n  get day() {\n    return this.isValid ? this.c.day : NaN;\n  }\n\n  /**\n   * Get the hour of the day (0-23).\n   * @example DateTime.local(2017, 5, 25, 9).hour //=> 9\n   * @return {number}\n   */\n  get hour() {\n    return this.isValid ? this.c.hour : NaN;\n  }\n\n  /**\n   * Get the minute of the hour (0-59).\n   * @example DateTime.local(2017, 5, 25, 9, 30).minute //=> 30\n   * @return {number}\n   */\n  get minute() {\n    return this.isValid ? this.c.minute : NaN;\n  }\n\n  /**\n   * Get the second of the minute (0-59).\n   * @example DateTime.local(2017, 5, 25, 9, 30, 52).second //=> 52\n   * @return {number}\n   */\n  get second() {\n    return this.isValid ? this.c.second : NaN;\n  }\n\n  /**\n   * Get the millisecond of the second (0-999).\n   * @example DateTime.local(2017, 5, 25, 9, 30, 52, 654).millisecond //=> 654\n   * @return {number}\n   */\n  get millisecond() {\n    return this.isValid ? this.c.millisecond : NaN;\n  }\n\n  /**\n   * Get the week year\n   * @see https://en.wikipedia.org/wiki/ISO_week_date\n   * @example DateTime.local(2014, 11, 31).weekYear //=> 2015\n   * @return {number}\n   */\n  get weekYear() {\n    return this.isValid ? possiblyCachedWeekData(this).weekYear : NaN;\n  }\n\n  /**\n   * Get the week number of the week year (1-52ish).\n   * @see https://en.wikipedia.org/wiki/ISO_week_date\n   * @example DateTime.local(2017, 5, 25).weekNumber //=> 21\n   * @return {number}\n   */\n  get weekNumber() {\n    return this.isValid ? possiblyCachedWeekData(this).weekNumber : NaN;\n  }\n\n  /**\n   * Get the day of the week.\n   * 1 is Monday and 7 is Sunday\n   * @see https://en.wikipedia.org/wiki/ISO_week_date\n   * @example DateTime.local(2014, 11, 31).weekday //=> 4\n   * @return {number}\n   */\n  get weekday() {\n    return this.isValid ? possiblyCachedWeekData(this).weekday : NaN;\n  }\n\n  /**\n   * Get the ordinal (i.e. the day of the year)\n   * @example DateTime.local(2017, 5, 25).ordinal //=> 145\n   * @return {number|DateTime}\n   */\n  get ordinal() {\n    return this.isValid ? Conversions.gregorianToOrdinal(this.c).ordinal : NaN;\n  }\n\n  /**\n   * Get the UTC offset of this DateTime in minutes\n   * @example DateTime.local().offset //=> -240\n   * @example DateTime.utc().offset //=> 0\n   * @return {number}\n   */\n  get offset() {\n    return this.isValid ? this.zone.offset(this.ts) : NaN;\n  }\n\n  /**\n   * Get the short human name for the zone's current offset, for example \"EST\" or \"EDT\".\n   * @return {String}\n   */\n  get offsetNameShort() {\n    if (this.isValid) {\n      return this.zone.offsetName(this.ts, {\n        format: 'short',\n        locale: this.locale\n      });\n    } else {\n      return null;\n    }\n  }\n\n  /**\n   * Get the long human name for the zone's current offset, for example \"Eastern Standard Time\" or \"Eastern Daylight Time\".\n   * Is locale-aware.\n   * @return {String}\n   */\n  get offsetNameLong() {\n    if (this.isValid) {\n      return this.zone.offsetName(this.ts, {\n        format: 'long',\n        locale: this.locale\n      });\n    } else {\n      return null;\n    }\n  }\n\n  /**\n   * Get whether this zone's offset ever changes, as in a DST.\n   * @return {boolean}\n   */\n  get isOffsetFixed() {\n    return this.zone.universal;\n  }\n\n  /**\n   * Get whether the DateTime is in a DST.\n   * @return {boolean}\n   */\n  get isInDST() {\n    if (this.isOffsetFixed) {\n      return false;\n    } else {\n      return (\n        this.offset > this.set({ month: 1 }).offset || this.offset > this.set({ month: 5 }).offset\n      );\n    }\n  }\n\n  /**\n   * Returns true if this DateTime is in a leap year, false otherwise\n   * @example DateTime.local(2016).isInLeapYear //=> true\n   * @example DateTime.local(2013).isInLeapYear //=> false\n   * @return {boolean}\n   */\n  get isInLeapYear() {\n    return Util.isLeapYear(this.year);\n  }\n\n  /**\n   * Returns the number of days in this DateTime's month\n   * @example DateTime.local(2016, 2).daysInMonth //=> 29\n   * @example DateTime.local(2016, 3).days //=> 31\n   * @return {number}\n   */\n  get daysInMonth() {\n    return Util.daysInMonth(this.year, this.month);\n  }\n\n  /**\n   * Returns the number of days in this DateTime's year\n   * @example DateTime.local(2016).daysInYear //=> 366\n   * @example DateTime.local(2013).daysInYear //=> 365\n   * @return {number}\n   */\n  get daysInYear() {\n    return this.isValid ? Util.daysInYear(this.year) : NaN;\n  }\n\n  /**\n   * Returns the resolved Intl options for this DateTime.\n   * This is useful in understanding the behavior of parsing and formatting methods\n   * @param {object} opts - the same options as toLocaleString\n   * @return {object}\n   */\n  resolvedLocaleOpts(opts = {}) {\n    const { locale, numberingSystem, calendar } = Formatter.create(\n      this.loc.clone(opts),\n      opts\n    ).resolvedOptions(this);\n    return { locale, numberingSystem, outputCalendar: calendar };\n  }\n\n  // TRANSFORM\n\n  /**\n   * \"Set\" the DateTime's zone to UTC. Returns a newly-constructed DateTime.\n   *\n   * Equivalent to {@link setZone}('utc')\n   * @param {number} [offset=0] - optionally, an offset from UTC in minutes\n   * @param {object} [opts={}] - options to pass to `setZone()`\n   * @return {DateTime}\n   */\n  toUTC(offset = 0, opts = {}) {\n    return this.setZone(FixedOffsetZone.instance(offset), opts);\n  }\n\n  /**\n   * \"Set\" the DateTime's zone to the host's local zone. Returns a newly-constructed DateTime.\n   *\n   * Equivalent to `setZone('local')`\n   * @return {DateTime}\n   */\n  toLocal() {\n    return this.setZone(new LocalZone());\n  }\n\n  /**\n   * \"Set\" the DateTime's zone to specified zone. Returns a newly-constructed DateTime.\n   *\n   * By default, the setter keeps the underlying time the same (as in, the same UTC timestamp), but the new instance will report different local times and consider DSTs when making computations, as with {@link plus}. You may wish to use {@link toLocal} and {@link toUTC} which provide simple convenience wrappers for commonly used zones.\n   * @param {string|Zone} [zone='local'] - a zone identifier. As a string, that can be any IANA zone supported by the host environment, or a fixed-offset name of the form 'utc+3', or the strings 'local' or 'utc'. You may also supply an instance of a {@link Zone} class.\n   * @param {object} opts - options\n   * @param {boolean} [opts.keepCalendarTime=false] - If true, adjust the underlying time so that the local time stays the same, but in the target zone. You should rarely need this.\n   * @return {DateTime}\n   */\n  setZone(zone, { keepCalendarTime = false } = {}) {\n    zone = Util.normalizeZone(zone);\n    if (zone.equals(this.zone)) {\n      return this;\n    } else if (!zone.isValid) {\n      return DateTime.invalid(UNSUPPORTED_ZONE);\n    } else {\n      const newTS = keepCalendarTime\n        ? this.ts + (this.o - zone.offset(this.ts)) * 60 * 1000\n        : this.ts;\n      return clone(this, { ts: newTS, zone });\n    }\n  }\n\n  /**\n   * \"Set\" the locale, numberingSystem, or outputCalendar. Returns a newly-constructed DateTime.\n   * @param {object} properties - the properties to set\n   * @example DateTime.local(2017, 5, 25).reconfigure({ locale: 'en-GB' })\n   * @return {DateTime}\n   */\n  reconfigure({ locale, numberingSystem, outputCalendar } = {}) {\n    const loc = this.loc.clone({ locale, numberingSystem, outputCalendar });\n    return clone(this, { loc });\n  }\n\n  /**\n   * \"Set\" the locale. Returns a newly-constructed DateTime.\n   * Just a convenient alias for reconfigure({ locale })\n   * @example DateTime.local(2017, 5, 25).setLocale('en-GB')\n   * @return {DateTime}\n   */\n  setLocale(locale) {\n    return this.reconfigure({ locale });\n  }\n\n  /**\n   * \"Set\" the values of specified units. Returns a newly-constructed DateTime.\n   * @param {object} values - a mapping of units to numbers\n   * @example dt.set({ year: 2017 })\n   * @example dt.set({ hour: 8, minute: 30 })\n   * @example dt.set({ weekday: 5 })\n   * @example dt.set({ year: 2005, ordinal: 234 })\n   * @example dt.set({ outputCalendar: 'beng', zone: 'utc' })\n   * @return {DateTime}\n   */\n  set(values) {\n    const normalized = Util.normalizeObject(values, normalizeUnit),\n      settingWeekStuff =\n        !Util.isUndefined(normalized.weekYear) ||\n        !Util.isUndefined(normalized.weekNumber) ||\n        !Util.isUndefined(normalized.weekday);\n\n    let mixed;\n    if (settingWeekStuff) {\n      mixed = Conversions.weekToGregorian(\n        Object.assign(Conversions.gregorianToWeek(this.c), normalized)\n      );\n    } else if (!Util.isUndefined(normalized.ordinal)) {\n      mixed = Conversions.ordinalToGregorian(\n        Object.assign(Conversions.gregorianToOrdinal(this.c), normalized)\n      );\n    } else {\n      mixed = Object.assign(this.toObject(), normalized);\n\n      // if we didn't set the day but we ended up on an overflow date,\n      // use the last day of the right month\n      if (Util.isUndefined(normalized.day)) {\n        mixed.day = Math.min(Util.daysInMonth(mixed.year, mixed.month), mixed.day);\n      }\n    }\n\n    const [ts, o] = objToTS(mixed, this.o, this.zone);\n    return clone(this, { ts, o });\n  }\n\n  /**\n   * Add a period of time to this DateTime and return the resulting DateTime\n   *\n   * Adding hours, minutes, seconds, or milliseconds increases the timestamp by the right number of milliseconds. Adding days, months, or years shifts the calendar, accounting for DSTs and leap years along the way. Thus, `dt.plus({ hours: 24 })` may result in a different time than `dt.plus({ days: 1 })` if there's a DST shift in between.\n   * @param {Duration|number|object} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n   * @example DateTime.local().plus(123) //~> in 123 milliseconds\n   * @example DateTime.local().plus({ minutes: 15 }) //~> in 15 minutes\n   * @example DateTime.local().plus({ days: 1 }) //~> this time tomorrow\n   * @example DateTime.local().plus({ hours: 3, minutes: 13 }) //~> in 1 hr, 13 min\n   * @example DateTime.local().plus(Duration.fromObject({ hours: 3, minutes: 13 })) //~> in 1 hr, 13 min\n   * @return {DateTime}\n   */\n  plus(duration) {\n    if (!this.isValid) return this;\n    const dur = Util.friendlyDuration(duration);\n    return clone(this, adjustTime(this, dur));\n  }\n\n  /**\n   * Subtract a period of time to this DateTime and return the resulting DateTime\n   * See {@link plus}\n   * @param {Duration|number|object} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n   @return {DateTime}\n  */\n  minus(duration) {\n    if (!this.isValid) return this;\n    const dur = Util.friendlyDuration(duration).negate();\n    return clone(this, adjustTime(this, dur));\n  }\n\n  /**\n   * \"Set\" this DateTime to the beginning of a unit of time.\n   * @param {string} unit - The unit to go to the beginning of. Can be 'year', 'month', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n   * @example DateTime.local(2014, 3, 3).startOf('month').toISODate(); //=> '2014-03-01'\n   * @example DateTime.local(2014, 3, 3).startOf('year').toISODate(); //=> '2014-01-01'\n   * @example DateTime.local(2014, 3, 3, 5, 30).startOf('day').toISOTime(); //=> '00:00.000-05:00'\n   * @example DateTime.local(2014, 3, 3, 5, 30).startOf('hour').toISOTime(); //=> '05:00:00.000-05:00'\n   * @return {DateTime}\n   */\n  startOf(unit) {\n    if (!this.isValid) return this;\n    const o = {},\n      normalizedUnit = Duration.normalizeUnit(unit);\n    switch (normalizedUnit) {\n      case 'years':\n        o.month = 1;\n      // falls through\n      case 'months':\n        o.day = 1;\n      // falls through\n      case 'weeks':\n      case 'days':\n        o.hour = 0;\n      // falls through\n      case 'hours':\n        o.minute = 0;\n      // falls through\n      case 'minutes':\n        o.second = 0;\n      // falls through\n      case 'seconds':\n        o.millisecond = 0;\n        break;\n      default:\n        throw new InvalidUnitError(unit);\n    }\n\n    if (normalizedUnit === 'weeks') {\n      o.weekday = 1;\n    }\n\n    return this.set(o);\n  }\n\n  /**\n   * \"Set\" this DateTime to the end (i.e. the last millisecond) of a unit of time\n   * @param {string} unit - The unit to go to the end of. Can be 'year', 'month', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n   * @example DateTime.local(2014, 3, 3).endOf('month').toISO(); //=> '2014-03-03T00:00:00.000-05:00'\n   * @example DateTime.local(2014, 3, 3).endOf('year').toISO(); //=> '2014-12-31T23:59:59.999-05:00'\n   * @example DateTime.local(2014, 3, 3, 5, 30).endOf('day').toISO(); //=> '2014-03-03T23:59:59.999-05:00'\n   * @example DateTime.local(2014, 3, 3, 5, 30).endOf('hour').toISO(); //=> '2014-03-03T05:59:59.999-05:00'\n   * @return {DateTime}\n   */\n  endOf(unit) {\n    return this.isValid\n      ? this.startOf(unit)\n          .plus({ [unit]: 1 })\n          .minus(1)\n      : this;\n  }\n\n  // OUTPUT\n\n  /**\n   * Returns a string representation of this DateTime formatted according to the specified format string.\n   * **You may not want this.** See {@link toLocaleString} for a more flexible formatting tool. See the documentation for the specific format tokens supported.\n   * @param {string} fmt - the format string\n   * @param {object} opts - options\n   * @param {boolean} opts.round - round numerical values\n   * @example DateTime.local().toFormat('yyyy LLL dd') //=> '2017 avr. 22'\n   * @example DateTime.local().setLocale('fr').toFormat('yyyy LLL dd') //=> '2017 Apr 22'\n   * @example DateTime.local().toFormat(\"HH 'hours and' mm 'minutes'\") //=> '20 hours and 55 minutes'\n   * @return {string}\n   */\n  toFormat(fmt, opts = {}) {\n    return this.isValid\n      ? Formatter.create(this.loc, opts).formatDateTimeFromString(this, fmt)\n      : INVALID;\n  }\n\n  /**\n   * Returns a localized string representing this date. Accepts the same options as the Intl.DateTimeFormat constructor and any presets defined by Luxon, such as `DateTime.DATE_FULL` or `DateTime.TIME_SIMPLE`.\n   * The exact behavior of this method is browser-specific, but in general it will return an appropriate representation.\n   * of the DateTime in the assigned locale.\n   * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n   * @param opts {object} - Intl.DateTimeFormat constructor options\n   * @example DateTime.local().toLocaleString(); //=> 4/20/2017\n   * @example DateTime.local().setLocale('en-gb').toLocaleString(); //=> '20/04/2017'\n   * @example DateTime.local().toLocaleString(DateTime.DATE_FULL); //=> 'April 20, 2017'\n   * @example DateTime.local().toLocaleString(DateTime.TIME_SIMPLE); //=> '11:32 AM'\n   * @example DateTime.local().toLocaleString(DateTime.DATETIME_SHORT); //=> '4/20/2017, 11:32 AM'\n   * @example DateTime.local().toLocaleString({weekday: 'long', month: 'long', day: '2-digit'}); //=> 'Thu, Apr 20'\n   * @example DateTime.local().toLocaleString({weekday: 'long', month: 'long', day: '2-digit', hour: '2-digit', minute: '2-digit'}); //=> 'Thu, Apr 20, 11:27'\n   * @example DateTime.local().toLocaleString({hour: '2-digit', minute: '2-digit'}); //=> '11:32'\n   * @return {string}\n   */\n  toLocaleString(opts = {}) {\n    return this.isValid\n      ? Formatter.create(this.loc.clone(opts), opts).formatDateTime(this)\n      : INVALID;\n  }\n\n  /**\n   * Returns an ISO 8601-compliant string representation of this DateTime\n   * @param {object} opts - options\n   * @param {boolean} opts.suppressMilliseconds - exclude milliseconds from the format if they're 0\n   * @param {boolean} opts.supressSeconds - exclude seconds from the format if they're 0\n   * @example DateTime.utc(1982, 5, 25).toISO() //=> '1982-05-25T00:00:00.000Z'\n   * @example DateTime.local().toISO() //=> '2017-04-22T20:47:05.335-04:00'\n   * @return {string}\n   */\n  toISO({ suppressMilliseconds = false, suppressSeconds = false } = {}) {\n    const f = `yyyy-MM-dd'T'${isoTimeFormat(this, suppressSeconds, suppressMilliseconds)}`;\n    return formatMaybe(this, f);\n  }\n\n  /**\n   * Returns an ISO 8601-compliant string representation of this DateTime's date component\n   * @example DateTime.utc(1982, 5, 25).toISODate() //=> '07:34:19.361Z'\n   * @return {string}\n   */\n  toISODate() {\n    return formatMaybe(this, 'yyyy-MM-dd');\n  }\n\n  /**\n   * Returns an ISO 8601-compliant string representation of this DateTime's week date\n   * @example DateTime.utc(1982, 5, 25).toISOWeekDate() //=> '1982-W21-2'\n   * @return {string}\n   */\n  toISOWeekDate() {\n    return formatMaybe(this, \"kkkk-'W'WW-c\");\n  }\n\n  /**\n   * Returns an ISO 8601-compliant string representation of this DateTime's time component\n   * @param {object} opts - options\n   * @param {boolean} opts.suppressMilliseconds - exclude milliseconds from the format if they're 0\n   * @param {boolean} opts.supressSeconds - exclude seconds from the format if they're 0\n   * @example DateTime.utc().hour(7).minute(34).toISOTime() //=> '07:34:19.361Z'\n   * @example DateTime.utc().hour(7).minute(34).toISOTime({ suppressSeconds: true }) //=> '07:34Z'\n   * @return {string}\n   */\n  toISOTime({ suppressMilliseconds = false, suppressSeconds = false } = {}) {\n    return formatMaybe(this, isoTimeFormat(this, suppressSeconds, suppressMilliseconds));\n  }\n\n  /**\n   * Returns an RFC 2822-compatible string representation of this DateTime, always in UTC\n   * @example DateTime.utc(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 +0000'\n   * @example DateTime.local(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 -0400'\n   * @return {string}\n   */\n  toRFC2822() {\n    return formatMaybe(this, 'EEE, dd LLL yyyy hh:mm:ss ZZZ');\n  }\n\n  /**\n   * Returns a string representation of this DateTime appropriate for use in HTTP headers.\n   * Specifically, the string conforms to RFC 1123.\n   * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n   * @example DateTime.utc(2014, 7, 13).toHTTP() //=> 'Sun, 13 Jul 2014 00:00:00 GMT'\n   * @return {string}\n   */\n  toHTTP() {\n    return formatMaybe(this.toUTC(), \"EEE, dd LLL yyyy hh:mm:ss 'GMT'\");\n  }\n\n  /**\n   * Returns a string representation of this DateTime appropriate for debugging\n   * @return {string}\n   */\n  toString() {\n    return this.isValid ? this.toISO() : INVALID;\n  }\n\n  /**\n   * Returns the epoch milliseconds of this DateTime\n   * @return {number}\n   */\n  valueOf() {\n    return this.isValid ? this.ts : NaN;\n  }\n\n  /**\n   * Returns an ISO 8601 representation of this DateTime appropriate for use in JSON.\n   * @return {string}\n   */\n  toJSON() {\n    return this.toISO();\n  }\n\n  /**\n   * Returns a Javascript object with this DateTime's year, month, day, and so on.\n   * @param opts - options for generating the object\n   * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output\n   * @example DateTime.local().toObject() //=> { year: 2017, month: 4, day: 22, hour: 20, minute: 49, second: 42, millisecond: 268 }\n   * @return {object}\n   */\n  toObject(opts = {}) {\n    if (!this.isValid) return {};\n\n    const base = Object.assign({}, this.c);\n\n    if (opts.includeConfig) {\n      base.outputCalendar = this.outputCalendar;\n      base.numberingSystem = this.loc.numberingSystem;\n      base.locale = this.loc.locale;\n    }\n    return base;\n  }\n\n  /**\n   * Returns a Javascript Date equivalent to this DateTime.\n   * @return {object}\n   */\n  toJSDate() {\n    return new Date(this.isValid ? this.ts : NaN);\n  }\n\n  // COMPARE\n\n  /**\n   * Return the difference between two DateTimes as a Duration.\n   * @param {DateTime} otherDateTime - the DateTime to compare this one to\n   * @param {string|string[]} [unit=['milliseconds']] - the unit or array of units (such as 'hours' or 'days') to include in the duration.\n   * @param {Object} opts - options that affect the creation of the Duration\n   * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n   * @example\n   * var i1 = DateTime.fromISO('1982-05-25T09:45'),\n   *     i2 = DateTime.fromISO('1983-10-14T10:30');\n   * i2.diff(i1).toObject() //=> { milliseconds: 43807500000 }\n   * i2.diff(i1, 'hours').toObject() //=> { hours: 12168.75 }\n   * i2.diff(i1, ['months', 'days']).toObject() //=> { months: 16, days: 19.03125 }\n   * i2.diff(i1, ['months', 'days', 'hours']).toObject() //=> { months: 16, days: 19, hours: 0.75 }\n   * @return {Duration}\n   */\n  diff(otherDateTime, unit = 'milliseconds', opts = {}) {\n    if (!this.isValid) return this;\n\n    const units = Util.maybeArray(unit).map(Duration.normalizeUnit);\n\n    const flipped = otherDateTime.valueOf() > this.valueOf(),\n      post = flipped ? otherDateTime : this,\n      accum = {};\n\n    let cursor = flipped ? this : otherDateTime,\n      lowestOrder = null;\n\n    if (units.indexOf('years') >= 0) {\n      let dYear = post.year - cursor.year;\n\n      cursor = cursor.set({ year: post.year });\n\n      if (cursor > post) {\n        cursor = cursor.minus({ years: 1 });\n        dYear -= 1;\n      }\n\n      accum.years = dYear;\n      lowestOrder = 'years';\n    }\n\n    if (units.indexOf('months') >= 0) {\n      const dYear = post.year - cursor.year;\n      let dMonth = post.month - cursor.month + dYear * 12;\n\n      cursor = cursor.set({ year: post.year, month: post.month });\n\n      if (cursor > post) {\n        cursor = cursor.minus({ months: 1 });\n        dMonth -= 1;\n      }\n\n      accum.months = dMonth;\n      lowestOrder = 'months';\n    }\n\n    const computeDayDelta = () => {\n      const utcDayStart = dt =>\n          dt\n            .toUTC(0, { keepCalendarTime: true })\n            .startOf('day')\n            .valueOf(),\n        ms = utcDayStart(post) - utcDayStart(cursor);\n      return Math.floor(Duration.fromMillis(ms, opts).shiftTo('days').days);\n    };\n\n    if (units.indexOf('weeks') >= 0) {\n      const days = computeDayDelta();\n      let weeks = (days - days % 7) / 7;\n      cursor = cursor.plus({ weeks });\n\n      if (cursor > post) {\n        cursor.minus({ weeks: 1 });\n        weeks -= 1;\n      }\n\n      accum.weeks = weeks;\n      lowestOrder = 'weeks';\n    }\n\n    if (units.indexOf('days') >= 0) {\n      let days = computeDayDelta();\n      cursor = cursor.set({\n        year: post.year,\n        month: post.month,\n        day: post.day\n      });\n\n      if (cursor > post) {\n        cursor.minus({ days: 1 });\n        days -= 1;\n      }\n\n      accum.days = days;\n      lowestOrder = 'days';\n    }\n\n    const remaining = Duration.fromMillis(post - cursor, opts),\n      moreUnits = units.filter(\n        u => ['hours', 'minutes', 'seconds', 'milliseconds'].indexOf(u) >= 0\n      ),\n      shiftTo = moreUnits.length > 0 ? moreUnits : [lowestOrder],\n      shifted = remaining.shiftTo(...shiftTo),\n      merged = shifted.plus(Duration.fromObject(Object.assign(accum, opts)));\n\n    return flipped ? merged.negate() : merged;\n  }\n\n  /**\n   * Return the difference between this DateTime and right now.\n   * See {@link diff}\n   * @param {string|string[]} [unit=['milliseconds']] - the unit or units units (such as 'hours' or 'days') to include in the duration\n   * @param {Object} opts - options that affect the creation of the Duration\n   * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n   * @return {Duration}\n   */\n  diffNow(unit, opts) {\n    return this.isValid ? this.diff(DateTime.local(), unit, opts) : this;\n  }\n\n  /**\n   * Return an Interval spanning between this DateTime and another DateTime\n   * @param {DateTime} otherDateTime - the other end point of the Interval\n   * @return {Duration}\n   */\n  until(otherDateTime) {\n    return this.isValid ? Interval.fromDateTimes(this, otherDateTime) : this;\n  }\n\n  /**\n   * Return whether this DateTime is in the same unit of time as another DateTime\n   * @param {DateTime} otherDateTime - the other DateTime\n   * @param {string} unit - the unit of time to check sameness on\n   * @example DateTime.local().hasSame(otherDT, 'day'); //~> true if both the same calendar day\n   * @return {boolean}\n   */\n  hasSame(otherDateTime, unit) {\n    if (!this.isValid) return false;\n    if (unit === 'millisecond') {\n      return this.valueOf() === otherDateTime.valueOf();\n    } else {\n      const inputMs = otherDateTime.valueOf();\n      return this.startOf(unit) <= inputMs && inputMs <= this.endOf(unit);\n    }\n  }\n\n  /**\n   * Equality check\n   * Two DateTimes are equal iff they represent the same millisecond\n   * @param {DateTime} other - the other DateTime\n   * @return {boolean}\n   */\n  equals(other) {\n    return this.isValid && other.isValid\n      ? this.valueOf() === other.valueOf() &&\n          this.zone.equals(other.zone) &&\n          this.loc.equals(other.loc)\n      : false;\n  }\n\n  /**\n   * Return the min of several date times\n   * @param {...DateTime} dateTimes - the DateTimes from which to choose the minimum\n   * @return {DateTime}\n   */\n  static min(...dateTimes) {\n    return Util.bestBy(dateTimes, i => i.valueOf(), Math.min);\n  }\n\n  /**\n   * Return the max of several date times\n   * @param {...DateTime} dateTimes - the DateTimes from which to choose the maximum\n   * @return {DateTime}\n   */\n  static max(...dateTimes) {\n    return Util.bestBy(dateTimes, i => i.valueOf(), Math.max);\n  }\n\n  // MISC\n\n  /**\n   * Explain how a string would be parsed by fromString()\n   * @param {string} text - the string to parse\n   * @param {string} fmt - the format the string is expected to be in (see description)\n   * @param {object} options - options taken by fromString()\n   * @return {object}\n   */\n  static fromStringExplain(text, fmt, options = {}) {\n    const parser = new TokenParser(Locale.fromOpts(options));\n    return parser.explainParse(text, fmt);\n  }\n\n  // FORMAT PRESETS\n\n  /**\n   * {@link toLocaleString} format like 10/14/1983\n   */\n  static get DATE_SHORT() {\n    return {\n      year: 'numeric',\n      month: 'numeric',\n      day: 'numeric'\n    };\n  }\n\n  /**\n   * {@link toLocaleString} format like 'Oct 14, 1983'\n   */\n  static get DATE_MED() {\n    return {\n      year: 'numeric',\n      month: 'short',\n      day: 'numeric'\n    };\n  }\n\n  /**\n   * {@link toLocaleString} format like 'October 14, 1983'\n   */\n  static get DATE_FULL() {\n    return {\n      year: 'numeric',\n      month: 'long',\n      day: 'numeric'\n    };\n  }\n\n  /**\n   * {@link toLocaleString} format like 'Tuesday, October 14, 1983'\n   */\n  static get DATE_HUGE() {\n    return {\n      year: 'numeric',\n      month: 'long',\n      day: 'numeric',\n      weekday: 'long'\n    };\n  }\n\n  /**\n   * {@link toLocaleString} format like '09:30 AM'. Only 12-hour if the locale is.\n   */\n  static get TIME_SIMPLE() {\n    return {\n      hour: 'numeric',\n      minute: '2-digit'\n    };\n  }\n\n  /**\n   * {@link toLocaleString} format like '09:30:23 AM'. Only 12-hour if the locale is.\n   */\n  static get TIME_WITH_SECONDS() {\n    return {\n      hour: 'numeric',\n      minute: '2-digit',\n      second: '2-digit'\n    };\n  }\n\n  /**\n   * {@link toLocaleString} format like '09:30:23 AM EDT'. Only 12-hour if the locale is.\n   */\n  static get TIME_WITH_SHORT_OFFSET() {\n    return {\n      hour: 'numeric',\n      minute: '2-digit',\n      second: '2-digit',\n      timeZoneName: 'short'\n    };\n  }\n\n  /**\n   * {@link toLocaleString} format like '09:30:23 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n   */\n  static get TIME_WITH_LONG_OFFSET() {\n    return {\n      hour: 'numeric',\n      minute: '2-digit',\n      second: '2-digit',\n      timeZoneName: 'long'\n    };\n  }\n\n  /**\n   * {@link toLocaleString} format like '09:30', always 24-hour.\n   */\n  static get TIME_24_SIMPLE() {\n    return {\n      hour: 'numeric',\n      minute: '2-digit',\n      hour12: false\n    };\n  }\n\n  /**\n   * {@link toLocaleString} format like '09:30:23', always 24-hour.\n   */\n  static get TIME_24_WITH_SECONDS() {\n    return {\n      hour: 'numeric',\n      minute: '2-digit',\n      second: '2-digit',\n      hour12: false\n    };\n  }\n\n  /**\n   * {@link toLocaleString} format like '09:30:23 EDT', always 24-hour.\n   */\n  static get TIME_24_WITH_SHORT_OFFSET() {\n    return {\n      hour: 'numeric',\n      minute: '2-digit',\n      second: '2-digit',\n      hour12: false,\n      timeZoneName: 'short'\n    };\n  }\n\n  /**\n   * {@link toLocaleString} format like '09:30:23 Eastern Daylight Time', always 24-hour.\n   */\n  static get TIME_24_WITH_LONG_OFFSET() {\n    return {\n      hour: 'numeric',\n      minute: '2-digit',\n      second: '2-digit',\n      hour12: false,\n      timeZoneName: 'long'\n    };\n  }\n\n  /**\n   * {@link toLocaleString} format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.\n   */\n  static get DATETIME_SHORT() {\n    return {\n      year: 'numeric',\n      month: 'numeric',\n      day: 'numeric',\n      hour: 'numeric',\n      minute: '2-digit'\n    };\n  }\n\n  /**\n   * {@link toLocaleString} format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.\n   */\n  static get DATETIME_SHORT_WITH_SECONDS() {\n    return {\n      year: 'numeric',\n      month: 'numeric',\n      day: 'numeric',\n      hour: 'numeric',\n      minute: '2-digit',\n      second: '2-digit'\n    };\n  }\n\n  /**\n   * {@link toLocaleString} format like 'Oct 14, 1983, 9:30 AM'. Only 12-hour if the locale is.\n   */\n  static get DATETIME_MED() {\n    return {\n      year: 'numeric',\n      month: 'short',\n      day: 'numeric',\n      hour: 'numeric',\n      minute: '2-digit'\n    };\n  }\n\n  /**\n   * {@link toLocaleString} format like 'Oct 14, 1983, 9:30:33 AM'. Only 12-hour if the locale is.\n   */\n  static get DATETIME_MED_WITH_SECONDS() {\n    return {\n      year: 'numeric',\n      month: 'short',\n      day: 'numeric',\n      hour: 'numeric',\n      minute: '2-digit',\n      second: '2-digit'\n    };\n  }\n\n  /**\n   * {@link toLocaleString} format like 'October 14, 1983, 9:30 AM EDT'. Only 12-hour if the locale is.\n   */\n  static get DATETIME_FULL() {\n    return {\n      year: 'numeric',\n      month: 'long',\n      day: 'numeric',\n      hour: 'numeric',\n      minute: '2-digit',\n      timeZoneName: 'short'\n    };\n  }\n\n  /**\n   * {@link toLocaleString} format like 'October 14, 1983, 9:303 AM EDT'. Only 12-hour if the locale is.\n   */\n  static get DATETIME_FULL_WITH_SECONDS() {\n    return {\n      year: 'numeric',\n      month: 'long',\n      day: 'numeric',\n      hour: 'numeric',\n      minute: '2-digit',\n      second: '2-digit',\n      timeZoneName: 'short'\n    };\n  }\n\n  /**\n   * {@link toLocaleString} format like 'Friday, October 14, 1983, 9:30 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n   */\n  static get DATETIME_HUGE() {\n    return {\n      year: 'numeric',\n      month: 'long',\n      day: 'numeric',\n      weekday: 'long',\n      hour: 'numeric',\n      minute: '2-digit',\n      timeZoneName: 'long'\n    };\n  }\n\n  /**\n   * {@link toLocaleString} format like 'Friday, October 14, 1983, 9:30:33 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n   */\n  static get DATETIME_HUGE_WITH_SECONDS() {\n    return {\n      year: 'numeric',\n      month: 'long',\n      day: 'numeric',\n      weekday: 'long',\n      hour: 'numeric',\n      minute: '2-digit',\n      second: '2-digit',\n      timeZoneName: 'long'\n    };\n  }\n}\n",
    "static": true,
    "longname": "src/datetime.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 1,
    "kind": "variable",
    "name": "INVALID",
    "memberof": "src/datetime.js",
    "static": true,
    "longname": "src/datetime.js~INVALID",
    "access": null,
    "export": false,
    "importPath": "luxon/src/datetime.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 19,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "string"
      ]
    }
  },
  {
    "__docId__": 2,
    "kind": "function",
    "name": "possiblyCachedWeekData",
    "memberof": "src/datetime.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~possiblyCachedWeekData",
    "access": null,
    "export": false,
    "importPath": "luxon/src/datetime.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 23,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "dt",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 3,
    "kind": "function",
    "name": "clone",
    "memberof": "src/datetime.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~clone",
    "access": null,
    "export": false,
    "importPath": "luxon/src/datetime.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 30,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "inst",
        "types": [
          "*"
        ]
      },
      {
        "name": "alts",
        "optional": true,
        "types": [
          "{}"
        ],
        "defaultRaw": {},
        "defaultValue": "{}"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 4,
    "kind": "function",
    "name": "fixOffset",
    "memberof": "src/datetime.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~fixOffset",
    "access": null,
    "export": false,
    "importPath": "luxon/src/datetime.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 42,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "localTS",
        "types": [
          "*"
        ]
      },
      {
        "name": "o",
        "types": [
          "*"
        ]
      },
      {
        "name": "tz",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "undefined[]"
      ]
    }
  },
  {
    "__docId__": 5,
    "kind": "function",
    "name": "tsToObj",
    "memberof": "src/datetime.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~tsToObj",
    "access": null,
    "export": false,
    "importPath": "luxon/src/datetime.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 67,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "ts",
        "types": [
          "*"
        ]
      },
      {
        "name": "offset",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "{\"year\": *, \"month\": *, \"day\": *, \"hour\": *, \"minute\": *, \"second\": *, \"millisecond\": *}"
      ]
    }
  },
  {
    "__docId__": 6,
    "kind": "function",
    "name": "objToLocalTS",
    "memberof": "src/datetime.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~objToLocalTS",
    "access": null,
    "export": false,
    "importPath": "luxon/src/datetime.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 83,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "obj",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 7,
    "kind": "function",
    "name": "objToTS",
    "memberof": "src/datetime.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~objToTS",
    "access": null,
    "export": false,
    "importPath": "luxon/src/datetime.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 102,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "obj",
        "types": [
          "*"
        ]
      },
      {
        "name": "offset",
        "types": [
          "*"
        ]
      },
      {
        "name": "zone",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 8,
    "kind": "function",
    "name": "adjustTime",
    "memberof": "src/datetime.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~adjustTime",
    "access": null,
    "export": false,
    "importPath": "luxon/src/datetime.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 106,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "inst",
        "types": [
          "*"
        ]
      },
      {
        "name": "dur",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "{\"ts\": *, \"o\": *}"
      ]
    }
  },
  {
    "__docId__": 9,
    "kind": "function",
    "name": "parseDataToDateTime",
    "memberof": "src/datetime.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~parseDataToDateTime",
    "access": null,
    "export": false,
    "importPath": "luxon/src/datetime.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 132,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "parsed",
        "types": [
          "*"
        ]
      },
      {
        "name": "parsedZone",
        "types": [
          "*"
        ]
      },
      {
        "name": "opts",
        "optional": true,
        "types": [
          "{}"
        ],
        "defaultRaw": {},
        "defaultValue": "{}"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 10,
    "kind": "function",
    "name": "formatMaybe",
    "memberof": "src/datetime.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~formatMaybe",
    "access": null,
    "export": false,
    "importPath": "luxon/src/datetime.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 147,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "dt",
        "types": [
          "*"
        ]
      },
      {
        "name": "format",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 11,
    "kind": "variable",
    "name": "defaultUnitValues",
    "memberof": "src/datetime.js",
    "static": true,
    "longname": "src/datetime.js~defaultUnitValues",
    "access": null,
    "export": false,
    "importPath": "luxon/src/datetime.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 153,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "{\"month\": number, \"day\": number, \"hour\": *, \"minute\": *, \"second\": *, \"millisecond\": *}"
      ]
    }
  },
  {
    "__docId__": 12,
    "kind": "function",
    "name": "isoTimeFormat",
    "memberof": "src/datetime.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~isoTimeFormat",
    "access": null,
    "export": false,
    "importPath": "luxon/src/datetime.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 177,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "dateTime",
        "types": [
          "*"
        ]
      },
      {
        "name": "suppressSecs",
        "types": [
          "*"
        ]
      },
      {
        "name": "suppressMillis",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 13,
    "kind": "variable",
    "name": "orderedUnits",
    "memberof": "src/datetime.js",
    "static": true,
    "longname": "src/datetime.js~orderedUnits",
    "access": null,
    "export": false,
    "importPath": "luxon/src/datetime.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 183,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "string[]"
      ]
    }
  },
  {
    "__docId__": 14,
    "kind": "variable",
    "name": "orderedWeekUnits",
    "memberof": "src/datetime.js",
    "static": true,
    "longname": "src/datetime.js~orderedWeekUnits",
    "access": null,
    "export": false,
    "importPath": "luxon/src/datetime.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 185,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "string[]"
      ]
    }
  },
  {
    "__docId__": 15,
    "kind": "variable",
    "name": "orderedOrdinalUnits",
    "memberof": "src/datetime.js",
    "static": true,
    "longname": "src/datetime.js~orderedOrdinalUnits",
    "access": null,
    "export": false,
    "importPath": "luxon/src/datetime.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 195,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "string[]"
      ]
    }
  },
  {
    "__docId__": 16,
    "kind": "function",
    "name": "normalizeUnit",
    "memberof": "src/datetime.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~normalizeUnit",
    "access": null,
    "export": false,
    "importPath": "luxon/src/datetime.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 197,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "unit",
        "types": [
          "*"
        ]
      },
      {
        "name": "ignoreUnknown",
        "optional": true,
        "types": [
          "boolean"
        ],
        "defaultRaw": false,
        "defaultValue": "false"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 17,
    "kind": "class",
    "name": "DateTime",
    "memberof": "src/datetime.js",
    "static": true,
    "longname": "src/datetime.js~DateTime",
    "access": null,
    "export": true,
    "importPath": "luxon/src/datetime.js",
    "importStyle": "{DateTime}",
    "description": "A DateTime is an immutable data structure representing a specific date and time and accompanying methods. It contains class and instance methods for creating, parsing, interrogating, transforming, and formatting them.\n\nA DateTime comprises of:\n* A timestamp. Each DateTime instance refers to a specific millisecond of the Unix epoch.\n* A time zone. Each instance is considered in the context of a specific zone (by default the local system's zone).\n* Configuration properties that effect how output strings are formatted, such as `locale`, `numberingSystem`, and `outputCalendar`.\n\nHere is a brief overview of the most commonly used functionality it provides:\n\n* **Creation**: To create a DateTime from its components, use one of its factory class methods: {@link local}, {@link utc}, and (most flexibly) {@link fromObject}. To create one from a standard string format, use {@link fromISO}, {@link fromHTTP}, and {@link fromRFC2822}. To create one from a custom string format, use {@link fromString}. To create one from a native JS date, use {@link fromJSDate}.\n* **Gregorian calendar and time**: To examine the Gregorian properties of a DateTime individually (i.e as opposed to collectively through {@link toObject}), use the {@link year}, {@link month},\n{@link day}, {@link hour}, {@link minute}, {@link second}, {@link millisecond} accessors.\n* **Week calendar**: For ISO week calendar attributes, see the {@link weekYear}, {@link weekNumber}, and {@link weekday} accessors.\n* **Configuration** See the {@link locale} and {@link numberingSystem} accessors.\n* **Transformation**: To transform the DateTime into other DateTimes, use {@link set}, {@link reconfigure}, {@link setZone}, {@link setLocale}, {@link plus}, {@link minus}, {@link endOf}, {@link startOf}, {@link toUTC}, and {@link toLocal}.\n* **Output**: To convert the DateTime to other representations, use the {@link toJSON}, {@link toISO}, {@link toHTTP}, {@link toObject}, {@link toRFC2822}, {@link toString}, {@link toLocaleString}, {@link toFormat}, and {@link valueOf}.\n\nThere's plenty others documented below. In addition, for more information on subtler topics like internationalization, time zones, alternative calendars, validity, and so on, see the external documentation.",
    "lineNumber": 248,
    "interface": false
  },
  {
    "__docId__": 18,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#constructor",
    "access": "private",
    "description": "",
    "lineNumber": 252,
    "params": [
      {
        "name": "config",
        "optional": true,
        "types": [
          "{}"
        ],
        "defaultRaw": {},
        "defaultValue": "{}"
      }
    ]
  },
  {
    "__docId__": 19,
    "kind": "method",
    "name": "local",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.local",
    "access": null,
    "description": "Create a local DateTime",
    "examples": [
      "DateTime.local()                            //~> now",
      "DateTime.local(2017)                        //~> 2017-01-01T00:00:00",
      "DateTime.local(2017, 3)                     //~> 2017-03-01T00:00:00",
      "DateTime.local(2017, 3, 12)                 //~> 2017-03-12T00:00:00",
      "DateTime.local(2017, 3, 12, 5)              //~> 2017-03-12T05:00:00",
      "DateTime.local(2017, 3, 12, 5, 45)          //~> 2017-03-12T05:45:00",
      "DateTime.local(2017, 3, 12, 5, 45, 10)      //~> 2017-03-12T05:45:10",
      "DateTime.local(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.675"
    ],
    "lineNumber": 314,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "year",
        "description": "The calendar year. If omitted (as in, call `local()` with no arguments), the current time will be used"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "1",
        "defaultRaw": 1,
        "name": "month",
        "description": "The month, 1-indexed"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "1",
        "defaultRaw": 1,
        "name": "day",
        "description": "The day of the month"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "0",
        "defaultRaw": 0,
        "name": "hour",
        "description": "The hour of the day, in 24-hour time"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "0",
        "defaultRaw": 0,
        "name": "minute",
        "description": "The minute of the hour, i.e. a number between 0 and 59"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "0",
        "defaultRaw": 0,
        "name": "second",
        "description": "The second of the minute, i.e. a number between 0 and 59"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "0",
        "defaultRaw": 0,
        "name": "millisecond",
        "description": "The millisecond of the second, i.e. a number between 0 and 999"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "DateTime"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 20,
    "kind": "method",
    "name": "utc",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.utc",
    "access": null,
    "description": "Create a DateTime in UTC",
    "examples": [
      "DateTime.utc()                            //~> now",
      "DateTime.utc(2017)                        //~> 2017-01-01T00:00:00Z",
      "DateTime.utc(2017, 3)                     //~> 2017-03-01T00:00:00Z",
      "DateTime.utc(2017, 3, 12)                 //~> 2017-03-12T00:00:00Z",
      "DateTime.utc(2017, 3, 12, 5)              //~> 2017-03-12T05:00:00Z",
      "DateTime.utc(2017, 3, 12, 5, 45)          //~> 2017-03-12T05:45:00Z",
      "DateTime.utc(2017, 3, 12, 5, 45, 10)      //~> 2017-03-12T05:45:10Z",
      "DateTime.utc(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.675Z"
    ],
    "lineNumber": 350,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "year",
        "description": "The calendar year. If omitted (as in, call `utc()` with no arguments), the current time will be used"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "1",
        "defaultRaw": 1,
        "name": "month",
        "description": "The month, 1-indexed"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "1",
        "defaultRaw": 1,
        "name": "day",
        "description": "The day of the month"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "0",
        "defaultRaw": 0,
        "name": "hour",
        "description": "The hour of the day, in 24-hour time"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "0",
        "defaultRaw": 0,
        "name": "minute",
        "description": "The minute of the hour, i.e. a number between 0 and 59"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "0",
        "defaultRaw": 0,
        "name": "second",
        "description": "The second of the minute, i.e. a number between 0 and 59"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "0",
        "defaultRaw": 0,
        "name": "millisecond",
        "description": "The millisecond of the second, i.e. a number between 0 and 999"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "DateTime"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 21,
    "kind": "method",
    "name": "fromJSDate",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.fromJSDate",
    "access": null,
    "description": "Create an DateTime from a Javascript Date object. Uses the default zone.",
    "lineNumber": 377,
    "params": [
      {
        "nullable": null,
        "types": [
          "Date",
          "Any"
        ],
        "spread": false,
        "optional": false,
        "name": "date",
        "description": "a Javascript Date object"
      },
      {
        "nullable": null,
        "types": [
          "Object"
        ],
        "spread": false,
        "optional": false,
        "name": "options",
        "description": "configuration options for the DateTime"
      },
      {
        "nullable": null,
        "types": [
          "string",
          "Zone"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'local'",
        "defaultRaw": "'local'",
        "name": "options.zone",
        "description": "the zone to place the DateTime into"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "DateTime"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 22,
    "kind": "method",
    "name": "fromMillis",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.fromMillis",
    "access": null,
    "description": "Create an DateTime from a count of epoch milliseconds. Uses the default zone.",
    "lineNumber": 395,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "milliseconds",
        "description": "a number of milliseconds since 1970 UTC"
      },
      {
        "nullable": null,
        "types": [
          "Object"
        ],
        "spread": false,
        "optional": false,
        "name": "options",
        "description": "configuration options for the DateTime"
      },
      {
        "nullable": null,
        "types": [
          "string",
          "Zone"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'local'",
        "defaultRaw": "'local'",
        "name": "options.zone",
        "description": "the zone to place the DateTime into"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'en-US'",
        "defaultRaw": "'en-US'",
        "name": "options.locale",
        "description": "a locale to set on the resulting DateTime instance"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "options.outputCalendar",
        "description": "the output calendar to set on the resulting DateTime instance"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "options.numberingSystem",
        "description": "the numbering system to set on the resulting DateTime instance"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "DateTime"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 23,
    "kind": "method",
    "name": "fromObject",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.fromObject",
    "access": null,
    "description": "Create an DateTime from a Javascript object with keys like 'year' and 'hour' with reasonable defaults.",
    "examples": [
      "DateTime.fromObject({ year: 1982, month: 5, day: 25}).toISODate() //=> '1982-05-25'",
      "DateTime.fromObject({ year: 1982 }).toISODate() //=> '1982-01-01T00'",
      "DateTime.fromObject({ hour: 10, minute: 26, second: 6 }) //~> today at 10:26:06",
      "DateTime.fromObject({ hour: 10, minute: 26, second: 6, zone: 'utc' }),",
      "DateTime.fromObject({ hour: 10, minute: 26, second: 6, zone: 'local' })",
      "DateTime.fromObject({ hour: 10, minute: 26, second: 6, zone: 'America/New_York' })",
      "DateTime.fromObject({ weekYear: 2016, weekNumber: 2, weekday: 3 }).toISODate() //=> '2016-01-13'"
    ],
    "lineNumber": 430,
    "params": [
      {
        "nullable": null,
        "types": [
          "Object"
        ],
        "spread": false,
        "optional": false,
        "name": "obj",
        "description": "the object to create the DateTime from"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "obj.year",
        "description": "a year, such as 1987"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "obj.month",
        "description": "a month, 1-12"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "obj.day",
        "description": "a day of the month, 1-31, depending on the month"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "obj.ordinal",
        "description": "day of the year, 1-365 or 366"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "obj.weekYear",
        "description": "an ISO week year"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "obj.weekNumber",
        "description": "an ISO week number, between 1 and 52 or 53, depending on the year"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "obj.weekday",
        "description": "an ISO weekday, 1-7, where 1 is Monday and 7 is Sunday"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "obj.hour",
        "description": "hour of the day, 0-23"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "obj.minute",
        "description": "minute of the hour, 0-59"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "obj.second",
        "description": "second of the minute, 0-59"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "obj.millisecond",
        "description": "millisecond of the second, 0-999"
      },
      {
        "nullable": null,
        "types": [
          "string",
          "Zone"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'local'",
        "defaultRaw": "'local'",
        "name": "obj.zone",
        "description": "interpret the numbers in the context of a particular zone. Can take any value taken as the first argument to setZone()"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'en-US'",
        "defaultRaw": "'en-US'",
        "name": "obj.locale",
        "description": "a locale to set on the resulting DateTime instance"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "obj.outputCalendar",
        "description": "the output calendar to set on the resulting DateTime instance"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "obj.numberingSystem",
        "description": "the numbering system to set on the resulting DateTime instance"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "DateTime"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 24,
    "kind": "method",
    "name": "fromISO",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.fromISO",
    "access": null,
    "description": "Create a DateTime from an ISO 8601 string",
    "examples": [
      "DateTime.fromISO('2016-05-25T09:08:34.123')",
      "DateTime.fromISO('2016-05-25T09:08:34.123+06:00')",
      "DateTime.fromISO('2016-05-25T09:08:34.123+06:00', {setZone: true})",
      "DateTime.fromISO('2016-05-25T09:08:34.123', {zone: 'utc')",
      "DateTime.fromISO('2016-W05-4')"
    ],
    "lineNumber": 542,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "text",
        "description": "the ISO string"
      },
      {
        "nullable": null,
        "types": [
          "Object"
        ],
        "spread": false,
        "optional": false,
        "name": "opts",
        "description": "options to affect the creation"
      },
      {
        "nullable": null,
        "types": [
          "boolean"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'local'",
        "defaultRaw": "'local'",
        "name": "opts.zone",
        "description": "use this zone if no offset is specified in the input string itself. Will also convert the time to this zone"
      },
      {
        "nullable": null,
        "types": [
          "boolean"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "false",
        "defaultRaw": false,
        "name": "opts.setZone",
        "description": "override the zone with a fixed-offset zone specified in the string itself, if it specifies one"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'en-US'",
        "defaultRaw": "'en-US'",
        "name": "opts.locale",
        "description": "a locale to set on the resulting DateTime instance"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "opts.outputCalendar",
        "description": "the output calendar to set on the resulting DateTime instance"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "opts.numberingSystem",
        "description": "the numbering system to set on the resulting DateTime instance"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "DateTime"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 25,
    "kind": "method",
    "name": "fromRFC2822",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.fromRFC2822",
    "access": null,
    "description": "Create a DateTime from an RFC 2822 string",
    "examples": [
      "DateTime.fromRFC2822('25 Nov 2016 13:23:12 GMT')",
      "DateTime.fromRFC2822('Tue, 25 Nov 2016 13:23:12 +0600')",
      "DateTime.fromRFC2822('25 Nov 2016 13:23 Z')"
    ],
    "lineNumber": 561,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "text",
        "description": "the RFC 2822 string"
      },
      {
        "nullable": null,
        "types": [
          "Object"
        ],
        "spread": false,
        "optional": false,
        "name": "opts",
        "description": "options to affect the creation"
      },
      {
        "nullable": null,
        "types": [
          "boolean"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'local'",
        "defaultRaw": "'local'",
        "name": "opts.zone",
        "description": "convert the time to this zone. Since the offset is always specified in the string itself, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in."
      },
      {
        "nullable": null,
        "types": [
          "boolean"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "false",
        "defaultRaw": false,
        "name": "opts.setZone",
        "description": "override the zone with a fixed-offset zone specified in the string itself, if it specifies one"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'en-US'",
        "defaultRaw": "'en-US'",
        "name": "opts.locale",
        "description": "a locale to set on the resulting DateTime instance"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "opts.outputCalendar",
        "description": "the output calendar to set on the resulting DateTime instance"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "opts.numberingSystem",
        "description": "the numbering system to set on the resulting DateTime instance"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "DateTime"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 26,
    "kind": "method",
    "name": "fromHTTP",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.fromHTTP",
    "access": null,
    "description": "Create a DateTime from an HTTP header date",
    "examples": [
      "DateTime.fromHTTP('Sun, 06 Nov 1994 08:49:37 GMT')",
      "DateTime.fromHTTP('Sunday, 06-Nov-94 08:49:37 GMT')",
      "DateTime.fromHTTP('Sun Nov  6 08:49:37 1994')"
    ],
    "see": [
      "https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1"
    ],
    "lineNumber": 581,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "text",
        "description": "the HTTP header date"
      },
      {
        "nullable": null,
        "types": [
          "object"
        ],
        "spread": false,
        "optional": false,
        "name": "options",
        "description": "options to affect the creation"
      },
      {
        "nullable": null,
        "types": [
          "boolean"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'local'",
        "defaultRaw": "'local'",
        "name": "options.zone",
        "description": "convert the time to this zone. Since HTTP dates are always in UTC, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in."
      },
      {
        "nullable": null,
        "types": [
          "boolean"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "false",
        "defaultRaw": false,
        "name": "options.setZone",
        "description": "override the zone with the fixed-offset zone specified in the string. For HTTP dates, this is always UTC, so this option is equivalent to setting the `zone` option to 'utc', but this option is included for consistency with similar methods."
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'en-US'",
        "defaultRaw": "'en-US'",
        "name": "options.locale",
        "description": "a locale to set on the resulting DateTime instance"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "options.outputCalendar",
        "description": "the output calendar to set on the resulting DateTime instance"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "options.numberingSystem",
        "description": "the numbering system to set on the resulting DateTime instance"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "DateTime"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 27,
    "kind": "method",
    "name": "fromString",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.fromString",
    "access": null,
    "description": "Create a DateTime from an input string and format string",
    "lineNumber": 598,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "text",
        "description": "the string to parse"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "fmt",
        "description": "the format the string is expected to be in (see description)"
      },
      {
        "nullable": null,
        "types": [
          "Object"
        ],
        "spread": false,
        "optional": false,
        "name": "options",
        "description": "options to affect the creation"
      },
      {
        "nullable": null,
        "types": [
          "boolean"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'local'",
        "defaultRaw": "'local'",
        "name": "options.zone",
        "description": "use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone"
      },
      {
        "nullable": null,
        "types": [
          "boolean"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "false",
        "defaultRaw": false,
        "name": "options.setZone",
        "description": "override the zone with a zone specified in the string itself, if it specifies one"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'en-US'",
        "defaultRaw": "'en-US'",
        "name": "options.locale",
        "description": "a locale string to use when parsing. Will also set the DateTime to this locale"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "options.numberingSystem",
        "description": "the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "options.outputCalendar",
        "description": "the output calendar to set on the resulting DateTime instance"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "DateTime"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 28,
    "kind": "method",
    "name": "invalid",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.invalid",
    "access": null,
    "description": "Create an invalid DateTime.",
    "lineNumber": 613,
    "params": [
      {
        "name": "reason",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "DateTime"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 29,
    "kind": "method",
    "name": "get",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#get",
    "access": null,
    "description": "Get the value of unit.",
    "examples": [
      "DateTime.local(2017, 7, 4).get('month'); //=> 7",
      "DateTime.local(2017, 7, 4).get('day'); //=> 4"
    ],
    "lineNumber": 633,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "unit",
        "description": "a unit such as 'minute' or 'day'"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 30,
    "kind": "get",
    "name": "isValid",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#isValid",
    "access": null,
    "description": "Returns whether the DateTime is valid. Invalid DateTimes occur when:\n* The DateTime was created from invalid calendar information, such as the 13th month or February 30\n* The DateTime was created by an operation on another invalid date",
    "lineNumber": 643,
    "return": {
      "nullable": null,
      "types": [
        "boolean"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 31,
    "kind": "get",
    "name": "invalidReason",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#invalidReason",
    "access": null,
    "description": "Returns an explanation of why this DateTime became invalid, or null if the DateTime is valid",
    "lineNumber": 651,
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 32,
    "kind": "get",
    "name": "locale",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#locale",
    "access": null,
    "description": "Get the locale of a DateTime, such 'en-GB'. The locale is used when formatting the DateTime",
    "lineNumber": 660,
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 33,
    "kind": "get",
    "name": "numberingSystem",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#numberingSystem",
    "access": null,
    "description": "Get the numbering system of a DateTime, such 'beng'. The numbering system is used when formatting the DateTime",
    "lineNumber": 669,
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 34,
    "kind": "get",
    "name": "outputCalendar",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#outputCalendar",
    "access": null,
    "description": "Get the output calendar of a DateTime, such 'islamic'. The output calendar is used when formatting the DateTime",
    "lineNumber": 678,
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 35,
    "kind": "get",
    "name": "zoneName",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#zoneName",
    "access": null,
    "description": "Get the name of the time zone.",
    "lineNumber": 686,
    "return": {
      "nullable": null,
      "types": [
        "String"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 36,
    "kind": "get",
    "name": "year",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#year",
    "access": null,
    "description": "Get the year",
    "examples": [
      "DateTime.local(2017, 5, 25).year //=> 2017"
    ],
    "lineNumber": 695,
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 37,
    "kind": "get",
    "name": "month",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#month",
    "access": null,
    "description": "Get the month (1-12).",
    "examples": [
      "DateTime.local(2017, 5, 25).month //=> 5"
    ],
    "lineNumber": 704,
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 38,
    "kind": "get",
    "name": "day",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#day",
    "access": null,
    "description": "Get the day of the month (1-30ish).",
    "examples": [
      "DateTime.local(2017, 5, 25).day //=> 25"
    ],
    "lineNumber": 713,
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 39,
    "kind": "get",
    "name": "hour",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#hour",
    "access": null,
    "description": "Get the hour of the day (0-23).",
    "examples": [
      "DateTime.local(2017, 5, 25, 9).hour //=> 9"
    ],
    "lineNumber": 722,
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 40,
    "kind": "get",
    "name": "minute",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#minute",
    "access": null,
    "description": "Get the minute of the hour (0-59).",
    "examples": [
      "DateTime.local(2017, 5, 25, 9, 30).minute //=> 30"
    ],
    "lineNumber": 731,
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 41,
    "kind": "get",
    "name": "second",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#second",
    "access": null,
    "description": "Get the second of the minute (0-59).",
    "examples": [
      "DateTime.local(2017, 5, 25, 9, 30, 52).second //=> 52"
    ],
    "lineNumber": 740,
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 42,
    "kind": "get",
    "name": "millisecond",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#millisecond",
    "access": null,
    "description": "Get the millisecond of the second (0-999).",
    "examples": [
      "DateTime.local(2017, 5, 25, 9, 30, 52, 654).millisecond //=> 654"
    ],
    "lineNumber": 749,
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 43,
    "kind": "get",
    "name": "weekYear",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#weekYear",
    "access": null,
    "description": "Get the week year",
    "examples": [
      "DateTime.local(2014, 11, 31).weekYear //=> 2015"
    ],
    "see": [
      "https://en.wikipedia.org/wiki/ISO_week_date"
    ],
    "lineNumber": 759,
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 44,
    "kind": "get",
    "name": "weekNumber",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#weekNumber",
    "access": null,
    "description": "Get the week number of the week year (1-52ish).",
    "examples": [
      "DateTime.local(2017, 5, 25).weekNumber //=> 21"
    ],
    "see": [
      "https://en.wikipedia.org/wiki/ISO_week_date"
    ],
    "lineNumber": 769,
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 45,
    "kind": "get",
    "name": "weekday",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#weekday",
    "access": null,
    "description": "Get the day of the week.\n1 is Monday and 7 is Sunday",
    "examples": [
      "DateTime.local(2014, 11, 31).weekday //=> 4"
    ],
    "see": [
      "https://en.wikipedia.org/wiki/ISO_week_date"
    ],
    "lineNumber": 780,
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 46,
    "kind": "get",
    "name": "ordinal",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#ordinal",
    "access": null,
    "description": "Get the ordinal (i.e. the day of the year)",
    "examples": [
      "DateTime.local(2017, 5, 25).ordinal //=> 145"
    ],
    "lineNumber": 789,
    "return": {
      "nullable": null,
      "types": [
        "number",
        "DateTime"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 47,
    "kind": "get",
    "name": "offset",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#offset",
    "access": null,
    "description": "Get the UTC offset of this DateTime in minutes",
    "examples": [
      "DateTime.local().offset //=> -240",
      "DateTime.utc().offset //=> 0"
    ],
    "lineNumber": 799,
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 48,
    "kind": "get",
    "name": "offsetNameShort",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#offsetNameShort",
    "access": null,
    "description": "Get the short human name for the zone's current offset, for example \"EST\" or \"EDT\".",
    "lineNumber": 807,
    "return": {
      "nullable": null,
      "types": [
        "String"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 49,
    "kind": "get",
    "name": "offsetNameLong",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#offsetNameLong",
    "access": null,
    "description": "Get the long human name for the zone's current offset, for example \"Eastern Standard Time\" or \"Eastern Daylight Time\".\nIs locale-aware.",
    "lineNumber": 823,
    "return": {
      "nullable": null,
      "types": [
        "String"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 50,
    "kind": "get",
    "name": "isOffsetFixed",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#isOffsetFixed",
    "access": null,
    "description": "Get whether this zone's offset ever changes, as in a DST.",
    "lineNumber": 838,
    "return": {
      "nullable": null,
      "types": [
        "boolean"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 51,
    "kind": "get",
    "name": "isInDST",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#isInDST",
    "access": null,
    "description": "Get whether the DateTime is in a DST.",
    "lineNumber": 846,
    "return": {
      "nullable": null,
      "types": [
        "boolean"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 52,
    "kind": "get",
    "name": "isInLeapYear",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#isInLeapYear",
    "access": null,
    "description": "Returns true if this DateTime is in a leap year, false otherwise",
    "examples": [
      "DateTime.local(2016).isInLeapYear //=> true",
      "DateTime.local(2013).isInLeapYear //=> false"
    ],
    "lineNumber": 862,
    "return": {
      "nullable": null,
      "types": [
        "boolean"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 53,
    "kind": "get",
    "name": "daysInMonth",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#daysInMonth",
    "access": null,
    "description": "Returns the number of days in this DateTime's month",
    "examples": [
      "DateTime.local(2016, 2).daysInMonth //=> 29",
      "DateTime.local(2016, 3).days //=> 31"
    ],
    "lineNumber": 872,
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 54,
    "kind": "get",
    "name": "daysInYear",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#daysInYear",
    "access": null,
    "description": "Returns the number of days in this DateTime's year",
    "examples": [
      "DateTime.local(2016).daysInYear //=> 366",
      "DateTime.local(2013).daysInYear //=> 365"
    ],
    "lineNumber": 882,
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 55,
    "kind": "method",
    "name": "resolvedLocaleOpts",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#resolvedLocaleOpts",
    "access": null,
    "description": "Returns the resolved Intl options for this DateTime.\nThis is useful in understanding the behavior of parsing and formatting methods",
    "lineNumber": 892,
    "params": [
      {
        "nullable": null,
        "types": [
          "object"
        ],
        "spread": false,
        "optional": false,
        "name": "opts",
        "description": "the same options as toLocaleString"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "object"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 56,
    "kind": "method",
    "name": "toUTC",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#toUTC",
    "access": null,
    "description": "\"Set\" the DateTime's zone to UTC. Returns a newly-constructed DateTime.\n\nEquivalent to {@link setZone}('utc')",
    "lineNumber": 910,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "0",
        "defaultRaw": 0,
        "name": "offset",
        "description": "optionally, an offset from UTC in minutes"
      },
      {
        "nullable": null,
        "types": [
          "object"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "{}",
        "defaultRaw": {},
        "name": "opts",
        "description": "options to pass to `setZone()`"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "DateTime"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 57,
    "kind": "method",
    "name": "toLocal",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#toLocal",
    "access": null,
    "description": "\"Set\" the DateTime's zone to the host's local zone. Returns a newly-constructed DateTime.\n\nEquivalent to `setZone('local')`",
    "lineNumber": 920,
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "DateTime"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 58,
    "kind": "method",
    "name": "setZone",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#setZone",
    "access": null,
    "description": "\"Set\" the DateTime's zone to specified zone. Returns a newly-constructed DateTime.\n\nBy default, the setter keeps the underlying time the same (as in, the same UTC timestamp), but the new instance will report different local times and consider DSTs when making computations, as with {@link plus}. You may wish to use {@link toLocal} and {@link toUTC} which provide simple convenience wrappers for commonly used zones.",
    "lineNumber": 933,
    "params": [
      {
        "nullable": null,
        "types": [
          "string",
          "Zone"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'local'",
        "defaultRaw": "'local'",
        "name": "zone",
        "description": "a zone identifier. As a string, that can be any IANA zone supported by the host environment, or a fixed-offset name of the form 'utc+3', or the strings 'local' or 'utc'. You may also supply an instance of a {@link Zone} class."
      },
      {
        "nullable": null,
        "types": [
          "object"
        ],
        "spread": false,
        "optional": false,
        "name": "opts",
        "description": "options"
      },
      {
        "nullable": null,
        "types": [
          "boolean"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "false",
        "defaultRaw": false,
        "name": "opts.keepCalendarTime",
        "description": "If true, adjust the underlying time so that the local time stays the same, but in the target zone. You should rarely need this."
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "DateTime"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 59,
    "kind": "method",
    "name": "reconfigure",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#reconfigure",
    "access": null,
    "description": "\"Set\" the locale, numberingSystem, or outputCalendar. Returns a newly-constructed DateTime.",
    "examples": [
      "DateTime.local(2017, 5, 25).reconfigure({ locale: 'en-GB' })"
    ],
    "lineNumber": 953,
    "params": [
      {
        "nullable": null,
        "types": [
          "object"
        ],
        "spread": false,
        "optional": false,
        "name": "properties",
        "description": "the properties to set"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "DateTime"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 60,
    "kind": "method",
    "name": "setLocale",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#setLocale",
    "access": null,
    "description": "\"Set\" the locale. Returns a newly-constructed DateTime.\nJust a convenient alias for reconfigure({ locale })",
    "examples": [
      "DateTime.local(2017, 5, 25).setLocale('en-GB')"
    ],
    "lineNumber": 964,
    "params": [
      {
        "name": "locale",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "DateTime"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 61,
    "kind": "method",
    "name": "set",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#set",
    "access": null,
    "description": "\"Set\" the values of specified units. Returns a newly-constructed DateTime.",
    "examples": [
      "dt.set({ year: 2017 })",
      "dt.set({ hour: 8, minute: 30 })",
      "dt.set({ weekday: 5 })",
      "dt.set({ year: 2005, ordinal: 234 })",
      "dt.set({ outputCalendar: 'beng', zone: 'utc' })"
    ],
    "lineNumber": 978,
    "params": [
      {
        "nullable": null,
        "types": [
          "object"
        ],
        "spread": false,
        "optional": false,
        "name": "values",
        "description": "a mapping of units to numbers"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "DateTime"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 62,
    "kind": "method",
    "name": "plus",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#plus",
    "access": null,
    "description": "Add a period of time to this DateTime and return the resulting DateTime\n\nAdding hours, minutes, seconds, or milliseconds increases the timestamp by the right number of milliseconds. Adding days, months, or years shifts the calendar, accounting for DSTs and leap years along the way. Thus, `dt.plus({ hours: 24 })` may result in a different time than `dt.plus({ days: 1 })` if there's a DST shift in between.",
    "examples": [
      "DateTime.local().plus(123) //~> in 123 milliseconds",
      "DateTime.local().plus({ minutes: 15 }) //~> in 15 minutes",
      "DateTime.local().plus({ days: 1 }) //~> this time tomorrow",
      "DateTime.local().plus({ hours: 3, minutes: 13 }) //~> in 1 hr, 13 min",
      "DateTime.local().plus(Duration.fromObject({ hours: 3, minutes: 13 })) //~> in 1 hr, 13 min"
    ],
    "lineNumber": 1020,
    "params": [
      {
        "nullable": null,
        "types": [
          "Duration",
          "number",
          "object"
        ],
        "spread": false,
        "optional": false,
        "name": "duration",
        "description": "The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "DateTime"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 63,
    "kind": "method",
    "name": "minus",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#minus",
    "access": null,
    "description": "Subtract a period of time to this DateTime and return the resulting DateTime\nSee {@link plus}",
    "lineNumber": 1032,
    "params": [
      {
        "nullable": null,
        "types": [
          "Duration",
          "number",
          "object"
        ],
        "spread": false,
        "optional": false,
        "name": "duration",
        "description": "The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "DateTime"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 64,
    "kind": "method",
    "name": "startOf",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#startOf",
    "access": null,
    "description": "\"Set\" this DateTime to the beginning of a unit of time.",
    "examples": [
      "DateTime.local(2014, 3, 3).startOf('month').toISODate(); //=> '2014-03-01'",
      "DateTime.local(2014, 3, 3).startOf('year').toISODate(); //=> '2014-01-01'",
      "DateTime.local(2014, 3, 3, 5, 30).startOf('day').toISOTime(); //=> '00:00.000-05:00'",
      "DateTime.local(2014, 3, 3, 5, 30).startOf('hour').toISOTime(); //=> '05:00:00.000-05:00'"
    ],
    "lineNumber": 1047,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "unit",
        "description": "The unit to go to the beginning of. Can be 'year', 'month', 'day', 'hour', 'minute', 'second', or 'millisecond'."
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "DateTime"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 65,
    "kind": "method",
    "name": "endOf",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#endOf",
    "access": null,
    "description": "\"Set\" this DateTime to the end (i.e. the last millisecond) of a unit of time",
    "examples": [
      "DateTime.local(2014, 3, 3).endOf('month').toISO(); //=> '2014-03-03T00:00:00.000-05:00'",
      "DateTime.local(2014, 3, 3).endOf('year').toISO(); //=> '2014-12-31T23:59:59.999-05:00'",
      "DateTime.local(2014, 3, 3, 5, 30).endOf('day').toISO(); //=> '2014-03-03T23:59:59.999-05:00'",
      "DateTime.local(2014, 3, 3, 5, 30).endOf('hour').toISO(); //=> '2014-03-03T05:59:59.999-05:00'"
    ],
    "lineNumber": 1091,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "unit",
        "description": "The unit to go to the end of. Can be 'year', 'month', 'day', 'hour', 'minute', 'second', or 'millisecond'."
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "DateTime"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 66,
    "kind": "method",
    "name": "toFormat",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#toFormat",
    "access": null,
    "description": "Returns a string representation of this DateTime formatted according to the specified format string.\n**You may not want this.** See {@link toLocaleString} for a more flexible formatting tool. See the documentation for the specific format tokens supported.",
    "examples": [
      "DateTime.local().toFormat('yyyy LLL dd') //=> '2017 avr. 22'",
      "DateTime.local().setLocale('fr').toFormat('yyyy LLL dd') //=> '2017 Apr 22'",
      "DateTime.local().toFormat(\"HH 'hours and' mm 'minutes'\") //=> '20 hours and 55 minutes'"
    ],
    "lineNumber": 1112,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "fmt",
        "description": "the format string"
      },
      {
        "nullable": null,
        "types": [
          "object"
        ],
        "spread": false,
        "optional": false,
        "name": "opts",
        "description": "options"
      },
      {
        "nullable": null,
        "types": [
          "boolean"
        ],
        "spread": false,
        "optional": false,
        "name": "opts.round",
        "description": "round numerical values"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 67,
    "kind": "method",
    "name": "toLocaleString",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#toLocaleString",
    "access": null,
    "description": "Returns a localized string representing this date. Accepts the same options as the Intl.DateTimeFormat constructor and any presets defined by Luxon, such as `DateTime.DATE_FULL` or `DateTime.TIME_SIMPLE`.\nThe exact behavior of this method is browser-specific, but in general it will return an appropriate representation.\nof the DateTime in the assigned locale.",
    "examples": [
      "DateTime.local().toLocaleString(); //=> 4/20/2017",
      "DateTime.local().setLocale('en-gb').toLocaleString(); //=> '20/04/2017'",
      "DateTime.local().toLocaleString(DateTime.DATE_FULL); //=> 'April 20, 2017'",
      "DateTime.local().toLocaleString(DateTime.TIME_SIMPLE); //=> '11:32 AM'",
      "DateTime.local().toLocaleString(DateTime.DATETIME_SHORT); //=> '4/20/2017, 11:32 AM'",
      "DateTime.local().toLocaleString({weekday: 'long', month: 'long', day: '2-digit'}); //=> 'Thu, Apr 20'",
      "DateTime.local().toLocaleString({weekday: 'long', month: 'long', day: '2-digit', hour: '2-digit', minute: '2-digit'}); //=> 'Thu, Apr 20, 11:27'",
      "DateTime.local().toLocaleString({hour: '2-digit', minute: '2-digit'}); //=> '11:32'"
    ],
    "see": [
      "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat"
    ],
    "lineNumber": 1134,
    "params": [
      {
        "nullable": null,
        "types": [
          "*"
        ],
        "spread": false,
        "optional": false,
        "name": "opts",
        "description": "{object} - Intl.DateTimeFormat constructor options"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 68,
    "kind": "method",
    "name": "toISO",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#toISO",
    "access": null,
    "description": "Returns an ISO 8601-compliant string representation of this DateTime",
    "examples": [
      "DateTime.utc(1982, 5, 25).toISO() //=> '1982-05-25T00:00:00.000Z'",
      "DateTime.local().toISO() //=> '2017-04-22T20:47:05.335-04:00'"
    ],
    "lineNumber": 1149,
    "params": [
      {
        "nullable": null,
        "types": [
          "object"
        ],
        "spread": false,
        "optional": false,
        "name": "opts",
        "description": "options"
      },
      {
        "nullable": null,
        "types": [
          "boolean"
        ],
        "spread": false,
        "optional": false,
        "name": "opts.suppressMilliseconds",
        "description": "exclude milliseconds from the format if they're 0"
      },
      {
        "nullable": null,
        "types": [
          "boolean"
        ],
        "spread": false,
        "optional": false,
        "name": "opts.supressSeconds",
        "description": "exclude seconds from the format if they're 0"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 69,
    "kind": "method",
    "name": "toISODate",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#toISODate",
    "access": null,
    "description": "Returns an ISO 8601-compliant string representation of this DateTime's date component",
    "examples": [
      "DateTime.utc(1982, 5, 25).toISODate() //=> '07:34:19.361Z'"
    ],
    "lineNumber": 1159,
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 70,
    "kind": "method",
    "name": "toISOWeekDate",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#toISOWeekDate",
    "access": null,
    "description": "Returns an ISO 8601-compliant string representation of this DateTime's week date",
    "examples": [
      "DateTime.utc(1982, 5, 25).toISOWeekDate() //=> '1982-W21-2'"
    ],
    "lineNumber": 1168,
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 71,
    "kind": "method",
    "name": "toISOTime",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#toISOTime",
    "access": null,
    "description": "Returns an ISO 8601-compliant string representation of this DateTime's time component",
    "examples": [
      "DateTime.utc().hour(7).minute(34).toISOTime() //=> '07:34:19.361Z'",
      "DateTime.utc().hour(7).minute(34).toISOTime({ suppressSeconds: true }) //=> '07:34Z'"
    ],
    "lineNumber": 1181,
    "params": [
      {
        "nullable": null,
        "types": [
          "object"
        ],
        "spread": false,
        "optional": false,
        "name": "opts",
        "description": "options"
      },
      {
        "nullable": null,
        "types": [
          "boolean"
        ],
        "spread": false,
        "optional": false,
        "name": "opts.suppressMilliseconds",
        "description": "exclude milliseconds from the format if they're 0"
      },
      {
        "nullable": null,
        "types": [
          "boolean"
        ],
        "spread": false,
        "optional": false,
        "name": "opts.supressSeconds",
        "description": "exclude seconds from the format if they're 0"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 72,
    "kind": "method",
    "name": "toRFC2822",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#toRFC2822",
    "access": null,
    "description": "Returns an RFC 2822-compatible string representation of this DateTime, always in UTC",
    "examples": [
      "DateTime.utc(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 +0000'",
      "DateTime.local(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 -0400'"
    ],
    "lineNumber": 1191,
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 73,
    "kind": "method",
    "name": "toHTTP",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#toHTTP",
    "access": null,
    "description": "Returns a string representation of this DateTime appropriate for use in HTTP headers.\nSpecifically, the string conforms to RFC 1123.",
    "examples": [
      "DateTime.utc(2014, 7, 13).toHTTP() //=> 'Sun, 13 Jul 2014 00:00:00 GMT'"
    ],
    "see": [
      "https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1"
    ],
    "lineNumber": 1202,
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 74,
    "kind": "method",
    "name": "toString",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#toString",
    "access": null,
    "description": "Returns a string representation of this DateTime appropriate for debugging",
    "lineNumber": 1210,
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 75,
    "kind": "method",
    "name": "valueOf",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#valueOf",
    "access": null,
    "description": "Returns the epoch milliseconds of this DateTime",
    "lineNumber": 1218,
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 76,
    "kind": "method",
    "name": "toJSON",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#toJSON",
    "access": null,
    "description": "Returns an ISO 8601 representation of this DateTime appropriate for use in JSON.",
    "lineNumber": 1226,
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 77,
    "kind": "method",
    "name": "toObject",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#toObject",
    "access": null,
    "description": "Returns a Javascript object with this DateTime's year, month, day, and so on.",
    "examples": [
      "DateTime.local().toObject() //=> { year: 2017, month: 4, day: 22, hour: 20, minute: 49, second: 42, millisecond: 268 }"
    ],
    "lineNumber": 1237,
    "params": [
      {
        "nullable": null,
        "types": [
          "*"
        ],
        "spread": false,
        "optional": false,
        "name": "opts",
        "description": "options for generating the object"
      },
      {
        "nullable": null,
        "types": [
          "boolean"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "false",
        "defaultRaw": false,
        "name": "opts.includeConfig",
        "description": "include configuration attributes in the output"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "object"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 78,
    "kind": "method",
    "name": "toJSDate",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#toJSDate",
    "access": null,
    "description": "Returns a Javascript Date equivalent to this DateTime.",
    "lineNumber": 1254,
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "object"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 79,
    "kind": "method",
    "name": "diff",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#diff",
    "access": null,
    "description": "Return the difference between two DateTimes as a Duration.",
    "examples": [
      "var i1 = DateTime.fromISO('1982-05-25T09:45'),\n    i2 = DateTime.fromISO('1983-10-14T10:30');\ni2.diff(i1).toObject() //=> { milliseconds: 43807500000 }\ni2.diff(i1, 'hours').toObject() //=> { hours: 12168.75 }\ni2.diff(i1, ['months', 'days']).toObject() //=> { months: 16, days: 19.03125 }\ni2.diff(i1, ['months', 'days', 'hours']).toObject() //=> { months: 16, days: 19, hours: 0.75 }"
    ],
    "lineNumber": 1275,
    "params": [
      {
        "nullable": null,
        "types": [
          "DateTime"
        ],
        "spread": false,
        "optional": false,
        "name": "otherDateTime",
        "description": "the DateTime to compare this one to"
      },
      {
        "nullable": null,
        "types": [
          "string",
          "string[]"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "['milliseconds']",
        "defaultRaw": "['milliseconds']",
        "name": "unit",
        "description": "the unit or array of units (such as 'hours' or 'days') to include in the duration."
      },
      {
        "nullable": null,
        "types": [
          "Object"
        ],
        "spread": false,
        "optional": false,
        "name": "opts",
        "description": "options that affect the creation of the Duration"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'casual'",
        "defaultRaw": "'casual'",
        "name": "opts.conversionAccuracy",
        "description": "the conversion system to use"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Duration"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 80,
    "kind": "method",
    "name": "diffNow",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#diffNow",
    "access": null,
    "description": "Return the difference between this DateTime and right now.\nSee {@link diff}",
    "lineNumber": 1376,
    "params": [
      {
        "nullable": null,
        "types": [
          "string",
          "string[]"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "['milliseconds']",
        "defaultRaw": "['milliseconds']",
        "name": "unit",
        "description": "the unit or units units (such as 'hours' or 'days') to include in the duration"
      },
      {
        "nullable": null,
        "types": [
          "Object"
        ],
        "spread": false,
        "optional": false,
        "name": "opts",
        "description": "options that affect the creation of the Duration"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'casual'",
        "defaultRaw": "'casual'",
        "name": "opts.conversionAccuracy",
        "description": "the conversion system to use"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Duration"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 81,
    "kind": "method",
    "name": "until",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#until",
    "access": null,
    "description": "Return an Interval spanning between this DateTime and another DateTime",
    "lineNumber": 1385,
    "params": [
      {
        "nullable": null,
        "types": [
          "DateTime"
        ],
        "spread": false,
        "optional": false,
        "name": "otherDateTime",
        "description": "the other end point of the Interval"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Duration"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 82,
    "kind": "method",
    "name": "hasSame",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#hasSame",
    "access": null,
    "description": "Return whether this DateTime is in the same unit of time as another DateTime",
    "examples": [
      "DateTime.local().hasSame(otherDT, 'day'); //~> true if both the same calendar day"
    ],
    "lineNumber": 1396,
    "params": [
      {
        "nullable": null,
        "types": [
          "DateTime"
        ],
        "spread": false,
        "optional": false,
        "name": "otherDateTime",
        "description": "the other DateTime"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "unit",
        "description": "the unit of time to check sameness on"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "boolean"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 83,
    "kind": "method",
    "name": "equals",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/datetime.js~DateTime#equals",
    "access": null,
    "description": "Equality check\nTwo DateTimes are equal iff they represent the same millisecond",
    "lineNumber": 1412,
    "params": [
      {
        "nullable": null,
        "types": [
          "DateTime"
        ],
        "spread": false,
        "optional": false,
        "name": "other",
        "description": "the other DateTime"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "boolean"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 84,
    "kind": "method",
    "name": "min",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.min",
    "access": null,
    "description": "Return the min of several date times",
    "lineNumber": 1425,
    "params": [
      {
        "nullable": null,
        "types": [
          "...DateTime"
        ],
        "spread": true,
        "optional": false,
        "name": "dateTimes",
        "description": "the DateTimes from which to choose the minimum"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "DateTime"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 85,
    "kind": "method",
    "name": "max",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.max",
    "access": null,
    "description": "Return the max of several date times",
    "lineNumber": 1434,
    "params": [
      {
        "nullable": null,
        "types": [
          "...DateTime"
        ],
        "spread": true,
        "optional": false,
        "name": "dateTimes",
        "description": "the DateTimes from which to choose the maximum"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "DateTime"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 86,
    "kind": "method",
    "name": "fromStringExplain",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.fromStringExplain",
    "access": null,
    "description": "Explain how a string would be parsed by fromString()",
    "lineNumber": 1447,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "text",
        "description": "the string to parse"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "fmt",
        "description": "the format the string is expected to be in (see description)"
      },
      {
        "nullable": null,
        "types": [
          "object"
        ],
        "spread": false,
        "optional": false,
        "name": "options",
        "description": "options taken by fromString()"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "object"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 87,
    "kind": "get",
    "name": "DATE_SHORT",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.DATE_SHORT",
    "access": null,
    "description": "{@link toLocaleString} format like 10/14/1983",
    "lineNumber": 1457,
    "type": {
      "types": [
        "{\"year\": string, \"month\": string, \"day\": string}"
      ]
    }
  },
  {
    "__docId__": 88,
    "kind": "get",
    "name": "DATE_MED",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.DATE_MED",
    "access": null,
    "description": "{@link toLocaleString} format like 'Oct 14, 1983'",
    "lineNumber": 1468,
    "type": {
      "types": [
        "{\"year\": string, \"month\": string, \"day\": string}"
      ]
    }
  },
  {
    "__docId__": 89,
    "kind": "get",
    "name": "DATE_FULL",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.DATE_FULL",
    "access": null,
    "description": "{@link toLocaleString} format like 'October 14, 1983'",
    "lineNumber": 1479,
    "type": {
      "types": [
        "{\"year\": string, \"month\": string, \"day\": string}"
      ]
    }
  },
  {
    "__docId__": 90,
    "kind": "get",
    "name": "DATE_HUGE",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.DATE_HUGE",
    "access": null,
    "description": "{@link toLocaleString} format like 'Tuesday, October 14, 1983'",
    "lineNumber": 1490,
    "type": {
      "types": [
        "{\"year\": string, \"month\": string, \"day\": string, \"weekday\": string}"
      ]
    }
  },
  {
    "__docId__": 91,
    "kind": "get",
    "name": "TIME_SIMPLE",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.TIME_SIMPLE",
    "access": null,
    "description": "{@link toLocaleString} format like '09:30 AM'. Only 12-hour if the locale is.",
    "lineNumber": 1502,
    "type": {
      "types": [
        "{\"hour\": string, \"minute\": string}"
      ]
    }
  },
  {
    "__docId__": 92,
    "kind": "get",
    "name": "TIME_WITH_SECONDS",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.TIME_WITH_SECONDS",
    "access": null,
    "description": "{@link toLocaleString} format like '09:30:23 AM'. Only 12-hour if the locale is.",
    "lineNumber": 1512,
    "type": {
      "types": [
        "{\"hour\": string, \"minute\": string, \"second\": string}"
      ]
    }
  },
  {
    "__docId__": 93,
    "kind": "get",
    "name": "TIME_WITH_SHORT_OFFSET",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.TIME_WITH_SHORT_OFFSET",
    "access": null,
    "description": "{@link toLocaleString} format like '09:30:23 AM EDT'. Only 12-hour if the locale is.",
    "lineNumber": 1523,
    "type": {
      "types": [
        "{\"hour\": string, \"minute\": string, \"second\": string, \"timeZoneName\": string}"
      ]
    }
  },
  {
    "__docId__": 94,
    "kind": "get",
    "name": "TIME_WITH_LONG_OFFSET",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.TIME_WITH_LONG_OFFSET",
    "access": null,
    "description": "{@link toLocaleString} format like '09:30:23 AM Eastern Daylight Time'. Only 12-hour if the locale is.",
    "lineNumber": 1535,
    "type": {
      "types": [
        "{\"hour\": string, \"minute\": string, \"second\": string, \"timeZoneName\": string}"
      ]
    }
  },
  {
    "__docId__": 95,
    "kind": "get",
    "name": "TIME_24_SIMPLE",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.TIME_24_SIMPLE",
    "access": null,
    "description": "{@link toLocaleString} format like '09:30', always 24-hour.",
    "lineNumber": 1547,
    "type": {
      "types": [
        "{\"hour\": string, \"minute\": string, \"hour12\": *}"
      ]
    }
  },
  {
    "__docId__": 96,
    "kind": "get",
    "name": "TIME_24_WITH_SECONDS",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.TIME_24_WITH_SECONDS",
    "access": null,
    "description": "{@link toLocaleString} format like '09:30:23', always 24-hour.",
    "lineNumber": 1558,
    "type": {
      "types": [
        "{\"hour\": string, \"minute\": string, \"second\": string, \"hour12\": *}"
      ]
    }
  },
  {
    "__docId__": 97,
    "kind": "get",
    "name": "TIME_24_WITH_SHORT_OFFSET",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.TIME_24_WITH_SHORT_OFFSET",
    "access": null,
    "description": "{@link toLocaleString} format like '09:30:23 EDT', always 24-hour.",
    "lineNumber": 1570,
    "type": {
      "types": [
        "{\"hour\": string, \"minute\": string, \"second\": string, \"hour12\": *, \"timeZoneName\": string}"
      ]
    }
  },
  {
    "__docId__": 98,
    "kind": "get",
    "name": "TIME_24_WITH_LONG_OFFSET",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.TIME_24_WITH_LONG_OFFSET",
    "access": null,
    "description": "{@link toLocaleString} format like '09:30:23 Eastern Daylight Time', always 24-hour.",
    "lineNumber": 1583,
    "type": {
      "types": [
        "{\"hour\": string, \"minute\": string, \"second\": string, \"hour12\": *, \"timeZoneName\": string}"
      ]
    }
  },
  {
    "__docId__": 99,
    "kind": "get",
    "name": "DATETIME_SHORT",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.DATETIME_SHORT",
    "access": null,
    "description": "{@link toLocaleString} format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.",
    "lineNumber": 1596,
    "type": {
      "types": [
        "{\"year\": string, \"month\": string, \"day\": string, \"hour\": string, \"minute\": string}"
      ]
    }
  },
  {
    "__docId__": 100,
    "kind": "get",
    "name": "DATETIME_SHORT_WITH_SECONDS",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.DATETIME_SHORT_WITH_SECONDS",
    "access": null,
    "description": "{@link toLocaleString} format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.",
    "lineNumber": 1609,
    "type": {
      "types": [
        "{\"year\": string, \"month\": string, \"day\": string, \"hour\": string, \"minute\": string, \"second\": string}"
      ]
    }
  },
  {
    "__docId__": 101,
    "kind": "get",
    "name": "DATETIME_MED",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.DATETIME_MED",
    "access": null,
    "description": "{@link toLocaleString} format like 'Oct 14, 1983, 9:30 AM'. Only 12-hour if the locale is.",
    "lineNumber": 1623,
    "type": {
      "types": [
        "{\"year\": string, \"month\": string, \"day\": string, \"hour\": string, \"minute\": string}"
      ]
    }
  },
  {
    "__docId__": 102,
    "kind": "get",
    "name": "DATETIME_MED_WITH_SECONDS",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.DATETIME_MED_WITH_SECONDS",
    "access": null,
    "description": "{@link toLocaleString} format like 'Oct 14, 1983, 9:30:33 AM'. Only 12-hour if the locale is.",
    "lineNumber": 1636,
    "type": {
      "types": [
        "{\"year\": string, \"month\": string, \"day\": string, \"hour\": string, \"minute\": string, \"second\": string}"
      ]
    }
  },
  {
    "__docId__": 103,
    "kind": "get",
    "name": "DATETIME_FULL",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.DATETIME_FULL",
    "access": null,
    "description": "{@link toLocaleString} format like 'October 14, 1983, 9:30 AM EDT'. Only 12-hour if the locale is.",
    "lineNumber": 1650,
    "type": {
      "types": [
        "{\"year\": string, \"month\": string, \"day\": string, \"hour\": string, \"minute\": string, \"timeZoneName\": string}"
      ]
    }
  },
  {
    "__docId__": 104,
    "kind": "get",
    "name": "DATETIME_FULL_WITH_SECONDS",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.DATETIME_FULL_WITH_SECONDS",
    "access": null,
    "description": "{@link toLocaleString} format like 'October 14, 1983, 9:303 AM EDT'. Only 12-hour if the locale is.",
    "lineNumber": 1664,
    "type": {
      "types": [
        "{\"year\": string, \"month\": string, \"day\": string, \"hour\": string, \"minute\": string, \"second\": string, \"timeZoneName\": string}"
      ]
    }
  },
  {
    "__docId__": 105,
    "kind": "get",
    "name": "DATETIME_HUGE",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.DATETIME_HUGE",
    "access": null,
    "description": "{@link toLocaleString} format like 'Friday, October 14, 1983, 9:30 AM Eastern Daylight Time'. Only 12-hour if the locale is.",
    "lineNumber": 1679,
    "type": {
      "types": [
        "{\"year\": string, \"month\": string, \"day\": string, \"weekday\": string, \"hour\": string, \"minute\": string, \"timeZoneName\": string}"
      ]
    }
  },
  {
    "__docId__": 106,
    "kind": "get",
    "name": "DATETIME_HUGE_WITH_SECONDS",
    "memberof": "src/datetime.js~DateTime",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/datetime.js~DateTime.DATETIME_HUGE_WITH_SECONDS",
    "access": null,
    "description": "{@link toLocaleString} format like 'Friday, October 14, 1983, 9:30:33 AM Eastern Daylight Time'. Only 12-hour if the locale is.",
    "lineNumber": 1694,
    "type": {
      "types": [
        "{\"year\": string, \"month\": string, \"day\": string, \"weekday\": string, \"hour\": string, \"minute\": string, \"second\": string, \"timeZoneName\": string}"
      ]
    }
  },
  {
    "__docId__": 107,
    "kind": "file",
    "name": "src/duration.js",
    "content": "import { Util } from './impl/util';\nimport { Locale } from './impl/locale';\nimport { Formatter } from './impl/formatter';\nimport { RegexParser } from './impl/regexParser';\nimport { Settings } from './settings';\nimport { InvalidArgumentError, InvalidDurationError, InvalidUnitError } from './errors';\n\nconst INVALID = 'Invalid Duration';\n\nconst lowOrderMatrix = {\n    weeks: {\n      days: 7,\n      hours: 7 * 24,\n      minutes: 7 * 24 * 60,\n      seconds: 7 * 24 * 60 * 60,\n      milliseconds: 7 * 24 * 60 * 60 * 1000\n    },\n    days: {\n      hours: 24,\n      minutes: 24 * 60,\n      seconds: 24 * 60 * 60,\n      milliseconds: 24 * 60 * 60 * 1000\n    },\n    hours: { minutes: 60, seconds: 60 * 60, milliseconds: 60 * 60 * 1000 },\n    minutes: { seconds: 60, milliseconds: 60 * 1000 },\n    seconds: { milliseconds: 1000 }\n  },\n  casualMatrix = Object.assign(\n    {\n      years: {\n        months: 12,\n        weeks: 52,\n        days: 365,\n        hours: 365 * 24,\n        minutes: 365 * 24 * 60,\n        seconds: 365 * 24 * 60 * 60,\n        milliseconds: 365 * 24 * 60 * 60 * 1000\n      },\n      months: {\n        weeks: 4,\n        days: 30,\n        hours: 30 * 24,\n        minutes: 30 * 24 * 60,\n        seconds: 30 * 24 * 60 * 60,\n        milliseconds: 30 * 24 * 60 * 60 * 1000\n      }\n    },\n    lowOrderMatrix\n  ),\n  daysInYearAccurate = 146097.0 / 400,\n  daysInMonthAccurate = 146097.0 / 4800,\n  accurateMatrix = Object.assign(\n    {\n      years: {\n        months: 12,\n        weeks: daysInYearAccurate / 7,\n        days: daysInYearAccurate,\n        hours: daysInYearAccurate * 24,\n        minutes: daysInYearAccurate * 24 * 60,\n        seconds: daysInYearAccurate * 24 * 60 * 60,\n        milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000\n      },\n      months: {\n        weeks: daysInMonthAccurate / 7,\n        days: daysInMonthAccurate,\n        hours: daysInYearAccurate * 24,\n        minutes: daysInYearAccurate * 24 * 60,\n        seconds: daysInYearAccurate * 24 * 60 * 60,\n        milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000\n      }\n    },\n    lowOrderMatrix\n  );\n\nconst orderedUnits = [\n  'years',\n  'months',\n  'weeks',\n  'days',\n  'hours',\n  'minutes',\n  'seconds',\n  'milliseconds'\n];\n\nfunction clone(dur, alts, clear = false) {\n  // deep merge for vals\n  const conf = {\n    values: clear ? alts.values : Object.assign(dur.values, alts.values || {}),\n    loc: dur.loc.clone(alts.loc),\n    conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy\n  };\n  return new Duration(conf);\n}\n\nfunction isHighOrderNegative(obj) {\n  // only rule is that the highest-order part must be non-negative\n  for (const k of orderedUnits) {\n    if (obj[k]) return obj[k] < 0;\n  }\n  return false;\n}\n\n/**\n * A Duration object represents a period of time, like \"2 months\" or \"1 day, 1 hour\". Conceptually, it's just a map of units to their quantities, accompanied by some additional configuration and methods for creating, parsing, interrogating, transforming, and formatting them. They can be used on their own or in conjunction with other Luxon types; for example, you can use {@link DateTime.plus} to add a Duration object to a DateTime, producing another DateTime.\n *\n * Here is a brief overview of commonly used methods and getters in Duration:\n *\n * * **Creation** To create a Duration, use {@link fromMillis}, {@link fromObject}, or {@link fromISO}.\n * * **Unit values** See the {@link years}, {@link months}, {@link weeks}, {@link days}, {@link hours}, {@link minutes}, {@link seconds}, {@link milliseconds} accessors.\n * * **Configuration** See  {@link locale} and {@link numberingSystem} accessors.\n * * **Transformation** To create new Durations out of old ones use {@link plus}, {@link minus}, {@link normalize}, {@link set}, {@link reconfigure}, {@link shiftTo}, and {@link negate}.\n * * **Output** To convert the Duration into other representations, see {@link as}, {@link toISO}, {@link toFormat}, and {@link toJSON}\n *\n * There's are more methods documented below. In addition, for more information on subtler topics like internationalization and validity, see the external documentation.\n */\nexport class Duration {\n  /**\n   * @private\n   */\n  constructor(config) {\n    const accurate = config.conversionAccuracy === 'longterm' || false;\n\n    Object.defineProperty(this, 'values', {\n      value: config.values,\n      enumerable: true\n    });\n    Object.defineProperty(this, 'loc', {\n      value: config.loc || Locale.create(),\n      enumerable: true\n    });\n    Object.defineProperty(this, 'conversionAccuracy', {\n      value: accurate ? 'longterm' : 'casual',\n      enumerable: true\n    });\n    Object.defineProperty(this, 'invalidReason', {\n      value: config.invalidReason || null,\n      enumerable: false\n    });\n    Object.defineProperty(this, 'matrix', {\n      value: accurate ? accurateMatrix : casualMatrix,\n      enumerable: false\n    });\n  }\n\n  /**\n   * Create Duration from a number of milliseconds.\n   * @param {number} count of milliseconds\n   * @param {Object} opts - options for parsing\n   * @param {string} [obj.locale='en-US'] - the locale to use\n   * @param {string} obj.numberingSystem - the numbering system to use\n   * @param {string} [obj.conversionAccuracy='casual'] - the conversion system to use\n   * @return {Duration}\n   */\n  static fromMillis(count, opts) {\n    return Duration.fromObject(Object.assign({ milliseconds: count }, opts));\n  }\n\n  /**\n   * Create an DateTime from a Javascript object with keys like 'years' and 'hours'.\n   * @param {Object} obj - the object to create the DateTime from\n   * @param {number} obj.years\n   * @param {number} obj.months\n   * @param {number} obj.weeks\n   * @param {number} obj.days\n   * @param {number} obj.hours\n   * @param {number} obj.minutes\n   * @param {number} obj.seconds\n   * @param {number} obj.milliseconds\n   * @param {string} [obj.locale='en-US'] - the locale to use\n   * @param {string} obj.numberingSystem - the numbering system to use\n   * @param {string} [obj.conversionAccuracy='casual'] - the conversion system to use\n   * @return {Duration}\n   */\n  static fromObject(obj) {\n    return new Duration({\n      values: Util.normalizeObject(obj, Duration.normalizeUnit, true),\n      loc: Locale.fromObject(obj),\n      conversionAccuracy: obj.conversionAccuracy\n    });\n  }\n\n  /**\n   * Create a DateTime from an ISO 8601 duration string.\n   * @param {string} text - text to parse\n   * @param {Object} opts - options for parsing\n   * @param {string} [obj.locale='en-US'] - the locale to use\n   * @param {string} obj.numberingSystem - the numbering system to use\n   * @param {string} [obj.conversionAccuracy='casual'] - the conversion system to use\n   * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n   * @example Duration.fromISO('P3Y6M4DT12H30M5S').toObject() //=> { years: 3, months: 6, day: 4, hours: 12, minutes: 30, seconds: 5 }\n   * @example Duration.fromISO('PT23H').toObject() //=> { hours: 23 }\n   * @example Duration.fromISO('P5Y3M').toObject() //=> { years: 5, months: 3 }\n   * @return {Duration}\n   */\n  static fromISO(text, opts) {\n    const obj = Object.assign(RegexParser.parseISODuration(text), opts);\n    return Duration.fromObject(obj);\n  }\n\n  /**\n   * Create an invalid Duration.\n   * @param {string} reason - reason this is invalid\n   * @return {Duration}\n   */\n  static invalid(reason) {\n    if (!reason) {\n      throw new InvalidArgumentError('need to specify a reason the DateTime is invalid');\n    }\n    if (Settings.throwOnInvalid) {\n      throw new InvalidDurationError(reason);\n    } else {\n      return new Duration({ invalidReason: reason });\n    }\n  }\n\n  /**\n   * @private\n   */\n  static normalizeUnit(unit, ignoreUnknown = false) {\n    const normalized = {\n      year: 'years',\n      years: 'years',\n      month: 'months',\n      months: 'months',\n      week: 'weeks',\n      weeks: 'weeks',\n      day: 'days',\n      days: 'days',\n      hour: 'hours',\n      hours: 'hours',\n      minute: 'minutes',\n      minutes: 'minutes',\n      second: 'seconds',\n      seconds: 'seconds',\n      millisecond: 'milliseconds',\n      milliseconds: 'milliseconds'\n    }[unit ? unit.toLowerCase() : unit];\n\n    if (!ignoreUnknown && !normalized) throw new InvalidUnitError(unit);\n\n    return normalized;\n  }\n\n  /**\n   * Get  the locale of a Duration, such 'en-GB'\n   * @return {string}\n   */\n  get locale() {\n    return this.loc.locale;\n  }\n\n  /**\n   * Get the numbering system of a Duration, such 'beng'. The numbering system is used when formatting the Duration\n   *\n   * @return {string}\n   */\n  get numberingSystem() {\n    return this.loc.numberingSystem;\n  }\n\n  /**\n   * Returns a string representation of this Duration formatted according to the specified format string.\n   * @param {string} fmt - the format string\n   * @param {object} opts - options\n   * @param {boolean} opts.round - round numerical values\n   * @return {string}\n   */\n  toFormat(fmt, opts = {}) {\n    return this.isValid\n      ? Formatter.create(this.loc, opts).formatDurationFromString(this, fmt)\n      : INVALID;\n  }\n\n  /**\n   * Returns a Javascript object with this Duration's values.\n   * @param opts - options for generating the object\n   * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output\n   * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toObject() //=> { years: 1, days: 6, seconds: 2 }\n   * @return {object}\n   */\n  toObject(opts = {}) {\n    if (!this.isValid) return {};\n\n    const base = Object.assign({}, this.values);\n\n    if (opts.includeConfig) {\n      base.conversionAccuracy = this.conversionAccuracy;\n      base.numberingSystem = this.loc.numberingSystem;\n      base.locale = this.loc.locale;\n    }\n    return base;\n  }\n\n  /**\n   * Returns an ISO 8601-compliant string representation of this Duration.\n   * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n   * @example Duration.fromObject({ years: 3, seconds: 45 }).toISO() //=> 'P3YT45S'\n   * @example Duration.fromObject({ months: 4, seconds: 45 }).toISO() //=> 'P4MT45S'\n   * @example Duration.fromObject({ months: 5 }).toISO() //=> 'P5M'\n   * @example Duration.fromObject({ minutes: 5 }).toISO() //=> 'PT5M'\n   * @return {string}\n   */\n  toISO() {\n    // we could use the formatter, but this is an easier way to get the minimum string\n    if (!this.isValid) return null;\n\n    let s = 'P',\n      norm = this.normalize();\n\n    // ISO durations are always positive, so take the absolute value\n    norm = isHighOrderNegative(norm.values) ? norm.negate() : norm;\n\n    if (norm.years > 0) s += norm.years + 'Y';\n    if (norm.months > 0) s += norm.months + 'M';\n    if (norm.days > 0 || norm.weeks > 0) s += norm.days + norm.weeks * 7 + 'D';\n    if (norm.hours > 0 || norm.minutes > 0 || norm.seconds > 0 || norm.milliseconds > 0) s += 'T';\n    if (norm.hours > 0) s += norm.hours + 'H';\n    if (norm.minutes > 0) s += norm.minutes + 'M';\n    if (norm.seconds > 0) s += norm.seconds + 'S';\n    return s;\n  }\n\n  /**\n   * Returns an ISO 8601 representation of this Duration appropriate for use in JSON.\n   * @return {string}\n   */\n  toJSON() {\n    return this.toISO();\n  }\n\n  /**\n   * Returns an ISO 8601 representation of this Duration appropriate for use in debugging.\n   * @return {string}\n   */\n  toString() {\n    return this.toISO();\n  }\n\n  /**\n   * Make this Duration longer by the specified amount. Return a newly-constructed Duration.\n   * @param {Duration|number|object} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n   * @return {Duration}\n   */\n  plus(duration) {\n    if (!this.isValid) return this;\n\n    const dur = Util.friendlyDuration(duration),\n      result = {};\n\n    for (const k of orderedUnits) {\n      const val = dur.get(k) + this.get(k);\n      if (val !== 0) {\n        result[k] = val;\n      }\n    }\n\n    return clone(this, { values: result }, true);\n  }\n\n  /**\n   * Make this Duration shorter by the specified amount. Return a newly-constructed Duration.\n   * @param {Duration|number|object} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n   * @return {Duration}\n   */\n  minus(duration) {\n    if (!this.isValid) return this;\n\n    const dur = Util.friendlyDuration(duration);\n    return this.plus(dur.negate());\n  }\n\n  /**\n   * Get the value of unit.\n   * @param {string} unit - a unit such as 'minute' or 'day'\n   * @example Duration.fromObject({years: 2, days: 3}).years //=> 2\n   * @example Duration.fromObject({years: 2, days: 3}).months //=> 0\n   * @example Duration.fromObject({years: 2, days: 3}).days //=> 3\n   * @return {number}\n   */\n  get(unit) {\n    return this[Duration.normalizeUnit(unit)];\n  }\n\n  /**\n   * \"Set\" the values of specified units. Return a newly-constructed Duration.\n   * @param {object} values - a mapping of units to numbers\n   * @example dur.set({ years: 2017 })\n   * @example dur.set({ hours: 8, minutes: 30 })\n   * @return {Duration}\n   */\n  set(values) {\n    const mixed = Object.assign(this.values, Util.normalizeObject(values, Duration.normalizeUnit));\n    return clone(this, { values: mixed });\n  }\n\n  /**\n   * \"Set\" the locale and/or numberingSystem.  Returns a newly-constructed Duration.\n   * @example dur.reconfigure({ locale: 'en-GB' })\n   * @return {Duration}\n   */\n  reconfigure({ locale, numberingSystem, conversionAccuracy } = {}) {\n    const loc = this.loc.clone({ locale, numberingSystem }),\n      opts = { loc };\n\n    if (conversionAccuracy) {\n      opts.conversionAccuracy = conversionAccuracy;\n    }\n\n    return clone(this, opts);\n  }\n\n  /**\n   * Return the length of the duration in the specified unit.\n   * @param {string} unit - a unit such as 'minutes' or 'days'\n   * @example Duration.fromObject({years: 1}).as('days') //=> 365\n   * @example Duration.fromObject({years: 1}).as('months') //=> 12\n   * @example Duration.fromObject({hours: 60}).as('days') //=> 2.5\n   * @return {number}\n   */\n  as(unit) {\n    return this.isValid ? this.shiftTo(unit).get(unit) : NaN;\n  }\n\n  /**\n   * Reduce this Duration to its canonical representation in its current units.\n   * @example Duration.fromObject({ years: 2, days: 5000 }).normalize().toObject() //=> { years: 15, days: 255 }\n   * @example Duration.fromObject({ hours: 12, minutes: -45 }).normalize().toObject() //=> { hours: 11, minutes: 15 }\n   * @return {Duration}\n   */\n  normalize() {\n    if (!this.isValid) return this;\n\n    const neg = isHighOrderNegative(this.values),\n      dur = neg ? this.negate() : this,\n      shifted = dur.shiftTo(...Object.keys(this.values));\n    return neg ? shifted.negate() : shifted;\n  }\n\n  /**\n   * Convert this Duration into its representation in a different set of units.\n   * @example Duration.fromObject({ hours: 1, seconds: 30 }).shiftTo('minutes', 'milliseconds').toObject() //=> { minutes: 60, milliseconds: 30000 }\n   * @return {Duration}\n   */\n  shiftTo(...units) {\n    if (!this.isValid) return this;\n\n    if (units.length === 0) {\n      return this;\n    }\n\n    units = units.map(Duration.normalizeUnit);\n\n    const built = {},\n      accumulated = {},\n      vals = this.toObject();\n    let lastUnit;\n\n    for (const k of orderedUnits) {\n      if (units.indexOf(k) >= 0) {\n        built[k] = 0;\n        lastUnit = k;\n\n        // anything we haven't boiled down yet should get boiled to this unit\n        for (const ak in accumulated) {\n          if (accumulated.hasOwnProperty(ak)) {\n            built[k] += this.matrix[ak][k] * accumulated[ak];\n          }\n          delete accumulated[ak];\n        }\n\n        // plus anything that's already in this unit\n        if (Util.isNumber(vals[k])) {\n          built[k] += vals[k];\n        }\n\n        // plus anything further down the chain that should be rolled up in to this\n        for (const down in vals) {\n          if (orderedUnits.indexOf(down) > orderedUnits.indexOf(k)) {\n            const conv = this.matrix[k][down],\n              added = Math.floor(vals[down] / conv);\n            built[k] += added;\n            vals[down] -= added * conv;\n          }\n        }\n        // otherwise, keep it in the wings to boil it later\n      } else if (Util.isNumber(vals[k])) {\n        accumulated[k] = vals[k];\n      }\n    }\n\n    // anything leftover becomes the decimal for the last unit\n    if (lastUnit) {\n      for (const key in accumulated) {\n        if (accumulated.hasOwnProperty(key)) {\n          built[lastUnit] += accumulated[key] / this.matrix[lastUnit][key];\n        }\n      }\n    }\n\n    return clone(this, { values: built }, true);\n  }\n\n  /**\n   * Return the negative of this Duration.\n   * @example Duration.fromObject({ hours: 1, seconds: 30 }).negate().toObject() //=> { hours: -1, seconds: -30 }\n   * @return {Duration}\n   */\n  negate() {\n    if (!this.isValid) return this;\n    const negated = {};\n    for (const k of Object.keys(this.values)) {\n      negated[k] = -this.values[k];\n    }\n    return Duration.fromObject(negated);\n  }\n\n  /**\n   * Get the years.\n   * @return {number}\n   */\n  get years() {\n    return this.isValid ? this.values.years || 0 : NaN;\n  }\n\n  /**\n   * Get the months.\n   * @return {number}\n   */\n  get months() {\n    return this.isValid ? this.values.months || 0 : NaN;\n  }\n\n  /**\n   * Get the weeks\n   * @return {number}\n   */\n  get weeks() {\n    return this.isValid ? this.values.weeks || 0 : NaN;\n  }\n\n  /**\n   * Get the days.\n   * @return {number\n   */\n  get days() {\n    return this.isValid ? this.values.days || 0 : NaN;\n  }\n\n  /**\n   * Get the hours.\n   * @return {number}\n   */\n  get hours() {\n    return this.isValid ? this.values.hours || 0 : NaN;\n  }\n\n  /**\n   * Get the minutes.\n   * @return {number}\n   */\n  get minutes() {\n    return this.isValid ? this.values.minutes || 0 : NaN;\n  }\n\n  /**\n   * Get the seconds.\n   * @return {number}\n   */\n  get seconds() {\n    return this.isValid ? this.values.seconds || 0 : NaN;\n  }\n\n  /**\n   * Get the milliseconds.\n   * @return {number}\n   */\n  get milliseconds() {\n    return this.isValid ? this.values.milliseconds || 0 : NaN;\n  }\n\n  /**\n   * Returns whether the Duration is invalid. Invalid durations are returned by diff operations\n   * on invalid DateTimes or Intervals.\n   * @return {boolean}\n   */\n  get isValid() {\n    return this.invalidReason === null;\n  }\n\n  /**\n   * Returns an explanation of why this Duration became invalid, or null if the Duration is valid\n   * @return {string}\n   */\n  get invalidReason() {\n    return this.invalidReason;\n  }\n\n  /**\n   * Equality check\n   * Two Durations are equal iff they have the same units and the same values for each unit.\n   * @param {Duration} other\n   * @return {boolean}\n   */\n  equals(other) {\n    if (!this.isValid || !other.isValid) {\n      return false;\n    }\n\n    for (const u of orderedUnits) {\n      if (this.values[u] !== other.values[u]) {\n        return false;\n      }\n    }\n    return true;\n  }\n}\n",
    "static": true,
    "longname": "src/duration.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 108,
    "kind": "variable",
    "name": "INVALID",
    "memberof": "src/duration.js",
    "static": true,
    "longname": "src/duration.js~INVALID",
    "access": null,
    "export": false,
    "importPath": "luxon/src/duration.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 8,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "string"
      ]
    }
  },
  {
    "__docId__": 109,
    "kind": "variable",
    "name": "lowOrderMatrix",
    "memberof": "src/duration.js",
    "static": true,
    "longname": "src/duration.js~lowOrderMatrix",
    "access": null,
    "export": false,
    "importPath": "luxon/src/duration.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 10,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "{\"weeks\": *, \"days\": *, \"hours\": *, \"minutes\": *, \"seconds\": *}"
      ]
    }
  },
  {
    "__docId__": 110,
    "kind": "variable",
    "name": "orderedUnits",
    "memberof": "src/duration.js",
    "static": true,
    "longname": "src/duration.js~orderedUnits",
    "access": null,
    "export": false,
    "importPath": "luxon/src/duration.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 75,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "string[]"
      ]
    }
  },
  {
    "__docId__": 111,
    "kind": "function",
    "name": "clone",
    "memberof": "src/duration.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/duration.js~clone",
    "access": null,
    "export": false,
    "importPath": "luxon/src/duration.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 86,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "dur",
        "types": [
          "*"
        ]
      },
      {
        "name": "alts",
        "types": [
          "*"
        ]
      },
      {
        "name": "clear",
        "optional": true,
        "types": [
          "boolean"
        ],
        "defaultRaw": false,
        "defaultValue": "false"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 112,
    "kind": "function",
    "name": "isHighOrderNegative",
    "memberof": "src/duration.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/duration.js~isHighOrderNegative",
    "access": null,
    "export": false,
    "importPath": "luxon/src/duration.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 96,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "obj",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "boolean"
      ]
    }
  },
  {
    "__docId__": 113,
    "kind": "class",
    "name": "Duration",
    "memberof": "src/duration.js",
    "static": true,
    "longname": "src/duration.js~Duration",
    "access": null,
    "export": true,
    "importPath": "luxon/src/duration.js",
    "importStyle": "{Duration}",
    "description": "A Duration object represents a period of time, like \"2 months\" or \"1 day, 1 hour\". Conceptually, it's just a map of units to their quantities, accompanied by some additional configuration and methods for creating, parsing, interrogating, transforming, and formatting them. They can be used on their own or in conjunction with other Luxon types; for example, you can use {@link DateTime.plus} to add a Duration object to a DateTime, producing another DateTime.\n\nHere is a brief overview of commonly used methods and getters in Duration:\n\n* **Creation** To create a Duration, use {@link fromMillis}, {@link fromObject}, or {@link fromISO}.\n* **Unit values** See the {@link years}, {@link months}, {@link weeks}, {@link days}, {@link hours}, {@link minutes}, {@link seconds}, {@link milliseconds} accessors.\n* **Configuration** See  {@link locale} and {@link numberingSystem} accessors.\n* **Transformation** To create new Durations out of old ones use {@link plus}, {@link minus}, {@link normalize}, {@link set}, {@link reconfigure}, {@link shiftTo}, and {@link negate}.\n* **Output** To convert the Duration into other representations, see {@link as}, {@link toISO}, {@link toFormat}, and {@link toJSON}\n\nThere's are more methods documented below. In addition, for more information on subtler topics like internationalization and validity, see the external documentation.",
    "lineNumber": 117,
    "interface": false
  },
  {
    "__docId__": 114,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/duration.js~Duration#constructor",
    "access": "private",
    "description": "",
    "lineNumber": 121,
    "params": [
      {
        "name": "config",
        "types": [
          "*"
        ]
      }
    ]
  },
  {
    "__docId__": 115,
    "kind": "method",
    "name": "fromMillis",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/duration.js~Duration.fromMillis",
    "access": null,
    "description": "Create Duration from a number of milliseconds.",
    "lineNumber": 155,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "count",
        "description": "of milliseconds"
      },
      {
        "nullable": null,
        "types": [
          "Object"
        ],
        "spread": false,
        "optional": false,
        "name": "opts",
        "description": "options for parsing"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'en-US'",
        "defaultRaw": "'en-US'",
        "name": "obj.locale",
        "description": "the locale to use"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "obj.numberingSystem",
        "description": "the numbering system to use"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'casual'",
        "defaultRaw": "'casual'",
        "name": "obj.conversionAccuracy",
        "description": "the conversion system to use"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Duration"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 116,
    "kind": "method",
    "name": "fromObject",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/duration.js~Duration.fromObject",
    "access": null,
    "description": "Create an DateTime from a Javascript object with keys like 'years' and 'hours'.",
    "lineNumber": 175,
    "params": [
      {
        "nullable": null,
        "types": [
          "Object"
        ],
        "spread": false,
        "optional": false,
        "name": "obj",
        "description": "the object to create the DateTime from"
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "obj.years",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "obj.months",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "obj.weeks",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "obj.days",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "obj.hours",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "obj.minutes",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "obj.seconds",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "obj.milliseconds",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'en-US'",
        "defaultRaw": "'en-US'",
        "name": "obj.locale",
        "description": "the locale to use"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "obj.numberingSystem",
        "description": "the numbering system to use"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'casual'",
        "defaultRaw": "'casual'",
        "name": "obj.conversionAccuracy",
        "description": "the conversion system to use"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Duration"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 117,
    "kind": "method",
    "name": "fromISO",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/duration.js~Duration.fromISO",
    "access": null,
    "description": "Create a DateTime from an ISO 8601 duration string.",
    "examples": [
      "Duration.fromISO('P3Y6M4DT12H30M5S').toObject() //=> { years: 3, months: 6, day: 4, hours: 12, minutes: 30, seconds: 5 }",
      "Duration.fromISO('PT23H').toObject() //=> { hours: 23 }",
      "Duration.fromISO('P5Y3M').toObject() //=> { years: 5, months: 3 }"
    ],
    "see": [
      "https://en.wikipedia.org/wiki/ISO_8601#Durations"
    ],
    "lineNumber": 196,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "text",
        "description": "text to parse"
      },
      {
        "nullable": null,
        "types": [
          "Object"
        ],
        "spread": false,
        "optional": false,
        "name": "opts",
        "description": "options for parsing"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'en-US'",
        "defaultRaw": "'en-US'",
        "name": "obj.locale",
        "description": "the locale to use"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "obj.numberingSystem",
        "description": "the numbering system to use"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'casual'",
        "defaultRaw": "'casual'",
        "name": "obj.conversionAccuracy",
        "description": "the conversion system to use"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Duration"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 118,
    "kind": "method",
    "name": "invalid",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/duration.js~Duration.invalid",
    "access": null,
    "description": "Create an invalid Duration.",
    "lineNumber": 206,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "reason",
        "description": "reason this is invalid"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Duration"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 119,
    "kind": "method",
    "name": "normalizeUnit",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/duration.js~Duration.normalizeUnit",
    "access": "private",
    "description": "",
    "lineNumber": 220,
    "params": [
      {
        "name": "unit",
        "types": [
          "*"
        ]
      },
      {
        "name": "ignoreUnknown",
        "optional": true,
        "types": [
          "boolean"
        ],
        "defaultRaw": false,
        "defaultValue": "false"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 120,
    "kind": "get",
    "name": "locale",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/duration.js~Duration#locale",
    "access": null,
    "description": "Get  the locale of a Duration, such 'en-GB'",
    "lineNumber": 249,
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 121,
    "kind": "get",
    "name": "numberingSystem",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/duration.js~Duration#numberingSystem",
    "access": null,
    "description": "Get the numbering system of a Duration, such 'beng'. The numbering system is used when formatting the Duration",
    "lineNumber": 258,
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 122,
    "kind": "method",
    "name": "toFormat",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/duration.js~Duration#toFormat",
    "access": null,
    "description": "Returns a string representation of this Duration formatted according to the specified format string.",
    "lineNumber": 269,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "fmt",
        "description": "the format string"
      },
      {
        "nullable": null,
        "types": [
          "object"
        ],
        "spread": false,
        "optional": false,
        "name": "opts",
        "description": "options"
      },
      {
        "nullable": null,
        "types": [
          "boolean"
        ],
        "spread": false,
        "optional": false,
        "name": "opts.round",
        "description": "round numerical values"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 123,
    "kind": "method",
    "name": "toObject",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/duration.js~Duration#toObject",
    "access": null,
    "description": "Returns a Javascript object with this Duration's values.",
    "examples": [
      "Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toObject() //=> { years: 1, days: 6, seconds: 2 }"
    ],
    "lineNumber": 282,
    "params": [
      {
        "nullable": null,
        "types": [
          "*"
        ],
        "spread": false,
        "optional": false,
        "name": "opts",
        "description": "options for generating the object"
      },
      {
        "nullable": null,
        "types": [
          "boolean"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "false",
        "defaultRaw": false,
        "name": "opts.includeConfig",
        "description": "include configuration attributes in the output"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "object"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 124,
    "kind": "method",
    "name": "toISO",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/duration.js~Duration#toISO",
    "access": null,
    "description": "Returns an ISO 8601-compliant string representation of this Duration.",
    "examples": [
      "Duration.fromObject({ years: 3, seconds: 45 }).toISO() //=> 'P3YT45S'",
      "Duration.fromObject({ months: 4, seconds: 45 }).toISO() //=> 'P4MT45S'",
      "Duration.fromObject({ months: 5 }).toISO() //=> 'P5M'",
      "Duration.fromObject({ minutes: 5 }).toISO() //=> 'PT5M'"
    ],
    "see": [
      "https://en.wikipedia.org/wiki/ISO_8601#Durations"
    ],
    "lineNumber": 304,
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 125,
    "kind": "method",
    "name": "toJSON",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/duration.js~Duration#toJSON",
    "access": null,
    "description": "Returns an ISO 8601 representation of this Duration appropriate for use in JSON.",
    "lineNumber": 328,
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 126,
    "kind": "method",
    "name": "toString",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/duration.js~Duration#toString",
    "access": null,
    "description": "Returns an ISO 8601 representation of this Duration appropriate for use in debugging.",
    "lineNumber": 336,
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 127,
    "kind": "method",
    "name": "plus",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/duration.js~Duration#plus",
    "access": null,
    "description": "Make this Duration longer by the specified amount. Return a newly-constructed Duration.",
    "lineNumber": 345,
    "params": [
      {
        "nullable": null,
        "types": [
          "Duration",
          "number",
          "object"
        ],
        "spread": false,
        "optional": false,
        "name": "duration",
        "description": "The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Duration"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 128,
    "kind": "method",
    "name": "minus",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/duration.js~Duration#minus",
    "access": null,
    "description": "Make this Duration shorter by the specified amount. Return a newly-constructed Duration.",
    "lineNumber": 366,
    "params": [
      {
        "nullable": null,
        "types": [
          "Duration",
          "number",
          "object"
        ],
        "spread": false,
        "optional": false,
        "name": "duration",
        "description": "The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Duration"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 129,
    "kind": "method",
    "name": "get",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/duration.js~Duration#get",
    "access": null,
    "description": "Get the value of unit.",
    "examples": [
      "Duration.fromObject({years: 2, days: 3}).years //=> 2",
      "Duration.fromObject({years: 2, days: 3}).months //=> 0",
      "Duration.fromObject({years: 2, days: 3}).days //=> 3"
    ],
    "lineNumber": 381,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "unit",
        "description": "a unit such as 'minute' or 'day'"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 130,
    "kind": "method",
    "name": "set",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/duration.js~Duration#set",
    "access": null,
    "description": "\"Set\" the values of specified units. Return a newly-constructed Duration.",
    "examples": [
      "dur.set({ years: 2017 })",
      "dur.set({ hours: 8, minutes: 30 })"
    ],
    "lineNumber": 392,
    "params": [
      {
        "nullable": null,
        "types": [
          "object"
        ],
        "spread": false,
        "optional": false,
        "name": "values",
        "description": "a mapping of units to numbers"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Duration"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 131,
    "kind": "method",
    "name": "reconfigure",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/duration.js~Duration#reconfigure",
    "access": null,
    "description": "\"Set\" the locale and/or numberingSystem.  Returns a newly-constructed Duration.",
    "examples": [
      "dur.reconfigure({ locale: 'en-GB' })"
    ],
    "lineNumber": 402,
    "params": [
      {
        "name": "objectPattern",
        "optional": true,
        "types": [
          "{\"locale\": *, \"numberingSystem\": *, \"conversionAccuracy\": *}"
        ],
        "defaultRaw": {},
        "defaultValue": "{}"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Duration"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 132,
    "kind": "method",
    "name": "as",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/duration.js~Duration#as",
    "access": null,
    "description": "Return the length of the duration in the specified unit.",
    "examples": [
      "Duration.fromObject({years: 1}).as('days') //=> 365",
      "Duration.fromObject({years: 1}).as('months') //=> 12",
      "Duration.fromObject({hours: 60}).as('days') //=> 2.5"
    ],
    "lineNumber": 421,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "unit",
        "description": "a unit such as 'minutes' or 'days'"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 133,
    "kind": "method",
    "name": "normalize",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/duration.js~Duration#normalize",
    "access": null,
    "description": "Reduce this Duration to its canonical representation in its current units.",
    "examples": [
      "Duration.fromObject({ years: 2, days: 5000 }).normalize().toObject() //=> { years: 15, days: 255 }",
      "Duration.fromObject({ hours: 12, minutes: -45 }).normalize().toObject() //=> { hours: 11, minutes: 15 }"
    ],
    "lineNumber": 431,
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "Duration"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 134,
    "kind": "method",
    "name": "shiftTo",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/duration.js~Duration#shiftTo",
    "access": null,
    "description": "Convert this Duration into its representation in a different set of units.",
    "examples": [
      "Duration.fromObject({ hours: 1, seconds: 30 }).shiftTo('minutes', 'milliseconds').toObject() //=> { minutes: 60, milliseconds: 30000 }"
    ],
    "lineNumber": 445,
    "params": [
      {
        "name": "units",
        "types": [
          "...*"
        ],
        "spread": true
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Duration"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 135,
    "kind": "method",
    "name": "negate",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/duration.js~Duration#negate",
    "access": null,
    "description": "Return the negative of this Duration.",
    "examples": [
      "Duration.fromObject({ hours: 1, seconds: 30 }).negate().toObject() //=> { hours: -1, seconds: -30 }"
    ],
    "lineNumber": 509,
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "Duration"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 136,
    "kind": "get",
    "name": "years",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/duration.js~Duration#years",
    "access": null,
    "description": "Get the years.",
    "lineNumber": 522,
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 137,
    "kind": "get",
    "name": "months",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/duration.js~Duration#months",
    "access": null,
    "description": "Get the months.",
    "lineNumber": 530,
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 138,
    "kind": "get",
    "name": "weeks",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/duration.js~Duration#weeks",
    "access": null,
    "description": "Get the weeks",
    "lineNumber": 538,
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 139,
    "kind": "get",
    "name": "days",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/duration.js~Duration#days",
    "access": null,
    "description": "Get the days.",
    "lineNumber": 546,
    "return": {
      "nullable": null,
      "types": [
        "*"
      ],
      "spread": false,
      "description": "{number"
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 140,
    "kind": "get",
    "name": "hours",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/duration.js~Duration#hours",
    "access": null,
    "description": "Get the hours.",
    "lineNumber": 554,
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 141,
    "kind": "get",
    "name": "minutes",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/duration.js~Duration#minutes",
    "access": null,
    "description": "Get the minutes.",
    "lineNumber": 562,
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 142,
    "kind": "get",
    "name": "seconds",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/duration.js~Duration#seconds",
    "access": null,
    "description": "Get the seconds.",
    "lineNumber": 570,
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 143,
    "kind": "get",
    "name": "milliseconds",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/duration.js~Duration#milliseconds",
    "access": null,
    "description": "Get the milliseconds.",
    "lineNumber": 578,
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 144,
    "kind": "get",
    "name": "isValid",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/duration.js~Duration#isValid",
    "access": null,
    "description": "Returns whether the Duration is invalid. Invalid durations are returned by diff operations\non invalid DateTimes or Intervals.",
    "lineNumber": 587,
    "return": {
      "nullable": null,
      "types": [
        "boolean"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 145,
    "kind": "get",
    "name": "invalidReason",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/duration.js~Duration#invalidReason",
    "access": null,
    "description": "Returns an explanation of why this Duration became invalid, or null if the Duration is valid",
    "lineNumber": 595,
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 146,
    "kind": "method",
    "name": "equals",
    "memberof": "src/duration.js~Duration",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/duration.js~Duration#equals",
    "access": null,
    "description": "Equality check\nTwo Durations are equal iff they have the same units and the same values for each unit.",
    "lineNumber": 605,
    "params": [
      {
        "nullable": null,
        "types": [
          "Duration"
        ],
        "spread": false,
        "optional": false,
        "name": "other",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "boolean"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 147,
    "kind": "file",
    "name": "src/errors.js",
    "content": "// these aren't really private, but nor are they really useful to document\n\n/**\n * @private\n */\nclass LuxonError extends Error {}\n\n/**\n * @private\n */\nexport class InvalidDateTimeError extends LuxonError {\n  constructor(reason) {\n    super(`Invalid DateTime: ${reason}`);\n  }\n}\n\n/**\n * @private\n */\nexport class InvalidIntervalError extends LuxonError {\n  constructor(reason) {\n    super(`Invalid Interval: ${reason}`);\n  }\n}\n\n/**\n * @private\n */\nexport class InvalidDurationError extends LuxonError {\n  constructor(reason) {\n    super(`Invalid Duration: ${reason}`);\n  }\n}\n\n/**\n * @private\n */\nexport class ConflictingSpecificationError extends LuxonError {}\n\n/**\n * @private\n */\nexport class InvalidUnitError extends LuxonError {\n  constructor(unit) {\n    super(`Invalid unit ${unit}`);\n  }\n}\n\n/**\n * @private\n */\nexport class InvalidArgumentError extends LuxonError {}\n\n/**\n * @private\n */\nexport class ZoneIsAbstractError extends LuxonError {\n  constructor() {\n    super('Zone is an abstract class');\n  }\n}\n",
    "static": true,
    "longname": "src/errors.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 148,
    "kind": "class",
    "name": "LuxonError",
    "memberof": "src/errors.js",
    "static": true,
    "longname": "src/errors.js~LuxonError",
    "access": "private",
    "export": false,
    "importPath": "luxon/src/errors.js",
    "importStyle": null,
    "description": "",
    "lineNumber": 6,
    "interface": false,
    "extends": [
      "Error"
    ]
  },
  {
    "__docId__": 149,
    "kind": "class",
    "name": "InvalidDateTimeError",
    "memberof": "src/errors.js",
    "static": true,
    "longname": "src/errors.js~InvalidDateTimeError",
    "access": "private",
    "export": true,
    "importPath": "luxon/src/errors.js",
    "importStyle": "{InvalidDateTimeError}",
    "description": "",
    "lineNumber": 11,
    "interface": false,
    "extends": [
      "LuxonError"
    ]
  },
  {
    "__docId__": 150,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/errors.js~InvalidDateTimeError",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/errors.js~InvalidDateTimeError#constructor",
    "access": null,
    "description": null,
    "lineNumber": 12,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "reason",
        "types": [
          "*"
        ]
      }
    ]
  },
  {
    "__docId__": 151,
    "kind": "class",
    "name": "InvalidIntervalError",
    "memberof": "src/errors.js",
    "static": true,
    "longname": "src/errors.js~InvalidIntervalError",
    "access": "private",
    "export": true,
    "importPath": "luxon/src/errors.js",
    "importStyle": "{InvalidIntervalError}",
    "description": "",
    "lineNumber": 20,
    "interface": false,
    "extends": [
      "LuxonError"
    ]
  },
  {
    "__docId__": 152,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/errors.js~InvalidIntervalError",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/errors.js~InvalidIntervalError#constructor",
    "access": null,
    "description": null,
    "lineNumber": 21,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "reason",
        "types": [
          "*"
        ]
      }
    ]
  },
  {
    "__docId__": 153,
    "kind": "class",
    "name": "InvalidDurationError",
    "memberof": "src/errors.js",
    "static": true,
    "longname": "src/errors.js~InvalidDurationError",
    "access": "private",
    "export": true,
    "importPath": "luxon/src/errors.js",
    "importStyle": "{InvalidDurationError}",
    "description": "",
    "lineNumber": 29,
    "interface": false,
    "extends": [
      "LuxonError"
    ]
  },
  {
    "__docId__": 154,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/errors.js~InvalidDurationError",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/errors.js~InvalidDurationError#constructor",
    "access": null,
    "description": null,
    "lineNumber": 30,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "reason",
        "types": [
          "*"
        ]
      }
    ]
  },
  {
    "__docId__": 155,
    "kind": "class",
    "name": "ConflictingSpecificationError",
    "memberof": "src/errors.js",
    "static": true,
    "longname": "src/errors.js~ConflictingSpecificationError",
    "access": "private",
    "export": true,
    "importPath": "luxon/src/errors.js",
    "importStyle": "{ConflictingSpecificationError}",
    "description": "",
    "lineNumber": 38,
    "interface": false,
    "extends": [
      "LuxonError"
    ]
  },
  {
    "__docId__": 156,
    "kind": "class",
    "name": "InvalidUnitError",
    "memberof": "src/errors.js",
    "static": true,
    "longname": "src/errors.js~InvalidUnitError",
    "access": "private",
    "export": true,
    "importPath": "luxon/src/errors.js",
    "importStyle": "{InvalidUnitError}",
    "description": "",
    "lineNumber": 43,
    "interface": false,
    "extends": [
      "LuxonError"
    ]
  },
  {
    "__docId__": 157,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/errors.js~InvalidUnitError",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/errors.js~InvalidUnitError#constructor",
    "access": null,
    "description": null,
    "lineNumber": 44,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "unit",
        "types": [
          "*"
        ]
      }
    ]
  },
  {
    "__docId__": 158,
    "kind": "class",
    "name": "InvalidArgumentError",
    "memberof": "src/errors.js",
    "static": true,
    "longname": "src/errors.js~InvalidArgumentError",
    "access": "private",
    "export": true,
    "importPath": "luxon/src/errors.js",
    "importStyle": "{InvalidArgumentError}",
    "description": "",
    "lineNumber": 52,
    "interface": false,
    "extends": [
      "LuxonError"
    ]
  },
  {
    "__docId__": 159,
    "kind": "class",
    "name": "ZoneIsAbstractError",
    "memberof": "src/errors.js",
    "static": true,
    "longname": "src/errors.js~ZoneIsAbstractError",
    "access": "private",
    "export": true,
    "importPath": "luxon/src/errors.js",
    "importStyle": "{ZoneIsAbstractError}",
    "description": "",
    "lineNumber": 57,
    "interface": false,
    "extends": [
      "LuxonError"
    ]
  },
  {
    "__docId__": 160,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/errors.js~ZoneIsAbstractError",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/errors.js~ZoneIsAbstractError#constructor",
    "access": null,
    "description": null,
    "lineNumber": 58,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": []
  },
  {
    "__docId__": 161,
    "kind": "file",
    "name": "src/impl/conversions.js",
    "content": "import { Util } from './util';\n\nconst nonLeapLadder = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334],\n  leapLadder = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];\n\nfunction dayOfWeek(year, month, day) {\n  const js = new Date(Date.UTC(year, month - 1, day)).getUTCDay();\n  return js === 0 ? 7 : js;\n}\n\nfunction lastWeekNumber(weekYear) {\n  const p1 =\n      (weekYear +\n        Math.floor(weekYear / 4) -\n        Math.floor(weekYear / 100) +\n        Math.floor(weekYear / 400)) %\n      7,\n    last = weekYear - 1,\n    p2 = (last + Math.floor(last / 4) - Math.floor(last / 100) + Math.floor(last / 400)) % 7;\n  return p1 === 4 || p2 === 3 ? 53 : 52;\n}\n\nfunction computeOrdinal(year, month, day) {\n  return day + (Util.isLeapYear(year) ? leapLadder : nonLeapLadder)[month - 1];\n}\n\nfunction uncomputeOrdinal(year, ordinal) {\n  const table = Util.isLeapYear(year) ? leapLadder : nonLeapLadder,\n    month0 = table.findIndex(i => i < ordinal),\n    day = ordinal - table[month0];\n  return { month: month0 + 1, day };\n}\n\n/**\n * @private\n */\n\nexport class Conversions {\n  static gregorianToWeek(gregObj) {\n    const { year, month, day } = gregObj,\n      ordinal = computeOrdinal(year, month, day),\n      weekday = dayOfWeek(year, month, day);\n\n    let weekNumber = Math.floor((ordinal - weekday + 10) / 7),\n      weekYear;\n\n    if (weekNumber < 1) {\n      weekYear = year - 1;\n      weekNumber = lastWeekNumber(weekYear);\n    } else if (weekNumber > lastWeekNumber(year)) {\n      weekYear = year + 1;\n      weekNumber = 1;\n    } else {\n      weekYear = year;\n    }\n\n    return Object.assign({ weekYear, weekNumber, weekday }, Util.timeObject(gregObj));\n  }\n\n  static weekToGregorian(weekData) {\n    const { weekYear, weekNumber, weekday } = weekData,\n      weekdayOfJan4 = dayOfWeek(weekYear, 1, 4),\n      daysInYear = Util.daysInYear(weekYear);\n    let ordinal = weekNumber * 7 + weekday - weekdayOfJan4 - 3,\n      year;\n\n    if (ordinal < 1) {\n      year = weekYear - 1;\n      ordinal += Util.daysInYear(year);\n    } else if (ordinal > daysInYear) {\n      year = weekYear + 1;\n      ordinal -= Util.daysInYear(year);\n    } else {\n      year = weekYear;\n    }\n\n    const { month, day } = uncomputeOrdinal(year, ordinal);\n\n    return Object.assign({ year, month, day }, Util.timeObject(weekData));\n  }\n\n  static gregorianToOrdinal(gregData) {\n    const { year, month, day } = gregData,\n      ordinal = computeOrdinal(year, month, day);\n\n    return Object.assign({ year, ordinal }, Util.timeObject(gregData));\n  }\n\n  static ordinalToGregorian(ordinalData) {\n    const { year, ordinal } = ordinalData,\n      { month, day } = uncomputeOrdinal(year, ordinal);\n\n    return Object.assign({ year, month, day }, Util.timeObject(ordinalData));\n  }\n\n  static hasInvalidWeekData(obj) {\n    const validYear = Util.isNumber(obj.weekYear),\n      validWeek = Util.numberBetween(obj.weekNumber, 1, lastWeekNumber(obj.weekYear)),\n      validWeekday = Util.numberBetween(obj.weekday, 1, 7);\n\n    if (!validYear) {\n      return 'weekYear out of range';\n    } else if (!validWeek) {\n      return 'week out of range';\n    } else if (!validWeekday) {\n      return 'weekday out of range';\n    } else return false;\n  }\n\n  static hasInvalidOrdinalData(obj) {\n    const validYear = Util.isNumber(obj.year),\n      validOrdinal = Util.numberBetween(obj.ordinal, 1, Util.daysInYear(obj.year));\n\n    if (!validYear) {\n      return 'year out of range';\n    } else if (!validOrdinal) {\n      return 'ordinal out of range';\n    } else return false;\n  }\n\n  static hasInvalidGregorianData(obj) {\n    const validYear = Util.isNumber(obj.year),\n      validMonth = Util.numberBetween(obj.month, 1, 12),\n      validDay = Util.numberBetween(obj.day, 1, Util.daysInMonth(obj.year, obj.month));\n\n    if (!validYear) {\n      return 'year out of range';\n    } else if (!validMonth) {\n      return 'month out of range';\n    } else if (!validDay) {\n      return 'day out of range';\n    } else return false;\n  }\n\n  static hasInvalidTimeData(obj) {\n    const validHour = Util.numberBetween(obj.hour, 0, 23),\n      validMinute = Util.numberBetween(obj.minute, 0, 59),\n      validSecond = Util.numberBetween(obj.second, 0, 59),\n      validMillisecond = Util.numberBetween(obj.millisecond, 0, 999);\n\n    if (!validHour) {\n      return 'hour out of range';\n    } else if (!validMinute) {\n      return 'minute out of range';\n    } else if (!validSecond) {\n      return 'second out of range';\n    } else if (!validMillisecond) {\n      return 'millisecond out of range';\n    } else return false;\n  }\n}\n",
    "static": true,
    "longname": "src/impl/conversions.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 162,
    "kind": "variable",
    "name": "nonLeapLadder",
    "memberof": "src/impl/conversions.js",
    "static": true,
    "longname": "src/impl/conversions.js~nonLeapLadder",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/conversions.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 3,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "number[]"
      ]
    }
  },
  {
    "__docId__": 163,
    "kind": "function",
    "name": "dayOfWeek",
    "memberof": "src/impl/conversions.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/conversions.js~dayOfWeek",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/conversions.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 6,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "year",
        "types": [
          "*"
        ]
      },
      {
        "name": "month",
        "types": [
          "*"
        ]
      },
      {
        "name": "day",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 164,
    "kind": "function",
    "name": "lastWeekNumber",
    "memberof": "src/impl/conversions.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/conversions.js~lastWeekNumber",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/conversions.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 11,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "weekYear",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 165,
    "kind": "function",
    "name": "computeOrdinal",
    "memberof": "src/impl/conversions.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/conversions.js~computeOrdinal",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/conversions.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 23,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "year",
        "types": [
          "*"
        ]
      },
      {
        "name": "month",
        "types": [
          "*"
        ]
      },
      {
        "name": "day",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 166,
    "kind": "function",
    "name": "uncomputeOrdinal",
    "memberof": "src/impl/conversions.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/conversions.js~uncomputeOrdinal",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/conversions.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 27,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "year",
        "types": [
          "*"
        ]
      },
      {
        "name": "ordinal",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "{\"month\": *, \"day\": *}"
      ]
    }
  },
  {
    "__docId__": 167,
    "kind": "class",
    "name": "Conversions",
    "memberof": "src/impl/conversions.js",
    "static": true,
    "longname": "src/impl/conversions.js~Conversions",
    "access": "private",
    "export": true,
    "importPath": "luxon/src/impl/conversions.js",
    "importStyle": "{Conversions}",
    "description": "",
    "lineNumber": 38,
    "interface": false
  },
  {
    "__docId__": 168,
    "kind": "method",
    "name": "gregorianToWeek",
    "memberof": "src/impl/conversions.js~Conversions",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/conversions.js~Conversions.gregorianToWeek",
    "access": null,
    "description": null,
    "lineNumber": 39,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "gregObj",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 169,
    "kind": "method",
    "name": "weekToGregorian",
    "memberof": "src/impl/conversions.js~Conversions",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/conversions.js~Conversions.weekToGregorian",
    "access": null,
    "description": null,
    "lineNumber": 60,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "weekData",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 170,
    "kind": "method",
    "name": "gregorianToOrdinal",
    "memberof": "src/impl/conversions.js~Conversions",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/conversions.js~Conversions.gregorianToOrdinal",
    "access": null,
    "description": null,
    "lineNumber": 82,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "gregData",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 171,
    "kind": "method",
    "name": "ordinalToGregorian",
    "memberof": "src/impl/conversions.js~Conversions",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/conversions.js~Conversions.ordinalToGregorian",
    "access": null,
    "description": null,
    "lineNumber": 89,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "ordinalData",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 172,
    "kind": "method",
    "name": "hasInvalidWeekData",
    "memberof": "src/impl/conversions.js~Conversions",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/conversions.js~Conversions.hasInvalidWeekData",
    "access": null,
    "description": null,
    "lineNumber": 96,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "obj",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "boolean"
      ]
    }
  },
  {
    "__docId__": 173,
    "kind": "method",
    "name": "hasInvalidOrdinalData",
    "memberof": "src/impl/conversions.js~Conversions",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/conversions.js~Conversions.hasInvalidOrdinalData",
    "access": null,
    "description": null,
    "lineNumber": 110,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "obj",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "boolean"
      ]
    }
  },
  {
    "__docId__": 174,
    "kind": "method",
    "name": "hasInvalidGregorianData",
    "memberof": "src/impl/conversions.js~Conversions",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/conversions.js~Conversions.hasInvalidGregorianData",
    "access": null,
    "description": null,
    "lineNumber": 121,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "obj",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "boolean"
      ]
    }
  },
  {
    "__docId__": 175,
    "kind": "method",
    "name": "hasInvalidTimeData",
    "memberof": "src/impl/conversions.js~Conversions",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/conversions.js~Conversions.hasInvalidTimeData",
    "access": null,
    "description": null,
    "lineNumber": 135,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "obj",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "boolean"
      ]
    }
  },
  {
    "__docId__": 176,
    "kind": "file",
    "name": "src/impl/english.js",
    "content": "/**\n * @private\n */\n\nexport class English {\n  static get monthsLong() {\n    return [\n      'January',\n      'February',\n      'March',\n      'April',\n      'May',\n      'June',\n      'July',\n      'August',\n      'September',\n      'October',\n      'November',\n      'December'\n    ];\n  }\n\n  static get monthsShort() {\n    return ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n  }\n\n  static get monthsNarrow() {\n    return ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'];\n  }\n\n  static months(length) {\n    switch (length) {\n      case 'narrow':\n        return English.monthsNarrow;\n      case 'short':\n        return English.monthsShort;\n      case 'long':\n        return English.monthsLong;\n      case 'numeric':\n        return ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'];\n      case '2-digit':\n        return ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];\n      default:\n        return null;\n    }\n  }\n\n  static get weekdaysLong() {\n    return ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];\n  }\n\n  static get weekdaysShort() {\n    return ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];\n  }\n\n  static get weekdaysNarrow() {\n    return ['M', 'T', 'W', 'T', 'F', 'S', 'S'];\n  }\n\n  static weekdays(length) {\n    switch (length) {\n      case 'narrow':\n        return English.weekdaysNarrow;\n      case 'short':\n        return English.weekdaysShort;\n      case 'long':\n        return English.weekdaysLong;\n      case 'numeric':\n        return ['1', '2', '3', '4', '5', '6', '7'];\n      default:\n        return null;\n    }\n  }\n\n  static get meridiems() {\n    return ['AM', 'PM'];\n  }\n\n  static get erasLong() {\n    return ['Before Christ', 'Anno Domini'];\n  }\n\n  static get erasShort() {\n    return ['BC', 'AD'];\n  }\n\n  static get erasNarrow() {\n    return ['B', 'A'];\n  }\n\n  static eras(length) {\n    switch (length) {\n      case 'narrow':\n        return English.erasNarrow;\n      case 'short':\n        return English.erasShort;\n      case 'long':\n        return English.erasLong;\n      default:\n        return null;\n    }\n  }\n\n  static meridiemForDateTime(dt) {\n    return English.meridiems[dt.hour < 12 ? 0 : 1];\n  }\n\n  static weekdayForDateTime(dt, length) {\n    return English.weekdays(length)[dt.weekday - 1];\n  }\n\n  static monthForDateTime(dt, length) {\n    return English.months(length)[dt.month - 1];\n  }\n\n  static eraForDateTime(dt, length) {\n    return English.eras(length)[dt.year < 0 ? 0 : 1];\n  }\n}\n",
    "static": true,
    "longname": "src/impl/english.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 177,
    "kind": "class",
    "name": "English",
    "memberof": "src/impl/english.js",
    "static": true,
    "longname": "src/impl/english.js~English",
    "access": "private",
    "export": true,
    "importPath": "luxon/src/impl/english.js",
    "importStyle": "{English}",
    "description": "",
    "lineNumber": 5,
    "interface": false
  },
  {
    "__docId__": 178,
    "kind": "get",
    "name": "monthsLong",
    "memberof": "src/impl/english.js~English",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/english.js~English.monthsLong",
    "access": null,
    "description": null,
    "lineNumber": 6,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "string[]"
      ]
    }
  },
  {
    "__docId__": 179,
    "kind": "get",
    "name": "monthsShort",
    "memberof": "src/impl/english.js~English",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/english.js~English.monthsShort",
    "access": null,
    "description": null,
    "lineNumber": 23,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "string[]"
      ]
    }
  },
  {
    "__docId__": 180,
    "kind": "get",
    "name": "monthsNarrow",
    "memberof": "src/impl/english.js~English",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/english.js~English.monthsNarrow",
    "access": null,
    "description": null,
    "lineNumber": 27,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "string[]"
      ]
    }
  },
  {
    "__docId__": 181,
    "kind": "method",
    "name": "months",
    "memberof": "src/impl/english.js~English",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/english.js~English.months",
    "access": null,
    "description": null,
    "lineNumber": 31,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "length",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 182,
    "kind": "get",
    "name": "weekdaysLong",
    "memberof": "src/impl/english.js~English",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/english.js~English.weekdaysLong",
    "access": null,
    "description": null,
    "lineNumber": 48,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "string[]"
      ]
    }
  },
  {
    "__docId__": 183,
    "kind": "get",
    "name": "weekdaysShort",
    "memberof": "src/impl/english.js~English",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/english.js~English.weekdaysShort",
    "access": null,
    "description": null,
    "lineNumber": 52,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "string[]"
      ]
    }
  },
  {
    "__docId__": 184,
    "kind": "get",
    "name": "weekdaysNarrow",
    "memberof": "src/impl/english.js~English",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/english.js~English.weekdaysNarrow",
    "access": null,
    "description": null,
    "lineNumber": 56,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "string[]"
      ]
    }
  },
  {
    "__docId__": 185,
    "kind": "method",
    "name": "weekdays",
    "memberof": "src/impl/english.js~English",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/english.js~English.weekdays",
    "access": null,
    "description": null,
    "lineNumber": 60,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "length",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 186,
    "kind": "get",
    "name": "meridiems",
    "memberof": "src/impl/english.js~English",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/english.js~English.meridiems",
    "access": null,
    "description": null,
    "lineNumber": 75,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "string[]"
      ]
    }
  },
  {
    "__docId__": 187,
    "kind": "get",
    "name": "erasLong",
    "memberof": "src/impl/english.js~English",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/english.js~English.erasLong",
    "access": null,
    "description": null,
    "lineNumber": 79,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "string[]"
      ]
    }
  },
  {
    "__docId__": 188,
    "kind": "get",
    "name": "erasShort",
    "memberof": "src/impl/english.js~English",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/english.js~English.erasShort",
    "access": null,
    "description": null,
    "lineNumber": 83,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "string[]"
      ]
    }
  },
  {
    "__docId__": 189,
    "kind": "get",
    "name": "erasNarrow",
    "memberof": "src/impl/english.js~English",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/english.js~English.erasNarrow",
    "access": null,
    "description": null,
    "lineNumber": 87,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "string[]"
      ]
    }
  },
  {
    "__docId__": 190,
    "kind": "method",
    "name": "eras",
    "memberof": "src/impl/english.js~English",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/english.js~English.eras",
    "access": null,
    "description": null,
    "lineNumber": 91,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "length",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 191,
    "kind": "method",
    "name": "meridiemForDateTime",
    "memberof": "src/impl/english.js~English",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/english.js~English.meridiemForDateTime",
    "access": null,
    "description": null,
    "lineNumber": 104,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "dt",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 192,
    "kind": "method",
    "name": "weekdayForDateTime",
    "memberof": "src/impl/english.js~English",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/english.js~English.weekdayForDateTime",
    "access": null,
    "description": null,
    "lineNumber": 108,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "dt",
        "types": [
          "*"
        ]
      },
      {
        "name": "length",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 193,
    "kind": "method",
    "name": "monthForDateTime",
    "memberof": "src/impl/english.js~English",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/english.js~English.monthForDateTime",
    "access": null,
    "description": null,
    "lineNumber": 112,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "dt",
        "types": [
          "*"
        ]
      },
      {
        "name": "length",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 194,
    "kind": "method",
    "name": "eraForDateTime",
    "memberof": "src/impl/english.js~English",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/english.js~English.eraForDateTime",
    "access": null,
    "description": null,
    "lineNumber": 116,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "dt",
        "types": [
          "*"
        ]
      },
      {
        "name": "length",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 195,
    "kind": "file",
    "name": "src/impl/formatter.js",
    "content": "import { Util } from './util';\nimport { DateTime } from '../datetime';\nimport { English } from './english';\n\nfunction stringifyTokens(splits, tokenToString) {\n  let s = '';\n  for (const token of splits) {\n    if (token.literal) {\n      s += token.val;\n    } else {\n      s += tokenToString(token.val);\n    }\n  }\n  return s;\n}\n\n/**\n * @private\n */\n\nexport class Formatter {\n  static create(locale, opts = {}) {\n    const formatOpts = Object.assign({}, { round: true }, opts);\n    return new Formatter(locale, formatOpts);\n  }\n\n  static parseFormat(fmt) {\n    let current = null,\n      currentFull = '',\n      bracketed = false;\n    const splits = [];\n    for (let i = 0; i < fmt.length; i++) {\n      const c = fmt.charAt(i);\n      if (c === \"'\") {\n        if (currentFull.length > 0) {\n          splits.push({ literal: bracketed, val: currentFull });\n        }\n        current = null;\n        currentFull = '';\n        bracketed = !bracketed;\n      } else if (bracketed) {\n        currentFull += c;\n      } else if (c === current) {\n        currentFull += c;\n      } else {\n        if (currentFull.length > 0) {\n          splits.push({ literal: false, val: currentFull });\n        }\n        currentFull = c;\n        current = c;\n      }\n    }\n\n    if (currentFull.length > 0) {\n      splits.push({ literal: bracketed, val: currentFull });\n    }\n\n    return splits;\n  }\n\n  constructor(locale, formatOpts) {\n    this.opts = formatOpts;\n    this.loc = locale;\n  }\n\n  formatDateTime(dt, opts = {}) {\n    const [df, d] = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts));\n    return df.format(d);\n  }\n\n  formatDateTimeParts(dt, opts = {}) {\n    const [df, d] = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts));\n    return df.format(d);\n  }\n\n  resolvedOptions(dt, opts = {}) {\n    const [df, d] = this.loc.dtFormatter(dt, Object.assign({}, this.opts, opts));\n    return df.resolvedOptions(d);\n  }\n\n  num(n, p = 0) {\n    const opts = Object.assign({}, this.opts);\n\n    if (p > 0) {\n      opts.padTo = p;\n    }\n\n    return this.loc.numberFormatter(opts).format(n);\n  }\n\n  formatDateTimeFromString(dt, fmt) {\n    const knownEnglish = this.loc.listingMode() === 'en';\n    const string = (opts, extract) => this.loc.extract(dt, opts, extract),\n      formatOffset = opts => {\n        if (dt.isOffsetFixed && dt.offset === 0 && opts.allowZ) {\n          return 'Z';\n        }\n\n        const hours = Util.towardZero(dt.offset / 60),\n          minutes = Math.abs(dt.offset % 60),\n          sign = hours >= 0 ? '+' : '-',\n          base = `${sign}${Math.abs(hours)}`;\n\n        switch (opts.format) {\n          case 'short':\n            return `${sign}${this.num(Math.abs(hours), 2)}:${this.num(minutes, 2)}`;\n          case 'narrow':\n            return minutes > 0 ? `${base}:${minutes}` : base;\n          case 'techie':\n            return `${sign}${this.num(Math.abs(hours), 2)}${this.num(minutes, 2)}`;\n          default:\n            throw new RangeError(`Value format ${opts.format} is out of range for property format`);\n        }\n      },\n      meridiem = () =>\n        knownEnglish\n          ? English.meridiemForDateTime(dt)\n          : string({ hour: 'numeric', hour12: true }, 'dayperiod'),\n      month = (length, standalone) =>\n        knownEnglish\n          ? English.monthForDateTime(dt, length)\n          : string(standalone ? { month: length } : { month: length, day: 'numeric' }, 'month'),\n      weekday = (length, standalone) =>\n        knownEnglish\n          ? English.weekdayForDateTime(dt, length)\n          : string(\n              standalone ? { weekday: length } : { weekday: length, month: 'long', day: 'numeric' },\n              'weekday'\n            ),\n      era = length =>\n        knownEnglish ? English.eraForDateTime(dt, length) : string({ era: length }, 'era'),\n      tokenToString = token => {\n        const outputCal = this.loc.outputCalendar;\n\n        // Where possible: http://cldr.unicode.org/translation/date-time#TOC-Stand-Alone-vs.-Format-Styles\n        switch (token) {\n          // ms\n          case 'S':\n            return this.num(dt.millisecond);\n          case 'SSS':\n            return this.num(dt.millisecond, 3);\n          // seconds\n          case 's':\n            return this.num(dt.second);\n          case 'ss':\n            return this.num(dt.second, 2);\n          // minutes\n          case 'm':\n            return this.num(dt.minute);\n          case 'mm':\n            return this.num(dt.minute, 2);\n          // hours\n          case 'h':\n            return this.num(dt.hour === 12 ? 12 : dt.hour % 12);\n          case 'hh':\n            return this.num(dt.hour === 12 ? 12 : dt.hour % 12, 2);\n          case 'H':\n            return this.num(dt.hour);\n          case 'HH':\n            return this.num(dt.hour, 2);\n          // offset\n          case 'Z':\n            // like +6\n            return formatOffset({ format: 'narrow', allowZ: true });\n          case 'ZZ':\n            // like +06:00\n            return formatOffset({ format: 'short', allowZ: true });\n          case 'ZZZ':\n            // like +0600\n            return formatOffset({ format: 'techie', allowZ: false });\n          case 'ZZZZ':\n            // like EST\n            return dt.offsetNameShort;\n          case 'ZZZZZ':\n            // like Eastern Standard Time\n            return dt.offsetNameLong;\n          // zone\n          case 'z':\n            return dt.zoneName;\n          // like America/New_York\n          // meridiems\n          case 'a':\n            return meridiem();\n          // dates\n          case 'd':\n            return outputCal ? string({ day: 'numeric' }, 'day') : this.num(dt.day);\n          case 'dd':\n            return outputCal ? string({ day: '2-digit' }, 'day') : this.num(dt.day, 2);\n          // weekdays - standalone\n          case 'c':\n            // like 1\n            return this.num(dt.weekday);\n          case 'ccc':\n            // like 'Tues'\n            return weekday('short', true);\n          case 'cccc':\n            // like 'Tuesday'\n            return weekday('long', true);\n          case 'ccccc':\n            // like 'T'\n            return weekday('narrow', true);\n          // weekdays - format\n          case 'E':\n            // like 1\n            return this.num(dt.weekday);\n          case 'EEE':\n            // like 'Tues'\n            return weekday('short', false);\n          case 'EEEE':\n            // like 'Tuesday'\n            return weekday('long', false);\n          case 'EEEEE':\n            // like 'T'\n            return weekday('narrow', false);\n          // months - standalone\n          case 'L':\n            // like 1\n            return outputCal\n              ? string({ month: 'numeric', day: 'numeric' }, 'month')\n              : this.num(dt.month);\n          case 'LL':\n            // like 01, doesn't seem to work\n            return outputCal\n              ? string({ month: '2-digit', day: 'numeric' }, 'month')\n              : this.num(dt.month, 2);\n          case 'LLL':\n            // like Jan\n            return month('short', true);\n          case 'LLLL':\n            // like January\n            return month('long', true);\n          case 'LLLLL':\n            // like J\n            return month('narrow', true);\n          // months - format\n          case 'M':\n            // like 1\n            return outputCal ? string({ month: 'numeric' }, 'month') : this.num(dt.month);\n          case 'MM':\n            // like 01\n            return outputCal ? string({ month: '2-digit' }, 'month') : this.num(dt.month, 2);\n          case 'MMM':\n            // like Jan\n            return month('short', false);\n          case 'MMMM':\n            // like January\n            return month('long', false);\n          case 'MMMMM':\n            // like J\n            return month('narrow', false);\n          // years\n          case 'y':\n            // like 2014\n            return outputCal ? string({ year: 'numeric' }, 'year') : this.num(dt.year);\n          case 'yy':\n            // like 14\n            return outputCal\n              ? string({ year: '2-digit' }, 'year')\n              : this.num(dt.year.toString().slice(-2), 2);\n          case 'yyyy':\n            // like 0012\n            return outputCal ? string({ year: 'numeric' }, 'year') : this.num(dt.year, 4);\n          // eras\n          case 'G':\n            // like AD\n            return era('short');\n          case 'GG':\n            // like Anno Domini\n            return era('long');\n          case 'GGGGG':\n            return era('narrow');\n          case 'kk':\n            return this.num(dt.weekYear.toString().slice(-2), 2);\n          case 'kkkk':\n            return this.num(dt.weekYear, 4);\n          case 'W':\n            return this.num(dt.weekNumber);\n          case 'WW':\n            return this.num(dt.weekNumber, 2);\n          case 'o':\n            return this.num(dt.ordinal);\n          case 'ooo':\n            return this.num(dt.ordinal, 3);\n          // macros\n          case 'D':\n            return this.formatDateTime(dt, DateTime.DATE_SHORT);\n          case 'DD':\n            return this.formatDateTime(dt, DateTime.DATE_MED);\n          case 'DDD':\n            return this.formatDateTime(dt, DateTime.DATE_FULL);\n          case 'DDDD':\n            return this.formatDateTime(dt, DateTime.DATE_HUGE);\n          case 't':\n            return this.formatDateTime(dt, DateTime.TIME_SIMPLE);\n          case 'tt':\n            return this.formatDateTime(dt, DateTime.TIME_WITH_SECONDS);\n          case 'ttt':\n            return this.formatDateTime(dt, DateTime.TIME_WITH_SHORT_OFFSET);\n          case 'tttt':\n            return this.formatDateTime(dt, DateTime.TIME_WITH_LONG_OFFSET);\n          case 'T':\n            return this.formatDateTime(dt, DateTime.TIME_24_SIMPLE);\n          case 'TT':\n            return this.formatDateTime(dt, DateTime.TIME_24_WITH_SECONDS);\n          case 'TTT':\n            return this.formatDateTime(dt, DateTime.TIME_24_WITH_SHORT_OFFSET);\n          case 'TTTT':\n            return this.formatDateTime(dt, DateTime.TIME_24_WITH_LONG_OFFSET);\n          case 'f':\n            return this.formatDateTime(dt, DateTime.DATETIME_SHORT);\n          case 'ff':\n            return this.formatDateTime(dt, DateTime.DATETIME_MED);\n          case 'fff':\n            return this.formatDateTime(dt, DateTime.DATETIME_FULL);\n          case 'ffff':\n            return this.formatDateTime(dt, DateTime.DATETIME_HUGE);\n          case 'F':\n            return this.formatDateTime(dt, DateTime.DATETIME_SHORT_WITH_SECONDS);\n          case 'FF':\n            return this.formatDateTime(dt, DateTime.DATETIME_MED_WITH_SECONDS);\n          case 'FFF':\n            return this.formatDateTime(dt, DateTime.DATETIME_FULL_WITH_SECONDS);\n          case 'FFFF':\n            return this.formatDateTime(dt, DateTime.DATETIME_HUGE_WITH_SECONDS);\n\n          default:\n            return token;\n        }\n      };\n\n    return stringifyTokens(Formatter.parseFormat(fmt), tokenToString);\n  }\n\n  formatDuration() {}\n\n  formatDurationFromString(dur, fmt) {\n    const tokenToField = token => {\n        switch (token[0]) {\n          case 'S':\n            return 'millisecond';\n          case 's':\n            return 'second';\n          case 'm':\n            return 'minute';\n          case 'h':\n            return 'hour';\n          case 'd':\n            return 'day';\n          case 'M':\n            return 'month';\n          case 'y':\n            return 'year';\n          default:\n            return null;\n        }\n      },\n      tokenToString = lildur => token => {\n        const mapped = tokenToField(token);\n        if (mapped) {\n          return this.num(lildur.get(mapped), token.length);\n        } else {\n          return token;\n        }\n      },\n      tokens = Formatter.parseFormat(fmt),\n      realTokens = tokens.reduce(\n        (found, { literal, val }) => (literal ? found : found.concat(val)),\n        []\n      ),\n      collapsed = dur.shiftTo(...realTokens.map(tokenToField).filter(t => t));\n    return stringifyTokens(tokens, tokenToString(collapsed));\n  }\n}\n",
    "static": true,
    "longname": "src/impl/formatter.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 196,
    "kind": "function",
    "name": "stringifyTokens",
    "memberof": "src/impl/formatter.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/formatter.js~stringifyTokens",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/formatter.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 5,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "splits",
        "types": [
          "*"
        ]
      },
      {
        "name": "tokenToString",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 197,
    "kind": "class",
    "name": "Formatter",
    "memberof": "src/impl/formatter.js",
    "static": true,
    "longname": "src/impl/formatter.js~Formatter",
    "access": "private",
    "export": true,
    "importPath": "luxon/src/impl/formatter.js",
    "importStyle": "{Formatter}",
    "description": "",
    "lineNumber": 21,
    "interface": false
  },
  {
    "__docId__": 198,
    "kind": "method",
    "name": "create",
    "memberof": "src/impl/formatter.js~Formatter",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/formatter.js~Formatter.create",
    "access": null,
    "description": null,
    "lineNumber": 22,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "locale",
        "types": [
          "*"
        ]
      },
      {
        "name": "opts",
        "optional": true,
        "types": [
          "{}"
        ],
        "defaultRaw": {},
        "defaultValue": "{}"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 199,
    "kind": "method",
    "name": "parseFormat",
    "memberof": "src/impl/formatter.js~Formatter",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/formatter.js~Formatter.parseFormat",
    "access": null,
    "description": null,
    "lineNumber": 27,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "fmt",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 200,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/impl/formatter.js~Formatter",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/impl/formatter.js~Formatter#constructor",
    "access": null,
    "description": null,
    "lineNumber": 61,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "locale",
        "types": [
          "*"
        ]
      },
      {
        "name": "formatOpts",
        "types": [
          "*"
        ]
      }
    ]
  },
  {
    "__docId__": 201,
    "kind": "member",
    "name": "opts",
    "memberof": "src/impl/formatter.js~Formatter",
    "static": false,
    "longname": "src/impl/formatter.js~Formatter#opts",
    "access": null,
    "description": null,
    "lineNumber": 62,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 202,
    "kind": "member",
    "name": "loc",
    "memberof": "src/impl/formatter.js~Formatter",
    "static": false,
    "longname": "src/impl/formatter.js~Formatter#loc",
    "access": null,
    "description": null,
    "lineNumber": 63,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 203,
    "kind": "method",
    "name": "formatDateTime",
    "memberof": "src/impl/formatter.js~Formatter",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/impl/formatter.js~Formatter#formatDateTime",
    "access": null,
    "description": null,
    "lineNumber": 66,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "dt",
        "types": [
          "*"
        ]
      },
      {
        "name": "opts",
        "optional": true,
        "types": [
          "{}"
        ],
        "defaultRaw": {},
        "defaultValue": "{}"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 204,
    "kind": "method",
    "name": "formatDateTimeParts",
    "memberof": "src/impl/formatter.js~Formatter",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/impl/formatter.js~Formatter#formatDateTimeParts",
    "access": null,
    "description": null,
    "lineNumber": 71,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "dt",
        "types": [
          "*"
        ]
      },
      {
        "name": "opts",
        "optional": true,
        "types": [
          "{}"
        ],
        "defaultRaw": {},
        "defaultValue": "{}"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 205,
    "kind": "method",
    "name": "resolvedOptions",
    "memberof": "src/impl/formatter.js~Formatter",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/impl/formatter.js~Formatter#resolvedOptions",
    "access": null,
    "description": null,
    "lineNumber": 76,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "dt",
        "types": [
          "*"
        ]
      },
      {
        "name": "opts",
        "optional": true,
        "types": [
          "{}"
        ],
        "defaultRaw": {},
        "defaultValue": "{}"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 206,
    "kind": "method",
    "name": "num",
    "memberof": "src/impl/formatter.js~Formatter",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/impl/formatter.js~Formatter#num",
    "access": null,
    "description": null,
    "lineNumber": 81,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "n",
        "types": [
          "*"
        ]
      },
      {
        "name": "p",
        "optional": true,
        "types": [
          "number"
        ],
        "defaultRaw": 0,
        "defaultValue": "0"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 207,
    "kind": "method",
    "name": "formatDateTimeFromString",
    "memberof": "src/impl/formatter.js~Formatter",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/impl/formatter.js~Formatter#formatDateTimeFromString",
    "access": null,
    "description": null,
    "lineNumber": 91,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "dt",
        "types": [
          "*"
        ]
      },
      {
        "name": "fmt",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 208,
    "kind": "method",
    "name": "formatDuration",
    "memberof": "src/impl/formatter.js~Formatter",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/impl/formatter.js~Formatter#formatDuration",
    "access": null,
    "description": null,
    "lineNumber": 334,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": []
  },
  {
    "__docId__": 209,
    "kind": "method",
    "name": "formatDurationFromString",
    "memberof": "src/impl/formatter.js~Formatter",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/impl/formatter.js~Formatter#formatDurationFromString",
    "access": null,
    "description": null,
    "lineNumber": 336,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "dur",
        "types": [
          "*"
        ]
      },
      {
        "name": "fmt",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 210,
    "kind": "file",
    "name": "src/impl/locale.js",
    "content": "import { Util } from './util';\nimport { English } from './english';\nimport { DateTime } from '../datetime';\n\nconst localeCache = {};\n\nfunction intlConfigString(locale, numberingSystem, outputCalendar) {\n  let loc = locale || new Intl.DateTimeFormat().resolvedOptions().locale;\n  loc = Array.isArray(locale) ? locale : [locale];\n\n  if (outputCalendar || numberingSystem) {\n    loc = loc.map(l => {\n      l += '-u';\n\n      if (outputCalendar) {\n        l += '-ca-' + outputCalendar;\n      }\n\n      if (numberingSystem) {\n        l += '-nu-' + numberingSystem;\n      }\n      return l;\n    });\n  }\n  return loc;\n}\n\nfunction mapMonths(f) {\n  const ms = [];\n  for (let i = 1; i <= 12; i++) {\n    const dt = DateTime.utc(2016, i, 1);\n    ms.push(f(dt));\n  }\n  return ms;\n}\n\nfunction mapWeekdays(f) {\n  const ms = [];\n  for (let i = 1; i <= 7; i++) {\n    const dt = DateTime.utc(2016, 11, 13 + i);\n    ms.push(f(dt));\n  }\n  return ms;\n}\n\nfunction listStuff(loc, length, defaultOK, englishFn, intlFn) {\n  const mode = loc.listingMode(defaultOK);\n\n  if (mode === 'error') {\n    return null;\n  } else if (mode === 'en') {\n    return englishFn(length);\n  } else {\n    return intlFn(length);\n  }\n}\n\n/**\n * @private\n */\n\nclass PolyNumberFormatter {\n  constructor(opts) {\n    this.padTo = opts.padTo || 0;\n    this.round = opts.round || false;\n  }\n\n  format(i) {\n    const maybeRounded = this.round ? Math.round(i) : i;\n    return maybeRounded.toString().padStart(this.padTo, '0');\n  }\n}\n\nclass PolyDateFormatter {\n  format(d) {\n    return d.toString();\n  }\n\n  resolvedOptions() {\n    return {\n      locale: 'en-US',\n      numberingSystem: 'latn',\n      outputCalendar: 'gregory'\n    };\n  }\n}\n\n/**\n * @private\n */\n\nexport class Locale {\n  static fromOpts(opts) {\n    return Locale.create(opts.locale, opts.numberingSystem, opts.outputCalendar);\n  }\n\n  static create(locale, numberingSystem, outputCalendar) {\n    const localeR = locale || 'en-US',\n      numberingSystemR = numberingSystem || null,\n      outputCalendarR = outputCalendar || null,\n      cacheKey = `${localeR}|${numberingSystemR}|${outputCalendarR}`,\n      cached = localeCache[cacheKey];\n\n    if (cached) {\n      return cached;\n    } else {\n      const fresh = new Locale(localeR, numberingSystemR, outputCalendarR);\n      localeCache[cacheKey] = fresh;\n      return fresh;\n    }\n  }\n\n  static fromObject({ locale, numberingSystem, outputCalendar } = {}) {\n    return Locale.create(locale, numberingSystem, outputCalendar);\n  }\n\n  constructor(locale, numbering, outputCalendar) {\n    Object.defineProperty(this, 'locale', { value: locale, enumerable: true });\n    Object.defineProperty(this, 'numberingSystem', {\n      value: numbering || null,\n      enumerable: true\n    });\n    Object.defineProperty(this, 'outputCalendar', {\n      value: outputCalendar || null,\n      enumerable: true\n    });\n    Object.defineProperty(this, 'intl', {\n      value: intlConfigString(this.locale, this.numberingSystem, this.outputCalendar),\n      enumerable: false\n    });\n\n    // cached usefulness\n    Object.defineProperty(this, 'weekdaysCache', {\n      value: { format: {}, standalone: {} },\n      enumerable: false\n    });\n    Object.defineProperty(this, 'monthsCache', {\n      value: { format: {}, standalone: {} },\n      enumerable: false\n    });\n    Object.defineProperty(this, 'meridiemCache', {\n      value: null,\n      enumerable: false,\n      writable: true\n    });\n    Object.defineProperty(this, 'eraCache', {\n      value: {},\n      enumerable: false,\n      writable: true\n    });\n  }\n\n  // todo: cache me\n  listingMode(defaultOk = true) {\n    const hasIntl = Intl && Intl.DateTimeFormat,\n      hasFTP = hasIntl && Intl.DateTimeFormat.prototype.formatToParts,\n      isActuallyEn =\n        this.locale === 'en' ||\n        this.locale.toLowerCase() === 'en-us' ||\n        (hasIntl &&\n          Intl.DateTimeFormat(this.intl)\n            .resolvedOptions()\n            .locale.startsWith('en-US')),\n      hasNoWeirdness =\n        (this.numberingSystem === null || this.numberingSystem === 'latn') &&\n        (this.outputCalendar === null || this.outputCalendar === 'gregory');\n\n    if (!hasFTP && !(isActuallyEn && hasNoWeirdness) && !defaultOk) {\n      return 'error';\n    } else if (!hasFTP || (isActuallyEn && hasNoWeirdness)) {\n      return 'en';\n    } else {\n      return 'intl';\n    }\n  }\n\n  clone(alts) {\n    if (!alts || Object.getOwnPropertyNames(alts).length === 0) {\n      return this;\n    } else {\n      return Locale.create(\n        alts.locale || this.locale,\n        alts.numberingSystem || this.numberingSystem,\n        alts.outputCalendar || this.outputCalendar\n      );\n    }\n  }\n\n  months(length, format = false, defaultOK = true) {\n    return listStuff(this, length, defaultOK, English.months, () => {\n      const intl = format ? { month: length, day: 'numeric' } : { month: length },\n        formatStr = format ? 'format' : 'standalone';\n      if (!this.monthsCache[formatStr][length]) {\n        this.monthsCache[formatStr][length] = mapMonths(dt => this.extract(dt, intl, 'month'));\n      }\n      return this.monthsCache[formatStr][length];\n    });\n  }\n\n  weekdays(length, format = false, defaultOK = true) {\n    return listStuff(this, length, defaultOK, English.weekdays, () => {\n      const intl = format\n          ? { weekday: length, year: 'numeric', month: 'long', day: 'numeric' }\n          : { weekday: length },\n        formatStr = format ? 'format' : 'standalone';\n      if (!this.weekdaysCache[formatStr][length]) {\n        this.weekdaysCache[formatStr][length] = mapWeekdays(dt =>\n          this.extract(dt, intl, 'weekday')\n        );\n      }\n      return this.weekdaysCache[formatStr][length];\n    });\n  }\n\n  meridiems(defaultOK = true) {\n    return listStuff(\n      this,\n      undefined,\n      defaultOK,\n      () => English.meridiems,\n      () => {\n        // In theory there could be aribitrary day periods. We're gonna assume there are exactly two\n        // for AM and PM. This is probably wrong, but it's makes parsing way easier.\n        if (!this.meridiemCache) {\n          const intl = { hour: 'numeric', hour12: true };\n          this.meridiemCache = [\n            DateTime.utc(2016, 11, 13, 9),\n            DateTime.utc(2016, 11, 13, 19)\n          ].map(dt => this.extract(dt, intl, 'dayperiod'));\n        }\n\n        return this.meridiemCache;\n      }\n    );\n  }\n\n  eras(length, defaultOK = true) {\n    return listStuff(this, length, defaultOK, English.eras, () => {\n      const intl = { era: length };\n\n      // This is utter bullshit. Different calendars are going to define eras totally differently. What I need is the minimum set of dates\n      // to definitely enumerate them.\n      if (!this.eraCache[length]) {\n        this.eraCache[length] = [DateTime.utc(-40, 1, 1), DateTime.utc(2017, 1, 1)].map(dt =>\n          this.extract(dt, intl, 'era')\n        );\n      }\n\n      return this.eraCache[length];\n    });\n  }\n\n  extract(dt, intlOpts, field) {\n    const [df, d] = this.dtFormatter(dt, intlOpts),\n      results = df.formatToParts(d),\n      matching = results.find(m => m.type.toLowerCase() === field);\n\n    return matching ? matching.value : null;\n  }\n\n  numberFormatter(opts = {}, intlOpts = {}) {\n    if (Intl && Intl.NumberFormat) {\n      const realIntlOpts = Object.assign({ useGrouping: false }, intlOpts);\n\n      if (opts.padTo > 0) {\n        realIntlOpts.minimumIntegerDigits = opts.padTo;\n      }\n\n      if (opts.round) {\n        realIntlOpts.maximumFractionDigits = 0;\n      }\n\n      return new Intl.NumberFormat(this.intl, realIntlOpts);\n    } else {\n      return new PolyNumberFormatter(opts);\n    }\n  }\n\n  dtFormatter(dt, intlOpts = {}) {\n    let d, z;\n\n    if (dt.zone.universal) {\n      // if we have a fixed-offset zone that isn't actually UTC,\n      // (like UTC+8), we need to make do with just displaying\n      // the time in UTC; the formatter doesn't know how to handle UTC+8\n      d = Util.asIfUTC(dt);\n      z = 'UTC';\n    } else if (dt.zone.type === 'local') {\n      d = dt.toJSDate();\n    } else {\n      d = dt.toJSDate();\n      z = dt.zone.name;\n    }\n\n    if (Intl && Intl.DateTimeFormat) {\n      const realIntlOpts = Object.assign({}, intlOpts);\n      if (z) {\n        realIntlOpts.timeZone = z;\n      }\n      return [new Intl.DateTimeFormat(this.intl, realIntlOpts), d];\n    } else {\n      return [new PolyDateFormatter(), d];\n    }\n  }\n\n  equals(other) {\n    return (\n      this.locale === other.locale &&\n      this.numberingSystem === other.numberingSystem &&\n      this.outputCalendar === other.outputCalendar\n    );\n  }\n}\n",
    "static": true,
    "longname": "src/impl/locale.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 211,
    "kind": "variable",
    "name": "localeCache",
    "memberof": "src/impl/locale.js",
    "static": true,
    "longname": "src/impl/locale.js~localeCache",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/locale.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 5,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "{}"
      ]
    }
  },
  {
    "__docId__": 212,
    "kind": "function",
    "name": "intlConfigString",
    "memberof": "src/impl/locale.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/locale.js~intlConfigString",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/locale.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 7,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "locale",
        "types": [
          "*"
        ]
      },
      {
        "name": "numberingSystem",
        "types": [
          "*"
        ]
      },
      {
        "name": "outputCalendar",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 213,
    "kind": "function",
    "name": "mapMonths",
    "memberof": "src/impl/locale.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/locale.js~mapMonths",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/locale.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 28,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "f",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 214,
    "kind": "function",
    "name": "mapWeekdays",
    "memberof": "src/impl/locale.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/locale.js~mapWeekdays",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/locale.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 37,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "f",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 215,
    "kind": "function",
    "name": "listStuff",
    "memberof": "src/impl/locale.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/locale.js~listStuff",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/locale.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 46,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "loc",
        "types": [
          "*"
        ]
      },
      {
        "name": "length",
        "types": [
          "*"
        ]
      },
      {
        "name": "defaultOK",
        "types": [
          "*"
        ]
      },
      {
        "name": "englishFn",
        "types": [
          "*"
        ]
      },
      {
        "name": "intlFn",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 216,
    "kind": "class",
    "name": "PolyNumberFormatter",
    "memberof": "src/impl/locale.js",
    "static": true,
    "longname": "src/impl/locale.js~PolyNumberFormatter",
    "access": "private",
    "export": false,
    "importPath": "luxon/src/impl/locale.js",
    "importStyle": null,
    "description": "",
    "lineNumber": 62,
    "interface": false
  },
  {
    "__docId__": 217,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/impl/locale.js~PolyNumberFormatter",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/impl/locale.js~PolyNumberFormatter#constructor",
    "access": null,
    "description": null,
    "lineNumber": 63,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "opts",
        "types": [
          "*"
        ]
      }
    ]
  },
  {
    "__docId__": 218,
    "kind": "member",
    "name": "padTo",
    "memberof": "src/impl/locale.js~PolyNumberFormatter",
    "static": false,
    "longname": "src/impl/locale.js~PolyNumberFormatter#padTo",
    "access": null,
    "description": null,
    "lineNumber": 64,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 219,
    "kind": "member",
    "name": "round",
    "memberof": "src/impl/locale.js~PolyNumberFormatter",
    "static": false,
    "longname": "src/impl/locale.js~PolyNumberFormatter#round",
    "access": null,
    "description": null,
    "lineNumber": 65,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 220,
    "kind": "method",
    "name": "format",
    "memberof": "src/impl/locale.js~PolyNumberFormatter",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/impl/locale.js~PolyNumberFormatter#format",
    "access": null,
    "description": null,
    "lineNumber": 68,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "i",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 221,
    "kind": "class",
    "name": "PolyDateFormatter",
    "memberof": "src/impl/locale.js",
    "static": true,
    "longname": "src/impl/locale.js~PolyDateFormatter",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/locale.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 74,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "interface": false
  },
  {
    "__docId__": 222,
    "kind": "method",
    "name": "format",
    "memberof": "src/impl/locale.js~PolyDateFormatter",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/impl/locale.js~PolyDateFormatter#format",
    "access": null,
    "description": null,
    "lineNumber": 75,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "d",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 223,
    "kind": "method",
    "name": "resolvedOptions",
    "memberof": "src/impl/locale.js~PolyDateFormatter",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/impl/locale.js~PolyDateFormatter#resolvedOptions",
    "access": null,
    "description": null,
    "lineNumber": 79,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [],
    "return": {
      "types": [
        "{\"locale\": string, \"numberingSystem\": string, \"outputCalendar\": string}"
      ]
    }
  },
  {
    "__docId__": 224,
    "kind": "class",
    "name": "Locale",
    "memberof": "src/impl/locale.js",
    "static": true,
    "longname": "src/impl/locale.js~Locale",
    "access": "private",
    "export": true,
    "importPath": "luxon/src/impl/locale.js",
    "importStyle": "{Locale}",
    "description": "",
    "lineNumber": 92,
    "interface": false
  },
  {
    "__docId__": 225,
    "kind": "method",
    "name": "fromOpts",
    "memberof": "src/impl/locale.js~Locale",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/locale.js~Locale.fromOpts",
    "access": null,
    "description": null,
    "lineNumber": 93,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "opts",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 226,
    "kind": "method",
    "name": "create",
    "memberof": "src/impl/locale.js~Locale",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/locale.js~Locale.create",
    "access": null,
    "description": null,
    "lineNumber": 97,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "locale",
        "types": [
          "*"
        ]
      },
      {
        "name": "numberingSystem",
        "types": [
          "*"
        ]
      },
      {
        "name": "outputCalendar",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 227,
    "kind": "method",
    "name": "fromObject",
    "memberof": "src/impl/locale.js~Locale",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/locale.js~Locale.fromObject",
    "access": null,
    "description": null,
    "lineNumber": 113,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "objectPattern",
        "optional": true,
        "types": [
          "{\"locale\": *, \"numberingSystem\": *, \"outputCalendar\": *}"
        ],
        "defaultRaw": {},
        "defaultValue": "{}"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 228,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/impl/locale.js~Locale",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/impl/locale.js~Locale#constructor",
    "access": null,
    "description": null,
    "lineNumber": 117,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "locale",
        "types": [
          "*"
        ]
      },
      {
        "name": "numbering",
        "types": [
          "*"
        ]
      },
      {
        "name": "outputCalendar",
        "types": [
          "*"
        ]
      }
    ]
  },
  {
    "__docId__": 229,
    "kind": "method",
    "name": "listingMode",
    "memberof": "src/impl/locale.js~Locale",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/impl/locale.js~Locale#listingMode",
    "access": null,
    "description": null,
    "lineNumber": 154,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "defaultOk",
        "optional": true,
        "types": [
          "boolean"
        ],
        "defaultRaw": true,
        "defaultValue": "true"
      }
    ],
    "return": {
      "types": [
        "string"
      ]
    }
  },
  {
    "__docId__": 230,
    "kind": "method",
    "name": "clone",
    "memberof": "src/impl/locale.js~Locale",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/impl/locale.js~Locale#clone",
    "access": null,
    "description": null,
    "lineNumber": 177,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "alts",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 231,
    "kind": "method",
    "name": "months",
    "memberof": "src/impl/locale.js~Locale",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/impl/locale.js~Locale#months",
    "access": null,
    "description": null,
    "lineNumber": 189,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "length",
        "types": [
          "*"
        ]
      },
      {
        "name": "format",
        "optional": true,
        "types": [
          "boolean"
        ],
        "defaultRaw": false,
        "defaultValue": "false"
      },
      {
        "name": "defaultOK",
        "optional": true,
        "types": [
          "boolean"
        ],
        "defaultRaw": true,
        "defaultValue": "true"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 232,
    "kind": "method",
    "name": "weekdays",
    "memberof": "src/impl/locale.js~Locale",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/impl/locale.js~Locale#weekdays",
    "access": null,
    "description": null,
    "lineNumber": 200,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "length",
        "types": [
          "*"
        ]
      },
      {
        "name": "format",
        "optional": true,
        "types": [
          "boolean"
        ],
        "defaultRaw": false,
        "defaultValue": "false"
      },
      {
        "name": "defaultOK",
        "optional": true,
        "types": [
          "boolean"
        ],
        "defaultRaw": true,
        "defaultValue": "true"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 233,
    "kind": "method",
    "name": "meridiems",
    "memberof": "src/impl/locale.js~Locale",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/impl/locale.js~Locale#meridiems",
    "access": null,
    "description": null,
    "lineNumber": 215,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "defaultOK",
        "optional": true,
        "types": [
          "boolean"
        ],
        "defaultRaw": true,
        "defaultValue": "true"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 234,
    "kind": "member",
    "name": "meridiemCache",
    "memberof": "src/impl/locale.js~Locale",
    "static": false,
    "longname": "src/impl/locale.js~Locale#meridiemCache",
    "access": null,
    "description": null,
    "lineNumber": 226,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 235,
    "kind": "method",
    "name": "eras",
    "memberof": "src/impl/locale.js~Locale",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/impl/locale.js~Locale#eras",
    "access": null,
    "description": null,
    "lineNumber": 237,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "length",
        "types": [
          "*"
        ]
      },
      {
        "name": "defaultOK",
        "optional": true,
        "types": [
          "boolean"
        ],
        "defaultRaw": true,
        "defaultValue": "true"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 236,
    "kind": "method",
    "name": "extract",
    "memberof": "src/impl/locale.js~Locale",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/impl/locale.js~Locale#extract",
    "access": null,
    "description": null,
    "lineNumber": 253,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "dt",
        "types": [
          "*"
        ]
      },
      {
        "name": "intlOpts",
        "types": [
          "*"
        ]
      },
      {
        "name": "field",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 237,
    "kind": "method",
    "name": "numberFormatter",
    "memberof": "src/impl/locale.js~Locale",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/impl/locale.js~Locale#numberFormatter",
    "access": null,
    "description": null,
    "lineNumber": 261,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "opts",
        "optional": true,
        "types": [
          "{}"
        ],
        "defaultRaw": {},
        "defaultValue": "{}"
      },
      {
        "name": "intlOpts",
        "optional": true,
        "types": [
          "{}"
        ],
        "defaultRaw": {},
        "defaultValue": "{}"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 238,
    "kind": "method",
    "name": "dtFormatter",
    "memberof": "src/impl/locale.js~Locale",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/impl/locale.js~Locale#dtFormatter",
    "access": null,
    "description": null,
    "lineNumber": 279,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "dt",
        "types": [
          "*"
        ]
      },
      {
        "name": "intlOpts",
        "optional": true,
        "types": [
          "{}"
        ],
        "defaultRaw": {},
        "defaultValue": "{}"
      }
    ],
    "return": {
      "types": [
        "undefined[]"
      ]
    }
  },
  {
    "__docId__": 239,
    "kind": "method",
    "name": "equals",
    "memberof": "src/impl/locale.js~Locale",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/impl/locale.js~Locale#equals",
    "access": null,
    "description": null,
    "lineNumber": 306,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "other",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 240,
    "kind": "file",
    "name": "src/impl/regexParser.js",
    "content": "import { Util } from './util';\nimport { English } from './english';\nimport { FixedOffsetZone } from '../zones/fixedOffsetZone';\n\nfunction combineRegexes(...regexes) {\n  const full = regexes.reduce((f, r) => f + r.source, '');\n  return RegExp(full);\n}\n\nfunction combineExtractors(...extractors) {\n  return m =>\n    extractors\n      .reduce(\n        ([mergedVals, mergedZone, cursor], ex) => {\n          const [val, zone, next] = ex(m, cursor);\n          return [Object.assign(mergedVals, val), mergedZone || zone, next];\n        },\n        [{}, null, 1]\n      )\n      .slice(0, 2);\n}\n\nfunction parse(s, ...patterns) {\n  if (s == null) {\n    return [null, null];\n  }\n  for (const [regex, extractor] of patterns) {\n    const m = regex.exec(s);\n    if (m) {\n      return extractor(m);\n    }\n  }\n  return [null, null];\n}\n\nfunction simpleParse(...keys) {\n  return (match, cursor) => {\n    const ret = {};\n    let i;\n\n    for (i = 0; i < keys.length; i++) {\n      ret[keys[i]] = parseInt(match[cursor + i]);\n    }\n    return [ret, null, cursor + i];\n  };\n}\n\n// ISO parsing\nconst isoTimeRegex = /(?:T(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:[.,](\\d\\d\\d))?)?)?(?:(Z)|([+-]\\d\\d)(?::?(\\d\\d))?)?)?$/,\n  extractISOYmd = simpleParse('year', 'month', 'day'),\n  isoYmdRegex = /^([+-]?\\d{6}|\\d{4})-?(\\d\\d)-?(\\d\\d)/,\n  extractISOWeekData = simpleParse('weekYear', 'weekNumber', 'weekDay'),\n  isoWeekRegex = /^(\\d{4})-?W(\\d\\d)-?(\\d)/,\n  isoOrdinalRegex = /^(\\d{4})-?(\\d{3})/,\n  extractISOOrdinalData = simpleParse('year', 'ordinal');\n\nfunction extractISOTime(match, cursor) {\n  const local = !match[cursor + 4] && !match[cursor + 5],\n    fullOffset = Util.signedOffset(match[cursor + 5], match[cursor + 6]),\n    item = {\n      hour: parseInt(match[cursor]) || 0,\n      minute: parseInt(match[cursor + 1]) || 0,\n      second: parseInt(match[cursor + 2]) || 0,\n      millisecond: parseInt(match[cursor + 3]) || 0\n    },\n    zone = local ? null : new FixedOffsetZone(fullOffset);\n\n  return [item, zone, cursor + 7];\n}\n\n// ISO duration parsing\n\nconst isoDuration = /^P(?:(\\d+)Y)?(?:(\\d+)M)?(?:(\\d+)D)?(?:T(?:(\\d+)H)?(?:(\\d+)M)?(?:(\\d+)S)?)?$/;\n\nfunction extractISODuration(match) {\n  const [, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr] = match;\n\n  return {\n    year: parseInt(yearStr),\n    month: parseInt(monthStr),\n    day: parseInt(dayStr),\n    hour: parseInt(hourStr),\n    minute: parseInt(minuteStr),\n    second: parseInt(secondStr)\n  };\n}\n\n// These are a little braindead. EDT *should* tell us that we're in, say, America/New_York\n// and not just that we're in -240 *right now*. But since I don't think these are used that often\n// I'm just going to ignore that\nconst obsOffsets = {\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\nfunction fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n  const result = {\n    year: yearStr.length === 2 ? Util.untrucateYear(parseInt(yearStr)) : parseInt(yearStr),\n    month: English.monthsShort.indexOf(monthStr) + 1,\n    day: parseInt(dayStr),\n    hour: parseInt(hourStr),\n    minute: parseInt(minuteStr)\n  };\n\n  if (secondStr) result.second = parseInt(secondStr);\n  if (weekdayStr) {\n    result.weekday =\n      weekdayStr.length > 3\n        ? English.weekdaysLong.indexOf(weekdayStr) + 1\n        : English.weekdaysShort.indexOf(weekdayStr) + 1;\n  }\n\n  return result;\n}\n\n// RFC 2822/5322\nconst 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\\d)(\\d\\d)))$/;\n\nfunction extractRFC2822(match) {\n  const [\n      ,\n      weekdayStr,\n      dayStr,\n      monthStr,\n      yearStr,\n      hourStr,\n      minuteStr,\n      secondStr,\n      obsOffset,\n      milOffset,\n      offHourStr,\n      offMinuteStr\n    ] = match,\n    result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n\n  let offset;\n  if (obsOffset) {\n    offset = obsOffsets[obsOffset];\n  } else if (milOffset) {\n    offset = 0;\n  } else {\n    offset = Util.signedOffset(offHourStr, offMinuteStr);\n  }\n\n  return [result, new FixedOffsetZone(offset)];\n}\n\nfunction preprocessRFC2822(s) {\n  // Remove comments and folding whitespace and replace multiple-spaces with a single space\n  return s\n    .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n    .replace(/(\\s\\s+)/g, ' ')\n    .trim();\n}\n\n// http date\n\nconst rfc1123 = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d\\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n  rfc850 = /^(Monday|Tuesday|Wedsday|Thursday|Friday|Saturday|Sunday), (\\d\\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n  ascii = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \\d|\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) (\\d{4})$/;\n\nfunction extractRFC1123Or850(match) {\n  const [, weekdayStr, dayStr, monthStr, yearStr, hourStr, minuteStr, secondStr] = match,\n    result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n  return [result, FixedOffsetZone.utcInstance];\n}\n\nfunction extractASCII(match) {\n  const [, weekdayStr, monthStr, dayStr, hourStr, minuteStr, secondStr, yearStr] = match,\n    result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n  return [result, FixedOffsetZone.utcInstance];\n}\n\n/**\n * @private\n */\n\nexport class RegexParser {\n  static parseISODate(s) {\n    return parse(\n      s,\n      [combineRegexes(isoYmdRegex, isoTimeRegex), combineExtractors(extractISOYmd, extractISOTime)],\n      [\n        combineRegexes(isoWeekRegex, isoTimeRegex),\n        combineExtractors(extractISOWeekData, extractISOTime)\n      ],\n      [\n        combineRegexes(isoOrdinalRegex, isoTimeRegex),\n        combineExtractors(extractISOOrdinalData, extractISOTime)\n      ]\n    );\n  }\n\n  static parseRFC2822Date(s) {\n    return parse(preprocessRFC2822(s), [rfc2822, extractRFC2822]);\n  }\n\n  static parseHTTPDate(s) {\n    return parse(\n      s,\n      [rfc1123, extractRFC1123Or850],\n      [rfc850, extractRFC1123Or850],\n      [ascii, extractASCII]\n    );\n  }\n\n  static parseISODuration(s) {\n    return parse(s, [isoDuration, extractISODuration]);\n  }\n}\n",
    "static": true,
    "longname": "src/impl/regexParser.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 241,
    "kind": "function",
    "name": "combineRegexes",
    "memberof": "src/impl/regexParser.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/regexParser.js~combineRegexes",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/regexParser.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 5,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "regexes",
        "types": [
          "...*"
        ],
        "spread": true
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 242,
    "kind": "function",
    "name": "combineExtractors",
    "memberof": "src/impl/regexParser.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/regexParser.js~combineExtractors",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/regexParser.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 10,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "extractors",
        "types": [
          "...*"
        ],
        "spread": true
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 243,
    "kind": "function",
    "name": "parse",
    "memberof": "src/impl/regexParser.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/regexParser.js~parse",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/regexParser.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 23,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "s",
        "types": [
          "*"
        ]
      },
      {
        "name": "patterns",
        "types": [
          "...*"
        ],
        "spread": true
      }
    ],
    "return": {
      "types": [
        "undefined[]"
      ]
    }
  },
  {
    "__docId__": 244,
    "kind": "function",
    "name": "simpleParse",
    "memberof": "src/impl/regexParser.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/regexParser.js~simpleParse",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/regexParser.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 36,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "keys",
        "types": [
          "...*"
        ],
        "spread": true
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 245,
    "kind": "variable",
    "name": "isoTimeRegex",
    "memberof": "src/impl/regexParser.js",
    "static": true,
    "longname": "src/impl/regexParser.js~isoTimeRegex",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/regexParser.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 49,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "undefined"
      ]
    }
  },
  {
    "__docId__": 246,
    "kind": "function",
    "name": "extractISOTime",
    "memberof": "src/impl/regexParser.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/regexParser.js~extractISOTime",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/regexParser.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 57,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "match",
        "types": [
          "*"
        ]
      },
      {
        "name": "cursor",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "undefined[]"
      ]
    }
  },
  {
    "__docId__": 247,
    "kind": "variable",
    "name": "isoDuration",
    "memberof": "src/impl/regexParser.js",
    "static": true,
    "longname": "src/impl/regexParser.js~isoDuration",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/regexParser.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 73,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "undefined"
      ]
    }
  },
  {
    "__docId__": 248,
    "kind": "function",
    "name": "extractISODuration",
    "memberof": "src/impl/regexParser.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/regexParser.js~extractISODuration",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/regexParser.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 75,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "match",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "{\"year\": *, \"month\": *, \"day\": *, \"hour\": *, \"minute\": *, \"second\": *}"
      ]
    }
  },
  {
    "__docId__": 249,
    "kind": "variable",
    "name": "obsOffsets",
    "memberof": "src/impl/regexParser.js",
    "static": true,
    "longname": "src/impl/regexParser.js~obsOffsets",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/regexParser.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 91,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "{\"GMT\": *, \"EDT\": *, \"EST\": *, \"CDT\": *, \"CST\": *, \"MDT\": *, \"MST\": *, \"PDT\": *, \"PST\": *}"
      ]
    }
  },
  {
    "__docId__": 250,
    "kind": "function",
    "name": "fromStrings",
    "memberof": "src/impl/regexParser.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/regexParser.js~fromStrings",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/regexParser.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 103,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "weekdayStr",
        "types": [
          "*"
        ]
      },
      {
        "name": "yearStr",
        "types": [
          "*"
        ]
      },
      {
        "name": "monthStr",
        "types": [
          "*"
        ]
      },
      {
        "name": "dayStr",
        "types": [
          "*"
        ]
      },
      {
        "name": "hourStr",
        "types": [
          "*"
        ]
      },
      {
        "name": "minuteStr",
        "types": [
          "*"
        ]
      },
      {
        "name": "secondStr",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 251,
    "kind": "variable",
    "name": "rfc2822",
    "memberof": "src/impl/regexParser.js",
    "static": true,
    "longname": "src/impl/regexParser.js~rfc2822",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/regexParser.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 124,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "undefined"
      ]
    }
  },
  {
    "__docId__": 252,
    "kind": "function",
    "name": "extractRFC2822",
    "memberof": "src/impl/regexParser.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/regexParser.js~extractRFC2822",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/regexParser.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 126,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "match",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "undefined[]"
      ]
    }
  },
  {
    "__docId__": 253,
    "kind": "function",
    "name": "preprocessRFC2822",
    "memberof": "src/impl/regexParser.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/regexParser.js~preprocessRFC2822",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/regexParser.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 155,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "s",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 254,
    "kind": "variable",
    "name": "rfc1123",
    "memberof": "src/impl/regexParser.js",
    "static": true,
    "longname": "src/impl/regexParser.js~rfc1123",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/regexParser.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 165,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "undefined"
      ]
    }
  },
  {
    "__docId__": 255,
    "kind": "function",
    "name": "extractRFC1123Or850",
    "memberof": "src/impl/regexParser.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/regexParser.js~extractRFC1123Or850",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/regexParser.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 169,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "match",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "undefined[]"
      ]
    }
  },
  {
    "__docId__": 256,
    "kind": "function",
    "name": "extractASCII",
    "memberof": "src/impl/regexParser.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/regexParser.js~extractASCII",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/regexParser.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 175,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "match",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "undefined[]"
      ]
    }
  },
  {
    "__docId__": 257,
    "kind": "class",
    "name": "RegexParser",
    "memberof": "src/impl/regexParser.js",
    "static": true,
    "longname": "src/impl/regexParser.js~RegexParser",
    "access": "private",
    "export": true,
    "importPath": "luxon/src/impl/regexParser.js",
    "importStyle": "{RegexParser}",
    "description": "",
    "lineNumber": 185,
    "interface": false
  },
  {
    "__docId__": 258,
    "kind": "method",
    "name": "parseISODate",
    "memberof": "src/impl/regexParser.js~RegexParser",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/regexParser.js~RegexParser.parseISODate",
    "access": null,
    "description": null,
    "lineNumber": 186,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "s",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 259,
    "kind": "method",
    "name": "parseRFC2822Date",
    "memberof": "src/impl/regexParser.js~RegexParser",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/regexParser.js~RegexParser.parseRFC2822Date",
    "access": null,
    "description": null,
    "lineNumber": 201,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "s",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 260,
    "kind": "method",
    "name": "parseHTTPDate",
    "memberof": "src/impl/regexParser.js~RegexParser",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/regexParser.js~RegexParser.parseHTTPDate",
    "access": null,
    "description": null,
    "lineNumber": 205,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "s",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 261,
    "kind": "method",
    "name": "parseISODuration",
    "memberof": "src/impl/regexParser.js~RegexParser",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/regexParser.js~RegexParser.parseISODuration",
    "access": null,
    "description": null,
    "lineNumber": 214,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "s",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 262,
    "kind": "file",
    "name": "src/impl/tokenParser.js",
    "content": "import { Util } from './util';\nimport { Formatter } from './formatter';\nimport { FixedOffsetZone } from '../zones/fixedOffsetZone';\nimport { IANAZone } from '../zones/IANAZone';\n\nconst MISSING_FTP = 'missing Intl.DateTimeFormat.formatToParts support';\n\nfunction intUnit(regex, post = i => i) {\n  return { regex, deser: ([s]) => post(parseInt(s, 10)) };\n}\n\nfunction oneOf(strings, startIndex) {\n  if (strings === null) {\n    return null;\n  } else {\n    return {\n      regex: RegExp(strings.join('|')),\n      deser: ([s]) => strings.findIndex(i => s.toLowerCase() === i.toLowerCase()) + startIndex\n    };\n  }\n}\n\nfunction offset(regex, groups) {\n  return { regex, deser: ([, h, m]) => Util.signedOffset(h, m), groups };\n}\n\nfunction simple(regex) {\n  return { regex, deser: ([s]) => s };\n}\n\nfunction unitForToken(token, loc) {\n  const one = /\\d/,\n    two = /\\d\\d/,\n    three = /\\d{3}/,\n    four = /\\d{4}/,\n    oneOrTwo = /\\d\\d?/,\n    oneToThree = /\\d\\d{2}?/,\n    twoToFour = /\\d\\d\\d{2}?/,\n    literal = t => ({ regex: RegExp(t.val), deser: ([s]) => s, literal: true }),\n    unitate = t => {\n      if (token.literal) {\n        return literal(t);\n      }\n\n      switch (t.val) {\n        // era\n        case 'G':\n          return oneOf(loc.eras('short', false), 0);\n        case 'GG':\n          return oneOf(loc.eras('long', false), 0);\n        // years\n        case 'yyyy':\n          return intUnit(four);\n        case 'yy':\n          return intUnit(twoToFour, Util.untruncateYear);\n        // months\n        case 'M':\n          return intUnit(oneOrTwo);\n        case 'MM':\n          return intUnit(two);\n        case 'MMM':\n          return oneOf(loc.months('short', false, false), 1);\n        case 'MMMM':\n          return oneOf(loc.months('long', false, false), 1);\n        case 'L':\n          return intUnit(oneOrTwo);\n        case 'LL':\n          return intUnit(two);\n        case 'LLL':\n          return oneOf(loc.months('short', true, false), 1);\n        case 'LLLL':\n          return oneOf(loc.months('long', true, false), 1);\n        // dates\n        case 'd':\n          return intUnit(oneOrTwo);\n        case 'dd':\n          return intUnit(two);\n        // ordinals\n        case 'o':\n          return intUnit(oneToThree);\n        case 'ooo':\n          return intUnit(three);\n        // time\n        case 'HH':\n          return intUnit(two);\n        case 'H':\n          return intUnit(oneOrTwo);\n        case 'hh':\n          return intUnit(two);\n        case 'h':\n          return intUnit(oneOrTwo);\n        case 'mm':\n          return intUnit(two);\n        case 'm':\n          return intUnit(oneOrTwo);\n        case 's':\n          return intUnit(oneOrTwo);\n        case 'ss':\n          return intUnit(two);\n        case 'S':\n          return intUnit(oneToThree);\n        case 'SSS':\n          return intUnit(three);\n        // meridiem\n        case 'a':\n          return oneOf(loc.meridiems(), 0);\n        // weekYear (k)\n        case 'kkkk':\n          return intUnit(four);\n        case 'kk':\n          return intUnit(twoToFour, Util.untruncateYear);\n        // weekNumber (W)\n        case 'W':\n          return intUnit(oneOrTwo);\n        case 'WW':\n          return intUnit(two);\n        // weekdays\n        case 'E':\n        case 'c':\n          return intUnit(one);\n        case 'EEE':\n          return oneOf(loc.weekdays('short', false, false), 1);\n        case 'EEEE':\n          return oneOf(loc.weekdays('long', false, false), 1);\n        case 'ccc':\n          return oneOf(loc.weekdays('short', true, false), 1);\n        case 'cccc':\n          return oneOf(loc.weekdays('long', true, false), 1);\n        // offset/zone\n        case 'Z':\n        case 'ZZ':\n          return offset(/([+-]\\d{1,2})(?::(\\d{2}))?/, 2);\n        case 'ZZZ':\n          return offset(/([+-]\\d{1,2})(\\d{2})?/, 2);\n        // we don't support ZZZZ (PST) or ZZZZZ (Pacific Standard Time) in parsing\n        // because we don't have any way to figure out what they are\n        case 'z':\n          return simple(/[A-Za-z_]+\\/[A-Za-z_]+/);\n        default:\n          return literal(t);\n      }\n    };\n\n  const unit = unitate(token) || {\n    invalidReason: MISSING_FTP\n  };\n\n  unit.token = token;\n\n  return unit;\n}\n\nfunction buildRegex(units) {\n  return [units.map(u => u.regex).reduce((f, r) => `${f}(${r.source})`, ''), units];\n}\n\nfunction match(input, regex, handlers) {\n  const matches = input.match(regex);\n\n  if (matches) {\n    const all = {};\n    let matchIndex = 1;\n    for (const i in handlers) {\n      if (handlers.hasOwnProperty(i)) {\n        const h = handlers[i],\n          groups = h.groups ? h.groups + 1 : 1;\n        if (!h.literal && h.token) {\n          all[h.token.val[0]] = h.deser(matches.slice(matchIndex, matchIndex + groups));\n        }\n        matchIndex += groups;\n      }\n    }\n    return all;\n  } else {\n    return {};\n  }\n}\n\nfunction dateTimeFromMatches(matches) {\n  const toField = token => {\n    switch (token) {\n      case 'S':\n        return 'millisecond';\n      case 's':\n        return 'second';\n      case 'm':\n        return 'minute';\n      case 'h':\n      case 'H':\n        return 'hour';\n      case 'd':\n        return 'day';\n      case 'o':\n        return 'ordinal';\n      case 'L':\n      case 'M':\n        return 'month';\n      case 'y':\n        return 'year';\n      case 'E':\n      case 'c':\n        return 'weekday';\n      case 'W':\n        return 'weekNumber';\n      case 'k':\n        return 'weekYear';\n      default:\n        return null;\n    }\n  };\n\n  let zone;\n  if (!Util.isUndefined(matches.Z)) {\n    zone = new FixedOffsetZone(matches.Z);\n  } else if (!Util.isUndefined(matches.z)) {\n    zone = new IANAZone(matches.z);\n  } else {\n    zone = null;\n  }\n\n  if (!Util.isUndefined(matches.h) && matches.a === 1) {\n    matches.h += 12;\n  }\n\n  if (matches.G === 0 && matches.y) {\n    matches.y = -matches.y;\n  }\n\n  const vals = Object.keys(matches).reduce((r, k) => {\n    const f = toField(k);\n    if (f) {\n      r[f] = matches[k];\n    }\n\n    return r;\n  }, {});\n\n  return [vals, zone];\n}\n\n/**\n * @private\n */\n\nexport class TokenParser {\n  constructor(loc) {\n    Object.defineProperty(this, 'loc', { value: loc, enumerable: true });\n  }\n\n  explainParse(input, format) {\n    const tokens = Formatter.parseFormat(format),\n      units = tokens.map(t => unitForToken(t, this.loc)),\n      disqualifyingUnit = units.find(t => t.invalidReason);\n\n    if (disqualifyingUnit) {\n      return { input, tokens, invalidReason: disqualifyingUnit.invalidReason };\n    } else {\n      const [regex, handlers] = buildRegex(units),\n        matches = match(input, RegExp(regex, 'i'), handlers),\n        [result, zone] = matches ? dateTimeFromMatches(matches) : [null, null];\n\n      return { input, tokens, regex, matches, result, zone };\n    }\n  }\n\n  parseDateTime(input, format) {\n    const { result, zone, invalidReason } = this.explainParse(input, format);\n    return [result, zone, invalidReason];\n  }\n}\n",
    "static": true,
    "longname": "src/impl/tokenParser.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 263,
    "kind": "variable",
    "name": "MISSING_FTP",
    "memberof": "src/impl/tokenParser.js",
    "static": true,
    "longname": "src/impl/tokenParser.js~MISSING_FTP",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/tokenParser.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 6,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "string"
      ]
    }
  },
  {
    "__docId__": 264,
    "kind": "function",
    "name": "intUnit",
    "memberof": "src/impl/tokenParser.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/tokenParser.js~intUnit",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/tokenParser.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 8,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "regex",
        "types": [
          "*"
        ]
      },
      {
        "name": "post",
        "optional": true,
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "{\"regex\": *, \"deser\": *}"
      ]
    }
  },
  {
    "__docId__": 265,
    "kind": "function",
    "name": "oneOf",
    "memberof": "src/impl/tokenParser.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/tokenParser.js~oneOf",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/tokenParser.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 12,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "strings",
        "types": [
          "*"
        ]
      },
      {
        "name": "startIndex",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "{\"regex\": *, \"deser\": *}"
      ]
    }
  },
  {
    "__docId__": 266,
    "kind": "function",
    "name": "offset",
    "memberof": "src/impl/tokenParser.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/tokenParser.js~offset",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/tokenParser.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 23,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "regex",
        "types": [
          "*"
        ]
      },
      {
        "name": "groups",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "{\"regex\": *, \"deser\": *, \"groups\": *}"
      ]
    }
  },
  {
    "__docId__": 267,
    "kind": "function",
    "name": "simple",
    "memberof": "src/impl/tokenParser.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/tokenParser.js~simple",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/tokenParser.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 27,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "regex",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "{\"regex\": *, \"deser\": *}"
      ]
    }
  },
  {
    "__docId__": 268,
    "kind": "function",
    "name": "unitForToken",
    "memberof": "src/impl/tokenParser.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/tokenParser.js~unitForToken",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/tokenParser.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 31,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "token",
        "types": [
          "*"
        ]
      },
      {
        "name": "loc",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 269,
    "kind": "function",
    "name": "buildRegex",
    "memberof": "src/impl/tokenParser.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/tokenParser.js~buildRegex",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/tokenParser.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 153,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "units",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "undefined[]"
      ]
    }
  },
  {
    "__docId__": 270,
    "kind": "function",
    "name": "match",
    "memberof": "src/impl/tokenParser.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/tokenParser.js~match",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/tokenParser.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 157,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "input",
        "types": [
          "*"
        ]
      },
      {
        "name": "regex",
        "types": [
          "*"
        ]
      },
      {
        "name": "handlers",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "{}"
      ]
    }
  },
  {
    "__docId__": 271,
    "kind": "function",
    "name": "dateTimeFromMatches",
    "memberof": "src/impl/tokenParser.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/tokenParser.js~dateTimeFromMatches",
    "access": null,
    "export": false,
    "importPath": "luxon/src/impl/tokenParser.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 179,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "matches",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "undefined[]"
      ]
    }
  },
  {
    "__docId__": 272,
    "kind": "class",
    "name": "TokenParser",
    "memberof": "src/impl/tokenParser.js",
    "static": true,
    "longname": "src/impl/tokenParser.js~TokenParser",
    "access": "private",
    "export": true,
    "importPath": "luxon/src/impl/tokenParser.js",
    "importStyle": "{TokenParser}",
    "description": "",
    "lineNumber": 245,
    "interface": false
  },
  {
    "__docId__": 273,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/impl/tokenParser.js~TokenParser",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/impl/tokenParser.js~TokenParser#constructor",
    "access": null,
    "description": null,
    "lineNumber": 246,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "loc",
        "types": [
          "*"
        ]
      }
    ]
  },
  {
    "__docId__": 274,
    "kind": "method",
    "name": "explainParse",
    "memberof": "src/impl/tokenParser.js~TokenParser",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/impl/tokenParser.js~TokenParser#explainParse",
    "access": null,
    "description": null,
    "lineNumber": 250,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "input",
        "types": [
          "*"
        ]
      },
      {
        "name": "format",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "{\"input\": *, \"tokens\": *, \"regex\": *, \"matches\": *, \"result\": *, \"zone\": *}"
      ]
    }
  },
  {
    "__docId__": 275,
    "kind": "method",
    "name": "parseDateTime",
    "memberof": "src/impl/tokenParser.js~TokenParser",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/impl/tokenParser.js~TokenParser#parseDateTime",
    "access": null,
    "description": null,
    "lineNumber": 266,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "input",
        "types": [
          "*"
        ]
      },
      {
        "name": "format",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "undefined[]"
      ]
    }
  },
  {
    "__docId__": 276,
    "kind": "file",
    "name": "src/impl/util.js",
    "content": "import { Duration } from '../duration';\nimport { DateTime } from '../datetime';\nimport { Zone } from '../zone';\nimport { LocalZone } from '../zones/localZone';\nimport { IANAZone } from '../zones/IANAZone';\nimport { FixedOffsetZone } from '../zones/fixedOffsetZone';\nimport { Settings } from '../settings';\nimport { InvalidArgumentError } from '../errors';\n\n/**\n * @private\n */\n\nexport class Util {\n  static friendlyDuration(duration) {\n    if (Util.isNumber(duration)) {\n      return Duration.fromMillis(duration);\n    } else if (duration instanceof Duration) {\n      return duration;\n    } else if (duration instanceof Object) {\n      return Duration.fromObject(duration);\n    } else {\n      throw new InvalidArgumentError('Unknown duration argument');\n    }\n  }\n\n  static friendlyDateTime(dateTimeish) {\n    if (dateTimeish instanceof DateTime) {\n      return dateTimeish;\n    } else if (dateTimeish.valueOf && Util.isNumber(dateTimeish.valueOf())) {\n      return DateTime.fromJSDate(dateTimeish);\n    } else if (dateTimeish instanceof Object) {\n      return DateTime.fromObject(dateTimeish);\n    } else {\n      throw new InvalidArgumentError('Unknown datetime argument');\n    }\n  }\n\n  static maybeArray(thing) {\n    return Array.isArray(thing) ? thing : [thing];\n  }\n\n  static isUndefined(o) {\n    return typeof o === 'undefined';\n  }\n\n  static isNumber(o) {\n    return typeof o === 'number';\n  }\n\n  static isString(o) {\n    return typeof o === 'string';\n  }\n\n  static numberBetween(thing, bottom, top) {\n    return Util.isNumber(thing) && thing >= bottom && thing <= top;\n  }\n\n  static pad(input, n = 2) {\n    return ('0'.repeat(n) + input).slice(-n);\n  }\n\n  static towardZero(input) {\n    return input < 0 ? Math.ceil(input) : Math.floor(input);\n  }\n\n  // DateTime -> JS date such that the date's UTC time is the datetimes's local time\n  static asIfUTC(dt) {\n    const ts = dt.ts - dt.offset;\n    return new Date(ts);\n  }\n\n  // http://stackoverflow.com/a/15030117\n  static flatten(arr) {\n    return arr.reduce(\n      (flat, toFlatten) =>\n        flat.concat(Array.isArray(toFlatten) ? Util.flatten(toFlatten) : toFlatten),\n      []\n    );\n  }\n\n  static bestBy(arr, by, compare) {\n    return arr.reduce((best, next) => {\n      const pair = [by(next), next];\n      if (!best) {\n        return pair;\n      } else if (compare.apply(null, [best[0], pair[0]]) === best[0]) {\n        return best;\n      } else {\n        return pair;\n      }\n    }, null)[1];\n  }\n\n  static pick(obj, keys) {\n    return keys.reduce((a, k) => {\n      a[k] = obj[k];\n      return a;\n    }, {});\n  }\n\n  static isLeapYear(year) {\n    return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n  }\n\n  static daysInYear(year) {\n    return Util.isLeapYear(year) ? 366 : 365;\n  }\n\n  static daysInMonth(year, month) {\n    if (month === 2) {\n      return Util.isLeapYear(year) ? 29 : 28;\n    } else {\n      return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month - 1];\n    }\n  }\n\n  static parseZoneInfo(ts, offsetFormat, locale, timeZone = null) {\n    const date = new Date(ts),\n      intl = {\n        hour12: false,\n        // avoid AM/PM\n        year: 'numeric',\n        month: '2-digit',\n        day: '2-digit',\n        hour: '2-digit',\n        minute: '2-digit'\n      };\n\n    if (timeZone) {\n      intl.timeZone = timeZone;\n    }\n\n    const modified = Object.assign({ timeZoneName: offsetFormat }, intl);\n\n    if (Intl.DateTimeFormat.prototype.formatToParts) {\n      const parsed = new Intl.DateTimeFormat(locale, modified)\n        .formatToParts(date)\n        .find(m => m.type.toLowerCase() === 'timezonename');\n      return parsed ? parsed.value : null;\n    } else {\n      // this probably doesn't work for all locales\n      const without = new Intl.DateTimeFormat(locale, intl).format(date),\n        included = new Intl.DateTimeFormat(locale, modified).format(date),\n        diffed = included.substring(without.length),\n        trimmed = diffed.replace(/^[, ]+/, '');\n\n      return trimmed;\n    }\n  }\n\n  static normalizeZone(input) {\n    if (input === null) {\n      return LocalZone.instance;\n    } else if (input instanceof Zone) {\n      return input;\n    } else if (Util.isString(input)) {\n      const lowered = input.toLowerCase();\n      if (lowered === 'local') return LocalZone.instance;\n      else if (lowered === 'utc') return FixedOffsetZone.utcInstance;\n      else if (IANAZone.isValidSpecier(lowered)) return new IANAZone(input);\n      else return FixedOffsetZone.parseSpecifier(lowered) || Settings.defaultZone;\n    } else if (Util.isNumber(input)) {\n      return FixedOffsetZone.instance(input);\n    } else if (typeof input === 'object' && input.offset) {\n      // This is dumb, but the instanceof check above doesn't seem to really work\n      // so we're duck checking it\n      return input;\n    } else {\n      return Settings.defaultZone;\n    }\n  }\n\n  static normalizeObject(obj, normalizer, ignoreUnknown = false) {\n    const normalized = {};\n    for (const u in obj) {\n      if (obj.hasOwnProperty(u)) {\n        const v = obj[u];\n        if (v !== null && !Util.isUndefined(v) && !Number.isNaN(v)) {\n          const mapped = normalizer(u, ignoreUnknown);\n          if (mapped) {\n            normalized[mapped] = v;\n          }\n        }\n      }\n    }\n    return normalized;\n  }\n\n  static timeObject(obj) {\n    return Util.pick(obj, ['hour', 'minute', 'second', 'millisecond']);\n  }\n\n  static untrucateYear(year) {\n    return year > 60 ? 1900 + year : 2000 + year;\n  }\n\n  // signedOffset('-5', '30') -> -330\n  static signedOffset(offHourStr, offMinuteStr) {\n    const offHour = parseInt(offHourStr, 10) || 0,\n      offMin = parseInt(offMinuteStr, 10) || 0,\n      offMinSigned = offHour < 0 ? -offMin : offMin;\n    return offHour * 60 + offMinSigned;\n  }\n}\n",
    "static": true,
    "longname": "src/impl/util.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 277,
    "kind": "class",
    "name": "Util",
    "memberof": "src/impl/util.js",
    "static": true,
    "longname": "src/impl/util.js~Util",
    "access": "private",
    "export": true,
    "importPath": "luxon/src/impl/util.js",
    "importStyle": "{Util}",
    "description": "",
    "lineNumber": 14,
    "interface": false
  },
  {
    "__docId__": 278,
    "kind": "method",
    "name": "friendlyDuration",
    "memberof": "src/impl/util.js~Util",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/util.js~Util.friendlyDuration",
    "access": null,
    "description": null,
    "lineNumber": 15,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "duration",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 279,
    "kind": "method",
    "name": "friendlyDateTime",
    "memberof": "src/impl/util.js~Util",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/util.js~Util.friendlyDateTime",
    "access": null,
    "description": null,
    "lineNumber": 27,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "dateTimeish",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 280,
    "kind": "method",
    "name": "maybeArray",
    "memberof": "src/impl/util.js~Util",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/util.js~Util.maybeArray",
    "access": null,
    "description": null,
    "lineNumber": 39,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "thing",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 281,
    "kind": "method",
    "name": "isUndefined",
    "memberof": "src/impl/util.js~Util",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/util.js~Util.isUndefined",
    "access": null,
    "description": null,
    "lineNumber": 43,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "o",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 282,
    "kind": "method",
    "name": "isNumber",
    "memberof": "src/impl/util.js~Util",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/util.js~Util.isNumber",
    "access": null,
    "description": null,
    "lineNumber": 47,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "o",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 283,
    "kind": "method",
    "name": "isString",
    "memberof": "src/impl/util.js~Util",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/util.js~Util.isString",
    "access": null,
    "description": null,
    "lineNumber": 51,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "o",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 284,
    "kind": "method",
    "name": "numberBetween",
    "memberof": "src/impl/util.js~Util",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/util.js~Util.numberBetween",
    "access": null,
    "description": null,
    "lineNumber": 55,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "thing",
        "types": [
          "*"
        ]
      },
      {
        "name": "bottom",
        "types": [
          "*"
        ]
      },
      {
        "name": "top",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 285,
    "kind": "method",
    "name": "pad",
    "memberof": "src/impl/util.js~Util",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/util.js~Util.pad",
    "access": null,
    "description": null,
    "lineNumber": 59,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "input",
        "types": [
          "*"
        ]
      },
      {
        "name": "n",
        "optional": true,
        "types": [
          "number"
        ],
        "defaultRaw": 2,
        "defaultValue": "2"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 286,
    "kind": "method",
    "name": "towardZero",
    "memberof": "src/impl/util.js~Util",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/util.js~Util.towardZero",
    "access": null,
    "description": null,
    "lineNumber": 63,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "input",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 287,
    "kind": "method",
    "name": "asIfUTC",
    "memberof": "src/impl/util.js~Util",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/util.js~Util.asIfUTC",
    "access": null,
    "description": null,
    "lineNumber": 68,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "dt",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 288,
    "kind": "method",
    "name": "flatten",
    "memberof": "src/impl/util.js~Util",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/util.js~Util.flatten",
    "access": null,
    "description": null,
    "lineNumber": 74,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "arr",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 289,
    "kind": "method",
    "name": "bestBy",
    "memberof": "src/impl/util.js~Util",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/util.js~Util.bestBy",
    "access": null,
    "description": null,
    "lineNumber": 82,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "arr",
        "types": [
          "*"
        ]
      },
      {
        "name": "by",
        "types": [
          "*"
        ]
      },
      {
        "name": "compare",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 290,
    "kind": "method",
    "name": "pick",
    "memberof": "src/impl/util.js~Util",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/util.js~Util.pick",
    "access": null,
    "description": null,
    "lineNumber": 95,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "obj",
        "types": [
          "*"
        ]
      },
      {
        "name": "keys",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 291,
    "kind": "method",
    "name": "isLeapYear",
    "memberof": "src/impl/util.js~Util",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/util.js~Util.isLeapYear",
    "access": null,
    "description": null,
    "lineNumber": 102,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "year",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 292,
    "kind": "method",
    "name": "daysInYear",
    "memberof": "src/impl/util.js~Util",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/util.js~Util.daysInYear",
    "access": null,
    "description": null,
    "lineNumber": 106,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "year",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 293,
    "kind": "method",
    "name": "daysInMonth",
    "memberof": "src/impl/util.js~Util",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/util.js~Util.daysInMonth",
    "access": null,
    "description": null,
    "lineNumber": 110,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "year",
        "types": [
          "*"
        ]
      },
      {
        "name": "month",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 294,
    "kind": "method",
    "name": "parseZoneInfo",
    "memberof": "src/impl/util.js~Util",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/util.js~Util.parseZoneInfo",
    "access": null,
    "description": null,
    "lineNumber": 118,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "ts",
        "types": [
          "*"
        ]
      },
      {
        "name": "offsetFormat",
        "types": [
          "*"
        ]
      },
      {
        "name": "locale",
        "types": [
          "*"
        ]
      },
      {
        "name": "timeZone",
        "optional": true,
        "types": [
          "undefined"
        ],
        "defaultValue": "undefined"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 295,
    "kind": "method",
    "name": "normalizeZone",
    "memberof": "src/impl/util.js~Util",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/util.js~Util.normalizeZone",
    "access": null,
    "description": null,
    "lineNumber": 152,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "input",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 296,
    "kind": "method",
    "name": "normalizeObject",
    "memberof": "src/impl/util.js~Util",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/util.js~Util.normalizeObject",
    "access": null,
    "description": null,
    "lineNumber": 174,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "obj",
        "types": [
          "*"
        ]
      },
      {
        "name": "normalizer",
        "types": [
          "*"
        ]
      },
      {
        "name": "ignoreUnknown",
        "optional": true,
        "types": [
          "boolean"
        ],
        "defaultRaw": false,
        "defaultValue": "false"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 297,
    "kind": "method",
    "name": "timeObject",
    "memberof": "src/impl/util.js~Util",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/util.js~Util.timeObject",
    "access": null,
    "description": null,
    "lineNumber": 190,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "obj",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 298,
    "kind": "method",
    "name": "untrucateYear",
    "memberof": "src/impl/util.js~Util",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/util.js~Util.untrucateYear",
    "access": null,
    "description": null,
    "lineNumber": 194,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "year",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 299,
    "kind": "method",
    "name": "signedOffset",
    "memberof": "src/impl/util.js~Util",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/impl/util.js~Util.signedOffset",
    "access": null,
    "description": null,
    "lineNumber": 199,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "offHourStr",
        "types": [
          "*"
        ]
      },
      {
        "name": "offMinuteStr",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 300,
    "kind": "file",
    "name": "src/info.js",
    "content": "import { DateTime } from './datetime';\nimport { Settings } from './settings';\nimport { Locale } from './impl/locale';\nimport { Util } from './impl/util';\n\n/**\n * The Info class contains static methods for retrieving general time and date related data. For example, it has methods for finding out if a time zone has a DST, for listing the months in any supported locale, and for discovering which of Luxon features are available in the current environment.\n */\nexport class Info {\n  /**\n   * Return whether the specified zone contains a DST.\n   * @param {string|Zone} [zone='local'] - Zone to check. Defaults to the environment's local zone.\n   * @return {boolean}\n   */\n  static hasDST(zone = Settings.defaultZone) {\n    return (\n      !zone.universal &&\n      DateTime.local()\n        .setZone(zone)\n        .set({ month: 1 }).offset !==\n        DateTime.local()\n          .setZone(zone)\n          .set({ month: 5 }).offset\n    );\n  }\n\n  /**\n   * Return an array of standalone month names.\n   * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n   * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n   * @param {object} opts - options\n   * @param {string} [opts.locale='en'] - the locale code\n   * @param {string} [opts.numberingSystem=null] - the numbering system\n   * @param {string} [opts.outputCalendar='gregory'] - the calendar\n   * @example Info.months()[0] //=> 'January'\n   * @example Info.months('short')[0] //=> 'Jan'\n   * @example Info.months('numeric')[0] //=> '1'\n   * @example Info.months('short', { locale: 'fr-CA' } )[0] //=> 'janv.'\n   * @example Info.months('numeric', { locale: 'ar' })[0] //=> '١'\n   * @example Info.months('long', { outputCalendar: 'islamic' })[0] //=> 'Rabiʻ I'\n   * @return {[string]}\n   */\n  static months(\n    length = 'long',\n    { locale = 'en', numberingSystem = null, outputCalendar = 'gregory' } = {}\n  ) {\n    return new Locale(locale, numberingSystem, outputCalendar).months(length);\n  }\n\n  /**\n   * Return an array of format month names.\n   * Format months differ from standalone months in that they're meant to appear next to the day of the month. In some languages, that\n   * changes the string.\n   * See {@link months}\n   * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n   * @param {object} opts - options\n   * @param {string} [opts.locale='en'] - the locale code\n   * @param {string} [opts.numbering=null] - the numbering system\n   * @param {string} [opts.outputCalendar='gregory'] - the calendar\n   * @return {[string]}\n   */\n  static monthsFormat(\n    length = 'long',\n    { locale = 'en', numberingSystem = null, outputCalendar = 'gregory' } = {}\n  ) {\n    return new Locale(locale, numberingSystem, outputCalendar).months(length, true);\n  }\n\n  /**\n   * Return an array of standalone week names.\n   * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n   * @param {string} [length='long'] - the length of the month representation, such as \"narrow\", \"short\", \"long\".\n   * @param {object} opts - options\n   * @param {string} [opts.locale='en'] - the locale code\n   * @param {string} [opts.numbering=null] - the numbering system\n   * @param {string} [opts.outputCalendar='gregory'] - the calendar\n   * @example Info.weekdays()[0] //=> 'Monday'\n   * @example Info.weekdays('short')[0] //=> 'Mon'\n   * @example Info.weekdays('short', 'fr-CA')[0] //=> 'lun.'\n   * @example Info.weekdays('short', 'ar')[0] //=> 'الاثنين'\n   * @return {[string]}\n   */\n  static weekdays(length = 'long', { locale = 'en', numberingSystem = null } = {}) {\n    return new Locale(locale, numberingSystem, null).weekdays(length);\n  }\n\n  /**\n   * Return an array of format week names.\n   * Format weekdays differ from standalone weekdays in that they're meant to appear next to more date information. In some languages, that\n   * changes the string.\n   * See {@link weekdays}\n   * @param {string} [length='long'] - the length of the month representation, such as \"narrow\", \"short\", \"long\".\n   * @param {object} opts - options\n   * @param {string} [opts.locale='en'] - the locale code\n   * @param {string} [opts.numbering=null] - the numbering system\n   * @param {string} [opts.outputCalendar='gregory'] - the calendar\n   * @return {[string]}\n   */\n  static weekdaysFormat(length = 'long', { locale = 'en', numberingSystem = null } = {}) {\n    return new Locale(locale, numberingSystem, null).weekdays(length, true);\n  }\n\n  /**\n   * Return an array of meridiems.\n   * @param {object} opts - options\n   * @param {string} [opts.locale='en'] - the locale code\n   * @example Info.meridiems() //=> [ 'AM', 'PM' ]\n   * @example Info.meridiems('de') //=> [ 'vorm.', 'nachm.' ]\n   * @return {[string]}\n   */\n  static meridiems({ locale = 'en' } = {}) {\n    return new Locale(locale).meridiems();\n  }\n\n  /**\n   * Return an array of eras, such as ['BC', 'AD']. The locale can be specified, but the calendar system is always Gregorian.\n   * @param {string} [length='short'] - the length of the era representation, such as \"short\" or \"long\".\n   * @param {object} opts - options\n   * @param {string} [opts.locale='en'] - the locale code\n   * @example Info.eras() //=> [ 'BC', 'AD' ]\n   * @example Info.eras('long') //=> [ 'Before Christ', 'Anno Domini' ]\n   * @example Info.eras('long', 'fr') //=> [ 'avant Jésus-Christ', 'après Jésus-Christ' ]\n   * @return {[string]}\n   */\n  static eras(length = 'short', { locale = 'en' } = {}) {\n    return new Locale(locale, null, 'gregory').eras(length);\n  }\n\n  /**\n   * Return the set of available features in this environment.\n   * Some features of Luxon are not available in all environments. For example, on older browsers, timezone support is not available. Use this function to figure out if that's the case.\n   * Keys:\n   * * `timezones`: whether this environment supports IANA timezones\n   * * `intlTokens`: whether this environment supports internationalized token-based formatting/parsing\n   * * `intl`: whether this environment supports general internationalization\n   * @example Info.feature() //=> { intl: true, intlTokens: false, timezones: true }\n   * @return {object}\n   */\n  static features() {\n    let intl = false,\n      intlTokens = false,\n      zones = false;\n\n    if (!Util.isUndefined(Intl) && !Util.isUndefined(Intl.DateTimeFormat)) {\n      intl = true;\n\n      intlTokens = !Util.isUndefined(Intl.DateTimeFormat.prototype.formatToParts);\n\n      try {\n        Intl.DateTimeFormat({ timeZone: 'America/New_York' });\n        zones = true;\n      } catch (e) {\n        zones = false;\n      }\n    }\n\n    return { intl, intlTokens, zones };\n  }\n}\n",
    "static": true,
    "longname": "src/info.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 301,
    "kind": "class",
    "name": "Info",
    "memberof": "src/info.js",
    "static": true,
    "longname": "src/info.js~Info",
    "access": null,
    "export": true,
    "importPath": "luxon/src/info.js",
    "importStyle": "{Info}",
    "description": "The Info class contains static methods for retrieving general time and date related data. For example, it has methods for finding out if a time zone has a DST, for listing the months in any supported locale, and for discovering which of Luxon features are available in the current environment.",
    "lineNumber": 9,
    "interface": false
  },
  {
    "__docId__": 302,
    "kind": "method",
    "name": "hasDST",
    "memberof": "src/info.js~Info",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/info.js~Info.hasDST",
    "access": null,
    "description": "Return whether the specified zone contains a DST.",
    "lineNumber": 15,
    "params": [
      {
        "nullable": null,
        "types": [
          "string",
          "Zone"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'local'",
        "defaultRaw": "'local'",
        "name": "zone",
        "description": "Zone to check. Defaults to the environment's local zone."
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "boolean"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 303,
    "kind": "method",
    "name": "months",
    "memberof": "src/info.js~Info",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/info.js~Info.months",
    "access": null,
    "description": "Return an array of standalone month names.",
    "examples": [
      "Info.months()[0] //=> 'January'",
      "Info.months('short')[0] //=> 'Jan'",
      "Info.months('numeric')[0] //=> '1'",
      "Info.months('short', { locale: 'fr-CA' } )[0] //=> 'janv.'",
      "Info.months('numeric', { locale: 'ar' })[0] //=> '١'",
      "Info.months('long', { outputCalendar: 'islamic' })[0] //=> 'Rabiʻ I'"
    ],
    "see": [
      "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat"
    ],
    "lineNumber": 43,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'long'",
        "defaultRaw": "'long'",
        "name": "length",
        "description": "the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\""
      },
      {
        "nullable": null,
        "types": [
          "object"
        ],
        "spread": false,
        "optional": false,
        "name": "opts",
        "description": "options"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'en'",
        "defaultRaw": "'en'",
        "name": "opts.locale",
        "description": "the locale code"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "null",
        "defaultRaw": null,
        "name": "opts.numberingSystem",
        "description": "the numbering system"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'gregory'",
        "defaultRaw": "'gregory'",
        "name": "opts.outputCalendar",
        "description": "the calendar"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "[string]"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 304,
    "kind": "method",
    "name": "monthsFormat",
    "memberof": "src/info.js~Info",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/info.js~Info.monthsFormat",
    "access": null,
    "description": "Return an array of format month names.\nFormat months differ from standalone months in that they're meant to appear next to the day of the month. In some languages, that\nchanges the string.\nSee {@link months}",
    "lineNumber": 62,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'long'",
        "defaultRaw": "'long'",
        "name": "length",
        "description": "the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\""
      },
      {
        "nullable": null,
        "types": [
          "object"
        ],
        "spread": false,
        "optional": false,
        "name": "opts",
        "description": "options"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'en'",
        "defaultRaw": "'en'",
        "name": "opts.locale",
        "description": "the locale code"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "null",
        "defaultRaw": null,
        "name": "opts.numbering",
        "description": "the numbering system"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'gregory'",
        "defaultRaw": "'gregory'",
        "name": "opts.outputCalendar",
        "description": "the calendar"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "[string]"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 305,
    "kind": "method",
    "name": "weekdays",
    "memberof": "src/info.js~Info",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/info.js~Info.weekdays",
    "access": null,
    "description": "Return an array of standalone week names.",
    "examples": [
      "Info.weekdays()[0] //=> 'Monday'",
      "Info.weekdays('short')[0] //=> 'Mon'",
      "Info.weekdays('short', 'fr-CA')[0] //=> 'lun.'",
      "Info.weekdays('short', 'ar')[0] //=> 'الاثنين'"
    ],
    "see": [
      "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat"
    ],
    "lineNumber": 83,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'long'",
        "defaultRaw": "'long'",
        "name": "length",
        "description": "the length of the month representation, such as \"narrow\", \"short\", \"long\"."
      },
      {
        "nullable": null,
        "types": [
          "object"
        ],
        "spread": false,
        "optional": false,
        "name": "opts",
        "description": "options"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'en'",
        "defaultRaw": "'en'",
        "name": "opts.locale",
        "description": "the locale code"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "null",
        "defaultRaw": null,
        "name": "opts.numbering",
        "description": "the numbering system"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'gregory'",
        "defaultRaw": "'gregory'",
        "name": "opts.outputCalendar",
        "description": "the calendar"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "[string]"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 306,
    "kind": "method",
    "name": "weekdaysFormat",
    "memberof": "src/info.js~Info",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/info.js~Info.weekdaysFormat",
    "access": null,
    "description": "Return an array of format week names.\nFormat weekdays differ from standalone weekdays in that they're meant to appear next to more date information. In some languages, that\nchanges the string.\nSee {@link weekdays}",
    "lineNumber": 99,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'long'",
        "defaultRaw": "'long'",
        "name": "length",
        "description": "the length of the month representation, such as \"narrow\", \"short\", \"long\"."
      },
      {
        "nullable": null,
        "types": [
          "object"
        ],
        "spread": false,
        "optional": false,
        "name": "opts",
        "description": "options"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'en'",
        "defaultRaw": "'en'",
        "name": "opts.locale",
        "description": "the locale code"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "null",
        "defaultRaw": null,
        "name": "opts.numbering",
        "description": "the numbering system"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'gregory'",
        "defaultRaw": "'gregory'",
        "name": "opts.outputCalendar",
        "description": "the calendar"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "[string]"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 307,
    "kind": "method",
    "name": "meridiems",
    "memberof": "src/info.js~Info",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/info.js~Info.meridiems",
    "access": null,
    "description": "Return an array of meridiems.",
    "examples": [
      "Info.meridiems() //=> [ 'AM', 'PM' ]",
      "Info.meridiems('de') //=> [ 'vorm.', 'nachm.' ]"
    ],
    "lineNumber": 111,
    "params": [
      {
        "nullable": null,
        "types": [
          "object"
        ],
        "spread": false,
        "optional": false,
        "name": "opts",
        "description": "options"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'en'",
        "defaultRaw": "'en'",
        "name": "opts.locale",
        "description": "the locale code"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "[string]"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 308,
    "kind": "method",
    "name": "eras",
    "memberof": "src/info.js~Info",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/info.js~Info.eras",
    "access": null,
    "description": "Return an array of eras, such as ['BC', 'AD']. The locale can be specified, but the calendar system is always Gregorian.",
    "examples": [
      "Info.eras() //=> [ 'BC', 'AD' ]",
      "Info.eras('long') //=> [ 'Before Christ', 'Anno Domini' ]",
      "Info.eras('long', 'fr') //=> [ 'avant Jésus-Christ', 'après Jésus-Christ' ]"
    ],
    "lineNumber": 125,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'short'",
        "defaultRaw": "'short'",
        "name": "length",
        "description": "the length of the era representation, such as \"short\" or \"long\"."
      },
      {
        "nullable": null,
        "types": [
          "object"
        ],
        "spread": false,
        "optional": false,
        "name": "opts",
        "description": "options"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'en'",
        "defaultRaw": "'en'",
        "name": "opts.locale",
        "description": "the locale code"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "[string]"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 309,
    "kind": "method",
    "name": "features",
    "memberof": "src/info.js~Info",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/info.js~Info.features",
    "access": null,
    "description": "Return the set of available features in this environment.\nSome features of Luxon are not available in all environments. For example, on older browsers, timezone support is not available. Use this function to figure out if that's the case.\nKeys:\n* `timezones`: whether this environment supports IANA timezones\n* `intlTokens`: whether this environment supports internationalized token-based formatting/parsing\n* `intl`: whether this environment supports general internationalization",
    "examples": [
      "Info.feature() //=> { intl: true, intlTokens: false, timezones: true }"
    ],
    "lineNumber": 139,
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "object"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 310,
    "kind": "file",
    "name": "src/interval.js",
    "content": "import { Util } from './impl/util';\nimport { DateTime } from './datetime';\nimport { Duration } from './duration';\nimport { Settings } from './settings';\nimport { InvalidArgumentError, InvalidIntervalError } from './errors';\n\nconst INVALID = 'Invalid Interval';\n\nfunction validateStartEnd(start, end) {\n  return !!start && !!end && start.isValid && end.isValid && start <= end;\n}\n\n/**\n * An Interval object represents a half-open interval of time, where each endpoint is a {@link DateTime}. Conceptually, it's a container for those two endpoints, accompanied by methods for creating, parsing, interrogating, comparing, transforming, and formatting them.\n *\n * Here is a brief overview of the most commonly used methods and getters in Interval:\n *\n * * **Creation** To create an Interval, use {@link fromDateTimes}, {@link after}, {@link before}, or {@link fromISO}.\n * * **Accessors** Use {@link start} and {@link end} to get the start and end.\n * * **Interogation** To analyze the Interval, use {@link count}, {@link length}, {@link hasSame}, {@link contains}, {@link isAfter}, or {@link isBefore}.\n * * **Transformation** To create other Intervals out of this one, use {@link set}, {@link splitAt}, {@link splitBy}, {@link divideEqually}, {@link merge}, {@link xor}, {@link union}, {@link intersection}, or {@link difference}.\n * * **Comparison** To compare this Interval to another one, use {@link equals}, {@link overlaps}, {@link abutsStart}, {@link abutsEnd}, {@link engulfs}\n * * **Output*** To convert the Interval into other representations, see {@link toString}, {@link toISO}, {@link toFormat}, and {@link toDuration}.\n */\nexport class Interval {\n  /**\n   * @private\n   */\n  constructor(config) {\n    Object.defineProperty(this, 's', { value: config.start, enumerable: true });\n    Object.defineProperty(this, 'e', { value: config.end, enumerable: true });\n    Object.defineProperty(this, 'invalidReason', {\n      value: config.invalidReason || null,\n      enumerable: false\n    });\n  }\n\n  /**\n   * Create an invalid Interval.\n   * @return {Interval}\n   */\n  static invalid(reason) {\n    if (!reason) {\n      throw new InvalidArgumentError('need to specify a reason the DateTime is invalid');\n    }\n    if (Settings.throwOnInvalid) {\n      throw new InvalidIntervalError(reason);\n    } else {\n      return new Interval({ invalidReason: reason });\n    }\n  }\n\n  /**\n   * Create an Interval from a start DateTime and an end DateTime. Inclusive of the start but not the end.\n   * @param {DateTime|object|Date} start\n   * @param {DateTime|object|Date} end\n   * @return {Interval}\n   */\n  static fromDateTimes(start, end) {\n    const builtStart = Util.friendlyDateTime(start),\n      builtEnd = Util.friendlyDateTime(end);\n\n    return new Interval({\n      start: builtStart,\n      end: builtEnd,\n      invalidReason: validateStartEnd(builtStart, builtEnd) ? null : 'invalid endpoints'\n    });\n  }\n\n  /**\n   * Create an Interval from a start DateTime and a Duration to extend to.\n   * @param {DateTime|object|Date} start\n   * @param {Duration|number|object} duration - the length of the Interval.\n   * @return {Interval}\n   */\n  static after(start, duration) {\n    const dur = Util.friendlyDuration(duration),\n      dt = Util.friendlyDateTime(start);\n    return Interval.fromDateTimes(dt, dt.plus(dur));\n  }\n\n  /**\n   * Create an Interval from an end DateTime and a Duration to extend backwards to.\n   * @param {DateTime|object|Date} end\n   * @param {Duration|number|object} duration - the length of the Interval.\n   * @return {Interval}\n   */\n  static before(end, duration) {\n    const dur = Util.friendlyDuration(duration),\n      dt = Util.friendlyDateTime(end);\n    return Interval.fromDateTimes(dt.minus(dur), dt);\n  }\n\n  /**\n   * Create an Interval from an ISO 8601 string\n   * @param {string} string - the ISO string to parse\n   * @param {object} opts - options to pass {@see DateTime.fromISO}\n   * @return {Interval}\n   */\n  static fromISO(string, opts) {\n    if (string) {\n      const [s, e] = string.split(/\\//);\n      if (s && e) {\n        return Interval.fromDateTimes(DateTime.fromISO(s, opts), DateTime.fromISO(e, opts));\n      }\n    }\n    return Interval.invalid('invalid ISO format');\n  }\n\n  /**\n   * Returns the start of the Interval\n   * @return {DateTime}\n   */\n  get start() {\n    return this.isValid ? this.s : null;\n  }\n\n  /**\n   * Returns the end of the Interval\n   * @return {DateTime}\n   */\n  get end() {\n    return this.isValid ? this.e : null;\n  }\n\n  /**\n   * Returns whether this Interval's end is at least its start, i.e. that the Interval isn't 'backwards'.\n   * @return {boolean}\n   */\n  get isValid() {\n    return this.invalidReason === null;\n  }\n\n  /**\n   * Returns an explanation of why this Interval became invalid, or null if the Interval is valid\n   * @return {string}\n   */\n  get invalidReason() {\n    return this.invalidReason;\n  }\n\n  /**\n   * Returns the length of the Interval in the specified unit.\n   * @param {string} unit - the unit (such as 'hours' or 'days') to return the length in.\n   * @return {number}\n   */\n  length(unit = 'milliseconds') {\n    return this.isValid ? this.toDuration(...[unit]).get(unit) : NaN;\n  }\n\n  /**\n   * Returns the count of minutes, hours, days, months, or years included in the Interval, even in part.\n   * Unlike {@link length} this counts sections of the calendar, not periods of time, e.g. specifying 'day'\n   * asks 'what dates are included in this interval?', not 'how many days long is this interval?'\n   * @param {string} [unit='milliseconds'] - the unit of time to count.\n   * @return {number}\n   */\n  count(unit = 'milliseconds') {\n    if (!this.isValid) return NaN;\n    const start = this.start.startOf(unit),\n      end = this.end.startOf(unit);\n    return Math.floor(end.diff(start, unit).get(unit)) + 1;\n  }\n\n  /**\n   * Returns whether this Interval's start and end are both in the same unit of time\n   * @param {string} unit - the unit of time to check sameness on\n   * @return {boolean}\n   */\n  hasSame(unit) {\n    return this.isValid ? this.e.minus(1).hasSame(this.s, unit) : false;\n  }\n\n  /**\n   * Return whether this Interval has the same start and end DateTimes.\n   * @return {boolean}\n   */\n  isEmpty() {\n    return this.s.valueOf() === this.e.valueOf();\n  }\n\n  /**\n   * Return this Interval's start is after the specified DateTime.\n   * @param {DateTime} dateTime\n   * @return {boolean}\n   */\n  isAfter(dateTime) {\n    if (!this.isValid) return false;\n    return this.s > dateTime;\n  }\n\n  /**\n   * Return this Interval's end is before the specified DateTime.\n   * @param {Datetime} dateTime\n   * @return {boolean}\n   */\n  isBefore(dateTime) {\n    if (!this.isValid) return false;\n    return this.e.plus(1) < dateTime;\n  }\n\n  /**\n   * Return this Interval contains the specified DateTime.\n   * @param {DateTime} dateTime\n   * @return {boolean}\n   */\n  contains(dateTime) {\n    if (!this.isValid) return false;\n    return this.s <= dateTime && this.e > dateTime;\n  }\n\n  /**\n   * \"Sets\" the start and/or end dates. Returns a newly-constructed Interval.\n   * @param {object} values - the values to set\n   * @param {DateTime} values.start - the starting DateTime\n   * @param {DateTime} values.end - the ending DateTime\n   * @return {Interval}\n   */\n  set({ start, end } = {}) {\n    return Interval.fromDateTimes(start || this.s, end || this.e);\n  }\n\n  /**\n   * Split this Interval at each of the specified DateTimes\n   * @param {...DateTimes} dateTimes - the unit of time to count.\n   * @return {[Interval]}\n   */\n  splitAt(...dateTimes) {\n    if (!this.isValid) return [];\n    const sorted = dateTimes.map(Util.friendlyDateTime).sort(),\n      results = [];\n    let { s } = this,\n      i = 0;\n\n    while (s < this.e) {\n      const added = sorted[i] || this.e,\n        next = +added > +this.e ? this.e : added;\n      results.push(Interval.fromDateTimes(s, next));\n      s = next;\n      i += 1;\n    }\n\n    return results;\n  }\n\n  /**\n   * Split this Interval into smaller Intervals, each of the specified length.\n   * Left over time is grouped into a smaller interval\n   * @param {Duration|number|object} duration - The length of each resulting interval.\n   * @return {[Interval]}\n   */\n  splitBy(duration) {\n    if (!this.isValid) return [];\n    const dur = Util.friendlyDuration(duration),\n      results = [];\n    let { s } = this,\n      added,\n      next;\n\n    while (s < this.e) {\n      added = s.plus(dur);\n      next = +added > +this.e ? this.e : added;\n      results.push(Interval.fromDateTimes(s, next));\n      s = next;\n    }\n\n    return results;\n  }\n\n  /**\n   * Split this Interval into the specified number of smaller intervals.\n   * @param {number} numberOfParts - The number of Intervals to divide the Interval into.\n   * @return {[Interval]}\n   */\n  divideEqually(numberOfParts) {\n    if (!this.isValid) return [];\n    return this.splitBy(this.length() / numberOfParts).slice(0, numberOfParts);\n  }\n\n  /**\n   * Return whether this Interval overlaps with the specified Interval\n   * @param {Interval} other\n   * @return {boolean}\n   */\n  overlaps(other) {\n    return this.e > other.s && this.s < other.e;\n  }\n\n  /**\n   * Return whether this Interval's end is adjacent to the specified Interval's start.\n   * @param {Interval} other\n   * @return {boolean}\n   */\n  abutsStart(other) {\n    if (!this.isValid) return false;\n    return +this.e === +other.s;\n  }\n\n  /**\n   * Return whether this Interval's start is adjacent to the specified Interval's end.\n   * @param {Interval} other\n   * @return {boolean}\n   */\n  abutsEnd(other) {\n    if (!this.isValid) return false;\n    return +other.e === +this.s;\n  }\n\n  /**\n   * Return whether this Interval engulfs the start and end of the specified Interval.\n   * @param {Interval} other\n   * @return {boolean}\n   */\n  engulfs(other) {\n    if (!this.isValid) return false;\n    return this.s <= other.s && this.e >= other.e;\n  }\n\n  /**\n   * Return whether this Interval has the same start and end as the specified Interval.\n   * @param {Interval} other\n   * @return {boolean}\n   */\n  equals(other) {\n    return this.s.equals(other.s) && this.e.equals(other.e);\n  }\n\n  /**\n   * Return an Interval representing the intersection of this Interval and the specified Interval.\n   * Specifically, the resulting Interval has the maximum start time and the minimum end time of the two Intervals.\n   * @param {Interval} other\n   * @return {Interval}\n   */\n  intersection(other) {\n    if (!this.isValid) return this;\n    const s = this.s > other.s ? this.s : other.s,\n      e = this.e < other.e ? this.e : other.e;\n\n    if (s > e) {\n      return null;\n    } else {\n      return Interval.fromDateTimes(s, e);\n    }\n  }\n\n  /**\n   * Return an Interval representing the union of this Interval and the specified Interval.\n   * Specifically, the resulting Interval has the minimum start time and the maximum end time of the two Intervals.\n   * @param {Interval} other\n   * @return {Interval}\n   */\n  union(other) {\n    if (!this.isValid) return this;\n    const s = this.s < other.s ? this.s : other.s,\n      e = this.e > other.e ? this.e : other.e;\n    return Interval.fromDateTimes(s, e);\n  }\n\n  /**\n   * Merge an array of Intervals into a equivalent minimal set of Intervals.\n   * Combines overlapping and adjacent Intervals.\n   * @param {[Interval]} intervals\n   * @return {[Interval]}\n   */\n  static merge(intervals) {\n    const [found, final] = intervals.sort((a, b) => a.s - b.s).reduce(([sofar, current], item) => {\n      if (!current) {\n        return [sofar, item];\n      } else if (current.overlaps(item) || current.abutsStart(item)) {\n        return [sofar, current.union(item)];\n      } else {\n        return [sofar.concat([current]), item];\n      }\n    },\n    [[], null]);\n    if (final) {\n      found.push(final);\n    }\n    return found;\n  }\n\n  /**\n   * Return an array of Intervals representing the spans of time that only appear in one of the specified Intervals.\n   * @param {[Interval]} intervals\n   * @return {[Interval]}\n   */\n  static xor(intervals) {\n    let start = null,\n      currentCount = 0;\n    const results = [],\n      ends = intervals.map(i => [{ time: i.s, type: 's' }, { time: i.e, type: 'e' }]),\n      arr = Util.flatten(ends).sort((a, b) => a.time - b.time);\n\n    for (const i of arr) {\n      currentCount += i.type === 's' ? 1 : -1;\n\n      if (currentCount === 1) {\n        start = i.time;\n      } else {\n        if (start && +start !== +i.time) {\n          results.push(Interval.fromDateTimes(start, i.time));\n        }\n\n        start = null;\n      }\n    }\n\n    return Interval.merge(results);\n  }\n\n  /**\n   * Return an Interval representing the span of time in this Interval that doesn't overlap with any of the specified Intervals.\n   * @param {...Interval} intervals\n   * @return {Interval}\n   */\n  difference(...intervals) {\n    return Interval.xor([this].concat(intervals))\n      .map(i => this.intersection(i))\n      .filter(i => i && !i.isEmpty());\n  }\n\n  /**\n   * Returns a string representation of this Interval appropriate for debugging.\n   * @return {string}\n   */\n  toString() {\n    if (!this.isValid) return INVALID;\n    return `[${this.s.toISO()} – ${this.e.toISO()})`;\n  }\n\n  /**\n   * Returns an ISO 8601-compliant string representation of this Interval.\n   * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n   * @param {object} opts - The same options as {@link DateTime.toISO}\n   * @return {string}\n   */\n  toISO(opts) {\n    if (!this.isValid) return INVALID;\n    return `${this.s.toISO(opts)}/${this.e.toISO(opts)}`;\n  }\n\n  /**\n   * Returns a string representation of this Interval formatted according to the specified format string.\n   * @param {string} dateFormat - the format string. This string formats the start and end time. See {@link DateTime.toFormat} for details.\n   * @param {object} opts - options\n   * @param {string} [opts.separator =  ' – '] - a separator to place between the start and end representations\n   * @return {string}\n   */\n  toFormat(dateFormat, { separator = ' – ' } = {}) {\n    if (!this.isValid) return INVALID;\n    return `${this.s.toFormat(dateFormat)}${separator}${this.e.toFormat(dateFormat)}`;\n  }\n\n  /**\n   * Return a Duration representing the time spanned by this interval.\n   * @param {string|string[]} [unit=['milliseconds']] - the unit or units (such as 'hours' or 'days') to include in the duration.\n   * @param {Object} opts - options that affect the creation of the Duration\n   * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n   * @example Interval.fromDateTimes(dt1, dt2).toDuration().toObject() //=> { milliseconds: 88489257 }\n   * @example Interval.fromDateTimes(dt1, dt2).toDuration('days').toObject() //=> { days: 1.0241812152777778 }\n   * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes']).toObject() //=> { hours: 24, minutes: 34.82095 }\n   * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes', 'seconds']).toObject() //=> { hours: 24, minutes: 34, seconds: 49.257 }\n   * @example Interval.fromDateTimes(dt1, dt2).toDuration('seconds').toObject() //=> { seconds: 88489.257 }\n   * @return {Duration}\n   */\n  toDuration(unit, opts) {\n    if (!this.isValid) {\n      return Duration.invalid(this.invalidReason);\n    }\n    return this.e.diff(this.s, unit, opts);\n  }\n}\n",
    "static": true,
    "longname": "src/interval.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 311,
    "kind": "variable",
    "name": "INVALID",
    "memberof": "src/interval.js",
    "static": true,
    "longname": "src/interval.js~INVALID",
    "access": null,
    "export": false,
    "importPath": "luxon/src/interval.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 7,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "string"
      ]
    }
  },
  {
    "__docId__": 312,
    "kind": "function",
    "name": "validateStartEnd",
    "memberof": "src/interval.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/interval.js~validateStartEnd",
    "access": null,
    "export": false,
    "importPath": "luxon/src/interval.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 9,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "start",
        "types": [
          "*"
        ]
      },
      {
        "name": "end",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 313,
    "kind": "class",
    "name": "Interval",
    "memberof": "src/interval.js",
    "static": true,
    "longname": "src/interval.js~Interval",
    "access": null,
    "export": true,
    "importPath": "luxon/src/interval.js",
    "importStyle": "{Interval}",
    "description": "An Interval object represents a half-open interval of time, where each endpoint is a {@link DateTime}. Conceptually, it's a container for those two endpoints, accompanied by methods for creating, parsing, interrogating, comparing, transforming, and formatting them.\n\nHere is a brief overview of the most commonly used methods and getters in Interval:\n\n* **Creation** To create an Interval, use {@link fromDateTimes}, {@link after}, {@link before}, or {@link fromISO}.\n* **Accessors** Use {@link start} and {@link end} to get the start and end.\n* **Interogation** To analyze the Interval, use {@link count}, {@link length}, {@link hasSame}, {@link contains}, {@link isAfter}, or {@link isBefore}.\n* **Transformation** To create other Intervals out of this one, use {@link set}, {@link splitAt}, {@link splitBy}, {@link divideEqually}, {@link merge}, {@link xor}, {@link union}, {@link intersection}, or {@link difference}.\n* **Comparison** To compare this Interval to another one, use {@link equals}, {@link overlaps}, {@link abutsStart}, {@link abutsEnd}, {@link engulfs}\n* **Output*** To convert the Interval into other representations, see {@link toString}, {@link toISO}, {@link toFormat}, and {@link toDuration}.",
    "lineNumber": 25,
    "interface": false
  },
  {
    "__docId__": 314,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/interval.js~Interval#constructor",
    "access": "private",
    "description": "",
    "lineNumber": 29,
    "params": [
      {
        "name": "config",
        "types": [
          "*"
        ]
      }
    ]
  },
  {
    "__docId__": 315,
    "kind": "method",
    "name": "invalid",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/interval.js~Interval.invalid",
    "access": null,
    "description": "Create an invalid Interval.",
    "lineNumber": 42,
    "params": [
      {
        "name": "reason",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Interval"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 316,
    "kind": "method",
    "name": "fromDateTimes",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/interval.js~Interval.fromDateTimes",
    "access": null,
    "description": "Create an Interval from a start DateTime and an end DateTime. Inclusive of the start but not the end.",
    "lineNumber": 59,
    "params": [
      {
        "nullable": null,
        "types": [
          "DateTime",
          "object",
          "Date"
        ],
        "spread": false,
        "optional": false,
        "name": "start",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "DateTime",
          "object",
          "Date"
        ],
        "spread": false,
        "optional": false,
        "name": "end",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Interval"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 317,
    "kind": "method",
    "name": "after",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/interval.js~Interval.after",
    "access": null,
    "description": "Create an Interval from a start DateTime and a Duration to extend to.",
    "lineNumber": 76,
    "params": [
      {
        "nullable": null,
        "types": [
          "DateTime",
          "object",
          "Date"
        ],
        "spread": false,
        "optional": false,
        "name": "start",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "Duration",
          "number",
          "object"
        ],
        "spread": false,
        "optional": false,
        "name": "duration",
        "description": "the length of the Interval."
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Interval"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 318,
    "kind": "method",
    "name": "before",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/interval.js~Interval.before",
    "access": null,
    "description": "Create an Interval from an end DateTime and a Duration to extend backwards to.",
    "lineNumber": 88,
    "params": [
      {
        "nullable": null,
        "types": [
          "DateTime",
          "object",
          "Date"
        ],
        "spread": false,
        "optional": false,
        "name": "end",
        "description": ""
      },
      {
        "nullable": null,
        "types": [
          "Duration",
          "number",
          "object"
        ],
        "spread": false,
        "optional": false,
        "name": "duration",
        "description": "the length of the Interval."
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Interval"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 319,
    "kind": "method",
    "name": "fromISO",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/interval.js~Interval.fromISO",
    "access": null,
    "description": "Create an Interval from an ISO 8601 string",
    "lineNumber": 100,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "string",
        "description": "the ISO string to parse"
      },
      {
        "nullable": null,
        "types": [
          "object"
        ],
        "spread": false,
        "optional": false,
        "name": "opts",
        "description": "options to pass {@see DateTime.fromISO}"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Interval"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 320,
    "kind": "get",
    "name": "start",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/interval.js~Interval#start",
    "access": null,
    "description": "Returns the start of the Interval",
    "lineNumber": 114,
    "return": {
      "nullable": null,
      "types": [
        "DateTime"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 321,
    "kind": "get",
    "name": "end",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/interval.js~Interval#end",
    "access": null,
    "description": "Returns the end of the Interval",
    "lineNumber": 122,
    "return": {
      "nullable": null,
      "types": [
        "DateTime"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 322,
    "kind": "get",
    "name": "isValid",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/interval.js~Interval#isValid",
    "access": null,
    "description": "Returns whether this Interval's end is at least its start, i.e. that the Interval isn't 'backwards'.",
    "lineNumber": 130,
    "return": {
      "nullable": null,
      "types": [
        "boolean"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 323,
    "kind": "get",
    "name": "invalidReason",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/interval.js~Interval#invalidReason",
    "access": null,
    "description": "Returns an explanation of why this Interval became invalid, or null if the Interval is valid",
    "lineNumber": 138,
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    },
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 324,
    "kind": "method",
    "name": "length",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/interval.js~Interval#length",
    "access": null,
    "description": "Returns the length of the Interval in the specified unit.",
    "lineNumber": 147,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "unit",
        "description": "the unit (such as 'hours' or 'days') to return the length in."
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 325,
    "kind": "method",
    "name": "count",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/interval.js~Interval#count",
    "access": null,
    "description": "Returns the count of minutes, hours, days, months, or years included in the Interval, even in part.\nUnlike {@link length} this counts sections of the calendar, not periods of time, e.g. specifying 'day'\nasks 'what dates are included in this interval?', not 'how many days long is this interval?'",
    "lineNumber": 158,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'milliseconds'",
        "defaultRaw": "'milliseconds'",
        "name": "unit",
        "description": "the unit of time to count."
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 326,
    "kind": "method",
    "name": "hasSame",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/interval.js~Interval#hasSame",
    "access": null,
    "description": "Returns whether this Interval's start and end are both in the same unit of time",
    "lineNumber": 170,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "unit",
        "description": "the unit of time to check sameness on"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "boolean"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 327,
    "kind": "method",
    "name": "isEmpty",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/interval.js~Interval#isEmpty",
    "access": null,
    "description": "Return whether this Interval has the same start and end DateTimes.",
    "lineNumber": 178,
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "boolean"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 328,
    "kind": "method",
    "name": "isAfter",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/interval.js~Interval#isAfter",
    "access": null,
    "description": "Return this Interval's start is after the specified DateTime.",
    "lineNumber": 187,
    "params": [
      {
        "nullable": null,
        "types": [
          "DateTime"
        ],
        "spread": false,
        "optional": false,
        "name": "dateTime",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "boolean"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 329,
    "kind": "method",
    "name": "isBefore",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/interval.js~Interval#isBefore",
    "access": null,
    "description": "Return this Interval's end is before the specified DateTime.",
    "lineNumber": 197,
    "params": [
      {
        "nullable": null,
        "types": [
          "Datetime"
        ],
        "spread": false,
        "optional": false,
        "name": "dateTime",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "boolean"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 330,
    "kind": "method",
    "name": "contains",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/interval.js~Interval#contains",
    "access": null,
    "description": "Return this Interval contains the specified DateTime.",
    "lineNumber": 207,
    "params": [
      {
        "nullable": null,
        "types": [
          "DateTime"
        ],
        "spread": false,
        "optional": false,
        "name": "dateTime",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "boolean"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 331,
    "kind": "method",
    "name": "set",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/interval.js~Interval#set",
    "access": null,
    "description": "\"Sets\" the start and/or end dates. Returns a newly-constructed Interval.",
    "lineNumber": 219,
    "params": [
      {
        "nullable": null,
        "types": [
          "object"
        ],
        "spread": false,
        "optional": false,
        "name": "values",
        "description": "the values to set"
      },
      {
        "nullable": null,
        "types": [
          "DateTime"
        ],
        "spread": false,
        "optional": false,
        "name": "values.start",
        "description": "the starting DateTime"
      },
      {
        "nullable": null,
        "types": [
          "DateTime"
        ],
        "spread": false,
        "optional": false,
        "name": "values.end",
        "description": "the ending DateTime"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Interval"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 332,
    "kind": "method",
    "name": "splitAt",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/interval.js~Interval#splitAt",
    "access": null,
    "description": "Split this Interval at each of the specified DateTimes",
    "lineNumber": 228,
    "params": [
      {
        "nullable": null,
        "types": [
          "...DateTimes"
        ],
        "spread": true,
        "optional": false,
        "name": "dateTimes",
        "description": "the unit of time to count."
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "[Interval]"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 333,
    "kind": "method",
    "name": "splitBy",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/interval.js~Interval#splitBy",
    "access": null,
    "description": "Split this Interval into smaller Intervals, each of the specified length.\nLeft over time is grouped into a smaller interval",
    "lineNumber": 252,
    "params": [
      {
        "nullable": null,
        "types": [
          "Duration",
          "number",
          "object"
        ],
        "spread": false,
        "optional": false,
        "name": "duration",
        "description": "The length of each resulting interval."
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "[Interval]"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 334,
    "kind": "method",
    "name": "divideEqually",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/interval.js~Interval#divideEqually",
    "access": null,
    "description": "Split this Interval into the specified number of smaller intervals.",
    "lineNumber": 275,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "numberOfParts",
        "description": "The number of Intervals to divide the Interval into."
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "[Interval]"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 335,
    "kind": "method",
    "name": "overlaps",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/interval.js~Interval#overlaps",
    "access": null,
    "description": "Return whether this Interval overlaps with the specified Interval",
    "lineNumber": 285,
    "params": [
      {
        "nullable": null,
        "types": [
          "Interval"
        ],
        "spread": false,
        "optional": false,
        "name": "other",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "boolean"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 336,
    "kind": "method",
    "name": "abutsStart",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/interval.js~Interval#abutsStart",
    "access": null,
    "description": "Return whether this Interval's end is adjacent to the specified Interval's start.",
    "lineNumber": 294,
    "params": [
      {
        "nullable": null,
        "types": [
          "Interval"
        ],
        "spread": false,
        "optional": false,
        "name": "other",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "boolean"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 337,
    "kind": "method",
    "name": "abutsEnd",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/interval.js~Interval#abutsEnd",
    "access": null,
    "description": "Return whether this Interval's start is adjacent to the specified Interval's end.",
    "lineNumber": 304,
    "params": [
      {
        "nullable": null,
        "types": [
          "Interval"
        ],
        "spread": false,
        "optional": false,
        "name": "other",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "boolean"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 338,
    "kind": "method",
    "name": "engulfs",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/interval.js~Interval#engulfs",
    "access": null,
    "description": "Return whether this Interval engulfs the start and end of the specified Interval.",
    "lineNumber": 314,
    "params": [
      {
        "nullable": null,
        "types": [
          "Interval"
        ],
        "spread": false,
        "optional": false,
        "name": "other",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "boolean"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 339,
    "kind": "method",
    "name": "equals",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/interval.js~Interval#equals",
    "access": null,
    "description": "Return whether this Interval has the same start and end as the specified Interval.",
    "lineNumber": 324,
    "params": [
      {
        "nullable": null,
        "types": [
          "Interval"
        ],
        "spread": false,
        "optional": false,
        "name": "other",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "boolean"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 340,
    "kind": "method",
    "name": "intersection",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/interval.js~Interval#intersection",
    "access": null,
    "description": "Return an Interval representing the intersection of this Interval and the specified Interval.\nSpecifically, the resulting Interval has the maximum start time and the minimum end time of the two Intervals.",
    "lineNumber": 334,
    "params": [
      {
        "nullable": null,
        "types": [
          "Interval"
        ],
        "spread": false,
        "optional": false,
        "name": "other",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Interval"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 341,
    "kind": "method",
    "name": "union",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/interval.js~Interval#union",
    "access": null,
    "description": "Return an Interval representing the union of this Interval and the specified Interval.\nSpecifically, the resulting Interval has the minimum start time and the maximum end time of the two Intervals.",
    "lineNumber": 352,
    "params": [
      {
        "nullable": null,
        "types": [
          "Interval"
        ],
        "spread": false,
        "optional": false,
        "name": "other",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Interval"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 342,
    "kind": "method",
    "name": "merge",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/interval.js~Interval.merge",
    "access": null,
    "description": "Merge an array of Intervals into a equivalent minimal set of Intervals.\nCombines overlapping and adjacent Intervals.",
    "lineNumber": 365,
    "params": [
      {
        "nullable": null,
        "types": [
          "[Interval]"
        ],
        "spread": false,
        "optional": false,
        "name": "intervals",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "[Interval]"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 343,
    "kind": "method",
    "name": "xor",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/interval.js~Interval.xor",
    "access": null,
    "description": "Return an array of Intervals representing the spans of time that only appear in one of the specified Intervals.",
    "lineNumber": 387,
    "params": [
      {
        "nullable": null,
        "types": [
          "[Interval]"
        ],
        "spread": false,
        "optional": false,
        "name": "intervals",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "[Interval]"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 344,
    "kind": "method",
    "name": "difference",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/interval.js~Interval#difference",
    "access": null,
    "description": "Return an Interval representing the span of time in this Interval that doesn't overlap with any of the specified Intervals.",
    "lineNumber": 416,
    "params": [
      {
        "nullable": null,
        "types": [
          "...Interval"
        ],
        "spread": true,
        "optional": false,
        "name": "intervals",
        "description": ""
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Interval"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 345,
    "kind": "method",
    "name": "toString",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/interval.js~Interval#toString",
    "access": null,
    "description": "Returns a string representation of this Interval appropriate for debugging.",
    "lineNumber": 426,
    "params": [],
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 346,
    "kind": "method",
    "name": "toISO",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/interval.js~Interval#toISO",
    "access": null,
    "description": "Returns an ISO 8601-compliant string representation of this Interval.",
    "see": [
      "https://en.wikipedia.org/wiki/ISO_8601#Time_intervals"
    ],
    "lineNumber": 437,
    "params": [
      {
        "nullable": null,
        "types": [
          "object"
        ],
        "spread": false,
        "optional": false,
        "name": "opts",
        "description": "The same options as {@link DateTime.toISO}"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 347,
    "kind": "method",
    "name": "toFormat",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/interval.js~Interval#toFormat",
    "access": null,
    "description": "Returns a string representation of this Interval formatted according to the specified format string.",
    "lineNumber": 449,
    "params": [
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "dateFormat",
        "description": "the format string. This string formats the start and end time. See {@link DateTime.toFormat} for details."
      },
      {
        "nullable": null,
        "types": [
          "object"
        ],
        "spread": false,
        "optional": false,
        "name": "opts",
        "description": "options"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "  ' – '",
        "defaultRaw": "  ' – '",
        "name": "opts.separator",
        "description": "a separator to place between the start and end representations"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 348,
    "kind": "method",
    "name": "toDuration",
    "memberof": "src/interval.js~Interval",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/interval.js~Interval#toDuration",
    "access": null,
    "description": "Return a Duration representing the time spanned by this interval.",
    "examples": [
      "Interval.fromDateTimes(dt1, dt2).toDuration().toObject() //=> { milliseconds: 88489257 }",
      "Interval.fromDateTimes(dt1, dt2).toDuration('days').toObject() //=> { days: 1.0241812152777778 }",
      "Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes']).toObject() //=> { hours: 24, minutes: 34.82095 }",
      "Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes', 'seconds']).toObject() //=> { hours: 24, minutes: 34, seconds: 49.257 }",
      "Interval.fromDateTimes(dt1, dt2).toDuration('seconds').toObject() //=> { seconds: 88489.257 }"
    ],
    "lineNumber": 466,
    "params": [
      {
        "nullable": null,
        "types": [
          "string",
          "string[]"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "['milliseconds']",
        "defaultRaw": "['milliseconds']",
        "name": "unit",
        "description": "the unit or units (such as 'hours' or 'days') to include in the duration."
      },
      {
        "nullable": null,
        "types": [
          "Object"
        ],
        "spread": false,
        "optional": false,
        "name": "opts",
        "description": "options that affect the creation of the Duration"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": true,
        "defaultValue": "'casual'",
        "defaultRaw": "'casual'",
        "name": "opts.conversionAccuracy",
        "description": "the conversion system to use"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "Duration"
      ],
      "spread": false,
      "description": ""
    }
  },
  {
    "__docId__": 349,
    "kind": "file",
    "name": "src/luxon.js",
    "content": "import 'core-js/es6/symbol';\nimport 'core-js/es6/object';\nimport 'core-js/fn/symbol/iterator';\nimport 'core-js/fn/number/is-nan';\nimport 'core-js/es6/array';\nimport 'core-js/fn/string/virtual/starts-with';\nimport 'core-js/fn/string/virtual/pad-start';\n\nexport { DateTime } from './datetime';\nexport { Duration } from './duration';\nexport { Interval } from './interval';\nexport { Info } from './info';\nexport { Zone } from './zone';\nexport { Settings } from './settings';\n",
    "static": true,
    "longname": "src/luxon.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 350,
    "kind": "file",
    "name": "src/settings.js",
    "content": "import { LocalZone } from './zones/localZone';\nimport { Util } from './impl/util';\n\nlet now = () => new Date().valueOf(),\n  defaultZone = LocalZone.instance,\n  throwOnInvalid = false;\n\n/**\n * Settings contains static getters and setters that control Luxon's overall behavior. Luxon is a simple library with few options, but the ones it does have live here.\n */\nexport class Settings {\n  /**\n   * Get the callback for returning the current timestamp.\n   * @type {function}\n   */\n  static get now() {\n    return now;\n  }\n\n  /**\n   * Set the callback for returning the current timestamp.\n   * @type {function}\n   */\n  static set now(n) {\n    now = n;\n  }\n\n  /**\n   * Set the default time zone to create DateTimes in.\n   * @type {string}\n   */\n  static get defaultZoneName() {\n    return defaultZone.name;\n  }\n\n  /**\n   * Set the default time zone to create DateTimes in.\n   * @type {string}\n   */\n  static set defaultZoneName(z) {\n    defaultZone = Util.normalizeZone(z);\n  }\n\n  /**\n   * Get the default time zone object to create DateTimes in.\n   * @type {Zone}\n   */\n  static get defaultZone() {\n    return defaultZone;\n  }\n\n  /**\n   * Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n   * @type {Zone}\n   */\n  static get throwOnInvalid() {\n    return throwOnInvalid;\n  }\n\n  /**\n   * Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n   * @type {Zone}\n   */\n  static set throwOnInvalid(t) {\n    throwOnInvalid = t;\n  }\n}\n",
    "static": true,
    "longname": "src/settings.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 351,
    "kind": "function",
    "name": "now",
    "memberof": "src/settings.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/settings.js~now",
    "access": null,
    "export": false,
    "importPath": "luxon/src/settings.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 4,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": []
  },
  {
    "__docId__": 352,
    "kind": "class",
    "name": "Settings",
    "memberof": "src/settings.js",
    "static": true,
    "longname": "src/settings.js~Settings",
    "access": null,
    "export": true,
    "importPath": "luxon/src/settings.js",
    "importStyle": "{Settings}",
    "description": "Settings contains static getters and setters that control Luxon's overall behavior. Luxon is a simple library with few options, but the ones it does have live here.",
    "lineNumber": 11,
    "interface": false
  },
  {
    "__docId__": 353,
    "kind": "get",
    "name": "now",
    "memberof": "src/settings.js~Settings",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/settings.js~Settings.now",
    "access": null,
    "description": "Get the callback for returning the current timestamp.",
    "lineNumber": 16,
    "type": {
      "nullable": null,
      "types": [
        "function"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 354,
    "kind": "set",
    "name": "now",
    "memberof": "src/settings.js~Settings",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/settings.js~Settings.now",
    "access": null,
    "description": "Set the callback for returning the current timestamp.",
    "lineNumber": 24,
    "type": {
      "nullable": null,
      "types": [
        "function"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 355,
    "kind": "get",
    "name": "defaultZoneName",
    "memberof": "src/settings.js~Settings",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/settings.js~Settings.defaultZoneName",
    "access": null,
    "description": "Set the default time zone to create DateTimes in.",
    "lineNumber": 32,
    "type": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 356,
    "kind": "set",
    "name": "defaultZoneName",
    "memberof": "src/settings.js~Settings",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/settings.js~Settings.defaultZoneName",
    "access": null,
    "description": "Set the default time zone to create DateTimes in.",
    "lineNumber": 40,
    "type": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 357,
    "kind": "get",
    "name": "defaultZone",
    "memberof": "src/settings.js~Settings",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/settings.js~Settings.defaultZone",
    "access": null,
    "description": "Get the default time zone object to create DateTimes in.",
    "lineNumber": 48,
    "type": {
      "nullable": null,
      "types": [
        "Zone"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 358,
    "kind": "get",
    "name": "throwOnInvalid",
    "memberof": "src/settings.js~Settings",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/settings.js~Settings.throwOnInvalid",
    "access": null,
    "description": "Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals",
    "lineNumber": 56,
    "type": {
      "nullable": null,
      "types": [
        "Zone"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 359,
    "kind": "set",
    "name": "throwOnInvalid",
    "memberof": "src/settings.js~Settings",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/settings.js~Settings.throwOnInvalid",
    "access": null,
    "description": "Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals",
    "lineNumber": 64,
    "type": {
      "nullable": null,
      "types": [
        "Zone"
      ],
      "spread": false,
      "description": null
    }
  },
  {
    "__docId__": 360,
    "kind": "file",
    "name": "src/zone.js",
    "content": "/* eslint no-unused-vars: \"off\" */\nimport { ZoneIsAbstractError } from './errors';\n\n/**\n * @interface\n*/\nexport class Zone {\n  /**\n   * The type of zone\n   * @abstract\n   * @return {string}\n   */\n  get type() {\n    throw new ZoneIsAbstractError();\n  }\n\n  /**\n   * The name of this zone.\n   * @abstract\n   * @return {string}\n   */\n  get name() {\n    throw new ZoneIsAbstractError();\n  }\n\n  /**\n   * Returns whether the offset is known to be fixed for the whole year.\n   * @abstract\n   * @return {boolean}\n   */\n  get universal() {\n    throw new ZoneIsAbstractError();\n  }\n\n  /**\n   * Returns the offset's common name (such as EST) at the specified timestamp\n   * @abstract\n   * @param {number} ts - Epoch milliseconds for which to get the name\n   * @param {Object} options - Options to affect the format\n   * @param {string} options.format - What style of offset to return. Accepts 'long' or 'short'.\n   * @param {string} options.localeCode - What locale to return the offset name in. Defaults to us-en\n   * @return {string}\n   */\n  static offsetName(ts, { format = 'long', localeCode = 'en-US' } = {}) {\n    throw new ZoneIsAbstractError();\n  }\n\n  /**\n   * Return the offset in minutes for this zone at the specified timestamp.\n   * @abstract\n   * @param {number} ts - Epoch milliseconds for which to compute the offset\n   * @return {number}\n   */\n  offset(ts) {\n    throw new ZoneIsAbstractError();\n  }\n\n  /**\n   * Return whether this Zone is equal to another zoner\n   * @abstract\n   * @param {Zone} otherZone - the zone to compare\n   * @return {boolean}\n   */\n  equals(otherZone) {\n    throw new ZoneIsAbstractError();\n  }\n\n  /**\n   * Return whether this Zone is valid.\n   * @abstract\n   * @return {boolean}\n   */\n  get isValid() {\n    throw new ZoneIsAbstractError();\n  }\n}\n",
    "static": true,
    "longname": "src/zone.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 361,
    "kind": "class",
    "name": "Zone",
    "memberof": "src/zone.js",
    "static": true,
    "longname": "src/zone.js~Zone",
    "access": null,
    "export": true,
    "importPath": "luxon/src/zone.js",
    "importStyle": "{Zone}",
    "description": "",
    "lineNumber": 7,
    "interface": true
  },
  {
    "__docId__": 362,
    "kind": "get",
    "name": "type",
    "memberof": "src/zone.js~Zone",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/zone.js~Zone#type",
    "access": null,
    "description": "The type of zone",
    "lineNumber": 13,
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    },
    "abstract": true
  },
  {
    "__docId__": 363,
    "kind": "get",
    "name": "name",
    "memberof": "src/zone.js~Zone",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/zone.js~Zone#name",
    "access": null,
    "description": "The name of this zone.",
    "lineNumber": 22,
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    },
    "abstract": true
  },
  {
    "__docId__": 364,
    "kind": "get",
    "name": "universal",
    "memberof": "src/zone.js~Zone",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/zone.js~Zone#universal",
    "access": null,
    "description": "Returns whether the offset is known to be fixed for the whole year.",
    "lineNumber": 31,
    "return": {
      "nullable": null,
      "types": [
        "boolean"
      ],
      "spread": false,
      "description": ""
    },
    "abstract": true
  },
  {
    "__docId__": 365,
    "kind": "method",
    "name": "offsetName",
    "memberof": "src/zone.js~Zone",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/zone.js~Zone.offsetName",
    "access": null,
    "description": "Returns the offset's common name (such as EST) at the specified timestamp",
    "lineNumber": 44,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "ts",
        "description": "Epoch milliseconds for which to get the name"
      },
      {
        "nullable": null,
        "types": [
          "Object"
        ],
        "spread": false,
        "optional": false,
        "name": "options",
        "description": "Options to affect the format"
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "options.format",
        "description": "What style of offset to return. Accepts 'long' or 'short'."
      },
      {
        "nullable": null,
        "types": [
          "string"
        ],
        "spread": false,
        "optional": false,
        "name": "options.localeCode",
        "description": "What locale to return the offset name in. Defaults to us-en"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "string"
      ],
      "spread": false,
      "description": ""
    },
    "abstract": true
  },
  {
    "__docId__": 366,
    "kind": "method",
    "name": "offset",
    "memberof": "src/zone.js~Zone",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/zone.js~Zone#offset",
    "access": null,
    "description": "Return the offset in minutes for this zone at the specified timestamp.",
    "lineNumber": 54,
    "params": [
      {
        "nullable": null,
        "types": [
          "number"
        ],
        "spread": false,
        "optional": false,
        "name": "ts",
        "description": "Epoch milliseconds for which to compute the offset"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "number"
      ],
      "spread": false,
      "description": ""
    },
    "abstract": true
  },
  {
    "__docId__": 367,
    "kind": "method",
    "name": "equals",
    "memberof": "src/zone.js~Zone",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/zone.js~Zone#equals",
    "access": null,
    "description": "Return whether this Zone is equal to another zoner",
    "lineNumber": 64,
    "params": [
      {
        "nullable": null,
        "types": [
          "Zone"
        ],
        "spread": false,
        "optional": false,
        "name": "otherZone",
        "description": "the zone to compare"
      }
    ],
    "return": {
      "nullable": null,
      "types": [
        "boolean"
      ],
      "spread": false,
      "description": ""
    },
    "abstract": true
  },
  {
    "__docId__": 368,
    "kind": "get",
    "name": "isValid",
    "memberof": "src/zone.js~Zone",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/zone.js~Zone#isValid",
    "access": null,
    "description": "Return whether this Zone is valid.",
    "lineNumber": 73,
    "return": {
      "nullable": null,
      "types": [
        "boolean"
      ],
      "spread": false,
      "description": ""
    },
    "abstract": true
  },
  {
    "__docId__": 369,
    "kind": "file",
    "name": "src/zones/IANAZone.js",
    "content": "import { Util } from '../impl/util';\nimport { Zone } from '../zone';\n\nconst typeToPos = {\n  year: 0,\n  month: 1,\n  day: 2,\n  hour: 3,\n  minute: 4,\n  second: 5\n};\n\nfunction hackyOffset(dtf, date) {\n  const formatted = dtf.format(date),\n    parsed = /(\\d+)\\/(\\d+)\\/(\\d+), (\\d+):(\\d+):(\\d+)/.exec(formatted),\n    [, fMonth, fDay, fYear, fHour, fMinute, fSecond] = parsed;\n  return [fYear, fMonth, fDay, fHour, fMinute, fSecond];\n}\n\nfunction partsOffset(dtf, date) {\n  const formatted = dtf.formatToParts(date),\n    filled = [];\n  for (let i = 0; i < formatted.length; i++) {\n    const { type, value } = formatted[i],\n      pos = typeToPos[type];\n\n    if (!Util.isUndefined(pos)) {\n      filled[pos] = parseInt(value, 10);\n    }\n  }\n  return filled;\n}\n\nfunction isValid(zone) {\n  try {\n    new Intl.DateTimeFormat('en-US', { timeZone: zone }).format();\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\n/**\n * @private\n */\n\nexport class IANAZone extends Zone {\n  static isValidSpecier(s) {\n    return s && s.match(/[a-z_]+\\/[a-z_]+/i);\n  }\n\n  constructor(name) {\n    super();\n    this.zoneName = name;\n    this.valid = isValid(name);\n  }\n\n  get type() {\n    return 'iana';\n  }\n\n  get name() {\n    return this.zoneName;\n  }\n\n  get universal() {\n    return false;\n  }\n\n  offsetName(ts, { format = 'long', locale = 'en-US' } = {}) {\n    return Util.parseZoneInfo(ts, format, locale || 'en-US', this.zoneName);\n  }\n\n  offset(ts) {\n    const date = new Date(ts),\n      dtf = new Intl.DateTimeFormat('en-US', {\n        hour12: false,\n        timeZone: this.zoneName,\n        year: 'numeric',\n        month: '2-digit',\n        day: '2-digit',\n        hour: '2-digit',\n        minute: '2-digit',\n        second: '2-digit'\n      }),\n      [fYear, fMonth, fDay, fHour, fMinute, fSecond] = dtf.formatToParts\n        ? partsOffset(dtf, date)\n        : hackyOffset(dtf, date),\n      asUTC = Date.UTC(fYear, fMonth - 1, fDay, fHour, fMinute, fSecond);\n    let asTS = date.valueOf();\n    asTS -= asTS % 1000;\n    return (asUTC - asTS) / (60 * 1000);\n  }\n\n  equals(otherZone) {\n    return otherZone.type === 'iana' && otherZone.zoneName === this.zoneName;\n  }\n\n  get isValid() {\n    return this.valid;\n  }\n}\n",
    "static": true,
    "longname": "src/zones/IANAZone.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 370,
    "kind": "variable",
    "name": "typeToPos",
    "memberof": "src/zones/IANAZone.js",
    "static": true,
    "longname": "src/zones/IANAZone.js~typeToPos",
    "access": null,
    "export": false,
    "importPath": "luxon/src/zones/IANAZone.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 4,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "{\"year\": *, \"month\": number, \"day\": number, \"hour\": number, \"minute\": number, \"second\": number}"
      ]
    }
  },
  {
    "__docId__": 371,
    "kind": "function",
    "name": "hackyOffset",
    "memberof": "src/zones/IANAZone.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/zones/IANAZone.js~hackyOffset",
    "access": null,
    "export": false,
    "importPath": "luxon/src/zones/IANAZone.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 13,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "dtf",
        "types": [
          "*"
        ]
      },
      {
        "name": "date",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "undefined[]"
      ]
    }
  },
  {
    "__docId__": 372,
    "kind": "function",
    "name": "partsOffset",
    "memberof": "src/zones/IANAZone.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/zones/IANAZone.js~partsOffset",
    "access": null,
    "export": false,
    "importPath": "luxon/src/zones/IANAZone.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 20,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "dtf",
        "types": [
          "*"
        ]
      },
      {
        "name": "date",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 373,
    "kind": "function",
    "name": "isValid",
    "memberof": "src/zones/IANAZone.js",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/zones/IANAZone.js~isValid",
    "access": null,
    "export": false,
    "importPath": "luxon/src/zones/IANAZone.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 34,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "zone",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "boolean"
      ]
    }
  },
  {
    "__docId__": 374,
    "kind": "class",
    "name": "IANAZone",
    "memberof": "src/zones/IANAZone.js",
    "static": true,
    "longname": "src/zones/IANAZone.js~IANAZone",
    "access": "private",
    "export": true,
    "importPath": "luxon/src/zones/IANAZone.js",
    "importStyle": "{IANAZone}",
    "description": "",
    "lineNumber": 47,
    "interface": false,
    "extends": [
      "src/zone.js~Zone"
    ]
  },
  {
    "__docId__": 375,
    "kind": "method",
    "name": "isValidSpecier",
    "memberof": "src/zones/IANAZone.js~IANAZone",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/zones/IANAZone.js~IANAZone.isValidSpecier",
    "access": null,
    "description": null,
    "lineNumber": 48,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "s",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 376,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/zones/IANAZone.js~IANAZone",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/zones/IANAZone.js~IANAZone#constructor",
    "access": null,
    "description": null,
    "lineNumber": 52,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "name",
        "types": [
          "*"
        ]
      }
    ]
  },
  {
    "__docId__": 377,
    "kind": "member",
    "name": "zoneName",
    "memberof": "src/zones/IANAZone.js~IANAZone",
    "static": false,
    "longname": "src/zones/IANAZone.js~IANAZone#zoneName",
    "access": null,
    "description": null,
    "lineNumber": 54,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 378,
    "kind": "member",
    "name": "valid",
    "memberof": "src/zones/IANAZone.js~IANAZone",
    "static": false,
    "longname": "src/zones/IANAZone.js~IANAZone#valid",
    "access": null,
    "description": null,
    "lineNumber": 55,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 379,
    "kind": "get",
    "name": "type",
    "memberof": "src/zones/IANAZone.js~IANAZone",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/zones/IANAZone.js~IANAZone#type",
    "access": null,
    "description": null,
    "lineNumber": 58,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "string"
      ]
    }
  },
  {
    "__docId__": 380,
    "kind": "get",
    "name": "name",
    "memberof": "src/zones/IANAZone.js~IANAZone",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/zones/IANAZone.js~IANAZone#name",
    "access": null,
    "description": null,
    "lineNumber": 62,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 381,
    "kind": "get",
    "name": "universal",
    "memberof": "src/zones/IANAZone.js~IANAZone",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/zones/IANAZone.js~IANAZone#universal",
    "access": null,
    "description": null,
    "lineNumber": 66,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "boolean"
      ]
    }
  },
  {
    "__docId__": 382,
    "kind": "method",
    "name": "offsetName",
    "memberof": "src/zones/IANAZone.js~IANAZone",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/zones/IANAZone.js~IANAZone#offsetName",
    "access": null,
    "description": null,
    "lineNumber": 70,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "ts",
        "types": [
          "*"
        ]
      },
      {
        "name": "objectPattern1",
        "optional": true,
        "types": [
          "{\"format\": *, \"locale\": *}"
        ],
        "defaultRaw": {},
        "defaultValue": "{}"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 383,
    "kind": "method",
    "name": "offset",
    "memberof": "src/zones/IANAZone.js~IANAZone",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/zones/IANAZone.js~IANAZone#offset",
    "access": null,
    "description": null,
    "lineNumber": 74,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "ts",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 384,
    "kind": "method",
    "name": "equals",
    "memberof": "src/zones/IANAZone.js~IANAZone",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/zones/IANAZone.js~IANAZone#equals",
    "access": null,
    "description": null,
    "lineNumber": 95,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "otherZone",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 385,
    "kind": "get",
    "name": "isValid",
    "memberof": "src/zones/IANAZone.js~IANAZone",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/zones/IANAZone.js~IANAZone#isValid",
    "access": null,
    "description": null,
    "lineNumber": 99,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 386,
    "kind": "file",
    "name": "src/zones/fixedOffsetZone.js",
    "content": "import { Util } from '../impl/util';\nimport { Zone } from '../zone';\n\nlet singleton = null;\n\n/**\n * @private\n */\n\nexport class FixedOffsetZone extends Zone {\n  static get utcInstance() {\n    if (singleton === null) {\n      singleton = new FixedOffsetZone(0);\n    }\n    return singleton;\n  }\n\n  static instance(offset) {\n    return offset === 0 ? FixedOffsetZone.utcInstance : new FixedOffsetZone(offset);\n  }\n\n  static parseSpecifier(s) {\n    if (s) {\n      const r = s.match(/^utc(?:([+-]\\d{1,2})(?::(\\d{2}))?)?$/i);\n      if (r) {\n        return new FixedOffsetZone(Util.signedOffset(r[1], r[2]));\n      }\n    }\n    return null;\n  }\n\n  constructor(offset) {\n    super();\n    this.fixed = offset;\n  }\n\n  get type() {\n    return 'fixed';\n  }\n\n  get name() {\n    const hours = this.fixed / 60,\n      minutes = Math.abs(this.fixed % 60),\n      sign = hours > 0 ? '+' : '-',\n      base = sign + Math.abs(hours),\n      number = minutes > 0 ? `${base}:${Util.pad(minutes, 2)}` : base;\n\n    return this.fixed === 0 ? 'UTC' : `UTC${number}`;\n  }\n\n  offsetName() {\n    return this.name();\n  }\n\n  get universal() {\n    return true;\n  }\n\n  offset() {\n    return this.fixed;\n  }\n\n  equals(otherZone) {\n    return otherZone.type === 'fixed' && otherZone.fixed === this.fixed;\n  }\n\n  get isValid() {\n    return true;\n  }\n}\n",
    "static": true,
    "longname": "src/zones/fixedOffsetZone.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 387,
    "kind": "variable",
    "name": "singleton",
    "memberof": "src/zones/fixedOffsetZone.js",
    "static": true,
    "longname": "src/zones/fixedOffsetZone.js~singleton",
    "access": null,
    "export": false,
    "importPath": "luxon/src/zones/fixedOffsetZone.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 4,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 388,
    "kind": "class",
    "name": "FixedOffsetZone",
    "memberof": "src/zones/fixedOffsetZone.js",
    "static": true,
    "longname": "src/zones/fixedOffsetZone.js~FixedOffsetZone",
    "access": "private",
    "export": true,
    "importPath": "luxon/src/zones/fixedOffsetZone.js",
    "importStyle": "{FixedOffsetZone}",
    "description": "",
    "lineNumber": 10,
    "interface": false,
    "extends": [
      "src/zone.js~Zone"
    ]
  },
  {
    "__docId__": 389,
    "kind": "get",
    "name": "utcInstance",
    "memberof": "src/zones/fixedOffsetZone.js~FixedOffsetZone",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/zones/fixedOffsetZone.js~FixedOffsetZone.utcInstance",
    "access": null,
    "description": null,
    "lineNumber": 11,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 390,
    "kind": "method",
    "name": "instance",
    "memberof": "src/zones/fixedOffsetZone.js~FixedOffsetZone",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/zones/fixedOffsetZone.js~FixedOffsetZone.instance",
    "access": null,
    "description": null,
    "lineNumber": 18,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "offset",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 391,
    "kind": "method",
    "name": "parseSpecifier",
    "memberof": "src/zones/fixedOffsetZone.js~FixedOffsetZone",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/zones/fixedOffsetZone.js~FixedOffsetZone.parseSpecifier",
    "access": null,
    "description": null,
    "lineNumber": 22,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "s",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 392,
    "kind": "constructor",
    "name": "constructor",
    "memberof": "src/zones/fixedOffsetZone.js~FixedOffsetZone",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/zones/fixedOffsetZone.js~FixedOffsetZone#constructor",
    "access": null,
    "description": null,
    "lineNumber": 32,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "offset",
        "types": [
          "*"
        ]
      }
    ]
  },
  {
    "__docId__": 393,
    "kind": "member",
    "name": "fixed",
    "memberof": "src/zones/fixedOffsetZone.js~FixedOffsetZone",
    "static": false,
    "longname": "src/zones/fixedOffsetZone.js~FixedOffsetZone#fixed",
    "access": null,
    "description": null,
    "lineNumber": 34,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 394,
    "kind": "get",
    "name": "type",
    "memberof": "src/zones/fixedOffsetZone.js~FixedOffsetZone",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/zones/fixedOffsetZone.js~FixedOffsetZone#type",
    "access": null,
    "description": null,
    "lineNumber": 37,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "string"
      ]
    }
  },
  {
    "__docId__": 395,
    "kind": "get",
    "name": "name",
    "memberof": "src/zones/fixedOffsetZone.js~FixedOffsetZone",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/zones/fixedOffsetZone.js~FixedOffsetZone#name",
    "access": null,
    "description": null,
    "lineNumber": 41,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 396,
    "kind": "method",
    "name": "offsetName",
    "memberof": "src/zones/fixedOffsetZone.js~FixedOffsetZone",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/zones/fixedOffsetZone.js~FixedOffsetZone#offsetName",
    "access": null,
    "description": null,
    "lineNumber": 51,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 397,
    "kind": "get",
    "name": "universal",
    "memberof": "src/zones/fixedOffsetZone.js~FixedOffsetZone",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/zones/fixedOffsetZone.js~FixedOffsetZone#universal",
    "access": null,
    "description": null,
    "lineNumber": 55,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "boolean"
      ]
    }
  },
  {
    "__docId__": 398,
    "kind": "method",
    "name": "offset",
    "memberof": "src/zones/fixedOffsetZone.js~FixedOffsetZone",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/zones/fixedOffsetZone.js~FixedOffsetZone#offset",
    "access": null,
    "description": null,
    "lineNumber": 59,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 399,
    "kind": "method",
    "name": "equals",
    "memberof": "src/zones/fixedOffsetZone.js~FixedOffsetZone",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/zones/fixedOffsetZone.js~FixedOffsetZone#equals",
    "access": null,
    "description": null,
    "lineNumber": 63,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "otherZone",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 400,
    "kind": "get",
    "name": "isValid",
    "memberof": "src/zones/fixedOffsetZone.js~FixedOffsetZone",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/zones/fixedOffsetZone.js~FixedOffsetZone#isValid",
    "access": null,
    "description": null,
    "lineNumber": 67,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "boolean"
      ]
    }
  },
  {
    "__docId__": 401,
    "kind": "file",
    "name": "src/zones/localZone.js",
    "content": "import { Util } from '../impl/util';\nimport { Zone } from '../zone';\n\nlet singleton = null;\n\n/**\n * @private\n */\n\nexport class LocalZone extends Zone {\n  static get instance() {\n    if (singleton === null) {\n      singleton = new LocalZone();\n    }\n    return singleton;\n  }\n\n  get type() {\n    return 'local';\n  }\n\n  get name() {\n    if (Util.isUndefined(Intl) && Util.isUndefined(Intl.DateTimeFormat)) {\n      return new Intl.DateTimeFormat().resolvedOptions().timeZone;\n    } else return 'local';\n  }\n\n  get universal() {\n    return false;\n  }\n\n  offsetName(ts, { format = 'long', locale = 'en-US' } = {}) {\n    return Util.parseZoneInfo(ts, format, locale || 'en-US');\n  }\n\n  offset(ts) {\n    return -new Date(ts).getTimezoneOffset();\n  }\n\n  equals(otherZone) {\n    return otherZone.type === 'local';\n  }\n\n  get isValid() {\n    return true;\n  }\n}\n",
    "static": true,
    "longname": "src/zones/localZone.js",
    "access": null,
    "description": null,
    "lineNumber": 1
  },
  {
    "__docId__": 402,
    "kind": "variable",
    "name": "singleton",
    "memberof": "src/zones/localZone.js",
    "static": true,
    "longname": "src/zones/localZone.js~singleton",
    "access": null,
    "export": false,
    "importPath": "luxon/src/zones/localZone.js",
    "importStyle": null,
    "description": null,
    "lineNumber": 4,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 403,
    "kind": "class",
    "name": "LocalZone",
    "memberof": "src/zones/localZone.js",
    "static": true,
    "longname": "src/zones/localZone.js~LocalZone",
    "access": "private",
    "export": true,
    "importPath": "luxon/src/zones/localZone.js",
    "importStyle": "{LocalZone}",
    "description": "",
    "lineNumber": 10,
    "interface": false,
    "extends": [
      "src/zone.js~Zone"
    ]
  },
  {
    "__docId__": 404,
    "kind": "get",
    "name": "instance",
    "memberof": "src/zones/localZone.js~LocalZone",
    "generator": false,
    "async": false,
    "static": true,
    "longname": "src/zones/localZone.js~LocalZone.instance",
    "access": null,
    "description": null,
    "lineNumber": 11,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 405,
    "kind": "get",
    "name": "type",
    "memberof": "src/zones/localZone.js~LocalZone",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/zones/localZone.js~LocalZone#type",
    "access": null,
    "description": null,
    "lineNumber": 18,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "string"
      ]
    }
  },
  {
    "__docId__": 406,
    "kind": "get",
    "name": "name",
    "memberof": "src/zones/localZone.js~LocalZone",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/zones/localZone.js~LocalZone#name",
    "access": null,
    "description": null,
    "lineNumber": 22,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "string"
      ]
    }
  },
  {
    "__docId__": 407,
    "kind": "get",
    "name": "universal",
    "memberof": "src/zones/localZone.js~LocalZone",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/zones/localZone.js~LocalZone#universal",
    "access": null,
    "description": null,
    "lineNumber": 28,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "boolean"
      ]
    }
  },
  {
    "__docId__": 408,
    "kind": "method",
    "name": "offsetName",
    "memberof": "src/zones/localZone.js~LocalZone",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/zones/localZone.js~LocalZone#offsetName",
    "access": null,
    "description": null,
    "lineNumber": 32,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "ts",
        "types": [
          "*"
        ]
      },
      {
        "name": "objectPattern1",
        "optional": true,
        "types": [
          "{\"format\": *, \"locale\": *}"
        ],
        "defaultRaw": {},
        "defaultValue": "{}"
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 409,
    "kind": "method",
    "name": "offset",
    "memberof": "src/zones/localZone.js~LocalZone",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/zones/localZone.js~LocalZone#offset",
    "access": null,
    "description": null,
    "lineNumber": 36,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "ts",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 410,
    "kind": "method",
    "name": "equals",
    "memberof": "src/zones/localZone.js~LocalZone",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/zones/localZone.js~LocalZone#equals",
    "access": null,
    "description": null,
    "lineNumber": 40,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "params": [
      {
        "name": "otherZone",
        "types": [
          "*"
        ]
      }
    ],
    "return": {
      "types": [
        "*"
      ]
    }
  },
  {
    "__docId__": 411,
    "kind": "get",
    "name": "isValid",
    "memberof": "src/zones/localZone.js~LocalZone",
    "generator": false,
    "async": false,
    "static": false,
    "longname": "src/zones/localZone.js~LocalZone#isValid",
    "access": null,
    "description": null,
    "lineNumber": 44,
    "undocument": true,
    "unknown": [
      {
        "tagName": "@_undocument",
        "tagValue": ""
      }
    ],
    "type": {
      "types": [
        "boolean"
      ]
    }
  },
  {
    "__docId__": 413,
    "kind": "external",
    "name": "Infinity",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Infinity",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Infinity",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 414,
    "kind": "external",
    "name": "NaN",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~NaN",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 415,
    "kind": "external",
    "name": "undefined",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~undefined",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 416,
    "kind": "external",
    "name": "null",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~null",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 417,
    "kind": "external",
    "name": "Object",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Object",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 418,
    "kind": "external",
    "name": "object",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~object",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 419,
    "kind": "external",
    "name": "Function",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Function",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 420,
    "kind": "external",
    "name": "function",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~function",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 421,
    "kind": "external",
    "name": "Boolean",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Boolean",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 422,
    "kind": "external",
    "name": "boolean",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~boolean",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 423,
    "kind": "external",
    "name": "Symbol",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Symbol",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 424,
    "kind": "external",
    "name": "Error",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Error",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 425,
    "kind": "external",
    "name": "EvalError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~EvalError",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 426,
    "kind": "external",
    "name": "InternalError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/InternalError",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~InternalError",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 427,
    "kind": "external",
    "name": "RangeError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~RangeError",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 428,
    "kind": "external",
    "name": "ReferenceError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~ReferenceError",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 429,
    "kind": "external",
    "name": "SyntaxError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~SyntaxError",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 430,
    "kind": "external",
    "name": "TypeError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~TypeError",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 431,
    "kind": "external",
    "name": "URIError",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~URIError",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 432,
    "kind": "external",
    "name": "Number",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Number",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 433,
    "kind": "external",
    "name": "number",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~number",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 434,
    "kind": "external",
    "name": "Date",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Date",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 435,
    "kind": "external",
    "name": "String",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~String",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 436,
    "kind": "external",
    "name": "string",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~string",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 437,
    "kind": "external",
    "name": "RegExp",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~RegExp",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 438,
    "kind": "external",
    "name": "Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Array",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 439,
    "kind": "external",
    "name": "Int8Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int8Array",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Int8Array",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 440,
    "kind": "external",
    "name": "Uint8Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Uint8Array",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 441,
    "kind": "external",
    "name": "Uint8ClampedArray",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Uint8ClampedArray",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 442,
    "kind": "external",
    "name": "Int16Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int16Array",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Int16Array",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 443,
    "kind": "external",
    "name": "Uint16Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint16Array",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Uint16Array",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 444,
    "kind": "external",
    "name": "Int32Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int32Array",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Int32Array",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 445,
    "kind": "external",
    "name": "Uint32Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint32Array",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Uint32Array",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 446,
    "kind": "external",
    "name": "Float32Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Float32Array",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 447,
    "kind": "external",
    "name": "Float64Array",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float64Array",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Float64Array",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 448,
    "kind": "external",
    "name": "Map",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Map",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 449,
    "kind": "external",
    "name": "Set",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Set",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 450,
    "kind": "external",
    "name": "WeakMap",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~WeakMap",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 451,
    "kind": "external",
    "name": "WeakSet",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~WeakSet",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 452,
    "kind": "external",
    "name": "ArrayBuffer",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~ArrayBuffer",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 453,
    "kind": "external",
    "name": "DataView",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~DataView",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 454,
    "kind": "external",
    "name": "JSON",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~JSON",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 455,
    "kind": "external",
    "name": "Promise",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Promise",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 456,
    "kind": "external",
    "name": "Generator",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Generator",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 457,
    "kind": "external",
    "name": "GeneratorFunction",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/GeneratorFunction",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~GeneratorFunction",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 458,
    "kind": "external",
    "name": "Reflect",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Reflect",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 459,
    "kind": "external",
    "name": "Proxy",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy",
    "memberof": "BuiltinExternal/ECMAScriptExternal.js",
    "static": true,
    "longname": "BuiltinExternal/ECMAScriptExternal.js~Proxy",
    "access": null,
    "description": "",
    "lineNumber": 193,
    "builtinExternal": true
  },
  {
    "__docId__": 461,
    "kind": "external",
    "name": "CanvasRenderingContext2D",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D",
    "memberof": "BuiltinExternal/WebAPIExternal.js",
    "static": true,
    "longname": "BuiltinExternal/WebAPIExternal.js~CanvasRenderingContext2D",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 462,
    "kind": "external",
    "name": "DocumentFragment",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment",
    "memberof": "BuiltinExternal/WebAPIExternal.js",
    "static": true,
    "longname": "BuiltinExternal/WebAPIExternal.js~DocumentFragment",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 463,
    "kind": "external",
    "name": "Element",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/API/Element",
    "memberof": "BuiltinExternal/WebAPIExternal.js",
    "static": true,
    "longname": "BuiltinExternal/WebAPIExternal.js~Element",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 464,
    "kind": "external",
    "name": "Event",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/API/Event",
    "memberof": "BuiltinExternal/WebAPIExternal.js",
    "static": true,
    "longname": "BuiltinExternal/WebAPIExternal.js~Event",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 465,
    "kind": "external",
    "name": "Node",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/API/Node",
    "memberof": "BuiltinExternal/WebAPIExternal.js",
    "static": true,
    "longname": "BuiltinExternal/WebAPIExternal.js~Node",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 466,
    "kind": "external",
    "name": "NodeList",
    "externalLink": "https://developer.mozilla.org/en-US/docs/Web/API/NodeList",
    "memberof": "BuiltinExternal/WebAPIExternal.js",
    "static": true,
    "longname": "BuiltinExternal/WebAPIExternal.js~NodeList",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 467,
    "kind": "external",
    "name": "XMLHttpRequest",
    "externalLink": "https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest",
    "memberof": "BuiltinExternal/WebAPIExternal.js",
    "static": true,
    "longname": "BuiltinExternal/WebAPIExternal.js~XMLHttpRequest",
    "access": null,
    "description": "",
    "builtinExternal": true
  },
  {
    "__docId__": 468,
    "kind": "external",
    "name": "AudioContext",
    "externalLink": "https://developer.mozilla.org/en/docs/Web/API/AudioContext",
    "memberof": "BuiltinExternal/WebAPIExternal.js",
    "static": true,
    "longname": "BuiltinExternal/WebAPIExternal.js~AudioContext",
    "access": null,
    "description": "",
    "lineNumber": 34,
    "builtinExternal": true
  }
]