// ==UserScript==
// @name ITA Matrix Powertools
// @namespace https://github.com/adamhwang/ita-matrix-powertools
// @description Adds new features and builds fare purchase links for ITA Matrix
// @version 0.46.1
// @icon https://raw.githubusercontent.com/adamhwang/ita-matrix-powertools/master/icons/icon32.png
// @require https://greasemonkey.github.io/gm4-polyfill/gm4-polyfill.js
// @grant GM.getValue
// @grant GM_setValue
// @grant GM.setValue
// @grant GM_setValue
// @include http*://matrix.itasoftware.com/*
// @license GPL-2.0-only
// ==/UserScript==
/*
Written by paul21, Steppo & Adam Hwang (IAkH) of FlyerTalk.com
http://www.flyertalk.com/forum/members/paul21.html
Includes contriutions by https://github.com/adamhwang/ita-matrix-powertools/blob/master/AUTHORS
GNU General Public License v2.0
*/
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool:
// `npm run build`
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 56);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return getCurrentSegs; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return currentItin; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return readItinerary; });
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
// initialize local storage for current itin
/** @type {{ cur?: string; price?: number; basefares?: number; taxes?: number; surcharges?: number; dist?: number; numPax?: number; carriers?: string[]; farebases?: string[]; itin?: { orig: string; dest: string; dist?: number; dep: { day: number; month: number; year: number; time: string; offset?: string; }; arr: { day: number; month: number; year: number; time: string; offset?: string; }; seg?: { carrier: string; orig: string; dest: string; dist?: number; dep: { day: number; month: number; year: number; time: string; time24: string; timeDisplay: string; offset?: string; }; arr: { day: number; month: number; year: number; time: string; time24: string; timeDisplay: string; offset?: string; }; fnr: string; duration: number; aircraft: string; cabin: number; bookingclass: string; codeshare: number; layoverduration: number; airportchange: number; farebase: string; farecarrier: string; }[]}[]}} */
let currentItin = new Object();
const matrixCurrencies = [
{ p: /US\$/, c: "USD" },
{ p: /\€/, c: "EUR" },
{ p: /\£/, c: "GBP" },
{ p: /CA\$/, c: "CAD" },
{ p: /RS\./, c: "INR" }
];
function readItinerary() {
// the magical part! :-)
var itin = new Array(),
carrieruarray = new Array(),
farebases = new Array(),
dirtyFare = new Array();
var itinCur = "";
var html = document.getElementById("contentwrapper").innerHTML;
var re = /colspan\=\"5\"[^\(]+\(([\w]{3})[^\(]+\(([\w]{3})/g;
var legs = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* exRE */ "b"])(html, re);
// Got our outer legs now:
for (i = 0; i < legs.length; i += 2) {
var legobj = {};
// prepare all elements but fill later
legobj.arr = {};
legobj.dep = {};
legobj.orig = legs[i];
legobj.dest = legs[i + 1];
legobj.seg = new Array();
itin.push(legobj);
}
// extract basefares
var re = /Carrier\s([\w]{2})\s([\w]+).*?Covers\s([\w\(\)\s\-,]+)/g;
var bfs = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* exRE */ "b"])(html, re);
var bf = { c: "", f: "", l: new Array() };
for (i = 0; i < bfs.length; i += 3) {
bf.c = bfs[i];
bf.f = bfs[i + 1];
farebases.push(bf.f);
bf.l = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* exRE */ "b"])(bfs[i + 2], /(\w\w\w\-\w\w\w)/g);
for (j = 0; j < bf.l.length; j++) {
dirtyFare.push(bf.l[j] + "-" + bf.f + "-" + bf.c);
}
}
var segs = new Array();
var re = /35px\/(\w{2}).png[^\(]+\(([A-Z]{3})[^\(]+\(([A-Z]{3})[^\,]*\,\s*([a-zA-Z]{3})\s*([0-9]{1,2}).*?gwt-Label.*?([0-9]*)\<.*?Dep:[^0-9]+(.*?)\<.*?Arr:[^0-9]+(.*?)\<.*?([0-9]{1,2})h\s([0-9]{1,2})m.*?gwt-Label.*?\>(.*?)\<.*?gwt-Label\"\>(\w).*?\((\w)\).*?\<.*?tr(.*?)(table|airline_logos)/g;
segs = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* exRE */ "b"])(html, re);
// used massive regex to get all our segment-info in one extraction
var legnr = 0;
var segnr = 0;
for (i = 0; i < segs.length; i += 15) {
const dep12 = return12htime(segs[i + 6]);
const dep24 = (dep12.length == 4 ? "0" : "") + dep12;
const arr12 = return12htime(segs[i + 7]);
const arr24 = (arr12.length == 4 ? "0" : "") + arr12;
const addinformations = parseAddInfo(segs[i + 13]);
const day = parseInt(segs[i + 4]);
const month = monthnameToNumber(segs[i + 3]);
const year = getFlightYear(day, month);
let seg = {
carrier: segs[i],
orig: segs[i + 1],
dest: segs[i + 2],
dep: {
day,
month,
year,
timeDisplay: segs[i + 6],
time: dep12,
time24: dep24
},
arr: {
day: addinformations.arrDate ? addinformations.arrDate.day : day,
month: addinformations.arrDate ? addinformations.arrDate.month : month,
year: addinformations.arrDate ? addinformations.arrDate.year : year,
timeDisplay: segs[i + 7],
time: arr12,
time24: arr24
},
fnr: segs[i + 5],
duration: parseInt(segs[i + 8]) * 60 + parseInt(segs[i + 9]),
aircraft: segs[i + 10],
cabin: getcabincode(segs[i + 11]),
bookingclass: segs[i + 12],
codeshare: addinformations.codeshare,
layoverduration: addinformations.layoverduration,
airportchange: addinformations.airportchange,
farebase: "",
farecarrier: ""
};
// find farecode for leg
for (var j = 0; j < dirtyFare.length; j++) {
if (dirtyFare[j].indexOf(seg.orig + "-" + seg.dest + "-") != -1) {
//found farebase of this segment
var tmp = dirtyFare[j].split("-");
seg.farebase = tmp[2];
seg.farecarrier = tmp[3];
dirtyFare[j] = seg.farebase; // avoid reuse
j = dirtyFare.length;
}
}
if (itin[legnr] === undefined) itin[legnr] = new Object();
if (itin[legnr].seg === undefined) itin[legnr].seg = new Array();
itin[legnr].seg.push(seg);
// push carrier
if (!carrieruarray.some(cxr => cxr === seg.carrier)) {
carrieruarray.push(seg.carrier);
}
// push dates and times into leg-array
if (segnr == 0) {
if (itin[legnr].dep === undefined) itin[legnr].dep = new Object();
itin[legnr].dep.day = seg.dep.day;
itin[legnr].dep.month = seg.dep.month;
itin[legnr].dep.year = seg.dep.year;
itin[legnr].dep.time = seg.dep.time;
}
if (itin[legnr].arr === undefined) itin[legnr].arr = new Object();
itin[legnr].arr.day = seg.arr.day;
itin[legnr].arr.month = seg.arr.month;
itin[legnr].arr.year = seg.arr.year;
itin[legnr].arr.time = seg.arr.time;
segnr++;
// check for legchange
if (segs[i + 14] == "table") {
legnr++;
segnr = 0;
}
}
// We need to apply remaining fares (Not nonstop - but direct flights)
for (var i = 0; i < dirtyFare.length; i++) {
var curfare = dirtyFare[i].split("-");
if (curfare.length > 1) {
var l = 0;
//currently unused so walk through itin to find flights
for (var legnr = 0; legnr < itin.length; legnr++) {
for (var segnr = 0; segnr < itin[legnr].seg.length; segnr++) {
if (
itin[legnr].seg[segnr].orig == curfare[0] &&
itin[legnr].seg[segnr].dest == curfare[1] &&
itin[legnr].seg[segnr].farebase == ""
) {
// found seg for fare
itin[legnr].seg[segnr].farebase = curfare[2];
itin[legnr].seg[segnr].farecarrier = curfare[3];
dirtyFare[i] = curfare[2];
segnr = itin[legnr].seg.length;
l = 1;
} else if (
itin[legnr].seg[segnr].orig == curfare[0] &&
itin[legnr].seg[segnr].dest != curfare[1] &&
itin[legnr].seg[segnr].farebase == ""
) {
// found start but multiple segs -> find end
for (var j = segnr + 1; j < itin[legnr].seg.length; j++) {
if (
itin[legnr].seg[j].dest == curfare[1] &&
itin[legnr].seg[j].farebase == ""
) {
//found end attach fares
for (var k = segnr; k <= j; k++) {
itin[legnr].seg[k].farebase = curfare[2];
itin[legnr].seg[k].farecarrier = curfare[3];
dirtyFare[i] = curfare[2];
}
j = itin[legnr].seg.length;
segnr = itin[legnr].seg.length;
l = 1;
} else if (itin[legnr].seg[segnr + j].farebase != "") {
//farebase attached - skip
j = itin[legnr].seg.length;
}
}
}
}
if (l == 1) {
legnr = itin.length;
}
}
if (l == 0) {
Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* printNotification */ "g"])("Unused fare:" + dirtyFare[i]);
}
}
}
// Combine technical stops into a single segment
itin.forEach(itin => {
if (itin.seg) itin.seg = combineTechnicalStops(itin.seg);
});
// extract mileage paxcount and total price
var milepaxprice = new Array();
var re = /Mileage.*?([0-9,]+)\stotal\smiles.*?Total\scost\sfor\s([0-9])\spassenger.*?<div.*?>(.*?([1-9][0-9,.]+)[^\<]*)/g;
milepaxprice = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* exRE */ "b"])(html, re);
// detect currency
for (i = 0; i < matrixCurrencies.length; i++) {
if (matrixCurrencies[i].p.test(milepaxprice[2]) === true) {
itinCur = matrixCurrencies[i].c;
i = matrixCurrencies.length;
}
}
currentItin = {
itin: itin,
price: Number(milepaxprice[3].replace(/\,/, "")),
numPax: Number(milepaxprice[1]),
carriers: carrieruarray,
cur: itinCur,
farebases: farebases,
dist: Number(milepaxprice[0].replace(/\,/, ""))
};
console.log("parsed itinerary: ", currentItin);
}
function parseAddInfo(info) {
var ret = {
codeshare: 0,
layoverduration: 0,
airportchange: 0,
arrDate: null
};
var re = /contains\s*airport\s*changes/g;
if (re.test(info) === true) {
ret.airportchange = 1;
}
var re = /OPERATED\s*BY/g;
if (re.test(info) === true) {
ret.codeshare = 1;
}
var temp = new Array();
var re = /\,\s*([a-zA-Z]{3})\s*([0-9]{1,2})/g;
temp = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* exRE */ "b"])(info, re);
if (temp.length == 2) {
// Got datechange
const month = monthnameToNumber(temp[0]);
const day = parseInt(temp[1]);
ret.arrDate = {
month,
day,
year: getFlightYear(day, month)
};
}
var temp = new Array();
var re = /([0-9]{1,2})h\s([0-9]{1,2})m/g;
temp = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* exRE */ "b"])(info, re);
if (temp.length == 2) {
// Got layover
ret.layoverduration = parseInt(temp[0]) * 60 + parseInt(temp[1]);
}
return ret;
}
function getCurrentSegs() {
return currentItin.itin
.map(function(p) {
return p.seg;
})
.reduce(function(a, b) {
return a.concat(b);
}, []);
}
function combineTechnicalStops(allSegs) {
if (allSegs.length <= 1) return allSegs;
const segs = [];
for (let i = 0; i < allSegs.length; i++) {
const currSeg = allSegs[i];
const nextSeg = allSegs[i + 1];
if (
nextSeg &&
nextSeg.fnr === currSeg.fnr &&
nextSeg.orig === currSeg.dest
) {
segs.push({
...currSeg,
dest: nextSeg.dest,
arr: nextSeg.arr
});
i++;
} else {
segs.push(currSeg);
}
}
return segs;
}
/**************************************** General Functions *****************************************/
function getcabincode(cabin) {
switch (cabin) {
case "E":
cabin = 0;
break;
case "P":
cabin = 1;
break;
case "B":
cabin = 2;
break;
case "F":
cabin = 3;
break;
default:
cabin = 0;
}
return cabin;
}
function monthnameToNumber(month) {
var monthnames = [
"JAN",
"FEB",
"MAR",
"APR",
"MAY",
"JUN",
"JUL",
"AUG",
"SEP",
"OCT",
"NOV",
"DEC"
];
return monthnames.indexOf(month.toUpperCase()) + 1;
}
function getFlightYear(day, month) {
//Do date magic
var d = new Date();
var cmonth = d.getMonth();
var cday = d.getDate();
var cyear = d.getFullYear();
// make sure to handle the 0-11 issue of getMonth()
if (cmonth > month - 1 || (cmonth == month - 1 && day < cday)) {
cyear += 1; // The flight is next year
}
return cyear;
}
function return12htime(match) {
var regex = /([01]?\d)(:\d{2})(AM|PM|am|pm| AM| PM| am| pm)/g;
match = regex.exec(match);
var offset = 0;
match[3] = trimStr(match[3]);
if ((match[3] == "AM" || match[3] == "am") && match[1] == "12") {
offset = -12;
} else if ((match[3] == "PM" || match[3] == "pm") && match[1] != "12") {
offset = 12;
}
return +match[1] + offset + match[2];
}
function trimStr(x) {
return x.replace(/^\s+|\s+$/gm, "");
}
/***/ }),
/* 1 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return findtarget; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return findtargets; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return hasClass; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "k", function() { return toggleVis; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return clearNotification; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return printNotification; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return exRE; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return to2digits; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "j", function() { return to4digits; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return to4digitTime; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return monthnumberToName; });
function findtarget(tclass, nth) {
var elems = document.getElementsByTagName("*"),
i;
let j = 0;
for (i in elems) {
if ((" " + elems[i].className + " ").indexOf(" " + tclass + " ") > -1) {
j++;
if (j == nth) {
return elems[i];
break;
}
}
}
}
function findtargets(tclass) {
var elems = document.getElementsByTagName("*"),
i;
var ret = new Array();
for (i in elems) {
if ((" " + elems[i].className + " ").indexOf(" " + tclass + " ") > -1) {
ret.push(elems[i]);
}
}
return ret;
}
function hasClass(element, cls) {
return (" " + element.className + " ").indexOf(" " + cls + " ") > -1;
}
function toggleVis(target, blockType = "block") {
if (hasClass(target, "vis")) {
target.setAttribute("class", "invis");
target.style.display = "none";
} else {
target.setAttribute("class", "vis");
target.style.display = blockType;
}
}
function clearNotification() {
var target = document.getElementById("mtpNotification");
target.innerHTML = "";
}
function printNotification(text) {
// log the text to the browser's developer console:
console.log(text);
// display for user:
var target = document.getElementById("mtpNotification");
if (target === null) {
//alert("mtp Error: Notification container not Found");
console.log("mtp Error: Notification container not Found");
} else {
//possibility to print multiple notifications
var temp = document.createElement("div");
temp.appendChild(document.createTextNode(text));
target.appendChild(temp);
}
}
//Parses all of the outputs of regexp matches into an array
function exRE(str, re) {
var ret = new Array();
var m;
var i = 0;
while ((m = re.exec(str)) != null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
for (let k = 1; k < m.length; k++) {
ret[i++] = m[k];
}
}
return ret;
}
function to2digits(str) {
return ("00" + str).slice(-2);
}
function to4digits(str) {
return ("0000" + str).slice(-4);
}
function to4digitTime(time) {
return to4digits(time.replace(":", ""));
}
function monthnumberToName(month) {
var monthnames = [
"JAN",
"FEB",
"MAR",
"APR",
"MAY",
"JUN",
"JUL",
"AUG",
"SEP",
"OCT",
"NOV",
"DEC"
];
return monthnames[month - 1];
}
/***/ }),
/* 2 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return registeredSettings; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return registerSetting; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return saveUserSettings; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return loadUserSettings; });
/* harmony import */ var _appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
const defaultSettings = {
timeformat: "12h", // replaces times on resultpage - valid: 12h / 24h
language: "en", // replaces several items on resultpage - valid: en / de
linkFontsize: 100, // fontsize of links - valid: 50-200
showAllAirlines: 0, // shows all airline links regardless of search results
// booleans to toggle specific settings:
enableDeviders: 1, // Print deviders in links after group (airlines/otas/other stuff) - valid: 0 / 1
enableInlineMode: 1, // enables inline mode - valid: 0 / 1
enableEditormode: 0, // prevents the script from automatically parsing the itinerary - valid: 0 / 1
enableIMGautoload: 0, // enables images to auto load - valid: 0 / 1
enableFarerules: 1, // enables fare rule opening in new window - valid: 0 / 1
enablePricebreakdown: 1, // enables price breakdown - valid: 0 / 1
enablePlanefinder: 1, // enables Planefinder - click on flight numbers to open Planefinder for this flight - valid: 0 / 1
enableSeatguru: 1, // enables Seatguru - click on plane type to open Seatguru for this flight - valid: 0 / 1
enableWheretocredit: 1, // enables Wheretocredit - click on booking class to open wheretocredit for this flight - valid: 0 / 1
enableAffiliates: 1
};
const registeredSettings = {};
/**
* Registers a link
* @param {string} name
* @param {string} id
* @param {{ name: string, value: string }[]} values
* @param {string} defaultValue
*/
function registerSetting(name, id, values, defaultValue) {
registeredSettings[id] = { name, values };
defaultSettings[id] = defaultValue;
}
async function saveUserSettings(settings = defaultSettings) {
switch (_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].scriptEngine) {
case 0:
localStorage.setItem("mptUserSettings", JSON.stringify(settings));
break;
case 1:
await GM.setValue("mptUserSettings", JSON.stringify(settings));
break;
}
}
async function loadUserSettings() {
let gmSavedUserSettings;
switch (_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].scriptEngine) {
case 0:
gmSavedUserSettings = localStorage.getItem("mptUserSettings");
break;
case 1:
gmSavedUserSettings = await GM.getValue("mptUserSettings");
break;
}
console.log("mptSavedUserSettings: " + gmSavedUserSettings);
if (!gmSavedUserSettings || typeof gmSavedUserSettings !== "string") return;
/** @type typeof defaultSettings */
const savedUserSettings = JSON.parse(gmSavedUserSettings);
if (!savedUserSettings) return;
Object.assign(defaultSettings, savedUserSettings);
}
/* harmony default export */ __webpack_exports__["a"] = (defaultSettings);
/***/ }),
/* 3 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "register", function() { return register; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "allCarriers", function() { return allCarriers; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "anyCarriers", function() { return anyCarriers; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "validatePax", function() { return validatePax; });
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
/* harmony import */ var _settings_paxSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
const req = __webpack_require__(13);
req.keys().forEach(req);
/**
* Registers a link
* @param {() => { url: string, title: string, img?: string, desc?: string, extra?: string, target?: string }} factory
*/
function register(type, factory) {
Object(_print_links__WEBPACK_IMPORTED_MODULE_2__[/* registerLink */ "b"])(type, factory);
}
function allCarriers() {
const args = Array.from(arguments);
return (
_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].showAllAirlines ||
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].carriers.every(cxr => args.some(arg => cxr === arg))
);
}
function anyCarriers() {
const args = Array.from(arguments);
return (
_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].showAllAirlines ||
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].carriers.some(cxr => args.some(arg => cxr === arg))
);
}
function validatePax(config) {
//{maxPaxcount:7, countInf:false, childAsAdult:12, sepInfSeat:false, childMinAge:2}
var tmpChildren = new Array();
// push cur children
for (var i = 0; i < _settings_paxSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].cAges.length; i++) {
tmpChildren.push(_settings_paxSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].cAges[i]);
}
var ret = {
adults: _settings_paxSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].adults,
children: new Array(),
infLap: _settings_paxSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].infantsLap,
infSeat: 0
};
if (config.sepInfSeat === true) {
ret.infSeat = _settings_paxSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].infantsSeat;
} else {
for (var i = 0; i < _settings_paxSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].infantsSeat; i++) {
tmpChildren.push(config.childMinAge);
}
}
// process children
for (var i = 0; i < tmpChildren.length; i++) {
if (tmpChildren[i] < config.childAsAdult) {
ret.children.push(tmpChildren[i]);
} else {
ret.adults++;
}
}
// check Pax-Count
if (
config.maxPaxcount <=
ret.adults +
(config.countInf && ret.infLap) +
ret.infSeat +
ret.children.length
) {
console.log("Too many passengers");
return;
}
if (0 === ret.adults + ret.infSeat + ret.children.length) {
console.log("No passengers");
return;
}
return ret;
}
/***/ }),
/* 4 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return reset; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return getCabin; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return getForcedCabin; });
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
// General settings
const appSettings = {
scriptEngine:
typeof GM === "undefined" || typeof GM.info === "undefined" ? 0 : 1, // 0 - console mode, 1 - tamper or grease mode
itaLanguage: "en",
version: "0.46.1",
retrycount: 1,
laststatus: "",
scriptrunning: 1,
cabin: "Auto"
};
function reset() {
// reset Notification due to pagechange
Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* clearNotification */ "a"])();
// reset Editor Mode
document.getElementById("mptStartparse").setAttribute("class", "invis");
document.getElementById("mptStartparse").style.display = "none";
appSettings.itaLanguage = "en";
appSettings.retrycount = 1;
}
function getCabin(autoCabin) {
return appSettings.cabin === "Auto" ? autoCabin : getForcedCabin();
}
function getForcedCabin() {
switch (appSettings.cabin) {
case "Y":
return 0;
case "Y+":
return 1;
case "C":
return 2;
case "F":
return 3;
default:
return 0;
}
}
/* harmony default export */ __webpack_exports__["a"] = (appSettings);
/***/ }),
/* 5 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return findTargetSetVersion; });
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
// ITA Matrix CSS class definitions:
const itaSettings = [
{
startpage: {
maindiv: "KIR33AB-w-d" //Container of main content. Unfortunately id "contentwrapper" is used twice
},
resultpage: {
itin: "KIR33AB-v-d", //Container with headline: "Itinerary"
itinRow: "KIR33AB-j-i", // TR in itin with Orig, Dest and date
milagecontainer: "KIR33AB-v-e", // TD-Container on the right
rulescontainer: "KIR33AB-k-d", // First container before rulelinks (the one with Fare X:)
htbContainer: "KIR33AB-k-k", // full "how to buy"-container inner div (td=>div=>div)
htbLeft: "KIR33AB-k-g", // Left column in the "how to buy"-container
htbRight: "KIR33AB-k-f", // Class for normal right column
htbGreyBorder: "KIR33AB-k-l", // Class for right cell with light grey border (used for subtotal of passenger)
//inline
mcDiv: "KIR33AB-y-d", // Right menu sections class (3 divs surrounding entire Mileage, Emissions, and Airport Info)
mcHeader: "KIR33AB-y-b", // Right menu header class ("Mileage", etc.)
mcLinkList: "KIR33AB-y-c" // Right menu ul list class (immediately following header)
}
},
{
startpage: {
maindiv: "IR6M2QD-w-d" //Container of main content. Unfortunately id "contentwrapper" is used twice
},
resultpage: {
itin: "IR6M2QD-v-d", //Container with headline: "Itinerary"
itinRow: "IR6M2QD-j-i", // TR in itin with Orig, Dest and date
milagecontainer: "IR6M2QD-v-e", // TD-Container on the right
rulescontainer: "IR6M2QD-k-d", // First container before rulelinks (the one with Fare X:)
htbContainer: "IR6M2QD-k-k", // full "how to buy"-container inner div (td=>div=>div)
htbLeft: "IR6M2QD-k-g", // Left column in the "how to buy"-container
htbRight: "IR6M2QD-k-f", // Class for normal right column
htbGreyBorder: "IR6M2QD-k-l", // Class for right cell with light grey border (used for subtotal of passenger)
//inline
mcDiv: "IR6M2QD-y-d", // Right menu sections class (3 divs surrounding entire Mileage, Emissions, and Airport Info)
mcHeader: "IR6M2QD-y-b", // Right menu header class ("Mileage", etc.)
mcLinkList: "IR6M2QD-y-c" // Right menu ul list class (immediately following header)
}
}
];
const classSettings = itaSettings[0];
function findTargetSetVersion(classSelector, nth) {
for (let setting of itaSettings) {
const className = classSelector(setting);
const target = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* findtarget */ "c"])(className, nth);
if (target) {
console.log(`ITA Version detected: ${className}`);
Object.assign(classSettings, setting);
return target;
}
}
}
/* harmony default export */ __webpack_exports__["a"] = (classSettings);
/***/ }),
/* 6 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
// initialize local storage for passenger details
/* harmony default export */ __webpack_exports__["a"] = ({
adults: 1,
infantsLap: 0,
infantsSeat: 0,
cAges: new Array()
});
/***/ }),
/* 7 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return getAmadeusUrl; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return getAmadeusPax; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return getAmadeusTriptype; });
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(0);
// **** START AMADEUS ****
function getAmadeusUrl(config) {
config = config || {
sepcabin: 1,
detailed: 0,
inctimes: 1,
enablesegskip: 1,
allowpremium: 1
};
config.sepcabin = config.sepcabin === undefined ? 1 : config.sepcabin;
config.detailed = config.detailed === undefined ? 0 : config.detailed;
config.inctimes = config.inctimes === undefined ? 1 : config.inctimes;
config.enablesegskip =
config.enablesegskip === undefined ? 1 : config.enablesegskip;
config.allowpremium =
config.allowpremium === undefined ? 1 : config.allowpremium;
var curleg = 0;
var lastcabin = 0;
var curseg = 0;
var lastdest = "";
var maxcabin = 0;
var url = "";
var lastarrtime = "";
var cabins = ["E", "N", "B", "F"];
cabins[1] = config.allowpremium != 1 ? cabins[0] : cabins[1];
//Build multi-city search based on legs
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin.length; i++) {
curseg = 3; // need to toggle segskip on first leg
lastcabin = _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[0].cabin;
// walks each leg
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg.length; j++) {
//walks each segment of leg
var k = 0;
// lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg.length - 1) {
if (
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !=
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440 ||
config.enablesegskip == 0
)
break;
k++;
}
curseg++;
if (
curseg > 3 ||
(_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].cabin != lastcabin && config.sepcabin == 1)
) {
if (lastdest != "") {
//close prior flight
url += "&E_LOCATION_" + curleg + "=" + lastdest;
url += "&E_DATE_" + curleg + "=" + lastarrtime;
}
curseg = 1;
curleg++;
url += "&B_LOCATION_" + curleg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].orig;
url += "&B_ANY_TIME_" + curleg + "=FALSE";
url +=
"&B_DATE_" +
curleg +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2) +
(config.inctimes == 1
? (
"0" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].dep.time.replace(":", "")
).slice(-4)
: "0000");
url +=
"&CABIN_" + curleg + "=" + cabins[_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].cabin];
url += "&ALLOW_ALTERNATE_AVAILABILITY_" + curleg + "=FALSE";
url += "&DATE_RANGE_VALUE_" + curleg + "=0";
}
lastarrtime =
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j + k].arr.year +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j + k].arr.month).slice(-2) +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j + k].arr.day).slice(-2) +
(config.inctimes == 1
? (
"0" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j + k].arr.time.replace(":", "")
).slice(-4)
: "0000");
if (config.detailed === 1) {
url +=
"&B_LOCATION_" +
curleg +
"_" +
curseg +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].orig;
url +=
"&B_LOCATION_CITY_" +
curleg +
"_" +
curseg +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].orig;
url +=
"&B_DATE_" +
curleg +
"_" +
curseg +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2) +
(config.inctimes == 1
? (
"0" + _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].dep.time.replace(":", "")
).slice(-4)
: "0000");
url +=
"&E_LOCATION_" +
curleg +
"_" +
curseg +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j + k].dest;
url +=
"&E_LOCATION_CITY_" +
curleg +
"_" +
curseg +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j + k].dest;
url += "&E_DATE_" + curleg + "_" + curseg + "=" + lastarrtime;
}
url +=
"&AIRLINE_" +
curleg +
"_" +
curseg +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].carrier;
url +=
"&FLIGHT_NUMBER_" +
curleg +
"_" +
curseg +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].fnr;
url +=
"&RBD_" +
curleg +
"_" +
curseg +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].bookingclass;
url +=
"&FARE_CLASS_" +
curleg +
"_" +
curseg +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].farebase;
lastdest = _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j + k].dest;
lastcabin = _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].cabin;
if (_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].cabin > maxcabin)
maxcabin = _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[i].seg[j].cabin;
j += k;
}
}
url += "&E_LOCATION_" + curleg + "=" + lastdest; // push final dest
url += "&E_DATE_" + curleg + "=" + lastarrtime; // push arr time
url +=
"&CABIN=" +
cabins[_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin === "Auto" ? maxcabin : Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getForcedCabin */ "c"])()] +
""; // push cabin
return url;
}
function getAmadeusPax(pax, config) {
config = config || {
allowinf: 1,
youthage: 0
};
config.allowinf = config.allowinf === undefined ? 1 : config.allowinf;
config.youthage = config.sepyouth === undefined ? 0 : config.sepyouth;
var tmpPax = { c: 0, y: 0 };
var curPax = 1;
var url = "&IS_PRIMARY_TRAVELLER_1=True";
for (let i = 0; i < pax.children.length; i++) {
if (pax.children[i] >= config.youthage && config.youthage > 0) {
tmpPax.y++;
} else if (pax.children[i] >= 12) {
pax.adults++;
} else {
tmpPax.c++;
}
}
for (let i = 0; i < pax.adults; i++) {
url += "&TRAVELLER_TYPE_" + curPax + "=ADT";
url +=
"&HAS_INFANT_" +
curPax +
"=" +
(i < pax.infLap && config.allowinf == 1 ? "True" : "False");
url += "&IS_YOUTH_" + curPax + "=False";
curPax++;
}
for (let i = 0; i < tmpPax.y; i++) {
url += "&TRAVELLER_TYPE_" + curPax + "=ADT";
url += "&HAS_INFANT_" + curPax + "=False";
url += "&IS_YOUTH_" + curPax + "=True";
curPax++;
}
for (let i = 0; i < tmpPax.c; i++) {
url += "&TRAVELLER_TYPE_" + curPax + "=CHD";
url += "&HAS_INFANT_" + curPax + "=False";
url += "&IS_YOUTH_" + curPax + "=False";
curPax++;
}
return {
url: url,
adults: pax.adults,
youth: tmpPax.y,
children: tmpPax.c,
infants: pax.infLap
};
}
function getAmadeusTriptype() {
return _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin.length > 1
? _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin.length == 2 &&
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[0].orig == _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[1].dest &&
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[0].dest == _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[1].orig
? "R"
: "M"
: "O";
}
// **** END AMADEUS ****
/***/ }),
/* 8 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
// Supported translations for the PowerTools interface:
const de = {
use: "Öffne ",
resultpage: {
"Dep:": "Abflug:",
"Arr:": "Ankunft:",
"Layover in": "Umst. in",
" to ": " nach ",
"Mon,": "Mo.,",
"Tue,": "Di.,",
"Wed,": "Mi.,",
"Thu,": "Do.,",
"Fri,": "Fr.,",
"Sat,": "Sa.,",
"Sun,": "So.,",
" Jan ": " Januar ",
" Feb ": " Februar ",
" Mar ": " Mä,rz ",
" Apr ": " April ",
" May ": " Mai ",
" Jun ": " Juni ",
" Jul ": " Juli ",
" Aug ": " August ",
" Sep ": " September ",
" Oct ": " Oktober ",
" Nov ": " November ",
" Dec ": " Dezember ",
"OPERATED BY ": "Durchgefü,hrt von "
}
};
/* harmony default export */ __webpack_exports__["a"] = ({
de
});
/***/ }),
/* 9 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return registerLink; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return printLinksContainer; });
/* unused harmony export printImage */
/* unused harmony export getSidebarContainer */
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
/* harmony import */ var _settings_itaSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
/* harmony import */ var _settings_translations__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1);
/** @type {{ [key: string]: (() => { url: string, title: string, img?: string, desc?: string, extra?: string, target?: string })[]}} */
const links = {};
__webpack_require__(3);
var skimlinks = document.createElement("script");
skimlinks.setAttribute(
"src",
"https://s.skimresources.com/js/122783X1611548.skimlinks.js"
);
/**
* Registers a link
* @param {() => { url: string, title: string, img?: string, desc?: string, extra?: string, target?: string }} factory
*/
function registerLink(type, factory) {
if (!links[type]) links[type] = [];
links[type].push(factory);
}
function printLinksContainer() {
// do nothing if editor mode is active
if (Object(_utils__WEBPACK_IMPORTED_MODULE_3__[/* findtargets */ "d"])("editoritem").length > 0) {
return false;
}
// empty outputcontainer
const div = getSidebarContainer();
div.innerHTML = "";
// S&D powertool items
const elems = Object(_utils__WEBPACK_IMPORTED_MODULE_3__[/* findtargets */ "d"])("powertoolsitem");
for (let i = elems.length - 1; i >= 1; i--) {
elems[i].parentElement.removeChild(elems[i]);
}
const groups = Object.keys(links);
groups.forEach((group, i) => {
const groupLinks = links[group]
.map(link => link())
.sort((a, b) => {
return a.title.localeCompare(b.title);
});
groupLinks.forEach(link => {
if (!link) return;
if (link.img) {
printImage(link);
} else if (_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].enableInlineMode == 1) {
printUrlInline(link);
} else {
printUrl(link);
}
});
_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].enableDeviders == 1 &&
links[group].length &&
i != groups.length - 1 &&
printSeperator();
});
/*** attach JS events after building link container ***/
bindLinkClicks();
}
function bindLinkClicks() {
if (_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].enableAffiliates == 1) {
skimlinks.parentNode && skimlinks.parentNode.removeChild(skimlinks);
document.body.appendChild(skimlinks);
}
}
// Inline Stuff
function printUrlInline(link) {
var item = `<li class="powertoolsitem">${printLink(link)}</li>`;
const container = getSidebarContainer();
container.insertAdjacentHTML("beforeend", item);
}
function printImage(link) {
const div = getSidebarContainer();
const imgLink =
(link.url
? '<a href="' + link.url + '" target="_blank" class="powertoolsitem">'
: "") +
'<img src="' +
link.img +
'" style="margin-top:10px;"' +
(!link.url ? ' class="powertoolsitem"' : "") +
"/>" +
(link.url ? "</a>" : "");
if (_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].enableIMGautoload == 1) {
div.insertAdjacentHTML("beforeend", imgLink);
} else {
var id = Math.random().toString();
div.insertAdjacentHTML(
"beforeend",
`<div id="${id}" class="powertoolsitem" style="width:184px;height:100px;background-color:white;border:1px solid #808080;cursor:pointer;text-align:center;margin-top:10px;padding-top:84px;"><span>${link.title}</span></div>`
);
document.getElementById(id).addEventListener("click", function() {
this.outerHTML = imgLink;
});
}
}
function getSidebarContainer() {
if (_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].enableInlineMode == 1) {
return (
document.getElementById("powertoolslinkinlinecontainer") ||
createUrlContainerInline()
);
} else {
return (
document.getElementById("powertoolslinkcontainer") || createUrlContainer()
);
}
}
function createUrlContainerInline() {
var newdiv = document.createElement("div");
newdiv.setAttribute("class", _settings_itaSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].resultpage.mcDiv);
newdiv.style.backgroundColor = "#f2f2f2";
newdiv.innerHTML =
'<div class="' +
_settings_itaSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].resultpage.mcHeader +
'">Powertools</div><ul id="powertoolslinkinlinecontainer" class="' +
_settings_itaSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].resultpage.mcLinkList +
'"></ul>';
Object(_utils__WEBPACK_IMPORTED_MODULE_3__[/* findtarget */ "c"])(_settings_itaSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].resultpage.mcDiv, 1).parentElement.appendChild(
newdiv
);
return document.getElementById("powertoolslinkinlinecontainer");
}
// Printing Stuff
function printUrl(link) {
var item = `<div class="powertoolsitem" style="margin:5px 0px 10px 0px">${printLink(
link
)}</div>`;
const container = getSidebarContainer();
container.insertAdjacentHTML("beforeend", item);
}
function printLink(link) {
let html = `<div><label style="font-size:${Number(
_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].linkFontsize
)}%;font-weight:600">
<a href="${link.url}" target=${link.target || "_blank"}>${(_settings_translations__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"][
_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].language
] &&
_settings_translations__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"][_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].language]["use"]) ||
"Use "} ${link.title}</a>
</label>`;
if (link.extra) html += link.extra;
if (link.desc)
html += `<br/><label style="font-size:${Number(
_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].linkFontsize
) - 15}%">${link.desc}</label>`;
html += "</div";
return html;
}
function createUrlContainer() {
var newdiv = document.createElement("div");
newdiv.setAttribute("id", "powertoolslinkcontainer");
newdiv.setAttribute("style", "margin:15px 0px 0px 10px");
return Object(_utils__WEBPACK_IMPORTED_MODULE_3__[/* findtarget */ "c"])(_settings_itaSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].resultpage.milagecontainer, 1).appendChild(
newdiv
);
}
function printSeperator() {
var container = getSidebarContainer();
if (container) {
container.insertAdjacentHTML(
"beforeend",
_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].enableInlineMode
? '<hr class="powertoolsitem"/>'
: "<hr/>"
);
}
}
/***/ }),
/* 10 */
/***/ (function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(module) {var require;//! moment.js
;(function (global, factory) {
true ? module.exports = factory() :
undefined
}(this, (function () { 'use strict';
var hookCallback;
function hooks () {
return hookCallback.apply(null, arguments);
}
// This is done to register the method called with moment()
// without creating circular dependencies.
function setHookCallback (callback) {
hookCallback = callback;
}
function isArray(input) {
return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';
}
function isObject(input) {
// IE8 will treat undefined and null as object if it wasn't for
// input != null
return input != null && Object.prototype.toString.call(input) === '[object Object]';
}
function isObjectEmpty(obj) {
if (Object.getOwnPropertyNames) {
return (Object.getOwnPropertyNames(obj).length === 0);
} else {
var k;
for (k in obj) {
if (obj.hasOwnProperty(k)) {
return false;
}
}
return true;
}
}
function isUndefined(input) {
return input === void 0;
}
function isNumber(input) {
return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';
}
function isDate(input) {
return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';
}
function map(arr, fn) {
var res = [], i;
for (i = 0; i < arr.length; ++i) {
res.push(fn(arr[i], i));
}
return res;
}
function hasOwnProp(a, b) {
return Object.prototype.hasOwnProperty.call(a, b);
}
function extend(a, b) {
for (var i in b) {
if (hasOwnProp(b, i)) {
a[i] = b[i];
}
}
if (hasOwnProp(b, 'toString')) {
a.toString = b.toString;
}
if (hasOwnProp(b, 'valueOf')) {
a.valueOf = b.valueOf;
}
return a;
}
function createUTC (input, format, locale, strict) {
return createLocalOrUTC(input, format, locale, strict, true).utc();
}
function defaultParsingFlags() {
// We need to deep clone this object.
return {
empty : false,
unusedTokens : [],
unusedInput : [],
overflow : -2,
charsLeftOver : 0,
nullInput : false,
invalidMonth : null,
invalidFormat : false,
userInvalidated : false,
iso : false,
parsedDateParts : [],
meridiem : null,
rfc2822 : false,
weekdayMismatch : false
};
}
function getParsingFlags(m) {
if (m._pf == null) {
m._pf = defaultParsingFlags();
}
return m._pf;
}
var some;
if (Array.prototype.some) {
some = Array.prototype.some;
} else {
some = function (fun) {
var t = Object(this);
var len = t.length >>> 0;
for (var i = 0; i < len; i++) {
if (i in t && fun.call(this, t[i], i, t)) {
return true;
}
}
return false;
};
}
function isValid(m) {
if (m._isValid == null) {
var flags = getParsingFlags(m);
var parsedParts = some.call(flags.parsedDateParts, function (i) {
return i != null;
});
var isNowValid = !isNaN(m._d.getTime()) &&
flags.overflow < 0 &&
!flags.empty &&
!flags.invalidMonth &&
!flags.invalidWeekday &&
!flags.weekdayMismatch &&
!flags.nullInput &&
!flags.invalidFormat &&
!flags.userInvalidated &&
(!flags.meridiem || (flags.meridiem && parsedParts));
if (m._strict) {
isNowValid = isNowValid &&
flags.charsLeftOver === 0 &&
flags.unusedTokens.length === 0 &&
flags.bigHour === undefined;
}
if (Object.isFrozen == null || !Object.isFrozen(m)) {
m._isValid = isNowValid;
}
else {
return isNowValid;
}
}
return m._isValid;
}
function createInvalid (flags) {
var m = createUTC(NaN);
if (flags != null) {
extend(getParsingFlags(m), flags);
}
else {
getParsingFlags(m).userInvalidated = true;
}
return m;
}
// Plugins that add properties should also add the key here (null value),
// so we can properly clone ourselves.
var momentProperties = hooks.momentProperties = [];
function copyConfig(to, from) {
var i, prop, val;
if (!isUndefined(from._isAMomentObject)) {
to._isAMomentObject = from._isAMomentObject;
}
if (!isUndefined(from._i)) {
to._i = from._i;
}
if (!isUndefined(from._f)) {
to._f = from._f;
}
if (!isUndefined(from._l)) {
to._l = from._l;
}
if (!isUndefined(from._strict)) {
to._strict = from._strict;
}
if (!isUndefined(from._tzm)) {
to._tzm = from._tzm;
}
if (!isUndefined(from._isUTC)) {
to._isUTC = from._isUTC;
}
if (!isUndefined(from._offset)) {
to._offset = from._offset;
}
if (!isUndefined(from._pf)) {
to._pf = getParsingFlags(from);
}
if (!isUndefined(from._locale)) {
to._locale = from._locale;
}
if (momentProperties.length > 0) {
for (i = 0; i < momentProperties.length; i++) {
prop = momentProperties[i];
val = from[prop];
if (!isUndefined(val)) {
to[prop] = val;
}
}
}
return to;
}
var updateInProgress = false;
// Moment prototype object
function Moment(config) {
copyConfig(this, config);
this._d = new Date(config._d != null ? config._d.getTime() : NaN);
if (!this.isValid()) {
this._d = new Date(NaN);
}
// Prevent infinite loop in case updateOffset creates new moment
// objects.
if (updateInProgress === false) {
updateInProgress = true;
hooks.updateOffset(this);
updateInProgress = false;
}
}
function isMoment (obj) {
return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);
}
function absFloor (number) {
if (number < 0) {
// -0 -> 0
return Math.ceil(number) || 0;
} else {
return Math.floor(number);
}
}
function toInt(argumentForCoercion) {
var coercedNumber = +argumentForCoercion,
value = 0;
if (coercedNumber !== 0 && isFinite(coercedNumber)) {
value = absFloor(coercedNumber);
}
return value;
}
// compare two arrays, return the number of differences
function compareArrays(array1, array2, dontConvert) {
var len = Math.min(array1.length, array2.length),
lengthDiff = Math.abs(array1.length - array2.length),
diffs = 0,
i;
for (i = 0; i < len; i++) {
if ((dontConvert && array1[i] !== array2[i]) ||
(!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {
diffs++;
}
}
return diffs + lengthDiff;
}
function warn(msg) {
if (hooks.suppressDeprecationWarnings === false &&
(typeof console !== 'undefined') && console.warn) {
console.warn('Deprecation warning: ' + msg);
}
}
function deprecate(msg, fn) {
var firstTime = true;
return extend(function () {
if (hooks.deprecationHandler != null) {
hooks.deprecationHandler(null, msg);
}
if (firstTime) {
var args = [];
var arg;
for (var i = 0; i < arguments.length; i++) {
arg = '';
if (typeof arguments[i] === 'object') {
arg += '\n[' + i + '] ';
for (var key in arguments[0]) {
arg += key + ': ' + arguments[0][key] + ', ';
}
arg = arg.slice(0, -2); // Remove trailing comma and space
} else {
arg = arguments[i];
}
args.push(arg);
}
warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack);
firstTime = false;
}
return fn.apply(this, arguments);
}, fn);
}
var deprecations = {};
function deprecateSimple(name, msg) {
if (hooks.deprecationHandler != null) {
hooks.deprecationHandler(name, msg);
}
if (!deprecations[name]) {
warn(msg);
deprecations[name] = true;
}
}
hooks.suppressDeprecationWarnings = false;
hooks.deprecationHandler = null;
function isFunction(input) {
return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';
}
function set (config) {
var prop, i;
for (i in config) {
prop = config[i];
if (isFunction(prop)) {
this[i] = prop;
} else {
this['_' + i] = prop;
}
}
this._config = config;
// Lenient ordinal parsing accepts just a number in addition to
// number + (possibly) stuff coming from _dayOfMonthOrdinalParse.
// TODO: Remove "ordinalParse" fallback in next major release.
this._dayOfMonthOrdinalParseLenient = new RegExp(
(this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +
'|' + (/\d{1,2}/).source);
}
function mergeConfigs(parentConfig, childConfig) {
var res = extend({}, parentConfig), prop;
for (prop in childConfig) {
if (hasOwnProp(childConfig, prop)) {
if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {
res[prop] = {};
extend(res[prop], parentConfig[prop]);
extend(res[prop], childConfig[prop]);
} else if (childConfig[prop] != null) {
res[prop] = childConfig[prop];
} else {
delete res[prop];
}
}
}
for (prop in parentConfig) {
if (hasOwnProp(parentConfig, prop) &&
!hasOwnProp(childConfig, prop) &&
isObject(parentConfig[prop])) {
// make sure changes to properties don't modify parent config
res[prop] = extend({}, res[prop]);
}
}
return res;
}
function Locale(config) {
if (config != null) {
this.set(config);
}
}
var keys;
if (Object.keys) {
keys = Object.keys;
} else {
keys = function (obj) {
var i, res = [];
for (i in obj) {
if (hasOwnProp(obj, i)) {
res.push(i);
}
}
return res;
};
}
var defaultCalendar = {
sameDay : '[Today at] LT',
nextDay : '[Tomorrow at] LT',
nextWeek : 'dddd [at] LT',
lastDay : '[Yesterday at] LT',
lastWeek : '[Last] dddd [at] LT',
sameElse : 'L'
};
function calendar (key, mom, now) {
var output = this._calendar[key] || this._calendar['sameElse'];
return isFunction(output) ? output.call(mom, now) : output;
}
var defaultLongDateFormat = {
LTS : 'h:mm:ss A',
LT : 'h:mm A',
L : 'MM/DD/YYYY',
LL : 'MMMM D, YYYY',
LLL : 'MMMM D, YYYY h:mm A',
LLLL : 'dddd, MMMM D, YYYY h:mm A'
};
function longDateFormat (key) {
var format = this._longDateFormat[key],
formatUpper = this._longDateFormat[key.toUpperCase()];
if (format || !formatUpper) {
return format;
}
this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {
return val.slice(1);
});
return this._longDateFormat[key];
}
var defaultInvalidDate = 'Invalid date';
function invalidDate () {
return this._invalidDate;
}
var defaultOrdinal = '%d';
var defaultDayOfMonthOrdinalParse = /\d{1,2}/;
function ordinal (number) {
return this._ordinal.replace('%d', number);
}
var defaultRelativeTime = {
future : 'in %s',
past : '%s ago',
s : 'a few seconds',
ss : '%d seconds',
m : 'a minute',
mm : '%d minutes',
h : 'an hour',
hh : '%d hours',
d : 'a day',
dd : '%d days',
M : 'a month',
MM : '%d months',
y : 'a year',
yy : '%d years'
};
function relativeTime (number, withoutSuffix, string, isFuture) {
var output = this._relativeTime[string];
return (isFunction(output)) ?
output(number, withoutSuffix, string, isFuture) :
output.replace(/%d/i, number);
}
function pastFuture (diff, output) {
var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
return isFunction(format) ? format(output) : format.replace(/%s/i, output);
}
var aliases = {};
function addUnitAlias (unit, shorthand) {
var lowerCase = unit.toLowerCase();
aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;
}
function normalizeUnits(units) {
return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;
}
function normalizeObjectUnits(inputObject) {
var normalizedInput = {},
normalizedProp,
prop;
for (prop in inputObject) {
if (hasOwnProp(inputObject, prop)) {
normalizedProp = normalizeUnits(prop);
if (normalizedProp) {
normalizedInput[normalizedProp] = inputObject[prop];
}
}
}
return normalizedInput;
}
var priorities = {};
function addUnitPriority(unit, priority) {
priorities[unit] = priority;
}
function getPrioritizedUnits(unitsObj) {
var units = [];
for (var u in unitsObj) {
units.push({unit: u, priority: priorities[u]});
}
units.sort(function (a, b) {
return a.priority - b.priority;
});
return units;
}
function zeroFill(number, targetLength, forceSign) {
var absNumber = '' + Math.abs(number),
zerosToFill = targetLength - absNumber.length,
sign = number >= 0;
return (sign ? (forceSign ? '+' : '') : '-') +
Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;
}
var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;
var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g;
var formatFunctions = {};
var formatTokenFunctions = {};
// token: 'M'
// padded: ['MM', 2]
// ordinal: 'Mo'
// callback: function () { this.month() + 1 }
function addFormatToken (token, padded, ordinal, callback) {
var func = callback;
if (typeof callback === 'string') {
func = function () {
return this[callback]();
};
}
if (token) {
formatTokenFunctions[token] = func;
}
if (padded) {
formatTokenFunctions[padded[0]] = function () {
return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
};
}
if (ordinal) {
formatTokenFunctions[ordinal] = function () {
return this.localeData().ordinal(func.apply(this, arguments), token);
};
}
}
function removeFormattingTokens(input) {
if (input.match(/\[[\s\S]/)) {
return input.replace(/^\[|\]$/g, '');
}
return input.replace(/\\/g, '');
}
function makeFormatFunction(format) {
var array = format.match(formattingTokens), i, length;
for (i = 0, length = array.length; i < length; i++) {
if (formatTokenFunctions[array[i]]) {
array[i] = formatTokenFunctions[array[i]];
} else {
array[i] = removeFormattingTokens(array[i]);
}
}
return function (mom) {
var output = '', i;
for (i = 0; i < length; i++) {
output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];
}
return output;
};
}
// format date using native date object
function formatMoment(m, format) {
if (!m.isValid()) {
return m.localeData().invalidDate();
}
format = expandFormat(format, m.localeData());
formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);
return formatFunctions[format](m);
}
function expandFormat(format, locale) {
var i = 5;
function replaceLongDateFormatTokens(input) {
return locale.longDateFormat(input) || input;
}
localFormattingTokens.lastIndex = 0;
while (i >= 0 && localFormattingTokens.test(format)) {
format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);
localFormattingTokens.lastIndex = 0;
i -= 1;
}
return format;
}
var match1 = /\d/; // 0 - 9
var match2 = /\d\d/; // 00 - 99
var match3 = /\d{3}/; // 000 - 999
var match4 = /\d{4}/; // 0000 - 9999
var match6 = /[+-]?\d{6}/; // -999999 - 999999
var match1to2 = /\d\d?/; // 0 - 99
var match3to4 = /\d\d\d\d?/; // 999 - 9999
var match5to6 = /\d\d\d\d\d\d?/; // 99999 - 999999
var match1to3 = /\d{1,3}/; // 0 - 999
var match1to4 = /\d{1,4}/; // 0 - 9999
var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999
var matchUnsigned = /\d+/; // 0 - inf
var matchSigned = /[+-]?\d+/; // -inf - inf
var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z
var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z
var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123
// any word (or two) characters or numbers including two/three word month in arabic.
// includes scottish gaelic two word and hyphenated months
var matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i;
var regexes = {};
function addRegexToken (token, regex, strictRegex) {
regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {
return (isStrict && strictRegex) ? strictRegex : regex;
};
}
function getParseRegexForToken (token, config) {
if (!hasOwnProp(regexes, token)) {
return new RegExp(unescapeFormat(token));
}
return regexes[token](config._strict, config._locale);
}
// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
function unescapeFormat(s) {
return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) {
return p1 || p2 || p3 || p4;
}));
}
function regexEscape(s) {
return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
}
var tokens = {};
function addParseToken (token, callback) {
var i, func = callback;
if (typeof token === 'string') {
token = [token];
}
if (isNumber(callback)) {
func = function (input, array) {
array[callback] = toInt(input);
};
}
for (i = 0; i < token.length; i++) {
tokens[token[i]] = func;
}
}
function addWeekParseToken (token, callback) {
addParseToken(token, function (input, array, config, token) {
config._w = config._w || {};
callback(input, config._w, config, token);
});
}
function addTimeToArrayFromToken(token, input, config) {
if (input != null && hasOwnProp(tokens, token)) {
tokens[token](input, config._a, config, token);
}
}
var YEAR = 0;
var MONTH = 1;
var DATE = 2;
var HOUR = 3;
var MINUTE = 4;
var SECOND = 5;
var MILLISECOND = 6;
var WEEK = 7;
var WEEKDAY = 8;
// FORMATTING
addFormatToken('Y', 0, 0, function () {
var y = this.year();
return y <= 9999 ? '' + y : '+' + y;
});
addFormatToken(0, ['YY', 2], 0, function () {
return this.year() % 100;
});
addFormatToken(0, ['YYYY', 4], 0, 'year');
addFormatToken(0, ['YYYYY', 5], 0, 'year');
addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
// ALIASES
addUnitAlias('year', 'y');
// PRIORITIES
addUnitPriority('year', 1);
// PARSING
addRegexToken('Y', matchSigned);
addRegexToken('YY', match1to2, match2);
addRegexToken('YYYY', match1to4, match4);
addRegexToken('YYYYY', match1to6, match6);
addRegexToken('YYYYYY', match1to6, match6);
addParseToken(['YYYYY', 'YYYYYY'], YEAR);
addParseToken('YYYY', function (input, array) {
array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);
});
addParseToken('YY', function (input, array) {
array[YEAR] = hooks.parseTwoDigitYear(input);
});
addParseToken('Y', function (input, array) {
array[YEAR] = parseInt(input, 10);
});
// HELPERS
function daysInYear(year) {
return isLeapYear(year) ? 366 : 365;
}
function isLeapYear(year) {
return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
}
// HOOKS
hooks.parseTwoDigitYear = function (input) {
return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
};
// MOMENTS
var getSetYear = makeGetSet('FullYear', true);
function getIsLeapYear () {
return isLeapYear(this.year());
}
function makeGetSet (unit, keepTime) {
return function (value) {
if (value != null) {
set$1(this, unit, value);
hooks.updateOffset(this, keepTime);
return this;
} else {
return get(this, unit);
}
};
}
function get (mom, unit) {
return mom.isValid() ?
mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;
}
function set$1 (mom, unit, value) {
if (mom.isValid() && !isNaN(value)) {
if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {
mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));
}
else {
mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
}
}
}
// MOMENTS
function stringGet (units) {
units = normalizeUnits(units);
if (isFunction(this[units])) {
return this[units]();
}
return this;
}
function stringSet (units, value) {
if (typeof units === 'object') {
units = normalizeObjectUnits(units);
var prioritized = getPrioritizedUnits(units);
for (var i = 0; i < prioritized.length; i++) {
this[prioritized[i].unit](units[prioritized[i].unit]);
}
} else {
units = normalizeUnits(units);
if (isFunction(this[units])) {
return this[units](value);
}
}
return this;
}
function mod(n, x) {
return ((n % x) + x) % x;
}
var indexOf;
if (Array.prototype.indexOf) {
indexOf = Array.prototype.indexOf;
} else {
indexOf = function (o) {
// I know
var i;
for (i = 0; i < this.length; ++i) {
if (this[i] === o) {
return i;
}
}
return -1;
};
}
function daysInMonth(year, month) {
if (isNaN(year) || isNaN(month)) {
return NaN;
}
var modMonth = mod(month, 12);
year += (month - modMonth) / 12;
return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2);
}
// FORMATTING
addFormatToken('M', ['MM', 2], 'Mo', function () {
return this.month() + 1;
});
addFormatToken('MMM', 0, 0, function (format) {
return this.localeData().monthsShort(this, format);
});
addFormatToken('MMMM', 0, 0, function (format) {
return this.localeData().months(this, format);
});
// ALIASES
addUnitAlias('month', 'M');
// PRIORITY
addUnitPriority('month', 8);
// PARSING
addRegexToken('M', match1to2);
addRegexToken('MM', match1to2, match2);
addRegexToken('MMM', function (isStrict, locale) {
return locale.monthsShortRegex(isStrict);
});
addRegexToken('MMMM', function (isStrict, locale) {
return locale.monthsRegex(isStrict);
});
addParseToken(['M', 'MM'], function (input, array) {
array[MONTH] = toInt(input) - 1;
});
addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
var month = config._locale.monthsParse(input, token, config._strict);
// if we didn't find a month name, mark the date as invalid.
if (month != null) {
array[MONTH] = month;
} else {
getParsingFlags(config).invalidMonth = input;
}
});
// LOCALES
var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/;
var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');
function localeMonths (m, format) {
if (!m) {
return isArray(this._months) ? this._months :
this._months['standalone'];
}
return isArray(this._months) ? this._months[m.month()] :
this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];
}
var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');
function localeMonthsShort (m, format) {
if (!m) {
return isArray(this._monthsShort) ? this._monthsShort :
this._monthsShort['standalone'];
}
return isArray(this._monthsShort) ? this._monthsShort[m.month()] :
this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];
}
function handleStrictParse(monthName, format, strict) {
var i, ii, mom, llc = monthName.toLocaleLowerCase();
if (!this._monthsParse) {
// this is not used
this._monthsParse = [];
this._longMonthsParse = [];
this._shortMonthsParse = [];
for (i = 0; i < 12; ++i) {
mom = createUTC([2000, i]);
this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();
this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();
}
}
if (strict) {
if (format === 'MMM') {
ii = indexOf.call(this._shortMonthsParse, llc);
return ii !== -1 ? ii : null;
} else {
ii = indexOf.call(this._longMonthsParse, llc);
return ii !== -1 ? ii : null;
}
} else {
if (format === 'MMM') {
ii = indexOf.call(this._shortMonthsParse, llc);
if (ii !== -1) {
return ii;
}
ii = indexOf.call(this._longMonthsParse, llc);
return ii !== -1 ? ii : null;
} else {
ii = indexOf.call(this._longMonthsParse, llc);
if (ii !== -1) {
return ii;
}
ii = indexOf.call(this._shortMonthsParse, llc);
return ii !== -1 ? ii : null;
}
}
}
function localeMonthsParse (monthName, format, strict) {
var i, mom, regex;
if (this._monthsParseExact) {
return handleStrictParse.call(this, monthName, format, strict);
}
if (!this._monthsParse) {
this._monthsParse = [];
this._longMonthsParse = [];
this._shortMonthsParse = [];
}
// TODO: add sorting
// Sorting makes sure if one month (or abbr) is a prefix of another
// see sorting in computeMonthsParse
for (i = 0; i < 12; i++) {
// make the regex if we don't have it already
mom = createUTC([2000, i]);
if (strict && !this._longMonthsParse[i]) {
this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');
this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');
}
if (!strict && !this._monthsParse[i]) {
regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
}
// test the regex
if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {
return i;
} else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {
return i;
} else if (!strict && this._monthsParse[i].test(monthName)) {
return i;
}
}
}
// MOMENTS
function setMonth (mom, value) {
var dayOfMonth;
if (!mom.isValid()) {
// No op
return mom;
}
if (typeof value === 'string') {
if (/^\d+$/.test(value)) {
value = toInt(value);
} else {
value = mom.localeData().monthsParse(value);
// TODO: Another silent failure?
if (!isNumber(value)) {
return mom;
}
}
}
dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));
mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
return mom;
}
function getSetMonth (value) {
if (value != null) {
setMonth(this, value);
hooks.updateOffset(this, true);
return this;
} else {
return get(this, 'Month');
}
}
function getDaysInMonth () {
return daysInMonth(this.year(), this.month());
}
var defaultMonthsShortRegex = matchWord;
function monthsShortRegex (isStrict) {
if (this._monthsParseExact) {
if (!hasOwnProp(this, '_monthsRegex')) {
computeMonthsParse.call(this);
}
if (isStrict) {
return this._monthsShortStrictRegex;
} else {
return this._monthsShortRegex;
}
} else {
if (!hasOwnProp(this, '_monthsShortRegex')) {
this._monthsShortRegex = defaultMonthsShortRegex;
}
return this._monthsShortStrictRegex && isStrict ?
this._monthsShortStrictRegex : this._monthsShortRegex;
}
}
var defaultMonthsRegex = matchWord;
function monthsRegex (isStrict) {
if (this._monthsParseExact) {
if (!hasOwnProp(this, '_monthsRegex')) {
computeMonthsParse.call(this);
}
if (isStrict) {
return this._monthsStrictRegex;
} else {
return this._monthsRegex;
}
} else {
if (!hasOwnProp(this, '_monthsRegex')) {
this._monthsRegex = defaultMonthsRegex;
}
return this._monthsStrictRegex && isStrict ?
this._monthsStrictRegex : this._monthsRegex;
}
}
function computeMonthsParse () {
function cmpLenRev(a, b) {
return b.length - a.length;
}
var shortPieces = [], longPieces = [], mixedPieces = [],
i, mom;
for (i = 0; i < 12; i++) {
// make the regex if we don't have it already
mom = createUTC([2000, i]);
shortPieces.push(this.monthsShort(mom, ''));
longPieces.push(this.months(mom, ''));
mixedPieces.push(this.months(mom, ''));
mixedPieces.push(this.monthsShort(mom, ''));
}
// Sorting makes sure if one month (or abbr) is a prefix of another it
// will match the longer piece.
shortPieces.sort(cmpLenRev);
longPieces.sort(cmpLenRev);
mixedPieces.sort(cmpLenRev);
for (i = 0; i < 12; i++) {
shortPieces[i] = regexEscape(shortPieces[i]);
longPieces[i] = regexEscape(longPieces[i]);
}
for (i = 0; i < 24; i++) {
mixedPieces[i] = regexEscape(mixedPieces[i]);
}
this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
this._monthsShortRegex = this._monthsRegex;
this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');
this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');
}
function createDate (y, m, d, h, M, s, ms) {
// can't just apply() to create a date:
// https://stackoverflow.com/q/181348
var date;
// the date constructor remaps years 0-99 to 1900-1999
if (y < 100 && y >= 0) {
// preserve leap years using a full 400 year cycle, then reset
date = new Date(y + 400, m, d, h, M, s, ms);
if (isFinite(date.getFullYear())) {
date.setFullYear(y);
}
} else {
date = new Date(y, m, d, h, M, s, ms);
}
return date;
}
function createUTCDate (y) {
var date;
// the Date.UTC function remaps years 0-99 to 1900-1999
if (y < 100 && y >= 0) {
var args = Array.prototype.slice.call(arguments);
// preserve leap years using a full 400 year cycle, then reset
args[0] = y + 400;
date = new Date(Date.UTC.apply(null, args));
if (isFinite(date.getUTCFullYear())) {
date.setUTCFullYear(y);
}
} else {
date = new Date(Date.UTC.apply(null, arguments));
}
return date;
}
// start-of-first-week - start-of-year
function firstWeekOffset(year, dow, doy) {
var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
fwd = 7 + dow - doy,
// first-week day local weekday -- which local weekday is fwd
fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
return -fwdlw + fwd - 1;
}
// https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
var localWeekday = (7 + weekday - dow) % 7,
weekOffset = firstWeekOffset(year, dow, doy),
dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
resYear, resDayOfYear;
if (dayOfYear <= 0) {
resYear = year - 1;
resDayOfYear = daysInYear(resYear) + dayOfYear;
} else if (dayOfYear > daysInYear(year)) {
resYear = year + 1;
resDayOfYear = dayOfYear - daysInYear(year);
} else {
resYear = year;
resDayOfYear = dayOfYear;
}
return {
year: resYear,
dayOfYear: resDayOfYear
};
}
function weekOfYear(mom, dow, doy) {
var weekOffset = firstWeekOffset(mom.year(), dow, doy),
week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
resWeek, resYear;
if (week < 1) {
resYear = mom.year() - 1;
resWeek = week + weeksInYear(resYear, dow, doy);
} else if (week > weeksInYear(mom.year(), dow, doy)) {
resWeek = week - weeksInYear(mom.year(), dow, doy);
resYear = mom.year() + 1;
} else {
resYear = mom.year();
resWeek = week;
}
return {
week: resWeek,
year: resYear
};
}
function weeksInYear(year, dow, doy) {
var weekOffset = firstWeekOffset(year, dow, doy),
weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
}
// FORMATTING
addFormatToken('w', ['ww', 2], 'wo', 'week');
addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
// ALIASES
addUnitAlias('week', 'w');
addUnitAlias('isoWeek', 'W');
// PRIORITIES
addUnitPriority('week', 5);
addUnitPriority('isoWeek', 5);
// PARSING
addRegexToken('w', match1to2);
addRegexToken('ww', match1to2, match2);
addRegexToken('W', match1to2);
addRegexToken('WW', match1to2, match2);
addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {
week[token.substr(0, 1)] = toInt(input);
});
// HELPERS
// LOCALES
function localeWeek (mom) {
return weekOfYear(mom, this._week.dow, this._week.doy).week;
}
var defaultLocaleWeek = {
dow : 0, // Sunday is the first day of the week.
doy : 6 // The week that contains Jan 6th is the first week of the year.
};
function localeFirstDayOfWeek () {
return this._week.dow;
}
function localeFirstDayOfYear () {
return this._week.doy;
}
// MOMENTS
function getSetWeek (input) {
var week = this.localeData().week(this);
return input == null ? week : this.add((input - week) * 7, 'd');
}
function getSetISOWeek (input) {
var week = weekOfYear(this, 1, 4).week;
return input == null ? week : this.add((input - week) * 7, 'd');
}
// FORMATTING
addFormatToken('d', 0, 'do', 'day');
addFormatToken('dd', 0, 0, function (format) {
return this.localeData().weekdaysMin(this, format);
});
addFormatToken('ddd', 0, 0, function (format) {
return this.localeData().weekdaysShort(this, format);
});
addFormatToken('dddd', 0, 0, function (format) {
return this.localeData().weekdays(this, format);
});
addFormatToken('e', 0, 0, 'weekday');
addFormatToken('E', 0, 0, 'isoWeekday');
// ALIASES
addUnitAlias('day', 'd');
addUnitAlias('weekday', 'e');
addUnitAlias('isoWeekday', 'E');
// PRIORITY
addUnitPriority('day', 11);
addUnitPriority('weekday', 11);
addUnitPriority('isoWeekday', 11);
// PARSING
addRegexToken('d', match1to2);
addRegexToken('e', match1to2);
addRegexToken('E', match1to2);
addRegexToken('dd', function (isStrict, locale) {
return locale.weekdaysMinRegex(isStrict);
});
addRegexToken('ddd', function (isStrict, locale) {
return locale.weekdaysShortRegex(isStrict);
});
addRegexToken('dddd', function (isStrict, locale) {
return locale.weekdaysRegex(isStrict);
});
addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {
var weekday = config._locale.weekdaysParse(input, token, config._strict);
// if we didn't get a weekday name, mark the date as invalid
if (weekday != null) {
week.d = weekday;
} else {
getParsingFlags(config).invalidWeekday = input;
}
});
addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
week[token] = toInt(input);
});
// HELPERS
function parseWeekday(input, locale) {
if (typeof input !== 'string') {
return input;
}
if (!isNaN(input)) {
return parseInt(input, 10);
}
input = locale.weekdaysParse(input);
if (typeof input === 'number') {
return input;
}
return null;
}
function parseIsoWeekday(input, locale) {
if (typeof input === 'string') {
return locale.weekdaysParse(input) % 7 || 7;
}
return isNaN(input) ? null : input;
}
// LOCALES
function shiftWeekdays (ws, n) {
return ws.slice(n, 7).concat(ws.slice(0, n));
}
var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');
function localeWeekdays (m, format) {
var weekdays = isArray(this._weekdays) ? this._weekdays :
this._weekdays[(m && m !== true && this._weekdays.isFormat.test(format)) ? 'format' : 'standalone'];
return (m === true) ? shiftWeekdays(weekdays, this._week.dow)
: (m) ? weekdays[m.day()] : weekdays;
}
var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');
function localeWeekdaysShort (m) {
return (m === true) ? shiftWeekdays(this._weekdaysShort, this._week.dow)
: (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;
}
var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');
function localeWeekdaysMin (m) {
return (m === true) ? shiftWeekdays(this._weekdaysMin, this._week.dow)
: (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;
}
function handleStrictParse$1(weekdayName, format, strict) {
var i, ii, mom, llc = weekdayName.toLocaleLowerCase();
if (!this._weekdaysParse) {
this._weekdaysParse = [];
this._shortWeekdaysParse = [];
this._minWeekdaysParse = [];
for (i = 0; i < 7; ++i) {
mom = createUTC([2000, 1]).day(i);
this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();
this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();
this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();
}
}
if (strict) {
if (format === 'dddd') {
ii = indexOf.call(this._weekdaysParse, llc);
return ii !== -1 ? ii : null;
} else if (format === 'ddd') {
ii = indexOf.call(this._shortWeekdaysParse, llc);
return ii !== -1 ? ii : null;
} else {
ii = indexOf.call(this._minWeekdaysParse, llc);
return ii !== -1 ? ii : null;
}
} else {
if (format === 'dddd') {
ii = indexOf.call(this._weekdaysParse, llc);
if (ii !== -1) {
return ii;
}
ii = indexOf.call(this._shortWeekdaysParse, llc);
if (ii !== -1) {
return ii;
}
ii = indexOf.call(this._minWeekdaysParse, llc);
return ii !== -1 ? ii : null;
} else if (format === 'ddd') {
ii = indexOf.call(this._shortWeekdaysParse, llc);
if (ii !== -1) {
return ii;
}
ii = indexOf.call(this._weekdaysParse, llc);
if (ii !== -1) {
return ii;
}
ii = indexOf.call(this._minWeekdaysParse, llc);
return ii !== -1 ? ii : null;
} else {
ii = indexOf.call(this._minWeekdaysParse, llc);
if (ii !== -1) {
return ii;
}
ii = indexOf.call(this._weekdaysParse, llc);
if (ii !== -1) {
return ii;
}
ii = indexOf.call(this._shortWeekdaysParse, llc);
return ii !== -1 ? ii : null;
}
}
}
function localeWeekdaysParse (weekdayName, format, strict) {
var i, mom, regex;
if (this._weekdaysParseExact) {
return handleStrictParse$1.call(this, weekdayName, format, strict);
}
if (!this._weekdaysParse) {
this._weekdaysParse = [];
this._minWeekdaysParse = [];
this._shortWeekdaysParse = [];
this._fullWeekdaysParse = [];
}
for (i = 0; i < 7; i++) {
// make the regex if we don't have it already
mom = createUTC([2000, 1]).day(i);
if (strict && !this._fullWeekdaysParse[i]) {
this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', 'i');
this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', 'i');
this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', 'i');
}
if (!this._weekdaysParse[i]) {
regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');
this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
}
// test the regex
if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {
return i;
} else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {
return i;
} else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {
return i;
} else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
return i;
}
}
}
// MOMENTS
function getSetDayOfWeek (input) {
if (!this.isValid()) {
return input != null ? this : NaN;
}
var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
if (input != null) {
input = parseWeekday(input, this.localeData());
return this.add(input - day, 'd');
} else {
return day;
}
}
function getSetLocaleDayOfWeek (input) {
if (!this.isValid()) {
return input != null ? this : NaN;
}
var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
return input == null ? weekday : this.add(input - weekday, 'd');
}
function getSetISODayOfWeek (input) {
if (!this.isValid()) {
return input != null ? this : NaN;
}
// behaves the same as moment#day except
// as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
// as a setter, sunday should belong to the previous week.
if (input != null) {
var weekday = parseIsoWeekday(input, this.localeData());
return this.day(this.day() % 7 ? weekday : weekday - 7);
} else {
return this.day() || 7;
}
}
var defaultWeekdaysRegex = matchWord;
function weekdaysRegex (isStrict) {
if (this._weekdaysParseExact) {
if (!hasOwnProp(this, '_weekdaysRegex')) {
computeWeekdaysParse.call(this);
}
if (isStrict) {
return this._weekdaysStrictRegex;
} else {
return this._weekdaysRegex;
}
} else {
if (!hasOwnProp(this, '_weekdaysRegex')) {
this._weekdaysRegex = defaultWeekdaysRegex;
}
return this._weekdaysStrictRegex && isStrict ?
this._weekdaysStrictRegex : this._weekdaysRegex;
}
}
var defaultWeekdaysShortRegex = matchWord;
function weekdaysShortRegex (isStrict) {
if (this._weekdaysParseExact) {
if (!hasOwnProp(this, '_weekdaysRegex')) {
computeWeekdaysParse.call(this);
}
if (isStrict) {
return this._weekdaysShortStrictRegex;
} else {
return this._weekdaysShortRegex;
}
} else {
if (!hasOwnProp(this, '_weekdaysShortRegex')) {
this._weekdaysShortRegex = defaultWeekdaysShortRegex;
}
return this._weekdaysShortStrictRegex && isStrict ?
this._weekdaysShortStrictRegex : this._weekdaysShortRegex;
}
}
var defaultWeekdaysMinRegex = matchWord;
function weekdaysMinRegex (isStrict) {
if (this._weekdaysParseExact) {
if (!hasOwnProp(this, '_weekdaysRegex')) {
computeWeekdaysParse.call(this);
}
if (isStrict) {
return this._weekdaysMinStrictRegex;
} else {
return this._weekdaysMinRegex;
}
} else {
if (!hasOwnProp(this, '_weekdaysMinRegex')) {
this._weekdaysMinRegex = defaultWeekdaysMinRegex;
}
return this._weekdaysMinStrictRegex && isStrict ?
this._weekdaysMinStrictRegex : this._weekdaysMinRegex;
}
}
function computeWeekdaysParse () {
function cmpLenRev(a, b) {
return b.length - a.length;
}
var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],
i, mom, minp, shortp, longp;
for (i = 0; i < 7; i++) {
// make the regex if we don't have it already
mom = createUTC([2000, 1]).day(i);
minp = this.weekdaysMin(mom, '');
shortp = this.weekdaysShort(mom, '');
longp = this.weekdays(mom, '');
minPieces.push(minp);
shortPieces.push(shortp);
longPieces.push(longp);
mixedPieces.push(minp);
mixedPieces.push(shortp);
mixedPieces.push(longp);
}
// Sorting makes sure if one weekday (or abbr) is a prefix of another it
// will match the longer piece.
minPieces.sort(cmpLenRev);
shortPieces.sort(cmpLenRev);
longPieces.sort(cmpLenRev);
mixedPieces.sort(cmpLenRev);
for (i = 0; i < 7; i++) {
shortPieces[i] = regexEscape(shortPieces[i]);
longPieces[i] = regexEscape(longPieces[i]);
mixedPieces[i] = regexEscape(mixedPieces[i]);
}
this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
this._weekdaysShortRegex = this._weekdaysRegex;
this._weekdaysMinRegex = this._weekdaysRegex;
this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');
this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');
this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');
}
// FORMATTING
function hFormat() {
return this.hours() % 12 || 12;
}
function kFormat() {
return this.hours() || 24;
}
addFormatToken('H', ['HH', 2], 0, 'hour');
addFormatToken('h', ['hh', 2], 0, hFormat);
addFormatToken('k', ['kk', 2], 0, kFormat);
addFormatToken('hmm', 0, 0, function () {
return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);
});
addFormatToken('hmmss', 0, 0, function () {
return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +
zeroFill(this.seconds(), 2);
});
addFormatToken('Hmm', 0, 0, function () {
return '' + this.hours() + zeroFill(this.minutes(), 2);
});
addFormatToken('Hmmss', 0, 0, function () {
return '' + this.hours() + zeroFill(this.minutes(), 2) +
zeroFill(this.seconds(), 2);
});
function meridiem (token, lowercase) {
addFormatToken(token, 0, 0, function () {
return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);
});
}
meridiem('a', true);
meridiem('A', false);
// ALIASES
addUnitAlias('hour', 'h');
// PRIORITY
addUnitPriority('hour', 13);
// PARSING
function matchMeridiem (isStrict, locale) {
return locale._meridiemParse;
}
addRegexToken('a', matchMeridiem);
addRegexToken('A', matchMeridiem);
addRegexToken('H', match1to2);
addRegexToken('h', match1to2);
addRegexToken('k', match1to2);
addRegexToken('HH', match1to2, match2);
addRegexToken('hh', match1to2, match2);
addRegexToken('kk', match1to2, match2);
addRegexToken('hmm', match3to4);
addRegexToken('hmmss', match5to6);
addRegexToken('Hmm', match3to4);
addRegexToken('Hmmss', match5to6);
addParseToken(['H', 'HH'], HOUR);
addParseToken(['k', 'kk'], function (input, array, config) {
var kInput = toInt(input);
array[HOUR] = kInput === 24 ? 0 : kInput;
});
addParseToken(['a', 'A'], function (input, array, config) {
config._isPm = config._locale.isPM(input);
config._meridiem = input;
});
addParseToken(['h', 'hh'], function (input, array, config) {
array[HOUR] = toInt(input);
getParsingFlags(config).bigHour = true;
});
addParseToken('hmm', function (input, array, config) {
var pos = input.length - 2;
array[HOUR] = toInt(input.substr(0, pos));
array[MINUTE] = toInt(input.substr(pos));
getParsingFlags(config).bigHour = true;
});
addParseToken('hmmss', function (input, array, config) {
var pos1 = input.length - 4;
var pos2 = input.length - 2;
array[HOUR] = toInt(input.substr(0, pos1));
array[MINUTE] = toInt(input.substr(pos1, 2));
array[SECOND] = toInt(input.substr(pos2));
getParsingFlags(config).bigHour = true;
});
addParseToken('Hmm', function (input, array, config) {
var pos = input.length - 2;
array[HOUR] = toInt(input.substr(0, pos));
array[MINUTE] = toInt(input.substr(pos));
});
addParseToken('Hmmss', function (input, array, config) {
var pos1 = input.length - 4;
var pos2 = input.length - 2;
array[HOUR] = toInt(input.substr(0, pos1));
array[MINUTE] = toInt(input.substr(pos1, 2));
array[SECOND] = toInt(input.substr(pos2));
});
// LOCALES
function localeIsPM (input) {
// IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
// Using charAt should be more compatible.
return ((input + '').toLowerCase().charAt(0) === 'p');
}
var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i;
function localeMeridiem (hours, minutes, isLower) {
if (hours > 11) {
return isLower ? 'pm' : 'PM';
} else {
return isLower ? 'am' : 'AM';
}
}
// MOMENTS
// Setting the hour should keep the time, because the user explicitly
// specified which hour they want. So trying to maintain the same hour (in
// a new timezone) makes sense. Adding/subtracting hours does not follow
// this rule.
var getSetHour = makeGetSet('Hours', true);
var baseConfig = {
calendar: defaultCalendar,
longDateFormat: defaultLongDateFormat,
invalidDate: defaultInvalidDate,
ordinal: defaultOrdinal,
dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,
relativeTime: defaultRelativeTime,
months: defaultLocaleMonths,
monthsShort: defaultLocaleMonthsShort,
week: defaultLocaleWeek,
weekdays: defaultLocaleWeekdays,
weekdaysMin: defaultLocaleWeekdaysMin,
weekdaysShort: defaultLocaleWeekdaysShort,
meridiemParse: defaultLocaleMeridiemParse
};
// internal storage for locale config files
var locales = {};
var localeFamilies = {};
var globalLocale;
function normalizeLocale(key) {
return key ? key.toLowerCase().replace('_', '-') : key;
}
// pick the locale from the array
// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
function chooseLocale(names) {
var i = 0, j, next, locale, split;
while (i < names.length) {
split = normalizeLocale(names[i]).split('-');
j = split.length;
next = normalizeLocale(names[i + 1]);
next = next ? next.split('-') : null;
while (j > 0) {
locale = loadLocale(split.slice(0, j).join('-'));
if (locale) {
return locale;
}
if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {
//the next array item is better than a shallower substring of this one
break;
}
j--;
}
i++;
}
return globalLocale;
}
function loadLocale(name) {
var oldLocale = null;
// TODO: Find a better way to register and load all the locales in Node
if (!locales[name] && (typeof module !== 'undefined') &&
module && module.exports) {
try {
oldLocale = globalLocale._abbr;
var aliasedRequire = require;
__webpack_require__(19)("./" + name);
getSetGlobalLocale(oldLocale);
} catch (e) {}
}
return locales[name];
}
// This function will load locale and then set the global locale. If
// no arguments are passed in, it will simply return the current global
// locale key.
function getSetGlobalLocale (key, values) {
var data;
if (key) {
if (isUndefined(values)) {
data = getLocale(key);
}
else {
data = defineLocale(key, values);
}
if (data) {
// moment.duration._locale = moment._locale = data;
globalLocale = data;
}
else {
if ((typeof console !== 'undefined') && console.warn) {
//warn user if arguments are passed but the locale could not be set
console.warn('Locale ' + key + ' not found. Did you forget to load it?');
}
}
}
return globalLocale._abbr;
}
function defineLocale (name, config) {
if (config !== null) {
var locale, parentConfig = baseConfig;
config.abbr = name;
if (locales[name] != null) {
deprecateSimple('defineLocaleOverride',
'use moment.updateLocale(localeName, config) to change ' +
'an existing locale. moment.defineLocale(localeName, ' +
'config) should only be used for creating a new locale ' +
'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');
parentConfig = locales[name]._config;
} else if (config.parentLocale != null) {
if (locales[config.parentLocale] != null) {
parentConfig = locales[config.parentLocale]._config;
} else {
locale = loadLocale(config.parentLocale);
if (locale != null) {
parentConfig = locale._config;
} else {
if (!localeFamilies[config.parentLocale]) {
localeFamilies[config.parentLocale] = [];
}
localeFamilies[config.parentLocale].push({
name: name,
config: config
});
return null;
}
}
}
locales[name] = new Locale(mergeConfigs(parentConfig, config));
if (localeFamilies[name]) {
localeFamilies[name].forEach(function (x) {
defineLocale(x.name, x.config);
});
}
// backwards compat for now: also set the locale
// make sure we set the locale AFTER all child locales have been
// created, so we won't end up with the child locale set.
getSetGlobalLocale(name);
return locales[name];
} else {
// useful for testing
delete locales[name];
return null;
}
}
function updateLocale(name, config) {
if (config != null) {
var locale, tmpLocale, parentConfig = baseConfig;
// MERGE
tmpLocale = loadLocale(name);
if (tmpLocale != null) {
parentConfig = tmpLocale._config;
}
config = mergeConfigs(parentConfig, config);
locale = new Locale(config);
locale.parentLocale = locales[name];
locales[name] = locale;
// backwards compat for now: also set the locale
getSetGlobalLocale(name);
} else {
// pass null for config to unupdate, useful for tests
if (locales[name] != null) {
if (locales[name].parentLocale != null) {
locales[name] = locales[name].parentLocale;
} else if (locales[name] != null) {
delete locales[name];
}
}
}
return locales[name];
}
// returns locale data
function getLocale (key) {
var locale;
if (key && key._locale && key._locale._abbr) {
key = key._locale._abbr;
}
if (!key) {
return globalLocale;
}
if (!isArray(key)) {
//short-circuit everything else
locale = loadLocale(key);
if (locale) {
return locale;
}
key = [key];
}
return chooseLocale(key);
}
function listLocales() {
return keys(locales);
}
function checkOverflow (m) {
var overflow;
var a = m._a;
if (a && getParsingFlags(m).overflow === -2) {
overflow =
a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :
a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :
a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :
a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :
a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :
a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :
-1;
if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
overflow = DATE;
}
if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
overflow = WEEK;
}
if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
overflow = WEEKDAY;
}
getParsingFlags(m).overflow = overflow;
}
return m;
}
// Pick the first defined of two or three arguments.
function defaults(a, b, c) {
if (a != null) {
return a;
}
if (b != null) {
return b;
}
return c;
}
function currentDateArray(config) {
// hooks is actually the exported moment object
var nowValue = new Date(hooks.now());
if (config._useUTC) {
return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];
}
return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
}
// convert an array to a date.
// the array should mirror the parameters below
// note: all values past the year are optional and will default to the lowest possible value.
// [year, month, day , hour, minute, second, millisecond]
function configFromArray (config) {
var i, date, input = [], currentDate, expectedWeekday, yearToUse;
if (config._d) {
return;
}
currentDate = currentDateArray(config);
//compute day of the year from weeks and weekdays
if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
dayOfYearFromWeekInfo(config);
}
//if the day of the year is set, figure out what it is
if (config._dayOfYear != null) {
yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {
getParsingFlags(config)._overflowDayOfYear = true;
}
date = createUTCDate(yearToUse, 0, config._dayOfYear);
config._a[MONTH] = date.getUTCMonth();
config._a[DATE] = date.getUTCDate();
}
// Default to current date.
// * if no year, month, day of month are given, default to today
// * if day of month is given, default month and year
// * if month is given, default only year
// * if year is given, don't default anything
for (i = 0; i < 3 && config._a[i] == null; ++i) {
config._a[i] = input[i] = currentDate[i];
}
// Zero out whatever was not defaulted, including time
for (; i < 7; i++) {
config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];
}
// Check for 24:00:00.000
if (config._a[HOUR] === 24 &&
config._a[MINUTE] === 0 &&
config._a[SECOND] === 0 &&
config._a[MILLISECOND] === 0) {
config._nextDay = true;
config._a[HOUR] = 0;
}
config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);
expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();
// Apply timezone offset from input. The actual utcOffset can be changed
// with parseZone.
if (config._tzm != null) {
config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
}
if (config._nextDay) {
config._a[HOUR] = 24;
}
// check for mismatching day of week
if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {
getParsingFlags(config).weekdayMismatch = true;
}
}
function dayOfYearFromWeekInfo(config) {
var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;
w = config._w;
if (w.GG != null || w.W != null || w.E != null) {
dow = 1;
doy = 4;
// TODO: We need to take the current isoWeekYear, but that depends on
// how we interpret now (local, utc, fixed offset). So create
// a now version of current config (take local/utc/offset flags, and
// create now).
weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);
week = defaults(w.W, 1);
weekday = defaults(w.E, 1);
if (weekday < 1 || weekday > 7) {
weekdayOverflow = true;
}
} else {
dow = config._locale._week.dow;
doy = config._locale._week.doy;
var curWeek = weekOfYear(createLocal(), dow, doy);
weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);
// Default to current week.
week = defaults(w.w, curWeek.week);
if (w.d != null) {
// weekday -- low day numbers are considered next week
weekday = w.d;
if (weekday < 0 || weekday > 6) {
weekdayOverflow = true;
}
} else if (w.e != null) {
// local weekday -- counting starts from beginning of week
weekday = w.e + dow;
if (w.e < 0 || w.e > 6) {
weekdayOverflow = true;
}
} else {
// default to beginning of week
weekday = dow;
}
}
if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
getParsingFlags(config)._overflowWeeks = true;
} else if (weekdayOverflow != null) {
getParsingFlags(config)._overflowWeekday = true;
} else {
temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
config._a[YEAR] = temp.year;
config._dayOfYear = temp.dayOfYear;
}
}
// iso 8601 regex
// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)
var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/;
var basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/;
var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/;
var isoDates = [
['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/],
['YYYY-MM-DD', /\d{4}-\d\d-\d\d/],
['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/],
['GGGG-[W]WW', /\d{4}-W\d\d/, false],
['YYYY-DDD', /\d{4}-\d{3}/],
['YYYY-MM', /\d{4}-\d\d/, false],
['YYYYYYMMDD', /[+-]\d{10}/],
['YYYYMMDD', /\d{8}/],
// YYYYMM is NOT allowed by the standard
['GGGG[W]WWE', /\d{4}W\d{3}/],
['GGGG[W]WW', /\d{4}W\d{2}/, false],
['YYYYDDD', /\d{7}/]
];
// iso time formats and regexes
var isoTimes = [
['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/],
['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/],
['HH:mm:ss', /\d\d:\d\d:\d\d/],
['HH:mm', /\d\d:\d\d/],
['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/],
['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/],
['HHmmss', /\d\d\d\d\d\d/],
['HHmm', /\d\d\d\d/],
['HH', /\d\d/]
];
var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i;
// date from iso format
function configFromISO(config) {
var i, l,
string = config._i,
match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
allowTime, dateFormat, timeFormat, tzFormat;
if (match) {
getParsingFlags(config).iso = true;
for (i = 0, l = isoDates.length; i < l; i++) {
if (isoDates[i][1].exec(match[1])) {
dateFormat = isoDates[i][0];
allowTime = isoDates[i][2] !== false;
break;
}
}
if (dateFormat == null) {
config._isValid = false;
return;
}
if (match[3]) {
for (i = 0, l = isoTimes.length; i < l; i++) {
if (isoTimes[i][1].exec(match[3])) {
// match[2] should be 'T' or space
timeFormat = (match[2] || ' ') + isoTimes[i][0];
break;
}
}
if (timeFormat == null) {
config._isValid = false;
return;
}
}
if (!allowTime && timeFormat != null) {
config._isValid = false;
return;
}
if (match[4]) {
if (tzRegex.exec(match[4])) {
tzFormat = 'Z';
} else {
config._isValid = false;
return;
}
}
config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
configFromStringAndFormat(config);
} else {
config._isValid = false;
}
}
// RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3
var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;
function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {
var result = [
untruncateYear(yearStr),
defaultLocaleMonthsShort.indexOf(monthStr),
parseInt(dayStr, 10),
parseInt(hourStr, 10),
parseInt(minuteStr, 10)
];
if (secondStr) {
result.push(parseInt(secondStr, 10));
}
return result;
}
function untruncateYear(yearStr) {
var year = parseInt(yearStr, 10);
if (year <= 49) {
return 2000 + year;
} else if (year <= 999) {
return 1900 + year;
}
return year;
}
function preprocessRFC2822(s) {
// Remove comments and folding whitespace and replace multiple-spaces with a single space
return s.replace(/\([^)]*\)|[\n\t]/g, ' ').replace(/(\s\s+)/g, ' ').replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}
function checkWeekday(weekdayStr, parsedInput, config) {
if (weekdayStr) {
// TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.
var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),
weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();
if (weekdayProvided !== weekdayActual) {
getParsingFlags(config).weekdayMismatch = true;
config._isValid = false;
return false;
}
}
return true;
}
var obsOffsets = {
UT: 0,
GMT: 0,
EDT: -4 * 60,
EST: -5 * 60,
CDT: -5 * 60,
CST: -6 * 60,
MDT: -6 * 60,
MST: -7 * 60,
PDT: -7 * 60,
PST: -8 * 60
};
function calculateOffset(obsOffset, militaryOffset, numOffset) {
if (obsOffset) {
return obsOffsets[obsOffset];
} else if (militaryOffset) {
// the only allowed military tz is Z
return 0;
} else {
var hm = parseInt(numOffset, 10);
var m = hm % 100, h = (hm - m) / 100;
return h * 60 + m;
}
}
// date and time from ref 2822 format
function configFromRFC2822(config) {
var match = rfc2822.exec(preprocessRFC2822(config._i));
if (match) {
var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);
if (!checkWeekday(match[1], parsedArray, config)) {
return;
}
config._a = parsedArray;
config._tzm = calculateOffset(match[8], match[9], match[10]);
config._d = createUTCDate.apply(null, config._a);
config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
getParsingFlags(config).rfc2822 = true;
} else {
config._isValid = false;
}
}
// date from iso format or fallback
function configFromString(config) {
var matched = aspNetJsonRegex.exec(config._i);
if (matched !== null) {
config._d = new Date(+matched[1]);
return;
}
configFromISO(config);
if (config._isValid === false) {
delete config._isValid;
} else {
return;
}
configFromRFC2822(config);
if (config._isValid === false) {
delete config._isValid;
} else {
return;
}
// Final attempt, use Input Fallback
hooks.createFromInputFallback(config);
}
hooks.createFromInputFallback = deprecate(
'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +
'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +
'discouraged and will be removed in an upcoming major release. Please refer to ' +
'http://momentjs.com/guides/#/warnings/js-date/ for more info.',
function (config) {
config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
}
);
// constant that refers to the ISO standard
hooks.ISO_8601 = function () {};
// constant that refers to the RFC 2822 form
hooks.RFC_2822 = function () {};
// date from string and format string
function configFromStringAndFormat(config) {
// TODO: Move this to another part of the creation flow to prevent circular deps
if (config._f === hooks.ISO_8601) {
configFromISO(config);
return;
}
if (config._f === hooks.RFC_2822) {
configFromRFC2822(config);
return;
}
config._a = [];
getParsingFlags(config).empty = true;
// This array is used to make a Date, either with `new Date` or `Date.UTC`
var string = '' + config._i,
i, parsedInput, tokens, token, skipped,
stringLength = string.length,
totalParsedInputLength = 0;
tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];
for (i = 0; i < tokens.length; i++) {
token = tokens[i];
parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];
// console.log('token', token, 'parsedInput', parsedInput,
// 'regex', getParseRegexForToken(token, config));
if (parsedInput) {
skipped = string.substr(0, string.indexOf(parsedInput));
if (skipped.length > 0) {
getParsingFlags(config).unusedInput.push(skipped);
}
string = string.slice(string.indexOf(parsedInput) + parsedInput.length);
totalParsedInputLength += parsedInput.length;
}
// don't parse if it's not a known token
if (formatTokenFunctions[token]) {
if (parsedInput) {
getParsingFlags(config).empty = false;
}
else {
getParsingFlags(config).unusedTokens.push(token);
}
addTimeToArrayFromToken(token, parsedInput, config);
}
else if (config._strict && !parsedInput) {
getParsingFlags(config).unusedTokens.push(token);
}
}
// add remaining unparsed input length to the string
getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;
if (string.length > 0) {
getParsingFlags(config).unusedInput.push(string);
}
// clear _12h flag if hour is <= 12
if (config._a[HOUR] <= 12 &&
getParsingFlags(config).bigHour === true &&
config._a[HOUR] > 0) {
getParsingFlags(config).bigHour = undefined;
}
getParsingFlags(config).parsedDateParts = config._a.slice(0);
getParsingFlags(config).meridiem = config._meridiem;
// handle meridiem
config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);
configFromArray(config);
checkOverflow(config);
}
function meridiemFixWrap (locale, hour, meridiem) {
var isPm;
if (meridiem == null) {
// nothing to do
return hour;
}
if (locale.meridiemHour != null) {
return locale.meridiemHour(hour, meridiem);
} else if (locale.isPM != null) {
// Fallback
isPm = locale.isPM(meridiem);
if (isPm && hour < 12) {
hour += 12;
}
if (!isPm && hour === 12) {
hour = 0;
}
return hour;
} else {
// this is not supposed to happen
return hour;
}
}
// date from string and array of format strings
function configFromStringAndArray(config) {
var tempConfig,
bestMoment,
scoreToBeat,
i,
currentScore;
if (config._f.length === 0) {
getParsingFlags(config).invalidFormat = true;
config._d = new Date(NaN);
return;
}
for (i = 0; i < config._f.length; i++) {
currentScore = 0;
tempConfig = copyConfig({}, config);
if (config._useUTC != null) {
tempConfig._useUTC = config._useUTC;
}
tempConfig._f = config._f[i];
configFromStringAndFormat(tempConfig);
if (!isValid(tempConfig)) {
continue;
}
// if there is any input that was not parsed add a penalty for that format
currentScore += getParsingFlags(tempConfig).charsLeftOver;
//or tokens
currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
getParsingFlags(tempConfig).score = currentScore;
if (scoreToBeat == null || currentScore < scoreToBeat) {
scoreToBeat = currentScore;
bestMoment = tempConfig;
}
}
extend(config, bestMoment || tempConfig);
}
function configFromObject(config) {
if (config._d) {
return;
}
var i = normalizeObjectUnits(config._i);
config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {
return obj && parseInt(obj, 10);
});
configFromArray(config);
}
function createFromConfig (config) {
var res = new Moment(checkOverflow(prepareConfig(config)));
if (res._nextDay) {
// Adding is smart enough around DST
res.add(1, 'd');
res._nextDay = undefined;
}
return res;
}
function prepareConfig (config) {
var input = config._i,
format = config._f;
config._locale = config._locale || getLocale(config._l);
if (input === null || (format === undefined && input === '')) {
return createInvalid({nullInput: true});
}
if (typeof input === 'string') {
config._i = input = config._locale.preparse(input);
}
if (isMoment(input)) {
return new Moment(checkOverflow(input));
} else if (isDate(input)) {
config._d = input;
} else if (isArray(format)) {
configFromStringAndArray(config);
} else if (format) {
configFromStringAndFormat(config);
} else {
configFromInput(config);
}
if (!isValid(config)) {
config._d = null;
}
return config;
}
function configFromInput(config) {
var input = config._i;
if (isUndefined(input)) {
config._d = new Date(hooks.now());
} else if (isDate(input)) {
config._d = new Date(input.valueOf());
} else if (typeof input === 'string') {
configFromString(config);
} else if (isArray(input)) {
config._a = map(input.slice(0), function (obj) {
return parseInt(obj, 10);
});
configFromArray(config);
} else if (isObject(input)) {
configFromObject(config);
} else if (isNumber(input)) {
// from milliseconds
config._d = new Date(input);
} else {
hooks.createFromInputFallback(config);
}
}
function createLocalOrUTC (input, format, locale, strict, isUTC) {
var c = {};
if (locale === true || locale === false) {
strict = locale;
locale = undefined;
}
if ((isObject(input) && isObjectEmpty(input)) ||
(isArray(input) && input.length === 0)) {
input = undefined;
}
// object construction must be done this way.
// https://github.com/moment/moment/issues/1423
c._isAMomentObject = true;
c._useUTC = c._isUTC = isUTC;
c._l = locale;
c._i = input;
c._f = format;
c._strict = strict;
return createFromConfig(c);
}
function createLocal (input, format, locale, strict) {
return createLocalOrUTC(input, format, locale, strict, false);
}
var prototypeMin = deprecate(
'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',
function () {
var other = createLocal.apply(null, arguments);
if (this.isValid() && other.isValid()) {
return other < this ? this : other;
} else {
return createInvalid();
}
}
);
var prototypeMax = deprecate(
'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',
function () {
var other = createLocal.apply(null, arguments);
if (this.isValid() && other.isValid()) {
return other > this ? this : other;
} else {
return createInvalid();
}
}
);
// Pick a moment m from moments so that m[fn](other) is true for all
// other. This relies on the function fn to be transitive.
//
// moments should either be an array of moment objects or an array, whose
// first element is an array of moment objects.
function pickBy(fn, moments) {
var res, i;
if (moments.length === 1 && isArray(moments[0])) {
moments = moments[0];
}
if (!moments.length) {
return createLocal();
}
res = moments[0];
for (i = 1; i < moments.length; ++i) {
if (!moments[i].isValid() || moments[i][fn](res)) {
res = moments[i];
}
}
return res;
}
// TODO: Use [].sort instead?
function min () {
var args = [].slice.call(arguments, 0);
return pickBy('isBefore', args);
}
function max () {
var args = [].slice.call(arguments, 0);
return pickBy('isAfter', args);
}
var now = function () {
return Date.now ? Date.now() : +(new Date());
};
var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];
function isDurationValid(m) {
for (var key in m) {
if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {
return false;
}
}
var unitHasDecimal = false;
for (var i = 0; i < ordering.length; ++i) {
if (m[ordering[i]]) {
if (unitHasDecimal) {
return false; // only allow non-integers for smallest unit
}
if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {
unitHasDecimal = true;
}
}
}
return true;
}
function isValid$1() {
return this._isValid;
}
function createInvalid$1() {
return createDuration(NaN);
}
function Duration (duration) {
var normalizedInput = normalizeObjectUnits(duration),
years = normalizedInput.year || 0,
quarters = normalizedInput.quarter || 0,
months = normalizedInput.month || 0,
weeks = normalizedInput.week || normalizedInput.isoWeek || 0,
days = normalizedInput.day || 0,
hours = normalizedInput.hour || 0,
minutes = normalizedInput.minute || 0,
seconds = normalizedInput.second || 0,
milliseconds = normalizedInput.millisecond || 0;
this._isValid = isDurationValid(normalizedInput);
// representation for dateAddRemove
this._milliseconds = +milliseconds +
seconds * 1e3 + // 1000
minutes * 6e4 + // 1000 * 60
hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
// Because of dateAddRemove treats 24 hours as different from a
// day when working around DST, we need to store them separately
this._days = +days +
weeks * 7;
// It is impossible to translate months into days without knowing
// which months you are are talking about, so we have to store
// it separately.
this._months = +months +
quarters * 3 +
years * 12;
this._data = {};
this._locale = getLocale();
this._bubble();
}
function isDuration (obj) {
return obj instanceof Duration;
}
function absRound (number) {
if (number < 0) {
return Math.round(-1 * number) * -1;
} else {
return Math.round(number);
}
}
// FORMATTING
function offset (token, separator) {
addFormatToken(token, 0, 0, function () {
var offset = this.utcOffset();
var sign = '+';
if (offset < 0) {
offset = -offset;
sign = '-';
}
return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);
});
}
offset('Z', ':');
offset('ZZ', '');
// PARSING
addRegexToken('Z', matchShortOffset);
addRegexToken('ZZ', matchShortOffset);
addParseToken(['Z', 'ZZ'], function (input, array, config) {
config._useUTC = true;
config._tzm = offsetFromString(matchShortOffset, input);
});
// HELPERS
// timezone chunker
// '+10:00' > ['10', '00']
// '-1530' > ['-15', '30']
var chunkOffset = /([\+\-]|\d\d)/gi;
function offsetFromString(matcher, string) {
var matches = (string || '').match(matcher);
if (matches === null) {
return null;
}
var chunk = matches[matches.length - 1] || [];
var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];
var minutes = +(parts[1] * 60) + toInt(parts[2]);
return minutes === 0 ?
0 :
parts[0] === '+' ? minutes : -minutes;
}
// Return a moment from input, that is local/utc/zone equivalent to model.
function cloneWithOffset(input, model) {
var res, diff;
if (model._isUTC) {
res = model.clone();
diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();
// Use low-level api, because this fn is low-level api.
res._d.setTime(res._d.valueOf() + diff);
hooks.updateOffset(res, false);
return res;
} else {
return createLocal(input).local();
}
}
function getDateOffset (m) {
// On Firefox.24 Date#getTimezoneOffset returns a floating point.
// https://github.com/moment/moment/pull/1871
return -Math.round(m._d.getTimezoneOffset() / 15) * 15;
}
// HOOKS
// This function will be called whenever a moment is mutated.
// It is intended to keep the offset in sync with the timezone.
hooks.updateOffset = function () {};
// MOMENTS
// keepLocalTime = true means only change the timezone, without
// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
// +0200, so we adjust the time as needed, to be valid.
//
// Keeping the time actually adds/subtracts (one hour)
// from the actual represented time. That is why we call updateOffset
// a second time. In case it wants us to change the offset again
// _changeInProgress == true case, then we have to adjust, because
// there is no such time in the given timezone.
function getSetOffset (input, keepLocalTime, keepMinutes) {
var offset = this._offset || 0,
localAdjust;
if (!this.isValid()) {
return input != null ? this : NaN;
}
if (input != null) {
if (typeof input === 'string') {
input = offsetFromString(matchShortOffset, input);
if (input === null) {
return this;
}
} else if (Math.abs(input) < 16 && !keepMinutes) {
input = input * 60;
}
if (!this._isUTC && keepLocalTime) {
localAdjust = getDateOffset(this);
}
this._offset = input;
this._isUTC = true;
if (localAdjust != null) {
this.add(localAdjust, 'm');
}
if (offset !== input) {
if (!keepLocalTime || this._changeInProgress) {
addSubtract(this, createDuration(input - offset, 'm'), 1, false);
} else if (!this._changeInProgress) {
this._changeInProgress = true;
hooks.updateOffset(this, true);
this._changeInProgress = null;
}
}
return this;
} else {
return this._isUTC ? offset : getDateOffset(this);
}
}
function getSetZone (input, keepLocalTime) {
if (input != null) {
if (typeof input !== 'string') {
input = -input;
}
this.utcOffset(input, keepLocalTime);
return this;
} else {
return -this.utcOffset();
}
}
function setOffsetToUTC (keepLocalTime) {
return this.utcOffset(0, keepLocalTime);
}
function setOffsetToLocal (keepLocalTime) {
if (this._isUTC) {
this.utcOffset(0, keepLocalTime);
this._isUTC = false;
if (keepLocalTime) {
this.subtract(getDateOffset(this), 'm');
}
}
return this;
}
function setOffsetToParsedOffset () {
if (this._tzm != null) {
this.utcOffset(this._tzm, false, true);
} else if (typeof this._i === 'string') {
var tZone = offsetFromString(matchOffset, this._i);
if (tZone != null) {
this.utcOffset(tZone);
}
else {
this.utcOffset(0, true);
}
}
return this;
}
function hasAlignedHourOffset (input) {
if (!this.isValid()) {
return false;
}
input = input ? createLocal(input).utcOffset() : 0;
return (this.utcOffset() - input) % 60 === 0;
}
function isDaylightSavingTime () {
return (
this.utcOffset() > this.clone().month(0).utcOffset() ||
this.utcOffset() > this.clone().month(5).utcOffset()
);
}
function isDaylightSavingTimeShifted () {
if (!isUndefined(this._isDSTShifted)) {
return this._isDSTShifted;
}
var c = {};
copyConfig(c, this);
c = prepareConfig(c);
if (c._a) {
var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);
this._isDSTShifted = this.isValid() &&
compareArrays(c._a, other.toArray()) > 0;
} else {
this._isDSTShifted = false;
}
return this._isDSTShifted;
}
function isLocal () {
return this.isValid() ? !this._isUTC : false;
}
function isUtcOffset () {
return this.isValid() ? this._isUTC : false;
}
function isUtc () {
return this.isValid() ? this._isUTC && this._offset === 0 : false;
}
// ASP.NET json date format regex
var aspNetRegex = /^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/;
// from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
// somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
// and further modified to allow for strings containing both week and day
var isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
function createDuration (input, key) {
var duration = input,
// matching against regexp is expensive, do it on demand
match = null,
sign,
ret,
diffRes;
if (isDuration(input)) {
duration = {
ms : input._milliseconds,
d : input._days,
M : input._months
};
} else if (isNumber(input)) {
duration = {};
if (key) {
duration[key] = input;
} else {
duration.milliseconds = input;
}
} else if (!!(match = aspNetRegex.exec(input))) {
sign = (match[1] === '-') ? -1 : 1;
duration = {
y : 0,
d : toInt(match[DATE]) * sign,
h : toInt(match[HOUR]) * sign,
m : toInt(match[MINUTE]) * sign,
s : toInt(match[SECOND]) * sign,
ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match
};
} else if (!!(match = isoRegex.exec(input))) {
sign = (match[1] === '-') ? -1 : 1;
duration = {
y : parseIso(match[2], sign),
M : parseIso(match[3], sign),
w : parseIso(match[4], sign),
d : parseIso(match[5], sign),
h : parseIso(match[6], sign),
m : parseIso(match[7], sign),
s : parseIso(match[8], sign)
};
} else if (duration == null) {// checks for null or undefined
duration = {};
} else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {
diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));
duration = {};
duration.ms = diffRes.milliseconds;
duration.M = diffRes.months;
}
ret = new Duration(duration);
if (isDuration(input) && hasOwnProp(input, '_locale')) {
ret._locale = input._locale;
}
return ret;
}
createDuration.fn = Duration.prototype;
createDuration.invalid = createInvalid$1;
function parseIso (inp, sign) {
// We'd normally use ~~inp for this, but unfortunately it also
// converts floats to ints.
// inp may be undefined, so careful calling replace on it.
var res = inp && parseFloat(inp.replace(',', '.'));
// apply sign while we're at it
return (isNaN(res) ? 0 : res) * sign;
}
function positiveMomentsDifference(base, other) {
var res = {};
res.months = other.month() - base.month() +
(other.year() - base.year()) * 12;
if (base.clone().add(res.months, 'M').isAfter(other)) {
--res.months;
}
res.milliseconds = +other - +(base.clone().add(res.months, 'M'));
return res;
}
function momentsDifference(base, other) {
var res;
if (!(base.isValid() && other.isValid())) {
return {milliseconds: 0, months: 0};
}
other = cloneWithOffset(other, base);
if (base.isBefore(other)) {
res = positiveMomentsDifference(base, other);
} else {
res = positiveMomentsDifference(other, base);
res.milliseconds = -res.milliseconds;
res.months = -res.months;
}
return res;
}
// TODO: remove 'name' arg after deprecation is removed
function createAdder(direction, name) {
return function (val, period) {
var dur, tmp;
//invert the arguments, but complain about it
if (period !== null && !isNaN(+period)) {
deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +
'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');
tmp = val; val = period; period = tmp;
}
val = typeof val === 'string' ? +val : val;
dur = createDuration(val, period);
addSubtract(this, dur, direction);
return this;
};
}
function addSubtract (mom, duration, isAdding, updateOffset) {
var milliseconds = duration._milliseconds,
days = absRound(duration._days),
months = absRound(duration._months);
if (!mom.isValid()) {
// No op
return;
}
updateOffset = updateOffset == null ? true : updateOffset;
if (months) {
setMonth(mom, get(mom, 'Month') + months * isAdding);
}
if (days) {
set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);
}
if (milliseconds) {
mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
}
if (updateOffset) {
hooks.updateOffset(mom, days || months);
}
}
var add = createAdder(1, 'add');
var subtract = createAdder(-1, 'subtract');
function getCalendarFormat(myMoment, now) {
var diff = myMoment.diff(now, 'days', true);
return diff < -6 ? 'sameElse' :
diff < -1 ? 'lastWeek' :
diff < 0 ? 'lastDay' :
diff < 1 ? 'sameDay' :
diff < 2 ? 'nextDay' :
diff < 7 ? 'nextWeek' : 'sameElse';
}
function calendar$1 (time, formats) {
// We want to compare the start of today, vs this.
// Getting start-of-today depends on whether we're local/utc/offset or not.
var now = time || createLocal(),
sod = cloneWithOffset(now, this).startOf('day'),
format = hooks.calendarFormat(this, sod) || 'sameElse';
var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);
return this.format(output || this.localeData().calendar(format, this, createLocal(now)));
}
function clone () {
return new Moment(this);
}
function isAfter (input, units) {
var localInput = isMoment(input) ? input : createLocal(input);
if (!(this.isValid() && localInput.isValid())) {
return false;
}
units = normalizeUnits(units) || 'millisecond';
if (units === 'millisecond') {
return this.valueOf() > localInput.valueOf();
} else {
return localInput.valueOf() < this.clone().startOf(units).valueOf();
}
}
function isBefore (input, units) {
var localInput = isMoment(input) ? input : createLocal(input);
if (!(this.isValid() && localInput.isValid())) {
return false;
}
units = normalizeUnits(units) || 'millisecond';
if (units === 'millisecond') {
return this.valueOf() < localInput.valueOf();
} else {
return this.clone().endOf(units).valueOf() < localInput.valueOf();
}
}
function isBetween (from, to, units, inclusivity) {
var localFrom = isMoment(from) ? from : createLocal(from),
localTo = isMoment(to) ? to : createLocal(to);
if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {
return false;
}
inclusivity = inclusivity || '()';
return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) &&
(inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));
}
function isSame (input, units) {
var localInput = isMoment(input) ? input : createLocal(input),
inputMs;
if (!(this.isValid() && localInput.isValid())) {
return false;
}
units = normalizeUnits(units) || 'millisecond';
if (units === 'millisecond') {
return this.valueOf() === localInput.valueOf();
} else {
inputMs = localInput.valueOf();
return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();
}
}
function isSameOrAfter (input, units) {
return this.isSame(input, units) || this.isAfter(input, units);
}
function isSameOrBefore (input, units) {
return this.isSame(input, units) || this.isBefore(input, units);
}
function diff (input, units, asFloat) {
var that,
zoneDelta,
output;
if (!this.isValid()) {
return NaN;
}
that = cloneWithOffset(input, this);
if (!that.isValid()) {
return NaN;
}
zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
units = normalizeUnits(units);
switch (units) {
case 'year': output = monthDiff(this, that) / 12; break;
case 'month': output = monthDiff(this, that); break;
case 'quarter': output = monthDiff(this, that) / 3; break;
case 'second': output = (this - that) / 1e3; break; // 1000
case 'minute': output = (this - that) / 6e4; break; // 1000 * 60
case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60
case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst
case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst
default: output = this - that;
}
return asFloat ? output : absFloor(output);
}
function monthDiff (a, b) {
// difference in months
var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),
// b is in (anchor - 1 month, anchor + 1 month)
anchor = a.clone().add(wholeMonthDiff, 'months'),
anchor2, adjust;
if (b - anchor < 0) {
anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
// linear across the month
adjust = (b - anchor) / (anchor - anchor2);
} else {
anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
// linear across the month
adjust = (b - anchor) / (anchor2 - anchor);
}
//check for negative zero, return zero if negative zero
return -(wholeMonthDiff + adjust) || 0;
}
hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';
function toString () {
return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
}
function toISOString(keepOffset) {
if (!this.isValid()) {
return null;
}
var utc = keepOffset !== true;
var m = utc ? this.clone().utc() : this;
if (m.year() < 0 || m.year() > 9999) {
return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');
}
if (isFunction(Date.prototype.toISOString)) {
// native implementation is ~50x faster, use it when we can
if (utc) {
return this.toDate().toISOString();
} else {
return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));
}
}
return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');
}
/**
* Return a human readable representation of a moment that can
* also be evaluated to get a new moment which is the same
*
* @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects
*/
function inspect () {
if (!this.isValid()) {
return 'moment.invalid(/* ' + this._i + ' */)';
}
var func = 'moment';
var zone = '';
if (!this.isLocal()) {
func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';
zone = 'Z';
}
var prefix = '[' + func + '("]';
var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';
var datetime = '-MM-DD[T]HH:mm:ss.SSS';
var suffix = zone + '[")]';
return this.format(prefix + year + datetime + suffix);
}
function format (inputString) {
if (!inputString) {
inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;
}
var output = formatMoment(this, inputString);
return this.localeData().postformat(output);
}
function from (time, withoutSuffix) {
if (this.isValid() &&
((isMoment(time) && time.isValid()) ||
createLocal(time).isValid())) {
return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);
} else {
return this.localeData().invalidDate();
}
}
function fromNow (withoutSuffix) {
return this.from(createLocal(), withoutSuffix);
}
function to (time, withoutSuffix) {
if (this.isValid() &&
((isMoment(time) && time.isValid()) ||
createLocal(time).isValid())) {
return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);
} else {
return this.localeData().invalidDate();
}
}
function toNow (withoutSuffix) {
return this.to(createLocal(), withoutSuffix);
}
// If passed a locale key, it will set the locale for this
// instance. Otherwise, it will return the locale configuration
// variables for this instance.
function locale (key) {
var newLocaleData;
if (key === undefined) {
return this._locale._abbr;
} else {
newLocaleData = getLocale(key);
if (newLocaleData != null) {
this._locale = newLocaleData;
}
return this;
}
}
var lang = deprecate(
'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
function (key) {
if (key === undefined) {
return this.localeData();
} else {
return this.locale(key);
}
}
);
function localeData () {
return this._locale;
}
var MS_PER_SECOND = 1000;
var MS_PER_MINUTE = 60 * MS_PER_SECOND;
var MS_PER_HOUR = 60 * MS_PER_MINUTE;
var MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;
// actual modulo - handles negative numbers (for dates before 1970):
function mod$1(dividend, divisor) {
return (dividend % divisor + divisor) % divisor;
}
function localStartOfDate(y, m, d) {
// the date constructor remaps years 0-99 to 1900-1999
if (y < 100 && y >= 0) {
// preserve leap years using a full 400 year cycle, then reset
return new Date(y + 400, m, d) - MS_PER_400_YEARS;
} else {
return new Date(y, m, d).valueOf();
}
}
function utcStartOfDate(y, m, d) {
// Date.UTC remaps years 0-99 to 1900-1999
if (y < 100 && y >= 0) {
// preserve leap years using a full 400 year cycle, then reset
return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;
} else {
return Date.UTC(y, m, d);
}
}
function startOf (units) {
var time;
units = normalizeUnits(units);
if (units === undefined || units === 'millisecond' || !this.isValid()) {
return this;
}
var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
switch (units) {
case 'year':
time = startOfDate(this.year(), 0, 1);
break;
case 'quarter':
time = startOfDate(this.year(), this.month() - this.month() % 3, 1);
break;
case 'month':
time = startOfDate(this.year(), this.month(), 1);
break;
case 'week':
time = startOfDate(this.year(), this.month(), this.date() - this.weekday());
break;
case 'isoWeek':
time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));
break;
case 'day':
case 'date':
time = startOfDate(this.year(), this.month(), this.date());
break;
case 'hour':
time = this._d.valueOf();
time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR);
break;
case 'minute':
time = this._d.valueOf();
time -= mod$1(time, MS_PER_MINUTE);
break;
case 'second':
time = this._d.valueOf();
time -= mod$1(time, MS_PER_SECOND);
break;
}
this._d.setTime(time);
hooks.updateOffset(this, true);
return this;
}
function endOf (units) {
var time;
units = normalizeUnits(units);
if (units === undefined || units === 'millisecond' || !this.isValid()) {
return this;
}
var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
switch (units) {
case 'year':
time = startOfDate(this.year() + 1, 0, 1) - 1;
break;
case 'quarter':
time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;
break;
case 'month':
time = startOfDate(this.year(), this.month() + 1, 1) - 1;
break;
case 'week':
time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;
break;
case 'isoWeek':
time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1;
break;
case 'day':
case 'date':
time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;
break;
case 'hour':
time = this._d.valueOf();
time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1;
break;
case 'minute':
time = this._d.valueOf();
time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;
break;
case 'second':
time = this._d.valueOf();
time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;
break;
}
this._d.setTime(time);
hooks.updateOffset(this, true);
return this;
}
function valueOf () {
return this._d.valueOf() - ((this._offset || 0) * 60000);
}
function unix () {
return Math.floor(this.valueOf() / 1000);
}
function toDate () {
return new Date(this.valueOf());
}
function toArray () {
var m = this;
return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];
}
function toObject () {
var m = this;
return {
years: m.year(),
months: m.month(),
date: m.date(),
hours: m.hours(),
minutes: m.minutes(),
seconds: m.seconds(),
milliseconds: m.milliseconds()
};
}
function toJSON () {
// new Date(NaN).toJSON() === null
return this.isValid() ? this.toISOString() : null;
}
function isValid$2 () {
return isValid(this);
}
function parsingFlags () {
return extend({}, getParsingFlags(this));
}
function invalidAt () {
return getParsingFlags(this).overflow;
}
function creationData() {
return {
input: this._i,
format: this._f,
locale: this._locale,
isUTC: this._isUTC,
strict: this._strict
};
}
// FORMATTING
addFormatToken(0, ['gg', 2], 0, function () {
return this.weekYear() % 100;
});
addFormatToken(0, ['GG', 2], 0, function () {
return this.isoWeekYear() % 100;
});
function addWeekYearFormatToken (token, getter) {
addFormatToken(0, [token, token.length], 0, getter);
}
addWeekYearFormatToken('gggg', 'weekYear');
addWeekYearFormatToken('ggggg', 'weekYear');
addWeekYearFormatToken('GGGG', 'isoWeekYear');
addWeekYearFormatToken('GGGGG', 'isoWeekYear');
// ALIASES
addUnitAlias('weekYear', 'gg');
addUnitAlias('isoWeekYear', 'GG');
// PRIORITY
addUnitPriority('weekYear', 1);
addUnitPriority('isoWeekYear', 1);
// PARSING
addRegexToken('G', matchSigned);
addRegexToken('g', matchSigned);
addRegexToken('GG', match1to2, match2);
addRegexToken('gg', match1to2, match2);
addRegexToken('GGGG', match1to4, match4);
addRegexToken('gggg', match1to4, match4);
addRegexToken('GGGGG', match1to6, match6);
addRegexToken('ggggg', match1to6, match6);
addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {
week[token.substr(0, 2)] = toInt(input);
});
addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
week[token] = hooks.parseTwoDigitYear(input);
});
// MOMENTS
function getSetWeekYear (input) {
return getSetWeekYearHelper.call(this,
input,
this.week(),
this.weekday(),
this.localeData()._week.dow,
this.localeData()._week.doy);
}
function getSetISOWeekYear (input) {
return getSetWeekYearHelper.call(this,
input, this.isoWeek(), this.isoWeekday(), 1, 4);
}
function getISOWeeksInYear () {
return weeksInYear(this.year(), 1, 4);
}
function getWeeksInYear () {
var weekInfo = this.localeData()._week;
return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
}
function getSetWeekYearHelper(input, week, weekday, dow, doy) {
var weeksTarget;
if (input == null) {
return weekOfYear(this, dow, doy).year;
} else {
weeksTarget = weeksInYear(input, dow, doy);
if (week > weeksTarget) {
week = weeksTarget;
}
return setWeekAll.call(this, input, week, weekday, dow, doy);
}
}
function setWeekAll(weekYear, week, weekday, dow, doy) {
var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
this.year(date.getUTCFullYear());
this.month(date.getUTCMonth());
this.date(date.getUTCDate());
return this;
}
// FORMATTING
addFormatToken('Q', 0, 'Qo', 'quarter');
// ALIASES
addUnitAlias('quarter', 'Q');
// PRIORITY
addUnitPriority('quarter', 7);
// PARSING
addRegexToken('Q', match1);
addParseToken('Q', function (input, array) {
array[MONTH] = (toInt(input) - 1) * 3;
});
// MOMENTS
function getSetQuarter (input) {
return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);
}
// FORMATTING
addFormatToken('D', ['DD', 2], 'Do', 'date');
// ALIASES
addUnitAlias('date', 'D');
// PRIORITY
addUnitPriority('date', 9);
// PARSING
addRegexToken('D', match1to2);
addRegexToken('DD', match1to2, match2);
addRegexToken('Do', function (isStrict, locale) {
// TODO: Remove "ordinalParse" fallback in next major release.
return isStrict ?
(locale._dayOfMonthOrdinalParse || locale._ordinalParse) :
locale._dayOfMonthOrdinalParseLenient;
});
addParseToken(['D', 'DD'], DATE);
addParseToken('Do', function (input, array) {
array[DATE] = toInt(input.match(match1to2)[0]);
});
// MOMENTS
var getSetDayOfMonth = makeGetSet('Date', true);
// FORMATTING
addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
// ALIASES
addUnitAlias('dayOfYear', 'DDD');
// PRIORITY
addUnitPriority('dayOfYear', 4);
// PARSING
addRegexToken('DDD', match1to3);
addRegexToken('DDDD', match3);
addParseToken(['DDD', 'DDDD'], function (input, array, config) {
config._dayOfYear = toInt(input);
});
// HELPERS
// MOMENTS
function getSetDayOfYear (input) {
var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;
return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');
}
// FORMATTING
addFormatToken('m', ['mm', 2], 0, 'minute');
// ALIASES
addUnitAlias('minute', 'm');
// PRIORITY
addUnitPriority('minute', 14);
// PARSING
addRegexToken('m', match1to2);
addRegexToken('mm', match1to2, match2);
addParseToken(['m', 'mm'], MINUTE);
// MOMENTS
var getSetMinute = makeGetSet('Minutes', false);
// FORMATTING
addFormatToken('s', ['ss', 2], 0, 'second');
// ALIASES
addUnitAlias('second', 's');
// PRIORITY
addUnitPriority('second', 15);
// PARSING
addRegexToken('s', match1to2);
addRegexToken('ss', match1to2, match2);
addParseToken(['s', 'ss'], SECOND);
// MOMENTS
var getSetSecond = makeGetSet('Seconds', false);
// FORMATTING
addFormatToken('S', 0, 0, function () {
return ~~(this.millisecond() / 100);
});
addFormatToken(0, ['SS', 2], 0, function () {
return ~~(this.millisecond() / 10);
});
addFormatToken(0, ['SSS', 3], 0, 'millisecond');
addFormatToken(0, ['SSSS', 4], 0, function () {
return this.millisecond() * 10;
});
addFormatToken(0, ['SSSSS', 5], 0, function () {
return this.millisecond() * 100;
});
addFormatToken(0, ['SSSSSS', 6], 0, function () {
return this.millisecond() * 1000;
});
addFormatToken(0, ['SSSSSSS', 7], 0, function () {
return this.millisecond() * 10000;
});
addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
return this.millisecond() * 100000;
});
addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
return this.millisecond() * 1000000;
});
// ALIASES
addUnitAlias('millisecond', 'ms');
// PRIORITY
addUnitPriority('millisecond', 16);
// PARSING
addRegexToken('S', match1to3, match1);
addRegexToken('SS', match1to3, match2);
addRegexToken('SSS', match1to3, match3);
var token;
for (token = 'SSSS'; token.length <= 9; token += 'S') {
addRegexToken(token, matchUnsigned);
}
function parseMs(input, array) {
array[MILLISECOND] = toInt(('0.' + input) * 1000);
}
for (token = 'S'; token.length <= 9; token += 'S') {
addParseToken(token, parseMs);
}
// MOMENTS
var getSetMillisecond = makeGetSet('Milliseconds', false);
// FORMATTING
addFormatToken('z', 0, 0, 'zoneAbbr');
addFormatToken('zz', 0, 0, 'zoneName');
// MOMENTS
function getZoneAbbr () {
return this._isUTC ? 'UTC' : '';
}
function getZoneName () {
return this._isUTC ? 'Coordinated Universal Time' : '';
}
var proto = Moment.prototype;
proto.add = add;
proto.calendar = calendar$1;
proto.clone = clone;
proto.diff = diff;
proto.endOf = endOf;
proto.format = format;
proto.from = from;
proto.fromNow = fromNow;
proto.to = to;
proto.toNow = toNow;
proto.get = stringGet;
proto.invalidAt = invalidAt;
proto.isAfter = isAfter;
proto.isBefore = isBefore;
proto.isBetween = isBetween;
proto.isSame = isSame;
proto.isSameOrAfter = isSameOrAfter;
proto.isSameOrBefore = isSameOrBefore;
proto.isValid = isValid$2;
proto.lang = lang;
proto.locale = locale;
proto.localeData = localeData;
proto.max = prototypeMax;
proto.min = prototypeMin;
proto.parsingFlags = parsingFlags;
proto.set = stringSet;
proto.startOf = startOf;
proto.subtract = subtract;
proto.toArray = toArray;
proto.toObject = toObject;
proto.toDate = toDate;
proto.toISOString = toISOString;
proto.inspect = inspect;
proto.toJSON = toJSON;
proto.toString = toString;
proto.unix = unix;
proto.valueOf = valueOf;
proto.creationData = creationData;
proto.year = getSetYear;
proto.isLeapYear = getIsLeapYear;
proto.weekYear = getSetWeekYear;
proto.isoWeekYear = getSetISOWeekYear;
proto.quarter = proto.quarters = getSetQuarter;
proto.month = getSetMonth;
proto.daysInMonth = getDaysInMonth;
proto.week = proto.weeks = getSetWeek;
proto.isoWeek = proto.isoWeeks = getSetISOWeek;
proto.weeksInYear = getWeeksInYear;
proto.isoWeeksInYear = getISOWeeksInYear;
proto.date = getSetDayOfMonth;
proto.day = proto.days = getSetDayOfWeek;
proto.weekday = getSetLocaleDayOfWeek;
proto.isoWeekday = getSetISODayOfWeek;
proto.dayOfYear = getSetDayOfYear;
proto.hour = proto.hours = getSetHour;
proto.minute = proto.minutes = getSetMinute;
proto.second = proto.seconds = getSetSecond;
proto.millisecond = proto.milliseconds = getSetMillisecond;
proto.utcOffset = getSetOffset;
proto.utc = setOffsetToUTC;
proto.local = setOffsetToLocal;
proto.parseZone = setOffsetToParsedOffset;
proto.hasAlignedHourOffset = hasAlignedHourOffset;
proto.isDST = isDaylightSavingTime;
proto.isLocal = isLocal;
proto.isUtcOffset = isUtcOffset;
proto.isUtc = isUtc;
proto.isUTC = isUtc;
proto.zoneAbbr = getZoneAbbr;
proto.zoneName = getZoneName;
proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);
proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);
proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);
proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);
proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);
function createUnix (input) {
return createLocal(input * 1000);
}
function createInZone () {
return createLocal.apply(null, arguments).parseZone();
}
function preParsePostFormat (string) {
return string;
}
var proto$1 = Locale.prototype;
proto$1.calendar = calendar;
proto$1.longDateFormat = longDateFormat;
proto$1.invalidDate = invalidDate;
proto$1.ordinal = ordinal;
proto$1.preparse = preParsePostFormat;
proto$1.postformat = preParsePostFormat;
proto$1.relativeTime = relativeTime;
proto$1.pastFuture = pastFuture;
proto$1.set = set;
proto$1.months = localeMonths;
proto$1.monthsShort = localeMonthsShort;
proto$1.monthsParse = localeMonthsParse;
proto$1.monthsRegex = monthsRegex;
proto$1.monthsShortRegex = monthsShortRegex;
proto$1.week = localeWeek;
proto$1.firstDayOfYear = localeFirstDayOfYear;
proto$1.firstDayOfWeek = localeFirstDayOfWeek;
proto$1.weekdays = localeWeekdays;
proto$1.weekdaysMin = localeWeekdaysMin;
proto$1.weekdaysShort = localeWeekdaysShort;
proto$1.weekdaysParse = localeWeekdaysParse;
proto$1.weekdaysRegex = weekdaysRegex;
proto$1.weekdaysShortRegex = weekdaysShortRegex;
proto$1.weekdaysMinRegex = weekdaysMinRegex;
proto$1.isPM = localeIsPM;
proto$1.meridiem = localeMeridiem;
function get$1 (format, index, field, setter) {
var locale = getLocale();
var utc = createUTC().set(setter, index);
return locale[field](utc, format);
}
function listMonthsImpl (format, index, field) {
if (isNumber(format)) {
index = format;
format = undefined;
}
format = format || '';
if (index != null) {
return get$1(format, index, field, 'month');
}
var i;
var out = [];
for (i = 0; i < 12; i++) {
out[i] = get$1(format, i, field, 'month');
}
return out;
}
// ()
// (5)
// (fmt, 5)
// (fmt)
// (true)
// (true, 5)
// (true, fmt, 5)
// (true, fmt)
function listWeekdaysImpl (localeSorted, format, index, field) {
if (typeof localeSorted === 'boolean') {
if (isNumber(format)) {
index = format;
format = undefined;
}
format = format || '';
} else {
format = localeSorted;
index = format;
localeSorted = false;
if (isNumber(format)) {
index = format;
format = undefined;
}
format = format || '';
}
var locale = getLocale(),
shift = localeSorted ? locale._week.dow : 0;
if (index != null) {
return get$1(format, (index + shift) % 7, field, 'day');
}
var i;
var out = [];
for (i = 0; i < 7; i++) {
out[i] = get$1(format, (i + shift) % 7, field, 'day');
}
return out;
}
function listMonths (format, index) {
return listMonthsImpl(format, index, 'months');
}
function listMonthsShort (format, index) {
return listMonthsImpl(format, index, 'monthsShort');
}
function listWeekdays (localeSorted, format, index) {
return listWeekdaysImpl(localeSorted, format, index, 'weekdays');
}
function listWeekdaysShort (localeSorted, format, index) {
return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');
}
function listWeekdaysMin (localeSorted, format, index) {
return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');
}
getSetGlobalLocale('en', {
dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
ordinal : function (number) {
var b = number % 10,
output = (toInt(number % 100 / 10) === 1) ? 'th' :
(b === 1) ? 'st' :
(b === 2) ? 'nd' :
(b === 3) ? 'rd' : 'th';
return number + output;
}
});
// Side effect imports
hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);
hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);
var mathAbs = Math.abs;
function abs () {
var data = this._data;
this._milliseconds = mathAbs(this._milliseconds);
this._days = mathAbs(this._days);
this._months = mathAbs(this._months);
data.milliseconds = mathAbs(data.milliseconds);
data.seconds = mathAbs(data.seconds);
data.minutes = mathAbs(data.minutes);
data.hours = mathAbs(data.hours);
data.months = mathAbs(data.months);
data.years = mathAbs(data.years);
return this;
}
function addSubtract$1 (duration, input, value, direction) {
var other = createDuration(input, value);
duration._milliseconds += direction * other._milliseconds;
duration._days += direction * other._days;
duration._months += direction * other._months;
return duration._bubble();
}
// supports only 2.0-style add(1, 's') or add(duration)
function add$1 (input, value) {
return addSubtract$1(this, input, value, 1);
}
// supports only 2.0-style subtract(1, 's') or subtract(duration)
function subtract$1 (input, value) {
return addSubtract$1(this, input, value, -1);
}
function absCeil (number) {
if (number < 0) {
return Math.floor(number);
} else {
return Math.ceil(number);
}
}
function bubble () {
var milliseconds = this._milliseconds;
var days = this._days;
var months = this._months;
var data = this._data;
var seconds, minutes, hours, years, monthsFromDays;
// if we have a mix of positive and negative values, bubble down first
// check: https://github.com/moment/moment/issues/2166
if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||
(milliseconds <= 0 && days <= 0 && months <= 0))) {
milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
days = 0;
months = 0;
}
// The following code bubbles up values, see the tests for
// examples of what that means.
data.milliseconds = milliseconds % 1000;
seconds = absFloor(milliseconds / 1000);
data.seconds = seconds % 60;
minutes = absFloor(seconds / 60);
data.minutes = minutes % 60;
hours = absFloor(minutes / 60);
data.hours = hours % 24;
days += absFloor(hours / 24);
// convert days to months
monthsFromDays = absFloor(daysToMonths(days));
months += monthsFromDays;
days -= absCeil(monthsToDays(monthsFromDays));
// 12 months -> 1 year
years = absFloor(months / 12);
months %= 12;
data.days = days;
data.months = months;
data.years = years;
return this;
}
function daysToMonths (days) {
// 400 years have 146097 days (taking into account leap year rules)
// 400 years have 12 months === 4800
return days * 4800 / 146097;
}
function monthsToDays (months) {
// the reverse of daysToMonths
return months * 146097 / 4800;
}
function as (units) {
if (!this.isValid()) {
return NaN;
}
var days;
var months;
var milliseconds = this._milliseconds;
units = normalizeUnits(units);
if (units === 'month' || units === 'quarter' || units === 'year') {
days = this._days + milliseconds / 864e5;
months = this._months + daysToMonths(days);
switch (units) {
case 'month': return months;
case 'quarter': return months / 3;
case 'year': return months / 12;
}
} else {
// handle milliseconds separately because of floating point math errors (issue #1867)
days = this._days + Math.round(monthsToDays(this._months));
switch (units) {
case 'week' : return days / 7 + milliseconds / 6048e5;
case 'day' : return days + milliseconds / 864e5;
case 'hour' : return days * 24 + milliseconds / 36e5;
case 'minute' : return days * 1440 + milliseconds / 6e4;
case 'second' : return days * 86400 + milliseconds / 1000;
// Math.floor prevents floating point math errors here
case 'millisecond': return Math.floor(days * 864e5) + milliseconds;
default: throw new Error('Unknown unit ' + units);
}
}
}
// TODO: Use this.as('ms')?
function valueOf$1 () {
if (!this.isValid()) {
return NaN;
}
return (
this._milliseconds +
this._days * 864e5 +
(this._months % 12) * 2592e6 +
toInt(this._months / 12) * 31536e6
);
}
function makeAs (alias) {
return function () {
return this.as(alias);
};
}
var asMilliseconds = makeAs('ms');
var asSeconds = makeAs('s');
var asMinutes = makeAs('m');
var asHours = makeAs('h');
var asDays = makeAs('d');
var asWeeks = makeAs('w');
var asMonths = makeAs('M');
var asQuarters = makeAs('Q');
var asYears = makeAs('y');
function clone$1 () {
return createDuration(this);
}
function get$2 (units) {
units = normalizeUnits(units);
return this.isValid() ? this[units + 's']() : NaN;
}
function makeGetter(name) {
return function () {
return this.isValid() ? this._data[name] : NaN;
};
}
var milliseconds = makeGetter('milliseconds');
var seconds = makeGetter('seconds');
var minutes = makeGetter('minutes');
var hours = makeGetter('hours');
var days = makeGetter('days');
var months = makeGetter('months');
var years = makeGetter('years');
function weeks () {
return absFloor(this.days() / 7);
}
var round = Math.round;
var thresholds = {
ss: 44, // a few seconds to seconds
s : 45, // seconds to minute
m : 45, // minutes to hour
h : 22, // hours to day
d : 26, // days to month
M : 11 // months to year
};
// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
}
function relativeTime$1 (posNegDuration, withoutSuffix, locale) {
var duration = createDuration(posNegDuration).abs();
var seconds = round(duration.as('s'));
var minutes = round(duration.as('m'));
var hours = round(duration.as('h'));
var days = round(duration.as('d'));
var months = round(duration.as('M'));
var years = round(duration.as('y'));
var a = seconds <= thresholds.ss && ['s', seconds] ||
seconds < thresholds.s && ['ss', seconds] ||
minutes <= 1 && ['m'] ||
minutes < thresholds.m && ['mm', minutes] ||
hours <= 1 && ['h'] ||
hours < thresholds.h && ['hh', hours] ||
days <= 1 && ['d'] ||
days < thresholds.d && ['dd', days] ||
months <= 1 && ['M'] ||
months < thresholds.M && ['MM', months] ||
years <= 1 && ['y'] || ['yy', years];
a[2] = withoutSuffix;
a[3] = +posNegDuration > 0;
a[4] = locale;
return substituteTimeAgo.apply(null, a);
}
// This function allows you to set the rounding function for relative time strings
function getSetRelativeTimeRounding (roundingFunction) {
if (roundingFunction === undefined) {
return round;
}
if (typeof(roundingFunction) === 'function') {
round = roundingFunction;
return true;
}
return false;
}
// This function allows you to set a threshold for relative time strings
function getSetRelativeTimeThreshold (threshold, limit) {
if (thresholds[threshold] === undefined) {
return false;
}
if (limit === undefined) {
return thresholds[threshold];
}
thresholds[threshold] = limit;
if (threshold === 's') {
thresholds.ss = limit - 1;
}
return true;
}
function humanize (withSuffix) {
if (!this.isValid()) {
return this.localeData().invalidDate();
}
var locale = this.localeData();
var output = relativeTime$1(this, !withSuffix, locale);
if (withSuffix) {
output = locale.pastFuture(+this, output);
}
return locale.postformat(output);
}
var abs$1 = Math.abs;
function sign(x) {
return ((x > 0) - (x < 0)) || +x;
}
function toISOString$1() {
// for ISO strings we do not use the normal bubbling rules:
// * milliseconds bubble up until they become hours
// * days do not bubble at all
// * months bubble up until they become years
// This is because there is no context-free conversion between hours and days
// (think of clock changes)
// and also not between days and months (28-31 days per month)
if (!this.isValid()) {
return this.localeData().invalidDate();
}
var seconds = abs$1(this._milliseconds) / 1000;
var days = abs$1(this._days);
var months = abs$1(this._months);
var minutes, hours, years;
// 3600 seconds -> 60 minutes -> 1 hour
minutes = absFloor(seconds / 60);
hours = absFloor(minutes / 60);
seconds %= 60;
minutes %= 60;
// 12 months -> 1 year
years = absFloor(months / 12);
months %= 12;
// inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
var Y = years;
var M = months;
var D = days;
var h = hours;
var m = minutes;
var s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : '';
var total = this.asSeconds();
if (!total) {
// this is the same as C#'s (Noda) and python (isodate)...
// but not other JS (goog.date)
return 'P0D';
}
var totalSign = total < 0 ? '-' : '';
var ymSign = sign(this._months) !== sign(total) ? '-' : '';
var daysSign = sign(this._days) !== sign(total) ? '-' : '';
var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';
return totalSign + 'P' +
(Y ? ymSign + Y + 'Y' : '') +
(M ? ymSign + M + 'M' : '') +
(D ? daysSign + D + 'D' : '') +
((h || m || s) ? 'T' : '') +
(h ? hmsSign + h + 'H' : '') +
(m ? hmsSign + m + 'M' : '') +
(s ? hmsSign + s + 'S' : '');
}
var proto$2 = Duration.prototype;
proto$2.isValid = isValid$1;
proto$2.abs = abs;
proto$2.add = add$1;
proto$2.subtract = subtract$1;
proto$2.as = as;
proto$2.asMilliseconds = asMilliseconds;
proto$2.asSeconds = asSeconds;
proto$2.asMinutes = asMinutes;
proto$2.asHours = asHours;
proto$2.asDays = asDays;
proto$2.asWeeks = asWeeks;
proto$2.asMonths = asMonths;
proto$2.asQuarters = asQuarters;
proto$2.asYears = asYears;
proto$2.valueOf = valueOf$1;
proto$2._bubble = bubble;
proto$2.clone = clone$1;
proto$2.get = get$2;
proto$2.milliseconds = milliseconds;
proto$2.seconds = seconds;
proto$2.minutes = minutes;
proto$2.hours = hours;
proto$2.days = days;
proto$2.weeks = weeks;
proto$2.months = months;
proto$2.years = years;
proto$2.humanize = humanize;
proto$2.toISOString = toISOString$1;
proto$2.toString = toISOString$1;
proto$2.toJSON = toISOString$1;
proto$2.locale = locale;
proto$2.localeData = localeData;
proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);
proto$2.lang = lang;
// Side effect imports
// FORMATTING
addFormatToken('X', 0, 0, 'unix');
addFormatToken('x', 0, 0, 'valueOf');
// PARSING
addRegexToken('x', matchSigned);
addRegexToken('X', matchTimestamp);
addParseToken('X', function (input, array, config) {
config._d = new Date(parseFloat(input, 10) * 1000);
});
addParseToken('x', function (input, array, config) {
config._d = new Date(toInt(input));
});
// Side effect imports
hooks.version = '2.24.0';
setHookCallback(createLocal);
hooks.fn = proto;
hooks.min = min;
hooks.max = max;
hooks.now = now;
hooks.utc = createUTC;
hooks.unix = createUnix;
hooks.months = listMonths;
hooks.isDate = isDate;
hooks.locale = getSetGlobalLocale;
hooks.invalid = createInvalid;
hooks.duration = createDuration;
hooks.isMoment = isMoment;
hooks.weekdays = listWeekdays;
hooks.parseZone = createInZone;
hooks.localeData = getLocale;
hooks.isDuration = isDuration;
hooks.monthsShort = listMonthsShort;
hooks.weekdaysMin = listWeekdaysMin;
hooks.defineLocale = defineLocale;
hooks.updateLocale = updateLocale;
hooks.locales = listLocales;
hooks.weekdaysShort = listWeekdaysShort;
hooks.normalizeUnits = normalizeUnits;
hooks.relativeTimeRounding = getSetRelativeTimeRounding;
hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;
hooks.calendarFormat = getCalendarFormat;
hooks.prototype = proto;
// currently HTML5 input type only supports 24-hour formats
hooks.HTML5_FMT = {
DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type="datetime-local" />
DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type="datetime-local" step="1" />
DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type="datetime-local" step="0.001" />
DATE: 'YYYY-MM-DD', // <input type="date" />
TIME: 'HH:mm', // <input type="time" />
TIME_SECONDS: 'HH:mm:ss', // <input type="time" step="1" />
TIME_MS: 'HH:mm:ss.SSS', // <input type="time" step="0.001" />
WEEK: 'GGGG-[W]WW', // <input type="week" />
MONTH: 'YYYY-MM' // <input type="month" />
};
return hooks;
})));
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(18)(module)))
/***/ }),
/* 11 */
/***/ (function(module, exports, __webpack_require__) {
//! moment.js locale configuration
;(function (global, factory) {
true ? factory(__webpack_require__(10)) :
undefined
}(this, (function (moment) { 'use strict';
function processRelativeTime(number, withoutSuffix, key, isFuture) {
var format = {
'm': ['eine Minute', 'einer Minute'],
'h': ['eine Stunde', 'einer Stunde'],
'd': ['ein Tag', 'einem Tag'],
'dd': [number + ' Tage', number + ' Tagen'],
'M': ['ein Monat', 'einem Monat'],
'MM': [number + ' Monate', number + ' Monaten'],
'y': ['ein Jahr', 'einem Jahr'],
'yy': [number + ' Jahre', number + ' Jahren']
};
return withoutSuffix ? format[key][0] : format[key][1];
}
var de = moment.defineLocale('de', {
months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
monthsParseExact : true,
weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
LT: 'HH:mm',
LTS: 'HH:mm:ss',
L : 'DD.MM.YYYY',
LL : 'D. MMMM YYYY',
LLL : 'D. MMMM YYYY HH:mm',
LLLL : 'dddd, D. MMMM YYYY HH:mm'
},
calendar : {
sameDay: '[heute um] LT [Uhr]',
sameElse: 'L',
nextDay: '[morgen um] LT [Uhr]',
nextWeek: 'dddd [um] LT [Uhr]',
lastDay: '[gestern um] LT [Uhr]',
lastWeek: '[letzten] dddd [um] LT [Uhr]'
},
relativeTime : {
future : 'in %s',
past : 'vor %s',
s : 'ein paar Sekunden',
ss : '%d Sekunden',
m : processRelativeTime,
mm : '%d Minuten',
h : processRelativeTime,
hh : '%d Stunden',
d : processRelativeTime,
dd : processRelativeTime,
M : processRelativeTime,
MM : processRelativeTime,
y : processRelativeTime,
yy : processRelativeTime
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
return de;
})));
/***/ }),
/* 12 */
/***/ (function(module) {
module.exports = JSON.parse("{\"AAA\":\"Pacific/Tahiti\",\"AAB\":\"Australia/Brisbane\",\"AAC\":\"Africa/Cairo\",\"AAD\":\"Africa/Mogadishu\",\"AAE\":\"Africa/Algiers\",\"AAF\":\"America/New_York\",\"AAG\":\"America/Sao_Paulo\",\"AAH\":\"Europe/Berlin\",\"AAI\":\"America/Belem\",\"AAJ\":\"America/Paramaribo\",\"AAK\":\"Pacific/Tarawa\",\"AAL\":\"Europe/Copenhagen\",\"AAM\":\"Africa/Johannesburg\",\"AAN\":\"Asia/Dubai\",\"AAO\":\"America/Caracas\",\"AAP\":\"Asia/Makassar\",\"AAQ\":\"Europe/Moscow\",\"AAR\":\"Europe/Copenhagen\",\"AAS\":\"Asia/Jayapura\",\"AAT\":\"Asia/Shanghai\",\"AAU\":\"Pacific/Apia\",\"AAV\":\"Asia/Manila\",\"AAW\":\"Asia/Karachi\",\"AAX\":\"America/Sao_Paulo\",\"AAY\":\"Asia/Aden\",\"ABA\":\"Asia/Krasnoyarsk\",\"ABB\":\"Africa/Lagos\",\"ABC\":\"Europe/Madrid\",\"ABD\":\"Asia/Tehran\",\"ABE\":\"America/New_York\",\"ABF\":\"Pacific/Tarawa\",\"ABG\":\"Australia/Brisbane\",\"ABH\":\"Australia/Brisbane\",\"ABI\":\"America/Chicago\",\"ABJ\":\"Africa/Abidjan\",\"ABK\":\"Africa/Addis_Ababa\",\"ABL\":\"America/Anchorage\",\"ABM\":\"Australia/Brisbane\",\"ABN\":\"America/Paramaribo\",\"ABO\":\"Africa/Abidjan\",\"ABP\":\"Pacific/Port_Moresby\",\"ABQ\":\"America/Denver\",\"ABR\":\"America/Chicago\",\"ABS\":\"Africa/Cairo\",\"ABT\":\"Asia/Riyadh\",\"ABU\":\"Asia/Makassar\",\"ABV\":\"Africa/Lagos\",\"ABW\":\"Pacific/Port_Moresby\",\"ABX\":\"Australia/Sydney\",\"ABY\":\"America/New_York\",\"ABZ\":\"Europe/London\",\"ACA\":\"America/Mexico_City\",\"ACB\":\"America/New_York\",\"ACC\":\"Africa/Accra\",\"ACD\":\"America/Bogota\",\"ACE\":\"Atlantic/Canary\",\"ACH\":\"Europe/Zurich\",\"ACI\":\"Europe/London\",\"ACJ\":\"Asia/Colombo\",\"ACK\":\"America/New_York\",\"ACL\":\"America/Bogota\",\"ACM\":\"America/Bogota\",\"ACN\":\"America/Matamoros\",\"ACO\":\"Europe/Zurich\",\"ACP\":\"Asia/Tehran\",\"ACR\":\"America/Bogota\",\"ACS\":\"Asia/Krasnoyarsk\",\"ACT\":\"America/Chicago\",\"ACU\":\"America/Panama\",\"ACV\":\"America/Los_Angeles\",\"ACX\":\"Asia/Shanghai\",\"ACY\":\"America/New_York\",\"ACZ\":\"Asia/Tehran\",\"ADA\":\"Europe/Istanbul\",\"ADB\":\"Europe/Istanbul\",\"ADC\":\"Pacific/Port_Moresby\",\"ADD\":\"Africa/Addis_Ababa\",\"ADE\":\"Asia/Aden\",\"ADF\":\"Europe/Istanbul\",\"ADG\":\"America/New_York\",\"ADH\":\"Asia/Yakutsk\",\"ADI\":\"Africa/Windhoek\",\"ADJ\":\"Asia/Amman\",\"ADK\":\"America/Adak\",\"ADL\":\"Australia/Adelaide\",\"ADM\":\"America/Chicago\",\"ADN\":\"America/Bogota\",\"ADO\":\"Australia/Adelaide\",\"ADP\":\"Asia/Colombo\",\"ADQ\":\"America/Anchorage\",\"ADR\":\"America/New_York\",\"ADS\":\"America/Chicago\",\"ADT\":\"America/Chicago\",\"ADU\":\"Asia/Tehran\",\"ADV\":\"Africa/Khartoum\",\"ADW\":\"America/New_York\",\"ADX\":\"Europe/London\",\"ADY\":\"Africa/Johannesburg\",\"ADZ\":\"America/Bogota\",\"AEA\":\"Pacific/Tarawa\",\"AEB\":\"Asia/Shanghai\",\"AED\":\"America/Anchorage\",\"AEE\":\"Africa/Juba\",\"AEG\":\"Asia/Jakarta\",\"AEH\":\"Africa/Ndjamena\",\"AEI\":\"Europe/Madrid\",\"AEK\":\"Pacific/Port_Moresby\",\"AEL\":\"America/Chicago\",\"AEM\":\"Asia/Vladivostok\",\"AEO\":\"Africa/Nouakchott\",\"AEP\":\"America/Argentina/Buenos_Aires\",\"AEQ\":\"Asia/Shanghai\",\"AER\":\"Europe/Moscow\",\"AES\":\"Europe/Oslo\",\"AET\":\"America/Anchorage\",\"AEU\":\"Asia/Tehran\",\"AEX\":\"America/Chicago\",\"AEY\":\"Atlantic/Reykjavik\",\"AFA\":\"America/Argentina/Buenos_Aires\",\"AFD\":\"Africa/Johannesburg\",\"AFF\":\"America/Denver\",\"AFI\":\"America/Bogota\",\"AFL\":\"America/Campo_Grande\",\"AFN\":\"America/New_York\",\"AFO\":\"America/Denver\",\"AFR\":\"Pacific/Port_Moresby\",\"AFS\":\"Asia/Tashkent\",\"AFT\":\"Pacific/Guadalcanal\",\"AFW\":\"America/Chicago\",\"AFY\":\"Europe/Istanbul\",\"AFZ\":\"Asia/Tehran\",\"AGA\":\"Africa/Casablanca\",\"AGB\":\"Europe/Berlin\",\"AGC\":\"America/New_York\",\"AGD\":\"Asia/Jayapura\",\"AGE\":\"Europe/Berlin\",\"AGF\":\"Europe/Paris\",\"AGG\":\"Pacific/Port_Moresby\",\"AGH\":\"Europe/Stockholm\",\"AGI\":\"America/Paramaribo\",\"AGJ\":\"Asia/Tokyo\",\"AGK\":\"Pacific/Port_Moresby\",\"AGL\":\"Pacific/Port_Moresby\",\"AGM\":\"America/Godthab\",\"AGN\":\"America/Anchorage\",\"AGO\":\"America/Chicago\",\"AGP\":\"Europe/Madrid\",\"AGQ\":\"Europe/Athens\",\"AGR\":\"Asia/Kolkata\",\"AGS\":\"America/New_York\",\"AGT\":\"America/Asuncion\",\"AGU\":\"America/Mexico_City\",\"AGV\":\"America/Caracas\",\"AGW\":\"Australia/Brisbane\",\"AGX\":\"Asia/Kolkata\",\"AGY\":\"Australia/Perth\",\"AGZ\":\"Africa/Johannesburg\",\"AHA\":\"Asia/Tokyo\",\"AHB\":\"Asia/Riyadh\",\"AHC\":\"America/Los_Angeles\",\"AHD\":\"America/Chicago\",\"AHE\":\"Pacific/Tahiti\",\"AHF\":\"America/Chicago\",\"AHH\":\"America/Chicago\",\"AHI\":\"Asia/Jayapura\",\"AHJ\":\"Asia/Shanghai\",\"AHL\":\"America/Guyana\",\"AHN\":\"America/New_York\",\"AHO\":\"Europe/Rome\",\"AHS\":\"America/Tegucigalpa\",\"AHT\":\"America/Adak\",\"AHU\":\"Africa/Casablanca\",\"AHY\":\"Indian/Antananarivo\",\"AHZ\":\"Europe/Paris\",\"AIA\":\"America/Denver\",\"AIB\":\"America/Anchorage\",\"AIC\":\"Pacific/Majuro\",\"AID\":\"America/Indiana/Indianapolis\",\"AIE\":\"Pacific/Port_Moresby\",\"AIF\":\"America/Sao_Paulo\",\"AIG\":\"Africa/Bangui\",\"AIH\":\"Pacific/Port_Moresby\",\"AII\":\"Africa/Djibouti\",\"AIK\":\"America/New_York\",\"AIL\":\"America/Panama\",\"AIM\":\"Pacific/Majuro\",\"AIN\":\"America/Anchorage\",\"AIO\":\"America/Chicago\",\"AIP\":\"Asia/Kolkata\",\"AIR\":\"America/Campo_Grande\",\"AIS\":\"Pacific/Tarawa\",\"AIT\":\"Pacific/Rarotonga\",\"AIU\":\"Pacific/Rarotonga\",\"AIV\":\"America/Chicago\",\"AIW\":\"Africa/Windhoek\",\"AIY\":\"America/New_York\",\"AIZ\":\"America/Chicago\",\"AJA\":\"Europe/Paris\",\"AJF\":\"Asia/Riyadh\",\"AJI\":\"Europe/Istanbul\",\"AJJ\":\"Africa/Nouakchott\",\"AJK\":\"Asia/Tehran\",\"AJL\":\"Asia/Kolkata\",\"AJN\":\"Indian/Comoro\",\"AJO\":\"Asia/Aden\",\"AJR\":\"Europe/Stockholm\",\"AJS\":\"America/Tijuana\",\"AJU\":\"America/Belem\",\"AJY\":\"Africa/Niamey\",\"AKA\":\"Asia/Shanghai\",\"AKB\":\"America/Adak\",\"AKC\":\"America/New_York\",\"AKD\":\"Asia/Kolkata\",\"AKE\":\"Africa/Libreville\",\"AKF\":\"Africa/Tripoli\",\"AKG\":\"Pacific/Port_Moresby\",\"AKH\":\"Asia/Riyadh\",\"AKI\":\"America/Anchorage\",\"AKJ\":\"Asia/Tokyo\",\"AKK\":\"America/Anchorage\",\"AKL\":\"Pacific/Auckland\",\"AKM\":\"Africa/Ndjamena\",\"AKN\":\"America/Anchorage\",\"AKO\":\"America/Denver\",\"AKP\":\"America/Anchorage\",\"AKQ\":\"Asia/Jakarta\",\"AKR\":\"Africa/Lagos\",\"AKS\":\"Pacific/Guadalcanal\",\"AKT\":\"Asia/Nicosia\",\"AKU\":\"Asia/Shanghai\",\"AKV\":\"America/Toronto\",\"AKW\":\"Asia/Tehran\",\"AKX\":\"Asia/Aqtobe\",\"AKY\":\"Asia/Yangon\",\"ALA\":\"Asia/Almaty\",\"ALB\":\"America/New_York\",\"ALC\":\"Europe/Madrid\",\"ALD\":\"America/Lima\",\"ALE\":\"America/Chicago\",\"ALF\":\"Europe/Oslo\",\"ALG\":\"Africa/Algiers\",\"ALH\":\"Australia/Perth\",\"ALI\":\"America/Chicago\",\"ALJ\":\"Africa/Johannesburg\",\"ALK\":\"Africa/Addis_Ababa\",\"ALL\":\"Europe/Rome\",\"ALM\":\"America/Denver\",\"ALN\":\"America/Chicago\",\"ALO\":\"America/Chicago\",\"ALP\":\"Asia/Damascus\",\"ALQ\":\"America/Sao_Paulo\",\"ALR\":\"Pacific/Auckland\",\"ALS\":\"America/Denver\",\"ALT\":\"America/Porto_Velho\",\"ALU\":\"Africa/Mogadishu\",\"ALV\":\"Europe/Andorra\",\"ALW\":\"America/Los_Angeles\",\"ALX\":\"America/Chicago\",\"ALY\":\"Africa/Cairo\",\"ALZ\":\"America/Anchorage\",\"AMA\":\"America/Chicago\",\"AMB\":\"Indian/Antananarivo\",\"AMC\":\"Africa/Ndjamena\",\"AMD\":\"Asia/Kolkata\",\"AME\":\"Africa/Maputo\",\"AMF\":\"Pacific/Port_Moresby\",\"AMG\":\"Pacific/Port_Moresby\",\"AMH\":\"Africa/Addis_Ababa\",\"AMI\":\"Asia/Makassar\",\"AMJ\":\"America/Sao_Paulo\",\"AMK\":\"America/Denver\",\"AML\":\"America/Panama\",\"AMM\":\"Asia/Amman\",\"AMN\":\"America/New_York\",\"AMO\":\"Africa/Ndjamena\",\"AMP\":\"Indian/Antananarivo\",\"AMQ\":\"Asia/Jayapura\",\"AMR\":\"Europe/Madrid\",\"AMS\":\"Europe/Amsterdam\",\"AMT\":\"Australia/Darwin\",\"AMU\":\"Pacific/Port_Moresby\",\"AMV\":\"Europe/Moscow\",\"AMW\":\"America/Chicago\",\"AMX\":\"Australia/Darwin\",\"AMY\":\"Indian/Antananarivo\",\"AMZ\":\"Pacific/Auckland\",\"ANA\":\"Africa/Nairobi\",\"ANB\":\"America/Chicago\",\"ANC\":\"America/Anchorage\",\"AND\":\"America/New_York\",\"ANE\":\"Europe/Paris\",\"ANF\":\"America/Santiago\",\"ANG\":\"Europe/Paris\",\"ANH\":\"Pacific/Guadalcanal\",\"ANI\":\"America/Anchorage\",\"ANJ\":\"Africa/Brazzaville\",\"ANK\":\"Europe/Istanbul\",\"ANL\":\"Africa/Luanda\",\"ANM\":\"Indian/Antananarivo\",\"ANN\":\"America/Anchorage\",\"ANO\":\"Africa/Maputo\",\"ANP\":\"America/New_York\",\"ANQ\":\"America/Indiana/Indianapolis\",\"ANR\":\"Europe/Brussels\",\"ANS\":\"America/Lima\",\"ANT\":\"Europe/Vienna\",\"ANU\":\"America/Antigua\",\"ANV\":\"America/Anchorage\",\"ANW\":\"America/Chicago\",\"ANX\":\"Europe/Oslo\",\"ANY\":\"America/Chicago\",\"ANZ\":\"Australia/Darwin\",\"AOA\":\"Pacific/Port_Moresby\",\"AOB\":\"Pacific/Port_Moresby\",\"AOC\":\"Europe/Berlin\",\"AOD\":\"Africa/Ndjamena\",\"AOE\":\"Europe/Istanbul\",\"AOG\":\"Asia/Shanghai\",\"AOH\":\"America/New_York\",\"AOI\":\"Europe/Rome\",\"AOJ\":\"Asia/Tokyo\",\"AOK\":\"Europe/Athens\",\"AOL\":\"America/Argentina/Buenos_Aires\",\"AOM\":\"Asia/Muscat\",\"AON\":\"Pacific/Port_Moresby\",\"AOO\":\"America/New_York\",\"AOP\":\"America/Lima\",\"AOQ\":\"America/Godthab\",\"AOR\":\"Asia/Kuala_Lumpur\",\"AOS\":\"America/Anchorage\",\"AOT\":\"Europe/Rome\",\"AOU\":\"Asia/Vientiane\",\"AOY\":\"Asia/Tehran\",\"APA\":\"America/Denver\",\"APB\":\"America/La_Paz\",\"APC\":\"America/Los_Angeles\",\"APE\":\"America/Lima\",\"APF\":\"America/New_York\",\"APG\":\"America/New_York\",\"APH\":\"America/New_York\",\"API\":\"America/Bogota\",\"APK\":\"Pacific/Tahiti\",\"APL\":\"Africa/Maputo\",\"APN\":\"America/New_York\",\"APO\":\"America/Bogota\",\"APP\":\"Pacific/Port_Moresby\",\"APQ\":\"America/Belem\",\"APR\":\"Pacific/Port_Moresby\",\"APS\":\"America/Sao_Paulo\",\"APT\":\"America/Chicago\",\"APU\":\"America/Sao_Paulo\",\"APV\":\"America/Los_Angeles\",\"APW\":\"Pacific/Apia\",\"APX\":\"America/Sao_Paulo\",\"APY\":\"America/Belem\",\"APZ\":\"America/Argentina/Buenos_Aires\",\"AQA\":\"America/Sao_Paulo\",\"AQG\":\"Asia/Shanghai\",\"AQI\":\"Asia/Riyadh\",\"AQJ\":\"Asia/Amman\",\"AQM\":\"America/Porto_Velho\",\"AQP\":\"America/Lima\",\"AQS\":\"Pacific/Fiji\",\"AQY\":\"America/Anchorage\",\"ARA\":\"America/Chicago\",\"ARB\":\"America/New_York\",\"ARC\":\"America/Anchorage\",\"ARD\":\"Asia/Makassar\",\"ARE\":\"America/Puerto_Rico\",\"ARF\":\"America/Bogota\",\"ARG\":\"America/Chicago\",\"ARH\":\"Europe/Moscow\",\"ARI\":\"America/Santiago\",\"ARJ\":\"Asia/Jayapura\",\"ARK\":\"Africa/Dar_es_Salaam\",\"ARL\":\"Africa/Ouagadougou\",\"ARM\":\"Australia/Sydney\",\"ARN\":\"Europe/Stockholm\",\"ARO\":\"America/Bogota\",\"ARP\":\"Pacific/Port_Moresby\",\"ARQ\":\"America/Bogota\",\"ARR\":\"America/Argentina/Buenos_Aires\",\"ARS\":\"America/Sao_Paulo\",\"ART\":\"America/New_York\",\"ARU\":\"America/Sao_Paulo\",\"ARV\":\"America/Chicago\",\"ARW\":\"Europe/Bucharest\",\"ARX\":\"America/Belem\",\"ARY\":\"Australia/Sydney\",\"ARZ\":\"Africa/Luanda\",\"ASA\":\"Africa/Asmara\",\"ASB\":\"Asia/Ashgabat\",\"ASC\":\"America/La_Paz\",\"ASD\":\"America/Nassau\",\"ASE\":\"America/Denver\",\"ASF\":\"Europe/Samara\",\"ASG\":\"Pacific/Auckland\",\"ASH\":\"America/New_York\",\"ASI\":\"Atlantic/St_Helena\",\"ASJ\":\"Asia/Tokyo\",\"ASK\":\"Africa/Abidjan\",\"ASL\":\"America/Chicago\",\"ASM\":\"Africa/Asmara\",\"ASN\":\"America/Chicago\",\"ASO\":\"Africa/Addis_Ababa\",\"ASP\":\"Australia/Darwin\",\"ASQ\":\"America/Los_Angeles\",\"ASR\":\"Europe/Istanbul\",\"ASS\":\"Africa/Johannesburg\",\"AST\":\"America/Los_Angeles\",\"ASU\":\"America/Asuncion\",\"ASV\":\"Africa/Nairobi\",\"ASW\":\"Africa/Cairo\",\"ASX\":\"America/Chicago\",\"ASY\":\"America/Chicago\",\"ASZ\":\"Pacific/Port_Moresby\",\"ATA\":\"America/Lima\",\"ATB\":\"Africa/Khartoum\",\"ATC\":\"America/Nassau\",\"ATD\":\"Pacific/Guadalcanal\",\"ATE\":\"America/Chicago\",\"ATF\":\"America/Guayaquil\",\"ATG\":\"Asia/Karachi\",\"ATH\":\"Europe/Athens\",\"ATI\":\"America/Montevideo\",\"ATJ\":\"Indian/Antananarivo\",\"ATK\":\"America/Anchorage\",\"ATL\":\"America/New_York\",\"ATM\":\"America/Belem\",\"ATN\":\"Pacific/Port_Moresby\",\"ATO\":\"America/New_York\",\"ATP\":\"Pacific/Port_Moresby\",\"ATQ\":\"Asia/Kolkata\",\"ATR\":\"Africa/Nouakchott\",\"ATS\":\"America/Denver\",\"ATT\":\"America/Anchorage\",\"ATU\":\"America/Adak\",\"ATV\":\"Africa/Ndjamena\",\"ATW\":\"America/Chicago\",\"ATX\":\"Asia/Almaty\",\"ATY\":\"America/Chicago\",\"ATZ\":\"Africa/Cairo\",\"AUA\":\"America/Aruba\",\"AUB\":\"America/Campo_Grande\",\"AUC\":\"America/Bogota\",\"AUD\":\"Australia/Brisbane\",\"AUE\":\"Africa/Cairo\",\"AUF\":\"Europe/Paris\",\"AUG\":\"America/New_York\",\"AUH\":\"Asia/Dubai\",\"AUI\":\"Pacific/Port_Moresby\",\"AUJ\":\"Pacific/Port_Moresby\",\"AUK\":\"America/Anchorage\",\"AUL\":\"Pacific/Majuro\",\"AUM\":\"America/Chicago\",\"AUN\":\"America/Los_Angeles\",\"AUO\":\"America/Chicago\",\"AUP\":\"Pacific/Port_Moresby\",\"AUQ\":\"Pacific/Marquesas\",\"AUR\":\"Europe/Paris\",\"AUS\":\"America/Chicago\",\"AUT\":\"Asia/Jayapura\",\"AUU\":\"Australia/Brisbane\",\"AUV\":\"Pacific/Port_Moresby\",\"AUW\":\"America/Chicago\",\"AUX\":\"America/Belem\",\"AUY\":\"Pacific/Efate\",\"AUZ\":\"America/Chicago\",\"AVA\":\"Asia/Shanghai\",\"AVB\":\"Europe/Rome\",\"AVF\":\"Europe/Paris\",\"AVG\":\"Australia/Darwin\",\"AVI\":\"America/Havana\",\"AVK\":\"Asia/Ulaanbaatar\",\"AVL\":\"America/New_York\",\"AVN\":\"Europe/Paris\",\"AVO\":\"America/New_York\",\"AVP\":\"America/New_York\",\"AVR\":\"Europe/Lisbon\",\"AVU\":\"Pacific/Guadalcanal\",\"AVV\":\"Australia/Sydney\",\"AVW\":\"America/Phoenix\",\"AVX\":\"America/Los_Angeles\",\"AWA\":\"Africa/Addis_Ababa\",\"AWB\":\"Pacific/Port_Moresby\",\"AWD\":\"Pacific/Efate\",\"AWE\":\"Africa/Libreville\",\"AWH\":\"Africa/Addis_Ababa\",\"AWK\":\"Pacific/Wake\",\"AWM\":\"America/Chicago\",\"AWN\":\"Australia/Adelaide\",\"AWP\":\"Australia/Darwin\",\"AWR\":\"Pacific/Port_Moresby\",\"AWT\":\"Asia/Kolkata\",\"AWZ\":\"Asia/Tehran\",\"AXA\":\"America/Anguilla\",\"AXB\":\"America/New_York\",\"AXC\":\"Australia/Brisbane\",\"AXD\":\"Europe/Athens\",\"AXE\":\"America/Sao_Paulo\",\"AXF\":\"Asia/Shanghai\",\"AXG\":\"America/Chicago\",\"AXJ\":\"Asia/Tokyo\",\"AXK\":\"Asia/Aden\",\"AXL\":\"Australia/Darwin\",\"AXM\":\"America/Bogota\",\"AXN\":\"America/Chicago\",\"AXP\":\"America/Nassau\",\"AXR\":\"Pacific/Tahiti\",\"AXS\":\"America/Chicago\",\"AXT\":\"Asia/Tokyo\",\"AXU\":\"Africa/Addis_Ababa\",\"AXV\":\"America/New_York\",\"AXX\":\"America/Denver\",\"AYA\":\"America/Bogota\",\"AYC\":\"America/Bogota\",\"AYD\":\"Australia/Darwin\",\"AYE\":\"America/New_York\",\"AYG\":\"America/Bogota\",\"AYH\":\"Europe/London\",\"AYI\":\"America/Bogota\",\"AYK\":\"Asia/Qostanay\",\"AYL\":\"Australia/Darwin\",\"AYN\":\"Asia/Shanghai\",\"AYO\":\"America/Asuncion\",\"AYP\":\"America/Lima\",\"AYQ\":\"Australia/Darwin\",\"AYR\":\"Australia/Brisbane\",\"AYS\":\"America/New_York\",\"AYT\":\"Europe/Istanbul\",\"AYU\":\"Pacific/Port_Moresby\",\"AYW\":\"Asia/Jayapura\",\"AYX\":\"America/Lima\",\"AYZ\":\"America/New_York\",\"AZA\":\"America/Phoenix\",\"AZB\":\"Pacific/Port_Moresby\",\"AZD\":\"Asia/Tehran\",\"AZG\":\"America/Mexico_City\",\"AZI\":\"Asia/Dubai\",\"AZN\":\"Asia/Tashkent\",\"AZO\":\"America/New_York\",\"AZP\":\"America/Mexico_City\",\"AZR\":\"Africa/Algiers\",\"AZS\":\"America/Santo_Domingo\",\"AZT\":\"America/Bogota\",\"AZZ\":\"Africa/Luanda\",\"BAA\":\"Pacific/Port_Moresby\",\"BAB\":\"America/Los_Angeles\",\"BAC\":\"America/Bogota\",\"BAD\":\"America/Chicago\",\"BAE\":\"Europe/Paris\",\"BAF\":\"America/New_York\",\"BAG\":\"Asia/Manila\",\"BAH\":\"Asia/Bahrain\",\"BAI\":\"America/Costa_Rica\",\"BAJ\":\"Pacific/Port_Moresby\",\"BAK\":\"Asia/Baku\",\"BAL\":\"Europe/Istanbul\",\"BAM\":\"America/Los_Angeles\",\"BAN\":\"Africa/Lubumbashi\",\"BAP\":\"Pacific/Port_Moresby\",\"BAQ\":\"America/Bogota\",\"BAR\":\"Asia/Shanghai\",\"BAS\":\"Pacific/Guadalcanal\",\"BAT\":\"America/Sao_Paulo\",\"BAV\":\"Asia/Shanghai\",\"BAW\":\"Africa/Libreville\",\"BAX\":\"Asia/Krasnoyarsk\",\"BAY\":\"Europe/Bucharest\",\"BAZ\":\"America/Porto_Velho\",\"BBA\":\"America/Santiago\",\"BBB\":\"America/Chicago\",\"BBC\":\"America/Chicago\",\"BBD\":\"America/Chicago\",\"BBE\":\"Australia/Perth\",\"BBF\":\"America/New_York\",\"BBG\":\"Pacific/Tarawa\",\"BBH\":\"Europe/Berlin\",\"BBI\":\"Asia/Kolkata\",\"BBJ\":\"Europe/Berlin\",\"BBK\":\"Africa/Gaborone\",\"BBL\":\"Australia/Brisbane\",\"BBM\":\"Asia/Phnom_Penh\",\"BBN\":\"Asia/Kuala_Lumpur\",\"BBO\":\"Africa/Mogadishu\",\"BBP\":\"Europe/London\",\"BBQ\":\"America/Antigua\",\"BBR\":\"America/Guadeloupe\",\"BBS\":\"Europe/London\",\"BBT\":\"Africa/Bangui\",\"BBU\":\"Europe/Bucharest\",\"BBV\":\"Africa/Abidjan\",\"BBW\":\"America/Chicago\",\"BBX\":\"America/New_York\",\"BBY\":\"Africa/Bangui\",\"BBZ\":\"Africa/Lusaka\",\"BCA\":\"America/Havana\",\"BCB\":\"America/New_York\",\"BCC\":\"America/Anchorage\",\"BCD\":\"Asia/Manila\",\"BCE\":\"America/Denver\",\"BCF\":\"Africa/Bangui\",\"BCG\":\"America/Guyana\",\"BCH\":\"Asia/Jayapura\",\"BCI\":\"Australia/Brisbane\",\"BCJ\":\"America/Denver\",\"BCK\":\"Australia/Brisbane\",\"BCL\":\"America/Costa_Rica\",\"BCM\":\"Europe/Bucharest\",\"BCN\":\"Europe/Madrid\",\"BCO\":\"Africa/Addis_Ababa\",\"BCP\":\"Pacific/Port_Moresby\",\"BCQ\":\"Africa/Tripoli\",\"BCR\":\"America/Porto_Velho\",\"BCS\":\"America/Chicago\",\"BCT\":\"America/New_York\",\"BCU\":\"Africa/Lagos\",\"BCV\":\"America/Belize\",\"BCW\":\"Africa/Maputo\",\"BCX\":\"Asia/Yekaterinburg\",\"BCY\":\"Africa/Addis_Ababa\",\"BCZ\":\"Australia/Darwin\",\"BDA\":\"Atlantic/Bermuda\",\"BDB\":\"Australia/Brisbane\",\"BDC\":\"America/Belem\",\"BDD\":\"Australia/Brisbane\",\"BDE\":\"America/Chicago\",\"BDF\":\"America/Chicago\",\"BDG\":\"America/Denver\",\"BDH\":\"Asia/Tehran\",\"BDI\":\"Indian/Mahe\",\"BDJ\":\"Asia/Makassar\",\"BDK\":\"Africa/Abidjan\",\"BDL\":\"America/New_York\",\"BDM\":\"Europe/Istanbul\",\"BDN\":\"Asia/Karachi\",\"BDO\":\"Asia/Jakarta\",\"BDP\":\"Asia/Kathmandu\",\"BDQ\":\"Asia/Kolkata\",\"BDR\":\"America/New_York\",\"BDS\":\"Europe/Rome\",\"BDT\":\"Africa/Kinshasa\",\"BDU\":\"Europe/Oslo\",\"BDV\":\"Africa/Lubumbashi\",\"BDW\":\"Australia/Perth\",\"BDX\":\"America/Denver\",\"BDY\":\"America/Los_Angeles\",\"BDZ\":\"Pacific/Port_Moresby\",\"BEA\":\"Pacific/Port_Moresby\",\"BEB\":\"Europe/London\",\"BEC\":\"America/Chicago\",\"BED\":\"America/New_York\",\"BEE\":\"Australia/Perth\",\"BEF\":\"America/Managua\",\"BEG\":\"Europe/Belgrade\",\"BEH\":\"America/New_York\",\"BEI\":\"Africa/Addis_Ababa\",\"BEJ\":\"Asia/Makassar\",\"BEK\":\"Asia/Kolkata\",\"BEL\":\"America/Belem\",\"BEM\":\"Africa/Casablanca\",\"BEN\":\"Africa/Tripoli\",\"BEO\":\"Australia/Sydney\",\"BEP\":\"Asia/Kolkata\",\"BEQ\":\"Europe/London\",\"BES\":\"Europe/Paris\",\"BET\":\"America/Anchorage\",\"BEU\":\"Australia/Brisbane\",\"BEV\":\"Asia/Jerusalem\",\"BEW\":\"Africa/Maputo\",\"BEX\":\"Europe/London\",\"BEY\":\"Asia/Beirut\",\"BEZ\":\"Pacific/Tarawa\",\"BFA\":\"America/Asuncion\",\"BFB\":\"America/Anchorage\",\"BFC\":\"Australia/Brisbane\",\"BFD\":\"America/New_York\",\"BFE\":\"Europe/Berlin\",\"BFF\":\"America/Denver\",\"BFG\":\"America/Denver\",\"BFH\":\"America/Sao_Paulo\",\"BFI\":\"America/Los_Angeles\",\"BFJ\":\"Asia/Shanghai\",\"BFK\":\"America/Denver\",\"BFL\":\"America/Los_Angeles\",\"BFM\":\"America/Chicago\",\"BFN\":\"Africa/Johannesburg\",\"BFO\":\"Africa/Harare\",\"BFP\":\"America/New_York\",\"BFQ\":\"America/Panama\",\"BFR\":\"America/Indiana/Indianapolis\",\"BFS\":\"Europe/London\",\"BFT\":\"America/New_York\",\"BFU\":\"Asia/Shanghai\",\"BFV\":\"Asia/Bangkok\",\"BFW\":\"Africa/Algiers\",\"BFX\":\"Africa/Douala\",\"BGA\":\"America/Bogota\",\"BGB\":\"Africa/Libreville\",\"BGC\":\"Europe/Lisbon\",\"BGD\":\"America/Chicago\",\"BGE\":\"America/New_York\",\"BGF\":\"Africa/Bangui\",\"BGG\":\"Europe/Istanbul\",\"BGH\":\"Africa/Nouakchott\",\"BGI\":\"America/Barbados\",\"BGJ\":\"Atlantic/Reykjavik\",\"BGK\":\"America/Belize\",\"BGL\":\"Asia/Kathmandu\",\"BGM\":\"America/New_York\",\"BGN\":\"Asia/Magadan\",\"BGO\":\"Europe/Oslo\",\"BGP\":\"Africa/Libreville\",\"BGQ\":\"America/Anchorage\",\"BGR\":\"America/New_York\",\"BGS\":\"America/Chicago\",\"BGT\":\"America/Phoenix\",\"BGU\":\"Africa/Bangui\",\"BGV\":\"America/Sao_Paulo\",\"BGW\":\"Asia/Baghdad\",\"BGX\":\"America/Sao_Paulo\",\"BGY\":\"Europe/Rome\",\"BGZ\":\"Europe/Lisbon\",\"BHA\":\"America/Guayaquil\",\"BHB\":\"America/New_York\",\"BHC\":\"Asia/Karachi\",\"BHD\":\"Europe/London\",\"BHE\":\"Pacific/Auckland\",\"BHF\":\"America/Bogota\",\"BHG\":\"America/Tegucigalpa\",\"BHH\":\"Asia/Riyadh\",\"BHI\":\"America/Argentina/Buenos_Aires\",\"BHJ\":\"Asia/Kolkata\",\"BHK\":\"Asia/Tashkent\",\"BHL\":\"America/Tijuana\",\"BHM\":\"America/Chicago\",\"BHN\":\"Asia/Aden\",\"BHO\":\"Asia/Kolkata\",\"BHP\":\"Asia/Kathmandu\",\"BHQ\":\"Australia/Adelaide\",\"BHR\":\"Asia/Kathmandu\",\"BHS\":\"Australia/Sydney\",\"BHT\":\"Australia/Brisbane\",\"BHU\":\"Asia/Kolkata\",\"BHV\":\"Asia/Karachi\",\"BHW\":\"Asia/Karachi\",\"BHX\":\"Europe/London\",\"BHY\":\"Asia/Shanghai\",\"BIA\":\"Europe/Paris\",\"BIB\":\"Africa/Mogadishu\",\"BIC\":\"America/Anchorage\",\"BID\":\"America/New_York\",\"BIE\":\"America/Chicago\",\"BIF\":\"America/Denver\",\"BIG\":\"America/Anchorage\",\"BIH\":\"America/Los_Angeles\",\"BII\":\"Pacific/Majuro\",\"BIJ\":\"Pacific/Port_Moresby\",\"BIK\":\"Asia/Jayapura\",\"BIL\":\"America/Denver\",\"BIM\":\"America/Nassau\",\"BIN\":\"Asia/Kabul\",\"BIO\":\"Europe/Madrid\",\"BIP\":\"Australia/Brisbane\",\"BIQ\":\"Europe/Paris\",\"BIR\":\"Asia/Kathmandu\",\"BIS\":\"America/Chicago\",\"BIT\":\"Asia/Kathmandu\",\"BIU\":\"Atlantic/Reykjavik\",\"BIV\":\"Africa/Bangui\",\"BIW\":\"Australia/Perth\",\"BIX\":\"America/Chicago\",\"BIY\":\"Africa/Johannesburg\",\"BIZ\":\"Pacific/Port_Moresby\",\"BJA\":\"Africa/Algiers\",\"BJB\":\"Asia/Tehran\",\"BJC\":\"America/Denver\",\"BJD\":\"Atlantic/Reykjavik\",\"BJE\":\"Africa/Khartoum\",\"BJF\":\"Europe/Oslo\",\"BJG\":\"Asia/Makassar\",\"BJH\":\"Asia/Kathmandu\",\"BJI\":\"America/Chicago\",\"BJJ\":\"America/New_York\",\"BJK\":\"Asia/Jayapura\",\"BJL\":\"Africa/Banjul\",\"BJM\":\"Africa/Bujumbura\",\"BJN\":\"Africa/Maputo\",\"BJO\":\"America/La_Paz\",\"BJP\":\"America/Sao_Paulo\",\"BJQ\":\"Asia/Muscat\",\"BJR\":\"Africa/Addis_Ababa\",\"BJT\":\"Asia/Colombo\",\"BJU\":\"Asia/Kathmandu\",\"BJV\":\"Europe/Istanbul\",\"BJW\":\"Asia/Makassar\",\"BJX\":\"America/Mexico_City\",\"BJY\":\"Europe/Belgrade\",\"BJZ\":\"Europe/Madrid\",\"BKB\":\"Asia/Kolkata\",\"BKC\":\"America/Anchorage\",\"BKD\":\"America/Chicago\",\"BKE\":\"America/Los_Angeles\",\"BKF\":\"America/Anchorage\",\"BKG\":\"America/Chicago\",\"BKH\":\"Pacific/Honolulu\",\"BKI\":\"Asia/Kuala_Lumpur\",\"BKJ\":\"Africa/Conakry\",\"BKK\":\"Asia/Bangkok\",\"BKL\":\"America/New_York\",\"BKM\":\"Asia/Kuala_Lumpur\",\"BKN\":\"Asia/Ashgabat\",\"BKO\":\"Africa/Bamako\",\"BKP\":\"Australia/Brisbane\",\"BKQ\":\"Australia/Brisbane\",\"BKR\":\"Africa/Ndjamena\",\"BKS\":\"Asia/Jakarta\",\"BKT\":\"America/New_York\",\"BKU\":\"Indian/Antananarivo\",\"BKV\":\"Asia/Shanghai\",\"BKW\":\"America/New_York\",\"BKX\":\"America/Chicago\",\"BKY\":\"Africa/Lubumbashi\",\"BKZ\":\"Africa/Dar_es_Salaam\",\"BLA\":\"America/Caracas\",\"BLB\":\"America/Panama\",\"BLC\":\"Africa/Douala\",\"BLD\":\"America/Los_Angeles\",\"BLE\":\"Europe/Stockholm\",\"BLF\":\"America/New_York\",\"BLG\":\"Asia/Kuala_Lumpur\",\"BLH\":\"America/Los_Angeles\",\"BLI\":\"America/Los_Angeles\",\"BLJ\":\"Africa/Algiers\",\"BLK\":\"Europe/London\",\"BLL\":\"Europe/Copenhagen\",\"BLM\":\"America/New_York\",\"BLN\":\"Australia/Sydney\",\"BLO\":\"Atlantic/Reykjavik\",\"BLP\":\"America/Lima\",\"BLQ\":\"Europe/Rome\",\"BLR\":\"Asia/Kolkata\",\"BLS\":\"Australia/Brisbane\",\"BLT\":\"Australia/Brisbane\",\"BLU\":\"America/Los_Angeles\",\"BLV\":\"America/Chicago\",\"BLW\":\"Africa/Mogadishu\",\"BLX\":\"Europe/Rome\",\"BLY\":\"Europe/Dublin\",\"BLZ\":\"Africa/Blantyre\",\"BMA\":\"Europe/Stockholm\",\"BMB\":\"Africa/Kinshasa\",\"BMC\":\"America/Denver\",\"BMD\":\"Indian/Antananarivo\",\"BME\":\"Australia/Perth\",\"BMF\":\"Africa/Bangui\",\"BMG\":\"America/Indiana/Indianapolis\",\"BMH\":\"Pacific/Port_Moresby\",\"BMI\":\"America/Chicago\",\"BMJ\":\"America/Guyana\",\"BMK\":\"Europe/Berlin\",\"BML\":\"America/New_York\",\"BMM\":\"Africa/Libreville\",\"BMN\":\"Asia/Baghdad\",\"BMO\":\"Asia/Yangon\",\"BMP\":\"Australia/Brisbane\",\"BMQ\":\"Africa/Nairobi\",\"BMR\":\"Europe/Berlin\",\"BMS\":\"America/Belem\",\"BMT\":\"America/Chicago\",\"BMU\":\"Asia/Makassar\",\"BMV\":\"Asia/Ho_Chi_Minh\",\"BMW\":\"Africa/Algiers\",\"BMX\":\"America/Anchorage\",\"BMY\":\"Pacific/Noumea\",\"BMZ\":\"Pacific/Port_Moresby\",\"BNA\":\"America/Chicago\",\"BNB\":\"Africa/Kinshasa\",\"BNC\":\"Africa/Lubumbashi\",\"BND\":\"Asia/Tehran\",\"BNE\":\"Australia/Brisbane\",\"BNF\":\"America/Anchorage\",\"BNG\":\"America/Los_Angeles\",\"BNH\":\"America/New_York\",\"BNI\":\"Africa/Lagos\",\"BNK\":\"Australia/Sydney\",\"BNL\":\"America/New_York\",\"BNM\":\"Pacific/Port_Moresby\",\"BNN\":\"Europe/Oslo\",\"BNO\":\"America/Los_Angeles\",\"BNP\":\"Asia/Karachi\",\"BNQ\":\"Asia/Manila\",\"BNR\":\"Africa/Ouagadougou\",\"BNS\":\"America/Caracas\",\"BNT\":\"Pacific/Port_Moresby\",\"BNU\":\"America/Sao_Paulo\",\"BNV\":\"Pacific/Port_Moresby\",\"BNW\":\"America/Chicago\",\"BNX\":\"Europe/Sarajevo\",\"BNY\":\"Pacific/Guadalcanal\",\"BNZ\":\"Pacific/Port_Moresby\",\"BOA\":\"Africa/Kinshasa\",\"BOB\":\"Pacific/Tahiti\",\"BOC\":\"America/Panama\",\"BOD\":\"Europe/Paris\",\"BOE\":\"Africa/Brazzaville\",\"BOF\":\"America/New_York\",\"BOG\":\"America/Bogota\",\"BOH\":\"Europe/London\",\"BOI\":\"America/Denver\",\"BOJ\":\"Europe/Sofia\",\"BOK\":\"America/Los_Angeles\",\"BOL\":\"Europe/London\",\"BOM\":\"Asia/Kolkata\",\"BON\":\"America/Curacao\",\"BOO\":\"Europe/Oslo\",\"BOP\":\"Africa/Bangui\",\"BOQ\":\"Pacific/Port_Moresby\",\"BOR\":\"Europe/Paris\",\"BOS\":\"America/New_York\",\"BOT\":\"Pacific/Port_Moresby\",\"BOU\":\"Europe/Paris\",\"BOV\":\"Pacific/Port_Moresby\",\"BOW\":\"America/New_York\",\"BOX\":\"Australia/Darwin\",\"BOY\":\"Africa/Ouagadougou\",\"BOZ\":\"Africa/Bangui\",\"BPA\":\"America/New_York\",\"BPB\":\"Pacific/Port_Moresby\",\"BPC\":\"Africa/Douala\",\"BPD\":\"Pacific/Port_Moresby\",\"BPE\":\"Asia/Shanghai\",\"BPF\":\"Pacific/Guadalcanal\",\"BPG\":\"America/Campo_Grande\",\"BPH\":\"Asia/Manila\",\"BPI\":\"America/Denver\",\"BPK\":\"Pacific/Port_Moresby\",\"BPL\":\"Asia/Shanghai\",\"BPN\":\"Asia/Makassar\",\"BPS\":\"America/Belem\",\"BPT\":\"America/Chicago\",\"BPU\":\"Asia/Tokyo\",\"BPX\":\"Asia/Shanghai\",\"BPY\":\"Indian/Antananarivo\",\"BQA\":\"Asia/Manila\",\"BQB\":\"Australia/Perth\",\"BQE\":\"Africa/Bissau\",\"BQG\":\"Asia/Vladivostok\",\"BQH\":\"Europe/London\",\"BQI\":\"Africa/Windhoek\",\"BQJ\":\"Asia/Vladivostok\",\"BQK\":\"America/New_York\",\"BQL\":\"Australia/Brisbane\",\"BQN\":\"America/Puerto_Rico\",\"BQO\":\"Africa/Abidjan\",\"BQQ\":\"America/Belem\",\"BQS\":\"Asia/Yakutsk\",\"BQT\":\"Europe/Minsk\",\"BQU\":\"America/St_Vincent\",\"BQV\":\"America/Anchorage\",\"BQW\":\"Australia/Perth\",\"BRA\":\"America/Belem\",\"BRB\":\"America/Belem\",\"BRC\":\"America/Argentina/Buenos_Aires\",\"BRD\":\"America/Chicago\",\"BRE\":\"Europe/Berlin\",\"BRG\":\"America/New_York\",\"BRH\":\"Pacific/Port_Moresby\",\"BRI\":\"Europe/Rome\",\"BRJ\":\"Australia/Sydney\",\"BRK\":\"Australia/Sydney\",\"BRL\":\"America/Chicago\",\"BRM\":\"America/Caracas\",\"BRN\":\"Europe/Zurich\",\"BRO\":\"America/Chicago\",\"BRP\":\"Pacific/Port_Moresby\",\"BRQ\":\"Europe/Prague\",\"BRR\":\"Europe/London\",\"BRS\":\"Europe/London\",\"BRT\":\"Australia/Darwin\",\"BRU\":\"Europe/Brussels\",\"BRV\":\"Europe/Berlin\",\"BRW\":\"America/Anchorage\",\"BRX\":\"America/Santo_Domingo\",\"BRY\":\"America/New_York\",\"BSA\":\"Africa/Mogadishu\",\"BSB\":\"America/Sao_Paulo\",\"BSC\":\"America/Bogota\",\"BSD\":\"Asia/Shanghai\",\"BSE\":\"Asia/Kuala_Lumpur\",\"BSF\":\"Pacific/Honolulu\",\"BSG\":\"Africa/Malabo\",\"BSH\":\"Europe/London\",\"BSI\":\"Asia/Manila\",\"BSJ\":\"Australia/Sydney\",\"BSK\":\"Africa/Algiers\",\"BSL\":\"Europe/Paris\",\"BSM\":\"Asia/Tehran\",\"BSN\":\"Africa/Bangui\",\"BSO\":\"Asia/Manila\",\"BSP\":\"Pacific/Port_Moresby\",\"BSQ\":\"America/Phoenix\",\"BSR\":\"Asia/Baghdad\",\"BSS\":\"America/Belem\",\"BST\":\"Asia/Kabul\",\"BSU\":\"Africa/Kinshasa\",\"BSV\":\"Indian/Antananarivo\",\"BSW\":\"America/Anchorage\",\"BSX\":\"Asia/Yangon\",\"BSY\":\"Africa/Mogadishu\",\"BSZ\":\"America/Anchorage\",\"BTA\":\"Africa/Douala\",\"BTB\":\"Africa/Brazzaville\",\"BTC\":\"Asia/Colombo\",\"BTD\":\"Australia/Darwin\",\"BTE\":\"Africa/Freetown\",\"BTF\":\"America/Denver\",\"BTG\":\"Africa/Bangui\",\"BTH\":\"Asia/Jakarta\",\"BTI\":\"America/Anchorage\",\"BTJ\":\"Asia/Jakarta\",\"BTK\":\"Asia/Irkutsk\",\"BTL\":\"America/New_York\",\"BTM\":\"America/Denver\",\"BTN\":\"America/New_York\",\"BTO\":\"America/Paramaribo\",\"BTP\":\"America/New_York\",\"BTQ\":\"Africa/Kigali\",\"BTR\":\"America/Chicago\",\"BTS\":\"Europe/Bratislava\",\"BTT\":\"America/Anchorage\",\"BTU\":\"Asia/Kuala_Lumpur\",\"BTV\":\"America/New_York\",\"BTW\":\"Asia/Makassar\",\"BTX\":\"Australia/Brisbane\",\"BTY\":\"America/Los_Angeles\",\"BUA\":\"Pacific/Bougainville\",\"BUB\":\"America/Chicago\",\"BUC\":\"Australia/Brisbane\",\"BUD\":\"Europe/Budapest\",\"BUF\":\"America/New_York\",\"BUG\":\"Africa/Luanda\",\"BUI\":\"Asia/Jayapura\",\"BUJ\":\"Africa/Algiers\",\"BUK\":\"Asia/Aden\",\"BUL\":\"Pacific/Port_Moresby\",\"BUM\":\"America/Chicago\",\"BUN\":\"America/Bogota\",\"BUO\":\"Africa/Mogadishu\",\"BUP\":\"Asia/Kolkata\",\"BUQ\":\"Africa/Harare\",\"BUR\":\"America/Los_Angeles\",\"BUS\":\"Asia/Tbilisi\",\"BUT\":\"Asia/Thimphu\",\"BUU\":\"Asia/Jakarta\",\"BUV\":\"America/Montevideo\",\"BUW\":\"Asia/Makassar\",\"BUX\":\"Africa/Lubumbashi\",\"BUY\":\"Australia/Perth\",\"BUZ\":\"Asia/Tehran\",\"BVA\":\"Europe/Paris\",\"BVB\":\"America/Porto_Velho\",\"BVC\":\"Atlantic/Cape_Verde\",\"BVD\":\"America/Anchorage\",\"BVE\":\"Europe/Paris\",\"BVF\":\"Pacific/Fiji\",\"BVG\":\"Europe/Oslo\",\"BVH\":\"America/Porto_Velho\",\"BVI\":\"Australia/Brisbane\",\"BVJ\":\"Asia/Yekaterinburg\",\"BVK\":\"America/La_Paz\",\"BVL\":\"America/La_Paz\",\"BVM\":\"America/Belem\",\"BVO\":\"America/Chicago\",\"BVP\":\"Pacific/Port_Moresby\",\"BVR\":\"Atlantic/Cape_Verde\",\"BVS\":\"America/Belem\",\"BVU\":\"America/Anchorage\",\"BVV\":\"Asia/Magadan\",\"BVW\":\"Australia/Brisbane\",\"BVX\":\"America/Chicago\",\"BVY\":\"America/New_York\",\"BVZ\":\"Australia/Perth\",\"BWA\":\"Asia/Kathmandu\",\"BWB\":\"Australia/Perth\",\"BWC\":\"America/Los_Angeles\",\"BWD\":\"America/Chicago\",\"BWE\":\"Europe/Berlin\",\"BWF\":\"Europe/London\",\"BWG\":\"America/Chicago\",\"BWH\":\"Asia/Kuala_Lumpur\",\"BWI\":\"America/New_York\",\"BWJ\":\"Pacific/Port_Moresby\",\"BWK\":\"Europe/Zagreb\",\"BWL\":\"America/Chicago\",\"BWM\":\"America/Denver\",\"BWN\":\"Asia/Brunei\",\"BWO\":\"Europe/Saratov\",\"BWP\":\"Pacific/Port_Moresby\",\"BWQ\":\"Australia/Sydney\",\"BWS\":\"America/Los_Angeles\",\"BWT\":\"Australia/Hobart\",\"BWU\":\"Australia/Sydney\",\"BWX\":\"Asia/Jakarta\",\"BWY\":\"Europe/London\",\"BXA\":\"America/Chicago\",\"BXB\":\"Asia/Jayapura\",\"BXC\":\"America/New_York\",\"BXD\":\"Asia/Jayapura\",\"BXE\":\"Africa/Dakar\",\"BXF\":\"Australia/Perth\",\"BXG\":\"Australia/Sydney\",\"BXH\":\"Asia/Almaty\",\"BXI\":\"Africa/Abidjan\",\"BXJ\":\"Asia/Almaty\",\"BXK\":\"America/Phoenix\",\"BXL\":\"Pacific/Fiji\",\"BXM\":\"Asia/Jayapura\",\"BXN\":\"Europe/Istanbul\",\"BXO\":\"Europe/Zurich\",\"BXR\":\"Asia/Tehran\",\"BXS\":\"America/Los_Angeles\",\"BXT\":\"Asia/Makassar\",\"BXU\":\"Asia/Manila\",\"BXV\":\"Atlantic/Reykjavik\",\"BXX\":\"Africa/Mogadishu\",\"BXY\":\"Asia/Qyzylorda\",\"BXZ\":\"Pacific/Port_Moresby\",\"BYA\":\"America/Anchorage\",\"BYB\":\"Asia/Muscat\",\"BYC\":\"America/La_Paz\",\"BYD\":\"Asia/Aden\",\"BYF\":\"Europe/Paris\",\"BYG\":\"America/Denver\",\"BYH\":\"America/Chicago\",\"BYI\":\"America/Denver\",\"BYJ\":\"Europe/Lisbon\",\"BYK\":\"Africa/Abidjan\",\"BYL\":\"Africa/Monrovia\",\"BYM\":\"America/Havana\",\"BYN\":\"Asia/Ulaanbaatar\",\"BYO\":\"America/Campo_Grande\",\"BYP\":\"Australia/Perth\",\"BYQ\":\"Asia/Makassar\",\"BYR\":\"Europe/Copenhagen\",\"BYS\":\"America/Los_Angeles\",\"BYT\":\"Europe/Dublin\",\"BYU\":\"Europe/Berlin\",\"BYW\":\"America/Los_Angeles\",\"BYX\":\"Australia/Darwin\",\"BZA\":\"America/Managua\",\"BZB\":\"Africa/Maputo\",\"BZC\":\"America/Sao_Paulo\",\"BZD\":\"Australia/Sydney\",\"BZE\":\"America/Belize\",\"BZF\":\"America/Los_Angeles\",\"BZG\":\"Europe/Warsaw\",\"BZH\":\"Africa/Harare\",\"BZI\":\"Europe/Istanbul\",\"BZK\":\"Europe/Moscow\",\"BZL\":\"Asia/Dhaka\",\"BZM\":\"Indian/Antananarivo\",\"BZN\":\"America/Denver\",\"BZO\":\"Europe/Rome\",\"BZP\":\"Australia/Brisbane\",\"BZR\":\"Europe/Paris\",\"BZS\":\"America/New_York\",\"BZT\":\"America/Chicago\",\"BZU\":\"Africa/Lubumbashi\",\"BZV\":\"Africa/Brazzaville\",\"BZX\":\"Asia/Shanghai\",\"BZY\":\"Europe/Chisinau\",\"BZZ\":\"Europe/London\",\"CAA\":\"America/Tegucigalpa\",\"CAB\":\"Africa/Luanda\",\"CAC\":\"America/Sao_Paulo\",\"CAD\":\"America/New_York\",\"CAE\":\"America/New_York\",\"CAF\":\"America/Porto_Velho\",\"CAG\":\"Europe/Rome\",\"CAH\":\"Asia/Ho_Chi_Minh\",\"CAI\":\"Africa/Cairo\",\"CAJ\":\"America/Caracas\",\"CAK\":\"America/New_York\",\"CAL\":\"Europe/London\",\"CAM\":\"America/La_Paz\",\"CAN\":\"Asia/Shanghai\",\"CAO\":\"America/Denver\",\"CAP\":\"America/Port-au-Prince\",\"CAQ\":\"America/Bogota\",\"CAR\":\"America/New_York\",\"CAS\":\"Africa/Casablanca\",\"CAT\":\"Europe/Lisbon\",\"CAU\":\"America/Belem\",\"CAV\":\"Africa/Luanda\",\"CAW\":\"America/Sao_Paulo\",\"CAX\":\"Europe/London\",\"CAY\":\"America/Cayenne\",\"CAZ\":\"Australia/Sydney\",\"CBA\":\"America/Anchorage\",\"CBB\":\"America/La_Paz\",\"CBC\":\"Australia/Perth\",\"CBD\":\"Asia/Kolkata\",\"CBE\":\"America/New_York\",\"CBF\":\"America/Chicago\",\"CBG\":\"Europe/London\",\"CBH\":\"Africa/Algiers\",\"CBI\":\"Australia/Hobart\",\"CBJ\":\"America/Santo_Domingo\",\"CBK\":\"America/Chicago\",\"CBL\":\"America/Caracas\",\"CBM\":\"America/Chicago\",\"CBN\":\"Asia/Jakarta\",\"CBO\":\"Asia/Manila\",\"CBP\":\"Europe/Lisbon\",\"CBQ\":\"Africa/Lagos\",\"CBR\":\"Australia/Sydney\",\"CBS\":\"America/Caracas\",\"CBT\":\"Africa/Luanda\",\"CBU\":\"Europe/Berlin\",\"CBV\":\"America/Guatemala\",\"CBW\":\"America/Sao_Paulo\",\"CBX\":\"Australia/Sydney\",\"CBY\":\"Australia/Brisbane\",\"CBZ\":\"America/Anchorage\",\"CCA\":\"America/La_Paz\",\"CCB\":\"America/Los_Angeles\",\"CCC\":\"America/Havana\",\"CCD\":\"America/Los_Angeles\",\"CCE\":\"Africa/Cairo\",\"CCF\":\"Europe/Paris\",\"CCG\":\"America/Chicago\",\"CCH\":\"America/Santiago\",\"CCI\":\"America/Sao_Paulo\",\"CCJ\":\"Asia/Kolkata\",\"CCK\":\"Indian/Cocos\",\"CCL\":\"Australia/Brisbane\",\"CCM\":\"America/Sao_Paulo\",\"CCN\":\"Asia/Kabul\",\"CCO\":\"America/Bogota\",\"CCP\":\"America/Santiago\",\"CCQ\":\"America/Belem\",\"CCR\":\"America/Los_Angeles\",\"CCS\":\"America/Caracas\",\"CCT\":\"America/Argentina/Buenos_Aires\",\"CCU\":\"Asia/Kolkata\",\"CCV\":\"Pacific/Efate\",\"CCW\":\"Australia/Adelaide\",\"CCX\":\"America/Campo_Grande\",\"CCY\":\"America/Chicago\",\"CCZ\":\"America/Nassau\",\"CDA\":\"Australia/Darwin\",\"CDB\":\"America/Anchorage\",\"CDC\":\"America/Denver\",\"CDD\":\"America/Tegucigalpa\",\"CDE\":\"Asia/Shanghai\",\"CDF\":\"Europe/Rome\",\"CDG\":\"Europe/Paris\",\"CDH\":\"America/Chicago\",\"CDI\":\"America/Sao_Paulo\",\"CDJ\":\"America/Belem\",\"CDK\":\"America/New_York\",\"CDL\":\"America/Anchorage\",\"CDN\":\"America/New_York\",\"CDO\":\"Africa/Johannesburg\",\"CDP\":\"Asia/Kolkata\",\"CDQ\":\"Australia/Brisbane\",\"CDR\":\"America/Denver\",\"CDS\":\"America/Chicago\",\"CDT\":\"Europe/Madrid\",\"CDU\":\"Australia/Sydney\",\"CDV\":\"America/Anchorage\",\"CDW\":\"America/New_York\",\"CDY\":\"Asia/Manila\",\"CDZ\":\"Europe/Madrid\",\"CEA\":\"America/Chicago\",\"CEB\":\"Asia/Manila\",\"CEC\":\"America/Los_Angeles\",\"CED\":\"Australia/Adelaide\",\"CEE\":\"Europe/Moscow\",\"CEF\":\"America/New_York\",\"CEG\":\"Europe/London\",\"CEH\":\"Africa/Blantyre\",\"CEI\":\"Asia/Bangkok\",\"CEK\":\"Asia/Yekaterinburg\",\"CEM\":\"America/Anchorage\",\"CEN\":\"America/Hermosillo\",\"CEO\":\"Africa/Luanda\",\"CEP\":\"America/La_Paz\",\"CEQ\":\"Europe/Paris\",\"CER\":\"Europe/Paris\",\"CES\":\"Australia/Sydney\",\"CET\":\"Europe/Paris\",\"CEU\":\"America/New_York\",\"CEV\":\"America/Indiana/Indianapolis\",\"CEW\":\"America/New_York\",\"CEX\":\"America/Anchorage\",\"CEY\":\"America/Chicago\",\"CEZ\":\"America/Denver\",\"CFA\":\"America/Anchorage\",\"CFB\":\"America/Sao_Paulo\",\"CFC\":\"America/Sao_Paulo\",\"CFD\":\"America/Chicago\",\"CFE\":\"Europe/Paris\",\"CFF\":\"Africa/Luanda\",\"CFG\":\"America/Havana\",\"CFH\":\"Australia/Adelaide\",\"CFI\":\"Australia/Darwin\",\"CFK\":\"Africa/Algiers\",\"CFM\":\"America/Edmonton\",\"CFN\":\"Europe/Dublin\",\"CFO\":\"America/Campo_Grande\",\"CFP\":\"Australia/Brisbane\",\"CFQ\":\"America/Vancouver\",\"CFR\":\"Europe/Paris\",\"CFS\":\"Australia/Sydney\",\"CFT\":\"America/Phoenix\",\"CFU\":\"Europe/Athens\",\"CFV\":\"America/Chicago\",\"CGA\":\"America/Anchorage\",\"CGB\":\"America/Campo_Grande\",\"CGC\":\"Pacific/Port_Moresby\",\"CGD\":\"Asia/Shanghai\",\"CGE\":\"America/New_York\",\"CGF\":\"America/New_York\",\"CGG\":\"Asia/Manila\",\"CGH\":\"America/Sao_Paulo\",\"CGI\":\"America/Chicago\",\"CGJ\":\"Africa/Lusaka\",\"CGK\":\"Asia/Jakarta\",\"CGM\":\"Asia/Manila\",\"CGN\":\"Europe/Berlin\",\"CGO\":\"Asia/Shanghai\",\"CGP\":\"Asia/Dhaka\",\"CGQ\":\"Asia/Shanghai\",\"CGR\":\"America/Campo_Grande\",\"CGS\":\"America/New_York\",\"CGT\":\"Africa/Nouakchott\",\"CGV\":\"Australia/Perth\",\"CGY\":\"Asia/Manila\",\"CGZ\":\"America/Phoenix\",\"CHA\":\"America/New_York\",\"CHB\":\"Asia/Karachi\",\"CHC\":\"Pacific/Auckland\",\"CHE\":\"Europe/Tallinn\",\"CHF\":\"Asia/Seoul\",\"CHG\":\"Asia/Shanghai\",\"CHH\":\"America/Lima\",\"CHJ\":\"Africa/Harare\",\"CHK\":\"America/Chicago\",\"CHL\":\"America/Denver\",\"CHM\":\"America/Lima\",\"CHN\":\"Asia/Seoul\",\"CHO\":\"America/New_York\",\"CHP\":\"America/Anchorage\",\"CHQ\":\"Europe/Athens\",\"CHR\":\"Europe/Paris\",\"CHS\":\"America/New_York\",\"CHT\":\"Pacific/Chatham\",\"CHU\":\"America/Anchorage\",\"CHV\":\"Europe/Lisbon\",\"CHX\":\"America/Panama\",\"CHY\":\"Pacific/Guadalcanal\",\"CHZ\":\"America/Los_Angeles\",\"CIA\":\"Europe/Rome\",\"CIC\":\"America/Los_Angeles\",\"CID\":\"America/Chicago\",\"CIE\":\"Australia/Perth\",\"CIF\":\"Asia/Shanghai\",\"CIG\":\"America/Denver\",\"CIH\":\"Asia/Shanghai\",\"CIJ\":\"America/La_Paz\",\"CIK\":\"America/Anchorage\",\"CIL\":\"America/Anchorage\",\"CIM\":\"America/Bogota\",\"CIN\":\"America/Chicago\",\"CIO\":\"America/Asuncion\",\"CIP\":\"Africa/Lusaka\",\"CIQ\":\"America/Guatemala\",\"CIR\":\"America/Chicago\",\"CIS\":\"Pacific/Enderbury\",\"CIT\":\"Asia/Almaty\",\"CIU\":\"America/New_York\",\"CIV\":\"America/Anchorage\",\"CIW\":\"America/St_Vincent\",\"CIX\":\"America/Lima\",\"CIY\":\"Europe/Rome\",\"CIZ\":\"America/Porto_Velho\",\"CJA\":\"America/Lima\",\"CJB\":\"Asia/Kolkata\",\"CJC\":\"America/Santiago\",\"CJD\":\"America/Bogota\",\"CJF\":\"Australia/Perth\",\"CJH\":\"America/Vancouver\",\"CJJ\":\"Asia/Seoul\",\"CJL\":\"Asia/Karachi\",\"CJM\":\"Asia/Bangkok\",\"CJN\":\"Asia/Jakarta\",\"CJS\":\"America/Ojinaga\",\"CJT\":\"America/Mexico_City\",\"CJU\":\"Asia/Seoul\",\"CKA\":\"America/Chicago\",\"CKB\":\"America/New_York\",\"CKC\":\"Europe/Kiev\",\"CKD\":\"America/Anchorage\",\"CKE\":\"America/Los_Angeles\",\"CKG\":\"Asia/Shanghai\",\"CKH\":\"Asia/Magadan\",\"CKI\":\"Australia/Darwin\",\"CKK\":\"America/Chicago\",\"CKL\":\"Europe/Moscow\",\"CKM\":\"America/Chicago\",\"CKN\":\"America/Chicago\",\"CKO\":\"America/Sao_Paulo\",\"CKR\":\"America/Los_Angeles\",\"CKS\":\"America/Belem\",\"CKT\":\"Asia/Tehran\",\"CKU\":\"America/Anchorage\",\"CKV\":\"America/Chicago\",\"CKW\":\"Australia/Perth\",\"CKX\":\"America/Anchorage\",\"CKY\":\"Africa/Conakry\",\"CKZ\":\"Europe/Istanbul\",\"CLA\":\"Asia/Dhaka\",\"CLD\":\"America/Los_Angeles\",\"CLE\":\"America/New_York\",\"CLF\":\"Europe/London\",\"CLG\":\"America/Los_Angeles\",\"CLH\":\"Australia/Sydney\",\"CLI\":\"America/Chicago\",\"CLJ\":\"Europe/Bucharest\",\"CLK\":\"America/Chicago\",\"CLL\":\"America/Chicago\",\"CLM\":\"America/Los_Angeles\",\"CLN\":\"America/Belem\",\"CLO\":\"America/Bogota\",\"CLP\":\"America/Anchorage\",\"CLQ\":\"America/Mexico_City\",\"CLR\":\"America/Los_Angeles\",\"CLS\":\"America/Los_Angeles\",\"CLT\":\"America/New_York\",\"CLU\":\"America/Indiana/Indianapolis\",\"CLV\":\"America/Sao_Paulo\",\"CLW\":\"America/New_York\",\"CLX\":\"America/Argentina/Buenos_Aires\",\"CLY\":\"Europe/Paris\",\"CLZ\":\"America/Caracas\",\"CMA\":\"Australia/Brisbane\",\"CMB\":\"Asia/Colombo\",\"CMC\":\"America/Belem\",\"CMD\":\"Australia/Sydney\",\"CME\":\"America/Mexico_City\",\"CMF\":\"Europe/Paris\",\"CMG\":\"America/Campo_Grande\",\"CMH\":\"America/New_York\",\"CMI\":\"America/Chicago\",\"CMJ\":\"Asia/Taipei\",\"CMK\":\"Africa/Blantyre\",\"CML\":\"Australia/Brisbane\",\"CMM\":\"America/Guatemala\",\"CMN\":\"Africa/Casablanca\",\"CMO\":\"Africa/Mogadishu\",\"CMP\":\"America/Belem\",\"CMQ\":\"Australia/Brisbane\",\"CMR\":\"Europe/Paris\",\"CMS\":\"Africa/Mogadishu\",\"CMT\":\"America/Belem\",\"CMU\":\"Pacific/Port_Moresby\",\"CMV\":\"Pacific/Auckland\",\"CMW\":\"America/Havana\",\"CMX\":\"America/New_York\",\"CMY\":\"America/Chicago\",\"CMZ\":\"Africa/Maputo\",\"CNA\":\"America/Hermosillo\",\"CNB\":\"Australia/Sydney\",\"CNC\":\"Australia/Brisbane\",\"CND\":\"Europe/Bucharest\",\"CNE\":\"America/Denver\",\"CNF\":\"America/Sao_Paulo\",\"CNG\":\"Europe/Paris\",\"CNH\":\"America/New_York\",\"CNI\":\"Asia/Shanghai\",\"CNJ\":\"Australia/Brisbane\",\"CNK\":\"America/Chicago\",\"CNL\":\"Europe/Copenhagen\",\"CNM\":\"America/Denver\",\"CNN\":\"Asia/Kolkata\",\"CNO\":\"America/Los_Angeles\",\"CNP\":\"America/Scoresbysund\",\"CNQ\":\"America/Argentina/Buenos_Aires\",\"CNR\":\"America/Santiago\",\"CNS\":\"Australia/Brisbane\",\"CNT\":\"America/Argentina/Buenos_Aires\",\"CNU\":\"America/Chicago\",\"CNV\":\"America/Belem\",\"CNW\":\"America/Chicago\",\"CNX\":\"Asia/Bangkok\",\"CNY\":\"America/Denver\",\"CNZ\":\"Africa/Luanda\",\"COA\":\"America/Los_Angeles\",\"COB\":\"Australia/Darwin\",\"COC\":\"America/Argentina/Buenos_Aires\",\"COD\":\"America/Denver\",\"COE\":\"America/Los_Angeles\",\"COF\":\"America/New_York\",\"COG\":\"America/Bogota\",\"COH\":\"Asia/Kolkata\",\"COI\":\"America/New_York\",\"COJ\":\"Australia/Sydney\",\"COK\":\"Asia/Kolkata\",\"COL\":\"Europe/London\",\"COM\":\"America/Chicago\",\"CON\":\"America/New_York\",\"COO\":\"Africa/Porto-Novo\",\"COP\":\"America/New_York\",\"COQ\":\"Asia/Ulaanbaatar\",\"COR\":\"America/Argentina/Buenos_Aires\",\"COS\":\"America/Denver\",\"COT\":\"America/Chicago\",\"COU\":\"America/Chicago\",\"COV\":\"Europe/Lisbon\",\"COW\":\"America/Santiago\",\"COY\":\"Australia/Perth\",\"COZ\":\"America/Santo_Domingo\",\"CPA\":\"Africa/Monrovia\",\"CPB\":\"America/Bogota\",\"CPC\":\"America/Argentina/Buenos_Aires\",\"CPD\":\"Australia/Adelaide\",\"CPE\":\"America/Mexico_City\",\"CPF\":\"Asia/Jakarta\",\"CPG\":\"America/Argentina/Buenos_Aires\",\"CPH\":\"Europe/Copenhagen\",\"CPI\":\"Pacific/Port_Moresby\",\"CPL\":\"America/Bogota\",\"CPM\":\"America/Los_Angeles\",\"CPN\":\"Pacific/Port_Moresby\",\"CPO\":\"America/Santiago\",\"CPP\":\"America/Santiago\",\"CPQ\":\"America/Sao_Paulo\",\"CPR\":\"America/Denver\",\"CPS\":\"America/Chicago\",\"CPT\":\"Africa/Johannesburg\",\"CPU\":\"America/Belem\",\"CPV\":\"America/Belem\",\"CPX\":\"America/Puerto_Rico\",\"CQA\":\"America/Campo_Grande\",\"CQD\":\"Asia/Tehran\",\"CQF\":\"Europe/Paris\",\"CQP\":\"Australia/Brisbane\",\"CQS\":\"America/Porto_Velho\",\"CQT\":\"America/Bogota\",\"CQW\":\"Asia/Shanghai\",\"CRA\":\"Europe/Bucharest\",\"CRB\":\"Australia/Sydney\",\"CRC\":\"America/Bogota\",\"CRD\":\"America/Argentina/Buenos_Aires\",\"CRE\":\"America/New_York\",\"CRF\":\"Africa/Bangui\",\"CRG\":\"America/New_York\",\"CRH\":\"Australia/Brisbane\",\"CRI\":\"America/Nassau\",\"CRJ\":\"Australia/Adelaide\",\"CRK\":\"Asia/Manila\",\"CRL\":\"Europe/Brussels\",\"CRM\":\"Asia/Manila\",\"CRO\":\"America/Los_Angeles\",\"CRP\":\"America/Chicago\",\"CRQ\":\"America/Belem\",\"CRR\":\"America/Argentina/Buenos_Aires\",\"CRS\":\"America/Chicago\",\"CRT\":\"America/Chicago\",\"CRU\":\"America/Grenada\",\"CRV\":\"Europe/Rome\",\"CRW\":\"America/New_York\",\"CRX\":\"America/Chicago\",\"CRY\":\"Australia/Perth\",\"CRZ\":\"Asia/Ashgabat\",\"CSA\":\"Europe/London\",\"CSB\":\"Europe/Bucharest\",\"CSC\":\"America/Costa_Rica\",\"CSD\":\"Australia/Darwin\",\"CSE\":\"America/Denver\",\"CSF\":\"Europe/Paris\",\"CSG\":\"America/New_York\",\"CSH\":\"Europe/Moscow\",\"CSI\":\"Australia/Sydney\",\"CSJ\":\"Asia/Ho_Chi_Minh\",\"CSK\":\"Africa/Dakar\",\"CSM\":\"America/Chicago\",\"CSN\":\"America/Los_Angeles\",\"CSO\":\"Europe/Berlin\",\"CSP\":\"America/Anchorage\",\"CSQ\":\"America/Chicago\",\"CSR\":\"America/Bogota\",\"CSS\":\"America/Campo_Grande\",\"CST\":\"Pacific/Fiji\",\"CSU\":\"America/Sao_Paulo\",\"CSV\":\"America/Chicago\",\"CSW\":\"America/Porto_Velho\",\"CSX\":\"Asia/Shanghai\",\"CSY\":\"Europe/Moscow\",\"CSZ\":\"America/Argentina/Buenos_Aires\",\"CTA\":\"Europe/Rome\",\"CTB\":\"America/Denver\",\"CTC\":\"America/Argentina/Buenos_Aires\",\"CTD\":\"America/Panama\",\"CTE\":\"America/Panama\",\"CTF\":\"America/Guatemala\",\"CTG\":\"America/Bogota\",\"CTH\":\"America/New_York\",\"CTI\":\"Africa/Luanda\",\"CTK\":\"America/Chicago\",\"CTL\":\"Australia/Brisbane\",\"CTM\":\"America/Cancun\",\"CTN\":\"Australia/Brisbane\",\"CTO\":\"America/New_York\",\"CTP\":\"America/Belem\",\"CTQ\":\"America/Sao_Paulo\",\"CTR\":\"Australia/Darwin\",\"CTS\":\"Asia/Tokyo\",\"CTT\":\"Europe/Paris\",\"CTU\":\"Asia/Shanghai\",\"CTW\":\"America/Phoenix\",\"CTX\":\"America/New_York\",\"CTY\":\"America/New_York\",\"CTZ\":\"America/New_York\",\"CUA\":\"America/Mazatlan\",\"CUB\":\"America/New_York\",\"CUC\":\"America/Bogota\",\"CUD\":\"Australia/Brisbane\",\"CUE\":\"America/Guayaquil\",\"CUF\":\"Europe/Rome\",\"CUG\":\"Australia/Sydney\",\"CUH\":\"America/Chicago\",\"CUI\":\"America/Bogota\",\"CUJ\":\"Asia/Manila\",\"CUK\":\"America/Belize\",\"CUL\":\"America/Mazatlan\",\"CUM\":\"America/Caracas\",\"CUN\":\"America/Cancun\",\"CUO\":\"America/Bogota\",\"CUP\":\"America/Caracas\",\"CUQ\":\"Australia/Brisbane\",\"CUR\":\"America/Curacao\",\"CUS\":\"America/Denver\",\"CUT\":\"America/Argentina/Buenos_Aires\",\"CUU\":\"America/Mazatlan\",\"CUV\":\"America/Caracas\",\"CUW\":\"America/Anchorage\",\"CUX\":\"America/Chicago\",\"CUY\":\"Australia/Perth\",\"CUZ\":\"America/Lima\",\"CVA\":\"America/New_York\",\"CVB\":\"Pacific/Port_Moresby\",\"CVC\":\"Australia/Adelaide\",\"CVE\":\"America/Bogota\",\"CVF\":\"Europe/Paris\",\"CVG\":\"America/New_York\",\"CVH\":\"America/Argentina/Buenos_Aires\",\"CVI\":\"America/Argentina/Buenos_Aires\",\"CVJ\":\"America/Mexico_City\",\"CVL\":\"Pacific/Port_Moresby\",\"CVM\":\"America/Mexico_City\",\"CVN\":\"America/Denver\",\"CVO\":\"America/Los_Angeles\",\"CVQ\":\"Australia/Perth\",\"CVR\":\"America/Los_Angeles\",\"CVS\":\"America/Denver\",\"CVT\":\"Europe/London\",\"CVU\":\"Atlantic/Azores\",\"CWA\":\"America/Chicago\",\"CWB\":\"America/Sao_Paulo\",\"CWC\":\"Europe/Kiev\",\"CWF\":\"America/Chicago\",\"CWG\":\"America/New_York\",\"CWI\":\"America/Chicago\",\"CWJ\":\"Asia/Shanghai\",\"CWL\":\"Europe/London\",\"CWO\":\"America/Chicago\",\"CWP\":\"Asia/Karachi\",\"CWR\":\"Australia/Adelaide\",\"CWS\":\"America/Los_Angeles\",\"CWT\":\"Australia/Sydney\",\"CWW\":\"Australia/Sydney\",\"CXA\":\"America/Caracas\",\"CXB\":\"Asia/Dhaka\",\"CXC\":\"America/Anchorage\",\"CXF\":\"America/Anchorage\",\"CXH\":\"America/Vancouver\",\"CXI\":\"Pacific/Kiritimati\",\"CXJ\":\"America/Sao_Paulo\",\"CXL\":\"America/Los_Angeles\",\"CXN\":\"Africa/Mogadishu\",\"CXO\":\"America/Chicago\",\"CXP\":\"Asia/Jakarta\",\"CXQ\":\"Australia/Perth\",\"CXR\":\"Asia/Ho_Chi_Minh\",\"CXT\":\"Australia/Brisbane\",\"CXY\":\"America/Nassau\",\"CYA\":\"America/Port-au-Prince\",\"CYB\":\"America/Cayman\",\"CYC\":\"America/Belize\",\"CYD\":\"America/Belize\",\"CYE\":\"America/New_York\",\"CYF\":\"America/Anchorage\",\"CYG\":\"Australia/Sydney\",\"CYI\":\"Asia/Taipei\",\"CYL\":\"America/Tegucigalpa\",\"CYM\":\"America/Anchorage\",\"CYO\":\"America/Havana\",\"CYP\":\"Asia/Manila\",\"CYR\":\"America/Montevideo\",\"CYS\":\"America/Denver\",\"CYT\":\"America/Anchorage\",\"CYU\":\"Asia/Manila\",\"CYW\":\"America/Mexico_City\",\"CYX\":\"Asia/Magadan\",\"CYZ\":\"Asia/Manila\",\"CZA\":\"America/Mexico_City\",\"CZB\":\"America/Sao_Paulo\",\"CZC\":\"America/Anchorage\",\"CZE\":\"America/Caracas\",\"CZF\":\"America/Anchorage\",\"CZH\":\"America/Belize\",\"CZJ\":\"America/Panama\",\"CZK\":\"America/Los_Angeles\",\"CZL\":\"Africa/Algiers\",\"CZM\":\"America/Cancun\",\"CZN\":\"America/Anchorage\",\"CZO\":\"America/Anchorage\",\"CZP\":\"America/Anchorage\",\"CZS\":\"America/Rio_Branco\",\"CZT\":\"America/Chicago\",\"CZU\":\"America/Bogota\",\"CZW\":\"Europe/Warsaw\",\"CZX\":\"Asia/Shanghai\",\"CZY\":\"Australia/Brisbane\",\"CZZ\":\"America/Los_Angeles\",\"DAA\":\"America/New_York\",\"DAB\":\"America/New_York\",\"DAC\":\"Asia/Dhaka\",\"DAD\":\"Asia/Ho_Chi_Minh\",\"DAE\":\"Asia/Kolkata\",\"DAF\":\"Pacific/Port_Moresby\",\"DAG\":\"America/Los_Angeles\",\"DAH\":\"Asia/Aden\",\"DAI\":\"Asia/Kolkata\",\"DAJ\":\"Australia/Brisbane\",\"DAK\":\"Africa/Cairo\",\"DAL\":\"America/Chicago\",\"DAM\":\"Asia/Damascus\",\"DAN\":\"America/New_York\",\"DAO\":\"Pacific/Port_Moresby\",\"DAP\":\"Asia/Kathmandu\",\"DAR\":\"Africa/Dar_es_Salaam\",\"DAS\":\"America/Edmonton\",\"DAT\":\"Asia/Shanghai\",\"DAU\":\"Pacific/Port_Moresby\",\"DAV\":\"America/Panama\",\"DAX\":\"Asia/Shanghai\",\"DAY\":\"America/New_York\",\"DAZ\":\"Asia/Kabul\",\"DBA\":\"Asia/Karachi\",\"DBB\":\"Africa/Cairo\",\"DBC\":\"Asia/Shanghai\",\"DBD\":\"Asia/Kolkata\",\"DBM\":\"Africa/Addis_Ababa\",\"DBN\":\"America/New_York\",\"DBO\":\"Australia/Sydney\",\"DBP\":\"Pacific/Port_Moresby\",\"DBQ\":\"America/Chicago\",\"DBS\":\"America/Denver\",\"DBT\":\"Africa/Addis_Ababa\",\"DBU\":\"Asia/Colombo\",\"DBV\":\"Europe/Zagreb\",\"DBY\":\"Australia/Brisbane\",\"DCA\":\"America/New_York\",\"DCF\":\"America/Dominica\",\"DCI\":\"Europe/Rome\",\"DCK\":\"America/Anchorage\",\"DCM\":\"Europe/Paris\",\"DCN\":\"Australia/Perth\",\"DCR\":\"America/Indiana/Indianapolis\",\"DCT\":\"America/Nassau\",\"DCU\":\"America/Chicago\",\"DCY\":\"Asia/Shanghai\",\"DDC\":\"America/Chicago\",\"DDD\":\"Indian/Maldives\",\"DDG\":\"Asia/Shanghai\",\"DDI\":\"Australia/Brisbane\",\"DDM\":\"Pacific/Port_Moresby\",\"DDN\":\"Australia/Brisbane\",\"DDU\":\"Asia/Karachi\",\"DEA\":\"Asia/Karachi\",\"DEB\":\"Europe/Budapest\",\"DEC\":\"America/Chicago\",\"DED\":\"Asia/Kolkata\",\"DEE\":\"Asia/Magadan\",\"DEF\":\"Asia/Tehran\",\"DEH\":\"America/Chicago\",\"DEI\":\"Indian/Mahe\",\"DEL\":\"Asia/Kolkata\",\"DEM\":\"Africa/Addis_Ababa\",\"DEN\":\"America/Denver\",\"DEO\":\"America/New_York\",\"DEP\":\"Asia/Kolkata\",\"DEQ\":\"Asia/Shanghai\",\"DER\":\"Pacific/Port_Moresby\",\"DES\":\"Indian/Mahe\",\"DET\":\"America/New_York\",\"DEX\":\"Asia/Jayapura\",\"DEZ\":\"Asia/Damascus\",\"DFI\":\"America/New_York\",\"DFP\":\"Australia/Brisbane\",\"DFW\":\"America/Chicago\",\"DGA\":\"America/Belize\",\"DGB\":\"America/Anchorage\",\"DGC\":\"Africa/Addis_Ababa\",\"DGD\":\"Australia/Perth\",\"DGE\":\"Australia/Sydney\",\"DGF\":\"America/Vancouver\",\"DGL\":\"America/Phoenix\",\"DGM\":\"Asia/Colombo\",\"DGN\":\"America/New_York\",\"DGO\":\"America/Mexico_City\",\"DGP\":\"Europe/Riga\",\"DGR\":\"Pacific/Auckland\",\"DGT\":\"Asia/Manila\",\"DGU\":\"Africa/Ouagadougou\",\"DGW\":\"America/Denver\",\"DHA\":\"Asia/Riyadh\",\"DHB\":\"America/Los_Angeles\",\"DHD\":\"Australia/Brisbane\",\"DHF\":\"Asia/Dubai\",\"DHG\":\"Asia/Vladivostok\",\"DHI\":\"Asia/Kathmandu\",\"DHL\":\"Asia/Aden\",\"DHM\":\"Asia/Kolkata\",\"DHN\":\"America/Chicago\",\"DHR\":\"Europe/Amsterdam\",\"DHT\":\"America/Chicago\",\"DIB\":\"Asia/Kolkata\",\"DIC\":\"Africa/Lubumbashi\",\"DIE\":\"Indian/Antananarivo\",\"DIG\":\"Asia/Shanghai\",\"DIJ\":\"Europe/Paris\",\"DIK\":\"America/Denver\",\"DIL\":\"Asia/Dili\",\"DIM\":\"Africa/Abidjan\",\"DIN\":\"Asia/Ho_Chi_Minh\",\"DIO\":\"America/Anchorage\",\"DIP\":\"Africa/Ouagadougou\",\"DIQ\":\"America/Sao_Paulo\",\"DIR\":\"Africa/Addis_Ababa\",\"DIS\":\"Africa/Brazzaville\",\"DIU\":\"Asia/Kolkata\",\"DIV\":\"Africa/Abidjan\",\"DIW\":\"Asia/Colombo\",\"DIY\":\"Europe/Istanbul\",\"DJA\":\"Africa/Porto-Novo\",\"DJB\":\"Asia/Jakarta\",\"DJE\":\"Africa/Tunis\",\"DJG\":\"Africa/Algiers\",\"DJJ\":\"Asia/Jayapura\",\"DJM\":\"Africa/Brazzaville\",\"DJN\":\"America/Anchorage\",\"DJO\":\"Africa/Abidjan\",\"DJU\":\"Atlantic/Reykjavik\",\"DKA\":\"Africa/Lagos\",\"DKI\":\"Australia/Brisbane\",\"DKK\":\"America/New_York\",\"DKR\":\"Africa/Dakar\",\"DKS\":\"Asia/Krasnoyarsk\",\"DKV\":\"Australia/Darwin\",\"DLA\":\"Africa/Douala\",\"DLC\":\"Asia/Shanghai\",\"DLD\":\"Europe/Oslo\",\"DLE\":\"Europe/Paris\",\"DLF\":\"America/Chicago\",\"DLG\":\"America/Anchorage\",\"DLH\":\"America/Chicago\",\"DLI\":\"Asia/Ho_Chi_Minh\",\"DLK\":\"Australia/Adelaide\",\"DLL\":\"America/New_York\",\"DLM\":\"Europe/Istanbul\",\"DLN\":\"America/Denver\",\"DLO\":\"America/Anchorage\",\"DLP\":\"Europe/Paris\",\"DLR\":\"Asia/Vladivostok\",\"DLS\":\"America/Los_Angeles\",\"DLU\":\"Asia/Shanghai\",\"DLV\":\"Australia/Darwin\",\"DLY\":\"Pacific/Efate\",\"DLZ\":\"Asia/Ulaanbaatar\",\"DMA\":\"America/Phoenix\",\"DMB\":\"Asia/Almaty\",\"DMD\":\"Australia/Brisbane\",\"DME\":\"Europe/Moscow\",\"DMK\":\"Asia/Bangkok\",\"DMM\":\"Asia/Riyadh\",\"DMN\":\"America/Denver\",\"DMO\":\"America/Chicago\",\"DMR\":\"Asia/Aden\",\"DMT\":\"America/Campo_Grande\",\"DMU\":\"Asia/Kolkata\",\"DNA\":\"Asia/Tokyo\",\"DNB\":\"Australia/Brisbane\",\"DNC\":\"Africa/Abidjan\",\"DND\":\"Europe/London\",\"DNF\":\"Africa/Tripoli\",\"DNG\":\"Australia/Perth\",\"DNH\":\"Asia/Shanghai\",\"DNI\":\"Africa/Khartoum\",\"DNK\":\"Europe/Kiev\",\"DNL\":\"America/New_York\",\"DNM\":\"Australia/Perth\",\"DNN\":\"America/New_York\",\"DNO\":\"America/Belem\",\"DNP\":\"Asia/Kathmandu\",\"DNQ\":\"Australia/Sydney\",\"DNR\":\"Europe/Paris\",\"DNS\":\"America/Chicago\",\"DNU\":\"Pacific/Port_Moresby\",\"DNV\":\"America/Chicago\",\"DNX\":\"Africa/Khartoum\",\"DNZ\":\"Europe/Istanbul\",\"DOA\":\"Indian/Antananarivo\",\"DOB\":\"Asia/Jayapura\",\"DOC\":\"Europe/London\",\"DOD\":\"Africa/Dar_es_Salaam\",\"DOE\":\"America/Paramaribo\",\"DOF\":\"America/Anchorage\",\"DOG\":\"Africa/Khartoum\",\"DOH\":\"Asia/Qatar\",\"DOI\":\"Pacific/Port_Moresby\",\"DOL\":\"Europe/Paris\",\"DOM\":\"America/Dominica\",\"DON\":\"America/Guatemala\",\"DOO\":\"Pacific/Port_Moresby\",\"DOP\":\"Asia/Kathmandu\",\"DOR\":\"Africa/Ouagadougou\",\"DOS\":\"Pacific/Bougainville\",\"DOU\":\"America/Campo_Grande\",\"DOV\":\"America/New_York\",\"DOX\":\"Australia/Perth\",\"DOY\":\"Asia/Shanghai\",\"DPA\":\"America/Chicago\",\"DPB\":\"America/Argentina/Salta\",\"DPE\":\"Europe/Paris\",\"DPG\":\"America/Denver\",\"DPK\":\"America/New_York\",\"DPL\":\"Asia/Manila\",\"DPO\":\"Australia/Hobart\",\"DPS\":\"Asia/Makassar\",\"DPT\":\"Asia/Vladivostok\",\"DPU\":\"Pacific/Port_Moresby\",\"DQA\":\"Asia/Shanghai\",\"DQM\":\"Asia/Muscat\",\"DQO\":\"America/Chicago\",\"DRA\":\"America/Los_Angeles\",\"DRB\":\"Australia/Perth\",\"DRC\":\"Africa/Luanda\",\"DRD\":\"Australia/Brisbane\",\"DRE\":\"America/New_York\",\"DRF\":\"America/Anchorage\",\"DRG\":\"America/Anchorage\",\"DRH\":\"Asia/Jayapura\",\"DRI\":\"America/Chicago\",\"DRJ\":\"America/Paramaribo\",\"DRK\":\"America/Costa_Rica\",\"DRM\":\"Europe/Athens\",\"DRN\":\"Australia/Brisbane\",\"DRO\":\"America/Denver\",\"DRR\":\"Australia/Brisbane\",\"DRS\":\"Europe/Berlin\",\"DRT\":\"America/Chicago\",\"DRU\":\"America/Denver\",\"DRV\":\"Indian/Maldives\",\"DRW\":\"Australia/Darwin\",\"DRY\":\"Australia/Perth\",\"DSA\":\"Europe/London\",\"DSC\":\"Africa/Douala\",\"DSD\":\"America/Guadeloupe\",\"DSE\":\"Africa/Addis_Ababa\",\"DSG\":\"Asia/Manila\",\"DSI\":\"America/Chicago\",\"DSK\":\"Asia/Karachi\",\"DSL\":\"Africa/Freetown\",\"DSM\":\"America/Chicago\",\"DSN\":\"Asia/Shanghai\",\"DSS\":\"Africa/Dakar\",\"DSV\":\"America/New_York\",\"DSX\":\"Asia/Taipei\",\"DTA\":\"America/Denver\",\"DTB\":\"Asia/Jakarta\",\"DTD\":\"Asia/Makassar\",\"DTE\":\"Asia/Manila\",\"DTH\":\"America/Los_Angeles\",\"DTI\":\"America/Sao_Paulo\",\"DTL\":\"America/Chicago\",\"DTM\":\"Europe/Berlin\",\"DTN\":\"America/Chicago\",\"DTR\":\"America/Los_Angeles\",\"DTU\":\"Asia/Shanghai\",\"DTW\":\"America/New_York\",\"DUA\":\"America/Chicago\",\"DUB\":\"Europe/Dublin\",\"DUC\":\"America/Chicago\",\"DUD\":\"Pacific/Auckland\",\"DUE\":\"Africa/Luanda\",\"DUF\":\"America/New_York\",\"DUG\":\"America/Phoenix\",\"DUH\":\"Europe/Tirane\",\"DUJ\":\"America/New_York\",\"DUK\":\"Africa/Johannesburg\",\"DUM\":\"Asia/Jakarta\",\"DUN\":\"America/Godthab\",\"DUQ\":\"America/Vancouver\",\"DUR\":\"Africa/Johannesburg\",\"DUS\":\"Europe/Berlin\",\"DUT\":\"America/Anchorage\",\"DVA\":\"Europe/Bucharest\",\"DVD\":\"Indian/Antananarivo\",\"DVK\":\"America/Edmonton\",\"DVL\":\"America/Chicago\",\"DVN\":\"America/Chicago\",\"DVO\":\"Asia/Manila\",\"DVP\":\"Australia/Brisbane\",\"DVR\":\"Australia/Darwin\",\"DVT\":\"America/Phoenix\",\"DWA\":\"Africa/Blantyre\",\"DWB\":\"Indian/Antananarivo\",\"DWC\":\"Asia/Dubai\",\"DWD\":\"Asia/Riyadh\",\"DWF\":\"America/New_York\",\"DWH\":\"America/Chicago\",\"DWN\":\"America/Chicago\",\"DWO\":\"Asia/Colombo\",\"DWR\":\"Asia/Kabul\",\"DWS\":\"America/New_York\",\"DXA\":\"Europe/Paris\",\"DXB\":\"Asia/Dubai\",\"DXD\":\"Australia/Brisbane\",\"DXE\":\"America/Chicago\",\"DXR\":\"America/New_York\",\"DYA\":\"Australia/Brisbane\",\"DYG\":\"Asia/Shanghai\",\"DYL\":\"America/New_York\",\"DYM\":\"Australia/Brisbane\",\"DYR\":\"Asia/Anadyr\",\"DYS\":\"America/Chicago\",\"DYU\":\"Asia/Dushanbe\",\"DYW\":\"Australia/Darwin\",\"DZA\":\"Indian/Mayotte\",\"DZI\":\"America/Bogota\",\"DZN\":\"Asia/Almaty\",\"DZO\":\"America/Montevideo\",\"DZU\":\"Asia/Shanghai\",\"EAA\":\"America/Anchorage\",\"EAB\":\"Asia/Aden\",\"EAE\":\"Pacific/Efate\",\"EAL\":\"Pacific/Majuro\",\"EAM\":\"Asia/Riyadh\",\"EAN\":\"America/Denver\",\"EAR\":\"America/Chicago\",\"EAS\":\"Europe/Madrid\",\"EAT\":\"America/Los_Angeles\",\"EAU\":\"America/Chicago\",\"EBA\":\"Europe/Rome\",\"EBB\":\"Africa/Kampala\",\"EBD\":\"Africa/Khartoum\",\"EBG\":\"America/Bogota\",\"EBH\":\"Africa/Algiers\",\"EBJ\":\"Europe/Copenhagen\",\"EBL\":\"Asia/Baghdad\",\"EBM\":\"Africa/Tunis\",\"EBN\":\"Pacific/Majuro\",\"EBO\":\"Pacific/Majuro\",\"EBR\":\"America/Chicago\",\"EBS\":\"America/Chicago\",\"EBU\":\"Europe/Paris\",\"EBW\":\"Africa/Douala\",\"ECA\":\"America/New_York\",\"ECG\":\"America/New_York\",\"ECH\":\"Australia/Sydney\",\"ECI\":\"America/Managua\",\"ECN\":\"Asia/Famagusta\",\"ECO\":\"America/Bogota\",\"ECP\":\"America/Chicago\",\"ECR\":\"America/Bogota\",\"ECS\":\"America/Denver\",\"EDA\":\"America/Anchorage\",\"EDB\":\"Africa/Khartoum\",\"EDC\":\"America/Chicago\",\"EDD\":\"Australia/Darwin\",\"EDE\":\"America/New_York\",\"EDF\":\"America/Anchorage\",\"EDG\":\"America/New_York\",\"EDI\":\"Europe/London\",\"EDK\":\"America/Chicago\",\"EDL\":\"Africa/Nairobi\",\"EDM\":\"Europe/Paris\",\"EDN\":\"Asia/Vladivostok\",\"EDO\":\"Europe/Istanbul\",\"EDQ\":\"America/Tegucigalpa\",\"EDR\":\"Australia/Brisbane\",\"EDW\":\"America/Los_Angeles\",\"EED\":\"America/Los_Angeles\",\"EEK\":\"America/Anchorage\",\"EEN\":\"America/New_York\",\"EFB\":\"America/Anchorage\",\"EFD\":\"America/Chicago\",\"EFG\":\"Pacific/Port_Moresby\",\"EFK\":\"America/New_York\",\"EFL\":\"Europe/Athens\",\"EFW\":\"America/Chicago\",\"EGA\":\"Pacific/Port_Moresby\",\"EGC\":\"Europe/Paris\",\"EGE\":\"America/Denver\",\"EGI\":\"America/Chicago\",\"EGL\":\"Africa/Addis_Ababa\",\"EGM\":\"Pacific/Guadalcanal\",\"EGN\":\"Africa/Khartoum\",\"EGO\":\"Europe/Moscow\",\"EGP\":\"America/Chicago\",\"EGS\":\"Atlantic/Reykjavik\",\"EGV\":\"America/Chicago\",\"EGX\":\"America/Anchorage\",\"EHL\":\"America/Argentina/Buenos_Aires\",\"EHM\":\"America/Anchorage\",\"EIA\":\"Pacific/Port_Moresby\",\"EIB\":\"Europe/Berlin\",\"EIE\":\"Asia/Krasnoyarsk\",\"EIH\":\"Australia/Brisbane\",\"EIL\":\"America/Anchorage\",\"EIN\":\"Europe/Amsterdam\",\"EIS\":\"America/Tortola\",\"EIY\":\"Asia/Jerusalem\",\"EJA\":\"America/Bogota\",\"EJH\":\"Asia/Riyadh\",\"EJN\":\"Asia/Shanghai\",\"EJT\":\"Pacific/Majuro\",\"EKA\":\"America/Los_Angeles\",\"EKB\":\"Asia/Almaty\",\"EKD\":\"Australia/Darwin\",\"EKE\":\"America/Guyana\",\"EKI\":\"America/Indiana/Indianapolis\",\"EKN\":\"America/New_York\",\"EKO\":\"America/Los_Angeles\",\"EKS\":\"Asia/Magadan\",\"EKT\":\"Europe/Stockholm\",\"EKX\":\"America/New_York\",\"ELA\":\"America/Chicago\",\"ELB\":\"America/Bogota\",\"ELC\":\"Australia/Darwin\",\"ELD\":\"America/Chicago\",\"ELE\":\"America/Panama\",\"ELF\":\"Africa/Khartoum\",\"ELG\":\"Africa/Algiers\",\"ELH\":\"America/Nassau\",\"ELI\":\"America/Anchorage\",\"ELJ\":\"America/Bogota\",\"ELK\":\"America/Chicago\",\"ELL\":\"Africa/Johannesburg\",\"ELM\":\"America/New_York\",\"ELN\":\"America/Los_Angeles\",\"ELO\":\"America/Argentina/Buenos_Aires\",\"ELP\":\"America/Denver\",\"ELQ\":\"Asia/Riyadh\",\"ELR\":\"Asia/Jayapura\",\"ELS\":\"Africa/Johannesburg\",\"ELT\":\"Africa/Cairo\",\"ELU\":\"Africa/Algiers\",\"ELV\":\"America/Anchorage\",\"ELW\":\"America/Anchorage\",\"ELX\":\"America/Caracas\",\"ELY\":\"America/Los_Angeles\",\"ELZ\":\"America/New_York\",\"EMA\":\"Europe/London\",\"EMB\":\"America/Los_Angeles\",\"EMD\":\"Australia/Brisbane\",\"EME\":\"Europe/Berlin\",\"EMG\":\"Africa/Johannesburg\",\"EMI\":\"Pacific/Port_Moresby\",\"EMK\":\"America/Anchorage\",\"EML\":\"Europe/Zurich\",\"EMM\":\"America/Denver\",\"EMN\":\"Africa/Nouakchott\",\"EMO\":\"Pacific/Port_Moresby\",\"EMP\":\"America/Chicago\",\"EMR\":\"America/Guatemala\",\"EMS\":\"Pacific/Port_Moresby\",\"EMT\":\"America/Los_Angeles\",\"EMX\":\"America/Argentina/Buenos_Aires\",\"EMY\":\"Africa/Cairo\",\"ENA\":\"America/Anchorage\",\"ENB\":\"Australia/Perth\",\"ENC\":\"Europe/Paris\",\"END\":\"America/Chicago\",\"ENE\":\"Asia/Makassar\",\"ENF\":\"Europe/Helsinki\",\"ENH\":\"Asia/Shanghai\",\"ENI\":\"Asia/Manila\",\"ENJ\":\"America/Guatemala\",\"ENK\":\"Europe/London\",\"ENL\":\"America/Chicago\",\"ENN\":\"America/Anchorage\",\"ENO\":\"America/Asuncion\",\"ENQ\":\"America/Tegucigalpa\",\"ENS\":\"Europe/Amsterdam\",\"ENT\":\"Pacific/Majuro\",\"ENU\":\"Africa/Lagos\",\"ENV\":\"America/Denver\",\"ENW\":\"America/Chicago\",\"ENY\":\"Asia/Shanghai\",\"EOH\":\"America/Bogota\",\"EOI\":\"Europe/London\",\"EOK\":\"America/Chicago\",\"EOR\":\"America/Caracas\",\"EOS\":\"America/Chicago\",\"EOZ\":\"America/Caracas\",\"EPA\":\"America/Argentina/Buenos_Aires\",\"EPG\":\"America/Chicago\",\"EPH\":\"America/Los_Angeles\",\"EPI\":\"Pacific/Efate\",\"EPK\":\"Asia/Nicosia\",\"EPL\":\"Europe/Paris\",\"EPN\":\"Africa/Brazzaville\",\"EPR\":\"Australia/Perth\",\"EPS\":\"America/Santo_Domingo\",\"EPT\":\"Pacific/Port_Moresby\",\"EPU\":\"Europe/Tallinn\",\"EQS\":\"America/Argentina/Buenos_Aires\",\"ERA\":\"Africa/Mogadishu\",\"ERB\":\"Australia/Adelaide\",\"ERC\":\"Europe/Istanbul\",\"ERD\":\"Europe/Kiev\",\"ERE\":\"Pacific/Port_Moresby\",\"ERF\":\"Europe/Berlin\",\"ERG\":\"Asia/Irkutsk\",\"ERH\":\"Africa/Casablanca\",\"ERI\":\"America/New_York\",\"ERL\":\"Asia/Shanghai\",\"ERM\":\"America/Sao_Paulo\",\"ERN\":\"America/Eirunepe\",\"ERO\":\"America/Anchorage\",\"ERQ\":\"Australia/Brisbane\",\"ERR\":\"America/New_York\",\"ERS\":\"Africa/Windhoek\",\"ERT\":\"Asia/Ulaanbaatar\",\"ERU\":\"Pacific/Port_Moresby\",\"ERV\":\"America/Chicago\",\"ERZ\":\"Europe/Istanbul\",\"ESA\":\"Pacific/Port_Moresby\",\"ESB\":\"Europe/Istanbul\",\"ESC\":\"America/New_York\",\"ESD\":\"America/Los_Angeles\",\"ESE\":\"America/Tijuana\",\"ESF\":\"America/Chicago\",\"ESG\":\"America/Asuncion\",\"ESH\":\"Europe/London\",\"ESI\":\"America/Sao_Paulo\",\"ESK\":\"Europe/Istanbul\",\"ESL\":\"Europe/Moscow\",\"ESM\":\"America/Guayaquil\",\"ESN\":\"America/New_York\",\"ESO\":\"America/Denver\",\"ESP\":\"America/New_York\",\"ESR\":\"America/Santiago\",\"ESS\":\"Europe/Berlin\",\"EST\":\"America/Chicago\",\"ESU\":\"Africa/Casablanca\",\"ESW\":\"America/Los_Angeles\",\"ETB\":\"America/Chicago\",\"ETD\":\"Australia/Adelaide\",\"ETE\":\"Africa/Addis_Ababa\",\"ETH\":\"Asia/Jerusalem\",\"ETL\":\"Asia/Vladivostok\",\"ETM\":\"Asia/Jerusalem\",\"ETN\":\"America/Chicago\",\"ETR\":\"America/Guayaquil\",\"ETS\":\"America/Chicago\",\"ETZ\":\"Europe/Paris\",\"EUA\":\"Pacific/Tongatapu\",\"EUC\":\"Australia/Perth\",\"EUE\":\"America/Los_Angeles\",\"EUF\":\"America/Chicago\",\"EUG\":\"America/Los_Angeles\",\"EUM\":\"Europe/Berlin\",\"EUN\":\"Africa/Casablanca\",\"EUQ\":\"Asia/Manila\",\"EUX\":\"America/Curacao\",\"EVA\":\"America/Chicago\",\"EVD\":\"Australia/Darwin\",\"EVE\":\"Europe/Oslo\",\"EVG\":\"Europe/Stockholm\",\"EVH\":\"Australia/Sydney\",\"EVM\":\"America/Chicago\",\"EVN\":\"Asia/Yerevan\",\"EVV\":\"America/Chicago\",\"EVW\":\"America/Denver\",\"EVX\":\"Europe/Paris\",\"EWB\":\"America/New_York\",\"EWD\":\"America/Anchorage\",\"EWE\":\"Asia/Jayapura\",\"EWI\":\"Asia/Jayapura\",\"EWK\":\"America/Chicago\",\"EWN\":\"America/New_York\",\"EWO\":\"Africa/Brazzaville\",\"EWR\":\"America/New_York\",\"EWY\":\"Europe/London\",\"EXI\":\"America/Anchorage\",\"EXM\":\"Australia/Perth\",\"EXT\":\"Europe/London\",\"EYK\":\"Asia/Yekaterinburg\",\"EYL\":\"Africa/Bamako\",\"EYP\":\"America/Bogota\",\"EYR\":\"America/Los_Angeles\",\"EYS\":\"Africa/Nairobi\",\"EYW\":\"America/New_York\",\"EZE\":\"America/Argentina/Buenos_Aires\",\"EZS\":\"Europe/Istanbul\",\"EZV\":\"Asia/Yekaterinburg\",\"FAA\":\"Africa/Conakry\",\"FAB\":\"Europe/London\",\"FAC\":\"Pacific/Tahiti\",\"FAE\":\"Atlantic/Faroe\",\"FAF\":\"America/New_York\",\"FAG\":\"Atlantic/Reykjavik\",\"FAH\":\"Asia/Kabul\",\"FAI\":\"America/Anchorage\",\"FAJ\":\"America/Puerto_Rico\",\"FAK\":\"America/Anchorage\",\"FAL\":\"America/Chicago\",\"FAM\":\"America/Chicago\",\"FAN\":\"Europe/Oslo\",\"FAO\":\"Europe/Lisbon\",\"FAQ\":\"Pacific/Port_Moresby\",\"FAR\":\"America/Chicago\",\"FAS\":\"Atlantic/Reykjavik\",\"FAT\":\"America/Los_Angeles\",\"FAU\":\"Asia/Muscat\",\"FAV\":\"Pacific/Tahiti\",\"FAY\":\"America/New_York\",\"FAZ\":\"Asia/Tehran\",\"FBA\":\"America/Porto_Velho\",\"FBD\":\"Asia/Kabul\",\"FBE\":\"America/Sao_Paulo\",\"FBG\":\"America/New_York\",\"FBK\":\"America/Anchorage\",\"FBL\":\"America/Chicago\",\"FBM\":\"Africa/Lubumbashi\",\"FBR\":\"America/Denver\",\"FBS\":\"America/Los_Angeles\",\"FBY\":\"America/Chicago\",\"FCA\":\"America/Denver\",\"FCB\":\"Africa/Johannesburg\",\"FCH\":\"America/Los_Angeles\",\"FCM\":\"America/Chicago\",\"FCN\":\"Europe/Berlin\",\"FCO\":\"Europe/Rome\",\"FCS\":\"America/Denver\",\"FCT\":\"America/Los_Angeles\",\"FCY\":\"America/Chicago\",\"FDB\":\"America/Campo_Grande\",\"FDE\":\"Europe/Oslo\",\"FDF\":\"America/Martinique\",\"FDH\":\"Europe/Berlin\",\"FDK\":\"America/New_York\",\"FDR\":\"America/Chicago\",\"FDU\":\"Africa/Kinshasa\",\"FDY\":\"America/New_York\",\"FEA\":\"Europe/London\",\"FEB\":\"Asia/Kathmandu\",\"FEC\":\"America/Belem\",\"FEG\":\"Asia/Tashkent\",\"FEJ\":\"America/Rio_Branco\",\"FEK\":\"Africa/Abidjan\",\"FEL\":\"Europe/Berlin\",\"FEN\":\"America/Noronha\",\"FEP\":\"America/Chicago\",\"FES\":\"Europe/Madrid\",\"FET\":\"America/Chicago\",\"FEW\":\"America/Denver\",\"FEZ\":\"Africa/Casablanca\",\"FFA\":\"America/New_York\",\"FFD\":\"Europe/London\",\"FFL\":\"America/Chicago\",\"FFM\":\"America/Chicago\",\"FFO\":\"America/New_York\",\"FFT\":\"America/New_York\",\"FFU\":\"America/Santiago\",\"FGD\":\"Africa/Nouakchott\",\"FGI\":\"Pacific/Apia\",\"FGL\":\"Pacific/Auckland\",\"FGR\":\"Europe/Madrid\",\"FGU\":\"Pacific/Tahiti\",\"FHU\":\"America/Phoenix\",\"FHZ\":\"Pacific/Tahiti\",\"FIC\":\"America/Anchorage\",\"FID\":\"America/New_York\",\"FIE\":\"Europe/London\",\"FIG\":\"Africa/Conakry\",\"FIH\":\"Africa/Kinshasa\",\"FIK\":\"Australia/Darwin\",\"FIL\":\"America/Denver\",\"FIN\":\"Pacific/Port_Moresby\",\"FIV\":\"America/Anchorage\",\"FIZ\":\"Australia/Perth\",\"FJR\":\"Asia/Dubai\",\"FKB\":\"Europe/Berlin\",\"FKH\":\"Europe/London\",\"FKI\":\"Africa/Lubumbashi\",\"FKJ\":\"Asia/Tokyo\",\"FKL\":\"America/New_York\",\"FKN\":\"America/New_York\",\"FKQ\":\"Asia/Jayapura\",\"FKS\":\"Asia/Tokyo\",\"FLA\":\"America/Bogota\",\"FLB\":\"America/Belem\",\"FLC\":\"Australia/Sydney\",\"FLD\":\"America/Chicago\",\"FLF\":\"Europe/Berlin\",\"FLG\":\"America/Phoenix\",\"FLH\":\"Europe/London\",\"FLI\":\"Atlantic/Reykjavik\",\"FLJ\":\"America/Anchorage\",\"FLL\":\"America/New_York\",\"FLM\":\"America/Asuncion\",\"FLN\":\"America/Sao_Paulo\",\"FLO\":\"America/New_York\",\"FLP\":\"America/Chicago\",\"FLR\":\"Europe/Rome\",\"FLS\":\"Australia/Hobart\",\"FLT\":\"America/Anchorage\",\"FLV\":\"America/Chicago\",\"FLW\":\"Atlantic/Azores\",\"FLX\":\"America/Los_Angeles\",\"FLY\":\"Australia/Sydney\",\"FLZ\":\"Asia/Jakarta\",\"FMA\":\"America/Argentina/Buenos_Aires\",\"FMC\":\"America/Anchorage\",\"FME\":\"America/New_York\",\"FMG\":\"America/Costa_Rica\",\"FMH\":\"America/New_York\",\"FMI\":\"Africa/Lubumbashi\",\"FMM\":\"Europe/Berlin\",\"FMN\":\"America/Denver\",\"FMO\":\"Europe/Berlin\",\"FMS\":\"America/Chicago\",\"FMU\":\"America/Los_Angeles\",\"FMY\":\"America/New_York\",\"FNA\":\"Africa/Freetown\",\"FNB\":\"Europe/Berlin\",\"FNC\":\"Europe/Lisbon\",\"FND\":\"Indian/Maldives\",\"FNE\":\"Pacific/Port_Moresby\",\"FNG\":\"Africa/Ouagadougou\",\"FNH\":\"Africa/Addis_Ababa\",\"FNI\":\"Europe/Paris\",\"FNJ\":\"Asia/Pyongyang\",\"FNK\":\"America/Anchorage\",\"FNL\":\"America/Denver\",\"FNR\":\"America/Anchorage\",\"FNT\":\"America/New_York\",\"FOA\":\"Europe/London\",\"FOB\":\"America/Los_Angeles\",\"FOC\":\"Asia/Shanghai\",\"FOD\":\"America/Chicago\",\"FOE\":\"America/Chicago\",\"FOG\":\"Europe/Rome\",\"FOK\":\"America/New_York\",\"FOM\":\"Africa/Douala\",\"FON\":\"America/Costa_Rica\",\"FOO\":\"Asia/Jayapura\",\"FOP\":\"America/New_York\",\"FOR\":\"America/Belem\",\"FOS\":\"Australia/Perth\",\"FOT\":\"Australia/Sydney\",\"FOU\":\"Africa/Libreville\",\"FOX\":\"America/Anchorage\",\"FOY\":\"Africa/Monrovia\",\"FPO\":\"America/Nassau\",\"FPR\":\"America/New_York\",\"FPY\":\"America/New_York\",\"FRA\":\"Europe/Berlin\",\"FRB\":\"Australia/Sydney\",\"FRC\":\"America/Sao_Paulo\",\"FRD\":\"America/Los_Angeles\",\"FRE\":\"Pacific/Guadalcanal\",\"FRG\":\"America/New_York\",\"FRH\":\"America/Indiana/Indianapolis\",\"FRI\":\"America/Chicago\",\"FRJ\":\"Europe/Paris\",\"FRK\":\"Indian/Mahe\",\"FRL\":\"Europe/Rome\",\"FRM\":\"America/Chicago\",\"FRN\":\"America/Anchorage\",\"FRO\":\"Europe/Oslo\",\"FRP\":\"America/Anchorage\",\"FRQ\":\"Pacific/Port_Moresby\",\"FRR\":\"America/New_York\",\"FRS\":\"America/Guatemala\",\"FRT\":\"America/Santiago\",\"FRU\":\"Asia/Bishkek\",\"FRW\":\"Africa/Gaborone\",\"FRY\":\"America/New_York\",\"FRZ\":\"Europe/Berlin\",\"FSC\":\"Europe/Paris\",\"FSD\":\"America/Chicago\",\"FSI\":\"America/Chicago\",\"FSK\":\"America/Chicago\",\"FSL\":\"Australia/Perth\",\"FSM\":\"America/Chicago\",\"FSN\":\"America/Chicago\",\"FSP\":\"America/Miquelon\",\"FSS\":\"Europe/London\",\"FST\":\"America/Chicago\",\"FSU\":\"America/Denver\",\"FSZ\":\"Asia/Tokyo\",\"FTA\":\"Pacific/Efate\",\"FTE\":\"America/Argentina/Buenos_Aires\",\"FTI\":\"Pacific/Pago_Pago\",\"FTK\":\"America/Chicago\",\"FTL\":\"America/Anchorage\",\"FTU\":\"Indian/Antananarivo\",\"FTW\":\"America/Chicago\",\"FTX\":\"Africa/Brazzaville\",\"FTY\":\"America/New_York\",\"FUB\":\"Pacific/Port_Moresby\",\"FUD\":\"Asia/Shanghai\",\"FUE\":\"Atlantic/Canary\",\"FUG\":\"Asia/Shanghai\",\"FUJ\":\"Asia/Tokyo\",\"FUK\":\"Asia/Tokyo\",\"FUL\":\"America/Los_Angeles\",\"FUM\":\"Pacific/Port_Moresby\",\"FUN\":\"Pacific/Funafuti\",\"FUO\":\"Asia/Shanghai\",\"FUP\":\"Europe/Stockholm\",\"FUT\":\"Pacific/Wallis\",\"FVL\":\"Australia/Perth\",\"FVM\":\"Indian/Maldives\",\"FVR\":\"Australia/Perth\",\"FWA\":\"America/Indiana/Indianapolis\",\"FWH\":\"America/Chicago\",\"FWL\":\"America/Anchorage\",\"FWM\":\"Europe/London\",\"FXE\":\"America/New_York\",\"FXM\":\"America/Anchorage\",\"FXO\":\"Africa/Maputo\",\"FXY\":\"America/Chicago\",\"FYJ\":\"Asia/Shanghai\",\"FYM\":\"America/Chicago\",\"FYN\":\"Asia/Shanghai\",\"FYT\":\"Africa/Ndjamena\",\"FYU\":\"America/Anchorage\",\"FYV\":\"America/Chicago\",\"FZO\":\"Europe/London\",\"GAA\":\"America/Bogota\",\"GAB\":\"America/Los_Angeles\",\"GAC\":\"America/Tegucigalpa\",\"GAD\":\"America/Chicago\",\"GAE\":\"Africa/Tunis\",\"GAF\":\"Africa/Tunis\",\"GAG\":\"America/Chicago\",\"GAH\":\"Australia/Brisbane\",\"GAI\":\"America/New_York\",\"GAJ\":\"Asia/Tokyo\",\"GAK\":\"America/Anchorage\",\"GAL\":\"America/Anchorage\",\"GAM\":\"America/Anchorage\",\"GAN\":\"Indian/Maldives\",\"GAO\":\"America/Havana\",\"GAP\":\"Pacific/Port_Moresby\",\"GAQ\":\"Africa/Bamako\",\"GAR\":\"Pacific/Port_Moresby\",\"GAS\":\"Africa/Nairobi\",\"GAT\":\"Europe/Paris\",\"GAU\":\"Asia/Kolkata\",\"GAV\":\"Asia/Jayapura\",\"GAW\":\"Asia/Yangon\",\"GAX\":\"Africa/Libreville\",\"GAY\":\"Asia/Kolkata\",\"GAZ\":\"Pacific/Port_Moresby\",\"GBA\":\"Pacific/Efate\",\"GBB\":\"Asia/Baku\",\"GBC\":\"Pacific/Port_Moresby\",\"GBD\":\"America/Chicago\",\"GBE\":\"Africa/Gaborone\",\"GBF\":\"Pacific/Port_Moresby\",\"GBG\":\"America/Chicago\",\"GBH\":\"America/Anchorage\",\"GBI\":\"Asia/Kolkata\",\"GBJ\":\"America/Guadeloupe\",\"GBK\":\"Africa/Freetown\",\"GBL\":\"Australia/Darwin\",\"GBM\":\"Africa/Mogadishu\",\"GBO\":\"America/New_York\",\"GBP\":\"Australia/Brisbane\",\"GBR\":\"America/New_York\",\"GBS\":\"Pacific/Auckland\",\"GBT\":\"Asia/Tehran\",\"GBU\":\"Africa/Khartoum\",\"GBV\":\"Australia/Perth\",\"GBW\":\"Australia/Perth\",\"GBZ\":\"Pacific/Auckland\",\"GCA\":\"America/Bogota\",\"GCC\":\"America/Denver\",\"GCH\":\"Asia/Tehran\",\"GCI\":\"Europe/London\",\"GCJ\":\"Africa/Johannesburg\",\"GCK\":\"America/Chicago\",\"GCM\":\"America/Cayman\",\"GCN\":\"America/Phoenix\",\"GCT\":\"America/Phoenix\",\"GCV\":\"America/Sao_Paulo\",\"GCW\":\"America/Phoenix\",\"GCY\":\"America/Chicago\",\"GDA\":\"Africa/Bangui\",\"GDC\":\"America/New_York\",\"GDD\":\"Australia/Perth\",\"GDE\":\"Africa/Addis_Ababa\",\"GDG\":\"Asia/Yakutsk\",\"GDH\":\"America/Anchorage\",\"GDI\":\"Africa/Bangui\",\"GDJ\":\"Africa/Kinshasa\",\"GDL\":\"America/Mexico_City\",\"GDM\":\"America/New_York\",\"GDN\":\"Europe/Warsaw\",\"GDO\":\"America/Caracas\",\"GDP\":\"America/Belem\",\"GDQ\":\"Africa/Addis_Ababa\",\"GDT\":\"America/Grand_Turk\",\"GDV\":\"America/Denver\",\"GDW\":\"America/New_York\",\"GDX\":\"Asia/Magadan\",\"GDZ\":\"Europe/Moscow\",\"GEA\":\"Pacific/Noumea\",\"GEB\":\"Asia/Jayapura\",\"GEC\":\"Asia/Famagusta\",\"GED\":\"America/New_York\",\"GEE\":\"Australia/Hobart\",\"GEF\":\"Pacific/Guadalcanal\",\"GEG\":\"America/Los_Angeles\",\"GEI\":\"Pacific/Bougainville\",\"GEK\":\"America/Anchorage\",\"GEL\":\"America/Sao_Paulo\",\"GEM\":\"Africa/Lagos\",\"GEN\":\"Europe/Madrid\",\"GEO\":\"America/Guyana\",\"GER\":\"America/Havana\",\"GES\":\"Asia/Manila\",\"GET\":\"Australia/Perth\",\"GEV\":\"Europe/Stockholm\",\"GEW\":\"Pacific/Port_Moresby\",\"GEX\":\"Australia/Sydney\",\"GEY\":\"America/Denver\",\"GFA\":\"America/Denver\",\"GFB\":\"America/Anchorage\",\"GFD\":\"America/Indiana/Indianapolis\",\"GFE\":\"Australia/Sydney\",\"GFF\":\"Australia/Sydney\",\"GFK\":\"America/Chicago\",\"GFL\":\"America/New_York\",\"GFN\":\"Australia/Sydney\",\"GFO\":\"America/Guyana\",\"GFR\":\"Europe/Paris\",\"GFY\":\"Africa/Windhoek\",\"GGB\":\"America/Cuiaba\",\"GGC\":\"Africa/Luanda\",\"GGD\":\"Australia/Brisbane\",\"GGE\":\"America/New_York\",\"GGF\":\"America/Santarem\",\"GGG\":\"America/Chicago\",\"GGH\":\"America/Campo_Grande\",\"GGJ\":\"America/Sao_Paulo\",\"GGL\":\"America/Bogota\",\"GGM\":\"Africa/Nairobi\",\"GGN\":\"Africa/Abidjan\",\"GGO\":\"Africa/Abidjan\",\"GGR\":\"Africa/Mogadishu\",\"GGS\":\"America/Argentina/Buenos_Aires\",\"GGT\":\"America/Nassau\",\"GGW\":\"America/Denver\",\"GHA\":\"Africa/Algiers\",\"GHB\":\"America/Nassau\",\"GHC\":\"America/Nassau\",\"GHD\":\"Africa/Addis_Ababa\",\"GHE\":\"America/Panama\",\"GHF\":\"Europe/Berlin\",\"GHK\":\"Asia/Jerusalem\",\"GHM\":\"America/Chicago\",\"GHN\":\"Asia/Shanghai\",\"GHS\":\"Asia/Makassar\",\"GHT\":\"Africa/Tripoli\",\"GHU\":\"America/Argentina/Buenos_Aires\",\"GIB\":\"Europe/Gibraltar\",\"GIC\":\"Australia/Brisbane\",\"GID\":\"Africa/Bujumbura\",\"GIF\":\"America/New_York\",\"GIG\":\"America/Sao_Paulo\",\"GII\":\"Africa/Conakry\",\"GIL\":\"Asia/Karachi\",\"GIM\":\"Africa/Libreville\",\"GIR\":\"America/Bogota\",\"GIS\":\"Pacific/Auckland\",\"GIT\":\"Africa/Dar_es_Salaam\",\"GIU\":\"Asia/Colombo\",\"GIY\":\"Africa/Johannesburg\",\"GIZ\":\"Asia/Riyadh\",\"GJA\":\"America/Tegucigalpa\",\"GJL\":\"Africa/Algiers\",\"GJM\":\"America/Porto_Velho\",\"GJR\":\"Atlantic/Reykjavik\",\"GJT\":\"America/Denver\",\"GKA\":\"Pacific/Port_Moresby\",\"GKE\":\"Europe/Berlin\",\"GKH\":\"Asia/Kathmandu\",\"GKK\":\"Indian/Maldives\",\"GKL\":\"Australia/Brisbane\",\"GKN\":\"America/Anchorage\",\"GKO\":\"Africa/Libreville\",\"GKT\":\"America/New_York\",\"GLA\":\"Europe/London\",\"GLC\":\"Africa/Addis_Ababa\",\"GLD\":\"America/Denver\",\"GLE\":\"America/Chicago\",\"GLF\":\"America/Costa_Rica\",\"GLG\":\"Australia/Brisbane\",\"GLH\":\"America/Chicago\",\"GLI\":\"Australia/Sydney\",\"GLK\":\"Africa/Mogadishu\",\"GLL\":\"Europe/Oslo\",\"GLM\":\"Australia/Brisbane\",\"GLN\":\"Africa/Casablanca\",\"GLO\":\"Europe/London\",\"GLP\":\"Pacific/Port_Moresby\",\"GLQ\":\"America/Anchorage\",\"GLR\":\"America/New_York\",\"GLS\":\"America/Chicago\",\"GLT\":\"Australia/Brisbane\",\"GLU\":\"Asia/Thimphu\",\"GLV\":\"America/Anchorage\",\"GLW\":\"America/Chicago\",\"GLX\":\"Asia/Jayapura\",\"GLY\":\"Australia/Perth\",\"GLZ\":\"Europe/Amsterdam\",\"GMA\":\"Africa/Kinshasa\",\"GMB\":\"Africa/Addis_Ababa\",\"GMC\":\"America/Bogota\",\"GMD\":\"Africa/Casablanca\",\"GME\":\"Europe/Minsk\",\"GMI\":\"Pacific/Port_Moresby\",\"GMM\":\"Africa/Brazzaville\",\"GMN\":\"Pacific/Auckland\",\"GMO\":\"Africa/Lagos\",\"GMP\":\"Asia/Seoul\",\"GMQ\":\"Asia/Shanghai\",\"GMR\":\"Pacific/Gambier\",\"GMS\":\"America/Belem\",\"GMT\":\"America/Anchorage\",\"GMU\":\"America/New_York\",\"GMV\":\"America/Denver\",\"GMY\":\"Europe/Berlin\",\"GMZ\":\"Atlantic/Canary\",\"GNA\":\"Europe/Minsk\",\"GNB\":\"Europe/Paris\",\"GND\":\"America/Grenada\",\"GNE\":\"Europe/Brussels\",\"GNF\":\"America/Los_Angeles\",\"GNG\":\"America/Denver\",\"GNI\":\"Asia/Taipei\",\"GNM\":\"America/Belem\",\"GNN\":\"Africa/Addis_Ababa\",\"GNR\":\"America/Argentina/Buenos_Aires\",\"GNS\":\"Asia/Jakarta\",\"GNT\":\"America/Denver\",\"GNU\":\"America/Anchorage\",\"GNV\":\"America/New_York\",\"GNY\":\"Europe/Istanbul\",\"GNZ\":\"Africa/Gaborone\",\"GOA\":\"Europe/Rome\",\"GOB\":\"Africa/Addis_Ababa\",\"GOC\":\"Pacific/Port_Moresby\",\"GOE\":\"Pacific/Port_Moresby\",\"GOF\":\"America/Chicago\",\"GOG\":\"Africa/Windhoek\",\"GOH\":\"America/Godthab\",\"GOI\":\"Asia/Kolkata\",\"GOJ\":\"Europe/Moscow\",\"GOK\":\"America/Chicago\",\"GOL\":\"America/Los_Angeles\",\"GOM\":\"Africa/Lubumbashi\",\"GON\":\"America/New_York\",\"GOO\":\"Australia/Brisbane\",\"GOP\":\"Asia/Kolkata\",\"GOQ\":\"Asia/Shanghai\",\"GOR\":\"Africa/Addis_Ababa\",\"GOS\":\"Australia/Sydney\",\"GOT\":\"Europe/Stockholm\",\"GOU\":\"Africa/Douala\",\"GOV\":\"Australia/Darwin\",\"GOZ\":\"Europe/Sofia\",\"GPA\":\"Europe/Athens\",\"GPB\":\"America/Sao_Paulo\",\"GPD\":\"Australia/Brisbane\",\"GPI\":\"America/Bogota\",\"GPL\":\"America/Costa_Rica\",\"GPN\":\"Australia/Darwin\",\"GPO\":\"America/Argentina/Buenos_Aires\",\"GPS\":\"Pacific/Galapagos\",\"GPT\":\"America/Chicago\",\"GPZ\":\"America/Chicago\",\"GQJ\":\"Europe/London\",\"GQQ\":\"America/New_York\",\"GRA\":\"America/Bogota\",\"GRB\":\"America/Chicago\",\"GRC\":\"Africa/Monrovia\",\"GRD\":\"America/New_York\",\"GRE\":\"America/Chicago\",\"GRF\":\"America/Los_Angeles\",\"GRG\":\"Asia/Kabul\",\"GRH\":\"Pacific/Port_Moresby\",\"GRI\":\"America/Chicago\",\"GRJ\":\"Africa/Johannesburg\",\"GRK\":\"America/Chicago\",\"GRL\":\"Pacific/Port_Moresby\",\"GRM\":\"America/Chicago\",\"GRN\":\"America/Denver\",\"GRO\":\"Europe/Madrid\",\"GRP\":\"America/Belem\",\"GRQ\":\"Europe/Amsterdam\",\"GRR\":\"America/New_York\",\"GRS\":\"Europe/Rome\",\"GRT\":\"Asia/Karachi\",\"GRU\":\"America/Sao_Paulo\",\"GRV\":\"Europe/Moscow\",\"GRW\":\"Atlantic/Azores\",\"GRX\":\"Europe/Madrid\",\"GRY\":\"Atlantic/Reykjavik\",\"GRZ\":\"Europe/Vienna\",\"GSA\":\"Asia/Kuala_Lumpur\",\"GSB\":\"America/New_York\",\"GSC\":\"Australia/Perth\",\"GSE\":\"Europe/Stockholm\",\"GSH\":\"America/Indiana/Indianapolis\",\"GSI\":\"Pacific/Guadalcanal\",\"GSJ\":\"America/Guatemala\",\"GSL\":\"America/Edmonton\",\"GSM\":\"Asia/Tehran\",\"GSN\":\"Australia/Adelaide\",\"GSO\":\"America/New_York\",\"GSP\":\"America/New_York\",\"GSQ\":\"Africa/Cairo\",\"GSR\":\"Africa/Mogadishu\",\"GSS\":\"Africa/Johannesburg\",\"GST\":\"America/Anchorage\",\"GSU\":\"Africa/Khartoum\",\"GSV\":\"Europe/Saratov\",\"GSY\":\"Europe/London\",\"GTA\":\"Pacific/Guadalcanal\",\"GTB\":\"Asia/Kuala_Lumpur\",\"GTC\":\"America/Nassau\",\"GTE\":\"Australia/Darwin\",\"GTF\":\"America/Denver\",\"GTG\":\"America/Chicago\",\"GTI\":\"Europe/Berlin\",\"GTK\":\"Asia/Kuala_Lumpur\",\"GTN\":\"Pacific/Auckland\",\"GTO\":\"Asia/Makassar\",\"GTP\":\"America/Los_Angeles\",\"GTR\":\"America/Chicago\",\"GTS\":\"Australia/Darwin\",\"GTT\":\"Australia/Brisbane\",\"GTW\":\"Europe/Prague\",\"GTY\":\"America/New_York\",\"GTZ\":\"Africa/Dar_es_Salaam\",\"GUA\":\"America/Guatemala\",\"GUB\":\"America/Mazatlan\",\"GUC\":\"America/Denver\",\"GUD\":\"Africa/Bamako\",\"GUE\":\"Pacific/Port_Moresby\",\"GUF\":\"America/Chicago\",\"GUG\":\"Pacific/Port_Moresby\",\"GUH\":\"Australia/Sydney\",\"GUI\":\"America/Caracas\",\"GUJ\":\"America/Sao_Paulo\",\"GUL\":\"Australia/Sydney\",\"GUM\":\"Pacific/Guam\",\"GUO\":\"Africa/Mogadishu\",\"GUP\":\"America/Denver\",\"GUQ\":\"America/Caracas\",\"GUR\":\"Pacific/Port_Moresby\",\"GUS\":\"America/Indiana/Indianapolis\",\"GUT\":\"Europe/Berlin\",\"GUU\":\"Atlantic/Reykjavik\",\"GUV\":\"Pacific/Port_Moresby\",\"GUW\":\"Asia/Atyrau\",\"GUX\":\"Asia/Kolkata\",\"GUY\":\"America/Chicago\",\"GUZ\":\"America/Sao_Paulo\",\"GVA\":\"Europe/Zurich\",\"GVE\":\"America/New_York\",\"GVI\":\"Pacific/Port_Moresby\",\"GVL\":\"America/New_York\",\"GVP\":\"Australia/Brisbane\",\"GVR\":\"America/Sao_Paulo\",\"GVT\":\"America/Chicago\",\"GVW\":\"America/Chicago\",\"GVX\":\"Europe/Stockholm\",\"GWA\":\"Asia/Yangon\",\"GWD\":\"Asia/Karachi\",\"GWE\":\"Africa/Harare\",\"GWL\":\"Asia/Kolkata\",\"GWN\":\"Pacific/Port_Moresby\",\"GWO\":\"America/Chicago\",\"GWS\":\"America/Denver\",\"GWT\":\"Europe/Berlin\",\"GWV\":\"America/New_York\",\"GWW\":\"Europe/Berlin\",\"GWY\":\"Europe/Dublin\",\"GXA\":\"Asia/Jakarta\",\"GXF\":\"Asia/Aden\",\"GXG\":\"Africa/Luanda\",\"GXH\":\"Asia/Shanghai\",\"GXQ\":\"America/Santiago\",\"GXX\":\"Africa/Douala\",\"GXY\":\"America/Denver\",\"GYA\":\"America/La_Paz\",\"GYB\":\"Australia/Perth\",\"GYD\":\"Asia/Baku\",\"GYE\":\"America/Guayaquil\",\"GYG\":\"Asia/Yakutsk\",\"GYI\":\"Africa/Kigali\",\"GYL\":\"Australia/Perth\",\"GYM\":\"America/Hermosillo\",\"GYN\":\"America/Sao_Paulo\",\"GYP\":\"Australia/Brisbane\",\"GYR\":\"America/Phoenix\",\"GYS\":\"Asia/Shanghai\",\"GYU\":\"Asia/Shanghai\",\"GYZ\":\"Australia/Perth\",\"GZA\":\"Asia/Gaza\",\"GZG\":\"Asia/Shanghai\",\"GZI\":\"Asia/Kabul\",\"GZM\":\"Europe/Malta\",\"GZO\":\"Pacific/Guadalcanal\",\"GZP\":\"Europe/Istanbul\",\"GZT\":\"Europe/Istanbul\",\"GZW\":\"Asia/Tehran\",\"HAA\":\"Europe/Oslo\",\"HAB\":\"America/Chicago\",\"HAC\":\"Asia/Tokyo\",\"HAD\":\"Europe/Stockholm\",\"HAE\":\"America/Phoenix\",\"HAF\":\"America/Los_Angeles\",\"HAH\":\"Indian/Comoro\",\"HAI\":\"America/New_York\",\"HAJ\":\"Europe/Berlin\",\"HAK\":\"Asia/Shanghai\",\"HAL\":\"Africa/Windhoek\",\"HAM\":\"Europe/Berlin\",\"HAN\":\"Asia/Ho_Chi_Minh\",\"HAO\":\"America/New_York\",\"HAP\":\"Australia/Brisbane\",\"HAQ\":\"Indian/Maldives\",\"HAR\":\"America/New_York\",\"HAS\":\"Asia/Riyadh\",\"HAT\":\"Australia/Brisbane\",\"HAU\":\"Europe/Oslo\",\"HAV\":\"America/Havana\",\"HAW\":\"Europe/London\",\"HAX\":\"America/Chicago\",\"HAY\":\"America/Anchorage\",\"HAZ\":\"Pacific/Port_Moresby\",\"HBA\":\"Australia/Hobart\",\"HBB\":\"America/Denver\",\"HBC\":\"America/Anchorage\",\"HBD\":\"Pacific/Port_Moresby\",\"HBE\":\"Africa/Cairo\",\"HBG\":\"America/Chicago\",\"HBH\":\"America/Anchorage\",\"HBI\":\"America/Nassau\",\"HBK\":\"America/Phoenix\",\"HBN\":\"Asia/Ho_Chi_Minh\",\"HBO\":\"America/Chicago\",\"HBQ\":\"Asia/Shanghai\",\"HBR\":\"America/Chicago\",\"HBT\":\"Asia/Colombo\",\"HBU\":\"Asia/Ulaanbaatar\",\"HBX\":\"Asia/Kolkata\",\"HCA\":\"America/Chicago\",\"HCB\":\"America/Anchorage\",\"HCC\":\"America/New_York\",\"HCJ\":\"Asia/Shanghai\",\"HCM\":\"Africa/Mogadishu\",\"HCN\":\"Asia/Taipei\",\"HCQ\":\"Australia/Perth\",\"HCR\":\"America/Anchorage\",\"HCW\":\"America/New_York\",\"HDA\":\"America/Anchorage\",\"HDB\":\"Europe/Berlin\",\"HDD\":\"Asia/Karachi\",\"HDE\":\"America/Chicago\",\"HDF\":\"Europe/Berlin\",\"HDG\":\"Asia/Shanghai\",\"HDH\":\"Pacific/Honolulu\",\"HDK\":\"Indian/Maldives\",\"HDM\":\"Asia/Tehran\",\"HDN\":\"America/Denver\",\"HDR\":\"Asia/Tehran\",\"HDS\":\"Africa/Johannesburg\",\"HDY\":\"Asia/Bangkok\",\"HEA\":\"Asia/Kabul\",\"HEB\":\"Asia/Yangon\",\"HED\":\"America/Anchorage\",\"HEE\":\"America/Chicago\",\"HEH\":\"Asia/Yangon\",\"HEI\":\"Europe/Berlin\",\"HEK\":\"Asia/Shanghai\",\"HEL\":\"Europe/Helsinki\",\"HEM\":\"Europe/Helsinki\",\"HEO\":\"Pacific/Port_Moresby\",\"HER\":\"Europe/Athens\",\"HES\":\"America/Los_Angeles\",\"HET\":\"Asia/Shanghai\",\"HEV\":\"Europe/Madrid\",\"HEW\":\"Asia/Shanghai\",\"HEX\":\"America/Santo_Domingo\",\"HEY\":\"America/Chicago\",\"HEZ\":\"America/Chicago\",\"HFA\":\"Asia/Jerusalem\",\"HFD\":\"America/New_York\",\"HFE\":\"Asia/Shanghai\",\"HFF\":\"America/New_York\",\"HFN\":\"Atlantic/Reykjavik\",\"HFS\":\"Europe/Stockholm\",\"HFT\":\"Europe/Oslo\",\"HGA\":\"Africa/Mogadishu\",\"HGD\":\"Australia/Brisbane\",\"HGE\":\"America/Caracas\",\"HGH\":\"Asia/Shanghai\",\"HGL\":\"Europe/Berlin\",\"HGN\":\"Asia/Bangkok\",\"HGO\":\"Africa/Abidjan\",\"HGR\":\"America/New_York\",\"HGS\":\"Africa/Freetown\",\"HGT\":\"America/Los_Angeles\",\"HGU\":\"Pacific/Port_Moresby\",\"HGZ\":\"America/Anchorage\",\"HHE\":\"Asia/Tokyo\",\"HHH\":\"America/New_York\",\"HHI\":\"Pacific/Honolulu\",\"HHN\":\"Europe/Berlin\",\"HHP\":\"Asia/Hong_Kong\",\"HHQ\":\"Asia/Bangkok\",\"HHR\":\"America/Los_Angeles\",\"HHZ\":\"Pacific/Tahiti\",\"HIA\":\"Asia/Shanghai\",\"HIB\":\"America/Chicago\",\"HID\":\"Australia/Brisbane\",\"HIE\":\"America/New_York\",\"HIF\":\"America/Denver\",\"HIG\":\"Australia/Brisbane\",\"HIH\":\"Australia/Brisbane\",\"HII\":\"America/Phoenix\",\"HIJ\":\"Asia/Tokyo\",\"HIK\":\"Pacific/Honolulu\",\"HIL\":\"Africa/Addis_Ababa\",\"HIM\":\"Asia/Colombo\",\"HIN\":\"Asia/Seoul\",\"HIO\":\"America/Los_Angeles\",\"HIP\":\"Australia/Brisbane\",\"HIR\":\"Pacific/Guadalcanal\",\"HIS\":\"Australia/Brisbane\",\"HIT\":\"Pacific/Port_Moresby\",\"HIW\":\"Asia/Tokyo\",\"HJJ\":\"Asia/Shanghai\",\"HJR\":\"Asia/Kolkata\",\"HJT\":\"Asia/Ulaanbaatar\",\"HKA\":\"America/Chicago\",\"HKB\":\"America/Anchorage\",\"HKD\":\"Asia/Tokyo\",\"HKG\":\"Asia/Hong_Kong\",\"HKK\":\"Pacific/Auckland\",\"HKN\":\"Pacific/Port_Moresby\",\"HKR\":\"Africa/Nairobi\",\"HKS\":\"America/Chicago\",\"HKT\":\"Asia/Bangkok\",\"HKV\":\"Europe/Sofia\",\"HKY\":\"America/New_York\",\"HLA\":\"Africa/Johannesburg\",\"HLB\":\"America/Indiana/Indianapolis\",\"HLC\":\"America/Chicago\",\"HLD\":\"Asia/Shanghai\",\"HLE\":\"Atlantic/St_Helena\",\"HLF\":\"Europe/Stockholm\",\"HLG\":\"America/New_York\",\"HLH\":\"Asia/Shanghai\",\"HLI\":\"America/Los_Angeles\",\"HLL\":\"Australia/Perth\",\"HLM\":\"America/New_York\",\"HLN\":\"America/Denver\",\"HLP\":\"Asia/Jakarta\",\"HLR\":\"America/Chicago\",\"HLS\":\"Australia/Hobart\",\"HLT\":\"Australia/Sydney\",\"HLU\":\"Pacific/Noumea\",\"HLV\":\"Australia/Brisbane\",\"HLW\":\"Africa/Johannesburg\",\"HLY\":\"Europe/London\",\"HLZ\":\"Pacific/Auckland\",\"HMA\":\"Asia/Yekaterinburg\",\"HMB\":\"Africa/Cairo\",\"HME\":\"Africa/Algiers\",\"HMG\":\"Australia/Darwin\",\"HMI\":\"Asia/Shanghai\",\"HMJ\":\"Europe/Kiev\",\"HMN\":\"America/Denver\",\"HMO\":\"America/Hermosillo\",\"HMR\":\"Europe/Oslo\",\"HMS\":\"America/Anchorage\",\"HMT\":\"America/Los_Angeles\",\"HMV\":\"Europe/Stockholm\",\"HMY\":\"Asia/Seoul\",\"HNA\":\"Asia/Tokyo\",\"HNB\":\"America/Indiana/Indianapolis\",\"HNC\":\"America/New_York\",\"HND\":\"Asia/Tokyo\",\"HNE\":\"America/Anchorage\",\"HNG\":\"Pacific/Noumea\",\"HNH\":\"America/Anchorage\",\"HNI\":\"Pacific/Port_Moresby\",\"HNK\":\"Australia/Brisbane\",\"HNL\":\"Pacific/Honolulu\",\"HNM\":\"Pacific/Honolulu\",\"HNN\":\"Pacific/Port_Moresby\",\"HNS\":\"America/Anchorage\",\"HNX\":\"America/Denver\",\"HNY\":\"Asia/Shanghai\",\"HOA\":\"Africa/Nairobi\",\"HOB\":\"America/Denver\",\"HOC\":\"Pacific/Port_Moresby\",\"HOD\":\"Asia/Aden\",\"HOE\":\"Asia/Vientiane\",\"HOF\":\"Asia/Riyadh\",\"HOG\":\"America/Havana\",\"HOH\":\"Europe/Vienna\",\"HOI\":\"Pacific/Tahiti\",\"HOK\":\"Australia/Darwin\",\"HOL\":\"America/Anchorage\",\"HOM\":\"America/Anchorage\",\"HON\":\"America/Chicago\",\"HOO\":\"Asia/Ho_Chi_Minh\",\"HOP\":\"America/Chicago\",\"HOQ\":\"Europe/Berlin\",\"HOR\":\"Atlantic/Azores\",\"HOS\":\"America/Argentina/Buenos_Aires\",\"HOT\":\"America/Chicago\",\"HOU\":\"America/Chicago\",\"HOV\":\"Europe/Oslo\",\"HOX\":\"Asia/Yangon\",\"HOY\":\"Europe/London\",\"HPA\":\"Pacific/Tongatapu\",\"HPB\":\"America/Anchorage\",\"HPE\":\"Australia/Brisbane\",\"HPG\":\"Asia/Shanghai\",\"HPH\":\"Asia/Ho_Chi_Minh\",\"HPN\":\"America/New_York\",\"HPT\":\"America/Chicago\",\"HPV\":\"Pacific/Honolulu\",\"HPY\":\"America/Chicago\",\"HQM\":\"America/Los_Angeles\",\"HRA\":\"Asia/Karachi\",\"HRB\":\"Asia/Shanghai\",\"HRC\":\"Asia/Almaty\",\"HRE\":\"Africa/Harare\",\"HRG\":\"Africa/Cairo\",\"HRI\":\"Asia/Colombo\",\"HRK\":\"Europe/Kiev\",\"HRL\":\"America/Chicago\",\"HRM\":\"Africa/Algiers\",\"HRN\":\"Australia/Brisbane\",\"HRO\":\"America/Chicago\",\"HRR\":\"America/Bogota\",\"HRS\":\"Africa/Johannesburg\",\"HRT\":\"Europe/London\",\"HRY\":\"Australia/Darwin\",\"HRZ\":\"America/Sao_Paulo\",\"HSB\":\"America/Chicago\",\"HSC\":\"Asia/Shanghai\",\"HSG\":\"Asia/Tokyo\",\"HSH\":\"America/Los_Angeles\",\"HSI\":\"America/Chicago\",\"HSK\":\"Europe/Madrid\",\"HSL\":\"America/Anchorage\",\"HSM\":\"Australia/Sydney\",\"HSN\":\"Asia/Shanghai\",\"HSP\":\"America/New_York\",\"HSS\":\"Asia/Kolkata\",\"HST\":\"America/New_York\",\"HSV\":\"America/Chicago\",\"HSZ\":\"Asia/Taipei\",\"HTA\":\"Asia/Yakutsk\",\"HTB\":\"America/Guadeloupe\",\"HTF\":\"Europe/London\",\"HTG\":\"Asia/Krasnoyarsk\",\"HTH\":\"America/Los_Angeles\",\"HTI\":\"Australia/Brisbane\",\"HTL\":\"America/New_York\",\"HTM\":\"Asia/Ulaanbaatar\",\"HTN\":\"Asia/Shanghai\",\"HTO\":\"America/New_York\",\"HTR\":\"Asia/Tokyo\",\"HTS\":\"America/New_York\",\"HTT\":\"Asia/Shanghai\",\"HTU\":\"Australia/Sydney\",\"HTV\":\"America/Chicago\",\"HTW\":\"America/New_York\",\"HTY\":\"Europe/Istanbul\",\"HTZ\":\"America/Bogota\",\"HUA\":\"America/Chicago\",\"HUB\":\"Australia/Darwin\",\"HUC\":\"America/Puerto_Rico\",\"HUD\":\"America/Chicago\",\"HUE\":\"Africa/Addis_Ababa\",\"HUF\":\"America/Indiana/Indianapolis\",\"HUG\":\"America/Guatemala\",\"HUH\":\"Pacific/Tahiti\",\"HUI\":\"Asia/Ho_Chi_Minh\",\"HUJ\":\"America/Chicago\",\"HUK\":\"Africa/Gaborone\",\"HUL\":\"America/New_York\",\"HUM\":\"America/Chicago\",\"HUN\":\"Asia/Taipei\",\"HUO\":\"Asia/Shanghai\",\"HUQ\":\"Africa/Tripoli\",\"HUS\":\"America/Anchorage\",\"HUT\":\"America/Chicago\",\"HUU\":\"America/Lima\",\"HUV\":\"Europe/Stockholm\",\"HUW\":\"America/Porto_Velho\",\"HUX\":\"America/Mexico_City\",\"HUY\":\"Europe/London\",\"HUZ\":\"Asia/Shanghai\",\"HVA\":\"Indian/Antananarivo\",\"HVB\":\"Australia/Brisbane\",\"HVD\":\"Asia/Ulaanbaatar\",\"HVE\":\"America/Denver\",\"HVG\":\"Europe/Oslo\",\"HVK\":\"Atlantic/Reykjavik\",\"HVM\":\"Atlantic/Reykjavik\",\"HVN\":\"America/New_York\",\"HVR\":\"America/Denver\",\"HVS\":\"America/New_York\",\"HWA\":\"Pacific/Port_Moresby\",\"HWD\":\"America/Los_Angeles\",\"HWI\":\"America/Anchorage\",\"HWK\":\"Australia/Adelaide\",\"HWN\":\"Africa/Harare\",\"HWO\":\"America/New_York\",\"HXD\":\"Asia/Shanghai\",\"HXX\":\"Australia/Sydney\",\"HYA\":\"America/New_York\",\"HYC\":\"Europe/London\",\"HYD\":\"Asia/Kolkata\",\"HYF\":\"Pacific/Port_Moresby\",\"HYG\":\"America/Anchorage\",\"HYL\":\"America/Anchorage\",\"HYN\":\"Asia/Shanghai\",\"HYR\":\"America/Chicago\",\"HYS\":\"America/Chicago\",\"HYV\":\"Europe/Helsinki\",\"HZB\":\"Europe/Paris\",\"HZG\":\"Asia/Shanghai\",\"HZH\":\"Asia/Shanghai\",\"HZK\":\"Atlantic/Reykjavik\",\"HZL\":\"America/New_York\",\"HZP\":\"America/Edmonton\",\"HZV\":\"Africa/Johannesburg\",\"IAA\":\"Asia/Krasnoyarsk\",\"IAB\":\"America/Chicago\",\"IAD\":\"America/New_York\",\"IAG\":\"America/New_York\",\"IAH\":\"America/Chicago\",\"IAM\":\"Africa/Algiers\",\"IAN\":\"America/Anchorage\",\"IAO\":\"Asia/Manila\",\"IAQ\":\"Asia/Tehran\",\"IAR\":\"Europe/Moscow\",\"IAS\":\"Europe/Bucharest\",\"IAU\":\"Pacific/Port_Moresby\",\"IBA\":\"Africa/Lagos\",\"IBE\":\"America/Bogota\",\"IBI\":\"Pacific/Port_Moresby\",\"IBO\":\"Africa/Maputo\",\"IBP\":\"America/Lima\",\"IBR\":\"Asia/Tokyo\",\"IBZ\":\"Europe/Madrid\",\"ICA\":\"America/Caracas\",\"ICI\":\"Pacific/Fiji\",\"ICK\":\"America/Paramaribo\",\"ICL\":\"America/Chicago\",\"ICN\":\"Asia/Seoul\",\"ICO\":\"Asia/Manila\",\"ICR\":\"America/Havana\",\"ICT\":\"America/Chicago\",\"ICY\":\"America/Anchorage\",\"IDA\":\"America/Denver\",\"IDB\":\"Europe/Stockholm\",\"IDF\":\"Africa/Kinshasa\",\"IDG\":\"America/Chicago\",\"IDI\":\"America/New_York\",\"IDK\":\"Australia/Adelaide\",\"IDN\":\"Pacific/Port_Moresby\",\"IDO\":\"America/Belem\",\"IDP\":\"America/Chicago\",\"IDR\":\"Asia/Kolkata\",\"IDY\":\"Europe/Paris\",\"IEG\":\"Europe/Warsaw\",\"IEJ\":\"Asia/Tokyo\",\"IES\":\"Europe/Berlin\",\"IEV\":\"Europe/Kiev\",\"IFA\":\"America/Chicago\",\"IFF\":\"Australia/Brisbane\",\"IFH\":\"Asia/Tehran\",\"IFJ\":\"Atlantic/Reykjavik\",\"IFL\":\"Australia/Brisbane\",\"IFN\":\"Asia/Tehran\",\"IFO\":\"Europe/Kiev\",\"IFP\":\"America/Phoenix\",\"IFU\":\"Indian/Maldives\",\"IGA\":\"America/Nassau\",\"IGB\":\"America/Argentina/Buenos_Aires\",\"IGD\":\"Europe/Istanbul\",\"IGE\":\"Africa/Libreville\",\"IGG\":\"America/Anchorage\",\"IGH\":\"Australia/Brisbane\",\"IGL\":\"Europe/Istanbul\",\"IGM\":\"America/Phoenix\",\"IGN\":\"Asia/Manila\",\"IGO\":\"America/Bogota\",\"IGR\":\"America/Argentina/Buenos_Aires\",\"IGS\":\"Europe/Berlin\",\"IGT\":\"Europe/Moscow\",\"IGU\":\"America/Sao_Paulo\",\"IHA\":\"Asia/Tokyo\",\"IHC\":\"Africa/Maputo\",\"IHN\":\"Asia/Aden\",\"IHO\":\"Indian/Antananarivo\",\"IHR\":\"Asia/Tehran\",\"IHU\":\"Pacific/Port_Moresby\",\"IIA\":\"Europe/Dublin\",\"IIL\":\"Asia/Tehran\",\"IIN\":\"Asia/Tokyo\",\"IIS\":\"Pacific/Bougainville\",\"IJK\":\"Europe/Samara\",\"IJU\":\"America/Sao_Paulo\",\"IJX\":\"America/Chicago\",\"IKA\":\"Asia/Tehran\",\"IKB\":\"America/New_York\",\"IKE\":\"America/Godthab\",\"IKI\":\"Asia/Tokyo\",\"IKK\":\"America/Chicago\",\"IKL\":\"Africa/Kinshasa\",\"IKO\":\"America/Anchorage\",\"IKP\":\"Australia/Brisbane\",\"IKS\":\"Asia/Yakutsk\",\"IKT\":\"Asia/Irkutsk\",\"IKU\":\"Asia/Bishkek\",\"ILA\":\"Asia/Jayapura\",\"ILB\":\"America/Campo_Grande\",\"ILD\":\"Europe/Madrid\",\"ILE\":\"America/Chicago\",\"ILF\":\"America/Winnipeg\",\"ILG\":\"America/New_York\",\"ILH\":\"Europe/Berlin\",\"ILI\":\"America/Anchorage\",\"ILK\":\"Indian/Antananarivo\",\"ILL\":\"America/Chicago\",\"ILM\":\"America/New_York\",\"ILN\":\"America/New_York\",\"ILO\":\"Asia/Manila\",\"ILP\":\"Pacific/Noumea\",\"ILQ\":\"America/Lima\",\"ILR\":\"Africa/Lagos\",\"ILS\":\"America/El_Salvador\",\"ILU\":\"Africa/Nairobi\",\"ILY\":\"Europe/London\",\"ILZ\":\"Europe/Bratislava\",\"IMA\":\"Pacific/Port_Moresby\",\"IMB\":\"America/Guyana\",\"IMD\":\"Pacific/Port_Moresby\",\"IMF\":\"Asia/Kolkata\",\"IMG\":\"Africa/Maputo\",\"IMI\":\"Pacific/Majuro\",\"IMK\":\"Asia/Kathmandu\",\"IML\":\"America/Denver\",\"IMM\":\"America/New_York\",\"IMN\":\"Pacific/Port_Moresby\",\"IMO\":\"Africa/Bangui\",\"IMP\":\"America/Belem\",\"IMT\":\"America/Chicago\",\"IMZ\":\"Asia/Kabul\",\"INA\":\"Europe/Moscow\",\"INB\":\"America/Belize\",\"INC\":\"Asia/Shanghai\",\"IND\":\"America/Indiana/Indianapolis\",\"INE\":\"Africa/Maputo\",\"INF\":\"Africa/Algiers\",\"ING\":\"America/Argentina/Buenos_Aires\",\"INH\":\"Africa/Maputo\",\"INI\":\"Europe/Belgrade\",\"INJ\":\"Australia/Brisbane\",\"INK\":\"America/Chicago\",\"INL\":\"America/Chicago\",\"INM\":\"Australia/Adelaide\",\"INN\":\"Europe/Vienna\",\"INO\":\"Africa/Kinshasa\",\"INQ\":\"Europe/Dublin\",\"INS\":\"America/Los_Angeles\",\"INT\":\"America/New_York\",\"INU\":\"Pacific/Nauru\",\"INV\":\"Europe/London\",\"INW\":\"America/Phoenix\",\"INX\":\"Asia/Jayapura\",\"INY\":\"Africa/Johannesburg\",\"INZ\":\"Africa/Algiers\",\"IOA\":\"Europe/Athens\",\"IOK\":\"Pacific/Port_Moresby\",\"IOM\":\"Europe/London\",\"ION\":\"Africa/Brazzaville\",\"IOP\":\"Pacific/Port_Moresby\",\"IOQ\":\"America/Godthab\",\"IOR\":\"Europe/Dublin\",\"IOS\":\"America/Belem\",\"IOT\":\"America/Godthab\",\"IOU\":\"Pacific/Noumea\",\"IOW\":\"America/Chicago\",\"IPA\":\"Pacific/Efate\",\"IPC\":\"Pacific/Easter\",\"IPE\":\"Asia/Manila\",\"IPG\":\"America/Porto_Velho\",\"IPH\":\"Asia/Kuala_Lumpur\",\"IPI\":\"America/Bogota\",\"IPL\":\"America/Los_Angeles\",\"IPN\":\"America/Sao_Paulo\",\"IPT\":\"America/New_York\",\"IPU\":\"America/Belem\",\"IPW\":\"Europe/London\",\"IQA\":\"Asia/Baghdad\",\"IQM\":\"Asia/Shanghai\",\"IQN\":\"Asia/Shanghai\",\"IQQ\":\"America/Santiago\",\"IQT\":\"America/Lima\",\"IRA\":\"Pacific/Guadalcanal\",\"IRB\":\"America/Chicago\",\"IRC\":\"America/Anchorage\",\"IRD\":\"Asia/Dhaka\",\"IRE\":\"America/Belem\",\"IRG\":\"Australia/Brisbane\",\"IRI\":\"Africa/Dar_es_Salaam\",\"IRJ\":\"America/Argentina/Buenos_Aires\",\"IRK\":\"America/Chicago\",\"IRM\":\"Asia/Yekaterinburg\",\"IRN\":\"America/Tegucigalpa\",\"IRO\":\"Africa/Bangui\",\"IRP\":\"Africa/Lubumbashi\",\"IRS\":\"America/New_York\",\"IRZ\":\"America/Porto_Velho\",\"ISA\":\"Australia/Brisbane\",\"ISB\":\"Asia/Karachi\",\"ISC\":\"Europe/London\",\"ISD\":\"America/Bogota\",\"ISE\":\"Europe/Istanbul\",\"ISG\":\"Asia/Tokyo\",\"ISH\":\"Europe/Rome\",\"ISI\":\"Australia/Brisbane\",\"ISJ\":\"America/Mexico_City\",\"ISK\":\"Asia/Kolkata\",\"ISL\":\"Europe/Istanbul\",\"ISM\":\"America/New_York\",\"ISN\":\"America/Chicago\",\"ISO\":\"America/New_York\",\"ISP\":\"America/New_York\",\"ISQ\":\"America/New_York\",\"ISS\":\"America/New_York\",\"IST\":\"Europe/Istanbul\",\"ISU\":\"Asia/Baghdad\",\"ISW\":\"America/Chicago\",\"ITA\":\"America/Porto_Velho\",\"ITB\":\"America/Belem\",\"ITE\":\"America/Belem\",\"ITH\":\"America/New_York\",\"ITI\":\"America/Sao_Paulo\",\"ITK\":\"Pacific/Port_Moresby\",\"ITM\":\"Asia/Tokyo\",\"ITN\":\"America/Belem\",\"ITO\":\"Pacific/Honolulu\",\"ITP\":\"America/Sao_Paulo\",\"ITQ\":\"America/Sao_Paulo\",\"ITR\":\"America/Sao_Paulo\",\"ITU\":\"Asia/Magadan\",\"IUE\":\"Pacific/Niue\",\"IUI\":\"America/Godthab\",\"IUL\":\"Asia/Jayapura\",\"IUM\":\"America/Vancouver\",\"IUS\":\"Pacific/Bougainville\",\"IVA\":\"Indian/Antananarivo\",\"IVC\":\"Pacific/Auckland\",\"IVG\":\"Europe/Podgorica\",\"IVH\":\"America/Anchorage\",\"IVL\":\"Europe/Helsinki\",\"IVO\":\"America/Bogota\",\"IVR\":\"Australia/Sydney\",\"IVW\":\"Australia/Darwin\",\"IWA\":\"Europe/Moscow\",\"IWD\":\"America/Chicago\",\"IWJ\":\"Asia/Tokyo\",\"IWK\":\"Asia/Tokyo\",\"IWO\":\"Asia/Tokyo\",\"IWS\":\"America/Chicago\",\"IXA\":\"Asia/Kolkata\",\"IXB\":\"Asia/Kolkata\",\"IXC\":\"Asia/Kolkata\",\"IXD\":\"Asia/Kolkata\",\"IXE\":\"Asia/Kolkata\",\"IXG\":\"Asia/Kolkata\",\"IXH\":\"Asia/Kolkata\",\"IXI\":\"Asia/Kolkata\",\"IXJ\":\"Asia/Kolkata\",\"IXK\":\"Asia/Kolkata\",\"IXL\":\"Asia/Kolkata\",\"IXM\":\"Asia/Kolkata\",\"IXN\":\"Asia/Kolkata\",\"IXP\":\"Asia/Kolkata\",\"IXQ\":\"Asia/Kolkata\",\"IXR\":\"Asia/Kolkata\",\"IXS\":\"Asia/Kolkata\",\"IXT\":\"Asia/Kolkata\",\"IXU\":\"Asia/Kolkata\",\"IXV\":\"Asia/Kolkata\",\"IXW\":\"Asia/Kolkata\",\"IXY\":\"Asia/Kolkata\",\"IXZ\":\"Asia/Kolkata\",\"IYK\":\"America/Los_Angeles\",\"IZA\":\"America/Sao_Paulo\",\"IZO\":\"Asia/Tokyo\",\"IZT\":\"America/Mexico_City\",\"JAA\":\"Asia/Kabul\",\"JAB\":\"Australia/Darwin\",\"JAC\":\"America/Denver\",\"JAD\":\"Australia/Perth\",\"JAE\":\"America/Lima\",\"JAF\":\"Asia/Colombo\",\"JAG\":\"Asia/Karachi\",\"JAH\":\"Europe/Paris\",\"JAI\":\"Asia/Kolkata\",\"JAJ\":\"America/New_York\",\"JAK\":\"America/Port-au-Prince\",\"JAL\":\"America/Mexico_City\",\"JAM\":\"Europe/Sofia\",\"JAN\":\"America/Chicago\",\"JAO\":\"America/New_York\",\"JAP\":\"America/Costa_Rica\",\"JAQ\":\"Pacific/Port_Moresby\",\"JAR\":\"Asia/Tehran\",\"JAS\":\"America/Chicago\",\"JAT\":\"Pacific/Majuro\",\"JAU\":\"America/Lima\",\"JAV\":\"America/Godthab\",\"JAX\":\"America/New_York\",\"JBB\":\"Asia/Jakarta\",\"JBC\":\"America/New_York\",\"JBP\":\"America/Los_Angeles\",\"JBQ\":\"America/Santo_Domingo\",\"JBR\":\"America/Chicago\",\"JBS\":\"America/Sao_Paulo\",\"JBT\":\"America/Anchorage\",\"JCA\":\"Europe/Paris\",\"JCB\":\"America/Sao_Paulo\",\"JCC\":\"America/Los_Angeles\",\"JCD\":\"America/St_Thomas\",\"JCE\":\"America/Los_Angeles\",\"JCH\":\"America/Godthab\",\"JCI\":\"America/Chicago\",\"JCJ\":\"Asia/Seoul\",\"JCK\":\"Australia/Brisbane\",\"JCM\":\"America/Belem\",\"JCN\":\"Asia/Seoul\",\"JCO\":\"Europe/Malta\",\"JCR\":\"America/Porto_Velho\",\"JCT\":\"America/Chicago\",\"JCU\":\"Africa/Ceuta\",\"JCY\":\"America/Chicago\",\"JDA\":\"America/Los_Angeles\",\"JDB\":\"America/Chicago\",\"JDF\":\"America/Sao_Paulo\",\"JDH\":\"Asia/Kolkata\",\"JDM\":\"America/New_York\",\"JDN\":\"America/Denver\",\"JDO\":\"America/Belem\",\"JDP\":\"Europe/Paris\",\"JDR\":\"America/Sao_Paulo\",\"JDT\":\"America/Chicago\",\"JDX\":\"America/Chicago\",\"JDY\":\"America/Los_Angeles\",\"JDZ\":\"Asia/Shanghai\",\"JED\":\"Asia/Riyadh\",\"JEE\":\"America/Port-au-Prince\",\"JEF\":\"America/Chicago\",\"JEG\":\"America/Godthab\",\"JEJ\":\"Pacific/Majuro\",\"JEK\":\"Africa/Lusaka\",\"JEM\":\"America/Los_Angeles\",\"JEQ\":\"America/Belem\",\"JER\":\"Europe/London\",\"JEV\":\"Europe/Paris\",\"JFK\":\"America/New_York\",\"JFM\":\"Australia/Perth\",\"JFN\":\"America/New_York\",\"JFR\":\"America/Godthab\",\"JGA\":\"Asia/Kolkata\",\"JGB\":\"Asia/Kolkata\",\"JGC\":\"America/Phoenix\",\"JGD\":\"Asia/Shanghai\",\"JGE\":\"Asia/Seoul\",\"JGL\":\"America/New_York\",\"JGN\":\"Asia/Shanghai\",\"JGO\":\"America/Godthab\",\"JGP\":\"America/Chicago\",\"JGQ\":\"America/Chicago\",\"JGR\":\"America/Godthab\",\"JGS\":\"Asia/Shanghai\",\"JGX\":\"America/Los_Angeles\",\"JHB\":\"Asia/Kuala_Lumpur\",\"JHC\":\"America/New_York\",\"JHE\":\"Europe/Stockholm\",\"JHG\":\"Asia/Shanghai\",\"JHL\":\"America/Edmonton\",\"JHM\":\"Pacific/Honolulu\",\"JHQ\":\"Australia/Brisbane\",\"JHS\":\"America/Godthab\",\"JHW\":\"America/New_York\",\"JIA\":\"America/Campo_Grande\",\"JIB\":\"Africa/Djibouti\",\"JIC\":\"Asia/Shanghai\",\"JID\":\"America/Los_Angeles\",\"JIJ\":\"Africa/Addis_Ababa\",\"JIK\":\"Europe/Athens\",\"JIL\":\"Asia/Shanghai\",\"JIM\":\"Africa/Addis_Ababa\",\"JIN\":\"Africa/Kampala\",\"JIO\":\"Asia/Jayapura\",\"JIP\":\"America/Guayaquil\",\"JIQ\":\"Asia/Shanghai\",\"JIR\":\"Asia/Kathmandu\",\"JIU\":\"Asia/Shanghai\",\"JIW\":\"Asia/Karachi\",\"JJA\":\"Pacific/Guadalcanal\",\"JJD\":\"America/Belem\",\"JJG\":\"America/Sao_Paulo\",\"JJI\":\"America/Lima\",\"JJM\":\"Africa/Nairobi\",\"JJN\":\"Asia/Shanghai\",\"JJU\":\"America/Godthab\",\"JKG\":\"Europe/Stockholm\",\"JKH\":\"Europe/Athens\",\"JKL\":\"Europe/Athens\",\"JKR\":\"Asia/Kathmandu\",\"JKV\":\"America/Chicago\",\"JLA\":\"America/Anchorage\",\"JLB\":\"America/Los_Angeles\",\"JLD\":\"Europe/Stockholm\",\"JLH\":\"America/Chicago\",\"JLN\":\"America/Chicago\",\"JLO\":\"Europe/Rome\",\"JLP\":\"Europe/Paris\",\"JLR\":\"Asia/Kolkata\",\"JLS\":\"America/Sao_Paulo\",\"JLX\":\"America/Los_Angeles\",\"JMA\":\"America/Chicago\",\"JMB\":\"Africa/Luanda\",\"JMC\":\"America/Los_Angeles\",\"JMD\":\"America/Chicago\",\"JMH\":\"America/Chicago\",\"JMJ\":\"Asia/Shanghai\",\"JMK\":\"Europe/Athens\",\"JMM\":\"Europe/Stockholm\",\"JMN\":\"America/Chicago\",\"JMO\":\"Asia/Kathmandu\",\"JMS\":\"America/Chicago\",\"JMU\":\"Asia/Shanghai\",\"JMY\":\"Africa/Freetown\",\"JNA\":\"America/Sao_Paulo\",\"JNB\":\"Africa/Johannesburg\",\"JNG\":\"Asia/Shanghai\",\"JNH\":\"America/Chicago\",\"JNI\":\"America/Argentina/Buenos_Aires\",\"JNJ\":\"Asia/Muscat\",\"JNN\":\"America/Godthab\",\"JNP\":\"America/Los_Angeles\",\"JNS\":\"America/Godthab\",\"JNU\":\"America/Anchorage\",\"JNX\":\"Europe/Athens\",\"JNZ\":\"Asia/Shanghai\",\"JOC\":\"America/Los_Angeles\",\"JOE\":\"Europe/Helsinki\",\"JOG\":\"Asia/Jakarta\",\"JOH\":\"Africa/Johannesburg\",\"JOI\":\"America/Sao_Paulo\",\"JOK\":\"Europe/Moscow\",\"JOL\":\"Asia/Manila\",\"JOM\":\"Africa/Dar_es_Salaam\",\"JON\":\"Pacific/Honolulu\",\"JOP\":\"Pacific/Port_Moresby\",\"JOR\":\"America/Los_Angeles\",\"JOS\":\"Africa/Lagos\",\"JOT\":\"America/Chicago\",\"JPA\":\"America/Belem\",\"JPD\":\"America/Los_Angeles\",\"JPN\":\"America/New_York\",\"JPR\":\"America/Porto_Velho\",\"JPT\":\"America/Chicago\",\"JPU\":\"Europe/Paris\",\"JQA\":\"America/Godthab\",\"JQE\":\"America/Panama\",\"JRC\":\"America/Chicago\",\"JRD\":\"America/Los_Angeles\",\"JRE\":\"America/New_York\",\"JRF\":\"Pacific/Honolulu\",\"JRG\":\"Asia/Kolkata\",\"JRH\":\"Asia/Kolkata\",\"JRK\":\"America/Godthab\",\"JRN\":\"America/Campo_Grande\",\"JRO\":\"Africa/Dar_es_Salaam\",\"JRS\":\"Asia/Jerusalem\",\"JSA\":\"Asia/Kolkata\",\"JSD\":\"America/New_York\",\"JSG\":\"America/Los_Angeles\",\"JSH\":\"Europe/Athens\",\"JSI\":\"Europe/Athens\",\"JSJ\":\"Asia/Shanghai\",\"JSK\":\"Asia/Tehran\",\"JSL\":\"America/New_York\",\"JSM\":\"America/Argentina/Buenos_Aires\",\"JSN\":\"America/Los_Angeles\",\"JSO\":\"Europe/Stockholm\",\"JSP\":\"Asia/Seoul\",\"JSR\":\"Asia/Dhaka\",\"JSS\":\"Europe/Athens\",\"JST\":\"America/New_York\",\"JSU\":\"America/Godthab\",\"JSY\":\"Europe/Athens\",\"JTC\":\"America/Sao_Paulo\",\"JTI\":\"America/Sao_Paulo\",\"JTO\":\"America/Los_Angeles\",\"JTR\":\"Europe/Athens\",\"JTY\":\"Europe/Athens\",\"JUA\":\"America/Campo_Grande\",\"JUB\":\"Africa/Juba\",\"JUC\":\"America/Los_Angeles\",\"JUH\":\"Asia/Shanghai\",\"JUI\":\"Europe/Berlin\",\"JUJ\":\"America/Argentina/Buenos_Aires\",\"JUK\":\"America/Godthab\",\"JUL\":\"America/Lima\",\"JUM\":\"Asia/Kathmandu\",\"JUN\":\"Australia/Brisbane\",\"JUO\":\"America/Bogota\",\"JUP\":\"America/Los_Angeles\",\"JUR\":\"Australia/Perth\",\"JUT\":\"America/Tegucigalpa\",\"JUU\":\"America/Godthab\",\"JUV\":\"America/Godthab\",\"JUZ\":\"Asia/Shanghai\",\"JVA\":\"Indian/Antananarivo\",\"JVI\":\"America/New_York\",\"JVL\":\"America/Chicago\",\"JWA\":\"Africa/Gaborone\",\"JWC\":\"America/Los_Angeles\",\"JWH\":\"America/Chicago\",\"JWL\":\"America/Chicago\",\"JWN\":\"Asia/Tehran\",\"JXA\":\"Asia/Shanghai\",\"JXN\":\"America/New_York\",\"JYR\":\"Asia/Tehran\",\"JYV\":\"Europe/Helsinki\",\"JZH\":\"Asia/Shanghai\",\"KAA\":\"Africa/Lusaka\",\"KAB\":\"Africa/Harare\",\"KAC\":\"Asia/Damascus\",\"KAD\":\"Africa/Lagos\",\"KAE\":\"America/Anchorage\",\"KAF\":\"Pacific/Bougainville\",\"KAG\":\"Asia/Seoul\",\"KAH\":\"Australia/Sydney\",\"KAI\":\"America/Guyana\",\"KAJ\":\"Europe/Helsinki\",\"KAK\":\"Pacific/Port_Moresby\",\"KAL\":\"America/Anchorage\",\"KAM\":\"Asia/Aden\",\"KAN\":\"Africa/Lagos\",\"KAO\":\"Europe/Helsinki\",\"KAP\":\"Africa/Lubumbashi\",\"KAQ\":\"Pacific/Port_Moresby\",\"KAR\":\"America/Guyana\",\"KAS\":\"Africa/Windhoek\",\"KAT\":\"Pacific/Auckland\",\"KAU\":\"Europe/Helsinki\",\"KAV\":\"America/Caracas\",\"KAW\":\"Asia/Yangon\",\"KAX\":\"Australia/Perth\",\"KAY\":\"Pacific/Fiji\",\"KAZ\":\"Asia/Jayapura\",\"KBA\":\"Africa/Freetown\",\"KBB\":\"Australia/Darwin\",\"KBC\":\"America/Anchorage\",\"KBD\":\"Australia/Perth\",\"KBE\":\"America/Anchorage\",\"KBF\":\"Asia/Jayapura\",\"KBG\":\"Africa/Kampala\",\"KBH\":\"Africa/Dar_es_Salaam\",\"KBI\":\"Africa/Douala\",\"KBJ\":\"Australia/Darwin\",\"KBK\":\"America/Anchorage\",\"KBL\":\"Asia/Kabul\",\"KBM\":\"Pacific/Port_Moresby\",\"KBN\":\"Africa/Lubumbashi\",\"KBO\":\"Africa/Lubumbashi\",\"KBP\":\"Europe/Kiev\",\"KBQ\":\"Africa/Blantyre\",\"KBR\":\"Asia/Kuala_Lumpur\",\"KBS\":\"Africa/Freetown\",\"KBT\":\"Pacific/Majuro\",\"KBU\":\"Asia/Makassar\",\"KBV\":\"Asia/Bangkok\",\"KBW\":\"America/Anchorage\",\"KBX\":\"Asia/Jayapura\",\"KBY\":\"Australia/Adelaide\",\"KBZ\":\"Pacific/Auckland\",\"KCA\":\"Asia/Shanghai\",\"KCB\":\"America/Paramaribo\",\"KCC\":\"America/Anchorage\",\"KCD\":\"Asia/Jayapura\",\"KCE\":\"Australia/Brisbane\",\"KCF\":\"Asia/Karachi\",\"KCG\":\"America/Anchorage\",\"KCH\":\"Asia/Kuala_Lumpur\",\"KCI\":\"Asia/Jayapura\",\"KCJ\":\"Pacific/Port_Moresby\",\"KCK\":\"Asia/Irkutsk\",\"KCL\":\"America/Anchorage\",\"KCM\":\"Europe/Istanbul\",\"KCN\":\"America/Anchorage\",\"KCO\":\"Europe/Istanbul\",\"KCP\":\"Europe/Kiev\",\"KCQ\":\"America/Anchorage\",\"KCS\":\"Australia/Darwin\",\"KCT\":\"Asia/Colombo\",\"KCU\":\"Africa/Kampala\",\"KCZ\":\"Asia/Tokyo\",\"KDA\":\"Africa/Dakar\",\"KDB\":\"Australia/Perth\",\"KDC\":\"Africa/Porto-Novo\",\"KDD\":\"Asia/Karachi\",\"KDE\":\"Pacific/Port_Moresby\",\"KDF\":\"Africa/Algiers\",\"KDH\":\"Asia/Kabul\",\"KDI\":\"Asia/Makassar\",\"KDJ\":\"Africa/Libreville\",\"KDK\":\"America/Anchorage\",\"KDL\":\"Europe/Tallinn\",\"KDM\":\"Indian/Maldives\",\"KDN\":\"Africa/Libreville\",\"KDO\":\"Indian/Maldives\",\"KDP\":\"Pacific/Port_Moresby\",\"KDQ\":\"Pacific/Port_Moresby\",\"KDR\":\"Pacific/Port_Moresby\",\"KDS\":\"Australia/Brisbane\",\"KDT\":\"Asia/Bangkok\",\"KDU\":\"Asia/Karachi\",\"KDV\":\"Pacific/Fiji\",\"KDW\":\"Asia/Colombo\",\"KDX\":\"Africa/Khartoum\",\"KDY\":\"Asia/Yakutsk\",\"KDZ\":\"Asia/Colombo\",\"KEA\":\"Asia/Jayapura\",\"KEB\":\"America/Anchorage\",\"KEC\":\"Africa/Lubumbashi\",\"KED\":\"Africa/Nouakchott\",\"KEE\":\"Africa/Brazzaville\",\"KEF\":\"Atlantic/Reykjavik\",\"KEG\":\"Pacific/Port_Moresby\",\"KEH\":\"America/Los_Angeles\",\"KEI\":\"Asia/Jayapura\",\"KEJ\":\"Asia/Novokuznetsk\",\"KEK\":\"America/Anchorage\",\"KEL\":\"Europe/Berlin\",\"KEM\":\"Europe/Helsinki\",\"KEN\":\"Africa/Freetown\",\"KEO\":\"Africa/Abidjan\",\"KEP\":\"Asia/Kathmandu\",\"KEQ\":\"Asia/Jayapura\",\"KER\":\"Asia/Tehran\",\"KES\":\"America/Winnipeg\",\"KET\":\"Asia/Yangon\",\"KEU\":\"Africa/Nairobi\",\"KEV\":\"Europe/Helsinki\",\"KEW\":\"America/Winnipeg\",\"KEX\":\"Pacific/Port_Moresby\",\"KEY\":\"Africa/Nairobi\",\"KEZ\":\"Asia/Colombo\",\"KFA\":\"Africa/Nouakchott\",\"KFE\":\"Australia/Perth\",\"KFG\":\"Australia/Darwin\",\"KFM\":\"America/Edmonton\",\"KFP\":\"America/Anchorage\",\"KFS\":\"Europe/Istanbul\",\"KGA\":\"Africa/Lubumbashi\",\"KGB\":\"Pacific/Port_Moresby\",\"KGC\":\"Australia/Adelaide\",\"KGD\":\"Europe/Kaliningrad\",\"KGE\":\"Pacific/Guadalcanal\",\"KGF\":\"Asia/Almaty\",\"KGG\":\"Africa/Dakar\",\"KGH\":\"Pacific/Port_Moresby\",\"KGI\":\"Australia/Perth\",\"KGJ\":\"Africa/Blantyre\",\"KGK\":\"America/Anchorage\",\"KGL\":\"Africa/Kigali\",\"KGN\":\"Africa/Kinshasa\",\"KGO\":\"Europe/Kiev\",\"KGP\":\"Asia/Yekaterinburg\",\"KGQ\":\"America/Godthab\",\"KGR\":\"Australia/Darwin\",\"KGS\":\"Europe/Athens\",\"KGT\":\"Asia/Shanghai\",\"KGU\":\"Asia/Kuala_Lumpur\",\"KGW\":\"Pacific/Port_Moresby\",\"KGX\":\"America/Anchorage\",\"KGY\":\"Australia/Brisbane\",\"KGZ\":\"America/Anchorage\",\"KHA\":\"Asia/Tehran\",\"KHC\":\"Europe/Simferopol\",\"KHD\":\"Asia/Tehran\",\"KHE\":\"Europe/Kiev\",\"KHG\":\"Asia/Shanghai\",\"KHH\":\"Asia/Taipei\",\"KHI\":\"Asia/Karachi\",\"KHJ\":\"Europe/Helsinki\",\"KHK\":\"Asia/Tehran\",\"KHL\":\"Asia/Dhaka\",\"KHM\":\"Asia/Yangon\",\"KHN\":\"Asia/Shanghai\",\"KHO\":\"Africa/Johannesburg\",\"KHQ\":\"America/Godthab\",\"KHR\":\"Asia/Ulaanbaatar\",\"KHS\":\"Asia/Muscat\",\"KHT\":\"Asia/Kabul\",\"KHU\":\"Europe/Kiev\",\"KHV\":\"Asia/Vladivostok\",\"KHW\":\"Africa/Gaborone\",\"KHX\":\"Africa/Kampala\",\"KHY\":\"Asia/Tehran\",\"KHZ\":\"Pacific/Tahiti\",\"KIA\":\"Pacific/Port_Moresby\",\"KIB\":\"America/Anchorage\",\"KIC\":\"America/Los_Angeles\",\"KID\":\"Europe/Stockholm\",\"KIE\":\"Pacific/Bougainville\",\"KIF\":\"America/Winnipeg\",\"KIG\":\"Africa/Johannesburg\",\"KIH\":\"Asia/Tehran\",\"KII\":\"Pacific/Port_Moresby\",\"KIJ\":\"Asia/Tokyo\",\"KIK\":\"Asia/Baghdad\",\"KIL\":\"Africa/Kinshasa\",\"KIM\":\"Africa/Johannesburg\",\"KIN\":\"America/Jamaica\",\"KIO\":\"Pacific/Majuro\",\"KIP\":\"America/Chicago\",\"KIQ\":\"Pacific/Port_Moresby\",\"KIR\":\"Europe/Dublin\",\"KIS\":\"Africa/Nairobi\",\"KIT\":\"Europe/Athens\",\"KIU\":\"Africa/Nairobi\",\"KIV\":\"Europe/Chisinau\",\"KIW\":\"Africa/Lusaka\",\"KIX\":\"Asia/Tokyo\",\"KIY\":\"Africa/Dar_es_Salaam\",\"KIZ\":\"Pacific/Port_Moresby\",\"KJA\":\"Asia/Krasnoyarsk\",\"KJH\":\"Asia/Shanghai\",\"KJI\":\"Asia/Shanghai\",\"KJK\":\"Europe/Brussels\",\"KJP\":\"Asia/Tokyo\",\"KJT\":\"Asia/Jakarta\",\"KJU\":\"Pacific/Port_Moresby\",\"KKA\":\"America/Anchorage\",\"KKB\":\"America/Anchorage\",\"KKC\":\"Asia/Bangkok\",\"KKD\":\"Pacific/Port_Moresby\",\"KKE\":\"Pacific/Auckland\",\"KKF\":\"America/Anchorage\",\"KKG\":\"America/Guyana\",\"KKH\":\"America/Anchorage\",\"KKI\":\"America/Anchorage\",\"KKJ\":\"Asia/Tokyo\",\"KKK\":\"America/Anchorage\",\"KKL\":\"America/Anchorage\",\"KKM\":\"Asia/Bangkok\",\"KKN\":\"Europe/Oslo\",\"KKO\":\"Pacific/Auckland\",\"KKP\":\"Australia/Brisbane\",\"KKQ\":\"Asia/Yekaterinburg\",\"KKR\":\"Pacific/Tahiti\",\"KKS\":\"Asia/Tehran\",\"KKT\":\"America/Chicago\",\"KKU\":\"America/Anchorage\",\"KKW\":\"Africa/Kinshasa\",\"KKX\":\"Asia/Tokyo\",\"KKY\":\"Europe/Dublin\",\"KKZ\":\"Asia/Phnom_Penh\",\"KLB\":\"Africa/Lusaka\",\"KLC\":\"Africa/Dakar\",\"KLD\":\"Europe/Moscow\",\"KLE\":\"Africa/Douala\",\"KLF\":\"Europe/Moscow\",\"KLG\":\"America/Anchorage\",\"KLH\":\"Asia/Kolkata\",\"KLI\":\"Africa/Kinshasa\",\"KLJ\":\"Europe/Vilnius\",\"KLK\":\"Africa/Nairobi\",\"KLL\":\"America/Anchorage\",\"KLM\":\"Asia/Tehran\",\"KLN\":\"America/Anchorage\",\"KLO\":\"Asia/Manila\",\"KLP\":\"America/Anchorage\",\"KLQ\":\"Asia/Jakarta\",\"KLR\":\"Europe/Stockholm\",\"KLS\":\"America/Los_Angeles\",\"KLT\":\"Europe/Berlin\",\"KLU\":\"Europe/Vienna\",\"KLV\":\"Europe/Prague\",\"KLW\":\"America/Anchorage\",\"KLX\":\"Europe/Athens\",\"KLY\":\"Africa/Lubumbashi\",\"KLZ\":\"Africa/Johannesburg\",\"KMA\":\"Pacific/Port_Moresby\",\"KMB\":\"Pacific/Port_Moresby\",\"KMC\":\"Asia/Riyadh\",\"KMD\":\"Africa/Libreville\",\"KME\":\"Africa/Kigali\",\"KMF\":\"Pacific/Port_Moresby\",\"KMG\":\"Asia/Shanghai\",\"KMH\":\"Africa/Johannesburg\",\"KMI\":\"Asia/Tokyo\",\"KMJ\":\"Asia/Tokyo\",\"KMK\":\"Africa/Brazzaville\",\"KML\":\"Australia/Brisbane\",\"KMM\":\"Asia/Jayapura\",\"KMN\":\"Africa/Lubumbashi\",\"KMO\":\"America/Anchorage\",\"KMP\":\"Africa/Windhoek\",\"KMQ\":\"Asia/Tokyo\",\"KMR\":\"Pacific/Port_Moresby\",\"KMS\":\"Africa/Accra\",\"KMT\":\"Asia/Phnom_Penh\",\"KMU\":\"Africa/Mogadishu\",\"KMV\":\"Asia/Yangon\",\"KMW\":\"Europe/Moscow\",\"KMX\":\"Asia/Riyadh\",\"KMY\":\"America/Anchorage\",\"KMZ\":\"Africa/Lusaka\",\"KNA\":\"America/Santiago\",\"KNB\":\"America/Denver\",\"KNC\":\"Asia/Shanghai\",\"KND\":\"Africa/Lubumbashi\",\"KNE\":\"Pacific/Port_Moresby\",\"KNF\":\"Europe/London\",\"KNG\":\"Asia/Jayapura\",\"KNH\":\"Asia/Taipei\",\"KNI\":\"Australia/Perth\",\"KNJ\":\"Africa/Brazzaville\",\"KNK\":\"America/Anchorage\",\"KNL\":\"Pacific/Port_Moresby\",\"KNM\":\"Africa/Lubumbashi\",\"KNN\":\"Africa/Conakry\",\"KNO\":\"Asia/Jakarta\",\"KNP\":\"Africa/Luanda\",\"KNQ\":\"Pacific/Noumea\",\"KNR\":\"Asia/Tehran\",\"KNS\":\"Australia/Hobart\",\"KNT\":\"America/Chicago\",\"KNU\":\"Asia/Kolkata\",\"KNV\":\"America/Vancouver\",\"KNW\":\"America/Anchorage\",\"KNX\":\"Australia/Perth\",\"KNY\":\"America/Regina\",\"KNZ\":\"Africa/Bamako\",\"KOA\":\"Pacific/Honolulu\",\"KOB\":\"Africa/Douala\",\"KOC\":\"Pacific/Noumea\",\"KOD\":\"Asia/Makassar\",\"KOE\":\"Asia/Makassar\",\"KOF\":\"Africa/Johannesburg\",\"KOG\":\"Asia/Vientiane\",\"KOH\":\"Australia/Brisbane\",\"KOI\":\"Europe/London\",\"KOJ\":\"Asia/Tokyo\",\"KOK\":\"Europe/Helsinki\",\"KOL\":\"Africa/Bangui\",\"KOM\":\"Pacific/Port_Moresby\",\"KON\":\"Asia/Ho_Chi_Minh\",\"KOO\":\"Africa/Lubumbashi\",\"KOP\":\"Asia/Bangkok\",\"KOQ\":\"Europe/Berlin\",\"KOR\":\"Pacific/Port_Moresby\",\"KOS\":\"Asia/Phnom_Penh\",\"KOT\":\"America/Anchorage\",\"KOU\":\"Africa/Libreville\",\"KOV\":\"Asia/Almaty\",\"KOW\":\"Asia/Shanghai\",\"KOX\":\"Asia/Jayapura\",\"KOY\":\"America/Anchorage\",\"KOZ\":\"America/Anchorage\",\"KPA\":\"Pacific/Port_Moresby\",\"KPB\":\"America/Anchorage\",\"KPC\":\"America/Anchorage\",\"KPE\":\"Pacific/Port_Moresby\",\"KPF\":\"Pacific/Port_Moresby\",\"KPG\":\"America/Guyana\",\"KPH\":\"America/Anchorage\",\"KPI\":\"Asia/Kuala_Lumpur\",\"KPK\":\"America/Anchorage\",\"KPL\":\"Pacific/Port_Moresby\",\"KPM\":\"Pacific/Port_Moresby\",\"KPN\":\"America/Anchorage\",\"KPO\":\"Asia/Seoul\",\"KPP\":\"Australia/Brisbane\",\"KPR\":\"America/Anchorage\",\"KPS\":\"Australia/Sydney\",\"KPT\":\"America/Los_Angeles\",\"KPV\":\"America/Anchorage\",\"KPW\":\"Asia/Kamchatka\",\"KPY\":\"America/Anchorage\",\"KQA\":\"America/Anchorage\",\"KQB\":\"Australia/Adelaide\",\"KQH\":\"Asia/Kolkata\",\"KQL\":\"Pacific/Port_Moresby\",\"KQT\":\"Asia/Dushanbe\",\"KRA\":\"Australia/Sydney\",\"KRB\":\"Australia/Brisbane\",\"KRC\":\"Asia/Jakarta\",\"KRD\":\"Australia/Darwin\",\"KRE\":\"Africa/Bujumbura\",\"KRF\":\"Europe/Stockholm\",\"KRG\":\"America/Guyana\",\"KRH\":\"Europe/London\",\"KRI\":\"Pacific/Port_Moresby\",\"KRJ\":\"Pacific/Port_Moresby\",\"KRK\":\"Europe/Warsaw\",\"KRL\":\"Asia/Shanghai\",\"KRM\":\"America/Guyana\",\"KRN\":\"Europe/Stockholm\",\"KRO\":\"Asia/Yekaterinburg\",\"KRP\":\"Europe/Copenhagen\",\"KRQ\":\"Europe/Kiev\",\"KRR\":\"Europe/Moscow\",\"KRS\":\"Europe/Oslo\",\"KRT\":\"Africa/Khartoum\",\"KRU\":\"Pacific/Port_Moresby\",\"KRV\":\"Africa/Nairobi\",\"KRW\":\"Asia/Ashgabat\",\"KRX\":\"Pacific/Port_Moresby\",\"KRY\":\"Asia/Shanghai\",\"KRZ\":\"Africa/Kinshasa\",\"KSA\":\"Pacific/Pohnpei\",\"KSB\":\"Pacific/Port_Moresby\",\"KSC\":\"Europe/Bratislava\",\"KSD\":\"Europe/Stockholm\",\"KSE\":\"Africa/Kampala\",\"KSF\":\"Europe/Berlin\",\"KSG\":\"Pacific/Port_Moresby\",\"KSH\":\"Asia/Tehran\",\"KSI\":\"Africa/Conakry\",\"KSJ\":\"Europe/Athens\",\"KSK\":\"Europe/Stockholm\",\"KSL\":\"Africa/Khartoum\",\"KSM\":\"America/Anchorage\",\"KSN\":\"Asia/Qostanay\",\"KSO\":\"Europe/Athens\",\"KSP\":\"Pacific/Port_Moresby\",\"KSQ\":\"Asia/Tashkent\",\"KSR\":\"Asia/Makassar\",\"KSS\":\"Africa/Bamako\",\"KST\":\"Africa/Khartoum\",\"KSU\":\"Europe/Oslo\",\"KSV\":\"Australia/Brisbane\",\"KSW\":\"Asia/Jerusalem\",\"KSX\":\"Pacific/Port_Moresby\",\"KSY\":\"Europe/Istanbul\",\"KSZ\":\"Europe/Moscow\",\"KTA\":\"Australia/Perth\",\"KTB\":\"America/Anchorage\",\"KTC\":\"Africa/Abidjan\",\"KTD\":\"Asia/Tokyo\",\"KTE\":\"Asia/Kuala_Lumpur\",\"KTF\":\"Pacific/Auckland\",\"KTG\":\"Asia/Jakarta\",\"KTH\":\"America/Anchorage\",\"KTI\":\"Asia/Phnom_Penh\",\"KTJ\":\"Africa/Nairobi\",\"KTK\":\"Pacific/Bougainville\",\"KTL\":\"Africa/Nairobi\",\"KTM\":\"Asia/Kathmandu\",\"KTN\":\"America/Anchorage\",\"KTO\":\"America/Guyana\",\"KTP\":\"America/Jamaica\",\"KTQ\":\"Europe/Helsinki\",\"KTR\":\"Australia/Darwin\",\"KTS\":\"America/Anchorage\",\"KTT\":\"Europe/Helsinki\",\"KTU\":\"Asia/Kolkata\",\"KTV\":\"America/Caracas\",\"KTW\":\"Europe/Warsaw\",\"KTX\":\"Africa/Bamako\",\"KUA\":\"Asia/Kuala_Lumpur\",\"KUC\":\"Pacific/Tarawa\",\"KUD\":\"Asia/Kuala_Lumpur\",\"KUE\":\"Pacific/Guadalcanal\",\"KUF\":\"Europe/Samara\",\"KUG\":\"Australia/Brisbane\",\"KUH\":\"Asia/Tokyo\",\"KUI\":\"Pacific/Auckland\",\"KUJ\":\"Asia/Tokyo\",\"KUK\":\"America/Anchorage\",\"KUL\":\"Asia/Kuala_Lumpur\",\"KUM\":\"Asia/Tokyo\",\"KUN\":\"Europe/Vilnius\",\"KUO\":\"Europe/Helsinki\",\"KUP\":\"Pacific/Port_Moresby\",\"KUQ\":\"Pacific/Port_Moresby\",\"KUR\":\"Asia/Kabul\",\"KUS\":\"America/Godthab\",\"KUT\":\"Asia/Tbilisi\",\"KUU\":\"Asia/Kolkata\",\"KUV\":\"Asia/Seoul\",\"KUW\":\"America/Anchorage\",\"KUX\":\"Pacific/Port_Moresby\",\"KUY\":\"Pacific/Port_Moresby\",\"KUZ\":\"America/Godthab\",\"KVA\":\"Europe/Athens\",\"KVB\":\"Europe/Stockholm\",\"KVC\":\"America/Anchorage\",\"KVD\":\"Asia/Baku\",\"KVE\":\"Pacific/Port_Moresby\",\"KVG\":\"Pacific/Port_Moresby\",\"KVK\":\"Europe/Moscow\",\"KVL\":\"America/Anchorage\",\"KVO\":\"Europe/Belgrade\",\"KVR\":\"Asia/Vladivostok\",\"KVU\":\"Pacific/Fiji\",\"KVX\":\"Europe/Moscow\",\"KWA\":\"Pacific/Majuro\",\"KWB\":\"Asia/Jakarta\",\"KWE\":\"Asia/Shanghai\",\"KWF\":\"America/Anchorage\",\"KWG\":\"Europe/Kiev\",\"KWH\":\"Asia/Kabul\",\"KWI\":\"Asia/Kuwait\",\"KWJ\":\"Asia/Seoul\",\"KWK\":\"America/Anchorage\",\"KWL\":\"Asia/Shanghai\",\"KWM\":\"Australia/Brisbane\",\"KWN\":\"America/Anchorage\",\"KWO\":\"Pacific/Port_Moresby\",\"KWP\":\"America/Anchorage\",\"KWR\":\"Pacific/Guadalcanal\",\"KWS\":\"Pacific/Guadalcanal\",\"KWT\":\"America/Anchorage\",\"KWV\":\"Pacific/Bougainville\",\"KWX\":\"Pacific/Port_Moresby\",\"KWY\":\"Africa/Nairobi\",\"KWZ\":\"Africa/Lubumbashi\",\"KXA\":\"America/Anchorage\",\"KXE\":\"Africa/Johannesburg\",\"KXF\":\"Pacific/Fiji\",\"KXK\":\"Asia/Vladivostok\",\"KXR\":\"Pacific/Bougainville\",\"KXU\":\"Pacific/Tahiti\",\"KYA\":\"Europe/Istanbul\",\"KYD\":\"Asia/Taipei\",\"KYE\":\"Asia/Beirut\",\"KYF\":\"Australia/Perth\",\"KYI\":\"Australia/Adelaide\",\"KYK\":\"America/Anchorage\",\"KYL\":\"America/New_York\",\"KYN\":\"Europe/London\",\"KYO\":\"America/New_York\",\"KYP\":\"Asia/Yangon\",\"KYS\":\"Africa/Bamako\",\"KYT\":\"Asia/Yangon\",\"KYU\":\"America/Anchorage\",\"KYX\":\"Pacific/Port_Moresby\",\"KYZ\":\"Asia/Krasnoyarsk\",\"KZB\":\"America/Anchorage\",\"KZC\":\"Asia/Phnom_Penh\",\"KZD\":\"Asia/Phnom_Penh\",\"KZF\":\"Pacific/Port_Moresby\",\"KZG\":\"Europe/Berlin\",\"KZH\":\"America/Anchorage\",\"KZI\":\"Europe/Athens\",\"KZK\":\"Asia/Phnom_Penh\",\"KZN\":\"Europe/Moscow\",\"KZO\":\"Asia/Qyzylorda\",\"KZR\":\"Europe/Istanbul\",\"KZS\":\"Europe/Athens\",\"LAA\":\"America/Denver\",\"LAB\":\"Pacific/Port_Moresby\",\"LAC\":\"Asia/Kuala_Lumpur\",\"LAD\":\"Africa/Luanda\",\"LAE\":\"Pacific/Port_Moresby\",\"LAF\":\"America/Indiana/Indianapolis\",\"LAG\":\"America/Caracas\",\"LAH\":\"Asia/Jayapura\",\"LAI\":\"Europe/Paris\",\"LAJ\":\"America/Sao_Paulo\",\"LAK\":\"America/Edmonton\",\"LAL\":\"America/New_York\",\"LAM\":\"America/Denver\",\"LAN\":\"America/New_York\",\"LAO\":\"Asia/Manila\",\"LAP\":\"America/Mazatlan\",\"LAQ\":\"Africa/Tripoli\",\"LAR\":\"America/Denver\",\"LAS\":\"America/Los_Angeles\",\"LAU\":\"Africa/Nairobi\",\"LAV\":\"Pacific/Apia\",\"LAW\":\"America/Chicago\",\"LAX\":\"America/Los_Angeles\",\"LAY\":\"Africa/Johannesburg\",\"LAZ\":\"America/Belem\",\"LBA\":\"Europe/London\",\"LBB\":\"America/Chicago\",\"LBC\":\"Europe/Berlin\",\"LBD\":\"Asia/Dushanbe\",\"LBE\":\"America/New_York\",\"LBF\":\"America/Chicago\",\"LBG\":\"Europe/Paris\",\"LBH\":\"Australia/Sydney\",\"LBI\":\"Europe/Paris\",\"LBJ\":\"Asia/Makassar\",\"LBK\":\"Africa/Nairobi\",\"LBL\":\"America/Chicago\",\"LBM\":\"Africa/Maputo\",\"LBN\":\"Africa/Nairobi\",\"LBO\":\"Africa/Lubumbashi\",\"LBP\":\"Asia/Kuala_Lumpur\",\"LBQ\":\"Africa/Libreville\",\"LBR\":\"America/Porto_Velho\",\"LBS\":\"Pacific/Fiji\",\"LBT\":\"America/New_York\",\"LBU\":\"Asia/Kuala_Lumpur\",\"LBV\":\"Africa/Libreville\",\"LBW\":\"Asia/Makassar\",\"LBX\":\"Asia/Manila\",\"LBY\":\"Europe/Paris\",\"LBZ\":\"Africa/Luanda\",\"LCA\":\"Asia/Nicosia\",\"LCB\":\"America/Campo_Grande\",\"LCC\":\"Europe/Rome\",\"LCD\":\"Africa/Johannesburg\",\"LCE\":\"America/Tegucigalpa\",\"LCF\":\"America/Guatemala\",\"LCG\":\"Europe/Madrid\",\"LCH\":\"America/Chicago\",\"LCI\":\"America/New_York\",\"LCJ\":\"Europe/Warsaw\",\"LCK\":\"America/New_York\",\"LCL\":\"America/Havana\",\"LCM\":\"America/Argentina/Buenos_Aires\",\"LCN\":\"Australia/Adelaide\",\"LCO\":\"Africa/Brazzaville\",\"LCP\":\"America/Argentina/Buenos_Aires\",\"LCQ\":\"America/New_York\",\"LCR\":\"America/Bogota\",\"LCS\":\"America/Costa_Rica\",\"LCV\":\"Europe/Rome\",\"LCX\":\"Asia/Shanghai\",\"LCY\":\"Europe/London\",\"LDA\":\"Asia/Kolkata\",\"LDB\":\"America/Sao_Paulo\",\"LDC\":\"Australia/Brisbane\",\"LDE\":\"Europe/Paris\",\"LDG\":\"Europe/Moscow\",\"LDH\":\"Australia/Sydney\",\"LDI\":\"Africa/Dar_es_Salaam\",\"LDJ\":\"America/New_York\",\"LDK\":\"Europe/Stockholm\",\"LDM\":\"America/New_York\",\"LDN\":\"Asia/Kathmandu\",\"LDO\":\"America/Paramaribo\",\"LDR\":\"Asia/Aden\",\"LDS\":\"Asia/Shanghai\",\"LDU\":\"Asia/Kuala_Lumpur\",\"LDV\":\"Europe/Paris\",\"LDW\":\"Australia/Perth\",\"LDX\":\"America/Cayenne\",\"LDY\":\"Europe/London\",\"LDZ\":\"Africa/Johannesburg\",\"LEA\":\"Australia/Perth\",\"LEB\":\"America/New_York\",\"LEC\":\"America/Belem\",\"LED\":\"Europe/Moscow\",\"LEE\":\"America/New_York\",\"LEF\":\"Africa/Maseru\",\"LEG\":\"Africa/Nouakchott\",\"LEH\":\"Europe/Paris\",\"LEI\":\"Europe/Madrid\",\"LEJ\":\"Europe/Berlin\",\"LEK\":\"Africa/Conakry\",\"LEL\":\"Australia/Darwin\",\"LEM\":\"America/Denver\",\"LEN\":\"Europe/Madrid\",\"LEO\":\"Africa/Libreville\",\"LEP\":\"America/Sao_Paulo\",\"LEQ\":\"Europe/London\",\"LER\":\"Australia/Perth\",\"LES\":\"Africa/Maseru\",\"LET\":\"America/Bogota\",\"LEU\":\"Europe/Madrid\",\"LEV\":\"Pacific/Fiji\",\"LEW\":\"America/New_York\",\"LEX\":\"America/New_York\",\"LEY\":\"Europe/Amsterdam\",\"LEZ\":\"America/Tegucigalpa\",\"LFB\":\"Africa/Maputo\",\"LFI\":\"America/New_York\",\"LFK\":\"America/Chicago\",\"LFM\":\"Asia/Tehran\",\"LFN\":\"America/New_York\",\"LFO\":\"Africa/Addis_Ababa\",\"LFP\":\"Australia/Brisbane\",\"LFQ\":\"Asia/Shanghai\",\"LFR\":\"America/Caracas\",\"LFT\":\"America/Chicago\",\"LFW\":\"Africa/Lome\",\"LGA\":\"America/New_York\",\"LGB\":\"America/Los_Angeles\",\"LGC\":\"America/New_York\",\"LGD\":\"America/Los_Angeles\",\"LGE\":\"Australia/Perth\",\"LGF\":\"America/Phoenix\",\"LGG\":\"Europe/Brussels\",\"LGH\":\"Australia/Adelaide\",\"LGI\":\"America/Nassau\",\"LGK\":\"Asia/Kuala_Lumpur\",\"LGL\":\"Asia/Kuala_Lumpur\",\"LGM\":\"Pacific/Port_Moresby\",\"LGN\":\"Pacific/Port_Moresby\",\"LGO\":\"Europe/Berlin\",\"LGP\":\"Asia/Manila\",\"LGQ\":\"America/Guayaquil\",\"LGR\":\"America/Santiago\",\"LGS\":\"America/Argentina/Buenos_Aires\",\"LGT\":\"America/Bogota\",\"LGU\":\"America/Denver\",\"LGW\":\"Europe/London\",\"LGX\":\"Africa/Mogadishu\",\"LGY\":\"America/Caracas\",\"LHA\":\"Europe/Berlin\",\"LHB\":\"America/Anchorage\",\"LHE\":\"Asia/Karachi\",\"LHG\":\"Australia/Sydney\",\"LHI\":\"Asia/Jayapura\",\"LHK\":\"Asia/Shanghai\",\"LHN\":\"Asia/Taipei\",\"LHP\":\"Pacific/Bougainville\",\"LHR\":\"Europe/London\",\"LHS\":\"America/Argentina/Buenos_Aires\",\"LHU\":\"Africa/Windhoek\",\"LHV\":\"America/New_York\",\"LHW\":\"Asia/Shanghai\",\"LIA\":\"Asia/Shanghai\",\"LIB\":\"Australia/Darwin\",\"LIC\":\"America/Denver\",\"LID\":\"Europe/Amsterdam\",\"LIE\":\"Africa/Kinshasa\",\"LIF\":\"Pacific/Noumea\",\"LIG\":\"Europe/Paris\",\"LIH\":\"Pacific/Honolulu\",\"LII\":\"Asia/Jayapura\",\"LIJ\":\"America/Anchorage\",\"LIK\":\"Pacific/Majuro\",\"LIL\":\"Europe/Paris\",\"LIM\":\"America/Lima\",\"LIN\":\"Europe/Rome\",\"LIO\":\"America/Costa_Rica\",\"LIP\":\"America/Sao_Paulo\",\"LIQ\":\"Africa/Kinshasa\",\"LIR\":\"America/Costa_Rica\",\"LIS\":\"Europe/Lisbon\",\"LIT\":\"America/Chicago\",\"LIU\":\"Europe/Rome\",\"LIV\":\"America/Anchorage\",\"LIW\":\"Asia/Yangon\",\"LIX\":\"Africa/Blantyre\",\"LIY\":\"America/New_York\",\"LIZ\":\"America/New_York\",\"LJA\":\"Africa/Lubumbashi\",\"LJC\":\"America/New_York\",\"LJG\":\"Asia/Shanghai\",\"LJN\":\"America/Chicago\",\"LJU\":\"Europe/Ljubljana\",\"LKA\":\"Asia/Makassar\",\"LKB\":\"Pacific/Fiji\",\"LKC\":\"Africa/Brazzaville\",\"LKD\":\"Australia/Brisbane\",\"LKE\":\"America/Los_Angeles\",\"LKG\":\"Africa/Nairobi\",\"LKH\":\"Asia/Kuala_Lumpur\",\"LKI\":\"America/Chicago\",\"LKK\":\"America/Anchorage\",\"LKL\":\"Europe/Oslo\",\"LKN\":\"Europe/Oslo\",\"LKO\":\"Asia/Kolkata\",\"LKP\":\"America/New_York\",\"LKR\":\"Africa/Mogadishu\",\"LKS\":\"America/Chicago\",\"LKT\":\"Africa/Abidjan\",\"LKU\":\"Africa/Nairobi\",\"LKV\":\"America/Los_Angeles\",\"LKY\":\"Africa/Dar_es_Salaam\",\"LKZ\":\"Europe/London\",\"LLA\":\"Europe/Stockholm\",\"LLB\":\"Asia/Shanghai\",\"LLC\":\"Asia/Manila\",\"LLE\":\"Africa/Johannesburg\",\"LLF\":\"Asia/Shanghai\",\"LLG\":\"Australia/Brisbane\",\"LLH\":\"America/Tegucigalpa\",\"LLI\":\"Africa/Addis_Ababa\",\"LLJ\":\"Asia/Makassar\",\"LLK\":\"Asia/Baku\",\"LLL\":\"Australia/Perth\",\"LLM\":\"Pacific/Guadalcanal\",\"LLN\":\"Asia/Jayapura\",\"LLO\":\"Asia/Makassar\",\"LLP\":\"Australia/Brisbane\",\"LLS\":\"America/Argentina/Buenos_Aires\",\"LLU\":\"America/Godthab\",\"LLV\":\"Asia/Shanghai\",\"LLW\":\"Africa/Blantyre\",\"LLX\":\"America/New_York\",\"LLY\":\"America/New_York\",\"LMA\":\"America/Anchorage\",\"LMB\":\"Africa/Blantyre\",\"LMC\":\"America/Bogota\",\"LMD\":\"America/Argentina/Buenos_Aires\",\"LME\":\"Europe/Paris\",\"LMG\":\"Pacific/Port_Moresby\",\"LMH\":\"America/Tegucigalpa\",\"LMI\":\"Pacific/Port_Moresby\",\"LML\":\"Pacific/Majuro\",\"LMM\":\"America/Mazatlan\",\"LMN\":\"Asia/Kuala_Lumpur\",\"LMO\":\"Europe/London\",\"LMP\":\"Europe/Rome\",\"LMQ\":\"Africa/Tripoli\",\"LMR\":\"Africa/Johannesburg\",\"LMS\":\"America/Chicago\",\"LMT\":\"America/Los_Angeles\",\"LMU\":\"Asia/Jakarta\",\"LMX\":\"America/Bogota\",\"LMY\":\"Pacific/Port_Moresby\",\"LMZ\":\"Africa/Maputo\",\"LNA\":\"America/New_York\",\"LNB\":\"Pacific/Efate\",\"LNC\":\"Pacific/Port_Moresby\",\"LND\":\"America/Denver\",\"LNE\":\"Pacific/Efate\",\"LNF\":\"Pacific/Port_Moresby\",\"LNG\":\"Pacific/Port_Moresby\",\"LNH\":\"Australia/Darwin\",\"LNI\":\"America/Anchorage\",\"LNJ\":\"Asia/Shanghai\",\"LNK\":\"America/Chicago\",\"LNL\":\"Asia/Shanghai\",\"LNM\":\"Pacific/Port_Moresby\",\"LNN\":\"America/New_York\",\"LNO\":\"Australia/Perth\",\"LNP\":\"America/New_York\",\"LNQ\":\"Pacific/Port_Moresby\",\"LNR\":\"America/Chicago\",\"LNS\":\"America/New_York\",\"LNU\":\"Asia/Makassar\",\"LNV\":\"Pacific/Port_Moresby\",\"LNX\":\"Europe/Moscow\",\"LNY\":\"Pacific/Honolulu\",\"LNZ\":\"Europe/Vienna\",\"LOA\":\"Australia/Brisbane\",\"LOB\":\"America/Santiago\",\"LOC\":\"Australia/Adelaide\",\"LOD\":\"Pacific/Efate\",\"LOE\":\"Asia/Bangkok\",\"LOF\":\"Pacific/Majuro\",\"LOG\":\"America/Los_Angeles\",\"LOH\":\"America/Guayaquil\",\"LOI\":\"America/Sao_Paulo\",\"LOK\":\"Africa/Nairobi\",\"LOL\":\"America/Los_Angeles\",\"LOM\":\"America/Mexico_City\",\"LOO\":\"Africa/Algiers\",\"LOP\":\"Asia/Makassar\",\"LOQ\":\"Africa/Gaborone\",\"LOR\":\"America/Chicago\",\"LOS\":\"Africa/Lagos\",\"LOT\":\"America/Chicago\",\"LOU\":\"America/New_York\",\"LOV\":\"America/Mexico_City\",\"LOW\":\"America/New_York\",\"LOY\":\"Africa/Nairobi\",\"LOZ\":\"America/New_York\",\"LPA\":\"Atlantic/Canary\",\"LPB\":\"America/La_Paz\",\"LPC\":\"America/Los_Angeles\",\"LPD\":\"America/Bogota\",\"LPE\":\"America/Bogota\",\"LPF\":\"Asia/Shanghai\",\"LPG\":\"America/Argentina/Buenos_Aires\",\"LPH\":\"Europe/London\",\"LPI\":\"Europe/Stockholm\",\"LPJ\":\"America/Caracas\",\"LPK\":\"Europe/Moscow\",\"LPL\":\"Europe/London\",\"LPM\":\"Pacific/Efate\",\"LPO\":\"America/Chicago\",\"LPP\":\"Europe/Helsinki\",\"LPQ\":\"Asia/Vientiane\",\"LPS\":\"America/Los_Angeles\",\"LPT\":\"Asia/Bangkok\",\"LPU\":\"Asia/Makassar\",\"LPW\":\"America/Anchorage\",\"LPX\":\"Europe/Riga\",\"LPY\":\"Europe/Paris\",\"LQK\":\"America/New_York\",\"LQM\":\"America/Bogota\",\"LQN\":\"Asia/Kabul\",\"LRA\":\"Europe/Athens\",\"LRB\":\"Africa/Maseru\",\"LRD\":\"America/Chicago\",\"LRE\":\"Australia/Brisbane\",\"LRF\":\"America/Chicago\",\"LRG\":\"Asia/Karachi\",\"LRH\":\"Europe/Paris\",\"LRI\":\"America/Bogota\",\"LRJ\":\"America/Chicago\",\"LRL\":\"Africa/Lome\",\"LRM\":\"America/Santo_Domingo\",\"LRN\":\"America/Los_Angeles\",\"LRO\":\"America/Los_Angeles\",\"LRQ\":\"America/Winnipeg\",\"LRR\":\"Asia/Tehran\",\"LRS\":\"Europe/Athens\",\"LRT\":\"Europe/Paris\",\"LRU\":\"America/Denver\",\"LRV\":\"America/Caracas\",\"LSA\":\"Pacific/Port_Moresby\",\"LSB\":\"America/Denver\",\"LSC\":\"America/Santiago\",\"LSE\":\"America/Chicago\",\"LSF\":\"America/New_York\",\"LSH\":\"Asia/Yangon\",\"LSI\":\"Europe/London\",\"LSJ\":\"Pacific/Port_Moresby\",\"LSK\":\"America/Denver\",\"LSL\":\"America/Costa_Rica\",\"LSM\":\"Asia/Kuala_Lumpur\",\"LSN\":\"America/Los_Angeles\",\"LSO\":\"Europe/Paris\",\"LSP\":\"America/Caracas\",\"LSQ\":\"America/Santiago\",\"LSR\":\"America/Anchorage\",\"LSS\":\"America/Guadeloupe\",\"LST\":\"Australia/Hobart\",\"LSU\":\"Asia/Kuala_Lumpur\",\"LSV\":\"America/Los_Angeles\",\"LSW\":\"Asia/Jakarta\",\"LSX\":\"Asia/Jakarta\",\"LSY\":\"Australia/Sydney\",\"LSZ\":\"Europe/Zagreb\",\"LTA\":\"Africa/Johannesburg\",\"LTB\":\"Australia/Hobart\",\"LTC\":\"Africa/Ndjamena\",\"LTD\":\"Africa/Tripoli\",\"LTF\":\"Pacific/Port_Moresby\",\"LTG\":\"Asia/Kathmandu\",\"LTH\":\"America/Los_Angeles\",\"LTI\":\"Asia/Ulaanbaatar\",\"LTK\":\"Asia/Damascus\",\"LTL\":\"Africa/Libreville\",\"LTM\":\"America/Guyana\",\"LTN\":\"Europe/London\",\"LTO\":\"America/Mazatlan\",\"LTP\":\"Australia/Brisbane\",\"LTQ\":\"Europe/Paris\",\"LTR\":\"Europe/Dublin\",\"LTS\":\"America/Chicago\",\"LTT\":\"Europe/Paris\",\"LTU\":\"Asia/Kolkata\",\"LTV\":\"Australia/Brisbane\",\"LTW\":\"America/New_York\",\"LTX\":\"America/Guayaquil\",\"LUA\":\"Asia/Kathmandu\",\"LUB\":\"America/Guyana\",\"LUC\":\"Pacific/Fiji\",\"LUD\":\"Africa/Windhoek\",\"LUE\":\"Europe/Bratislava\",\"LUF\":\"America/Phoenix\",\"LUG\":\"Europe/Zurich\",\"LUH\":\"Asia/Kolkata\",\"LUI\":\"America/Tegucigalpa\",\"LUJ\":\"Africa/Johannesburg\",\"LUK\":\"America/New_York\",\"LUL\":\"America/Chicago\",\"LUM\":\"Asia/Shanghai\",\"LUN\":\"Africa/Lusaka\",\"LUO\":\"Africa/Luanda\",\"LUP\":\"Pacific/Honolulu\",\"LUQ\":\"America/Argentina/Buenos_Aires\",\"LUR\":\"America/Anchorage\",\"LUS\":\"Africa/Kinshasa\",\"LUT\":\"Australia/Brisbane\",\"LUU\":\"Australia/Brisbane\",\"LUV\":\"Asia/Jayapura\",\"LUW\":\"Asia/Makassar\",\"LUX\":\"Europe/Luxembourg\",\"LUZ\":\"Europe/Warsaw\",\"LVA\":\"Europe/Paris\",\"LVB\":\"America/Sao_Paulo\",\"LVD\":\"America/Anchorage\",\"LVI\":\"Africa/Lusaka\",\"LVK\":\"America/Los_Angeles\",\"LVL\":\"America/New_York\",\"LVM\":\"America/Denver\",\"LVO\":\"Australia/Perth\",\"LVP\":\"Asia/Tehran\",\"LVS\":\"America/Denver\",\"LWA\":\"Asia/Manila\",\"LWB\":\"America/New_York\",\"LWC\":\"America/Chicago\",\"LWE\":\"Asia/Makassar\",\"LWH\":\"Australia/Brisbane\",\"LWI\":\"Pacific/Port_Moresby\",\"LWK\":\"Europe/London\",\"LWL\":\"America/Los_Angeles\",\"LWM\":\"America/New_York\",\"LWN\":\"Asia/Yerevan\",\"LWO\":\"Europe/Kiev\",\"LWR\":\"Europe/Amsterdam\",\"LWS\":\"America/Los_Angeles\",\"LWT\":\"America/Denver\",\"LWV\":\"America/Chicago\",\"LWY\":\"Asia/Kuala_Lumpur\",\"LXA\":\"Asia/Shanghai\",\"LXG\":\"Asia/Vientiane\",\"LXI\":\"Asia/Shanghai\",\"LXN\":\"America/Chicago\",\"LXR\":\"Africa/Cairo\",\"LXS\":\"Europe/Athens\",\"LXU\":\"Africa/Lusaka\",\"LXV\":\"America/Denver\",\"LYA\":\"Asia/Shanghai\",\"LYB\":\"America/Cayman\",\"LYC\":\"Europe/Stockholm\",\"LYE\":\"Europe/London\",\"LYG\":\"Asia/Shanghai\",\"LYH\":\"America/New_York\",\"LYI\":\"Asia/Shanghai\",\"LYK\":\"Asia/Makassar\",\"LYN\":\"Europe/Paris\",\"LYO\":\"America/Chicago\",\"LYP\":\"Asia/Karachi\",\"LYR\":\"Arctic/Longyearbyen\",\"LYS\":\"Europe/Paris\",\"LYT\":\"Australia/Brisbane\",\"LYU\":\"America/Chicago\",\"LYX\":\"Europe/London\",\"LZA\":\"Africa/Kinshasa\",\"LZC\":\"America/Mexico_City\",\"LZD\":\"Asia/Shanghai\",\"LZH\":\"Asia/Shanghai\",\"LZI\":\"Africa/Kinshasa\",\"LZM\":\"Africa/Luanda\",\"LZN\":\"Asia/Shanghai\",\"LZO\":\"Asia/Shanghai\",\"LZR\":\"Australia/Brisbane\",\"LZY\":\"Asia/Shanghai\",\"MAA\":\"Asia/Kolkata\",\"MAB\":\"America/Belem\",\"MAC\":\"America/New_York\",\"MAD\":\"Europe/Madrid\",\"MAE\":\"America/Los_Angeles\",\"MAF\":\"America/Chicago\",\"MAG\":\"Pacific/Port_Moresby\",\"MAH\":\"Europe/Madrid\",\"MAI\":\"Africa/Blantyre\",\"MAJ\":\"Pacific/Majuro\",\"MAK\":\"Africa/Juba\",\"MAL\":\"Asia/Jayapura\",\"MAM\":\"America/Matamoros\",\"MAN\":\"Europe/London\",\"MAO\":\"America/Porto_Velho\",\"MAP\":\"Pacific/Port_Moresby\",\"MAQ\":\"Asia/Bangkok\",\"MAR\":\"America/Caracas\",\"MAS\":\"Pacific/Port_Moresby\",\"MAT\":\"Africa/Kinshasa\",\"MAU\":\"Pacific/Tahiti\",\"MAV\":\"Pacific/Majuro\",\"MAW\":\"America/Chicago\",\"MAX\":\"Africa/Dakar\",\"MAY\":\"America/Nassau\",\"MAZ\":\"America/Puerto_Rico\",\"MBA\":\"Africa/Nairobi\",\"MBB\":\"Australia/Perth\",\"MBC\":\"Africa/Libreville\",\"MBD\":\"Africa/Johannesburg\",\"MBE\":\"Asia/Tokyo\",\"MBF\":\"Australia/Sydney\",\"MBG\":\"America/Chicago\",\"MBH\":\"Australia/Brisbane\",\"MBI\":\"Africa/Dar_es_Salaam\",\"MBJ\":\"America/Jamaica\",\"MBK\":\"America/Campo_Grande\",\"MBL\":\"America/New_York\",\"MBM\":\"Africa/Johannesburg\",\"MBN\":\"Australia/Perth\",\"MBO\":\"Asia/Manila\",\"MBP\":\"America/Lima\",\"MBQ\":\"Africa/Kampala\",\"MBR\":\"Africa/Nouakchott\",\"MBS\":\"America/New_York\",\"MBT\":\"Asia/Manila\",\"MBU\":\"Pacific/Guadalcanal\",\"MBV\":\"Pacific/Port_Moresby\",\"MBW\":\"Australia/Sydney\",\"MBX\":\"Europe/Ljubljana\",\"MBY\":\"America/Chicago\",\"MBZ\":\"America/Porto_Velho\",\"MCA\":\"Africa/Conakry\",\"MCB\":\"America/Chicago\",\"MCC\":\"America/Los_Angeles\",\"MCD\":\"America/New_York\",\"MCE\":\"America/Los_Angeles\",\"MCF\":\"America/New_York\",\"MCG\":\"America/Anchorage\",\"MCH\":\"America/Guayaquil\",\"MCI\":\"America/Chicago\",\"MCJ\":\"America/Bogota\",\"MCK\":\"America/Chicago\",\"MCL\":\"America/Anchorage\",\"MCM\":\"Europe/Monaco\",\"MCN\":\"America/New_York\",\"MCO\":\"America/New_York\",\"MCP\":\"America/Belem\",\"MCQ\":\"Europe/Budapest\",\"MCR\":\"America/Guatemala\",\"MCS\":\"America/Argentina/Buenos_Aires\",\"MCT\":\"Asia/Muscat\",\"MCU\":\"Europe/Paris\",\"MCV\":\"Australia/Darwin\",\"MCW\":\"America/Chicago\",\"MCX\":\"Europe/Moscow\",\"MCY\":\"Australia/Brisbane\",\"MCZ\":\"America/Belem\",\"MDA\":\"America/Chicago\",\"MDB\":\"America/Belize\",\"MDC\":\"Asia/Makassar\",\"MDD\":\"America/Chicago\",\"MDE\":\"America/Bogota\",\"MDF\":\"America/Chicago\",\"MDG\":\"Asia/Shanghai\",\"MDH\":\"America/Chicago\",\"MDI\":\"Africa/Lagos\",\"MDJ\":\"America/Los_Angeles\",\"MDK\":\"Africa/Kinshasa\",\"MDL\":\"Asia/Yangon\",\"MDM\":\"Pacific/Port_Moresby\",\"MDN\":\"America/Indiana/Indianapolis\",\"MDO\":\"America/Anchorage\",\"MDP\":\"Asia/Jayapura\",\"MDQ\":\"America/Argentina/Buenos_Aires\",\"MDR\":\"Africa/Nairobi\",\"MDS\":\"America/Grand_Turk\",\"MDT\":\"America/New_York\",\"MDU\":\"Pacific/Port_Moresby\",\"MDV\":\"Africa/Libreville\",\"MDW\":\"America/Chicago\",\"MDX\":\"America/Argentina/Buenos_Aires\",\"MDY\":\"Pacific/Midway\",\"MDZ\":\"America/Argentina/Buenos_Aires\",\"MEA\":\"America/Sao_Paulo\",\"MEB\":\"Australia/Sydney\",\"MEC\":\"America/Guayaquil\",\"MED\":\"Asia/Riyadh\",\"MEE\":\"Pacific/Noumea\",\"MEF\":\"Africa/Ndjamena\",\"MEG\":\"Africa/Luanda\",\"MEH\":\"Europe/Oslo\",\"MEI\":\"America/Chicago\",\"MEJ\":\"America/New_York\",\"MEK\":\"Africa/Casablanca\",\"MEL\":\"Australia/Sydney\",\"MEM\":\"America/Chicago\",\"MEN\":\"Europe/Paris\",\"MEO\":\"America/New_York\",\"MEP\":\"Asia/Kuala_Lumpur\",\"MEQ\":\"Asia/Jakarta\",\"MER\":\"America/Los_Angeles\",\"MES\":\"Asia/Jakarta\",\"MET\":\"Australia/Brisbane\",\"MEU\":\"America/Belem\",\"MEV\":\"America/Los_Angeles\",\"MEW\":\"Africa/Lubumbashi\",\"MEX\":\"America/Mexico_City\",\"MEY\":\"Asia/Kathmandu\",\"MEZ\":\"Africa/Johannesburg\",\"MFA\":\"Africa/Dar_es_Salaam\",\"MFB\":\"America/Bogota\",\"MFC\":\"Africa/Maseru\",\"MFD\":\"America/New_York\",\"MFE\":\"America/Chicago\",\"MFF\":\"Africa/Libreville\",\"MFG\":\"Asia/Karachi\",\"MFH\":\"America/Los_Angeles\",\"MFI\":\"America/Chicago\",\"MFJ\":\"Pacific/Fiji\",\"MFK\":\"Asia/Taipei\",\"MFL\":\"Australia/Brisbane\",\"MFM\":\"Asia/Macau\",\"MFN\":\"Pacific/Auckland\",\"MFO\":\"Pacific/Port_Moresby\",\"MFP\":\"Australia/Darwin\",\"MFQ\":\"Africa/Niamey\",\"MFR\":\"America/Los_Angeles\",\"MFS\":\"America/Bogota\",\"MFT\":\"America/Lima\",\"MFU\":\"Africa/Lusaka\",\"MFV\":\"America/New_York\",\"MFW\":\"Africa/Maputo\",\"MFX\":\"Europe/Paris\",\"MFY\":\"Asia/Aden\",\"MFZ\":\"Pacific/Port_Moresby\",\"MGA\":\"America/Managua\",\"MGB\":\"Australia/Adelaide\",\"MGC\":\"America/Chicago\",\"MGD\":\"America/La_Paz\",\"MGE\":\"America/New_York\",\"MGF\":\"America/Sao_Paulo\",\"MGG\":\"Pacific/Port_Moresby\",\"MGH\":\"Africa/Johannesburg\",\"MGI\":\"America/Chicago\",\"MGJ\":\"America/New_York\",\"MGK\":\"Asia/Yangon\",\"MGL\":\"Europe/Berlin\",\"MGM\":\"America/Chicago\",\"MGN\":\"America/Bogota\",\"MGO\":\"Africa/Libreville\",\"MGP\":\"Pacific/Port_Moresby\",\"MGQ\":\"Africa/Mogadishu\",\"MGR\":\"America/New_York\",\"MGS\":\"Pacific/Rarotonga\",\"MGT\":\"Australia/Darwin\",\"MGU\":\"Asia/Yangon\",\"MGV\":\"Australia/Perth\",\"MGW\":\"America/New_York\",\"MGX\":\"Africa/Libreville\",\"MGY\":\"America/New_York\",\"MGZ\":\"Asia/Yangon\",\"MHA\":\"America/Guyana\",\"MHB\":\"Pacific/Auckland\",\"MHC\":\"America/Santiago\",\"MHD\":\"Asia/Tehran\",\"MHE\":\"America/Chicago\",\"MHF\":\"America/Bogota\",\"MHG\":\"Europe/Berlin\",\"MHH\":\"America/Nassau\",\"MHI\":\"Africa/Djibouti\",\"MHK\":\"America/Chicago\",\"MHL\":\"America/Chicago\",\"MHM\":\"Pacific/Guadalcanal\",\"MHN\":\"America/Denver\",\"MHO\":\"Australia/Perth\",\"MHP\":\"Europe/Minsk\",\"MHQ\":\"Europe/Helsinki\",\"MHR\":\"America/Los_Angeles\",\"MHS\":\"America/Los_Angeles\",\"MHT\":\"America/New_York\",\"MHU\":\"Australia/Sydney\",\"MHV\":\"America/Los_Angeles\",\"MHW\":\"America/La_Paz\",\"MHX\":\"Pacific/Rarotonga\",\"MHY\":\"Pacific/Port_Moresby\",\"MHZ\":\"Europe/London\",\"MIA\":\"America/New_York\",\"MIB\":\"America/Chicago\",\"MIC\":\"America/Chicago\",\"MID\":\"America/Mexico_City\",\"MIE\":\"America/Indiana/Indianapolis\",\"MIF\":\"America/Chicago\",\"MIG\":\"Asia/Shanghai\",\"MIH\":\"Australia/Perth\",\"MII\":\"America/Sao_Paulo\",\"MIJ\":\"Pacific/Majuro\",\"MIK\":\"Europe/Helsinki\",\"MIM\":\"Australia/Sydney\",\"MIN\":\"Australia/Adelaide\",\"MIO\":\"America/Chicago\",\"MIP\":\"Asia/Jerusalem\",\"MIQ\":\"America/Chicago\",\"MIR\":\"Africa/Tunis\",\"MIS\":\"Pacific/Port_Moresby\",\"MIT\":\"America/Los_Angeles\",\"MIU\":\"Africa/Lagos\",\"MIV\":\"America/New_York\",\"MIW\":\"America/Chicago\",\"MIX\":\"America/Bogota\",\"MIZ\":\"Australia/Darwin\",\"MJA\":\"Indian/Antananarivo\",\"MJB\":\"Pacific/Majuro\",\"MJC\":\"Africa/Abidjan\",\"MJD\":\"Asia/Karachi\",\"MJE\":\"Pacific/Majuro\",\"MJF\":\"Europe/Oslo\",\"MJG\":\"America/Havana\",\"MJH\":\"Asia/Riyadh\",\"MJI\":\"Africa/Tripoli\",\"MJJ\":\"Pacific/Port_Moresby\",\"MJK\":\"Australia/Perth\",\"MJL\":\"Africa/Libreville\",\"MJM\":\"Africa/Lubumbashi\",\"MJN\":\"Indian/Antananarivo\",\"MJO\":\"Africa/Windhoek\",\"MJP\":\"Australia/Perth\",\"MJQ\":\"America/Chicago\",\"MJR\":\"America/Argentina/Buenos_Aires\",\"MJT\":\"Europe/Athens\",\"MJU\":\"Asia/Makassar\",\"MJV\":\"Europe/Madrid\",\"MJW\":\"Africa/Harare\",\"MJX\":\"America/New_York\",\"MJY\":\"Asia/Jakarta\",\"MJZ\":\"Asia/Yakutsk\",\"MKA\":\"Europe/Prague\",\"MKB\":\"Africa/Libreville\",\"MKC\":\"America/Chicago\",\"MKD\":\"Africa/Addis_Ababa\",\"MKE\":\"America/Chicago\",\"MKF\":\"America/New_York\",\"MKG\":\"America/New_York\",\"MKH\":\"Africa/Maseru\",\"MKI\":\"Africa/Bangui\",\"MKJ\":\"Africa/Brazzaville\",\"MKK\":\"Pacific/Honolulu\",\"MKL\":\"America/Chicago\",\"MKM\":\"Asia/Kuala_Lumpur\",\"MKN\":\"Pacific/Port_Moresby\",\"MKO\":\"America/Chicago\",\"MKP\":\"Pacific/Tahiti\",\"MKQ\":\"Asia/Jayapura\",\"MKR\":\"Australia/Perth\",\"MKS\":\"Africa/Addis_Ababa\",\"MKT\":\"America/Chicago\",\"MKU\":\"Africa/Libreville\",\"MKV\":\"Australia/Darwin\",\"MKW\":\"Asia/Jayapura\",\"MKX\":\"Asia/Aden\",\"MKY\":\"Australia/Brisbane\",\"MKZ\":\"Asia/Kuala_Lumpur\",\"MLA\":\"Europe/Malta\",\"MLB\":\"America/New_York\",\"MLC\":\"America/Chicago\",\"MLD\":\"America/Denver\",\"MLE\":\"Indian/Maldives\",\"MLF\":\"America/Denver\",\"MLG\":\"Asia/Jakarta\",\"MLH\":\"Europe/Zurich\",\"MLI\":\"America/Chicago\",\"MLJ\":\"America/New_York\",\"MLK\":\"America/Denver\",\"MLL\":\"America/Anchorage\",\"MLM\":\"America/Mexico_City\",\"MLN\":\"Europe/Madrid\",\"MLO\":\"Europe/Athens\",\"MLP\":\"Asia/Manila\",\"MLQ\":\"Pacific/Port_Moresby\",\"MLR\":\"Australia/Adelaide\",\"MLS\":\"America/Denver\",\"MLT\":\"America/New_York\",\"MLU\":\"America/Chicago\",\"MLV\":\"Australia/Brisbane\",\"MLW\":\"Africa/Monrovia\",\"MLX\":\"Europe/Istanbul\",\"MLY\":\"America/Anchorage\",\"MLZ\":\"America/Montevideo\",\"MMB\":\"Asia/Tokyo\",\"MMC\":\"America/Mexico_City\",\"MMD\":\"Asia/Tokyo\",\"MME\":\"Europe/London\",\"MMF\":\"Africa/Douala\",\"MMG\":\"Australia/Perth\",\"MMH\":\"America/Los_Angeles\",\"MMI\":\"America/New_York\",\"MMJ\":\"Asia/Tokyo\",\"MMK\":\"Europe/Moscow\",\"MML\":\"America/Chicago\",\"MMM\":\"Australia/Brisbane\",\"MMN\":\"America/New_York\",\"MMO\":\"Atlantic/Cape_Verde\",\"MMP\":\"America/Bogota\",\"MMQ\":\"Africa/Lusaka\",\"MMR\":\"America/Chicago\",\"MMS\":\"America/Chicago\",\"MMT\":\"America/New_York\",\"MMU\":\"America/New_York\",\"MMW\":\"Africa/Maputo\",\"MMX\":\"Europe/Stockholm\",\"MMY\":\"Asia/Tokyo\",\"MMZ\":\"Asia/Kabul\",\"MNA\":\"Asia/Makassar\",\"MNB\":\"Africa/Kinshasa\",\"MNC\":\"Africa/Maputo\",\"MND\":\"America/Bogota\",\"MNE\":\"Australia/Adelaide\",\"MNF\":\"Pacific/Fiji\",\"MNG\":\"Australia/Darwin\",\"MNH\":\"Asia/Muscat\",\"MNI\":\"America/Montserrat\",\"MNJ\":\"Indian/Antananarivo\",\"MNK\":\"Pacific/Tarawa\",\"MNL\":\"Asia/Manila\",\"MNM\":\"America/Chicago\",\"MNN\":\"America/New_York\",\"MNO\":\"Africa/Lubumbashi\",\"MNQ\":\"Australia/Brisbane\",\"MNR\":\"Africa/Lusaka\",\"MNS\":\"Africa/Lusaka\",\"MNT\":\"America/Anchorage\",\"MNU\":\"Asia/Yangon\",\"MNV\":\"Australia/Darwin\",\"MNW\":\"Australia/Darwin\",\"MNX\":\"America/Porto_Velho\",\"MNY\":\"Pacific/Guadalcanal\",\"MNZ\":\"America/New_York\",\"MOA\":\"America/Havana\",\"MOB\":\"America/Chicago\",\"MOC\":\"America/Sao_Paulo\",\"MOD\":\"America/Los_Angeles\",\"MOE\":\"Asia/Yangon\",\"MOF\":\"Asia/Makassar\",\"MOG\":\"Asia/Yangon\",\"MOH\":\"Asia/Makassar\",\"MOI\":\"Pacific/Rarotonga\",\"MOJ\":\"America/Paramaribo\",\"MOK\":\"Africa/Abidjan\",\"MOL\":\"Europe/Oslo\",\"MOM\":\"Africa/Nouakchott\",\"MON\":\"Pacific/Auckland\",\"MOO\":\"Australia/Adelaide\",\"MOP\":\"America/New_York\",\"MOQ\":\"Indian/Antananarivo\",\"MOR\":\"America/New_York\",\"MOS\":\"America/Anchorage\",\"MOT\":\"America/Chicago\",\"MOU\":\"America/Anchorage\",\"MOV\":\"Australia/Brisbane\",\"MOX\":\"America/Chicago\",\"MOY\":\"America/Bogota\",\"MOZ\":\"Pacific/Tahiti\",\"MPA\":\"Africa/Windhoek\",\"MPB\":\"America/New_York\",\"MPC\":\"Asia/Jakarta\",\"MPD\":\"Asia/Karachi\",\"MPE\":\"America/New_York\",\"MPF\":\"Pacific/Port_Moresby\",\"MPG\":\"Pacific/Port_Moresby\",\"MPH\":\"Asia/Manila\",\"MPI\":\"America/Panama\",\"MPJ\":\"America/Chicago\",\"MPK\":\"Asia/Seoul\",\"MPL\":\"Europe/Paris\",\"MPM\":\"Africa/Maputo\",\"MPN\":\"Atlantic/Stanley\",\"MPO\":\"America/New_York\",\"MPP\":\"America/Panama\",\"MPQ\":\"Asia/Amman\",\"MPR\":\"America/Chicago\",\"MPS\":\"America/Chicago\",\"MPT\":\"Asia/Jayapura\",\"MPU\":\"Pacific/Port_Moresby\",\"MPV\":\"America/New_York\",\"MPX\":\"Pacific/Port_Moresby\",\"MPY\":\"America/Cayenne\",\"MPZ\":\"America/Chicago\",\"MQA\":\"Australia/Perth\",\"MQB\":\"America/Chicago\",\"MQC\":\"America/Miquelon\",\"MQD\":\"America/Argentina/Buenos_Aires\",\"MQE\":\"Australia/Darwin\",\"MQF\":\"Asia/Yekaterinburg\",\"MQG\":\"Africa/Windhoek\",\"MQH\":\"America/Sao_Paulo\",\"MQI\":\"America/New_York\",\"MQJ\":\"Asia/Magadan\",\"MQK\":\"America/La_Paz\",\"MQL\":\"Australia/Sydney\",\"MQM\":\"Europe/Istanbul\",\"MQN\":\"Europe/Oslo\",\"MQO\":\"Pacific/Port_Moresby\",\"MQP\":\"Africa/Johannesburg\",\"MQQ\":\"Africa/Ndjamena\",\"MQR\":\"America/Bogota\",\"MQS\":\"America/St_Vincent\",\"MQT\":\"America/New_York\",\"MQU\":\"America/Bogota\",\"MQV\":\"Africa/Algiers\",\"MQW\":\"America/New_York\",\"MQX\":\"Africa/Addis_Ababa\",\"MQY\":\"America/Chicago\",\"MQZ\":\"Australia/Perth\",\"MRA\":\"Africa/Tripoli\",\"MRB\":\"America/New_York\",\"MRC\":\"America/Chicago\",\"MRD\":\"America/Caracas\",\"MRE\":\"Africa/Nairobi\",\"MRF\":\"America/Chicago\",\"MRG\":\"Australia/Brisbane\",\"MRH\":\"Pacific/Port_Moresby\",\"MRI\":\"America/Anchorage\",\"MRJ\":\"America/Tegucigalpa\",\"MRK\":\"America/New_York\",\"MRL\":\"Australia/Brisbane\",\"MRM\":\"Pacific/Port_Moresby\",\"MRN\":\"America/New_York\",\"MRO\":\"Pacific/Auckland\",\"MRP\":\"Australia/Adelaide\",\"MRQ\":\"Asia/Manila\",\"MRR\":\"America/Guayaquil\",\"MRS\":\"Europe/Paris\",\"MRT\":\"Australia/Darwin\",\"MRU\":\"Indian/Mauritius\",\"MRV\":\"Europe/Moscow\",\"MRW\":\"Europe/Copenhagen\",\"MRX\":\"Asia/Tehran\",\"MRY\":\"America/Los_Angeles\",\"MRZ\":\"Australia/Sydney\",\"MSA\":\"America/Winnipeg\",\"MSC\":\"America/Phoenix\",\"MSD\":\"America/Denver\",\"MSE\":\"Europe/London\",\"MSF\":\"Australia/Darwin\",\"MSG\":\"Africa/Maseru\",\"MSH\":\"Asia/Muscat\",\"MSI\":\"Asia/Jakarta\",\"MSJ\":\"Asia/Tokyo\",\"MSK\":\"America/Nassau\",\"MSL\":\"America/Chicago\",\"MSM\":\"Africa/Kinshasa\",\"MSN\":\"America/Chicago\",\"MSO\":\"America/Denver\",\"MSP\":\"America/Chicago\",\"MSQ\":\"Europe/Minsk\",\"MSR\":\"Europe/Istanbul\",\"MSS\":\"America/New_York\",\"MST\":\"Europe/Amsterdam\",\"MSU\":\"Africa/Maseru\",\"MSV\":\"America/New_York\",\"MSW\":\"Africa/Asmara\",\"MSX\":\"Africa/Brazzaville\",\"MSY\":\"America/Chicago\",\"MSZ\":\"Africa/Luanda\",\"MTA\":\"Pacific/Auckland\",\"MTB\":\"America/Bogota\",\"MTC\":\"America/New_York\",\"MTD\":\"Australia/Darwin\",\"MTE\":\"America/Porto_Velho\",\"MTF\":\"Africa/Addis_Ababa\",\"MTG\":\"America/Campo_Grande\",\"MTH\":\"America/New_York\",\"MTI\":\"Atlantic/Cape_Verde\",\"MTJ\":\"America/Denver\",\"MTK\":\"Pacific/Tarawa\",\"MTL\":\"Australia/Sydney\",\"MTM\":\"America/Anchorage\",\"MTN\":\"America/New_York\",\"MTO\":\"America/Chicago\",\"MTP\":\"America/New_York\",\"MTQ\":\"Australia/Brisbane\",\"MTR\":\"America/Bogota\",\"MTS\":\"Africa/Mbabane\",\"MTT\":\"America/Mexico_City\",\"MTU\":\"Africa/Maputo\",\"MTV\":\"Pacific/Efate\",\"MTW\":\"America/Chicago\",\"MTX\":\"America/Anchorage\",\"MTY\":\"America/Mexico_City\",\"MTZ\":\"Asia/Jerusalem\",\"MUA\":\"Pacific/Guadalcanal\",\"MUB\":\"Africa/Gaborone\",\"MUC\":\"Europe/Berlin\",\"MUD\":\"Africa/Maputo\",\"MUE\":\"Pacific/Honolulu\",\"MUF\":\"Asia/Jayapura\",\"MUG\":\"America/Mazatlan\",\"MUH\":\"Africa/Cairo\",\"MUI\":\"America/New_York\",\"MUJ\":\"Africa/Addis_Ababa\",\"MUK\":\"Pacific/Rarotonga\",\"MUL\":\"America/New_York\",\"MUM\":\"Africa/Nairobi\",\"MUN\":\"America/Caracas\",\"MUO\":\"America/Denver\",\"MUP\":\"Australia/Darwin\",\"MUQ\":\"Australia/Perth\",\"MUR\":\"Asia/Kuala_Lumpur\",\"MUT\":\"America/Chicago\",\"MUU\":\"America/New_York\",\"MUV\":\"America/New_York\",\"MUW\":\"Africa/Algiers\",\"MUX\":\"Asia/Karachi\",\"MUY\":\"Africa/Brazzaville\",\"MUZ\":\"Africa/Dar_es_Salaam\",\"MVA\":\"Atlantic/Reykjavik\",\"MVB\":\"Africa/Libreville\",\"MVC\":\"America/Chicago\",\"MVD\":\"America/Montevideo\",\"MVE\":\"America/Chicago\",\"MVF\":\"America/Belem\",\"MVG\":\"Africa/Libreville\",\"MVH\":\"Australia/Sydney\",\"MVI\":\"Pacific/Bougainville\",\"MVJ\":\"America/Jamaica\",\"MVK\":\"Australia/Adelaide\",\"MVL\":\"America/New_York\",\"MVM\":\"America/Phoenix\",\"MVN\":\"America/Chicago\",\"MVO\":\"Africa/Ndjamena\",\"MVP\":\"America/Bogota\",\"MVQ\":\"Europe/Minsk\",\"MVR\":\"Africa/Douala\",\"MVS\":\"America/Belem\",\"MVT\":\"Pacific/Tahiti\",\"MVU\":\"Australia/Brisbane\",\"MVV\":\"Europe/Paris\",\"MVW\":\"America/Los_Angeles\",\"MVX\":\"Africa/Libreville\",\"MVY\":\"America/New_York\",\"MVZ\":\"Africa/Harare\",\"MWA\":\"America/Chicago\",\"MWB\":\"Australia/Perth\",\"MWC\":\"America/Chicago\",\"MWD\":\"Asia/Karachi\",\"MWE\":\"Africa/Khartoum\",\"MWF\":\"Pacific/Efate\",\"MWG\":\"Pacific/Port_Moresby\",\"MWH\":\"America/Los_Angeles\",\"MWI\":\"Pacific/Port_Moresby\",\"MWJ\":\"America/Guyana\",\"MWK\":\"Asia/Jakarta\",\"MWL\":\"America/Chicago\",\"MWM\":\"America/Chicago\",\"MWN\":\"Africa/Dar_es_Salaam\",\"MWO\":\"America/New_York\",\"MWP\":\"Asia/Kathmandu\",\"MWQ\":\"Asia/Yangon\",\"MWS\":\"America/Los_Angeles\",\"MWT\":\"Australia/Adelaide\",\"MWU\":\"Pacific/Port_Moresby\",\"MWV\":\"Asia/Phnom_Penh\",\"MWW\":\"Europe/Brussels\",\"MWX\":\"Asia/Seoul\",\"MWY\":\"Australia/Brisbane\",\"MWZ\":\"Africa/Dar_es_Salaam\",\"MXA\":\"America/Chicago\",\"MXB\":\"Asia/Jayapura\",\"MXC\":\"America/Denver\",\"MXD\":\"Australia/Brisbane\",\"MXE\":\"America/New_York\",\"MXF\":\"America/Chicago\",\"MXG\":\"America/New_York\",\"MXH\":\"Pacific/Port_Moresby\",\"MXI\":\"Asia/Manila\",\"MXJ\":\"Africa/Lagos\",\"MXK\":\"Pacific/Port_Moresby\",\"MXL\":\"America/Tijuana\",\"MXM\":\"Indian/Antananarivo\",\"MXN\":\"Europe/Paris\",\"MXO\":\"America/Chicago\",\"MXP\":\"Europe/Rome\",\"MXQ\":\"Australia/Brisbane\",\"MXR\":\"Europe/Kiev\",\"MXS\":\"Pacific/Apia\",\"MXT\":\"Indian/Antananarivo\",\"MXU\":\"Australia/Perth\",\"MXV\":\"Asia/Ulaanbaatar\",\"MXW\":\"Asia/Ulaanbaatar\",\"MXX\":\"Europe/Stockholm\",\"MXY\":\"America/Anchorage\",\"MXZ\":\"Asia/Shanghai\",\"MYA\":\"Australia/Sydney\",\"MYB\":\"Africa/Libreville\",\"MYC\":\"America/Caracas\",\"MYD\":\"Africa/Nairobi\",\"MYE\":\"Asia/Tokyo\",\"MYF\":\"America/Los_Angeles\",\"MYG\":\"America/Nassau\",\"MYH\":\"America/Phoenix\",\"MYI\":\"Australia/Brisbane\",\"MYJ\":\"Asia/Tokyo\",\"MYK\":\"America/Anchorage\",\"MYL\":\"America/Denver\",\"MYM\":\"America/Guyana\",\"MYN\":\"Asia/Aden\",\"MYO\":\"Australia/Perth\",\"MYP\":\"Asia/Ashgabat\",\"MYQ\":\"Asia/Kolkata\",\"MYR\":\"America/New_York\",\"MYS\":\"Africa/Addis_Ababa\",\"MYT\":\"Asia/Yangon\",\"MYU\":\"America/Anchorage\",\"MYV\":\"America/Los_Angeles\",\"MYW\":\"Africa/Dar_es_Salaam\",\"MYX\":\"Pacific/Port_Moresby\",\"MYY\":\"Asia/Kuala_Lumpur\",\"MYZ\":\"Africa/Blantyre\",\"MZA\":\"America/Lima\",\"MZB\":\"Africa/Maputo\",\"MZC\":\"Africa/Libreville\",\"MZD\":\"America/Guayaquil\",\"MZE\":\"America/Belize\",\"MZF\":\"Africa/Johannesburg\",\"MZG\":\"Asia/Taipei\",\"MZH\":\"Europe/Istanbul\",\"MZI\":\"Africa/Bamako\",\"MZJ\":\"America/Phoenix\",\"MZK\":\"Pacific/Tarawa\",\"MZL\":\"America/Bogota\",\"MZM\":\"Europe/Paris\",\"MZN\":\"Pacific/Port_Moresby\",\"MZO\":\"America/Havana\",\"MZP\":\"Pacific/Auckland\",\"MZQ\":\"Africa/Johannesburg\",\"MZR\":\"Asia/Kabul\",\"MZS\":\"Asia/Kuala_Lumpur\",\"MZT\":\"America/Mazatlan\",\"MZU\":\"Asia/Kolkata\",\"MZV\":\"Asia/Kuala_Lumpur\",\"MZW\":\"Africa/Algiers\",\"MZX\":\"Africa/Addis_Ababa\",\"MZY\":\"Africa/Johannesburg\",\"MZZ\":\"America/Indiana/Indianapolis\",\"NAA\":\"Australia/Sydney\",\"NAB\":\"America/New_York\",\"NAC\":\"Australia/Adelaide\",\"NAD\":\"America/Bogota\",\"NAE\":\"Africa/Porto-Novo\",\"NAF\":\"Asia/Makassar\",\"NAG\":\"Asia/Kolkata\",\"NAH\":\"Asia/Makassar\",\"NAI\":\"America/Guyana\",\"NAJ\":\"Asia/Baku\",\"NAK\":\"Asia/Bangkok\",\"NAL\":\"Europe/Moscow\",\"NAM\":\"Asia/Jayapura\",\"NAN\":\"Pacific/Fiji\",\"NAO\":\"Asia/Shanghai\",\"NAP\":\"Europe/Rome\",\"NAQ\":\"America/Godthab\",\"NAR\":\"America/Bogota\",\"NAS\":\"America/Nassau\",\"NAT\":\"America/Belem\",\"NAU\":\"Pacific/Tahiti\",\"NAV\":\"Europe/Istanbul\",\"NAW\":\"Asia/Bangkok\",\"NBA\":\"Pacific/Port_Moresby\",\"NBB\":\"America/Bogota\",\"NBC\":\"Europe/Moscow\",\"NBE\":\"Africa/Tunis\",\"NBG\":\"America/Chicago\",\"NBH\":\"Australia/Sydney\",\"NBL\":\"America/Panama\",\"NBN\":\"Africa/Lagos\",\"NBO\":\"Africa/Nairobi\",\"NBP\":\"America/New_York\",\"NBR\":\"Australia/Brisbane\",\"NBS\":\"Asia/Shanghai\",\"NBV\":\"America/Sao_Paulo\",\"NBW\":\"America/Havana\",\"NBX\":\"Asia/Jayapura\",\"NCA\":\"America/Grand_Turk\",\"NCE\":\"Europe/Paris\",\"NCG\":\"America/Mexico_City\",\"NCH\":\"Africa/Dar_es_Salaam\",\"NCI\":\"America/Bogota\",\"NCJ\":\"America/Argentina/Cordoba\",\"NCL\":\"Europe/London\",\"NCN\":\"America/Anchorage\",\"NCO\":\"America/New_York\",\"NCP\":\"Asia/Manila\",\"NCQ\":\"America/New_York\",\"NCR\":\"America/Managua\",\"NCS\":\"Africa/Johannesburg\",\"NCT\":\"America/Costa_Rica\",\"NCU\":\"Asia/Tashkent\",\"NCY\":\"Europe/Paris\",\"NDA\":\"Asia/Jayapura\",\"NDB\":\"Africa/Nouakchott\",\"NDC\":\"Asia/Kolkata\",\"NDD\":\"Africa/Luanda\",\"NDE\":\"Africa/Nairobi\",\"NDF\":\"Africa/Luanda\",\"NDG\":\"Asia/Shanghai\",\"NDI\":\"Pacific/Port_Moresby\",\"NDJ\":\"Africa/Ndjamena\",\"NDK\":\"Pacific/Majuro\",\"NDL\":\"Africa/Bangui\",\"NDM\":\"Africa/Addis_Ababa\",\"NDN\":\"Pacific/Port_Moresby\",\"NDO\":\"Europe/Madrid\",\"NDR\":\"Africa/Casablanca\",\"NDS\":\"Australia/Perth\",\"NDU\":\"Africa/Windhoek\",\"NDV\":\"America/New_York\",\"NDY\":\"Europe/London\",\"NDZ\":\"Europe/Berlin\",\"NEA\":\"America/New_York\",\"NEC\":\"America/Argentina/Buenos_Aires\",\"NEF\":\"Asia/Yekaterinburg\",\"NEG\":\"America/Jamaica\",\"NEI\":\"Asia/Vladivostok\",\"NEJ\":\"Africa/Addis_Ababa\",\"NEK\":\"Africa/Addis_Ababa\",\"NEL\":\"America/New_York\",\"NEN\":\"America/New_York\",\"NER\":\"Asia/Yakutsk\",\"NES\":\"America/New_York\",\"NEU\":\"Asia/Vientiane\",\"NEV\":\"America/St_Kitts\",\"NEW\":\"America/Chicago\",\"NFB\":\"America/New_York\",\"NFG\":\"Asia/Yekaterinburg\",\"NFL\":\"America/Los_Angeles\",\"NFO\":\"Pacific/Tongatapu\",\"NFR\":\"Africa/Tripoli\",\"NGA\":\"Australia/Sydney\",\"NGB\":\"Asia/Shanghai\",\"NGC\":\"America/Phoenix\",\"NGD\":\"America/Tortola\",\"NGE\":\"Africa/Douala\",\"NGF\":\"Pacific/Honolulu\",\"NGI\":\"Pacific/Fiji\",\"NGK\":\"Asia/Magadan\",\"NGL\":\"Africa/Johannesburg\",\"NGM\":\"Pacific/Guam\",\"NGN\":\"America/Panama\",\"NGO\":\"Asia/Tokyo\",\"NGP\":\"America/Chicago\",\"NGQ\":\"Asia/Shanghai\",\"NGR\":\"Pacific/Port_Moresby\",\"NGS\":\"Asia/Tokyo\",\"NGU\":\"America/New_York\",\"NGW\":\"America/Chicago\",\"NGX\":\"Asia/Kathmandu\",\"NGZ\":\"America/Los_Angeles\",\"NHA\":\"Asia/Ho_Chi_Minh\",\"NHD\":\"Asia/Dubai\",\"NHF\":\"Africa/Khartoum\",\"NHK\":\"America/New_York\",\"NHS\":\"Asia/Karachi\",\"NHT\":\"Europe/London\",\"NHV\":\"Pacific/Marquesas\",\"NHX\":\"America/Chicago\",\"NHZ\":\"America/New_York\",\"NIA\":\"Africa/Monrovia\",\"NIB\":\"America/Anchorage\",\"NIE\":\"America/Anchorage\",\"NIF\":\"Australia/Perth\",\"NIG\":\"Pacific/Tarawa\",\"NIK\":\"Africa/Dakar\",\"NIM\":\"Africa/Niamey\",\"NIN\":\"America/Anchorage\",\"NIO\":\"Africa/Kinshasa\",\"NIP\":\"America/New_York\",\"NIQ\":\"America/Godthab\",\"NIR\":\"America/Chicago\",\"NIS\":\"Pacific/Port_Moresby\",\"NIT\":\"Europe/Paris\",\"NIU\":\"Pacific/Tahiti\",\"NIX\":\"Africa/Bamako\",\"NJA\":\"Asia/Tokyo\",\"NJC\":\"Asia/Yekaterinburg\",\"NJF\":\"Asia/Baghdad\",\"NJJ\":\"Asia/Shanghai\",\"NJK\":\"America/Los_Angeles\",\"NKA\":\"Africa/Libreville\",\"NKB\":\"Australia/Perth\",\"NKC\":\"Africa/Nouakchott\",\"NKD\":\"Asia/Jayapura\",\"NKG\":\"Asia/Shanghai\",\"NKI\":\"America/Anchorage\",\"NKL\":\"Africa/Lubumbashi\",\"NKM\":\"Asia/Tokyo\",\"NKN\":\"Pacific/Port_Moresby\",\"NKO\":\"Indian/Antananarivo\",\"NKS\":\"Africa/Douala\",\"NKT\":\"Europe/Istanbul\",\"NKU\":\"Africa/Maseru\",\"NKX\":\"America/Los_Angeles\",\"NKY\":\"Africa/Brazzaville\",\"NLA\":\"Africa/Lusaka\",\"NLC\":\"America/Los_Angeles\",\"NLD\":\"America/Matamoros\",\"NLE\":\"America/New_York\",\"NLF\":\"Australia/Brisbane\",\"NLG\":\"America/Anchorage\",\"NLH\":\"Asia/Shanghai\",\"NLI\":\"Asia/Vladivostok\",\"NLK\":\"Pacific/Norfolk\",\"NLL\":\"Australia/Perth\",\"NLO\":\"Africa/Kinshasa\",\"NLP\":\"Africa/Johannesburg\",\"NLS\":\"Australia/Perth\",\"NLT\":\"Asia/Shanghai\",\"NLU\":\"America/Mexico_City\",\"NLV\":\"Europe/Kiev\",\"NMA\":\"Asia/Tashkent\",\"NMB\":\"Asia/Kolkata\",\"NMC\":\"America/Nassau\",\"NME\":\"America/Anchorage\",\"NMF\":\"Indian/Maldives\",\"NMG\":\"America/Panama\",\"NMN\":\"Pacific/Port_Moresby\",\"NMP\":\"Australia/Brisbane\",\"NMR\":\"Australia/Brisbane\",\"NMS\":\"Asia/Yangon\",\"NMT\":\"Asia/Yangon\",\"NMU\":\"Pacific/Majuro\",\"NNA\":\"Africa/Casablanca\",\"NNB\":\"Pacific/Guadalcanal\",\"NND\":\"Africa/Maputo\",\"NNG\":\"Asia/Shanghai\",\"NNI\":\"Africa/Windhoek\",\"NNK\":\"America/Anchorage\",\"NNL\":\"America/Anchorage\",\"NNM\":\"Europe/Moscow\",\"NNR\":\"Europe/Dublin\",\"NNT\":\"Asia/Bangkok\",\"NNU\":\"America/Sao_Paulo\",\"NNX\":\"Asia/Makassar\",\"NNY\":\"Asia/Shanghai\",\"NOA\":\"Australia/Sydney\",\"NOB\":\"America/Costa_Rica\",\"NOC\":\"Europe/Dublin\",\"NOD\":\"Europe/Berlin\",\"NOE\":\"Europe/Berlin\",\"NOG\":\"America/Hermosillo\",\"NOH\":\"America/Chicago\",\"NOI\":\"Europe/Moscow\",\"NOJ\":\"Asia/Yekaterinburg\",\"NOK\":\"America/Campo_Grande\",\"NOL\":\"America/Anchorage\",\"NOM\":\"Pacific/Port_Moresby\",\"NON\":\"Pacific/Tarawa\",\"NOO\":\"Pacific/Port_Moresby\",\"NOP\":\"Europe/Istanbul\",\"NOR\":\"Atlantic/Reykjavik\",\"NOS\":\"Indian/Antananarivo\",\"NOT\":\"America/Los_Angeles\",\"NOU\":\"Pacific/Noumea\",\"NOV\":\"Africa/Luanda\",\"NOZ\":\"Asia/Novokuznetsk\",\"NPA\":\"America/Chicago\",\"NPE\":\"Pacific/Auckland\",\"NPG\":\"Pacific/Port_Moresby\",\"NPH\":\"America/Denver\",\"NPL\":\"Pacific/Auckland\",\"NPO\":\"Asia/Makassar\",\"NPP\":\"Australia/Darwin\",\"NPT\":\"America/New_York\",\"NPU\":\"America/Bogota\",\"NPY\":\"Africa/Dar_es_Salaam\",\"NQA\":\"America/Chicago\",\"NQI\":\"America/Chicago\",\"NQL\":\"America/Sao_Paulo\",\"NQN\":\"America/Argentina/Buenos_Aires\",\"NQT\":\"Europe/London\",\"NQU\":\"America/Bogota\",\"NQX\":\"America/New_York\",\"NQY\":\"Europe/London\",\"NRA\":\"Australia/Sydney\",\"NRB\":\"America/New_York\",\"NRC\":\"America/Los_Angeles\",\"NRD\":\"Europe/Berlin\",\"NRE\":\"Asia/Jayapura\",\"NRG\":\"Australia/Perth\",\"NRI\":\"America/Chicago\",\"NRK\":\"Europe/Stockholm\",\"NRL\":\"Europe/London\",\"NRM\":\"Africa/Bamako\",\"NRN\":\"Europe/Berlin\",\"NRR\":\"America/Puerto_Rico\",\"NRS\":\"America/Los_Angeles\",\"NRT\":\"Asia/Tokyo\",\"NRV\":\"Pacific/Guam\",\"NRY\":\"Australia/Darwin\",\"NSB\":\"America/Nassau\",\"NSE\":\"America/New_York\",\"NSF\":\"America/New_York\",\"NSH\":\"Asia/Tehran\",\"NSI\":\"Africa/Douala\",\"NSK\":\"Asia/Krasnoyarsk\",\"NSL\":\"America/Chicago\",\"NSM\":\"Australia/Perth\",\"NSN\":\"Pacific/Auckland\",\"NSO\":\"Australia/Sydney\",\"NSQ\":\"America/Godthab\",\"NST\":\"Asia/Bangkok\",\"NSV\":\"Australia/Brisbane\",\"NSX\":\"America/Tortola\",\"NSY\":\"Europe/Rome\",\"NTA\":\"Pacific/Fiji\",\"NTB\":\"Europe/Oslo\",\"NTD\":\"America/Los_Angeles\",\"NTE\":\"Europe/Paris\",\"NTG\":\"Asia/Shanghai\",\"NTI\":\"Asia/Jayapura\",\"NTJ\":\"America/Denver\",\"NTL\":\"Australia/Sydney\",\"NTM\":\"America/Belem\",\"NTN\":\"Australia/Brisbane\",\"NTO\":\"Atlantic/Cape_Verde\",\"NTQ\":\"Asia/Tokyo\",\"NTR\":\"America/Mexico_City\",\"NTT\":\"Pacific/Tongatapu\",\"NTU\":\"America/New_York\",\"NTX\":\"Asia/Jakarta\",\"NTY\":\"Africa/Johannesburg\",\"NUA\":\"Asia/Colombo\",\"NUB\":\"Australia/Darwin\",\"NUD\":\"Africa/Khartoum\",\"NUE\":\"Europe/Berlin\",\"NUF\":\"Asia/Colombo\",\"NUG\":\"Pacific/Port_Moresby\",\"NUH\":\"America/Bogota\",\"NUI\":\"America/Anchorage\",\"NUJ\":\"Asia/Tehran\",\"NUK\":\"Pacific/Tahiti\",\"NUL\":\"America/Anchorage\",\"NUM\":\"Asia/Riyadh\",\"NUN\":\"America/Chicago\",\"NUP\":\"America/Anchorage\",\"NUQ\":\"America/Los_Angeles\",\"NUR\":\"Australia/Adelaide\",\"NUS\":\"Pacific/Efate\",\"NUT\":\"Pacific/Port_Moresby\",\"NUU\":\"Africa/Nairobi\",\"NUW\":\"America/Los_Angeles\",\"NUX\":\"Asia/Yekaterinburg\",\"NVA\":\"America/Bogota\",\"NVD\":\"America/Chicago\",\"NVG\":\"America/Managua\",\"NVI\":\"Asia/Tashkent\",\"NVK\":\"Europe/Oslo\",\"NVP\":\"America/Porto_Velho\",\"NVR\":\"Europe/Moscow\",\"NVS\":\"Europe/Paris\",\"NVT\":\"America/Sao_Paulo\",\"NVY\":\"Asia/Kolkata\",\"NWA\":\"Indian/Comoro\",\"NWH\":\"America/New_York\",\"NWI\":\"Europe/London\",\"NWP\":\"America/St_Johns\",\"NWS\":\"America/New_York\",\"NWT\":\"Pacific/Port_Moresby\",\"NWU\":\"Atlantic/Bermuda\",\"NXX\":\"America/New_York\",\"NYA\":\"Asia/Yekaterinburg\",\"NYE\":\"Africa/Nairobi\",\"NYG\":\"America/New_York\",\"NYI\":\"Africa/Accra\",\"NYK\":\"Africa/Nairobi\",\"NYM\":\"Asia/Yekaterinburg\",\"NYN\":\"Australia/Sydney\",\"NYO\":\"Europe/Stockholm\",\"NYR\":\"Asia/Yakutsk\",\"NYS\":\"America/New_York\",\"NYT\":\"Asia/Yangon\",\"NYU\":\"Asia/Yangon\",\"NYW\":\"Asia/Yangon\",\"NZA\":\"Africa/Luanda\",\"NZC\":\"America/Lima\",\"NZE\":\"Africa/Conakry\",\"NZH\":\"Asia/Shanghai\",\"NZL\":\"Asia/Shanghai\",\"NZO\":\"Africa/Nairobi\",\"NZW\":\"America/New_York\",\"NZY\":\"America/Los_Angeles\",\"OAA\":\"Asia/Kabul\",\"OAG\":\"Australia/Sydney\",\"OAH\":\"Asia/Kabul\",\"OAI\":\"Asia/Kabul\",\"OAJ\":\"America/New_York\",\"OAK\":\"America/Los_Angeles\",\"OAL\":\"America/Porto_Velho\",\"OAM\":\"Pacific/Auckland\",\"OAN\":\"America/Tegucigalpa\",\"OAR\":\"America/Los_Angeles\",\"OAS\":\"Asia/Kabul\",\"OAX\":\"America/Mexico_City\",\"OAZ\":\"Asia/Kabul\",\"OBA\":\"Australia/Brisbane\",\"OBC\":\"Africa/Djibouti\",\"OBD\":\"Asia/Jayapura\",\"OBE\":\"America/New_York\",\"OBF\":\"Europe/Berlin\",\"OBI\":\"America/Porto_Velho\",\"OBK\":\"America/Chicago\",\"OBL\":\"Europe/Brussels\",\"OBM\":\"Pacific/Port_Moresby\",\"OBN\":\"Europe/London\",\"OBO\":\"Asia/Tokyo\",\"OBS\":\"Europe/Paris\",\"OBU\":\"America/Anchorage\",\"OBX\":\"Pacific/Port_Moresby\",\"OBY\":\"America/Scoresbysund\",\"OCA\":\"America/New_York\",\"OCC\":\"America/Guayaquil\",\"OCE\":\"America/New_York\",\"OCF\":\"America/New_York\",\"OCH\":\"America/Chicago\",\"OCI\":\"America/Anchorage\",\"OCJ\":\"America/Jamaica\",\"OCM\":\"Australia/Perth\",\"OCN\":\"America/Los_Angeles\",\"OCV\":\"America/Bogota\",\"OCW\":\"America/New_York\",\"ODA\":\"Africa/Bangui\",\"ODB\":\"Europe/Madrid\",\"ODD\":\"Australia/Adelaide\",\"ODE\":\"Europe/Copenhagen\",\"ODH\":\"Europe/London\",\"ODJ\":\"Africa/Bangui\",\"ODL\":\"Australia/Adelaide\",\"ODM\":\"America/New_York\",\"ODN\":\"Asia/Kuala_Lumpur\",\"ODO\":\"Asia/Irkutsk\",\"ODR\":\"Australia/Perth\",\"ODS\":\"Europe/Kiev\",\"ODW\":\"America/Los_Angeles\",\"ODY\":\"Asia/Vientiane\",\"OEA\":\"America/Indiana/Indianapolis\",\"OEC\":\"Asia/Jayapura\",\"OEL\":\"Europe/Moscow\",\"OEM\":\"America/Paramaribo\",\"OEO\":\"America/Chicago\",\"OER\":\"Europe/Stockholm\",\"OES\":\"America/Argentina/Buenos_Aires\",\"OFF\":\"America/Chicago\",\"OFI\":\"Africa/Abidjan\",\"OFJ\":\"Atlantic/Reykjavik\",\"OFK\":\"America/Chicago\",\"OFU\":\"Pacific/Pago_Pago\",\"OGA\":\"America/Denver\",\"OGB\":\"America/New_York\",\"OGD\":\"America/Denver\",\"OGE\":\"Pacific/Port_Moresby\",\"OGG\":\"Pacific/Honolulu\",\"OGL\":\"America/Guyana\",\"OGM\":\"America/Panama\",\"OGN\":\"Asia/Tokyo\",\"OGO\":\"Africa/Abidjan\",\"OGR\":\"Africa/Ndjamena\",\"OGS\":\"America/New_York\",\"OGU\":\"Europe/Istanbul\",\"OGX\":\"Africa/Algiers\",\"OGZ\":\"Europe/Moscow\",\"OHA\":\"Pacific/Auckland\",\"OHC\":\"America/Anchorage\",\"OHD\":\"Europe/Skopje\",\"OHE\":\"Asia/Shanghai\",\"OHH\":\"Asia/Magadan\",\"OHI\":\"Africa/Windhoek\",\"OHO\":\"Asia/Vladivostok\",\"OHP\":\"Europe/London\",\"OHR\":\"Europe/Berlin\",\"OHS\":\"Asia/Muscat\",\"OHT\":\"Asia/Karachi\",\"OIA\":\"America/Belem\",\"OIC\":\"America/New_York\",\"OIL\":\"America/New_York\",\"OIM\":\"Asia/Tokyo\",\"OIR\":\"Asia/Tokyo\",\"OIT\":\"Asia/Tokyo\",\"OJC\":\"America/Chicago\",\"OJU\":\"Asia/Makassar\",\"OKA\":\"Asia/Tokyo\",\"OKB\":\"Australia/Brisbane\",\"OKC\":\"America/Chicago\",\"OKD\":\"Asia/Tokyo\",\"OKE\":\"Asia/Tokyo\",\"OKF\":\"Africa/Windhoek\",\"OKG\":\"Africa/Brazzaville\",\"OKH\":\"Europe/London\",\"OKI\":\"Asia/Tokyo\",\"OKJ\":\"Asia/Tokyo\",\"OKK\":\"America/Indiana/Indianapolis\",\"OKL\":\"Asia/Jayapura\",\"OKM\":\"America/Chicago\",\"OKN\":\"Africa/Libreville\",\"OKO\":\"Asia/Tokyo\",\"OKP\":\"Pacific/Port_Moresby\",\"OKQ\":\"Asia/Jayapura\",\"OKR\":\"Australia/Brisbane\",\"OKS\":\"America/Chicago\",\"OKT\":\"Asia/Yekaterinburg\",\"OKU\":\"Africa/Windhoek\",\"OKV\":\"Pacific/Port_Moresby\",\"OKY\":\"Australia/Brisbane\",\"OLA\":\"Europe/Oslo\",\"OLB\":\"Europe/Rome\",\"OLC\":\"America/Porto_Velho\",\"OLD\":\"America/New_York\",\"OLE\":\"America/New_York\",\"OLF\":\"America/Denver\",\"OLG\":\"Africa/Nairobi\",\"OLH\":\"America/Anchorage\",\"OLI\":\"Atlantic/Reykjavik\",\"OLJ\":\"Pacific/Efate\",\"OLK\":\"America/Asuncion\",\"OLL\":\"Africa/Brazzaville\",\"OLM\":\"America/Los_Angeles\",\"OLO\":\"Europe/Prague\",\"OLP\":\"Australia/Adelaide\",\"OLQ\":\"Pacific/Port_Moresby\",\"OLR\":\"Asia/Kabul\",\"OLS\":\"America/Phoenix\",\"OLU\":\"America/Chicago\",\"OLV\":\"America/Chicago\",\"OLX\":\"Africa/Nairobi\",\"OLY\":\"America/Chicago\",\"OLZ\":\"Asia/Yakutsk\",\"OMA\":\"America/Chicago\",\"OMB\":\"Africa/Libreville\",\"OMC\":\"Asia/Manila\",\"OMD\":\"Africa/Windhoek\",\"OME\":\"America/Anchorage\",\"OMF\":\"Asia/Amman\",\"OMG\":\"Africa/Windhoek\",\"OMH\":\"Asia/Tehran\",\"OMI\":\"Asia/Tehran\",\"OMJ\":\"Asia/Tokyo\",\"OMK\":\"America/Los_Angeles\",\"OML\":\"Pacific/Port_Moresby\",\"OMM\":\"Asia/Muscat\",\"OMN\":\"Asia/Kolkata\",\"OMO\":\"Europe/Sarajevo\",\"OMR\":\"Europe/Bucharest\",\"OMS\":\"Asia/Omsk\",\"OMY\":\"Asia/Phnom_Penh\",\"ONA\":\"America/Chicago\",\"ONB\":\"Pacific/Port_Moresby\",\"OND\":\"Africa/Windhoek\",\"ONE\":\"Pacific/Guadalcanal\",\"ONG\":\"Australia/Brisbane\",\"ONH\":\"America/New_York\",\"ONI\":\"Asia/Jayapura\",\"ONJ\":\"Asia/Tokyo\",\"ONK\":\"Asia/Yakutsk\",\"ONL\":\"America/Chicago\",\"ONM\":\"America/Denver\",\"ONN\":\"America/Anchorage\",\"ONO\":\"America/Los_Angeles\",\"ONP\":\"America/Los_Angeles\",\"ONQ\":\"Europe/Istanbul\",\"ONR\":\"Australia/Brisbane\",\"ONS\":\"Australia/Perth\",\"ONT\":\"America/Los_Angeles\",\"ONU\":\"Pacific/Fiji\",\"ONX\":\"America/Panama\",\"ONY\":\"America/Chicago\",\"OOA\":\"America/Chicago\",\"OOK\":\"America/Anchorage\",\"OOL\":\"Australia/Brisbane\",\"OOM\":\"Australia/Sydney\",\"OOR\":\"Australia/Brisbane\",\"OOT\":\"Pacific/Tarawa\",\"OPA\":\"Atlantic/Reykjavik\",\"OPB\":\"Pacific/Port_Moresby\",\"OPF\":\"America/New_York\",\"OPI\":\"Australia/Darwin\",\"OPL\":\"America/Chicago\",\"OPO\":\"Europe/Lisbon\",\"OPS\":\"America/Campo_Grande\",\"OPU\":\"Pacific/Port_Moresby\",\"OPW\":\"Africa/Windhoek\",\"ORA\":\"America/Argentina/Buenos_Aires\",\"ORB\":\"Europe/Stockholm\",\"ORC\":\"America/Bogota\",\"ORD\":\"America/Chicago\",\"ORE\":\"Europe/Paris\",\"ORF\":\"America/New_York\",\"ORG\":\"America/Paramaribo\",\"ORH\":\"America/New_York\",\"ORI\":\"America/Anchorage\",\"ORJ\":\"America/Guyana\",\"ORK\":\"Europe/Dublin\",\"ORL\":\"America/New_York\",\"ORM\":\"Europe/London\",\"ORN\":\"Africa/Algiers\",\"ORO\":\"America/Tegucigalpa\",\"ORP\":\"Africa/Gaborone\",\"ORQ\":\"America/New_York\",\"ORR\":\"Australia/Adelaide\",\"ORS\":\"Australia/Brisbane\",\"ORT\":\"America/Anchorage\",\"ORU\":\"America/La_Paz\",\"ORV\":\"America/Anchorage\",\"ORW\":\"Asia/Karachi\",\"ORX\":\"America/Porto_Velho\",\"ORY\":\"Europe/Paris\",\"ORZ\":\"America/Belize\",\"OSB\":\"America/Chicago\",\"OSC\":\"America/New_York\",\"OSD\":\"Europe/Stockholm\",\"OSE\":\"Pacific/Port_Moresby\",\"OSF\":\"Europe/Moscow\",\"OSG\":\"Pacific/Port_Moresby\",\"OSH\":\"America/Chicago\",\"OSI\":\"Europe/Zagreb\",\"OSJ\":\"Africa/Nairobi\",\"OSK\":\"Europe/Stockholm\",\"OSL\":\"Europe/Oslo\",\"OSM\":\"Asia/Baghdad\",\"OSN\":\"Asia/Seoul\",\"OSO\":\"Australia/Brisbane\",\"OSP\":\"Europe/Warsaw\",\"OSR\":\"Europe/Prague\",\"OSS\":\"Asia/Bishkek\",\"OST\":\"Europe/Brussels\",\"OSU\":\"America/New_York\",\"OSW\":\"Asia/Yekaterinburg\",\"OSX\":\"America/Chicago\",\"OSY\":\"Europe/Oslo\",\"OSZ\":\"Europe/Warsaw\",\"OTA\":\"Africa/Addis_Ababa\",\"OTC\":\"Africa/Ndjamena\",\"OTD\":\"America/Panama\",\"OTG\":\"America/Chicago\",\"OTH\":\"America/Los_Angeles\",\"OTI\":\"Asia/Jayapura\",\"OTJ\":\"Africa/Windhoek\",\"OTK\":\"America/Los_Angeles\",\"OTL\":\"Africa/Nouakchott\",\"OTM\":\"America/Chicago\",\"OTN\":\"America/Indiana/Indianapolis\",\"OTO\":\"America/Denver\",\"OTP\":\"Europe/Bucharest\",\"OTR\":\"America/Costa_Rica\",\"OTS\":\"America/Los_Angeles\",\"OTT\":\"America/Campo_Grande\",\"OTU\":\"America/Bogota\",\"OTV\":\"Pacific/Guadalcanal\",\"OTY\":\"Pacific/Bougainville\",\"OTZ\":\"America/Anchorage\",\"OUA\":\"Africa/Ouagadougou\",\"OUD\":\"Africa/Casablanca\",\"OUE\":\"Africa/Brazzaville\",\"OUG\":\"Africa/Ouagadougou\",\"OUH\":\"Africa/Johannesburg\",\"OUK\":\"Europe/London\",\"OUL\":\"Europe/Helsinki\",\"OUM\":\"Africa/Ndjamena\",\"OUN\":\"America/Chicago\",\"OUR\":\"Africa/Douala\",\"OUS\":\"America/Sao_Paulo\",\"OUT\":\"Africa/Ndjamena\",\"OUU\":\"Africa/Libreville\",\"OUZ\":\"Africa/Nouakchott\",\"OVA\":\"Indian/Antananarivo\",\"OVB\":\"Asia/Novosibirsk\",\"OVD\":\"Europe/Madrid\",\"OVE\":\"America/Los_Angeles\",\"OVG\":\"Africa/Johannesburg\",\"OVL\":\"America/Santiago\",\"OVR\":\"America/Argentina/Buenos_Aires\",\"OVS\":\"Asia/Yekaterinburg\",\"OWA\":\"America/Chicago\",\"OWB\":\"America/Chicago\",\"OWD\":\"America/New_York\",\"OWE\":\"Africa/Libreville\",\"OWK\":\"America/New_York\",\"OXB\":\"Africa/Bissau\",\"OXC\":\"America/New_York\",\"OXD\":\"America/New_York\",\"OXF\":\"Europe/London\",\"OXO\":\"Australia/Brisbane\",\"OXR\":\"America/Los_Angeles\",\"OXY\":\"Australia/Brisbane\",\"OYA\":\"America/Argentina/Buenos_Aires\",\"OYE\":\"Africa/Libreville\",\"OYG\":\"Africa/Kampala\",\"OYK\":\"America/Belem\",\"OYL\":\"Africa/Nairobi\",\"OYN\":\"Australia/Sydney\",\"OYO\":\"America/Argentina/Buenos_Aires\",\"OYP\":\"America/Cayenne\",\"OYS\":\"America/Los_Angeles\",\"OZA\":\"America/Chicago\",\"OZC\":\"Asia/Manila\",\"OZG\":\"Africa/Casablanca\",\"OZH\":\"Europe/Kiev\",\"OZI\":\"Europe/Madrid\",\"OZP\":\"Europe/Madrid\",\"OZR\":\"America/Chicago\",\"OZU\":\"Europe/Madrid\",\"OZZ\":\"Africa/Casablanca\",\"PAA\":\"Asia/Yangon\",\"PAB\":\"Asia/Kolkata\",\"PAC\":\"America/Panama\",\"PAD\":\"Europe/Berlin\",\"PAE\":\"America/Los_Angeles\",\"PAF\":\"Africa/Kampala\",\"PAG\":\"Asia/Manila\",\"PAH\":\"America/Chicago\",\"PAI\":\"Asia/Phnom_Penh\",\"PAJ\":\"Asia/Karachi\",\"PAK\":\"Pacific/Honolulu\",\"PAL\":\"America/Bogota\",\"PAM\":\"America/Chicago\",\"PAN\":\"Asia/Bangkok\",\"PAO\":\"America/Los_Angeles\",\"PAP\":\"America/Port-au-Prince\",\"PAQ\":\"America/Anchorage\",\"PAR\":\"Europe/Paris\",\"PAS\":\"Europe/Athens\",\"PAT\":\"Asia/Kolkata\",\"PAU\":\"Asia/Yangon\",\"PAV\":\"America/Belem\",\"PAW\":\"Pacific/Port_Moresby\",\"PAX\":\"America/Port-au-Prince\",\"PAY\":\"Asia/Kuala_Lumpur\",\"PAZ\":\"America/Mexico_City\",\"PBA\":\"America/Anchorage\",\"PBB\":\"America/Campo_Grande\",\"PBC\":\"America/Mexico_City\",\"PBD\":\"Asia/Kolkata\",\"PBE\":\"America/Bogota\",\"PBF\":\"America/Chicago\",\"PBG\":\"America/New_York\",\"PBH\":\"Asia/Thimphu\",\"PBI\":\"America/New_York\",\"PBJ\":\"Pacific/Efate\",\"PBK\":\"America/Anchorage\",\"PBL\":\"America/Caracas\",\"PBM\":\"America/Paramaribo\",\"PBN\":\"Africa/Luanda\",\"PBO\":\"Australia/Perth\",\"PBP\":\"America/Costa_Rica\",\"PBQ\":\"America/Porto_Velho\",\"PBR\":\"America/Guatemala\",\"PBS\":\"Asia/Bangkok\",\"PBT\":\"America/Asuncion\",\"PBU\":\"Asia/Yangon\",\"PBV\":\"America/Campo_Grande\",\"PBX\":\"America/Campo_Grande\",\"PBY\":\"Australia/Brisbane\",\"PBZ\":\"Africa/Johannesburg\",\"PCA\":\"America/Anchorage\",\"PCB\":\"Asia/Jakarta\",\"PCC\":\"America/Bogota\",\"PCD\":\"America/Chicago\",\"PCE\":\"America/Anchorage\",\"PCG\":\"America/Guatemala\",\"PCH\":\"America/Tegucigalpa\",\"PCJ\":\"America/Asuncion\",\"PCK\":\"America/Anchorage\",\"PCL\":\"America/Lima\",\"PCM\":\"America/Mexico_City\",\"PCN\":\"Pacific/Auckland\",\"PCO\":\"America/Mazatlan\",\"PCP\":\"Africa/Sao_Tome\",\"PCQ\":\"Asia/Vientiane\",\"PCR\":\"America/Bogota\",\"PCS\":\"America/Belem\",\"PCT\":\"America/New_York\",\"PCU\":\"America/Chicago\",\"PCV\":\"America/Tijuana\",\"PDA\":\"America/Bogota\",\"PDB\":\"America/Anchorage\",\"PDC\":\"Pacific/Noumea\",\"PDD\":\"Africa/Maputo\",\"PDE\":\"Australia/Adelaide\",\"PDF\":\"America/Belem\",\"PDG\":\"Asia/Jakarta\",\"PDI\":\"Pacific/Port_Moresby\",\"PDK\":\"America/New_York\",\"PDL\":\"Atlantic/Azores\",\"PDM\":\"America/Panama\",\"PDN\":\"Australia/Adelaide\",\"PDO\":\"Asia/Jakarta\",\"PDP\":\"America/Montevideo\",\"PDR\":\"America/Belem\",\"PDS\":\"America/Matamoros\",\"PDT\":\"America/Los_Angeles\",\"PDU\":\"America/Montevideo\",\"PDV\":\"Europe/Sofia\",\"PDX\":\"America/Los_Angeles\",\"PDZ\":\"America/Caracas\",\"PEA\":\"Australia/Adelaide\",\"PEB\":\"Africa/Maputo\",\"PEC\":\"America/Anchorage\",\"PED\":\"Europe/Prague\",\"PEE\":\"Asia/Yekaterinburg\",\"PEF\":\"Europe/Berlin\",\"PEG\":\"Europe/Rome\",\"PEH\":\"America/Argentina/Buenos_Aires\",\"PEI\":\"America/Bogota\",\"PEK\":\"Asia/Shanghai\",\"PEL\":\"Africa/Maseru\",\"PEM\":\"America/Lima\",\"PEN\":\"Asia/Kuala_Lumpur\",\"PEP\":\"Australia/Darwin\",\"PEQ\":\"America/Chicago\",\"PER\":\"Australia/Perth\",\"PES\":\"Europe/Moscow\",\"PET\":\"America/Sao_Paulo\",\"PEU\":\"America/Tegucigalpa\",\"PEV\":\"Europe/Budapest\",\"PEW\":\"Asia/Karachi\",\"PEX\":\"Europe/Moscow\",\"PEY\":\"Australia/Adelaide\",\"PEZ\":\"Europe/Moscow\",\"PFA\":\"America/Anchorage\",\"PFB\":\"America/Sao_Paulo\",\"PFC\":\"America/Los_Angeles\",\"PFD\":\"America/Anchorage\",\"PFJ\":\"Atlantic/Reykjavik\",\"PFO\":\"Asia/Nicosia\",\"PFQ\":\"Asia/Tehran\",\"PFR\":\"Africa/Lubumbashi\",\"PGA\":\"America/Phoenix\",\"PGB\":\"Pacific/Port_Moresby\",\"PGC\":\"America/New_York\",\"PGD\":\"America/New_York\",\"PGE\":\"Pacific/Port_Moresby\",\"PGF\":\"Europe/Paris\",\"PGG\":\"America/Belem\",\"PGH\":\"Asia/Kolkata\",\"PGI\":\"Africa/Luanda\",\"PGK\":\"Asia/Jakarta\",\"PGL\":\"America/Chicago\",\"PGM\":\"America/Anchorage\",\"PGN\":\"Pacific/Port_Moresby\",\"PGO\":\"America/Denver\",\"PGP\":\"Africa/Sao_Tome\",\"PGQ\":\"Asia/Makassar\",\"PGR\":\"America/Chicago\",\"PGS\":\"America/Phoenix\",\"PGU\":\"Asia/Tehran\",\"PGV\":\"America/New_York\",\"PGX\":\"Europe/Paris\",\"PGZ\":\"America/Sao_Paulo\",\"PHA\":\"Asia/Ho_Chi_Minh\",\"PHB\":\"America/Belem\",\"PHC\":\"Africa/Lagos\",\"PHD\":\"America/New_York\",\"PHE\":\"Australia/Perth\",\"PHF\":\"America/New_York\",\"PHG\":\"Africa/Lagos\",\"PHH\":\"Asia/Ho_Chi_Minh\",\"PHI\":\"America/Belem\",\"PHJ\":\"Australia/Sydney\",\"PHK\":\"America/New_York\",\"PHL\":\"America/New_York\",\"PHM\":\"Europe/Berlin\",\"PHN\":\"America/New_York\",\"PHO\":\"America/Anchorage\",\"PHP\":\"America/Chicago\",\"PHQ\":\"Australia/Brisbane\",\"PHR\":\"Pacific/Fiji\",\"PHS\":\"Asia/Bangkok\",\"PHT\":\"America/Chicago\",\"PHU\":\"Asia/Ho_Chi_Minh\",\"PHW\":\"Africa/Johannesburg\",\"PHX\":\"America/Phoenix\",\"PHY\":\"Asia/Bangkok\",\"PHZ\":\"Asia/Bangkok\",\"PIA\":\"America/Chicago\",\"PIB\":\"America/Chicago\",\"PIC\":\"America/Grand_Turk\",\"PID\":\"America/Nassau\",\"PIE\":\"America/New_York\",\"PIF\":\"Asia/Taipei\",\"PIG\":\"America/Porto_Velho\",\"PIH\":\"America/Denver\",\"PIK\":\"Europe/London\",\"PIL\":\"America/Asuncion\",\"PIM\":\"America/New_York\",\"PIN\":\"America/Porto_Velho\",\"PIO\":\"America/Lima\",\"PIP\":\"America/Anchorage\",\"PIQ\":\"America/Guyana\",\"PIR\":\"America/Chicago\",\"PIS\":\"Europe/Paris\",\"PIT\":\"America/New_York\",\"PIU\":\"America/Lima\",\"PIV\":\"America/Sao_Paulo\",\"PIW\":\"America/Winnipeg\",\"PIX\":\"Atlantic/Azores\",\"PIZ\":\"America/Anchorage\",\"PJA\":\"Europe/Stockholm\",\"PJB\":\"America/Phoenix\",\"PJC\":\"America/Asuncion\",\"PJG\":\"Asia/Karachi\",\"PJM\":\"America/Costa_Rica\",\"PJS\":\"America/Anchorage\",\"PKA\":\"America/Anchorage\",\"PKB\":\"America/New_York\",\"PKC\":\"Asia/Kamchatka\",\"PKD\":\"America/Chicago\",\"PKE\":\"Australia/Sydney\",\"PKF\":\"America/Chicago\",\"PKG\":\"Asia/Kuala_Lumpur\",\"PKH\":\"Europe/Athens\",\"PKJ\":\"America/Guatemala\",\"PKK\":\"Asia/Yangon\",\"PKL\":\"Pacific/Auckland\",\"PKM\":\"America/Guyana\",\"PKN\":\"Asia/Jakarta\",\"PKO\":\"Africa/Porto-Novo\",\"PKP\":\"Pacific/Tahiti\",\"PKR\":\"Asia/Kathmandu\",\"PKS\":\"Asia/Vientiane\",\"PKT\":\"Australia/Darwin\",\"PKU\":\"Asia/Jakarta\",\"PKV\":\"Europe/Moscow\",\"PKW\":\"Africa/Gaborone\",\"PKX\":\"Asia/Shanghai\",\"PKY\":\"Asia/Jakarta\",\"PKZ\":\"Asia/Vientiane\",\"PLA\":\"America/Bogota\",\"PLB\":\"America/New_York\",\"PLC\":\"America/Bogota\",\"PLD\":\"America/Costa_Rica\",\"PLE\":\"Pacific/Port_Moresby\",\"PLF\":\"Africa/Ndjamena\",\"PLH\":\"Europe/London\",\"PLI\":\"America/St_Vincent\",\"PLJ\":\"America/Belize\",\"PLK\":\"America/Chicago\",\"PLL\":\"America/Porto_Velho\",\"PLM\":\"Asia/Jakarta\",\"PLN\":\"America/New_York\",\"PLO\":\"Australia/Adelaide\",\"PLP\":\"America/Panama\",\"PLQ\":\"Europe/Vilnius\",\"PLR\":\"America/Chicago\",\"PLS\":\"America/Grand_Turk\",\"PLT\":\"America/Bogota\",\"PLU\":\"America/Sao_Paulo\",\"PLV\":\"Europe/Kiev\",\"PLW\":\"Asia/Makassar\",\"PLX\":\"Asia/Almaty\",\"PLY\":\"America/Indiana/Indianapolis\",\"PLZ\":\"Africa/Johannesburg\",\"PMA\":\"Africa/Dar_es_Salaam\",\"PMB\":\"America/Chicago\",\"PMC\":\"America/Santiago\",\"PMD\":\"America/Los_Angeles\",\"PME\":\"Europe/London\",\"PMF\":\"Europe/Rome\",\"PMG\":\"America/Campo_Grande\",\"PMH\":\"America/New_York\",\"PMI\":\"Europe/Madrid\",\"PMK\":\"Australia/Brisbane\",\"PML\":\"America/Anchorage\",\"PMM\":\"Asia/Bangkok\",\"PMN\":\"Pacific/Port_Moresby\",\"PMO\":\"Europe/Rome\",\"PMP\":\"Pacific/Port_Moresby\",\"PMQ\":\"America/Argentina/Buenos_Aires\",\"PMR\":\"Pacific/Auckland\",\"PMS\":\"Asia/Damascus\",\"PMT\":\"America/Guyana\",\"PMU\":\"America/Anchorage\",\"PMV\":\"America/Caracas\",\"PMW\":\"America/Belem\",\"PMX\":\"America/New_York\",\"PMY\":\"America/Argentina/Buenos_Aires\",\"PMZ\":\"America/Costa_Rica\",\"PNA\":\"Europe/Madrid\",\"PNB\":\"America/Belem\",\"PNC\":\"America/Chicago\",\"PND\":\"America/Belize\",\"PNE\":\"America/New_York\",\"PNF\":\"America/Anchorage\",\"PNG\":\"America/Sao_Paulo\",\"PNH\":\"Asia/Phnom_Penh\",\"PNI\":\"Pacific/Pohnpei\",\"PNJ\":\"Asia/Shanghai\",\"PNK\":\"Asia/Jakarta\",\"PNL\":\"Europe/Rome\",\"PNN\":\"America/New_York\",\"PNO\":\"America/Mexico_City\",\"PNP\":\"Pacific/Port_Moresby\",\"PNQ\":\"Asia/Kolkata\",\"PNR\":\"Africa/Brazzaville\",\"PNS\":\"America/Chicago\",\"PNT\":\"America/Santiago\",\"PNU\":\"America/Denver\",\"PNV\":\"Europe/Vilnius\",\"PNX\":\"America/Chicago\",\"PNY\":\"Asia/Kolkata\",\"PNZ\":\"America/Belem\",\"POA\":\"America/Sao_Paulo\",\"POB\":\"America/New_York\",\"POC\":\"America/Los_Angeles\",\"POD\":\"Africa/Dakar\",\"POE\":\"America/Chicago\",\"POF\":\"America/Chicago\",\"POG\":\"Africa/Libreville\",\"POH\":\"America/Chicago\",\"POI\":\"America/La_Paz\",\"POJ\":\"America/Sao_Paulo\",\"POL\":\"Africa/Maputo\",\"POM\":\"Pacific/Port_Moresby\",\"PON\":\"America/Guatemala\",\"POO\":\"America/Sao_Paulo\",\"POP\":\"America/Santo_Domingo\",\"POR\":\"Europe/Helsinki\",\"POS\":\"America/Port_of_Spain\",\"POT\":\"America/Jamaica\",\"POU\":\"America/New_York\",\"POV\":\"Europe/Bratislava\",\"POW\":\"Europe/Ljubljana\",\"POX\":\"Europe/Paris\",\"POY\":\"America/Denver\",\"POZ\":\"Europe/Warsaw\",\"PPA\":\"America/Chicago\",\"PPB\":\"America/Sao_Paulo\",\"PPC\":\"America/Anchorage\",\"PPD\":\"America/Puerto_Rico\",\"PPE\":\"America/Hermosillo\",\"PPF\":\"America/Chicago\",\"PPG\":\"Pacific/Pago_Pago\",\"PPH\":\"America/Caracas\",\"PPI\":\"Australia/Adelaide\",\"PPJ\":\"Asia/Jakarta\",\"PPK\":\"Asia/Almaty\",\"PPL\":\"Asia/Kathmandu\",\"PPM\":\"America/New_York\",\"PPN\":\"America/Bogota\",\"PPO\":\"America/Nassau\",\"PPP\":\"Australia/Brisbane\",\"PPQ\":\"Pacific/Auckland\",\"PPR\":\"Asia/Jakarta\",\"PPS\":\"Asia/Manila\",\"PPT\":\"Pacific/Tahiti\",\"PPU\":\"Asia/Yangon\",\"PPV\":\"America/Anchorage\",\"PPW\":\"Europe/London\",\"PPX\":\"Pacific/Port_Moresby\",\"PPY\":\"America/Sao_Paulo\",\"PPZ\":\"America/Caracas\",\"PQC\":\"Asia/Ho_Chi_Minh\",\"PQI\":\"America/New_York\",\"PQM\":\"America/Mexico_City\",\"PQQ\":\"Australia/Sydney\",\"PQS\":\"America/Anchorage\",\"PQT\":\"America/Godthab\",\"PRA\":\"America/Argentina/Buenos_Aires\",\"PRB\":\"America/Los_Angeles\",\"PRC\":\"America/Phoenix\",\"PRD\":\"Australia/Perth\",\"PRE\":\"America/Bogota\",\"PRF\":\"America/Anchorage\",\"PRG\":\"Europe/Prague\",\"PRH\":\"Asia/Bangkok\",\"PRI\":\"Indian/Mahe\",\"PRJ\":\"Europe/Rome\",\"PRK\":\"Africa/Johannesburg\",\"PRL\":\"America/Anchorage\",\"PRM\":\"Europe/Lisbon\",\"PRN\":\"Europe/Belgrade\",\"PRO\":\"America/Chicago\",\"PRP\":\"Europe/Paris\",\"PRQ\":\"America/Argentina/Buenos_Aires\",\"PRR\":\"America/Guyana\",\"PRS\":\"Pacific/Guadalcanal\",\"PRU\":\"Asia/Yangon\",\"PRV\":\"Europe/Prague\",\"PRW\":\"America/Chicago\",\"PRX\":\"America/Chicago\",\"PRY\":\"Africa/Johannesburg\",\"PRZ\":\"America/Los_Angeles\",\"PSA\":\"Europe/Rome\",\"PSB\":\"America/New_York\",\"PSC\":\"America/Los_Angeles\",\"PSD\":\"Africa/Cairo\",\"PSE\":\"America/Puerto_Rico\",\"PSF\":\"America/New_York\",\"PSG\":\"America/Anchorage\",\"PSH\":\"Europe/Berlin\",\"PSI\":\"Asia/Karachi\",\"PSJ\":\"Asia/Makassar\",\"PSK\":\"America/New_York\",\"PSL\":\"Europe/London\",\"PSM\":\"America/New_York\",\"PSN\":\"America/Chicago\",\"PSO\":\"America/Bogota\",\"PSP\":\"America/Los_Angeles\",\"PSQ\":\"America/New_York\",\"PSR\":\"Europe/Rome\",\"PSS\":\"America/Argentina/Buenos_Aires\",\"PST\":\"America/Havana\",\"PSU\":\"Asia/Jakarta\",\"PSV\":\"Europe/London\",\"PSW\":\"America/Sao_Paulo\",\"PSX\":\"America/Chicago\",\"PSY\":\"Atlantic/Stanley\",\"PSZ\":\"America/La_Paz\",\"PTA\":\"America/Anchorage\",\"PTB\":\"America/New_York\",\"PTC\":\"America/Anchorage\",\"PTD\":\"America/Anchorage\",\"PTF\":\"Pacific/Fiji\",\"PTG\":\"Africa/Johannesburg\",\"PTH\":\"America/Anchorage\",\"PTI\":\"Australia/Brisbane\",\"PTJ\":\"Australia/Sydney\",\"PTK\":\"America/New_York\",\"PTL\":\"America/Anchorage\",\"PTM\":\"America/Caracas\",\"PTN\":\"America/Chicago\",\"PTO\":\"America/Sao_Paulo\",\"PTP\":\"America/Guadeloupe\",\"PTQ\":\"America/Belem\",\"PTR\":\"America/Anchorage\",\"PTS\":\"America/Chicago\",\"PTT\":\"America/Chicago\",\"PTU\":\"America/Anchorage\",\"PTV\":\"America/Los_Angeles\",\"PTW\":\"America/New_York\",\"PTX\":\"America/Bogota\",\"PTY\":\"America/Panama\",\"PTZ\":\"America/Guayaquil\",\"PUA\":\"Pacific/Port_Moresby\",\"PUB\":\"America/Denver\",\"PUC\":\"America/Denver\",\"PUD\":\"America/Argentina/Buenos_Aires\",\"PUE\":\"America/Panama\",\"PUF\":\"Europe/Paris\",\"PUG\":\"Australia/Adelaide\",\"PUH\":\"America/Mexico_City\",\"PUI\":\"Pacific/Port_Moresby\",\"PUJ\":\"America/Santo_Domingo\",\"PUK\":\"Pacific/Tahiti\",\"PUL\":\"America/Los_Angeles\",\"PUM\":\"Asia/Makassar\",\"PUN\":\"Africa/Lubumbashi\",\"PUO\":\"America/Anchorage\",\"PUP\":\"Africa/Ouagadougou\",\"PUQ\":\"America/Santiago\",\"PUR\":\"America/La_Paz\",\"PUS\":\"Asia/Seoul\",\"PUT\":\"Asia/Kolkata\",\"PUU\":\"America/Bogota\",\"PUV\":\"Pacific/Noumea\",\"PUW\":\"America/Los_Angeles\",\"PUX\":\"America/Santiago\",\"PUY\":\"Europe/Zagreb\",\"PUZ\":\"America/Managua\",\"PVA\":\"America/Bogota\",\"PVC\":\"America/New_York\",\"PVD\":\"America/New_York\",\"PVE\":\"America/Panama\",\"PVF\":\"America/Los_Angeles\",\"PVG\":\"Asia/Shanghai\",\"PVH\":\"America/Porto_Velho\",\"PVI\":\"America/Sao_Paulo\",\"PVK\":\"Europe/Athens\",\"PVL\":\"America/New_York\",\"PVN\":\"Europe/Sofia\",\"PVO\":\"America/Guayaquil\",\"PVR\":\"America/Mexico_City\",\"PVS\":\"Asia/Kamchatka\",\"PVU\":\"America/Denver\",\"PVW\":\"America/Chicago\",\"PVY\":\"America/Anchorage\",\"PVZ\":\"America/New_York\",\"PWA\":\"America/Chicago\",\"PWD\":\"America/Denver\",\"PWE\":\"Asia/Anadyr\",\"PWI\":\"Africa/Addis_Ababa\",\"PWK\":\"America/Chicago\",\"PWL\":\"Asia/Jakarta\",\"PWM\":\"America/New_York\",\"PWN\":\"America/Nassau\",\"PWO\":\"Africa/Lubumbashi\",\"PWQ\":\"Asia/Almaty\",\"PWR\":\"America/Anchorage\",\"PWT\":\"America/Los_Angeles\",\"PWY\":\"America/Denver\",\"PXA\":\"Asia/Jakarta\",\"PXH\":\"Australia/Adelaide\",\"PXL\":\"America/Phoenix\",\"PXM\":\"America/Mexico_City\",\"PXO\":\"Europe/Lisbon\",\"PXR\":\"Asia/Bangkok\",\"PXS\":\"Europe/Madrid\",\"PXU\":\"Asia/Ho_Chi_Minh\",\"PYA\":\"America/Bogota\",\"PYB\":\"Asia/Kolkata\",\"PYC\":\"America/Panama\",\"PYE\":\"Pacific/Rarotonga\",\"PYG\":\"Asia/Kolkata\",\"PYH\":\"America/Caracas\",\"PYJ\":\"Asia/Yakutsk\",\"PYL\":\"America/Anchorage\",\"PYM\":\"America/New_York\",\"PYN\":\"America/Bogota\",\"PYO\":\"America/Guayaquil\",\"PYR\":\"Europe/Athens\",\"PYS\":\"America/Los_Angeles\",\"PYV\":\"America/Panama\",\"PYX\":\"Asia/Bangkok\",\"PYY\":\"Asia/Bangkok\",\"PZA\":\"America/Bogota\",\"PZB\":\"Africa/Johannesburg\",\"PZE\":\"Europe/London\",\"PZH\":\"Asia/Karachi\",\"PZI\":\"Asia/Shanghai\",\"PZK\":\"Pacific/Rarotonga\",\"PZL\":\"Africa/Johannesburg\",\"PZO\":\"America/Caracas\",\"PZU\":\"Africa/Khartoum\",\"PZY\":\"Europe/Bratislava\",\"QAC\":\"America/Sao_Paulo\",\"QAK\":\"America/Sao_Paulo\",\"QBC\":\"America/Vancouver\",\"QBX\":\"America/Belem\",\"QCJ\":\"America/Sao_Paulo\",\"QCN\":\"America/Sao_Paulo\",\"QCP\":\"America/Belem\",\"QCR\":\"America/Sao_Paulo\",\"QCU\":\"America/Godthab\",\"QDB\":\"America/Campo_Grande\",\"QDC\":\"America/Sao_Paulo\",\"QDF\":\"America/Sao_Paulo\",\"QDP\":\"America/Campo_Grande\",\"QDV\":\"America/Sao_Paulo\",\"QET\":\"Asia/Seoul\",\"QFG\":\"America/Godthab\",\"QFI\":\"America/Godthab\",\"QFK\":\"Europe/Oslo\",\"QFN\":\"America/Godthab\",\"QFQ\":\"Europe/Oslo\",\"QFT\":\"America/Godthab\",\"QFX\":\"America/Godthab\",\"QGC\":\"America/Sao_Paulo\",\"QGF\":\"America/Sao_Paulo\",\"QGP\":\"America/Sao_Paulo\",\"QGQ\":\"America/Godthab\",\"QGU\":\"Asia/Tokyo\",\"QHB\":\"America/Sao_Paulo\",\"QHN\":\"America/Sao_Paulo\",\"QHV\":\"America/Sao_Paulo\",\"QID\":\"America/Sao_Paulo\",\"QIG\":\"America/Belem\",\"QIQ\":\"America/Sao_Paulo\",\"QIT\":\"America/Sao_Paulo\",\"QJE\":\"America/Godthab\",\"QJH\":\"America/Godthab\",\"QJI\":\"America/Godthab\",\"QLA\":\"Europe/London\",\"QLR\":\"Europe/Lisbon\",\"QLX\":\"Europe/Vienna\",\"QMF\":\"America/Sao_Paulo\",\"QMK\":\"America/Godthab\",\"QMM\":\"Europe/Rome\",\"QMQ\":\"Africa/Tripoli\",\"QMV\":\"America/New_York\",\"QNS\":\"America/Sao_Paulo\",\"QNV\":\"America/Sao_Paulo\",\"QOA\":\"America/Sao_Paulo\",\"QOQ\":\"America/Godthab\",\"QOW\":\"Africa/Lagos\",\"QPG\":\"Asia/Singapore\",\"QPK\":\"Europe/Berlin\",\"QPW\":\"America/Godthab\",\"QRA\":\"Africa/Johannesburg\",\"QRC\":\"Pacific/Easter\",\"QRE\":\"America/Campo_Grande\",\"QRF\":\"America/Argentina/Buenos_Aires\",\"QRH\":\"Europe/Amsterdam\",\"QRM\":\"Australia/Brisbane\",\"QRO\":\"America/Mexico_City\",\"QRR\":\"Australia/Brisbane\",\"QRW\":\"Africa/Lagos\",\"QRY\":\"America/Godthab\",\"QSC\":\"America/Sao_Paulo\",\"QSF\":\"Africa/Algiers\",\"QSM\":\"Europe/Berlin\",\"QSR\":\"Europe/Rome\",\"QSZ\":\"Asia/Shanghai\",\"QTL\":\"America/Sao_Paulo\",\"QUB\":\"Africa/Tripoli\",\"QUF\":\"Europe/Tallinn\",\"QUG\":\"Europe/London\",\"QUN\":\"Asia/Seoul\",\"QUO\":\"Africa/Lagos\",\"QUP\":\"America/Godthab\",\"QUT\":\"Asia/Tokyo\",\"QUV\":\"America/Godthab\",\"QUW\":\"America/Godthab\",\"QVP\":\"America/Sao_Paulo\",\"QWG\":\"America/New_York\",\"QXC\":\"America/Belem\",\"QXD\":\"America/Sao_Paulo\",\"QYI\":\"Europe/Amsterdam\",\"QZN\":\"Africa/Algiers\",\"RAA\":\"Pacific/Port_Moresby\",\"RAB\":\"Pacific/Port_Moresby\",\"RAC\":\"America/Chicago\",\"RAD\":\"America/Tortola\",\"RAE\":\"Asia/Riyadh\",\"RAF\":\"Africa/Cairo\",\"RAG\":\"Pacific/Auckland\",\"RAH\":\"Asia/Riyadh\",\"RAI\":\"Atlantic/Cape_Verde\",\"RAJ\":\"Asia/Kolkata\",\"RAK\":\"Africa/Casablanca\",\"RAL\":\"America/Los_Angeles\",\"RAM\":\"Australia/Darwin\",\"RAN\":\"Europe/Rome\",\"RAO\":\"America/Sao_Paulo\",\"RAP\":\"America/Denver\",\"RAQ\":\"Asia/Makassar\",\"RAR\":\"Pacific/Rarotonga\",\"RAS\":\"Asia/Tehran\",\"RAT\":\"Asia/Yekaterinburg\",\"RAU\":\"Asia/Dhaka\",\"RAV\":\"America/Bogota\",\"RAW\":\"Pacific/Bougainville\",\"RAX\":\"Pacific/Port_Moresby\",\"RAY\":\"Europe/London\",\"RAZ\":\"Asia/Karachi\",\"RBA\":\"Africa/Casablanca\",\"RBB\":\"America/Porto_Velho\",\"RBC\":\"Australia/Sydney\",\"RBD\":\"America/Chicago\",\"RBE\":\"Asia/Phnom_Penh\",\"RBF\":\"America/Los_Angeles\",\"RBG\":\"America/Los_Angeles\",\"RBH\":\"America/Anchorage\",\"RBI\":\"Pacific/Fiji\",\"RBJ\":\"Asia/Tokyo\",\"RBK\":\"America/Los_Angeles\",\"RBL\":\"America/Los_Angeles\",\"RBM\":\"Europe/Berlin\",\"RBN\":\"America/New_York\",\"RBO\":\"America/La_Paz\",\"RBP\":\"Pacific/Port_Moresby\",\"RBQ\":\"America/La_Paz\",\"RBR\":\"America/Rio_Branco\",\"RBS\":\"Australia/Sydney\",\"RBT\":\"Africa/Nairobi\",\"RBU\":\"Australia/Perth\",\"RBV\":\"Pacific/Guadalcanal\",\"RBW\":\"America/New_York\",\"RBX\":\"Africa/Juba\",\"RBY\":\"America/Anchorage\",\"RCA\":\"America/Denver\",\"RCB\":\"Africa/Johannesburg\",\"RCE\":\"America/Los_Angeles\",\"RCH\":\"America/Bogota\",\"RCK\":\"America/Chicago\",\"RCL\":\"Pacific/Efate\",\"RCM\":\"Australia/Brisbane\",\"RCN\":\"Australia/Adelaide\",\"RCO\":\"Europe/Paris\",\"RCP\":\"America/Anchorage\",\"RCQ\":\"America/Argentina/Buenos_Aires\",\"RCR\":\"America/Indiana/Indianapolis\",\"RCS\":\"Europe/London\",\"RCT\":\"America/New_York\",\"RCU\":\"America/Argentina/Buenos_Aires\",\"RCY\":\"America/Nassau\",\"RDA\":\"Australia/Darwin\",\"RDB\":\"America/Anchorage\",\"RDC\":\"America/Belem\",\"RDD\":\"America/Los_Angeles\",\"RDE\":\"Asia/Jayapura\",\"RDG\":\"America/New_York\",\"RDM\":\"America/Los_Angeles\",\"RDN\":\"Asia/Kuala_Lumpur\",\"RDO\":\"Europe/Warsaw\",\"RDP\":\"Asia/Kolkata\",\"RDR\":\"America/Chicago\",\"RDS\":\"America/Argentina/Buenos_Aires\",\"RDT\":\"Africa/Dakar\",\"RDU\":\"America/New_York\",\"RDV\":\"America/Anchorage\",\"RDZ\":\"Europe/Paris\",\"REA\":\"Pacific/Tahiti\",\"REB\":\"Europe/Berlin\",\"REC\":\"America/Belem\",\"RED\":\"America/New_York\",\"REE\":\"America/Chicago\",\"REG\":\"Europe/Rome\",\"REH\":\"America/New_York\",\"REI\":\"America/Cayenne\",\"REL\":\"America/Argentina/Buenos_Aires\",\"REN\":\"Asia/Yekaterinburg\",\"REO\":\"America/Los_Angeles\",\"REP\":\"Asia/Phnom_Penh\",\"RER\":\"America/Guatemala\",\"RES\":\"America/Argentina/Buenos_Aires\",\"RET\":\"Europe/Oslo\",\"REU\":\"Europe/Madrid\",\"REW\":\"Asia/Kolkata\",\"REX\":\"America/Matamoros\",\"REY\":\"America/La_Paz\",\"REZ\":\"America/Sao_Paulo\",\"RFA\":\"Africa/Bangui\",\"RFD\":\"America/Chicago\",\"RFG\":\"America/Chicago\",\"RFK\":\"America/Chicago\",\"RFN\":\"Atlantic/Reykjavik\",\"RFP\":\"Pacific/Tahiti\",\"RFR\":\"America/Costa_Rica\",\"RFS\":\"America/Managua\",\"RGA\":\"America/Argentina/Buenos_Aires\",\"RGE\":\"Pacific/Port_Moresby\",\"RGH\":\"Asia/Kolkata\",\"RGI\":\"Pacific/Tahiti\",\"RGK\":\"Asia/Krasnoyarsk\",\"RGL\":\"America/Argentina/Buenos_Aires\",\"RGN\":\"Asia/Yangon\",\"RGR\":\"America/Chicago\",\"RGS\":\"Europe/Madrid\",\"RGT\":\"Asia/Jakarta\",\"RHA\":\"Atlantic/Reykjavik\",\"RHD\":\"America/Argentina/Buenos_Aires\",\"RHE\":\"Europe/Paris\",\"RHG\":\"Africa/Kigali\",\"RHI\":\"America/Chicago\",\"RHL\":\"Australia/Perth\",\"RHN\":\"Africa/Windhoek\",\"RHO\":\"Europe/Athens\",\"RHP\":\"Asia/Kathmandu\",\"RHT\":\"Asia/Shanghai\",\"RHV\":\"America/Los_Angeles\",\"RIA\":\"America/Sao_Paulo\",\"RIB\":\"America/La_Paz\",\"RIC\":\"America/New_York\",\"RID\":\"America/Indiana/Indianapolis\",\"RIE\":\"America/Chicago\",\"RIF\":\"America/Denver\",\"RIG\":\"America/Sao_Paulo\",\"RIH\":\"America/Panama\",\"RIJ\":\"America/Lima\",\"RIL\":\"America/Denver\",\"RIM\":\"America/Lima\",\"RIN\":\"Pacific/Guadalcanal\",\"RIR\":\"America/Los_Angeles\",\"RIS\":\"Asia/Tokyo\",\"RIT\":\"America/Panama\",\"RIV\":\"America/Los_Angeles\",\"RIW\":\"America/Denver\",\"RIX\":\"Europe/Riga\",\"RIY\":\"Asia/Aden\",\"RIZ\":\"Asia/Shanghai\",\"RJA\":\"Asia/Kolkata\",\"RJB\":\"Asia/Kathmandu\",\"RJH\":\"Asia/Dhaka\",\"RJI\":\"Asia/Kolkata\",\"RJK\":\"Europe/Zagreb\",\"RJL\":\"Europe/Madrid\",\"RJM\":\"Asia/Jayapura\",\"RJN\":\"Asia/Tehran\",\"RKA\":\"Pacific/Tahiti\",\"RKC\":\"America/Los_Angeles\",\"RKD\":\"America/New_York\",\"RKE\":\"Europe/Copenhagen\",\"RKH\":\"America/New_York\",\"RKI\":\"Asia/Jakarta\",\"RKO\":\"Asia/Jakarta\",\"RKP\":\"America/Chicago\",\"RKR\":\"America/Chicago\",\"RKS\":\"America/Denver\",\"RKT\":\"Asia/Dubai\",\"RKU\":\"Pacific/Port_Moresby\",\"RKV\":\"Atlantic/Reykjavik\",\"RKW\":\"America/New_York\",\"RKY\":\"Australia/Brisbane\",\"RKZ\":\"Asia/Shanghai\",\"RLA\":\"America/Chicago\",\"RLD\":\"America/Los_Angeles\",\"RLG\":\"Europe/Berlin\",\"RLI\":\"America/Chicago\",\"RLK\":\"Asia/Shanghai\",\"RLO\":\"America/Argentina/Buenos_Aires\",\"RLP\":\"Australia/Brisbane\",\"RLR\":\"Indian/Antananarivo\",\"RLT\":\"Africa/Niamey\",\"RLU\":\"America/Anchorage\",\"RMA\":\"Australia/Brisbane\",\"RMB\":\"Asia/Muscat\",\"RMC\":\"America/Chicago\",\"RMD\":\"Asia/Kolkata\",\"RME\":\"America/New_York\",\"RMF\":\"Africa/Cairo\",\"RMG\":\"America/New_York\",\"RMI\":\"Europe/Rome\",\"RMK\":\"Australia/Adelaide\",\"RML\":\"Asia/Colombo\",\"RMN\":\"Pacific/Port_Moresby\",\"RMP\":\"America/Anchorage\",\"RMQ\":\"Asia/Taipei\",\"RMS\":\"Europe/Berlin\",\"RMT\":\"Pacific/Gambier\",\"RMU\":\"Europe/Madrid\",\"RMY\":\"America/Los_Angeles\",\"RNA\":\"Pacific/Guadalcanal\",\"RNB\":\"Europe/Stockholm\",\"RNC\":\"America/Chicago\",\"RND\":\"America/Chicago\",\"RNE\":\"Europe/Paris\",\"RNG\":\"America/Denver\",\"RNH\":\"America/Chicago\",\"RNI\":\"America/Managua\",\"RNJ\":\"Asia/Tokyo\",\"RNL\":\"Pacific/Guadalcanal\",\"RNM\":\"Asia/Muscat\",\"RNN\":\"Europe/Copenhagen\",\"RNO\":\"America/Los_Angeles\",\"RNP\":\"Pacific/Majuro\",\"RNR\":\"Pacific/Port_Moresby\",\"RNS\":\"Europe/Paris\",\"RNT\":\"America/Los_Angeles\",\"RNU\":\"Asia/Kuala_Lumpur\",\"RNZ\":\"America/Indiana/Indianapolis\",\"ROA\":\"America/New_York\",\"ROB\":\"Africa/Monrovia\",\"ROC\":\"America/New_York\",\"ROD\":\"Africa/Johannesburg\",\"ROF\":\"America/Los_Angeles\",\"ROG\":\"America/Chicago\",\"ROH\":\"Australia/Brisbane\",\"ROI\":\"Asia/Bangkok\",\"ROK\":\"Australia/Brisbane\",\"ROL\":\"America/Denver\",\"RON\":\"America/Bogota\",\"ROO\":\"America/Campo_Grande\",\"ROP\":\"Pacific/Saipan\",\"ROR\":\"Pacific/Palau\",\"ROS\":\"America/Argentina/Buenos_Aires\",\"ROT\":\"Pacific/Auckland\",\"ROU\":\"Europe/Sofia\",\"ROV\":\"Europe/Moscow\",\"ROW\":\"America/Denver\",\"ROX\":\"America/Chicago\",\"ROY\":\"America/Argentina/Buenos_Aires\",\"ROZ\":\"Europe/Madrid\",\"RPA\":\"Asia/Kathmandu\",\"RPB\":\"Australia/Darwin\",\"RPM\":\"Australia/Darwin\",\"RPN\":\"Asia/Jerusalem\",\"RPR\":\"Asia/Kolkata\",\"RPV\":\"Australia/Darwin\",\"RPX\":\"America/Denver\",\"RQA\":\"Asia/Shanghai\",\"RRA\":\"Europe/Madrid\",\"RRE\":\"Australia/Adelaide\",\"RRG\":\"Indian/Mauritius\",\"RRI\":\"Pacific/Guadalcanal\",\"RRJ\":\"America/Sao_Paulo\",\"RRK\":\"Asia/Kolkata\",\"RRL\":\"America/Chicago\",\"RRM\":\"Africa/Maputo\",\"RRN\":\"America/Belem\",\"RRO\":\"Europe/Rome\",\"RRR\":\"Pacific/Tahiti\",\"RRS\":\"Europe/Oslo\",\"RRT\":\"America/Chicago\",\"RRV\":\"Australia/Darwin\",\"RSA\":\"America/Argentina/Buenos_Aires\",\"RSB\":\"Australia/Brisbane\",\"RSD\":\"America/Nassau\",\"RSE\":\"Australia/Sydney\",\"RSG\":\"America/Belem\",\"RSH\":\"America/Anchorage\",\"RSI\":\"America/Panama\",\"RSJ\":\"America/Los_Angeles\",\"RSK\":\"Asia/Jayapura\",\"RSL\":\"America/Chicago\",\"RSN\":\"America/Chicago\",\"RSP\":\"America/Anchorage\",\"RSS\":\"Africa/Khartoum\",\"RST\":\"America/Chicago\",\"RSU\":\"Asia/Seoul\",\"RSW\":\"America/New_York\",\"RSX\":\"America/New_York\",\"RTA\":\"Pacific/Fiji\",\"RTB\":\"America/Tegucigalpa\",\"RTC\":\"Asia/Kolkata\",\"RTD\":\"America/New_York\",\"RTE\":\"America/Anchorage\",\"RTG\":\"Asia/Makassar\",\"RTI\":\"Asia/Makassar\",\"RTL\":\"America/Chicago\",\"RTM\":\"Europe/Amsterdam\",\"RTN\":\"America/Denver\",\"RTP\":\"Australia/Brisbane\",\"RTS\":\"Australia/Perth\",\"RTW\":\"Europe/Saratov\",\"RTY\":\"Australia/Adelaide\",\"RUA\":\"Africa/Kampala\",\"RUD\":\"Asia/Tehran\",\"RUF\":\"Asia/Jayapura\",\"RUG\":\"Asia/Shanghai\",\"RUH\":\"Asia/Riyadh\",\"RUI\":\"America/Denver\",\"RUK\":\"Asia/Kathmandu\",\"RUL\":\"Indian/Maldives\",\"RUM\":\"Asia/Kathmandu\",\"RUN\":\"Indian/Reunion\",\"RUP\":\"Asia/Kolkata\",\"RUR\":\"Pacific/Tahiti\",\"RUS\":\"Pacific/Guadalcanal\",\"RUT\":\"America/New_York\",\"RUU\":\"Pacific/Port_Moresby\",\"RUV\":\"America/Guatemala\",\"RUY\":\"America/Tegucigalpa\",\"RVA\":\"Indian/Antananarivo\",\"RVC\":\"Africa/Monrovia\",\"RVD\":\"America/Sao_Paulo\",\"RVE\":\"America/Bogota\",\"RVH\":\"Europe/Moscow\",\"RVI\":\"Europe/Moscow\",\"RVK\":\"Europe/Oslo\",\"RVN\":\"Europe/Helsinki\",\"RVO\":\"Africa/Johannesburg\",\"RVR\":\"America/Denver\",\"RVS\":\"America/Chicago\",\"RVT\":\"Australia/Perth\",\"RVV\":\"Pacific/Tahiti\",\"RVY\":\"America/Montevideo\",\"RWB\":\"America/Anchorage\",\"RWF\":\"America/Chicago\",\"RWI\":\"America/New_York\",\"RWL\":\"America/Denver\",\"RWN\":\"Europe/Kiev\",\"RWS\":\"America/Sao_Paulo\",\"RXA\":\"Asia/Aden\",\"RXE\":\"America/Denver\",\"RXS\":\"Asia/Manila\",\"RYB\":\"Europe/Moscow\",\"RYG\":\"Europe/Oslo\",\"RYK\":\"Asia/Karachi\",\"RYL\":\"Africa/Lusaka\",\"RYN\":\"Europe/Paris\",\"RYO\":\"America/Argentina/Buenos_Aires\",\"RZA\":\"America/Argentina/Buenos_Aires\",\"RZE\":\"Europe/Warsaw\",\"RZH\":\"Asia/Vladivostok\",\"RZN\":\"Europe/Moscow\",\"RZP\":\"Asia/Manila\",\"RZR\":\"Asia/Tehran\",\"RZS\":\"Asia/Karachi\",\"RZZ\":\"America/New_York\",\"SAA\":\"America/Denver\",\"SAB\":\"America/Curacao\",\"SAC\":\"America/Los_Angeles\",\"SAD\":\"America/Phoenix\",\"SAE\":\"America/Godthab\",\"SAF\":\"America/Denver\",\"SAG\":\"Asia/Kolkata\",\"SAH\":\"Asia/Aden\",\"SAI\":\"Europe/San_Marino\",\"SAK\":\"Atlantic/Reykjavik\",\"SAL\":\"America/El_Salvador\",\"SAM\":\"Pacific/Port_Moresby\",\"SAN\":\"America/Los_Angeles\",\"SAP\":\"America/Tegucigalpa\",\"SAQ\":\"America/Nassau\",\"SAR\":\"America/Chicago\",\"SAS\":\"America/Los_Angeles\",\"SAT\":\"America/Chicago\",\"SAU\":\"Asia/Makassar\",\"SAV\":\"America/New_York\",\"SAW\":\"Europe/Istanbul\",\"SAX\":\"America/Panama\",\"SAY\":\"Europe/Rome\",\"SAZ\":\"Africa/Monrovia\",\"SBA\":\"America/Los_Angeles\",\"SBB\":\"America/Caracas\",\"SBC\":\"Pacific/Port_Moresby\",\"SBD\":\"America/Los_Angeles\",\"SBE\":\"Pacific/Port_Moresby\",\"SBF\":\"Asia/Kabul\",\"SBG\":\"Asia/Jakarta\",\"SBH\":\"America/Guadeloupe\",\"SBI\":\"Africa/Conakry\",\"SBJ\":\"America/Sao_Paulo\",\"SBK\":\"Europe/Paris\",\"SBL\":\"America/La_Paz\",\"SBM\":\"America/Chicago\",\"SBN\":\"America/Indiana/Indianapolis\",\"SBO\":\"America/Denver\",\"SBP\":\"America/Los_Angeles\",\"SBQ\":\"Asia/Karachi\",\"SBR\":\"Australia/Brisbane\",\"SBS\":\"America/Denver\",\"SBT\":\"Asia/Yekaterinburg\",\"SBU\":\"Africa/Johannesburg\",\"SBV\":\"Pacific/Bougainville\",\"SBW\":\"Asia/Kuala_Lumpur\",\"SBX\":\"America/Denver\",\"SBY\":\"America/New_York\",\"SBZ\":\"Europe/Bucharest\",\"SCA\":\"America/Bogota\",\"SCB\":\"America/Chicago\",\"SCC\":\"America/Anchorage\",\"SCD\":\"America/Tegucigalpa\",\"SCE\":\"America/New_York\",\"SCF\":\"America/Phoenix\",\"SCG\":\"Australia/Brisbane\",\"SCH\":\"America/New_York\",\"SCI\":\"America/Caracas\",\"SCJ\":\"America/Anchorage\",\"SCK\":\"America/Los_Angeles\",\"SCL\":\"America/Santiago\",\"SCM\":\"America/Anchorage\",\"SCN\":\"Europe/Berlin\",\"SCO\":\"Asia/Aqtau\",\"SCP\":\"Europe/Paris\",\"SCQ\":\"Europe/Madrid\",\"SCR\":\"Europe/Stockholm\",\"SCS\":\"Europe/London\",\"SCT\":\"Asia/Aden\",\"SCU\":\"America/Havana\",\"SCV\":\"Europe/Bucharest\",\"SCW\":\"Europe/Moscow\",\"SCX\":\"America/Mexico_City\",\"SCY\":\"Pacific/Galapagos\",\"SCZ\":\"Pacific/Guadalcanal\",\"SDB\":\"Africa/Johannesburg\",\"SDC\":\"America/Guyana\",\"SDD\":\"Africa/Luanda\",\"SDE\":\"America/Argentina/Buenos_Aires\",\"SDF\":\"America/New_York\",\"SDG\":\"Asia/Tehran\",\"SDH\":\"America/Tegucigalpa\",\"SDI\":\"Pacific/Port_Moresby\",\"SDJ\":\"Asia/Tokyo\",\"SDK\":\"Asia/Kuala_Lumpur\",\"SDL\":\"Europe/Stockholm\",\"SDM\":\"America/Los_Angeles\",\"SDN\":\"Europe/Oslo\",\"SDO\":\"Asia/Tokyo\",\"SDP\":\"America/Anchorage\",\"SDQ\":\"America/Santo_Domingo\",\"SDR\":\"Europe/Madrid\",\"SDS\":\"Asia/Tokyo\",\"SDT\":\"Asia/Karachi\",\"SDU\":\"America/Sao_Paulo\",\"SDV\":\"Asia/Jerusalem\",\"SDW\":\"Asia/Dhaka\",\"SDX\":\"America/Phoenix\",\"SDY\":\"America/Denver\",\"SEA\":\"America/Los_Angeles\",\"SEB\":\"Africa/Tripoli\",\"SEC\":\"Europe/Paris\",\"SED\":\"Asia/Jerusalem\",\"SEE\":\"America/Los_Angeles\",\"SEF\":\"America/New_York\",\"SEG\":\"America/New_York\",\"SEH\":\"Asia/Jayapura\",\"SEK\":\"Asia/Magadan\",\"SEM\":\"America/Chicago\",\"SEN\":\"Europe/London\",\"SEO\":\"Africa/Abidjan\",\"SEP\":\"America/Chicago\",\"SEQ\":\"Asia/Jakarta\",\"SER\":\"America/Indiana/Indianapolis\",\"SES\":\"America/Chicago\",\"SET\":\"America/Belem\",\"SEU\":\"Africa/Dar_es_Salaam\",\"SEV\":\"Europe/Kiev\",\"SEW\":\"Africa/Cairo\",\"SEX\":\"Europe/Berlin\",\"SEY\":\"Africa/Nouakchott\",\"SEZ\":\"Indian/Mahe\",\"SFA\":\"Africa/Tunis\",\"SFB\":\"America/New_York\",\"SFC\":\"America/Guadeloupe\",\"SFD\":\"America/Caracas\",\"SFE\":\"Asia/Manila\",\"SFF\":\"America/Los_Angeles\",\"SFG\":\"America/Marigot\",\"SFH\":\"America/Tijuana\",\"SFI\":\"Africa/Casablanca\",\"SFJ\":\"America/Godthab\",\"SFK\":\"America/Belem\",\"SFL\":\"Atlantic/Cape_Verde\",\"SFM\":\"America/New_York\",\"SFN\":\"America/Argentina/Buenos_Aires\",\"SFO\":\"America/Los_Angeles\",\"SFP\":\"Australia/Brisbane\",\"SFR\":\"America/Los_Angeles\",\"SFS\":\"Asia/Manila\",\"SFT\":\"Europe/Stockholm\",\"SFU\":\"Pacific/Port_Moresby\",\"SFV\":\"America/Sao_Paulo\",\"SFW\":\"America/Panama\",\"SFX\":\"America/Caracas\",\"SFZ\":\"America/New_York\",\"SGA\":\"Asia/Kabul\",\"SGB\":\"Pacific/Port_Moresby\",\"SGC\":\"Asia/Yekaterinburg\",\"SGD\":\"Europe/Copenhagen\",\"SGE\":\"Europe/Berlin\",\"SGF\":\"America/Chicago\",\"SGG\":\"America/Godthab\",\"SGH\":\"America/New_York\",\"SGI\":\"Asia/Karachi\",\"SGJ\":\"Pacific/Port_Moresby\",\"SGK\":\"Pacific/Port_Moresby\",\"SGL\":\"Asia/Manila\",\"SGM\":\"America/Mazatlan\",\"SGN\":\"Asia/Ho_Chi_Minh\",\"SGO\":\"Australia/Brisbane\",\"SGP\":\"Australia/Perth\",\"SGQ\":\"Asia/Makassar\",\"SGR\":\"America/Chicago\",\"SGT\":\"America/Chicago\",\"SGU\":\"America/Denver\",\"SGV\":\"America/Argentina/Buenos_Aires\",\"SGW\":\"America/Anchorage\",\"SGX\":\"Africa/Dar_es_Salaam\",\"SGY\":\"America/Anchorage\",\"SGZ\":\"Asia/Bangkok\",\"SHA\":\"Asia/Shanghai\",\"SHB\":\"Asia/Tokyo\",\"SHC\":\"Africa/Addis_Ababa\",\"SHD\":\"America/New_York\",\"SHE\":\"Asia/Shanghai\",\"SHF\":\"Asia/Shanghai\",\"SHG\":\"America/Anchorage\",\"SHH\":\"America/Anchorage\",\"SHI\":\"Asia/Tokyo\",\"SHJ\":\"Asia/Dubai\",\"SHK\":\"Africa/Maseru\",\"SHL\":\"Asia/Kolkata\",\"SHM\":\"Asia/Tokyo\",\"SHN\":\"America/Los_Angeles\",\"SHO\":\"Africa/Mbabane\",\"SHP\":\"Asia/Shanghai\",\"SHQ\":\"Australia/Brisbane\",\"SHR\":\"America/Denver\",\"SHS\":\"Asia/Shanghai\",\"SHT\":\"Australia/Sydney\",\"SHU\":\"Australia/Darwin\",\"SHV\":\"America/Chicago\",\"SHW\":\"Asia/Riyadh\",\"SHX\":\"America/Anchorage\",\"SHY\":\"Africa/Dar_es_Salaam\",\"SHZ\":\"Africa/Maseru\",\"SIA\":\"Asia/Shanghai\",\"SIB\":\"Africa/Brazzaville\",\"SIC\":\"America/Panama\",\"SID\":\"Atlantic/Cape_Verde\",\"SIE\":\"Europe/Lisbon\",\"SIF\":\"Asia/Kathmandu\",\"SIG\":\"America/Puerto_Rico\",\"SIH\":\"Asia/Kathmandu\",\"SII\":\"Africa/Casablanca\",\"SIJ\":\"Atlantic/Reykjavik\",\"SIK\":\"America/Chicago\",\"SIL\":\"Pacific/Port_Moresby\",\"SIM\":\"Pacific/Port_Moresby\",\"SIN\":\"Asia/Singapore\",\"SIO\":\"Australia/Hobart\",\"SIP\":\"Europe/Simferopol\",\"SIQ\":\"Asia/Jakarta\",\"SIR\":\"Europe/Zurich\",\"SIS\":\"Africa/Johannesburg\",\"SIT\":\"America/Anchorage\",\"SIU\":\"America/Managua\",\"SIV\":\"America/Indiana/Indianapolis\",\"SIX\":\"Australia/Sydney\",\"SIY\":\"America/Los_Angeles\",\"SIZ\":\"Pacific/Port_Moresby\",\"SJA\":\"America/Lima\",\"SJB\":\"America/La_Paz\",\"SJC\":\"America/Los_Angeles\",\"SJD\":\"America/Mazatlan\",\"SJE\":\"America/Bogota\",\"SJF\":\"America/St_Thomas\",\"SJG\":\"America/Bogota\",\"SJH\":\"America/Bogota\",\"SJI\":\"Asia/Manila\",\"SJJ\":\"Europe/Sarajevo\",\"SJK\":\"America/Sao_Paulo\",\"SJL\":\"America/Porto_Velho\",\"SJM\":\"America/Santo_Domingo\",\"SJN\":\"America/Phoenix\",\"SJO\":\"America/Costa_Rica\",\"SJP\":\"America/Sao_Paulo\",\"SJQ\":\"Africa/Lusaka\",\"SJR\":\"America/Bogota\",\"SJS\":\"America/La_Paz\",\"SJT\":\"America/Chicago\",\"SJU\":\"America/Puerto_Rico\",\"SJV\":\"America/La_Paz\",\"SJW\":\"Asia/Shanghai\",\"SJX\":\"America/Belize\",\"SJY\":\"Europe/Helsinki\",\"SJZ\":\"Atlantic/Azores\",\"SKA\":\"America/Los_Angeles\",\"SKB\":\"America/St_Kitts\",\"SKC\":\"Pacific/Port_Moresby\",\"SKD\":\"Asia/Tashkent\",\"SKE\":\"Europe/Oslo\",\"SKF\":\"America/Chicago\",\"SKG\":\"Europe/Athens\",\"SKH\":\"Asia/Kathmandu\",\"SKI\":\"Africa/Algiers\",\"SKJ\":\"America/Anchorage\",\"SKK\":\"America/Anchorage\",\"SKL\":\"Europe/London\",\"SKM\":\"America/Guyana\",\"SKN\":\"Europe/Oslo\",\"SKO\":\"Africa/Lagos\",\"SKP\":\"Europe/Skopje\",\"SKQ\":\"Africa/Maseru\",\"SKR\":\"Africa/Addis_Ababa\",\"SKS\":\"Europe/Copenhagen\",\"SKT\":\"Asia/Karachi\",\"SKU\":\"Europe/Athens\",\"SKV\":\"Africa/Cairo\",\"SKW\":\"America/Anchorage\",\"SKX\":\"Europe/Moscow\",\"SKY\":\"America/New_York\",\"SKZ\":\"Asia/Karachi\",\"SLA\":\"America/Argentina/Buenos_Aires\",\"SLB\":\"America/Chicago\",\"SLC\":\"America/Denver\",\"SLD\":\"Europe/Bratislava\",\"SLE\":\"America/Los_Angeles\",\"SLF\":\"Asia/Riyadh\",\"SLG\":\"America/Chicago\",\"SLH\":\"Pacific/Efate\",\"SLI\":\"Africa/Lusaka\",\"SLJ\":\"Australia/Perth\",\"SLK\":\"America/New_York\",\"SLL\":\"Asia/Muscat\",\"SLM\":\"Europe/Madrid\",\"SLN\":\"America/Chicago\",\"SLO\":\"America/Chicago\",\"SLP\":\"America/Mexico_City\",\"SLQ\":\"America/Anchorage\",\"SLR\":\"America/Chicago\",\"SLS\":\"Europe/Sofia\",\"SLT\":\"America/Denver\",\"SLU\":\"America/St_Lucia\",\"SLV\":\"Asia/Kolkata\",\"SLW\":\"America/Mexico_City\",\"SLX\":\"America/Grand_Turk\",\"SLY\":\"Asia/Yekaterinburg\",\"SLZ\":\"America/Belem\",\"SMA\":\"Atlantic/Azores\",\"SMB\":\"America/Santiago\",\"SMC\":\"America/Bogota\",\"SMD\":\"America/Indiana/Indianapolis\",\"SME\":\"America/New_York\",\"SMF\":\"America/Los_Angeles\",\"SMG\":\"America/Lima\",\"SMH\":\"Pacific/Port_Moresby\",\"SMI\":\"Europe/Athens\",\"SMJ\":\"Pacific/Port_Moresby\",\"SMK\":\"America/Anchorage\",\"SML\":\"America/Nassau\",\"SMM\":\"Asia/Kuala_Lumpur\",\"SMN\":\"America/Denver\",\"SMO\":\"America/Los_Angeles\",\"SMP\":\"Pacific/Port_Moresby\",\"SMQ\":\"Asia/Jakarta\",\"SMR\":\"America/Bogota\",\"SMS\":\"Indian/Antananarivo\",\"SMT\":\"America/Campo_Grande\",\"SMU\":\"America/Anchorage\",\"SMV\":\"Europe/Zurich\",\"SMW\":\"Africa/Casablanca\",\"SMX\":\"America/Los_Angeles\",\"SMY\":\"Africa/Dakar\",\"SMZ\":\"America/Paramaribo\",\"SNA\":\"America/Los_Angeles\",\"SNB\":\"Australia/Darwin\",\"SNC\":\"America/Guayaquil\",\"SND\":\"Asia/Vientiane\",\"SNE\":\"Atlantic/Cape_Verde\",\"SNF\":\"America/Caracas\",\"SNG\":\"America/La_Paz\",\"SNH\":\"Australia/Brisbane\",\"SNI\":\"Africa/Monrovia\",\"SNJ\":\"America/Havana\",\"SNK\":\"America/Chicago\",\"SNL\":\"America/Chicago\",\"SNM\":\"America/La_Paz\",\"SNN\":\"Europe/Dublin\",\"SNO\":\"Asia/Bangkok\",\"SNP\":\"America/Anchorage\",\"SNQ\":\"America/Tijuana\",\"SNR\":\"Europe/Paris\",\"SNS\":\"America/Los_Angeles\",\"SNT\":\"America/Bogota\",\"SNU\":\"America/Havana\",\"SNV\":\"America/Caracas\",\"SNW\":\"Asia/Yangon\",\"SNX\":\"Asia/Tehran\",\"SNY\":\"America/Denver\",\"SNZ\":\"America/Belem\",\"SOA\":\"Asia/Ho_Chi_Minh\",\"SOB\":\"Europe/Budapest\",\"SOC\":\"Asia/Jakarta\",\"SOD\":\"America/Sao_Paulo\",\"SOE\":\"Africa/Brazzaville\",\"SOF\":\"Europe/Sofia\",\"SOG\":\"Europe/Oslo\",\"SOH\":\"America/Bogota\",\"SOI\":\"Australia/Brisbane\",\"SOJ\":\"Europe/Oslo\",\"SOK\":\"Africa/Maseru\",\"SOL\":\"America/Anchorage\",\"SOM\":\"America/Caracas\",\"SON\":\"Pacific/Efate\",\"SOO\":\"Europe/Stockholm\",\"SOP\":\"America/New_York\",\"SOQ\":\"Asia/Jayapura\",\"SOR\":\"Asia/Damascus\",\"SOT\":\"Europe/Helsinki\",\"SOU\":\"Europe/London\",\"SOV\":\"America/Anchorage\",\"SOW\":\"America/Phoenix\",\"SOX\":\"America/Bogota\",\"SOY\":\"Europe/London\",\"SOZ\":\"Europe/Paris\",\"SPA\":\"America/New_York\",\"SPB\":\"America/St_Thomas\",\"SPC\":\"Atlantic/Canary\",\"SPD\":\"Asia/Dhaka\",\"SPE\":\"Asia/Kuala_Lumpur\",\"SPF\":\"America/Denver\",\"SPG\":\"America/New_York\",\"SPH\":\"Pacific/Port_Moresby\",\"SPI\":\"America/Chicago\",\"SPJ\":\"Europe/Athens\",\"SPM\":\"Europe/Berlin\",\"SPN\":\"Pacific/Saipan\",\"SPO\":\"Europe/Madrid\",\"SPP\":\"Africa/Luanda\",\"SPQ\":\"America/Los_Angeles\",\"SPR\":\"America/Belize\",\"SPS\":\"America/Chicago\",\"SPT\":\"Asia/Kuala_Lumpur\",\"SPU\":\"Europe/Zagreb\",\"SPV\":\"Pacific/Port_Moresby\",\"SPW\":\"America/Chicago\",\"SPX\":\"Africa/Cairo\",\"SPY\":\"Africa/Abidjan\",\"SPZ\":\"America/Chicago\",\"SQA\":\"America/Los_Angeles\",\"SQB\":\"America/Bogota\",\"SQC\":\"Australia/Perth\",\"SQD\":\"Asia/Shanghai\",\"SQE\":\"America/Bogota\",\"SQF\":\"America/Bogota\",\"SQG\":\"Asia/Jakarta\",\"SQH\":\"Asia/Ho_Chi_Minh\",\"SQI\":\"America/Chicago\",\"SQJ\":\"Asia/Shanghai\",\"SQK\":\"Africa/Cairo\",\"SQL\":\"America/Los_Angeles\",\"SQM\":\"America/Sao_Paulo\",\"SQN\":\"Asia/Jayapura\",\"SQO\":\"Europe/Stockholm\",\"SQP\":\"Australia/Brisbane\",\"SQQ\":\"Europe/Vilnius\",\"SQR\":\"Asia/Jayapura\",\"SQS\":\"America/Belize\",\"SQT\":\"Pacific/Port_Moresby\",\"SQU\":\"America/Lima\",\"SQV\":\"America/Los_Angeles\",\"SQW\":\"Europe/Copenhagen\",\"SQX\":\"America/Sao_Paulo\",\"SQY\":\"America/Sao_Paulo\",\"SQZ\":\"Europe/London\",\"SRA\":\"America/Sao_Paulo\",\"SRB\":\"America/La_Paz\",\"SRC\":\"America/Chicago\",\"SRD\":\"America/La_Paz\",\"SRE\":\"America/La_Paz\",\"SRF\":\"America/Los_Angeles\",\"SRG\":\"Asia/Jakarta\",\"SRH\":\"Africa/Ndjamena\",\"SRI\":\"Asia/Makassar\",\"SRJ\":\"America/La_Paz\",\"SRK\":\"America/Thule\",\"SRL\":\"America/Mazatlan\",\"SRM\":\"Australia/Brisbane\",\"SRN\":\"Australia/Hobart\",\"SRO\":\"America/Bogota\",\"SRP\":\"Europe/Oslo\",\"SRQ\":\"America/New_York\",\"SRS\":\"America/Bogota\",\"SRT\":\"Africa/Kampala\",\"SRU\":\"America/Los_Angeles\",\"SRV\":\"America/Anchorage\",\"SRW\":\"America/New_York\",\"SRX\":\"Africa/Tripoli\",\"SRY\":\"Asia/Tehran\",\"SRZ\":\"America/La_Paz\",\"SSA\":\"America/Belem\",\"SSB\":\"America/St_Thomas\",\"SSC\":\"America/New_York\",\"SSD\":\"America/Bogota\",\"SSE\":\"Asia/Kolkata\",\"SSF\":\"America/Chicago\",\"SSG\":\"Africa/Malabo\",\"SSH\":\"Africa/Cairo\",\"SSI\":\"America/New_York\",\"SSJ\":\"Europe/Oslo\",\"SSK\":\"Australia/Perth\",\"SSL\":\"America/Bogota\",\"SSM\":\"America/New_York\",\"SSN\":\"Asia/Seoul\",\"SSO\":\"America/Sao_Paulo\",\"SSP\":\"Australia/Brisbane\",\"SSQ\":\"America/Toronto\",\"SSR\":\"Pacific/Efate\",\"SSS\":\"Pacific/Port_Moresby\",\"SST\":\"America/Argentina/Buenos_Aires\",\"SSU\":\"America/New_York\",\"SSV\":\"Asia/Manila\",\"SSW\":\"America/Los_Angeles\",\"SSX\":\"Africa/Johannesburg\",\"SSY\":\"Africa/Luanda\",\"SSZ\":\"America/Sao_Paulo\",\"STA\":\"Europe/Copenhagen\",\"STB\":\"America/Caracas\",\"STC\":\"America/Chicago\",\"STD\":\"America/Caracas\",\"STE\":\"America/Chicago\",\"STF\":\"Australia/Brisbane\",\"STG\":\"America/Anchorage\",\"STH\":\"Australia/Brisbane\",\"STI\":\"America/Santo_Domingo\",\"STJ\":\"America/Chicago\",\"STK\":\"America/Denver\",\"STL\":\"America/Chicago\",\"STM\":\"America/Belem\",\"STN\":\"Europe/London\",\"STP\":\"America/Chicago\",\"STQ\":\"America/New_York\",\"STR\":\"Europe/Berlin\",\"STS\":\"America/Los_Angeles\",\"STT\":\"America/St_Thomas\",\"STV\":\"Asia/Kolkata\",\"STW\":\"Europe/Moscow\",\"STX\":\"America/St_Thomas\",\"STY\":\"America/Montevideo\",\"STZ\":\"America/Campo_Grande\",\"SUA\":\"America/New_York\",\"SUB\":\"Asia/Jakarta\",\"SUC\":\"America/Denver\",\"SUD\":\"America/Chicago\",\"SUE\":\"America/Chicago\",\"SUF\":\"Europe/Rome\",\"SUG\":\"Asia/Manila\",\"SUH\":\"Asia/Muscat\",\"SUI\":\"Asia/Tbilisi\",\"SUJ\":\"Europe/Bucharest\",\"SUK\":\"Asia/Vladivostok\",\"SUL\":\"Asia/Karachi\",\"SUM\":\"America/New_York\",\"SUN\":\"America/Denver\",\"SUO\":\"America/Los_Angeles\",\"SUP\":\"Asia/Jakarta\",\"SUQ\":\"America/Guayaquil\",\"SUR\":\"America/Toronto\",\"SUS\":\"America/Chicago\",\"SUT\":\"Africa/Dar_es_Salaam\",\"SUU\":\"America/Los_Angeles\",\"SUV\":\"Pacific/Fiji\",\"SUW\":\"America/Chicago\",\"SUX\":\"America/Chicago\",\"SUY\":\"Asia/Yakutsk\",\"SUZ\":\"Pacific/Port_Moresby\",\"SVA\":\"America/Anchorage\",\"SVB\":\"Indian/Antananarivo\",\"SVC\":\"America/Denver\",\"SVD\":\"America/St_Vincent\",\"SVE\":\"America/Los_Angeles\",\"SVF\":\"Africa/Porto-Novo\",\"SVG\":\"Europe/Oslo\",\"SVH\":\"America/New_York\",\"SVI\":\"America/Bogota\",\"SVJ\":\"Europe/Oslo\",\"SVK\":\"America/Belize\",\"SVL\":\"Europe/Helsinki\",\"SVM\":\"Australia/Brisbane\",\"SVN\":\"America/New_York\",\"SVO\":\"Europe/Moscow\",\"SVP\":\"Africa/Luanda\",\"SVQ\":\"Europe/Madrid\",\"SVR\":\"America/Thule\",\"SVS\":\"America/Anchorage\",\"SVT\":\"Africa/Gaborone\",\"SVU\":\"Pacific/Fiji\",\"SVV\":\"America/Caracas\",\"SVW\":\"America/Anchorage\",\"SVX\":\"Asia/Yekaterinburg\",\"SVY\":\"Pacific/Guadalcanal\",\"SVZ\":\"America/Caracas\",\"SWA\":\"Asia/Shanghai\",\"SWB\":\"Australia/Perth\",\"SWC\":\"Australia/Sydney\",\"SWD\":\"America/Anchorage\",\"SWE\":\"Pacific/Port_Moresby\",\"SWF\":\"America/New_York\",\"SWG\":\"Pacific/Port_Moresby\",\"SWH\":\"Australia/Sydney\",\"SWI\":\"Europe/London\",\"SWJ\":\"Pacific/Efate\",\"SWL\":\"Asia/Manila\",\"SWM\":\"America/Campo_Grande\",\"SWN\":\"Asia/Karachi\",\"SWO\":\"America/Chicago\",\"SWP\":\"Africa/Windhoek\",\"SWQ\":\"Asia/Makassar\",\"SWR\":\"Pacific/Port_Moresby\",\"SWS\":\"Europe/London\",\"SWT\":\"Asia/Omsk\",\"SWU\":\"Asia/Seoul\",\"SWV\":\"Asia/Magadan\",\"SWW\":\"America/Chicago\",\"SWX\":\"Africa/Gaborone\",\"SWY\":\"Asia/Kuala_Lumpur\",\"SWZ\":\"Australia/Sydney\",\"SXA\":\"Pacific/Port_Moresby\",\"SXB\":\"Europe/Paris\",\"SXD\":\"Europe/Paris\",\"SXE\":\"Australia/Sydney\",\"SXF\":\"Europe/Berlin\",\"SXG\":\"Africa/Lusaka\",\"SXH\":\"Pacific/Port_Moresby\",\"SXI\":\"Asia/Tehran\",\"SXJ\":\"Asia/Shanghai\",\"SXK\":\"Asia/Jayapura\",\"SXL\":\"Europe/Dublin\",\"SXM\":\"America/Curacao\",\"SXN\":\"Africa/Gaborone\",\"SXO\":\"America/Campo_Grande\",\"SXP\":\"America/Anchorage\",\"SXQ\":\"America/Anchorage\",\"SXR\":\"Asia/Kolkata\",\"SXS\":\"Asia/Kuala_Lumpur\",\"SXT\":\"Asia/Kuala_Lumpur\",\"SXU\":\"Africa/Addis_Ababa\",\"SXV\":\"Asia/Kolkata\",\"SXW\":\"Pacific/Port_Moresby\",\"SXX\":\"America/Belem\",\"SXY\":\"America/New_York\",\"SXZ\":\"Europe/Istanbul\",\"SYA\":\"America/Adak\",\"SYB\":\"America/Anchorage\",\"SYC\":\"America/Lima\",\"SYD\":\"Australia/Sydney\",\"SYE\":\"Asia/Aden\",\"SYF\":\"America/Vancouver\",\"SYG\":\"Europe/Oslo\",\"SYI\":\"America/Chicago\",\"SYJ\":\"Asia/Tehran\",\"SYK\":\"Atlantic/Reykjavik\",\"SYL\":\"America/Los_Angeles\",\"SYM\":\"Asia/Shanghai\",\"SYN\":\"America/Chicago\",\"SYO\":\"Asia/Tokyo\",\"SYP\":\"America/Panama\",\"SYQ\":\"America/Costa_Rica\",\"SYR\":\"America/New_York\",\"SYS\":\"Asia/Yakutsk\",\"SYT\":\"Europe/Paris\",\"SYU\":\"Australia/Brisbane\",\"SYV\":\"America/New_York\",\"SYW\":\"Asia/Karachi\",\"SYX\":\"Asia/Shanghai\",\"SYY\":\"Europe/London\",\"SYZ\":\"Asia/Tehran\",\"SZA\":\"Africa/Luanda\",\"SZB\":\"Asia/Kuala_Lumpur\",\"SZC\":\"America/Costa_Rica\",\"SZD\":\"Europe/London\",\"SZE\":\"Africa/Addis_Ababa\",\"SZF\":\"Europe/Istanbul\",\"SZG\":\"Europe/Vienna\",\"SZH\":\"Asia/Makassar\",\"SZI\":\"Asia/Almaty\",\"SZJ\":\"America/Havana\",\"SZK\":\"Africa/Johannesburg\",\"SZL\":\"America/Chicago\",\"SZM\":\"Africa/Windhoek\",\"SZN\":\"America/Los_Angeles\",\"SZO\":\"Asia/Shanghai\",\"SZP\":\"America/Los_Angeles\",\"SZQ\":\"America/Argentina/Buenos_Aires\",\"SZR\":\"Europe/Sofia\",\"SZS\":\"Pacific/Auckland\",\"SZT\":\"America/Mexico_City\",\"SZU\":\"Africa/Bamako\",\"SZV\":\"Asia/Shanghai\",\"SZW\":\"Europe/Berlin\",\"SZX\":\"Asia/Shanghai\",\"SZY\":\"Europe/Warsaw\",\"SZZ\":\"Europe/Warsaw\",\"TAA\":\"Pacific/Guadalcanal\",\"TAB\":\"America/Port_of_Spain\",\"TAC\":\"Asia/Manila\",\"TAD\":\"America/Denver\",\"TAE\":\"Asia/Seoul\",\"TAF\":\"Africa/Algiers\",\"TAG\":\"Asia/Manila\",\"TAH\":\"Pacific/Efate\",\"TAI\":\"Asia/Aden\",\"TAJ\":\"Pacific/Port_Moresby\",\"TAK\":\"Asia/Tokyo\",\"TAL\":\"America/Anchorage\",\"TAM\":\"America/Mexico_City\",\"TAN\":\"Australia/Brisbane\",\"TAO\":\"Asia/Shanghai\",\"TAP\":\"America/Mexico_City\",\"TAQ\":\"Australia/Adelaide\",\"TAR\":\"Europe/Rome\",\"TAS\":\"Asia/Tashkent\",\"TAT\":\"Europe/Bratislava\",\"TAU\":\"America/Bogota\",\"TAV\":\"Pacific/Pago_Pago\",\"TAW\":\"America/Montevideo\",\"TAX\":\"Asia/Jayapura\",\"TAY\":\"Europe/Tallinn\",\"TAZ\":\"Asia/Ashgabat\",\"TBA\":\"Pacific/Port_Moresby\",\"TBB\":\"Asia/Ho_Chi_Minh\",\"TBC\":\"America/Phoenix\",\"TBD\":\"America/Bogota\",\"TBE\":\"Pacific/Port_Moresby\",\"TBF\":\"Pacific/Tarawa\",\"TBG\":\"Pacific/Port_Moresby\",\"TBH\":\"Asia/Manila\",\"TBI\":\"America/Nassau\",\"TBJ\":\"Africa/Tunis\",\"TBK\":\"Australia/Darwin\",\"TBL\":\"Australia/Perth\",\"TBM\":\"Asia/Pontianak\",\"TBN\":\"America/Chicago\",\"TBO\":\"Africa/Dar_es_Salaam\",\"TBP\":\"America/Lima\",\"TBR\":\"America/New_York\",\"TBS\":\"Asia/Tbilisi\",\"TBT\":\"America/Rio_Branco\",\"TBU\":\"Pacific/Tongatapu\",\"TBV\":\"Pacific/Majuro\",\"TBW\":\"Europe/Moscow\",\"TBY\":\"Africa/Gaborone\",\"TBZ\":\"Asia/Tehran\",\"TCA\":\"Australia/Darwin\",\"TCB\":\"America/Nassau\",\"TCC\":\"America/Denver\",\"TCD\":\"America/Bogota\",\"TCE\":\"Europe/Bucharest\",\"TCF\":\"America/Tegucigalpa\",\"TCG\":\"Asia/Shanghai\",\"TCH\":\"Africa/Libreville\",\"TCJ\":\"Pacific/Port_Moresby\",\"TCK\":\"Pacific/Port_Moresby\",\"TCL\":\"America/Chicago\",\"TCM\":\"America/Los_Angeles\",\"TCN\":\"America/Mexico_City\",\"TCO\":\"America/Bogota\",\"TCP\":\"Africa/Cairo\",\"TCQ\":\"America/Lima\",\"TCR\":\"Asia/Kolkata\",\"TCS\":\"America/Denver\",\"TCT\":\"America/Anchorage\",\"TCU\":\"Africa/Johannesburg\",\"TCV\":\"Africa/Maputo\",\"TCW\":\"Australia/Sydney\",\"TCX\":\"Asia/Tehran\",\"TCY\":\"Africa/Windhoek\",\"TCZ\":\"Asia/Shanghai\",\"TDA\":\"America/Bogota\",\"TDB\":\"Pacific/Port_Moresby\",\"TDD\":\"America/La_Paz\",\"TDG\":\"Asia/Manila\",\"TDJ\":\"Africa/Djibouti\",\"TDK\":\"Asia/Almaty\",\"TDL\":\"America/Argentina/Buenos_Aires\",\"TDN\":\"Australia/Perth\",\"TDO\":\"America/Los_Angeles\",\"TDR\":\"Australia/Brisbane\",\"TDT\":\"Africa/Johannesburg\",\"TDV\":\"Indian/Antananarivo\",\"TDW\":\"America/Chicago\",\"TDX\":\"Asia/Bangkok\",\"TDZ\":\"America/New_York\",\"TEA\":\"America/Tegucigalpa\",\"TEB\":\"America/New_York\",\"TEC\":\"America/Sao_Paulo\",\"TED\":\"Europe/Copenhagen\",\"TEE\":\"Africa/Algiers\",\"TEF\":\"Australia/Perth\",\"TEG\":\"Africa/Ouagadougou\",\"TEH\":\"America/Anchorage\",\"TEI\":\"Asia/Kolkata\",\"TEK\":\"America/Anchorage\",\"TEL\":\"Asia/Kuala_Lumpur\",\"TEM\":\"Australia/Sydney\",\"TEN\":\"Asia/Shanghai\",\"TEO\":\"Pacific/Port_Moresby\",\"TEP\":\"Pacific/Port_Moresby\",\"TEQ\":\"Europe/Istanbul\",\"TER\":\"Atlantic/Azores\",\"TES\":\"Africa/Asmara\",\"TET\":\"Africa/Maputo\",\"TEU\":\"Pacific/Auckland\",\"TEV\":\"Europe/Madrid\",\"TEX\":\"America/Denver\",\"TEY\":\"Atlantic/Reykjavik\",\"TEZ\":\"Asia/Kolkata\",\"TFB\":\"Pacific/Port_Moresby\",\"TFF\":\"America/Porto_Velho\",\"TFI\":\"Pacific/Port_Moresby\",\"TFL\":\"America/Sao_Paulo\",\"TFM\":\"Pacific/Port_Moresby\",\"TFN\":\"Atlantic/Canary\",\"TFR\":\"Africa/Cairo\",\"TFS\":\"Atlantic/Canary\",\"TFT\":\"Asia/Karachi\",\"TFU\":\"Asia/Shanghai\",\"TFY\":\"Africa/Casablanca\",\"TGA\":\"Asia/Singapore\",\"TGB\":\"Asia/Manila\",\"TGC\":\"Asia/Kuala_Lumpur\",\"TGD\":\"Europe/Podgorica\",\"TGE\":\"America/Chicago\",\"TGF\":\"Europe/Paris\",\"TGG\":\"Asia/Kuala_Lumpur\",\"TGH\":\"Pacific/Efate\",\"TGI\":\"America/Lima\",\"TGJ\":\"Pacific/Noumea\",\"TGK\":\"Europe/Moscow\",\"TGL\":\"Pacific/Port_Moresby\",\"TGM\":\"Europe/Bucharest\",\"TGN\":\"Australia/Sydney\",\"TGO\":\"Asia/Shanghai\",\"TGP\":\"Asia/Krasnoyarsk\",\"TGQ\":\"America/Campo_Grande\",\"TGR\":\"Africa/Algiers\",\"TGS\":\"Africa/Maputo\",\"TGT\":\"Africa/Dar_es_Salaam\",\"TGU\":\"America/Tegucigalpa\",\"TGV\":\"Europe/Sofia\",\"TGZ\":\"America/Mexico_City\",\"THA\":\"America/Chicago\",\"THB\":\"Africa/Maseru\",\"THC\":\"Africa/Monrovia\",\"THD\":\"Asia/Ho_Chi_Minh\",\"THE\":\"America/Belem\",\"THG\":\"Australia/Brisbane\",\"THH\":\"Pacific/Auckland\",\"THI\":\"Africa/Nouakchott\",\"THK\":\"Asia/Vientiane\",\"THL\":\"Asia/Yangon\",\"THM\":\"America/Chicago\",\"THN\":\"Europe/Stockholm\",\"THO\":\"Atlantic/Reykjavik\",\"THP\":\"America/Denver\",\"THQ\":\"Asia/Shanghai\",\"THR\":\"Asia/Tehran\",\"THS\":\"Asia/Bangkok\",\"THT\":\"Africa/Nouakchott\",\"THU\":\"America/Thule\",\"THV\":\"America/New_York\",\"THW\":\"Asia/Colombo\",\"THX\":\"Asia/Krasnoyarsk\",\"THY\":\"Africa/Johannesburg\",\"THZ\":\"Africa/Niamey\",\"TIA\":\"Europe/Tirane\",\"TIB\":\"America/Bogota\",\"TIC\":\"Pacific/Majuro\",\"TID\":\"Africa/Algiers\",\"TIE\":\"Africa/Addis_Ababa\",\"TIF\":\"Asia/Riyadh\",\"TIG\":\"Pacific/Port_Moresby\",\"TIH\":\"Pacific/Tahiti\",\"TII\":\"Asia/Kabul\",\"TIJ\":\"America/Tijuana\",\"TIK\":\"America/Chicago\",\"TIM\":\"Asia/Jayapura\",\"TIN\":\"Africa/Algiers\",\"TIO\":\"Asia/Yangon\",\"TIP\":\"Africa/Tripoli\",\"TIQ\":\"Pacific/Saipan\",\"TIR\":\"Asia/Kolkata\",\"TIS\":\"Australia/Brisbane\",\"TIU\":\"Pacific/Auckland\",\"TIV\":\"Europe/Podgorica\",\"TIW\":\"America/Los_Angeles\",\"TIX\":\"America/New_York\",\"TIY\":\"Africa/Nouakchott\",\"TIZ\":\"Pacific/Port_Moresby\",\"TJA\":\"America/La_Paz\",\"TJB\":\"Asia/Jakarta\",\"TJC\":\"America/Panama\",\"TJG\":\"Asia/Makassar\",\"TJH\":\"Asia/Tokyo\",\"TJI\":\"America/Tegucigalpa\",\"TJK\":\"Europe/Istanbul\",\"TJL\":\"America/Campo_Grande\",\"TJM\":\"Asia/Yekaterinburg\",\"TJN\":\"Pacific/Tahiti\",\"TJQ\":\"Asia/Jakarta\",\"TJS\":\"Asia/Makassar\",\"TJU\":\"Asia/Dushanbe\",\"TJV\":\"Asia/Kolkata\",\"TKA\":\"America/Anchorage\",\"TKB\":\"Pacific/Port_Moresby\",\"TKC\":\"Africa/Douala\",\"TKD\":\"Africa/Accra\",\"TKE\":\"America/Anchorage\",\"TKF\":\"America/Los_Angeles\",\"TKG\":\"Asia/Jakarta\",\"TKH\":\"Asia/Bangkok\",\"TKI\":\"America/Anchorage\",\"TKJ\":\"America/Anchorage\",\"TKK\":\"Pacific/Chuuk\",\"TKL\":\"America/Anchorage\",\"TKM\":\"America/Guatemala\",\"TKN\":\"Asia/Tokyo\",\"TKO\":\"Africa/Maseru\",\"TKP\":\"Pacific/Tahiti\",\"TKQ\":\"Africa/Dar_es_Salaam\",\"TKR\":\"Asia/Dhaka\",\"TKS\":\"Asia/Tokyo\",\"TKT\":\"Asia/Bangkok\",\"TKU\":\"Europe/Helsinki\",\"TKV\":\"Pacific/Tahiti\",\"TKW\":\"Pacific/Port_Moresby\",\"TKX\":\"Pacific/Tahiti\",\"TKY\":\"Australia/Perth\",\"TKZ\":\"Pacific/Auckland\",\"TLA\":\"America/Anchorage\",\"TLB\":\"Asia/Karachi\",\"TLC\":\"America/Mexico_City\",\"TLD\":\"Africa/Gaborone\",\"TLE\":\"Indian/Antananarivo\",\"TLF\":\"America/Anchorage\",\"TLG\":\"Pacific/Guadalcanal\",\"TLH\":\"America/New_York\",\"TLI\":\"Asia/Makassar\",\"TLJ\":\"America/Anchorage\",\"TLK\":\"Asia/Yakutsk\",\"TLL\":\"Europe/Tallinn\",\"TLM\":\"Africa/Algiers\",\"TLN\":\"Europe/Paris\",\"TLO\":\"Pacific/Port_Moresby\",\"TLP\":\"Pacific/Port_Moresby\",\"TLQ\":\"Asia/Shanghai\",\"TLR\":\"America/Los_Angeles\",\"TLS\":\"Europe/Paris\",\"TLT\":\"America/Anchorage\",\"TLU\":\"America/Bogota\",\"TLV\":\"Asia/Jerusalem\",\"TLW\":\"Pacific/Port_Moresby\",\"TLX\":\"America/Santiago\",\"TLY\":\"Asia/Vladivostok\",\"TLZ\":\"America/Sao_Paulo\",\"TMA\":\"America/New_York\",\"TMB\":\"America/New_York\",\"TMC\":\"Asia/Makassar\",\"TMD\":\"Africa/Nouakchott\",\"TME\":\"America/Bogota\",\"TMF\":\"Indian/Maldives\",\"TMG\":\"Asia/Kuala_Lumpur\",\"TMH\":\"Asia/Jayapura\",\"TMI\":\"Asia/Kathmandu\",\"TMJ\":\"Asia/Tashkent\",\"TML\":\"Africa/Accra\",\"TMM\":\"Indian/Antananarivo\",\"TMN\":\"Pacific/Tarawa\",\"TMO\":\"America/Caracas\",\"TMP\":\"Europe/Helsinki\",\"TMQ\":\"Africa/Ouagadougou\",\"TMR\":\"Africa/Algiers\",\"TMS\":\"Africa/Sao_Tome\",\"TMT\":\"America/Belem\",\"TMU\":\"America/Costa_Rica\",\"TMW\":\"Australia/Sydney\",\"TMX\":\"Africa/Algiers\",\"TMY\":\"Asia/Jayapura\",\"TMZ\":\"Pacific/Auckland\",\"TNA\":\"Asia/Shanghai\",\"TNB\":\"Asia/Makassar\",\"TNC\":\"America/Anchorage\",\"TND\":\"America/Havana\",\"TNE\":\"Asia/Tokyo\",\"TNF\":\"Europe/Paris\",\"TNG\":\"Africa/Casablanca\",\"TNH\":\"Asia/Shanghai\",\"TNI\":\"Asia/Kolkata\",\"TNJ\":\"Asia/Jakarta\",\"TNK\":\"America/Anchorage\",\"TNL\":\"Europe/Kiev\",\"TNM\":\"Antarctica/Palmer\",\"TNN\":\"Asia/Taipei\",\"TNO\":\"America/Costa_Rica\",\"TNP\":\"America/Los_Angeles\",\"TNQ\":\"Pacific/Kiritimati\",\"TNR\":\"Indian/Antananarivo\",\"TNS\":\"America/Edmonton\",\"TNT\":\"America/New_York\",\"TNU\":\"America/Chicago\",\"TNV\":\"Pacific/Kiritimati\",\"TNW\":\"America/Guayaquil\",\"TNX\":\"Asia/Phnom_Penh\",\"TNZ\":\"Asia/Ulaanbaatar\",\"TOA\":\"America/Los_Angeles\",\"TOB\":\"Africa/Tripoli\",\"TOC\":\"America/New_York\",\"TOD\":\"Asia/Kuala_Lumpur\",\"TOE\":\"Africa/Tunis\",\"TOF\":\"Asia/Tomsk\",\"TOG\":\"America/Anchorage\",\"TOH\":\"Pacific/Efate\",\"TOI\":\"America/Chicago\",\"TOJ\":\"Europe/Madrid\",\"TOK\":\"Pacific/Bougainville\",\"TOL\":\"America/New_York\",\"TOM\":\"Africa/Bamako\",\"TON\":\"Pacific/Bougainville\",\"TOO\":\"America/Costa_Rica\",\"TOP\":\"America/Chicago\",\"TOQ\":\"America/Santiago\",\"TOR\":\"America/Denver\",\"TOS\":\"Europe/Oslo\",\"TOT\":\"America/Paramaribo\",\"TOU\":\"Pacific/Noumea\",\"TOV\":\"America/Tortola\",\"TOW\":\"America/Sao_Paulo\",\"TOX\":\"Asia/Yekaterinburg\",\"TOY\":\"Asia/Tokyo\",\"TOZ\":\"Africa/Abidjan\",\"TPA\":\"America/New_York\",\"TPC\":\"America/Guayaquil\",\"TPE\":\"Asia/Taipei\",\"TPF\":\"America/New_York\",\"TPG\":\"Asia/Kuala_Lumpur\",\"TPH\":\"America/Los_Angeles\",\"TPI\":\"Pacific/Port_Moresby\",\"TPJ\":\"Asia/Kathmandu\",\"TPK\":\"Asia/Jakarta\",\"TPL\":\"America/Chicago\",\"TPN\":\"America/Guayaquil\",\"TPO\":\"America/Anchorage\",\"TPP\":\"America/Lima\",\"TPQ\":\"America/Mazatlan\",\"TPR\":\"Australia/Perth\",\"TPS\":\"Europe/Rome\",\"TPT\":\"Africa/Monrovia\",\"TPU\":\"Asia/Kathmandu\",\"TPX\":\"Pacific/Tahiti\",\"TQA\":\"America/Godthab\",\"TQD\":\"Asia/Baghdad\",\"TQI\":\"America/Godthab\",\"TQL\":\"Asia/Yekaterinburg\",\"TQN\":\"Asia/Kabul\",\"TQP\":\"Australia/Brisbane\",\"TQQ\":\"Asia/Makassar\",\"TQR\":\"Europe/Rome\",\"TQS\":\"America/Bogota\",\"TRA\":\"Asia/Tokyo\",\"TRB\":\"America/Bogota\",\"TRC\":\"America/Mexico_City\",\"TRD\":\"Europe/Oslo\",\"TRE\":\"Europe/London\",\"TRF\":\"Europe/Oslo\",\"TRG\":\"Pacific/Auckland\",\"TRH\":\"America/Los_Angeles\",\"TRI\":\"America/New_York\",\"TRJ\":\"Pacific/Port_Moresby\",\"TRK\":\"Asia/Makassar\",\"TRL\":\"America/Chicago\",\"TRM\":\"America/Los_Angeles\",\"TRN\":\"Europe/Rome\",\"TRO\":\"Australia/Sydney\",\"TRQ\":\"America/Rio_Branco\",\"TRR\":\"Asia/Colombo\",\"TRS\":\"Europe/Rome\",\"TRT\":\"America/Denver\",\"TRU\":\"America/Lima\",\"TRV\":\"Asia/Kolkata\",\"TRW\":\"Pacific/Tarawa\",\"TRX\":\"America/Chicago\",\"TRY\":\"Africa/Kampala\",\"TRZ\":\"Asia/Kolkata\",\"TSA\":\"Asia/Taipei\",\"TSB\":\"Africa/Windhoek\",\"TSC\":\"America/Guayaquil\",\"TSD\":\"Africa/Johannesburg\",\"TSE\":\"Asia/Almaty\",\"TSF\":\"Europe/Rome\",\"TSG\":\"America/Anchorage\",\"TSH\":\"Africa/Lubumbashi\",\"TSI\":\"Pacific/Port_Moresby\",\"TSJ\":\"Asia/Tokyo\",\"TSK\":\"Pacific/Port_Moresby\",\"TSL\":\"America/Mexico_City\",\"TSM\":\"America/Denver\",\"TSN\":\"Asia/Shanghai\",\"TSO\":\"Europe/London\",\"TSP\":\"America/Los_Angeles\",\"TSQ\":\"America/Sao_Paulo\",\"TSR\":\"Europe/Bucharest\",\"TSS\":\"America/New_York\",\"TST\":\"Asia/Bangkok\",\"TSU\":\"Pacific/Tarawa\",\"TSV\":\"Australia/Brisbane\",\"TSW\":\"Pacific/Port_Moresby\",\"TSX\":\"Asia/Makassar\",\"TSY\":\"Asia/Jakarta\",\"TSZ\":\"Asia/Ulaanbaatar\",\"TTA\":\"Africa/Casablanca\",\"TTB\":\"Europe/Rome\",\"TTC\":\"America/Santiago\",\"TTD\":\"America/Los_Angeles\",\"TTE\":\"Asia/Jayapura\",\"TTG\":\"America/Argentina/Buenos_Aires\",\"TTH\":\"Asia/Muscat\",\"TTI\":\"Pacific/Tahiti\",\"TTJ\":\"Asia/Tokyo\",\"TTK\":\"Europe/London\",\"TTL\":\"Pacific/Fiji\",\"TTM\":\"America/Bogota\",\"TTN\":\"America/New_York\",\"TTO\":\"America/Chicago\",\"TTQ\":\"America/Costa_Rica\",\"TTR\":\"Asia/Makassar\",\"TTS\":\"Indian/Antananarivo\",\"TTT\":\"Asia/Taipei\",\"TTU\":\"Africa/Casablanca\",\"TUA\":\"America/Guayaquil\",\"TUB\":\"Pacific/Tahiti\",\"TUC\":\"America/Argentina/Buenos_Aires\",\"TUD\":\"Africa/Dakar\",\"TUE\":\"America/Panama\",\"TUF\":\"Europe/Paris\",\"TUG\":\"Asia/Manila\",\"TUH\":\"America/Chicago\",\"TUI\":\"Asia/Riyadh\",\"TUK\":\"Asia/Karachi\",\"TUL\":\"America/Chicago\",\"TUM\":\"Australia/Sydney\",\"TUN\":\"Africa/Tunis\",\"TUO\":\"Pacific/Auckland\",\"TUP\":\"America/Chicago\",\"TUQ\":\"Africa/Ouagadougou\",\"TUR\":\"America/Belem\",\"TUS\":\"America/Phoenix\",\"TUT\":\"Pacific/Port_Moresby\",\"TUU\":\"Asia/Riyadh\",\"TUV\":\"America/Caracas\",\"TUW\":\"America/Panama\",\"TUX\":\"America/Vancouver\",\"TUY\":\"America/Mexico_City\",\"TUZ\":\"America/Belem\",\"TVA\":\"Indian/Antananarivo\",\"TVC\":\"America/New_York\",\"TVF\":\"America/Chicago\",\"TVI\":\"America/New_York\",\"TVL\":\"America/Los_Angeles\",\"TVS\":\"Asia/Shanghai\",\"TVU\":\"Pacific/Fiji\",\"TVY\":\"Asia/Yangon\",\"TWA\":\"America/Anchorage\",\"TWB\":\"Australia/Brisbane\",\"TWC\":\"Asia/Shanghai\",\"TWD\":\"America/Los_Angeles\",\"TWE\":\"America/Anchorage\",\"TWF\":\"America/Denver\",\"TWH\":\"America/Los_Angeles\",\"TWN\":\"Australia/Brisbane\",\"TWP\":\"Australia/Brisbane\",\"TWT\":\"Asia/Manila\",\"TWU\":\"Asia/Kuala_Lumpur\",\"TWY\":\"Pacific/Port_Moresby\",\"TWZ\":\"Pacific/Auckland\",\"TXE\":\"Asia/Jakarta\",\"TXF\":\"America/Belem\",\"TXK\":\"America/Chicago\",\"TXL\":\"Europe/Berlin\",\"TXM\":\"Asia/Jayapura\",\"TXN\":\"Asia/Shanghai\",\"TXR\":\"Australia/Brisbane\",\"TXU\":\"Africa/Abidjan\",\"TYA\":\"Europe/Moscow\",\"TYB\":\"Australia/Sydney\",\"TYD\":\"Asia/Yakutsk\",\"TYE\":\"America/Anchorage\",\"TYF\":\"Europe/Stockholm\",\"TYG\":\"Australia/Brisbane\",\"TYL\":\"America/Lima\",\"TYM\":\"America/Nassau\",\"TYN\":\"Asia/Shanghai\",\"TYP\":\"Australia/Darwin\",\"TYR\":\"America/Chicago\",\"TYS\":\"America/New_York\",\"TYT\":\"America/Montevideo\",\"TYZ\":\"America/Phoenix\",\"TZA\":\"America/Belize\",\"TZL\":\"Europe/Sarajevo\",\"TZM\":\"America/Mexico_City\",\"TZN\":\"America/Nassau\",\"TZX\":\"Europe/Istanbul\",\"UAB\":\"Europe/Istanbul\",\"UAC\":\"America/Hermosillo\",\"UAE\":\"Pacific/Port_Moresby\",\"UAH\":\"Pacific/Marquesas\",\"UAI\":\"Asia/Dili\",\"UAK\":\"America/Godthab\",\"UAL\":\"Africa/Luanda\",\"UAM\":\"Pacific/Guam\",\"UAP\":\"Pacific/Marquesas\",\"UAQ\":\"America/Argentina/Buenos_Aires\",\"UAR\":\"Africa/Casablanca\",\"UAS\":\"Africa/Nairobi\",\"UAX\":\"America/Guatemala\",\"UBA\":\"America/Sao_Paulo\",\"UBB\":\"Australia/Brisbane\",\"UBI\":\"Pacific/Bougainville\",\"UBJ\":\"Asia/Tokyo\",\"UBN\":\"Asia/Ulaanbaatar\",\"UBP\":\"Asia/Bangkok\",\"UBR\":\"Asia/Jayapura\",\"UBS\":\"America/Chicago\",\"UBT\":\"America/Sao_Paulo\",\"UBU\":\"Australia/Perth\",\"UCA\":\"America/New_York\",\"UCB\":\"Asia/Shanghai\",\"UCC\":\"America/Los_Angeles\",\"UCE\":\"America/Chicago\",\"UCK\":\"Europe/Kiev\",\"UCN\":\"Africa/Monrovia\",\"UCT\":\"Europe/Moscow\",\"UCY\":\"America/Chicago\",\"UDA\":\"Australia/Brisbane\",\"UDD\":\"America/Los_Angeles\",\"UDE\":\"Europe/Amsterdam\",\"UDI\":\"America/Sao_Paulo\",\"UDJ\":\"Europe/Kiev\",\"UDN\":\"Europe/Rome\",\"UDO\":\"Asia/Vientiane\",\"UDR\":\"Asia/Kolkata\",\"UEE\":\"Australia/Hobart\",\"UEL\":\"Africa/Maputo\",\"UEO\":\"Asia/Tokyo\",\"UER\":\"Europe/Madrid\",\"UES\":\"America/Chicago\",\"UET\":\"Asia/Karachi\",\"UFA\":\"Asia/Yekaterinburg\",\"UGA\":\"Asia/Ulaanbaatar\",\"UGB\":\"America/Anchorage\",\"UGC\":\"Asia/Tashkent\",\"UGI\":\"America/Anchorage\",\"UGL\":\"Antarctica/Palmer\",\"UGN\":\"America/Chicago\",\"UGO\":\"Africa/Luanda\",\"UGS\":\"America/Anchorage\",\"UGT\":\"Asia/Ulaanbaatar\",\"UGU\":\"Asia/Jayapura\",\"UHE\":\"Europe/Prague\",\"UHF\":\"Europe/London\",\"UIB\":\"America/Bogota\",\"UIH\":\"Asia/Ho_Chi_Minh\",\"UII\":\"America/Tegucigalpa\",\"UIK\":\"Asia/Irkutsk\",\"UIL\":\"America/Los_Angeles\",\"UIN\":\"America/Chicago\",\"UIO\":\"America/Guayaquil\",\"UIP\":\"Europe/Paris\",\"UIQ\":\"Pacific/Efate\",\"UIR\":\"Australia/Sydney\",\"UIT\":\"Pacific/Majuro\",\"UIZ\":\"America/New_York\",\"UJE\":\"Pacific/Majuro\",\"UKA\":\"Africa/Nairobi\",\"UKB\":\"Asia/Tokyo\",\"UKG\":\"Asia/Vladivostok\",\"UKH\":\"Asia/Muscat\",\"UKI\":\"America/Los_Angeles\",\"UKK\":\"Asia/Almaty\",\"UKN\":\"America/Chicago\",\"UKR\":\"Asia/Aden\",\"UKS\":\"Europe/Simferopol\",\"UKT\":\"America/New_York\",\"UKU\":\"Pacific/Port_Moresby\",\"UKX\":\"Asia/Irkutsk\",\"ULA\":\"America/Argentina/Buenos_Aires\",\"ULB\":\"Pacific/Efate\",\"ULC\":\"America/Santiago\",\"ULD\":\"Africa/Johannesburg\",\"ULE\":\"Pacific/Port_Moresby\",\"ULG\":\"Asia/Ulaanbaatar\",\"ULH\":\"Asia/Riyadh\",\"ULI\":\"Pacific/Chuuk\",\"ULK\":\"Asia/Yakutsk\",\"ULL\":\"Europe/London\",\"ULM\":\"America/Chicago\",\"ULN\":\"Asia/Ulaanbaatar\",\"ULO\":\"Asia/Ulaanbaatar\",\"ULP\":\"Australia/Brisbane\",\"ULQ\":\"America/Bogota\",\"ULS\":\"America/Bogota\",\"ULU\":\"Africa/Kampala\",\"ULV\":\"Europe/Samara\",\"ULX\":\"Africa/Johannesburg\",\"ULY\":\"Europe/Samara\",\"ULZ\":\"Asia/Ulaanbaatar\",\"UMB\":\"America/Anchorage\",\"UMC\":\"Pacific/Port_Moresby\",\"UMD\":\"America/Godthab\",\"UME\":\"Europe/Stockholm\",\"UMI\":\"America/Lima\",\"UMM\":\"America/Anchorage\",\"UMR\":\"Australia/Adelaide\",\"UMS\":\"Asia/Yakutsk\",\"UMT\":\"America/Anchorage\",\"UMU\":\"America/Sao_Paulo\",\"UMY\":\"Europe/Kiev\",\"UMZ\":\"America/Chicago\",\"UNA\":\"America/Belem\",\"UNC\":\"America/Bogota\",\"UND\":\"Asia/Kabul\",\"UNE\":\"Africa/Maseru\",\"UNG\":\"Pacific/Port_Moresby\",\"UNI\":\"America/St_Vincent\",\"UNK\":\"America/Anchorage\",\"UNN\":\"Asia/Bangkok\",\"UNR\":\"Asia/Ulaanbaatar\",\"UNS\":\"America/Anchorage\",\"UNT\":\"Europe/London\",\"UNU\":\"America/Chicago\",\"UOL\":\"Asia/Makassar\",\"UON\":\"Asia/Vientiane\",\"UOS\":\"America/Chicago\",\"UOX\":\"America/Chicago\",\"UPA\":\"America/Havana\",\"UPB\":\"America/Havana\",\"UPC\":\"America/Caracas\",\"UPF\":\"Europe/Berlin\",\"UPG\":\"Asia/Makassar\",\"UPK\":\"America/Godthab\",\"UPL\":\"America/Costa_Rica\",\"UPN\":\"America/Mexico_City\",\"UPP\":\"Pacific/Honolulu\",\"UPR\":\"Pacific/Port_Moresby\",\"UPV\":\"Europe/London\",\"UQE\":\"America/Anchorage\",\"URA\":\"Asia/Oral\",\"URB\":\"America/Sao_Paulo\",\"URC\":\"Asia/Shanghai\",\"URD\":\"Europe/Berlin\",\"URE\":\"Europe/Tallinn\",\"URG\":\"America/Sao_Paulo\",\"URI\":\"America/Bogota\",\"URJ\":\"Asia/Yekaterinburg\",\"URM\":\"America/Caracas\",\"URN\":\"Asia/Kabul\",\"URO\":\"Europe/Paris\",\"URR\":\"America/Bogota\",\"URS\":\"Europe/Moscow\",\"URT\":\"Asia/Bangkok\",\"URU\":\"Pacific/Port_Moresby\",\"URY\":\"Asia/Riyadh\",\"URZ\":\"Asia/Kabul\",\"USA\":\"America/New_York\",\"USH\":\"America/Argentina/Buenos_Aires\",\"USI\":\"America/Guyana\",\"USJ\":\"Asia/Almaty\",\"USK\":\"Europe/Moscow\",\"USL\":\"Australia/Perth\",\"USM\":\"Asia/Bangkok\",\"USN\":\"Asia/Seoul\",\"USO\":\"Pacific/Port_Moresby\",\"USQ\":\"Europe/Istanbul\",\"USR\":\"Asia/Vladivostok\",\"USS\":\"America/Havana\",\"UST\":\"America/New_York\",\"USU\":\"Asia/Manila\",\"UTA\":\"Africa/Harare\",\"UTB\":\"Australia/Brisbane\",\"UTC\":\"Europe/Amsterdam\",\"UTD\":\"Australia/Darwin\",\"UTE\":\"Africa/Johannesburg\",\"UTG\":\"Africa/Maseru\",\"UTH\":\"Asia/Bangkok\",\"UTI\":\"Europe/Helsinki\",\"UTK\":\"Pacific/Majuro\",\"UTM\":\"America/Chicago\",\"UTN\":\"Africa/Johannesburg\",\"UTO\":\"America/Anchorage\",\"UTP\":\"Asia/Bangkok\",\"UTR\":\"Asia/Bangkok\",\"UTS\":\"Europe/Moscow\",\"UTT\":\"Africa/Johannesburg\",\"UTU\":\"America/Panama\",\"UTW\":\"Africa/Johannesburg\",\"UUA\":\"Europe/Moscow\",\"UUD\":\"Asia/Irkutsk\",\"UUK\":\"America/Anchorage\",\"UUN\":\"Asia/Ulaanbaatar\",\"UUS\":\"Asia/Sakhalin\",\"UUU\":\"Pacific/Port_Moresby\",\"UVA\":\"America/Chicago\",\"UVE\":\"Pacific/Noumea\",\"UVF\":\"America/St_Lucia\",\"UVI\":\"America/Sao_Paulo\",\"UVL\":\"Africa/Cairo\",\"UVO\":\"Pacific/Port_Moresby\",\"UWA\":\"America/New_York\",\"UYL\":\"Africa/Khartoum\",\"UYN\":\"Asia/Shanghai\",\"UYU\":\"America/La_Paz\",\"UZC\":\"Europe/Belgrade\",\"UZH\":\"Asia/Riyadh\",\"UZR\":\"Asia/Almaty\",\"UZU\":\"America/Argentina/Buenos_Aires\",\"VAA\":\"Europe/Helsinki\",\"VAB\":\"America/Bogota\",\"VAC\":\"Europe/Berlin\",\"VAD\":\"America/New_York\",\"VAF\":\"Europe/Paris\",\"VAG\":\"America/Sao_Paulo\",\"VAH\":\"America/La_Paz\",\"VAI\":\"Pacific/Port_Moresby\",\"VAK\":\"America/Anchorage\",\"VAL\":\"America/Belem\",\"VAM\":\"Indian/Maldives\",\"VAN\":\"Europe/Istanbul\",\"VAO\":\"Pacific/Guadalcanal\",\"VAP\":\"America/Santiago\",\"VAR\":\"Europe/Sofia\",\"VAS\":\"Europe/Istanbul\",\"VAT\":\"Indian/Antananarivo\",\"VAU\":\"Pacific/Fiji\",\"VAV\":\"Pacific/Tongatapu\",\"VAW\":\"Europe/Oslo\",\"VAZ\":\"Europe/Paris\",\"VBA\":\"Asia/Yangon\",\"VBC\":\"Asia/Yangon\",\"VBG\":\"America/Los_Angeles\",\"VBM\":\"America/Anchorage\",\"VBP\":\"Asia/Yangon\",\"VBS\":\"Europe/Rome\",\"VBV\":\"Pacific/Fiji\",\"VBY\":\"Europe/Stockholm\",\"VCA\":\"Asia/Ho_Chi_Minh\",\"VCB\":\"America/Anchorage\",\"VCC\":\"Africa/Douala\",\"VCD\":\"Australia/Darwin\",\"VCE\":\"Europe/Rome\",\"VCF\":\"America/Argentina/Buenos_Aires\",\"VCH\":\"America/Montevideo\",\"VCL\":\"Asia/Ho_Chi_Minh\",\"VCP\":\"America/Sao_Paulo\",\"VCR\":\"America/Caracas\",\"VCS\":\"Asia/Ho_Chi_Minh\",\"VCT\":\"America/Chicago\",\"VCV\":\"America/Los_Angeles\",\"VDA\":\"Asia/Jerusalem\",\"VDB\":\"Europe/Oslo\",\"VDC\":\"America/Belem\",\"VDE\":\"Atlantic/Canary\",\"VDF\":\"America/New_York\",\"VDH\":\"Asia/Ho_Chi_Minh\",\"VDI\":\"America/New_York\",\"VDM\":\"America/Argentina/Buenos_Aires\",\"VDO\":\"Asia/Ho_Chi_Minh\",\"VDP\":\"America/Caracas\",\"VDR\":\"America/Argentina/Buenos_Aires\",\"VDS\":\"Europe/Oslo\",\"VDU\":\"America/Chicago\",\"VDY\":\"Asia/Kolkata\",\"VDZ\":\"America/Anchorage\",\"VEE\":\"America/Anchorage\",\"VEG\":\"America/Guyana\",\"VEJ\":\"Europe/Copenhagen\",\"VEL\":\"America/Denver\",\"VER\":\"America/Mexico_City\",\"VEV\":\"Pacific/Guadalcanal\",\"VEX\":\"America/Chicago\",\"VEY\":\"Atlantic/Reykjavik\",\"VFA\":\"Africa/Harare\",\"VGA\":\"Asia/Kolkata\",\"VGD\":\"Europe/Moscow\",\"VGO\":\"Europe/Madrid\",\"VGS\":\"America/Argentina/Buenos_Aires\",\"VGT\":\"America/Los_Angeles\",\"VGZ\":\"America/Bogota\",\"VHC\":\"Africa/Luanda\",\"VHM\":\"Europe/Stockholm\",\"VHN\":\"America/Chicago\",\"VHO\":\"Africa/Maputo\",\"VHV\":\"Asia/Yakutsk\",\"VHY\":\"Europe/Paris\",\"VHZ\":\"Pacific/Tahiti\",\"VIA\":\"America/Sao_Paulo\",\"VIB\":\"America/Mazatlan\",\"VIC\":\"Europe/Rome\",\"VID\":\"Europe/Sofia\",\"VIE\":\"Europe/Vienna\",\"VIF\":\"Europe/Rome\",\"VIG\":\"America/Caracas\",\"VIH\":\"America/Chicago\",\"VII\":\"Asia/Ho_Chi_Minh\",\"VIJ\":\"America/Tortola\",\"VIL\":\"Africa/Casablanca\",\"VIN\":\"Europe/Kiev\",\"VIQ\":\"Asia/Jayapura\",\"VIR\":\"Africa/Johannesburg\",\"VIS\":\"America/Los_Angeles\",\"VIT\":\"Europe/Madrid\",\"VIU\":\"Pacific/Guadalcanal\",\"VIV\":\"Pacific/Port_Moresby\",\"VIX\":\"America/Sao_Paulo\",\"VIY\":\"Europe/Paris\",\"VJB\":\"Africa/Maputo\",\"VJI\":\"America/New_York\",\"VJQ\":\"Africa/Maputo\",\"VKG\":\"Asia/Ho_Chi_Minh\",\"VKO\":\"Europe/Moscow\",\"VKS\":\"America/Chicago\",\"VKT\":\"Europe/Moscow\",\"VKW\":\"America/Anchorage\",\"VLA\":\"America/Chicago\",\"VLC\":\"Europe/Madrid\",\"VLD\":\"America/New_York\",\"VLE\":\"America/Phoenix\",\"VLG\":\"America/Argentina/Buenos_Aires\",\"VLI\":\"Pacific/Efate\",\"VLK\":\"Europe/Moscow\",\"VLL\":\"Europe/Madrid\",\"VLM\":\"America/La_Paz\",\"VLN\":\"America/Caracas\",\"VLO\":\"America/Los_Angeles\",\"VLP\":\"America/Campo_Grande\",\"VLR\":\"America/Santiago\",\"VLS\":\"Pacific/Efate\",\"VLU\":\"Europe/Moscow\",\"VLV\":\"America/Caracas\",\"VLY\":\"Europe/London\",\"VME\":\"America/Argentina/Buenos_Aires\",\"VMI\":\"America/Asuncion\",\"VMU\":\"Pacific/Port_Moresby\",\"VNA\":\"Asia/Vientiane\",\"VNC\":\"America/New_York\",\"VND\":\"Indian/Antananarivo\",\"VNE\":\"Europe/Paris\",\"VNG\":\"Asia/Vientiane\",\"VNO\":\"Europe/Vilnius\",\"VNR\":\"Australia/Brisbane\",\"VNS\":\"Asia/Kolkata\",\"VNX\":\"Africa/Maputo\",\"VNY\":\"America/Los_Angeles\",\"VOG\":\"Europe/Samara\",\"VOH\":\"Indian/Antananarivo\",\"VOI\":\"Africa/Monrovia\",\"VOK\":\"America/Chicago\",\"VOL\":\"Europe/Athens\",\"VOT\":\"America/Sao_Paulo\",\"VOZ\":\"Europe/Moscow\",\"VPE\":\"Africa/Luanda\",\"VPG\":\"Africa/Nairobi\",\"VPN\":\"Atlantic/Reykjavik\",\"VPS\":\"America/Chicago\",\"VPY\":\"Africa/Maputo\",\"VPZ\":\"America/Chicago\",\"VQQ\":\"America/New_York\",\"VQS\":\"America/Puerto_Rico\",\"VRA\":\"America/Havana\",\"VRB\":\"America/New_York\",\"VRC\":\"Asia/Manila\",\"VRE\":\"Africa/Johannesburg\",\"VRK\":\"Europe/Helsinki\",\"VRL\":\"Europe/Lisbon\",\"VRN\":\"Europe/Rome\",\"VRO\":\"America/Havana\",\"VRS\":\"America/Chicago\",\"VRU\":\"Africa/Johannesburg\",\"VRY\":\"Europe/Oslo\",\"VSA\":\"America/Mexico_City\",\"VSE\":\"Europe/Lisbon\",\"VSF\":\"America/New_York\",\"VSO\":\"Asia/Ho_Chi_Minh\",\"VST\":\"Europe/Stockholm\",\"VTA\":\"America/Tegucigalpa\",\"VTB\":\"Europe/Minsk\",\"VTE\":\"Asia/Vientiane\",\"VTF\":\"Pacific/Fiji\",\"VTG\":\"Asia/Ho_Chi_Minh\",\"VTL\":\"Europe/Paris\",\"VTM\":\"Asia/Jerusalem\",\"VTN\":\"America/Chicago\",\"VTU\":\"America/Havana\",\"VTZ\":\"Asia/Kolkata\",\"VUP\":\"America/Bogota\",\"VUS\":\"Europe/Moscow\",\"VUU\":\"Africa/Blantyre\",\"VVB\":\"Indian/Antananarivo\",\"VVC\":\"America/Bogota\",\"VVI\":\"America/La_Paz\",\"VVK\":\"Europe/Stockholm\",\"VVN\":\"America/Lima\",\"VVO\":\"Asia/Vladivostok\",\"VVZ\":\"Africa/Algiers\",\"VXC\":\"Africa/Maputo\",\"VXE\":\"Atlantic/Cape_Verde\",\"VXO\":\"Europe/Stockholm\",\"VYD\":\"Africa/Johannesburg\",\"VYI\":\"Asia/Yakutsk\",\"VYS\":\"America/Chicago\",\"WAA\":\"America/Anchorage\",\"WAB\":\"Pacific/Port_Moresby\",\"WAC\":\"Africa/Addis_Ababa\",\"WAD\":\"Indian/Antananarivo\",\"WAE\":\"Asia/Riyadh\",\"WAF\":\"Asia/Karachi\",\"WAG\":\"Pacific/Auckland\",\"WAH\":\"America/Chicago\",\"WAI\":\"Indian/Antananarivo\",\"WAJ\":\"Pacific/Port_Moresby\",\"WAK\":\"Indian/Antananarivo\",\"WAL\":\"America/New_York\",\"WAM\":\"Indian/Antananarivo\",\"WAN\":\"Australia/Brisbane\",\"WAO\":\"Pacific/Port_Moresby\",\"WAP\":\"America/Santiago\",\"WAQ\":\"Indian/Antananarivo\",\"WAR\":\"Asia/Jayapura\",\"WAT\":\"Europe/Dublin\",\"WAU\":\"Australia/Sydney\",\"WAV\":\"Australia/Darwin\",\"WAW\":\"Europe/Warsaw\",\"WAX\":\"Africa/Tripoli\",\"WAY\":\"America/New_York\",\"WAZ\":\"Australia/Brisbane\",\"WBA\":\"Asia/Jayapura\",\"WBB\":\"America/Anchorage\",\"WBC\":\"Pacific/Port_Moresby\",\"WBD\":\"Indian/Antananarivo\",\"WBE\":\"Indian/Antananarivo\",\"WBG\":\"Europe/Berlin\",\"WBI\":\"America/Denver\",\"WBM\":\"Pacific/Port_Moresby\",\"WBN\":\"America/New_York\",\"WBO\":\"Indian/Antananarivo\",\"WBQ\":\"America/Anchorage\",\"WBR\":\"America/New_York\",\"WBU\":\"America/Denver\",\"WBW\":\"America/New_York\",\"WCA\":\"America/Santiago\",\"WCD\":\"Australia/Perth\",\"WCH\":\"America/Santiago\",\"WCR\":\"America/Anchorage\",\"WDA\":\"Asia/Aden\",\"WDB\":\"America/Anchorage\",\"WDG\":\"America/Chicago\",\"WDH\":\"Africa/Windhoek\",\"WDI\":\"Australia/Brisbane\",\"WDN\":\"America/Los_Angeles\",\"WDR\":\"America/New_York\",\"WDS\":\"Asia/Shanghai\",\"WDY\":\"America/Anchorage\",\"WEA\":\"America/Chicago\",\"WED\":\"Pacific/Port_Moresby\",\"WEF\":\"Asia/Shanghai\",\"WEH\":\"Asia/Shanghai\",\"WEI\":\"Australia/Brisbane\",\"WEL\":\"Africa/Johannesburg\",\"WEM\":\"Europe/London\",\"WEP\":\"Pacific/Port_Moresby\",\"WES\":\"Africa/Monrovia\",\"WET\":\"Asia/Jayapura\",\"WEW\":\"Australia/Sydney\",\"WEX\":\"Europe/Dublin\",\"WFB\":\"America/Anchorage\",\"WFD\":\"Europe/London\",\"WFI\":\"Indian/Antananarivo\",\"WFK\":\"America/New_York\",\"WGA\":\"Australia/Sydney\",\"WGB\":\"Asia/Karachi\",\"WGC\":\"Asia/Kolkata\",\"WGE\":\"Australia/Sydney\",\"WGL\":\"America/Guayaquil\",\"WGN\":\"Asia/Shanghai\",\"WGO\":\"America/New_York\",\"WGP\":\"Asia/Makassar\",\"WGT\":\"Australia/Sydney\",\"WGU\":\"Pacific/Port_Moresby\",\"WGY\":\"Africa/Libreville\",\"WHD\":\"America/Anchorage\",\"WHF\":\"Africa/Khartoum\",\"WHK\":\"Pacific/Auckland\",\"WHL\":\"Australia/Sydney\",\"WHO\":\"Pacific/Auckland\",\"WHP\":\"America/Los_Angeles\",\"WHS\":\"Europe/London\",\"WHT\":\"America/Chicago\",\"WHU\":\"Asia/Shanghai\",\"WIC\":\"Europe/London\",\"WID\":\"Europe/Berlin\",\"WIE\":\"Europe/Berlin\",\"WIK\":\"Pacific/Auckland\",\"WIL\":\"Africa/Nairobi\",\"WIN\":\"Australia/Brisbane\",\"WIO\":\"Australia/Sydney\",\"WIR\":\"Pacific/Auckland\",\"WIT\":\"Australia/Perth\",\"WIU\":\"Pacific/Port_Moresby\",\"WJA\":\"Pacific/Majuro\",\"WJF\":\"America/Los_Angeles\",\"WJR\":\"Africa/Nairobi\",\"WJU\":\"Asia/Seoul\",\"WKA\":\"Pacific/Auckland\",\"WKB\":\"Australia/Sydney\",\"WKF\":\"Africa/Johannesburg\",\"WKI\":\"Africa/Harare\",\"WKJ\":\"Asia/Tokyo\",\"WKK\":\"America/Anchorage\",\"WKL\":\"Pacific/Honolulu\",\"WKN\":\"Pacific/Bougainville\",\"WKR\":\"America/Nassau\",\"WLA\":\"Australia/Perth\",\"WLB\":\"America/Anchorage\",\"WLC\":\"Australia/Sydney\",\"WLD\":\"America/Chicago\",\"WLE\":\"Australia/Brisbane\",\"WLG\":\"Pacific/Auckland\",\"WLH\":\"Pacific/Efate\",\"WLK\":\"America/Anchorage\",\"WLL\":\"Australia/Brisbane\",\"WLM\":\"America/New_York\",\"WLN\":\"America/Anchorage\",\"WLO\":\"Australia/Darwin\",\"WLP\":\"Australia/Perth\",\"WLR\":\"America/Anchorage\",\"WLS\":\"Pacific/Wallis\",\"WLW\":\"America/Los_Angeles\",\"WMA\":\"Indian/Antananarivo\",\"WMB\":\"Australia/Sydney\",\"WMC\":\"America/Los_Angeles\",\"WMD\":\"Indian/Antananarivo\",\"WME\":\"Australia/Perth\",\"WMH\":\"America/Chicago\",\"WMI\":\"Europe/Warsaw\",\"WMK\":\"America/Anchorage\",\"WML\":\"Indian/Antananarivo\",\"WMN\":\"Indian/Antananarivo\",\"WMO\":\"America/Anchorage\",\"WMP\":\"Indian/Antananarivo\",\"WMR\":\"Indian/Antananarivo\",\"WMT\":\"Asia/Shanghai\",\"WMV\":\"Indian/Antananarivo\",\"WMX\":\"Asia/Jayapura\",\"WNA\":\"America/Anchorage\",\"WND\":\"Australia/Perth\",\"WNE\":\"Africa/Accra\",\"WNH\":\"Asia/Shanghai\",\"WNI\":\"Asia/Makassar\",\"WNN\":\"America/Winnipeg\",\"WNP\":\"Asia/Manila\",\"WNR\":\"Australia/Brisbane\",\"WNS\":\"Asia/Karachi\",\"WNU\":\"Pacific/Port_Moresby\",\"WNZ\":\"Asia/Shanghai\",\"WOA\":\"Pacific/Port_Moresby\",\"WOB\":\"Europe/London\",\"WOD\":\"America/Anchorage\",\"WOE\":\"Europe/Amsterdam\",\"WOG\":\"Australia/Darwin\",\"WOI\":\"Africa/Monrovia\",\"WOK\":\"America/Caracas\",\"WOL\":\"Australia/Sydney\",\"WON\":\"Australia/Brisbane\",\"WOO\":\"America/Anchorage\",\"WOR\":\"Indian/Antananarivo\",\"WOT\":\"Asia/Taipei\",\"WOW\":\"America/Anchorage\",\"WPA\":\"America/Santiago\",\"WPB\":\"Indian/Antananarivo\",\"WPC\":\"America/Edmonton\",\"WPK\":\"Australia/Brisbane\",\"WPL\":\"America/Vancouver\",\"WPM\":\"Pacific/Port_Moresby\",\"WPO\":\"America/Denver\",\"WPR\":\"America/Santiago\",\"WPU\":\"America/Santiago\",\"WRA\":\"Africa/Addis_Ababa\",\"WRB\":\"America/New_York\",\"WRE\":\"Pacific/Auckland\",\"WRG\":\"America/Anchorage\",\"WRH\":\"America/Anchorage\",\"WRI\":\"America/New_York\",\"WRL\":\"America/Denver\",\"WRN\":\"Australia/Perth\",\"WRO\":\"Europe/Warsaw\",\"WRW\":\"Australia/Perth\",\"WRY\":\"Europe/London\",\"WRZ\":\"Asia/Colombo\",\"WSA\":\"Pacific/Port_Moresby\",\"WSB\":\"America/Anchorage\",\"WSD\":\"America/Denver\",\"WSF\":\"America/Anchorage\",\"WSG\":\"America/New_York\",\"WSH\":\"America/New_York\",\"WSK\":\"Asia/Shanghai\",\"WSM\":\"America/Anchorage\",\"WSN\":\"America/Anchorage\",\"WSO\":\"America/Paramaribo\",\"WSP\":\"America/Managua\",\"WSR\":\"Asia/Jayapura\",\"WST\":\"America/New_York\",\"WSU\":\"Pacific/Port_Moresby\",\"WSX\":\"America/Los_Angeles\",\"WSY\":\"Australia/Brisbane\",\"WSZ\":\"Pacific/Auckland\",\"WTA\":\"Indian/Antananarivo\",\"WTB\":\"Australia/Brisbane\",\"WTD\":\"America/Nassau\",\"WTE\":\"Pacific/Majuro\",\"WTK\":\"America/Anchorage\",\"WTL\":\"America/Anchorage\",\"WTN\":\"Europe/London\",\"WTO\":\"Pacific/Majuro\",\"WTP\":\"Pacific/Port_Moresby\",\"WTR\":\"America/Phoenix\",\"WTS\":\"Indian/Antananarivo\",\"WTT\":\"Pacific/Port_Moresby\",\"WTZ\":\"Pacific/Auckland\",\"WUA\":\"Asia/Shanghai\",\"WUD\":\"Australia/Adelaide\",\"WUG\":\"Pacific/Port_Moresby\",\"WUH\":\"Asia/Shanghai\",\"WUI\":\"Australia/Perth\",\"WUM\":\"Pacific/Port_Moresby\",\"WUN\":\"Australia/Perth\",\"WUS\":\"Asia/Shanghai\",\"WUT\":\"Asia/Shanghai\",\"WUU\":\"Africa/Juba\",\"WUV\":\"Pacific/Port_Moresby\",\"WUX\":\"Asia/Shanghai\",\"WUZ\":\"Asia/Shanghai\",\"WVB\":\"Africa/Windhoek\",\"WVI\":\"America/Los_Angeles\",\"WVK\":\"Indian/Antananarivo\",\"WVL\":\"America/New_York\",\"WVN\":\"Europe/Berlin\",\"WWA\":\"America/Anchorage\",\"WWD\":\"America/New_York\",\"WWI\":\"Australia/Perth\",\"WWK\":\"Pacific/Port_Moresby\",\"WWP\":\"America/Anchorage\",\"WWR\":\"America/Chicago\",\"WWT\":\"America/Anchorage\",\"WWY\":\"Australia/Sydney\",\"WXN\":\"Asia/Shanghai\",\"WYA\":\"Australia/Adelaide\",\"WYB\":\"America/Anchorage\",\"WYE\":\"Africa/Freetown\",\"WYN\":\"Australia/Perth\",\"WYS\":\"America/Denver\",\"WZA\":\"Africa/Accra\",\"WZQ\":\"Asia/Shanghai\",\"WZY\":\"America/Nassau\",\"XAI\":\"Asia/Shanghai\",\"XAL\":\"America/Hermosillo\",\"XAP\":\"America/Sao_Paulo\",\"XAR\":\"Africa/Ouagadougou\",\"XAU\":\"America/Cayenne\",\"XAY\":\"Asia/Vientiane\",\"XBB\":\"America/Vancouver\",\"XBE\":\"America/Winnipeg\",\"XBG\":\"Africa/Ouagadougou\",\"XBJ\":\"Asia/Tehran\",\"XBL\":\"Africa/Addis_Ababa\",\"XBN\":\"Pacific/Port_Moresby\",\"XBO\":\"Africa/Ouagadougou\",\"XBR\":\"America/Toronto\",\"XCH\":\"Indian/Christmas\",\"XCL\":\"America/Regina\",\"XCM\":\"America/Toronto\",\"XCN\":\"Asia/Manila\",\"XCO\":\"Australia/Sydney\",\"XCR\":\"Europe/Paris\",\"XDE\":\"Africa/Ouagadougou\",\"XDJ\":\"Africa/Ouagadougou\",\"XEN\":\"Asia/Shanghai\",\"XEO\":\"America/Godthab\",\"XEQ\":\"America/Godthab\",\"XES\":\"America/Chicago\",\"XEX\":\"Europe/Paris\",\"XFN\":\"Asia/Shanghai\",\"XFW\":\"Europe/Berlin\",\"XGA\":\"Africa/Ouagadougou\",\"XGB\":\"Europe/Paris\",\"XGG\":\"Africa/Ouagadougou\",\"XGL\":\"America/Winnipeg\",\"XGN\":\"Africa/Luanda\",\"XGR\":\"America/Toronto\",\"XIC\":\"Asia/Shanghai\",\"XIE\":\"Asia/Vientiane\",\"XIG\":\"America/Belem\",\"XIJ\":\"Asia/Kuwait\",\"XIL\":\"Asia/Shanghai\",\"XIN\":\"Asia/Shanghai\",\"XIQ\":\"America/Godthab\",\"XIY\":\"Asia/Shanghai\",\"XJD\":\"Asia/Qatar\",\"XKA\":\"Africa/Ouagadougou\",\"XKH\":\"Asia/Vientiane\",\"XKO\":\"America/Vancouver\",\"XKS\":\"America/Winnipeg\",\"XKY\":\"Africa/Ouagadougou\",\"XLB\":\"America/Winnipeg\",\"XLF\":\"America/Toronto\",\"XLO\":\"Asia/Ho_Chi_Minh\",\"XLS\":\"Africa/Dakar\",\"XLU\":\"Africa/Ouagadougou\",\"XLW\":\"Europe/Berlin\",\"XMA\":\"Asia/Manila\",\"XMC\":\"Australia/Sydney\",\"XMD\":\"America/Chicago\",\"XMG\":\"Asia/Kathmandu\",\"XMH\":\"Pacific/Tahiti\",\"XMI\":\"Africa/Dar_es_Salaam\",\"XML\":\"Australia/Adelaide\",\"XMN\":\"Asia/Shanghai\",\"XMP\":\"America/Vancouver\",\"XMS\":\"America/Guayaquil\",\"XMY\":\"Australia/Brisbane\",\"XNA\":\"America/Chicago\",\"XNG\":\"Asia/Ho_Chi_Minh\",\"XNH\":\"Asia/Baghdad\",\"XNN\":\"Asia/Shanghai\",\"XNT\":\"Asia/Shanghai\",\"XNU\":\"Africa/Ouagadougou\",\"XPA\":\"Africa/Ouagadougou\",\"XPD\":\"America/Argentina/Buenos_Aires\",\"XPK\":\"America/Winnipeg\",\"XPL\":\"America/Tegucigalpa\",\"XPP\":\"America/Winnipeg\",\"XPR\":\"America/Denver\",\"XPU\":\"America/Anchorage\",\"XQC\":\"Asia/Baghdad\",\"XQP\":\"America/Costa_Rica\",\"XQU\":\"America/Vancouver\",\"XRH\":\"Australia/Sydney\",\"XRR\":\"America/Vancouver\",\"XRY\":\"Europe/Madrid\",\"XSB\":\"Asia/Dubai\",\"XSC\":\"America/Grand_Turk\",\"XSD\":\"America/Los_Angeles\",\"XSE\":\"Africa/Ouagadougou\",\"XSI\":\"America/Winnipeg\",\"XSM\":\"America/New_York\",\"XSO\":\"Asia/Manila\",\"XSP\":\"Asia/Singapore\",\"XTG\":\"Australia/Brisbane\",\"XTL\":\"America/Winnipeg\",\"XTO\":\"Australia/Brisbane\",\"XTR\":\"Australia/Brisbane\",\"XUZ\":\"Asia/Shanghai\",\"XVL\":\"Asia/Ho_Chi_Minh\",\"XWA\":\"America/Chicago\",\"XYA\":\"Pacific/Guadalcanal\",\"XYE\":\"Asia/Yangon\",\"XYR\":\"Pacific/Port_Moresby\",\"XYT\":\"Europe/Paris\",\"XZA\":\"Africa/Ouagadougou\",\"XZD\":\"Europe/Oslo\",\"YAA\":\"America/Vancouver\",\"YAB\":\"America/Iqaluit\",\"YAC\":\"America/Winnipeg\",\"YAD\":\"America/Winnipeg\",\"YAE\":\"America/Vancouver\",\"YAF\":\"America/Toronto\",\"YAG\":\"America/Winnipeg\",\"YAH\":\"America/Toronto\",\"YAI\":\"America/Santiago\",\"YAJ\":\"America/Vancouver\",\"YAK\":\"America/Anchorage\",\"YAL\":\"America/Vancouver\",\"YAM\":\"America/Toronto\",\"YAN\":\"Africa/Lubumbashi\",\"YAO\":\"Africa/Douala\",\"YAP\":\"Pacific/Chuuk\",\"YAQ\":\"America/Vancouver\",\"YAR\":\"America/Toronto\",\"YAS\":\"Pacific/Fiji\",\"YAT\":\"America/Toronto\",\"YAU\":\"America/Toronto\",\"YAV\":\"America/Vancouver\",\"YAW\":\"America/Halifax\",\"YAX\":\"America/Winnipeg\",\"YAY\":\"America/St_Johns\",\"YAZ\":\"America/Vancouver\",\"YBA\":\"America/Edmonton\",\"YBB\":\"America/Edmonton\",\"YBC\":\"America/Toronto\",\"YBD\":\"America/Vancouver\",\"YBE\":\"America/Regina\",\"YBF\":\"America/Vancouver\",\"YBG\":\"America/Toronto\",\"YBH\":\"America/Vancouver\",\"YBI\":\"America/Halifax\",\"YBJ\":\"America/Toronto\",\"YBK\":\"America/Winnipeg\",\"YBL\":\"America/Vancouver\",\"YBM\":\"America/Vancouver\",\"YBN\":\"America/Toronto\",\"YBO\":\"America/Vancouver\",\"YBP\":\"Asia/Shanghai\",\"YBQ\":\"America/Vancouver\",\"YBR\":\"America/Winnipeg\",\"YBS\":\"America/Toronto\",\"YBT\":\"America/Winnipeg\",\"YBV\":\"America/Winnipeg\",\"YBW\":\"America/Vancouver\",\"YBX\":\"America/Blanc-Sablon\",\"YBY\":\"America/Edmonton\",\"YCA\":\"America/Vancouver\",\"YCB\":\"America/Edmonton\",\"YCC\":\"America/Toronto\",\"YCD\":\"America/Vancouver\",\"YCE\":\"America/Toronto\",\"YCF\":\"America/Vancouver\",\"YCG\":\"America/Vancouver\",\"YCH\":\"America/Halifax\",\"YCI\":\"America/Toronto\",\"YCJ\":\"America/Vancouver\",\"YCK\":\"America/Edmonton\",\"YCL\":\"America/Halifax\",\"YCM\":\"America/Toronto\",\"YCN\":\"America/Toronto\",\"YCO\":\"America/Edmonton\",\"YCQ\":\"America/Dawson_Creek\",\"YCR\":\"America/Winnipeg\",\"YCS\":\"America/Winnipeg\",\"YCT\":\"America/Edmonton\",\"YCU\":\"Asia/Shanghai\",\"YCW\":\"America/Vancouver\",\"YCX\":\"America/Halifax\",\"YCY\":\"America/Toronto\",\"YCZ\":\"America/Edmonton\",\"YDA\":\"America/Vancouver\",\"YDB\":\"America/Vancouver\",\"YDC\":\"America/Edmonton\",\"YDE\":\"America/Halifax\",\"YDF\":\"America/St_Johns\",\"YDG\":\"America/Halifax\",\"YDH\":\"America/St_Johns\",\"YDI\":\"America/Halifax\",\"YDJ\":\"America/Regina\",\"YDK\":\"America/Toronto\",\"YDL\":\"America/Vancouver\",\"YDN\":\"America/Winnipeg\",\"YDO\":\"America/Toronto\",\"YDP\":\"America/Halifax\",\"YDQ\":\"America/Dawson_Creek\",\"YDR\":\"America/Regina\",\"YDS\":\"America/Vancouver\",\"YDT\":\"America/Vancouver\",\"YDU\":\"America/Winnipeg\",\"YDV\":\"America/Winnipeg\",\"YDW\":\"America/Winnipeg\",\"YDX\":\"America/Vancouver\",\"YEC\":\"Asia/Seoul\",\"YED\":\"America/Edmonton\",\"YEG\":\"America/Edmonton\",\"YEI\":\"Europe/Istanbul\",\"YEK\":\"America/Winnipeg\",\"YEL\":\"America/Toronto\",\"YEM\":\"America/Toronto\",\"YEN\":\"America/Regina\",\"YEO\":\"Europe/London\",\"YEP\":\"America/Vancouver\",\"YEQ\":\"Pacific/Port_Moresby\",\"YER\":\"America/Toronto\",\"YES\":\"Asia/Tehran\",\"YET\":\"America/Edmonton\",\"YEU\":\"America/Winnipeg\",\"YEV\":\"America/Edmonton\",\"YEY\":\"America/Toronto\",\"YFA\":\"America/Toronto\",\"YFB\":\"America/Toronto\",\"YFC\":\"America/Halifax\",\"YFE\":\"America/Toronto\",\"YFG\":\"America/Toronto\",\"YFH\":\"America/Toronto\",\"YFI\":\"America/Edmonton\",\"YFJ\":\"America/Edmonton\",\"YFL\":\"America/Vancouver\",\"YFO\":\"America/Winnipeg\",\"YFR\":\"America/Edmonton\",\"YFS\":\"America/Edmonton\",\"YFX\":\"America/St_Johns\",\"YGA\":\"America/Toronto\",\"YGB\":\"America/Vancouver\",\"YGC\":\"America/Edmonton\",\"YGE\":\"America/Vancouver\",\"YGG\":\"America/Vancouver\",\"YGH\":\"America/Edmonton\",\"YGJ\":\"Asia/Tokyo\",\"YGK\":\"America/Toronto\",\"YGL\":\"America/Toronto\",\"YGM\":\"America/Winnipeg\",\"YGN\":\"America/Vancouver\",\"YGO\":\"America/Winnipeg\",\"YGP\":\"America/Toronto\",\"YGQ\":\"America/Toronto\",\"YGR\":\"America/Halifax\",\"YGS\":\"America/Vancouver\",\"YGT\":\"America/Toronto\",\"YGV\":\"America/Toronto\",\"YGW\":\"America/Toronto\",\"YGX\":\"America/Winnipeg\",\"YGY\":\"America/Toronto\",\"YGZ\":\"America/Toronto\",\"YHA\":\"America/St_Johns\",\"YHB\":\"America/Regina\",\"YHC\":\"America/Vancouver\",\"YHD\":\"America/Winnipeg\",\"YHE\":\"America/Vancouver\",\"YHF\":\"America/Toronto\",\"YHG\":\"America/St_Johns\",\"YHH\":\"America/Vancouver\",\"YHI\":\"America/Edmonton\",\"YHK\":\"America/Edmonton\",\"YHM\":\"America/Toronto\",\"YHN\":\"America/Toronto\",\"YHO\":\"America/Halifax\",\"YHP\":\"America/Winnipeg\",\"YHR\":\"America/Blanc-Sablon\",\"YHS\":\"America/Vancouver\",\"YHT\":\"America/Vancouver\",\"YHU\":\"America/Toronto\",\"YHY\":\"America/Edmonton\",\"YHZ\":\"America/Halifax\",\"YIA\":\"Asia/Jakarta\",\"YIB\":\"America/Atikokan\",\"YIC\":\"Asia/Shanghai\",\"YIE\":\"Asia/Shanghai\",\"YIF\":\"America/Blanc-Sablon\",\"YIG\":\"America/Vancouver\",\"YIH\":\"Asia/Shanghai\",\"YIK\":\"America/Toronto\",\"YIN\":\"Asia/Shanghai\",\"YIO\":\"America/Toronto\",\"YIP\":\"America/New_York\",\"YIV\":\"America/Winnipeg\",\"YIW\":\"Asia/Shanghai\",\"YJA\":\"America/Edmonton\",\"YJF\":\"America/Edmonton\",\"YJN\":\"America/Toronto\",\"YJO\":\"America/Vancouver\",\"YJP\":\"America/Edmonton\",\"YJT\":\"America/St_Johns\",\"YKA\":\"America/Vancouver\",\"YKC\":\"America/Regina\",\"YKD\":\"America/Toronto\",\"YKE\":\"America/Winnipeg\",\"YKF\":\"America/Toronto\",\"YKG\":\"America/Toronto\",\"YKH\":\"Asia/Shanghai\",\"YKJ\":\"America/Regina\",\"YKK\":\"America/Vancouver\",\"YKL\":\"America/Toronto\",\"YKM\":\"America/Los_Angeles\",\"YKN\":\"America/Chicago\",\"YKO\":\"Europe/Istanbul\",\"YKQ\":\"America/Toronto\",\"YKS\":\"Asia/Yakutsk\",\"YKT\":\"America/Vancouver\",\"YKU\":\"America/Toronto\",\"YKX\":\"America/Toronto\",\"YKY\":\"America/Regina\",\"YKZ\":\"America/Toronto\",\"YLA\":\"America/Vancouver\",\"YLB\":\"America/Edmonton\",\"YLC\":\"America/Toronto\",\"YLD\":\"America/Toronto\",\"YLE\":\"America/Edmonton\",\"YLF\":\"America/Toronto\",\"YLG\":\"Australia/Perth\",\"YLH\":\"America/Toronto\",\"YLI\":\"Europe/Helsinki\",\"YLJ\":\"America/Regina\",\"YLL\":\"America/Edmonton\",\"YLM\":\"America/Vancouver\",\"YLN\":\"Asia/Shanghai\",\"YLO\":\"America/Winnipeg\",\"YLP\":\"America/Toronto\",\"YLQ\":\"America/Toronto\",\"YLR\":\"America/Winnipeg\",\"YLS\":\"America/Toronto\",\"YLT\":\"America/Winnipeg\",\"YLW\":\"America/Vancouver\",\"YLX\":\"Asia/Shanghai\",\"YLY\":\"America/Vancouver\",\"YMA\":\"America/Vancouver\",\"YMB\":\"America/Vancouver\",\"YMC\":\"America/Toronto\",\"YMD\":\"America/Edmonton\",\"YME\":\"America/Toronto\",\"YMF\":\"America/Vancouver\",\"YMG\":\"America/Toronto\",\"YMH\":\"America/St_Johns\",\"YMI\":\"America/Winnipeg\",\"YMJ\":\"America/Regina\",\"YMK\":\"Asia/Yekaterinburg\",\"YML\":\"America/Toronto\",\"YMM\":\"America/Edmonton\",\"YMN\":\"America/Halifax\",\"YMO\":\"America/Toronto\",\"YMP\":\"America/Vancouver\",\"YMR\":\"America/Vancouver\",\"YMS\":\"America/Lima\",\"YMT\":\"America/Toronto\",\"YMU\":\"America/Vancouver\",\"YMV\":\"America/Iqaluit\",\"YMW\":\"America/Toronto\",\"YMX\":\"America/Toronto\",\"YNA\":\"America/Toronto\",\"YNB\":\"Asia/Riyadh\",\"YNC\":\"America/Toronto\",\"YND\":\"America/Toronto\",\"YNE\":\"America/Winnipeg\",\"YNG\":\"America/New_York\",\"YNH\":\"America/Edmonton\",\"YNI\":\"America/Toronto\",\"YNJ\":\"Asia/Shanghai\",\"YNK\":\"America/Vancouver\",\"YNL\":\"America/Regina\",\"YNM\":\"America/Toronto\",\"YNN\":\"Australia/Perth\",\"YNO\":\"America/Winnipeg\",\"YNP\":\"America/Halifax\",\"YNR\":\"America/Winnipeg\",\"YNS\":\"America/Toronto\",\"YNT\":\"Asia/Shanghai\",\"YNY\":\"Asia/Seoul\",\"YNZ\":\"Asia/Shanghai\",\"YOA\":\"America/Edmonton\",\"YOC\":\"America/Vancouver\",\"YOD\":\"America/Edmonton\",\"YOE\":\"America/Edmonton\",\"YOG\":\"America/Toronto\",\"YOH\":\"America/Winnipeg\",\"YOJ\":\"America/Edmonton\",\"YOK\":\"Asia/Tokyo\",\"YOL\":\"Africa/Lagos\",\"YON\":\"Asia/Thimphu\",\"YOO\":\"America/Toronto\",\"YOP\":\"America/Edmonton\",\"YOS\":\"America/Toronto\",\"YOT\":\"Asia/Jerusalem\",\"YOW\":\"America/Toronto\",\"YOY\":\"America/Toronto\",\"YPA\":\"America/Regina\",\"YPB\":\"America/Vancouver\",\"YPC\":\"America/Edmonton\",\"YPD\":\"America/Toronto\",\"YPE\":\"America/Edmonton\",\"YPF\":\"America/Vancouver\",\"YPG\":\"America/Winnipeg\",\"YPH\":\"America/Toronto\",\"YPI\":\"America/Vancouver\",\"YPJ\":\"America/Toronto\",\"YPL\":\"America/Atikokan\",\"YPM\":\"America/Winnipeg\",\"YPN\":\"America/Toronto\",\"YPO\":\"America/Toronto\",\"YPP\":\"America/Edmonton\",\"YPQ\":\"America/Toronto\",\"YPR\":\"America/Vancouver\",\"YPS\":\"America/Halifax\",\"YPT\":\"America/Vancouver\",\"YPW\":\"America/Vancouver\",\"YPX\":\"America/Toronto\",\"YPY\":\"America/Edmonton\",\"YPZ\":\"America/Vancouver\",\"YQA\":\"America/Toronto\",\"YQB\":\"America/Toronto\",\"YQC\":\"America/Toronto\",\"YQD\":\"America/Winnipeg\",\"YQE\":\"America/Vancouver\",\"YQF\":\"America/Edmonton\",\"YQG\":\"America/Toronto\",\"YQH\":\"America/Vancouver\",\"YQI\":\"America/Halifax\",\"YQJ\":\"America/Vancouver\",\"YQK\":\"America/Winnipeg\",\"YQL\":\"America/Edmonton\",\"YQM\":\"America/Halifax\",\"YQN\":\"America/Toronto\",\"YQQ\":\"America/Vancouver\",\"YQR\":\"America/Regina\",\"YQS\":\"America/Toronto\",\"YQT\":\"America/Toronto\",\"YQU\":\"America/Edmonton\",\"YQV\":\"America/Regina\",\"YQW\":\"America/Regina\",\"YQX\":\"America/St_Johns\",\"YQY\":\"America/Halifax\",\"YQZ\":\"America/Vancouver\",\"YR6\":\"America/Vancouver\",\"YRA\":\"America/Edmonton\",\"YRB\":\"America/Winnipeg\",\"YRC\":\"America/Vancouver\",\"YRD\":\"America/Vancouver\",\"YRE\":\"America/Winnipeg\",\"YRF\":\"America/Halifax\",\"YRG\":\"America/Halifax\",\"YRI\":\"America/Toronto\",\"YRJ\":\"America/Toronto\",\"YRL\":\"America/Winnipeg\",\"YRM\":\"America/Edmonton\",\"YRN\":\"America/Vancouver\",\"YRO\":\"America/Toronto\",\"YRQ\":\"America/Toronto\",\"YRR\":\"America/Vancouver\",\"YRS\":\"America/Winnipeg\",\"YRT\":\"America/Winnipeg\",\"YRV\":\"America/Vancouver\",\"YSA\":\"America/Halifax\",\"YSB\":\"America/Toronto\",\"YSC\":\"America/Toronto\",\"YSD\":\"America/Edmonton\",\"YSE\":\"America/Vancouver\",\"YSF\":\"America/Regina\",\"YSG\":\"America/Edmonton\",\"YSH\":\"America/Toronto\",\"YSI\":\"America/Toronto\",\"YSJ\":\"America/Halifax\",\"YSK\":\"America/Toronto\",\"YSL\":\"America/Halifax\",\"YSM\":\"America/Edmonton\",\"YSN\":\"America/Vancouver\",\"YSO\":\"America/Halifax\",\"YSP\":\"America/Toronto\",\"YSQ\":\"Asia/Shanghai\",\"YSR\":\"America/Toronto\",\"YST\":\"America/Winnipeg\",\"YSU\":\"America/Halifax\",\"YSV\":\"America/Halifax\",\"YSX\":\"America/Vancouver\",\"YSY\":\"America/Edmonton\",\"YSZ\":\"America/Vancouver\",\"YTA\":\"America/Toronto\",\"YTB\":\"America/Vancouver\",\"YTC\":\"America/Vancouver\",\"YTD\":\"America/Winnipeg\",\"YTE\":\"America/Toronto\",\"YTF\":\"America/Toronto\",\"YTG\":\"America/Vancouver\",\"YTH\":\"America/Winnipeg\",\"YTJ\":\"America/Toronto\",\"YTK\":\"America/Toronto\",\"YTL\":\"America/Winnipeg\",\"YTM\":\"America/Toronto\",\"YTN\":\"America/Toronto\",\"YTP\":\"America/Vancouver\",\"YTQ\":\"America/Toronto\",\"YTR\":\"America/Toronto\",\"YTS\":\"America/Toronto\",\"YTT\":\"America/Regina\",\"YTU\":\"America/Vancouver\",\"YTX\":\"America/Vancouver\",\"YTY\":\"Asia/Shanghai\",\"YTZ\":\"America/Toronto\",\"YUA\":\"Asia/Shanghai\",\"YUB\":\"America/Edmonton\",\"YUD\":\"America/Toronto\",\"YUE\":\"Australia/Darwin\",\"YUF\":\"America/Edmonton\",\"YUL\":\"America/Toronto\",\"YUM\":\"America/Phoenix\",\"YUS\":\"Asia/Shanghai\",\"YUT\":\"America/Winnipeg\",\"YUX\":\"America/Toronto\",\"YUY\":\"America/Toronto\",\"YVB\":\"America/Toronto\",\"YVC\":\"America/Regina\",\"YVD\":\"Pacific/Port_Moresby\",\"YVE\":\"America/Vancouver\",\"YVG\":\"America/Edmonton\",\"YVM\":\"America/Toronto\",\"YVO\":\"America/Toronto\",\"YVP\":\"America/Toronto\",\"YVQ\":\"America/Edmonton\",\"YVR\":\"America/Vancouver\",\"YVT\":\"America/Regina\",\"YVV\":\"America/Toronto\",\"YVZ\":\"America/Winnipeg\",\"YWA\":\"America/Toronto\",\"YWB\":\"America/Toronto\",\"YWF\":\"America/Halifax\",\"YWG\":\"America/Winnipeg\",\"YWH\":\"America/Vancouver\",\"YWJ\":\"America/Edmonton\",\"YWK\":\"America/Halifax\",\"YWL\":\"America/Vancouver\",\"YWM\":\"America/St_Johns\",\"YWN\":\"America/Toronto\",\"YWO\":\"America/Edmonton\",\"YWP\":\"America/Toronto\",\"YWQ\":\"America/Toronto\",\"YWR\":\"America/Toronto\",\"YWS\":\"America/Vancouver\",\"YWY\":\"America/Edmonton\",\"YXC\":\"America/Edmonton\",\"YXE\":\"America/Regina\",\"YXF\":\"America/Vancouver\",\"YXH\":\"America/Edmonton\",\"YXI\":\"America/Toronto\",\"YXJ\":\"America/Dawson_Creek\",\"YXK\":\"America/Toronto\",\"YXL\":\"America/Winnipeg\",\"YXN\":\"America/Winnipeg\",\"YXP\":\"America/Toronto\",\"YXQ\":\"America/Vancouver\",\"YXR\":\"America/Toronto\",\"YXS\":\"America/Vancouver\",\"YXT\":\"America/Vancouver\",\"YXU\":\"America/Toronto\",\"YXX\":\"America/Vancouver\",\"YXY\":\"America/Vancouver\",\"YXZ\":\"America/Toronto\",\"YYA\":\"Asia/Shanghai\",\"YYB\":\"America/Toronto\",\"YYC\":\"America/Edmonton\",\"YYD\":\"America/Vancouver\",\"YYE\":\"America/Dawson_Creek\",\"YYF\":\"America/Vancouver\",\"YYG\":\"America/Halifax\",\"YYH\":\"America/Edmonton\",\"YYI\":\"America/Winnipeg\",\"YYJ\":\"America/Vancouver\",\"YYL\":\"America/Winnipeg\",\"YYM\":\"America/Edmonton\",\"YYN\":\"America/Regina\",\"YYQ\":\"America/Winnipeg\",\"YYR\":\"America/Halifax\",\"YYT\":\"America/St_Johns\",\"YYU\":\"America/Toronto\",\"YYW\":\"America/Toronto\",\"YYY\":\"America/Toronto\",\"YYZ\":\"America/Toronto\",\"YZA\":\"America/Vancouver\",\"YZC\":\"America/Vancouver\",\"YZE\":\"America/Toronto\",\"YZF\":\"America/Edmonton\",\"YZG\":\"America/Toronto\",\"YZH\":\"America/Edmonton\",\"YZM\":\"America/St_Johns\",\"YZP\":\"America/Vancouver\",\"YZR\":\"America/Toronto\",\"YZS\":\"America/Atikokan\",\"YZT\":\"America/Vancouver\",\"YZU\":\"America/Edmonton\",\"YZV\":\"America/Toronto\",\"YZW\":\"America/Vancouver\",\"YZX\":\"America/Halifax\",\"YZY\":\"Asia/Shanghai\",\"YZZ\":\"America/Vancouver\",\"ZAA\":\"America/Vancouver\",\"ZAC\":\"America/Winnipeg\",\"ZAD\":\"Europe/Zagreb\",\"ZAG\":\"Europe/Zagreb\",\"ZAH\":\"Asia/Tehran\",\"ZAJ\":\"Asia/Kabul\",\"ZAL\":\"America/Santiago\",\"ZAM\":\"Asia/Manila\",\"ZAO\":\"Europe/Paris\",\"ZAR\":\"Africa/Lagos\",\"ZAT\":\"Asia/Shanghai\",\"ZAZ\":\"Europe/Madrid\",\"ZBE\":\"Europe/Prague\",\"ZBF\":\"America/Halifax\",\"ZBK\":\"Europe/Podgorica\",\"ZBL\":\"Australia/Brisbane\",\"ZBM\":\"America/Toronto\",\"ZBO\":\"Australia/Brisbane\",\"ZBR\":\"Asia/Tehran\",\"ZBY\":\"Asia/Vientiane\",\"ZCL\":\"America/Mexico_City\",\"ZCO\":\"America/Santiago\",\"ZDY\":\"Asia/Dubai\",\"ZEC\":\"Africa/Johannesburg\",\"ZEG\":\"Asia/Jayapura\",\"ZEL\":\"America/Vancouver\",\"ZEM\":\"America/Toronto\",\"ZEN\":\"Pacific/Port_Moresby\",\"ZER\":\"Asia/Kolkata\",\"ZFA\":\"America/Vancouver\",\"ZFB\":\"America/Halifax\",\"ZFD\":\"America/Regina\",\"ZFL\":\"America/Winnipeg\",\"ZFM\":\"America/Edmonton\",\"ZFN\":\"America/Edmonton\",\"ZFW\":\"America/Edmonton\",\"ZGF\":\"America/Vancouver\",\"ZGI\":\"America/Winnipeg\",\"ZGL\":\"Australia/Brisbane\",\"ZGM\":\"Africa/Lusaka\",\"ZGR\":\"America/Winnipeg\",\"ZGS\":\"America/Blanc-Sablon\",\"ZGU\":\"Pacific/Efate\",\"ZHA\":\"Asia/Shanghai\",\"ZHM\":\"Asia/Dhaka\",\"ZHP\":\"America/Edmonton\",\"ZHY\":\"Asia/Shanghai\",\"ZIA\":\"Europe/Moscow\",\"ZIC\":\"America/Santiago\",\"ZIG\":\"Africa/Dakar\",\"ZIH\":\"America/Mexico_City\",\"ZIS\":\"Africa/Tripoli\",\"ZIX\":\"Asia/Yakutsk\",\"ZIZ\":\"Asia/Karachi\",\"ZJG\":\"America/Winnipeg\",\"ZJN\":\"America/Winnipeg\",\"ZKB\":\"Africa/Lusaka\",\"ZKE\":\"America/Toronto\",\"ZKG\":\"America/Blanc-Sablon\",\"ZKL\":\"Asia/Shanghai\",\"ZKM\":\"Africa/Libreville\",\"ZKP\":\"Asia/Magadan\",\"ZLO\":\"America/Mexico_City\",\"ZLT\":\"America/Blanc-Sablon\",\"ZLX\":\"Africa/Khartoum\",\"ZMD\":\"America/Rio_Branco\",\"ZMH\":\"America/Vancouver\",\"ZMM\":\"America/Mexico_City\",\"ZMT\":\"America/Vancouver\",\"ZNA\":\"America/Vancouver\",\"ZNC\":\"America/Anchorage\",\"ZND\":\"Africa/Niamey\",\"ZNE\":\"Australia/Perth\",\"ZNU\":\"America/Vancouver\",\"ZNZ\":\"Africa/Dar_es_Salaam\",\"ZOF\":\"America/Vancouver\",\"ZOS\":\"America/Santiago\",\"ZPB\":\"America/Winnipeg\",\"ZPC\":\"America/Santiago\",\"ZPH\":\"America/New_York\",\"ZPO\":\"America/Winnipeg\",\"ZQN\":\"Pacific/Auckland\",\"ZQS\":\"America/Vancouver\",\"ZQW\":\"Europe/Berlin\",\"ZQZ\":\"Asia/Shanghai\",\"ZRH\":\"Europe/Zurich\",\"ZRI\":\"Asia/Jayapura\",\"ZRJ\":\"America/Winnipeg\",\"ZRM\":\"Asia/Jayapura\",\"ZSA\":\"America/Nassau\",\"ZSE\":\"Indian/Reunion\",\"ZSJ\":\"America/Winnipeg\",\"ZSP\":\"America/Toronto\",\"ZSS\":\"Africa/Abidjan\",\"ZST\":\"America/Vancouver\",\"ZSW\":\"America/Vancouver\",\"ZTA\":\"Pacific/Tahiti\",\"ZTB\":\"America/Blanc-Sablon\",\"ZTH\":\"Europe/Athens\",\"ZTM\":\"America/Winnipeg\",\"ZTR\":\"Europe/Kiev\",\"ZTS\":\"America/Vancouver\",\"ZTU\":\"Asia/Baku\",\"ZUC\":\"America/Winnipeg\",\"ZUD\":\"America/Santiago\",\"ZUE\":\"Africa/Abidjan\",\"ZUH\":\"Asia/Shanghai\",\"ZUL\":\"Asia/Riyadh\",\"ZUM\":\"America/Halifax\",\"ZVA\":\"Indian/Antananarivo\",\"ZVG\":\"Australia/Perth\",\"ZVK\":\"Asia/Vientiane\",\"ZWA\":\"Indian/Antananarivo\",\"ZWL\":\"America/Regina\",\"ZWN\":\"Europe/Berlin\",\"ZXQ\":\"Europe/Oslo\",\"ZXT\":\"Asia/Baku\",\"ZYI\":\"Asia/Shanghai\",\"ZYL\":\"Asia/Dhaka\",\"ZZO\":\"Asia/Vladivostok\",\"ZZU\":\"Africa/Blantyre\",\"ZZV\":\"America/New_York\"}");
/***/ }),
/* 13 */
/***/ (function(module, exports, __webpack_require__) {
var map = {
"./airlines/aa.js": 14,
"./airlines/aaSabre.js": 15,
"./airlines/ac.js": 21,
"./airlines/af.js": 22,
"./airlines/as.js": 23,
"./airlines/az.js": 24,
"./airlines/ba.js": 25,
"./airlines/cz.js": 26,
"./airlines/dl.js": 27,
"./airlines/ek.js": 28,
"./airlines/ey.js": 29,
"./airlines/ib.js": 30,
"./airlines/kl.js": 31,
"./airlines/la.js": 32,
"./airlines/lh.js": 33,
"./airlines/lx.js": 34,
"./airlines/oa.js": 35,
"./airlines/ps.js": 36,
"./airlines/qf.js": 37,
"./airlines/qr.js": 38,
"./airlines/tk.js": 39,
"./index.js": 3,
"./meta/googleFlights.js": 40,
"./meta/jetcost.js": 41,
"./meta/kayak.js": 42,
"./meta/momondo.js": 43,
"./meta/skyscanner.js": 44,
"./meta/tripadvisor.js": 45,
"./otas/cheapoair.js": 46,
"./otas/edreams.js": 47,
"./otas/etraveli.js": 48,
"./otas/expedia.js": 49,
"./otas/flightnetwork.js": 50,
"./otas/hop2.js": 51,
"./otas/lucky2go.js": 52,
"./otas/priceline.js": 53,
"./other/gcm.js": 54,
"./other/wheretocredit.js": 55
};
function webpackContext(req) {
var id = webpackContextResolve(req);
return __webpack_require__(id);
}
function webpackContextResolve(req) {
if(!__webpack_require__.o(map, req)) {
var e = new Error("Cannot find module '" + req + "'");
e.code = 'MODULE_NOT_FOUND';
throw e;
}
return map[req];
}
webpackContext.keys = function webpackContextKeys() {
return Object.keys(map);
};
webpackContext.resolve = webpackContextResolve;
module.exports = webpackContext;
webpackContext.id = 13;
/***/ }),
/* 14 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
const aaEditions = [
{ value: "en_AU", name: "Australia" },
{ value: "en_BE", name: "Belgium" },
{ value: "en_CN", name: "China" },
{ value: "en_DK", name: "Denmark" },
{ value: "en_FI", name: "Finland" },
{ value: "en_FR", name: "France / English" },
{ value: "fr_FR", name: "France / French" },
{ value: "en_DE", name: "Germany / English" },
{ value: "de_DE", name: "Germany / Deutsch" },
{ value: "en_GR", name: "Greece" },
{ value: "en_HK", name: "Hong Kong" },
{ value: "en_IN", name: "India" },
{ value: "en_IE", name: "Ireland" },
{ value: "en_IL", name: "Israel" },
{ value: "en_IT", name: "Italy" },
{ value: "en_JP", name: "Japan" },
{ value: "en_KR", name: "Korea" },
{ value: "en_NL", name: "Netherlands" },
{ value: "en_NZ", name: "New Zealand" },
{ value: "en_NO", name: "Norway" },
{ value: "en_PT", name: "Portugal" },
{ value: "en_RU", name: "Russia" },
{ value: "en_ES", name: "Spain / English" },
{ value: "es_ES", name: "Spain / Spanish" },
{ value: "en_SE", name: "Sweden" },
{ value: "en_CH", name: "Switzerland" }
];
function printAA() {
var createUrl = function(edition) {
var url =
"http://i11l-services.aa.com/xaa/mseGateway/entryPoint.php?PARAM=";
var search = "1,,USD0.00," + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length + ",";
var legs = new Array();
var leg = "";
var segs = new Array();
var seg = "";
//Build multi-city search based on legs
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
// walks each leg
segs = new Array();
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length; j++) {
//walks each segment of leg
var k = 0;
// lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length - 1) {
if (
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !=
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440
)
break;
k++;
}
seg =
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].arr.year +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].arr.month).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].arr.day).slice(-2) +
"T" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].arr.time).slice(-5) +
(typeof _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].arr.offset == "undefined"
? "+00:00"
: _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].arr.offset) +
",";
seg += _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].bookingclass + ",";
seg +=
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2) +
"T" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.time).slice(-5) +
(typeof _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.offset == "undefined"
? "+00:00"
: _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.offset) +
",";
seg += _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].dest + ",";
seg +=
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].carrier +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].fnr +
",";
seg += _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].orig; // NO , here!
segs.push(seg);
j += k;
}
search += segs.length + "," + segs.join() + ",";
//build leg structure
leg =
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dep.year +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dep.month).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dep.day).slice(-2) +
",";
leg += _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dest + ",,";
leg += _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].orig + ","; // USE , here!
legs.push(leg);
}
search += "DIRECT,";
search += edition[0].toUpperCase() + ","; // Language
search += "3,";
// validate Passengers here: Max Paxcount = 7 (Infs not included) - >11 = Adult - InfSeat = Child
var pax = Object(___WEBPACK_IMPORTED_MODULE_2__["validatePax"])({
maxPaxcount: 7,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printAA");
return;
}
search += pax.adults + ","; // ADT
search += pax.children.length + ","; // Child
search += pax.infLap + ","; // Inf
search += "0,"; // Senior
search += edition[1].toUpperCase() + ","; // Country
// push outer search
search += _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length + "," + legs.join();
url += encodeURIComponent(search);
return url;
};
// get edition
var edition = _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].aaEdition.split("_");
if (edition.length != 2) {
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "g"])("Error:Invalid AA-Edition");
return;
}
var url = createUrl(edition);
if (!url) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += aaEditions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.value.split("_")) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "American",
desc: "Europe/Asia/Pacific",
extra
};
}
Object(___WEBPACK_IMPORTED_MODULE_2__["register"])("airlines", printAA);
Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* registerSetting */ "c"])(
"American (Europe/Asia/Pacific)",
"aaEdition",
aaEditions,
"en_DE"
);
/***/ }),
/* 15 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
/* harmony import */ var _json_timezones_json__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(12);
var _json_timezones_json__WEBPACK_IMPORTED_MODULE_4___namespace = /*#__PURE__*/__webpack_require__.t(12, 1);
const aaSabreEditions = [
{ value: "BS", name: "Bahamas (USD)" },
{ value: "VG", name: "British Virgin Islands (USD)" },
{ value: "CA", name: "Canada (CAD)" },
{ value: "PR", name: "Puerto Rico (USD)" },
{ value: "GB", name: "United Kingdom (GBP)" },
{ value: "US", name: "United States (USD)" }
];
function printAaSabre() {
let datetimeToEpoch = function(y, m, d, t, ap) {
/**
* This function converts a datetime from the local timezone of the
* departing airport to its epoch value, while accounting for
* daylight savings time (DST) differences in future months.
*
* This function accepts the IATA code for a given airport and
* retrieves the timezone from a static array of known airport data
* (sourced from https://openflights.org/data.html, reduced to
* airports with IATA code, and converted to keyed json format).
* We use that timezone and Moment Timezone to account for DST if
* the future date and timezone fall in a known DST locale.
*
* Future TODO: The static airport data adds bloat and must be
* manually updated. Moment Timezone also adds bloat. Consider
* alternative implementations?
*
* @param y 4-digit year
* @param m 2-digit month
* @param d 2-digit day
* @param t 24-hour formatted time (HH:MM)
* @param y 4-digit year
* @param ap IATA airport code
* @returns Adjusted datetime string with offset in format YYYY-MM-DDTHH:MM:00+XX:00
*/
let datetimeStr =
y +
"-" +
("0" + m).slice(-2) +
"-" +
("0" + d).slice(-2) +
"T" +
t +
":00";
// use Moment Timezone to adjust for (if needed) DST of airport:
// (data is filtered to only +2 years to reduce file size)
let moment = __webpack_require__(16);
let adjustedStr = moment.tz(datetimeStr, _json_timezones_json__WEBPACK_IMPORTED_MODULE_4__[ap]).format();
return Date.parse(adjustedStr);
};
// validate Passengers here: Max Paxcount = 7 (Infs not included) - >11 = Adult - InfSeat = Child
var createUrl = function(edition) {
var pax = Object(___WEBPACK_IMPORTED_MODULE_2__["validatePax"])({
maxPaxcount: 6,
countInf: true,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printAaSabre");
return false;
}
var url = "https://www.aa.com/goto/metasearch?ITEN=GOOGLE,0,";
url += (edition || "US") + ",";
if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length === 1) {
url += "oneWay";
} else {
url += "multi";
}
url +=
",4,A" +
pax.adults +
"S0C" +
pax.children.length +
"I" +
pax.infLap +
"Y0L0,0,";
url += _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].orig + ",0," + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].dest;
url += ",0";
if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length > 1) {
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
url += ",0,0";
}
} else {
url += ",0"; // for oneWay only
}
if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length == 2) {
// insert additional parameter zeros for roundtrips or 2-leg multi-city:
url += ",0,0";
} else if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length == 1) {
// insert the departure time before the price for oneWay only:
url +=
"," +
datetimeToEpoch(
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].seg[0].dep.year,
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].seg[0].dep.month,
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].seg[0].dep.day,
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].seg[0].dep.time24,
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].seg[0].orig
);
}
url += "," + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].price + ",1,";
// this part for RT and multi-city only:
if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length > 1) {
var addon = "";
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
addon +=
"#" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].orig +
"|" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dest +
"|0|0|";
addon += datetimeToEpoch(
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[0].dep.year,
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[0].dep.month,
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[0].dep.day,
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[0].dep.time24,
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[0].orig
);
}
url += encodeURIComponent(addon) + ",";
}
var itinsegs = new Array();
// Build multi-city search based on legs:
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
// outer loop traverses each leg
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length; j++) {
// inner loop traverses each segment of the leg
var k = 0;
// skip this segment ONLY IF the flight number is the
// same as the next segment and it is only a layover
while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length - 1) {
if (
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !==
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440
)
break;
k++;
}
let itinseg =
"#" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].carrier +
"|" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].fnr +
"|" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].bookingclass +
"|" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].orig +
"|" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].dest +
"|" +
datetimeToEpoch(
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.year,
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.month,
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.day,
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.time24,
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].orig
);
itinseg += "|" + i;
itinsegs.push(itinseg);
j += k;
}
}
url += encodeURIComponent(itinsegs.join(""));
return url;
};
var url = createUrl(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].aaSabreEdition.toUpperCase());
if (!url) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += aaSabreEditions
.map(function(edition, i) {
return (
'<a href="' +
createUrl(edition.value.toUpperCase()) +
'" target="_blank">' +
edition.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "American",
desc: "America & UK",
extra
};
}
Object(___WEBPACK_IMPORTED_MODULE_2__["register"])("airlines", printAaSabre);
Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* registerSetting */ "c"])(
"American (America & UK)",
"aaSabreEdition",
aaSabreEditions,
"US"
);
/***/ }),
/* 16 */
/***/ (function(module, exports, __webpack_require__) {
var moment = module.exports = __webpack_require__(17);
moment.tz.load(__webpack_require__(20));
/***/ }),
/* 17 */
/***/ (function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;//! moment-timezone.js
//! version : 0.5.28
//! Copyright (c) JS Foundation and other contributors
//! license : MIT
//! github.com/moment/moment-timezone
(function (root, factory) {
"use strict";
/*global define*/
if ( true && module.exports) {
module.exports = factory(__webpack_require__(10)); // Node
} else if (true) {
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(10)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // AMD
} else {}
}(this, function (moment) {
"use strict";
// Do not load moment-timezone a second time.
// if (moment.tz !== undefined) {
// logError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);
// return moment;
// }
var VERSION = "0.5.28",
zones = {},
links = {},
countries = {},
names = {},
guesses = {},
cachedGuess;
if (!moment || typeof moment.version !== 'string') {
logError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');
}
var momentVersion = moment.version.split('.'),
major = +momentVersion[0],
minor = +momentVersion[1];
// Moment.js version check
if (major < 2 || (major === 2 && minor < 6)) {
logError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');
}
/************************************
Unpacking
************************************/
function charCodeToInt(charCode) {
if (charCode > 96) {
return charCode - 87;
} else if (charCode > 64) {
return charCode - 29;
}
return charCode - 48;
}
function unpackBase60(string) {
var i = 0,
parts = string.split('.'),
whole = parts[0],
fractional = parts[1] || '',
multiplier = 1,
num,
out = 0,
sign = 1;
// handle negative numbers
if (string.charCodeAt(0) === 45) {
i = 1;
sign = -1;
}
// handle digits before the decimal
for (i; i < whole.length; i++) {
num = charCodeToInt(whole.charCodeAt(i));
out = 60 * out + num;
}
// handle digits after the decimal
for (i = 0; i < fractional.length; i++) {
multiplier = multiplier / 60;
num = charCodeToInt(fractional.charCodeAt(i));
out += num * multiplier;
}
return out * sign;
}
function arrayToInt (array) {
for (var i = 0; i < array.length; i++) {
array[i] = unpackBase60(array[i]);
}
}
function intToUntil (array, length) {
for (var i = 0; i < length; i++) {
array[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds
}
array[length - 1] = Infinity;
}
function mapIndices (source, indices) {
var out = [], i;
for (i = 0; i < indices.length; i++) {
out[i] = source[indices[i]];
}
return out;
}
function unpack (string) {
var data = string.split('|'),
offsets = data[2].split(' '),
indices = data[3].split(''),
untils = data[4].split(' ');
arrayToInt(offsets);
arrayToInt(indices);
arrayToInt(untils);
intToUntil(untils, indices.length);
return {
name : data[0],
abbrs : mapIndices(data[1].split(' '), indices),
offsets : mapIndices(offsets, indices),
untils : untils,
population : data[5] | 0
};
}
/************************************
Zone object
************************************/
function Zone (packedString) {
if (packedString) {
this._set(unpack(packedString));
}
}
Zone.prototype = {
_set : function (unpacked) {
this.name = unpacked.name;
this.abbrs = unpacked.abbrs;
this.untils = unpacked.untils;
this.offsets = unpacked.offsets;
this.population = unpacked.population;
},
_index : function (timestamp) {
var target = +timestamp,
untils = this.untils,
i;
for (i = 0; i < untils.length; i++) {
if (target < untils[i]) {
return i;
}
}
},
countries : function () {
var zone_name = this.name;
return Object.keys(countries).filter(function (country_code) {
return countries[country_code].zones.indexOf(zone_name) !== -1;
});
},
parse : function (timestamp) {
var target = +timestamp,
offsets = this.offsets,
untils = this.untils,
max = untils.length - 1,
offset, offsetNext, offsetPrev, i;
for (i = 0; i < max; i++) {
offset = offsets[i];
offsetNext = offsets[i + 1];
offsetPrev = offsets[i ? i - 1 : i];
if (offset < offsetNext && tz.moveAmbiguousForward) {
offset = offsetNext;
} else if (offset > offsetPrev && tz.moveInvalidForward) {
offset = offsetPrev;
}
if (target < untils[i] - (offset * 60000)) {
return offsets[i];
}
}
return offsets[max];
},
abbr : function (mom) {
return this.abbrs[this._index(mom)];
},
offset : function (mom) {
logError("zone.offset has been deprecated in favor of zone.utcOffset");
return this.offsets[this._index(mom)];
},
utcOffset : function (mom) {
return this.offsets[this._index(mom)];
}
};
/************************************
Country object
************************************/
function Country (country_name, zone_names) {
this.name = country_name;
this.zones = zone_names;
}
/************************************
Current Timezone
************************************/
function OffsetAt(at) {
var timeString = at.toTimeString();
var abbr = timeString.match(/\([a-z ]+\)/i);
if (abbr && abbr[0]) {
// 17:56:31 GMT-0600 (CST)
// 17:56:31 GMT-0600 (Central Standard Time)
abbr = abbr[0].match(/[A-Z]/g);
abbr = abbr ? abbr.join('') : undefined;
} else {
// 17:56:31 CST
// 17:56:31 GMT+0800 (台北標準時間)
abbr = timeString.match(/[A-Z]{3,5}/g);
abbr = abbr ? abbr[0] : undefined;
}
if (abbr === 'GMT') {
abbr = undefined;
}
this.at = +at;
this.abbr = abbr;
this.offset = at.getTimezoneOffset();
}
function ZoneScore(zone) {
this.zone = zone;
this.offsetScore = 0;
this.abbrScore = 0;
}
ZoneScore.prototype.scoreOffsetAt = function (offsetAt) {
this.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);
if (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {
this.abbrScore++;
}
};
function findChange(low, high) {
var mid, diff;
while ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {
mid = new OffsetAt(new Date(low.at + diff));
if (mid.offset === low.offset) {
low = mid;
} else {
high = mid;
}
}
return low;
}
function userOffsets() {
var startYear = new Date().getFullYear() - 2,
last = new OffsetAt(new Date(startYear, 0, 1)),
offsets = [last],
change, next, i;
for (i = 1; i < 48; i++) {
next = new OffsetAt(new Date(startYear, i, 1));
if (next.offset !== last.offset) {
change = findChange(last, next);
offsets.push(change);
offsets.push(new OffsetAt(new Date(change.at + 6e4)));
}
last = next;
}
for (i = 0; i < 4; i++) {
offsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));
offsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));
}
return offsets;
}
function sortZoneScores (a, b) {
if (a.offsetScore !== b.offsetScore) {
return a.offsetScore - b.offsetScore;
}
if (a.abbrScore !== b.abbrScore) {
return a.abbrScore - b.abbrScore;
}
if (a.zone.population !== b.zone.population) {
return b.zone.population - a.zone.population;
}
return b.zone.name.localeCompare(a.zone.name);
}
function addToGuesses (name, offsets) {
var i, offset;
arrayToInt(offsets);
for (i = 0; i < offsets.length; i++) {
offset = offsets[i];
guesses[offset] = guesses[offset] || {};
guesses[offset][name] = true;
}
}
function guessesForUserOffsets (offsets) {
var offsetsLength = offsets.length,
filteredGuesses = {},
out = [],
i, j, guessesOffset;
for (i = 0; i < offsetsLength; i++) {
guessesOffset = guesses[offsets[i].offset] || {};
for (j in guessesOffset) {
if (guessesOffset.hasOwnProperty(j)) {
filteredGuesses[j] = true;
}
}
}
for (i in filteredGuesses) {
if (filteredGuesses.hasOwnProperty(i)) {
out.push(names[i]);
}
}
return out;
}
function rebuildGuess () {
// use Intl API when available and returning valid time zone
try {
var intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;
if (intlName && intlName.length > 3) {
var name = names[normalizeName(intlName)];
if (name) {
return name;
}
logError("Moment Timezone found " + intlName + " from the Intl api, but did not have that data loaded.");
}
} catch (e) {
// Intl unavailable, fall back to manual guessing.
}
var offsets = userOffsets(),
offsetsLength = offsets.length,
guesses = guessesForUserOffsets(offsets),
zoneScores = [],
zoneScore, i, j;
for (i = 0; i < guesses.length; i++) {
zoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);
for (j = 0; j < offsetsLength; j++) {
zoneScore.scoreOffsetAt(offsets[j]);
}
zoneScores.push(zoneScore);
}
zoneScores.sort(sortZoneScores);
return zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;
}
function guess (ignoreCache) {
if (!cachedGuess || ignoreCache) {
cachedGuess = rebuildGuess();
}
return cachedGuess;
}
/************************************
Global Methods
************************************/
function normalizeName (name) {
return (name || '').toLowerCase().replace(/\//g, '_');
}
function addZone (packed) {
var i, name, split, normalized;
if (typeof packed === "string") {
packed = [packed];
}
for (i = 0; i < packed.length; i++) {
split = packed[i].split('|');
name = split[0];
normalized = normalizeName(name);
zones[normalized] = packed[i];
names[normalized] = name;
addToGuesses(normalized, split[2].split(' '));
}
}
function getZone (name, caller) {
name = normalizeName(name);
var zone = zones[name];
var link;
if (zone instanceof Zone) {
return zone;
}
if (typeof zone === 'string') {
zone = new Zone(zone);
zones[name] = zone;
return zone;
}
// Pass getZone to prevent recursion more than 1 level deep
if (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {
zone = zones[name] = new Zone();
zone._set(link);
zone.name = names[name];
return zone;
}
return null;
}
function getNames () {
var i, out = [];
for (i in names) {
if (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {
out.push(names[i]);
}
}
return out.sort();
}
function getCountryNames () {
return Object.keys(countries);
}
function addLink (aliases) {
var i, alias, normal0, normal1;
if (typeof aliases === "string") {
aliases = [aliases];
}
for (i = 0; i < aliases.length; i++) {
alias = aliases[i].split('|');
normal0 = normalizeName(alias[0]);
normal1 = normalizeName(alias[1]);
links[normal0] = normal1;
names[normal0] = alias[0];
links[normal1] = normal0;
names[normal1] = alias[1];
}
}
function addCountries (data) {
var i, country_code, country_zones, split;
if (!data || !data.length) return;
for (i = 0; i < data.length; i++) {
split = data[i].split('|');
country_code = split[0].toUpperCase();
country_zones = split[1].split(' ');
countries[country_code] = new Country(
country_code,
country_zones
);
}
}
function getCountry (name) {
name = name.toUpperCase();
return countries[name] || null;
}
function zonesForCountry(country, with_offset) {
country = getCountry(country);
if (!country) return null;
var zones = country.zones.sort();
if (with_offset) {
return zones.map(function (zone_name) {
var zone = getZone(zone_name);
return {
name: zone_name,
offset: zone.utcOffset(new Date())
};
});
}
return zones;
}
function loadData (data) {
addZone(data.zones);
addLink(data.links);
addCountries(data.countries);
tz.dataVersion = data.version;
}
function zoneExists (name) {
if (!zoneExists.didShowError) {
zoneExists.didShowError = true;
logError("moment.tz.zoneExists('" + name + "') has been deprecated in favor of !moment.tz.zone('" + name + "')");
}
return !!getZone(name);
}
function needsOffset (m) {
var isUnixTimestamp = (m._f === 'X' || m._f === 'x');
return !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);
}
function logError (message) {
if (typeof console !== 'undefined' && typeof console.error === 'function') {
console.error(message);
}
}
/************************************
moment.tz namespace
************************************/
function tz (input) {
var args = Array.prototype.slice.call(arguments, 0, -1),
name = arguments[arguments.length - 1],
zone = getZone(name),
out = moment.utc.apply(null, args);
if (zone && !moment.isMoment(input) && needsOffset(out)) {
out.add(zone.parse(out), 'minutes');
}
out.tz(name);
return out;
}
tz.version = VERSION;
tz.dataVersion = '';
tz._zones = zones;
tz._links = links;
tz._names = names;
tz._countries = countries;
tz.add = addZone;
tz.link = addLink;
tz.load = loadData;
tz.zone = getZone;
tz.zoneExists = zoneExists; // deprecated in 0.1.0
tz.guess = guess;
tz.names = getNames;
tz.Zone = Zone;
tz.unpack = unpack;
tz.unpackBase60 = unpackBase60;
tz.needsOffset = needsOffset;
tz.moveInvalidForward = true;
tz.moveAmbiguousForward = false;
tz.countries = getCountryNames;
tz.zonesForCountry = zonesForCountry;
/************************************
Interface with Moment.js
************************************/
var fn = moment.fn;
moment.tz = tz;
moment.defaultZone = null;
moment.updateOffset = function (mom, keepTime) {
var zone = moment.defaultZone,
offset;
if (mom._z === undefined) {
if (zone && needsOffset(mom) && !mom._isUTC) {
mom._d = moment.utc(mom._a)._d;
mom.utc().add(zone.parse(mom), 'minutes');
}
mom._z = zone;
}
if (mom._z) {
offset = mom._z.utcOffset(mom);
if (Math.abs(offset) < 16) {
offset = offset / 60;
}
if (mom.utcOffset !== undefined) {
var z = mom._z;
mom.utcOffset(-offset, keepTime);
mom._z = z;
} else {
mom.zone(offset, keepTime);
}
}
};
fn.tz = function (name, keepTime) {
if (name) {
if (typeof name !== 'string') {
throw new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');
}
this._z = getZone(name);
if (this._z) {
moment.updateOffset(this, keepTime);
} else {
logError("Moment Timezone has no data for " + name + ". See http://momentjs.com/timezone/docs/#/data-loading/.");
}
return this;
}
if (this._z) { return this._z.name; }
};
function abbrWrap (old) {
return function () {
if (this._z) { return this._z.abbr(this); }
return old.call(this);
};
}
function resetZoneWrap (old) {
return function () {
this._z = null;
return old.apply(this, arguments);
};
}
function resetZoneWrap2 (old) {
return function () {
if (arguments.length > 0) this._z = null;
return old.apply(this, arguments);
};
}
fn.zoneName = abbrWrap(fn.zoneName);
fn.zoneAbbr = abbrWrap(fn.zoneAbbr);
fn.utc = resetZoneWrap(fn.utc);
fn.local = resetZoneWrap(fn.local);
fn.utcOffset = resetZoneWrap2(fn.utcOffset);
moment.tz.setDefault = function(name) {
if (major < 2 || (major === 2 && minor < 9)) {
logError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');
}
moment.defaultZone = name ? getZone(name) : null;
return moment;
};
// Cloning a moment should include the _z property.
var momentProperties = moment.momentProperties;
if (Object.prototype.toString.call(momentProperties) === '[object Array]') {
// moment 2.8.1+
momentProperties.push('_z');
momentProperties.push('_a');
} else if (momentProperties) {
// moment 2.7.0
momentProperties._z = null;
}
// INJECT DATA
return moment;
}));
/***/ }),
/* 18 */
/***/ (function(module, exports) {
module.exports = function(module) {
if (!module.webpackPolyfill) {
module.deprecate = function() {};
module.paths = [];
// module.parent = undefined by default
if (!module.children) module.children = [];
Object.defineProperty(module, "loaded", {
enumerable: true,
get: function() {
return module.l;
}
});
Object.defineProperty(module, "id", {
enumerable: true,
get: function() {
return module.i;
}
});
module.webpackPolyfill = 1;
}
return module;
};
/***/ }),
/* 19 */
/***/ (function(module, exports, __webpack_require__) {
var map = {
"./de": 11,
"./de.js": 11
};
function webpackContext(req) {
var id = webpackContextResolve(req);
return __webpack_require__(id);
}
function webpackContextResolve(req) {
if(!__webpack_require__.o(map, req)) {
var e = new Error("Cannot find module '" + req + "'");
e.code = 'MODULE_NOT_FOUND';
throw e;
}
return map[req];
}
webpackContext.keys = function webpackContextKeys() {
return Object.keys(map);
};
webpackContext.resolve = webpackContextResolve;
module.exports = webpackContext;
webpackContext.id = 19;
/***/ }),
/* 20 */
/***/ (function(module) {
module.exports = JSON.parse("{\"version\":\"2019c\",\"zones\":[\"Africa/Abidjan|GMT|0|0||48e5\",\"Africa/Nairobi|EAT|-30|0||47e5\",\"Africa/Algiers|CET|-10|0||26e5\",\"Africa/Lagos|WAT|-10|0||17e6\",\"Africa/Khartoum|CAT|-20|0||51e5\",\"Africa/Cairo|EET|-20|0||15e6\",\"Africa/Casablanca|+01 +00|-10 0|0101010|22sq0 e00 28M0 e00 2600 gM0|32e5\",\"Europe/Paris|CET CEST|-10 -20|0101010|22k10 1o00 11A0 1qM0 WM0 1qM0|11e6\",\"Africa/Johannesburg|SAST|-20|0||84e5\",\"America/Adak|HST HDT|a0 90|0101010|22bM0 1zb0 Rd0 1zb0 Op0 1zb0|326\",\"America/Anchorage|AKST AKDT|90 80|0101010|22bL0 1zb0 Rd0 1zb0 Op0 1zb0|30e4\",\"America/Santo_Domingo|AST|40|0||29e5\",\"America/Sao_Paulo|-03|30|0||20e6\",\"America/Asuncion|-03 -04|30 40|0101010|22hf0 1ip0 19X0 1fB0 19X0 1fB0|28e5\",\"America/Panama|EST|50|0||15e5\",\"America/Mexico_City|CST CDT|60 50|0101010|22mU0 1lb0 14p0 1nX0 11B0 1nX0|20e6\",\"America/Managua|CST|60|0||22e5\",\"America/Caracas|-04|40|0||29e5\",\"America/Lima|-05|50|0||11e6\",\"America/Denver|MST MDT|70 60|0101010|22bJ0 1zb0 Rd0 1zb0 Op0 1zb0|26e5\",\"America/Chicago|CST CDT|60 50|0101010|22bI0 1zb0 Rd0 1zb0 Op0 1zb0|92e5\",\"America/Chihuahua|MST MDT|70 60|0101010|22mV0 1lb0 14p0 1nX0 11B0 1nX0|81e4\",\"America/Phoenix|MST|70|0||42e5\",\"America/Los_Angeles|PST PDT|80 70|0101010|22bK0 1zb0 Rd0 1zb0 Op0 1zb0|15e6\",\"America/New_York|EST EDT|50 40|0101010|22bH0 1zb0 Rd0 1zb0 Op0 1zb0|21e6\",\"America/Halifax|AST ADT|40 30|0101010|22bG0 1zb0 Rd0 1zb0 Op0 1zb0|39e4\",\"America/Godthab|-03 -02|30 20|0101010|22k10 1o00 11A0 1qM0 WM0 1qM0|17e3\",\"America/Havana|CST CDT|50 40|0101010|22bF0 1zc0 Rc0 1zc0 Oo0 1zc0|21e5\",\"America/Miquelon|-03 -02|30 20|0101010|22bF0 1zb0 Rd0 1zb0 Op0 1zb0|61e2\",\"America/Noronha|-02|20|0||30e2\",\"America/Santiago|-03 -04|30 40|0101010|22mP0 11B0 1nX0 11B0 1nX0 11B0|62e5\",\"Atlantic/Azores|-01 +00|10 0|0101010|22k10 1o00 11A0 1qM0 WM0 1qM0|25e4\",\"America/St_Johns|NST NDT|3u 2u|0101010|22bFu 1zb0 Rd0 1zb0 Op0 1zb0|11e4\",\"Asia/Kuala_Lumpur|+08|-80|0||71e5\",\"Asia/Bangkok|+07|-70|0||15e6\",\"Asia/Vladivostok|+10|-a0|0||60e4\",\"Asia/Sakhalin|+11|-b0|0||58e4\",\"Asia/Tashkent|+05|-50|0||23e5\",\"Pacific/Auckland|NZDT NZST|-d0 -c0|0101010|22mC0 1a00 1fA0 1a00 1fA0 1a00|14e5\",\"Europe/Istanbul|+03|-30|0||13e6\",\"Antarctica/Troll|+00 +02|0 -20|0101010|22k10 1o00 11A0 1qM0 WM0 1qM0|40\",\"Asia/Dhaka|+06|-60|0||16e6\",\"Asia/Amman|EET EEST|-20 -30|0101010|22ja0 1qM0 WM0 1qM0 11A0 1o00|25e5\",\"Asia/Kamchatka|+12|-c0|0||18e4\",\"Asia/Dubai|+04|-40|0||39e5\",\"Asia/Beirut|EET EEST|-20 -30|0101010|22jW0 1nX0 11B0 1qL0 WN0 1qL0|22e5\",\"Asia/Kolkata|IST|-5u|0||15e6\",\"Asia/Chita|+09|-90|0||33e4\",\"Asia/Shanghai|CST|-80|0||23e6\",\"Asia/Colombo|+0530|-5u|0||22e5\",\"Asia/Damascus|EET EEST|-20 -30|0101010|22ja0 1qL0 WN0 1qL0 WN0 1qL0|26e5\",\"Europe/Athens|EET EEST|-20 -30|0101010|22k10 1o00 11A0 1qM0 WM0 1qM0|35e5\",\"Asia/Gaza|EET EEST|-20 -30|0101010|22ja0 1rc0 Wo0 1rc0 Wo0 1rc0|18e5\",\"Asia/Hong_Kong|HKT|-80|0||73e5\",\"Asia/Jakarta|WIB|-70|0||31e6\",\"Asia/Jayapura|WIT|-90|0||26e4\",\"Asia/Jerusalem|IST IDT|-20 -30|0101010|22jc0 1oL0 10N0 1rz0 W10 1rz0|81e4\",\"Asia/Kabul|+0430|-4u|0||46e5\",\"Asia/Karachi|PKT|-50|0||24e6\",\"Asia/Kathmandu|+0545|-5J|0||12e5\",\"Asia/Makassar|WITA|-80|0||15e5\",\"Asia/Manila|PST|-80|0||24e6\",\"Asia/Seoul|KST|-90|0||23e6\",\"Asia/Rangoon|+0630|-6u|0||48e5\",\"Asia/Tehran|+0330 +0430|-3u -4u|0101010|22gIu 1dz0 1cN0 1dz0 1cp0 1dz0|14e6\",\"Asia/Tokyo|JST|-90|0||38e6\",\"Europe/Lisbon|WET WEST|0 -10|0101010|22k10 1o00 11A0 1qM0 WM0 1qM0|27e5\",\"Atlantic/Cape_Verde|-01|10|0||50e4\",\"Australia/Sydney|AEDT AEST|-b0 -a0|0101010|22mE0 1cM0 1cM0 1cM0 1cM0 1cM0|40e5\",\"Australia/Adelaide|ACDT ACST|-au -9u|0101010|22mEu 1cM0 1cM0 1cM0 1cM0 1cM0|11e5\",\"Australia/Brisbane|AEST|-a0|0||20e5\",\"Australia/Darwin|ACST|-9u|0||12e4\",\"Australia/Eucla|+0845|-8J|0||368\",\"Australia/Lord_Howe|+11 +1030|-b0 -au|0101010|22mD0 1cMu 1cLu 1cMu 1cLu 1cMu|347\",\"Australia/Perth|AWST|-80|0||18e5\",\"Pacific/Easter|-05 -06|50 60|0101010|22mP0 11B0 1nX0 11B0 1nX0 11B0|30e2\",\"Europe/Dublin|GMT IST|0 -10|0101010|22k10 1o00 11A0 1qM0 WM0 1qM0|12e5\",\"Etc/GMT-1|+01|-10|0|\",\"Pacific/Tongatapu|+13|-d0|0||75e3\",\"Pacific/Kiritimati|+14|-e0|0||51e2\",\"Etc/GMT-2|+02|-20|0|\",\"Pacific/Tahiti|-10|a0|0||18e4\",\"Pacific/Niue|-11|b0|0||12e2\",\"Etc/GMT+12|-12|c0|0|\",\"Pacific/Galapagos|-06|60|0||25e3\",\"Etc/GMT+7|-07|70|0|\",\"Pacific/Pitcairn|-08|80|0||56\",\"Pacific/Gambier|-09|90|0||125\",\"Etc/UTC|UTC|0|0|\",\"Europe/London|GMT BST|0 -10|0101010|22k10 1o00 11A0 1qM0 WM0 1qM0|10e6\",\"Europe/Chisinau|EET EEST|-20 -30|0101010|22k00 1o00 11A0 1qM0 WM0 1qM0|67e4\",\"Europe/Moscow|MSK|-30|0||16e6\",\"Pacific/Honolulu|HST|a0|0||37e4\",\"MET|MET MEST|-10 -20|0101010|22k10 1o00 11A0 1qM0 WM0 1qM0\",\"Pacific/Chatham|+1345 +1245|-dJ -cJ|0101010|22mC0 1a00 1fA0 1a00 1fA0 1a00|600\",\"Pacific/Apia|+14 +13|-e0 -d0|0101010|22mC0 1a00 1fA0 1a00 1fA0 1a00|37e3\",\"Pacific/Fiji|+13 +12|-d0 -c0|0101010|21N20 20o0 s00 20o0 pc0 20o0|88e4\",\"Pacific/Guam|ChST|-a0|0||17e4\",\"Pacific/Marquesas|-0930|9u|0||86e2\",\"Pacific/Pago_Pago|SST|b0|0||37e2\",\"Pacific/Norfolk|+12 +11|-c0 -b0|0101010|22mD0 1cM0 1cM0 1cM0 1cM0 1cM0|25e4\"],\"links\":[\"Africa/Abidjan|Africa/Accra\",\"Africa/Abidjan|Africa/Bamako\",\"Africa/Abidjan|Africa/Banjul\",\"Africa/Abidjan|Africa/Bissau\",\"Africa/Abidjan|Africa/Conakry\",\"Africa/Abidjan|Africa/Dakar\",\"Africa/Abidjan|Africa/Freetown\",\"Africa/Abidjan|Africa/Lome\",\"Africa/Abidjan|Africa/Monrovia\",\"Africa/Abidjan|Africa/Nouakchott\",\"Africa/Abidjan|Africa/Ouagadougou\",\"Africa/Abidjan|Africa/Sao_Tome\",\"Africa/Abidjan|Africa/Timbuktu\",\"Africa/Abidjan|America/Danmarkshavn\",\"Africa/Abidjan|Atlantic/Reykjavik\",\"Africa/Abidjan|Atlantic/St_Helena\",\"Africa/Abidjan|Etc/GMT\",\"Africa/Abidjan|Etc/GMT+0\",\"Africa/Abidjan|Etc/GMT-0\",\"Africa/Abidjan|Etc/GMT0\",\"Africa/Abidjan|Etc/Greenwich\",\"Africa/Abidjan|GMT\",\"Africa/Abidjan|GMT+0\",\"Africa/Abidjan|GMT-0\",\"Africa/Abidjan|GMT0\",\"Africa/Abidjan|Greenwich\",\"Africa/Abidjan|Iceland\",\"Africa/Algiers|Africa/Tunis\",\"Africa/Cairo|Africa/Tripoli\",\"Africa/Cairo|Egypt\",\"Africa/Cairo|Europe/Kaliningrad\",\"Africa/Cairo|Libya\",\"Africa/Casablanca|Africa/El_Aaiun\",\"Africa/Johannesburg|Africa/Maseru\",\"Africa/Johannesburg|Africa/Mbabane\",\"Africa/Khartoum|Africa/Blantyre\",\"Africa/Khartoum|Africa/Bujumbura\",\"Africa/Khartoum|Africa/Gaborone\",\"Africa/Khartoum|Africa/Harare\",\"Africa/Khartoum|Africa/Kigali\",\"Africa/Khartoum|Africa/Lubumbashi\",\"Africa/Khartoum|Africa/Lusaka\",\"Africa/Khartoum|Africa/Maputo\",\"Africa/Khartoum|Africa/Windhoek\",\"Africa/Lagos|Africa/Bangui\",\"Africa/Lagos|Africa/Brazzaville\",\"Africa/Lagos|Africa/Douala\",\"Africa/Lagos|Africa/Kinshasa\",\"Africa/Lagos|Africa/Libreville\",\"Africa/Lagos|Africa/Luanda\",\"Africa/Lagos|Africa/Malabo\",\"Africa/Lagos|Africa/Ndjamena\",\"Africa/Lagos|Africa/Niamey\",\"Africa/Lagos|Africa/Porto-Novo\",\"Africa/Nairobi|Africa/Addis_Ababa\",\"Africa/Nairobi|Africa/Asmara\",\"Africa/Nairobi|Africa/Asmera\",\"Africa/Nairobi|Africa/Dar_es_Salaam\",\"Africa/Nairobi|Africa/Djibouti\",\"Africa/Nairobi|Africa/Juba\",\"Africa/Nairobi|Africa/Kampala\",\"Africa/Nairobi|Africa/Mogadishu\",\"Africa/Nairobi|Indian/Antananarivo\",\"Africa/Nairobi|Indian/Comoro\",\"Africa/Nairobi|Indian/Mayotte\",\"America/Adak|America/Atka\",\"America/Adak|US/Aleutian\",\"America/Anchorage|America/Juneau\",\"America/Anchorage|America/Metlakatla\",\"America/Anchorage|America/Nome\",\"America/Anchorage|America/Sitka\",\"America/Anchorage|America/Yakutat\",\"America/Anchorage|US/Alaska\",\"America/Caracas|America/Boa_Vista\",\"America/Caracas|America/Campo_Grande\",\"America/Caracas|America/Cuiaba\",\"America/Caracas|America/Guyana\",\"America/Caracas|America/La_Paz\",\"America/Caracas|America/Manaus\",\"America/Caracas|America/Porto_Velho\",\"America/Caracas|Brazil/West\",\"America/Caracas|Etc/GMT+4\",\"America/Chicago|America/Indiana/Knox\",\"America/Chicago|America/Indiana/Tell_City\",\"America/Chicago|America/Knox_IN\",\"America/Chicago|America/Matamoros\",\"America/Chicago|America/Menominee\",\"America/Chicago|America/North_Dakota/Beulah\",\"America/Chicago|America/North_Dakota/Center\",\"America/Chicago|America/North_Dakota/New_Salem\",\"America/Chicago|America/Rainy_River\",\"America/Chicago|America/Rankin_Inlet\",\"America/Chicago|America/Resolute\",\"America/Chicago|America/Winnipeg\",\"America/Chicago|CST6CDT\",\"America/Chicago|Canada/Central\",\"America/Chicago|US/Central\",\"America/Chicago|US/Indiana-Starke\",\"America/Chihuahua|America/Mazatlan\",\"America/Chihuahua|Mexico/BajaSur\",\"America/Denver|America/Boise\",\"America/Denver|America/Cambridge_Bay\",\"America/Denver|America/Edmonton\",\"America/Denver|America/Inuvik\",\"America/Denver|America/Ojinaga\",\"America/Denver|America/Shiprock\",\"America/Denver|America/Yellowknife\",\"America/Denver|Canada/Mountain\",\"America/Denver|MST7MDT\",\"America/Denver|Navajo\",\"America/Denver|US/Mountain\",\"America/Halifax|America/Glace_Bay\",\"America/Halifax|America/Goose_Bay\",\"America/Halifax|America/Moncton\",\"America/Halifax|America/Thule\",\"America/Halifax|Atlantic/Bermuda\",\"America/Halifax|Canada/Atlantic\",\"America/Havana|Cuba\",\"America/Lima|America/Bogota\",\"America/Lima|America/Eirunepe\",\"America/Lima|America/Guayaquil\",\"America/Lima|America/Porto_Acre\",\"America/Lima|America/Rio_Branco\",\"America/Lima|Brazil/Acre\",\"America/Lima|Etc/GMT+5\",\"America/Los_Angeles|America/Dawson\",\"America/Los_Angeles|America/Ensenada\",\"America/Los_Angeles|America/Santa_Isabel\",\"America/Los_Angeles|America/Tijuana\",\"America/Los_Angeles|America/Vancouver\",\"America/Los_Angeles|America/Whitehorse\",\"America/Los_Angeles|Canada/Pacific\",\"America/Los_Angeles|Canada/Yukon\",\"America/Los_Angeles|Mexico/BajaNorte\",\"America/Los_Angeles|PST8PDT\",\"America/Los_Angeles|US/Pacific\",\"America/Los_Angeles|US/Pacific-New\",\"America/Managua|America/Belize\",\"America/Managua|America/Costa_Rica\",\"America/Managua|America/El_Salvador\",\"America/Managua|America/Guatemala\",\"America/Managua|America/Regina\",\"America/Managua|America/Swift_Current\",\"America/Managua|America/Tegucigalpa\",\"America/Managua|Canada/Saskatchewan\",\"America/Mexico_City|America/Bahia_Banderas\",\"America/Mexico_City|America/Merida\",\"America/Mexico_City|America/Monterrey\",\"America/Mexico_City|Mexico/General\",\"America/New_York|America/Detroit\",\"America/New_York|America/Fort_Wayne\",\"America/New_York|America/Grand_Turk\",\"America/New_York|America/Indiana/Indianapolis\",\"America/New_York|America/Indiana/Marengo\",\"America/New_York|America/Indiana/Petersburg\",\"America/New_York|America/Indiana/Vevay\",\"America/New_York|America/Indiana/Vincennes\",\"America/New_York|America/Indiana/Winamac\",\"America/New_York|America/Indianapolis\",\"America/New_York|America/Iqaluit\",\"America/New_York|America/Kentucky/Louisville\",\"America/New_York|America/Kentucky/Monticello\",\"America/New_York|America/Louisville\",\"America/New_York|America/Montreal\",\"America/New_York|America/Nassau\",\"America/New_York|America/Nipigon\",\"America/New_York|America/Pangnirtung\",\"America/New_York|America/Port-au-Prince\",\"America/New_York|America/Thunder_Bay\",\"America/New_York|America/Toronto\",\"America/New_York|Canada/Eastern\",\"America/New_York|EST5EDT\",\"America/New_York|US/East-Indiana\",\"America/New_York|US/Eastern\",\"America/New_York|US/Michigan\",\"America/Noronha|Atlantic/South_Georgia\",\"America/Noronha|Brazil/DeNoronha\",\"America/Noronha|Etc/GMT+2\",\"America/Panama|America/Atikokan\",\"America/Panama|America/Cancun\",\"America/Panama|America/Cayman\",\"America/Panama|America/Coral_Harbour\",\"America/Panama|America/Jamaica\",\"America/Panama|EST\",\"America/Panama|Jamaica\",\"America/Phoenix|America/Creston\",\"America/Phoenix|America/Dawson_Creek\",\"America/Phoenix|America/Fort_Nelson\",\"America/Phoenix|America/Hermosillo\",\"America/Phoenix|MST\",\"America/Phoenix|US/Arizona\",\"America/Santiago|Chile/Continental\",\"America/Santo_Domingo|America/Anguilla\",\"America/Santo_Domingo|America/Antigua\",\"America/Santo_Domingo|America/Aruba\",\"America/Santo_Domingo|America/Barbados\",\"America/Santo_Domingo|America/Blanc-Sablon\",\"America/Santo_Domingo|America/Curacao\",\"America/Santo_Domingo|America/Dominica\",\"America/Santo_Domingo|America/Grenada\",\"America/Santo_Domingo|America/Guadeloupe\",\"America/Santo_Domingo|America/Kralendijk\",\"America/Santo_Domingo|America/Lower_Princes\",\"America/Santo_Domingo|America/Marigot\",\"America/Santo_Domingo|America/Martinique\",\"America/Santo_Domingo|America/Montserrat\",\"America/Santo_Domingo|America/Port_of_Spain\",\"America/Santo_Domingo|America/Puerto_Rico\",\"America/Santo_Domingo|America/St_Barthelemy\",\"America/Santo_Domingo|America/St_Kitts\",\"America/Santo_Domingo|America/St_Lucia\",\"America/Santo_Domingo|America/St_Thomas\",\"America/Santo_Domingo|America/St_Vincent\",\"America/Santo_Domingo|America/Tortola\",\"America/Santo_Domingo|America/Virgin\",\"America/Sao_Paulo|America/Araguaina\",\"America/Sao_Paulo|America/Argentina/Buenos_Aires\",\"America/Sao_Paulo|America/Argentina/Catamarca\",\"America/Sao_Paulo|America/Argentina/ComodRivadavia\",\"America/Sao_Paulo|America/Argentina/Cordoba\",\"America/Sao_Paulo|America/Argentina/Jujuy\",\"America/Sao_Paulo|America/Argentina/La_Rioja\",\"America/Sao_Paulo|America/Argentina/Mendoza\",\"America/Sao_Paulo|America/Argentina/Rio_Gallegos\",\"America/Sao_Paulo|America/Argentina/Salta\",\"America/Sao_Paulo|America/Argentina/San_Juan\",\"America/Sao_Paulo|America/Argentina/San_Luis\",\"America/Sao_Paulo|America/Argentina/Tucuman\",\"America/Sao_Paulo|America/Argentina/Ushuaia\",\"America/Sao_Paulo|America/Bahia\",\"America/Sao_Paulo|America/Belem\",\"America/Sao_Paulo|America/Buenos_Aires\",\"America/Sao_Paulo|America/Catamarca\",\"America/Sao_Paulo|America/Cayenne\",\"America/Sao_Paulo|America/Cordoba\",\"America/Sao_Paulo|America/Fortaleza\",\"America/Sao_Paulo|America/Jujuy\",\"America/Sao_Paulo|America/Maceio\",\"America/Sao_Paulo|America/Mendoza\",\"America/Sao_Paulo|America/Montevideo\",\"America/Sao_Paulo|America/Paramaribo\",\"America/Sao_Paulo|America/Punta_Arenas\",\"America/Sao_Paulo|America/Recife\",\"America/Sao_Paulo|America/Rosario\",\"America/Sao_Paulo|America/Santarem\",\"America/Sao_Paulo|Antarctica/Palmer\",\"America/Sao_Paulo|Antarctica/Rothera\",\"America/Sao_Paulo|Atlantic/Stanley\",\"America/Sao_Paulo|Brazil/East\",\"America/Sao_Paulo|Etc/GMT+3\",\"America/St_Johns|Canada/Newfoundland\",\"Asia/Bangkok|Antarctica/Davis\",\"Asia/Bangkok|Asia/Barnaul\",\"Asia/Bangkok|Asia/Ho_Chi_Minh\",\"Asia/Bangkok|Asia/Hovd\",\"Asia/Bangkok|Asia/Krasnoyarsk\",\"Asia/Bangkok|Asia/Novokuznetsk\",\"Asia/Bangkok|Asia/Novosibirsk\",\"Asia/Bangkok|Asia/Phnom_Penh\",\"Asia/Bangkok|Asia/Saigon\",\"Asia/Bangkok|Asia/Tomsk\",\"Asia/Bangkok|Asia/Vientiane\",\"Asia/Bangkok|Etc/GMT-7\",\"Asia/Bangkok|Indian/Christmas\",\"Asia/Chita|Asia/Dili\",\"Asia/Chita|Asia/Khandyga\",\"Asia/Chita|Asia/Yakutsk\",\"Asia/Chita|Etc/GMT-9\",\"Asia/Chita|Pacific/Palau\",\"Asia/Dhaka|Antarctica/Vostok\",\"Asia/Dhaka|Asia/Almaty\",\"Asia/Dhaka|Asia/Bishkek\",\"Asia/Dhaka|Asia/Dacca\",\"Asia/Dhaka|Asia/Kashgar\",\"Asia/Dhaka|Asia/Omsk\",\"Asia/Dhaka|Asia/Qostanay\",\"Asia/Dhaka|Asia/Thimbu\",\"Asia/Dhaka|Asia/Thimphu\",\"Asia/Dhaka|Asia/Urumqi\",\"Asia/Dhaka|Etc/GMT-6\",\"Asia/Dhaka|Indian/Chagos\",\"Asia/Dubai|Asia/Baku\",\"Asia/Dubai|Asia/Muscat\",\"Asia/Dubai|Asia/Tbilisi\",\"Asia/Dubai|Asia/Yerevan\",\"Asia/Dubai|Etc/GMT-4\",\"Asia/Dubai|Europe/Astrakhan\",\"Asia/Dubai|Europe/Samara\",\"Asia/Dubai|Europe/Saratov\",\"Asia/Dubai|Europe/Ulyanovsk\",\"Asia/Dubai|Europe/Volgograd\",\"Asia/Dubai|Indian/Mahe\",\"Asia/Dubai|Indian/Mauritius\",\"Asia/Dubai|Indian/Reunion\",\"Asia/Gaza|Asia/Hebron\",\"Asia/Hong_Kong|Hongkong\",\"Asia/Jakarta|Asia/Pontianak\",\"Asia/Jerusalem|Asia/Tel_Aviv\",\"Asia/Jerusalem|Israel\",\"Asia/Kamchatka|Asia/Anadyr\",\"Asia/Kamchatka|Etc/GMT-12\",\"Asia/Kamchatka|Kwajalein\",\"Asia/Kamchatka|Pacific/Funafuti\",\"Asia/Kamchatka|Pacific/Kwajalein\",\"Asia/Kamchatka|Pacific/Majuro\",\"Asia/Kamchatka|Pacific/Nauru\",\"Asia/Kamchatka|Pacific/Tarawa\",\"Asia/Kamchatka|Pacific/Wake\",\"Asia/Kamchatka|Pacific/Wallis\",\"Asia/Kathmandu|Asia/Katmandu\",\"Asia/Kolkata|Asia/Calcutta\",\"Asia/Kuala_Lumpur|Antarctica/Casey\",\"Asia/Kuala_Lumpur|Asia/Brunei\",\"Asia/Kuala_Lumpur|Asia/Choibalsan\",\"Asia/Kuala_Lumpur|Asia/Irkutsk\",\"Asia/Kuala_Lumpur|Asia/Kuching\",\"Asia/Kuala_Lumpur|Asia/Singapore\",\"Asia/Kuala_Lumpur|Asia/Ulaanbaatar\",\"Asia/Kuala_Lumpur|Asia/Ulan_Bator\",\"Asia/Kuala_Lumpur|Etc/GMT-8\",\"Asia/Kuala_Lumpur|Singapore\",\"Asia/Makassar|Asia/Ujung_Pandang\",\"Asia/Rangoon|Asia/Yangon\",\"Asia/Rangoon|Indian/Cocos\",\"Asia/Sakhalin|Antarctica/Macquarie\",\"Asia/Sakhalin|Asia/Magadan\",\"Asia/Sakhalin|Asia/Srednekolymsk\",\"Asia/Sakhalin|Etc/GMT-11\",\"Asia/Sakhalin|Pacific/Bougainville\",\"Asia/Sakhalin|Pacific/Efate\",\"Asia/Sakhalin|Pacific/Guadalcanal\",\"Asia/Sakhalin|Pacific/Kosrae\",\"Asia/Sakhalin|Pacific/Noumea\",\"Asia/Sakhalin|Pacific/Pohnpei\",\"Asia/Sakhalin|Pacific/Ponape\",\"Asia/Seoul|Asia/Pyongyang\",\"Asia/Seoul|ROK\",\"Asia/Shanghai|Asia/Chongqing\",\"Asia/Shanghai|Asia/Chungking\",\"Asia/Shanghai|Asia/Harbin\",\"Asia/Shanghai|Asia/Macao\",\"Asia/Shanghai|Asia/Macau\",\"Asia/Shanghai|Asia/Taipei\",\"Asia/Shanghai|PRC\",\"Asia/Shanghai|ROC\",\"Asia/Tashkent|Antarctica/Mawson\",\"Asia/Tashkent|Asia/Aqtau\",\"Asia/Tashkent|Asia/Aqtobe\",\"Asia/Tashkent|Asia/Ashgabat\",\"Asia/Tashkent|Asia/Ashkhabad\",\"Asia/Tashkent|Asia/Atyrau\",\"Asia/Tashkent|Asia/Dushanbe\",\"Asia/Tashkent|Asia/Oral\",\"Asia/Tashkent|Asia/Qyzylorda\",\"Asia/Tashkent|Asia/Samarkand\",\"Asia/Tashkent|Asia/Yekaterinburg\",\"Asia/Tashkent|Etc/GMT-5\",\"Asia/Tashkent|Indian/Kerguelen\",\"Asia/Tashkent|Indian/Maldives\",\"Asia/Tehran|Iran\",\"Asia/Tokyo|Japan\",\"Asia/Vladivostok|Antarctica/DumontDUrville\",\"Asia/Vladivostok|Asia/Ust-Nera\",\"Asia/Vladivostok|Etc/GMT-10\",\"Asia/Vladivostok|Pacific/Chuuk\",\"Asia/Vladivostok|Pacific/Port_Moresby\",\"Asia/Vladivostok|Pacific/Truk\",\"Asia/Vladivostok|Pacific/Yap\",\"Atlantic/Azores|America/Scoresbysund\",\"Atlantic/Cape_Verde|Etc/GMT+1\",\"Australia/Adelaide|Australia/Broken_Hill\",\"Australia/Adelaide|Australia/South\",\"Australia/Adelaide|Australia/Yancowinna\",\"Australia/Brisbane|Australia/Lindeman\",\"Australia/Brisbane|Australia/Queensland\",\"Australia/Darwin|Australia/North\",\"Australia/Lord_Howe|Australia/LHI\",\"Australia/Perth|Australia/West\",\"Australia/Sydney|Australia/ACT\",\"Australia/Sydney|Australia/Canberra\",\"Australia/Sydney|Australia/Currie\",\"Australia/Sydney|Australia/Hobart\",\"Australia/Sydney|Australia/Melbourne\",\"Australia/Sydney|Australia/NSW\",\"Australia/Sydney|Australia/Tasmania\",\"Australia/Sydney|Australia/Victoria\",\"Etc/UTC|Etc/UCT\",\"Etc/UTC|Etc/Universal\",\"Etc/UTC|Etc/Zulu\",\"Etc/UTC|UCT\",\"Etc/UTC|UTC\",\"Etc/UTC|Universal\",\"Etc/UTC|Zulu\",\"Europe/Athens|Asia/Famagusta\",\"Europe/Athens|Asia/Nicosia\",\"Europe/Athens|EET\",\"Europe/Athens|Europe/Bucharest\",\"Europe/Athens|Europe/Helsinki\",\"Europe/Athens|Europe/Kiev\",\"Europe/Athens|Europe/Mariehamn\",\"Europe/Athens|Europe/Nicosia\",\"Europe/Athens|Europe/Riga\",\"Europe/Athens|Europe/Sofia\",\"Europe/Athens|Europe/Tallinn\",\"Europe/Athens|Europe/Uzhgorod\",\"Europe/Athens|Europe/Vilnius\",\"Europe/Athens|Europe/Zaporozhye\",\"Europe/Chisinau|Europe/Tiraspol\",\"Europe/Dublin|Eire\",\"Europe/Istanbul|Antarctica/Syowa\",\"Europe/Istanbul|Asia/Aden\",\"Europe/Istanbul|Asia/Baghdad\",\"Europe/Istanbul|Asia/Bahrain\",\"Europe/Istanbul|Asia/Istanbul\",\"Europe/Istanbul|Asia/Kuwait\",\"Europe/Istanbul|Asia/Qatar\",\"Europe/Istanbul|Asia/Riyadh\",\"Europe/Istanbul|Etc/GMT-3\",\"Europe/Istanbul|Europe/Kirov\",\"Europe/Istanbul|Europe/Minsk\",\"Europe/Istanbul|Turkey\",\"Europe/Lisbon|Atlantic/Canary\",\"Europe/Lisbon|Atlantic/Faeroe\",\"Europe/Lisbon|Atlantic/Faroe\",\"Europe/Lisbon|Atlantic/Madeira\",\"Europe/Lisbon|Portugal\",\"Europe/Lisbon|WET\",\"Europe/London|Europe/Belfast\",\"Europe/London|Europe/Guernsey\",\"Europe/London|Europe/Isle_of_Man\",\"Europe/London|Europe/Jersey\",\"Europe/London|GB\",\"Europe/London|GB-Eire\",\"Europe/Moscow|Europe/Simferopol\",\"Europe/Moscow|W-SU\",\"Europe/Paris|Africa/Ceuta\",\"Europe/Paris|Arctic/Longyearbyen\",\"Europe/Paris|Atlantic/Jan_Mayen\",\"Europe/Paris|CET\",\"Europe/Paris|Europe/Amsterdam\",\"Europe/Paris|Europe/Andorra\",\"Europe/Paris|Europe/Belgrade\",\"Europe/Paris|Europe/Berlin\",\"Europe/Paris|Europe/Bratislava\",\"Europe/Paris|Europe/Brussels\",\"Europe/Paris|Europe/Budapest\",\"Europe/Paris|Europe/Busingen\",\"Europe/Paris|Europe/Copenhagen\",\"Europe/Paris|Europe/Gibraltar\",\"Europe/Paris|Europe/Ljubljana\",\"Europe/Paris|Europe/Luxembourg\",\"Europe/Paris|Europe/Madrid\",\"Europe/Paris|Europe/Malta\",\"Europe/Paris|Europe/Monaco\",\"Europe/Paris|Europe/Oslo\",\"Europe/Paris|Europe/Podgorica\",\"Europe/Paris|Europe/Prague\",\"Europe/Paris|Europe/Rome\",\"Europe/Paris|Europe/San_Marino\",\"Europe/Paris|Europe/Sarajevo\",\"Europe/Paris|Europe/Skopje\",\"Europe/Paris|Europe/Stockholm\",\"Europe/Paris|Europe/Tirane\",\"Europe/Paris|Europe/Vaduz\",\"Europe/Paris|Europe/Vatican\",\"Europe/Paris|Europe/Vienna\",\"Europe/Paris|Europe/Warsaw\",\"Europe/Paris|Europe/Zagreb\",\"Europe/Paris|Europe/Zurich\",\"Europe/Paris|Poland\",\"Pacific/Auckland|Antarctica/McMurdo\",\"Pacific/Auckland|Antarctica/South_Pole\",\"Pacific/Auckland|NZ\",\"Pacific/Chatham|NZ-CHAT\",\"Pacific/Easter|Chile/EasterIsland\",\"Pacific/Galapagos|Etc/GMT+6\",\"Pacific/Gambier|Etc/GMT+9\",\"Pacific/Guam|Pacific/Saipan\",\"Pacific/Honolulu|HST\",\"Pacific/Honolulu|Pacific/Johnston\",\"Pacific/Honolulu|US/Hawaii\",\"Pacific/Kiritimati|Etc/GMT-14\",\"Pacific/Niue|Etc/GMT+11\",\"Pacific/Pago_Pago|Pacific/Midway\",\"Pacific/Pago_Pago|Pacific/Samoa\",\"Pacific/Pago_Pago|US/Samoa\",\"Pacific/Pitcairn|Etc/GMT+8\",\"Pacific/Tahiti|Etc/GMT+10\",\"Pacific/Tahiti|Pacific/Rarotonga\",\"Pacific/Tongatapu|Etc/GMT-13\",\"Pacific/Tongatapu|Pacific/Enderbury\",\"Pacific/Tongatapu|Pacific/Fakaofo\"]}");
/***/ }),
/* 21 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
/* harmony import */ var _settings_translations__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(0);
/* harmony import */ var _print_amadeus__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7);
const acEditions = [
{ name: "Algeria", value: "dz" },
{ name: "Antigua", value: "ag" },
{ name: "Argentina", value: "ar" },
{ name: "Australia", value: "au" },
{ name: "Austria", value: "at" },
{ name: "Bahamas", value: "bs" },
{ name: "Bahrain", value: "bh" },
{ name: "Barbados", value: "bb" },
{ name: "Belgium", value: "be" },
{ name: "Bermuda", value: "bm" },
{ name: "Canada", value: "ca" },
{ name: "Cayman Islands", value: "ky" },
{ name: "Chile", value: "cl" },
{ name: "China", value: "cn" },
{ name: "Colombia", value: "co" },
{ name: "Costa Rica", value: "cr" },
{ name: "Croatia", value: "hr" },
{ name: "Czech Republic", value: "cz" },
{ name: "Denmark", value: "dk" },
{ name: "Dominican Republic", value: "do" },
{ name: "Egypt", value: "eg" },
{ name: "Finland", value: "fi" },
{ name: "France", value: "fr" },
{ name: "Germany", value: "de" },
{ name: "Greece", value: "gr" },
{ name: "Haiti", value: "ht" },
{ name: "Hong Kong SAR, China", value: "hk" },
{ name: "Hungary", value: "hu" },
{ name: "India", value: "in" },
{ name: "Indonesia", value: "id" },
{ name: "Ireland", value: "ie" },
{ name: "Israel", value: "il" },
{ name: "Italy", value: "it" },
{ name: "Jamaica", value: "jm" },
{ name: "Japan", value: "jp" },
{ name: "Jordan", value: "jo" },
{ name: "Kuwait", value: "kw" },
{ name: "Malaysia", value: "my" },
{ name: "Mexico", value: "mx" },
{ name: "Morocco", value: "ma" },
{ name: "Mozambique", value: "mz" },
{ name: "Netherlands", value: "nl" },
{ name: "New Zealand", value: "nz" },
{ name: "Nigeria", value: "ng" },
{ name: "Norway", value: "no" },
{ name: "Panama", value: "pa" },
{ name: "Peru", value: "pe" },
{ name: "Poland", value: "pl" },
{ name: "Portugal", value: "pt" },
{ name: "Qatar", value: "qa" },
{ name: "Russia", value: "ru" },
{ name: "Romania", value: "ro" },
{ name: "Saudi Arabia", value: "sa" },
{ name: "Singapore", value: "sg" },
{ name: "South Africa", value: "za" },
{ name: "South Korea", value: "kr" },
{ name: "Spain", value: "es" },
{ name: "St. Lucia", value: "lc" },
{ name: "Sweden", value: "se" },
{ name: "Switzerland", value: "ch" },
{ name: "Taiwan, China", value: "tw" },
{ name: "Thailand", value: "th" },
{ name: "Trinidad & Tobago", value: "tt" },
{ name: "Turkey", value: "tr" },
{ name: "Turks and Caicos Island", value: "tc" },
{ name: "Ukraine", value: "ua" },
{ name: "United Arab Emirates", value: "ae" },
{ name: "United Kingdom", value: "gb" },
{ name: "United States", value: "us" },
{ name: "Venezuela", value: "ve" },
{ name: "Vietnam", value: "vn" }
];
function printAC() {
var createUrl = function(edition) {
var acUrl =
"https://book.aircanada.com/pl/AConline/en/RedirectionServlet?FareRequest=YES&PRICING_MODE=0&fromThirdParty=YES";
acUrl +=
"&country=" +
edition +
"&countryOfResidence=" +
edition +
(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].itaLanguage == "de" || _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].language == "de"
? "&language=de"
: "&language=en");
// validate Passengers here: Max Paxcount = 7 (Infs not included) - >11 = Adult - InfSeat = Child
var pax = Object(___WEBPACK_IMPORTED_MODULE_4__["validatePax"])({
maxPaxcount: 9,
countInf: true,
childAsAdult: 16,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_3__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printAC");
return;
}
var paxConfig = { allowinf: 0, youthage: 12 }; // AC does not allow booking of infants for int. flights
var amadeusConfig = { sepcabin: 1, detailed: 1, allowpremium: 1 };
var tmpPax = Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_6__[/* getAmadeusPax */ "a"])(pax, paxConfig);
acUrl += tmpPax.url;
acUrl += "&numberOfAdults=" + tmpPax.adults;
acUrl += "&numberOfInfants=" + tmpPax.infants;
acUrl += "&numberOfYouth=" + tmpPax.youth;
acUrl += "&numberOfChildren=" + tmpPax.children;
acUrl += "&tripType=" + Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_6__[/* getAmadeusTriptype */ "b"])();
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_5__[/* currentItin */ "a"].itin.length; i++) {
acUrl +=
"&departure" +
(i + 1) +
"=" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_5__[/* currentItin */ "a"].itin[i].dep.day).slice(-2) +
"/" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_5__[/* currentItin */ "a"].itin[i].dep.month).slice(-2) +
"/" +
_parse_itin__WEBPACK_IMPORTED_MODULE_5__[/* currentItin */ "a"].itin[i].dep.year +
"&org" +
(i + 1) +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_5__[/* currentItin */ "a"].itin[i].orig +
"&dest" +
(i + 1) +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_5__[/* currentItin */ "a"].itin[i].dest;
}
acUrl += Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_6__[/* getAmadeusUrl */ "c"])(amadeusConfig);
return acUrl;
};
var acUrl = createUrl(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].acEdition.toUpperCase());
if (!acUrl) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += acEditions
.map(function(edition, i) {
return (
'<a href="' +
createUrl(edition.value.toUpperCase()) +
'" target="_blank">' +
edition.name +
"</a>"
);
})
.join("<br/>");
extra += '<br/><a href="javascript:addACPromo();">Add Promo Code</a>';
extra += "</span></span>";
extra += addACPromoControls(acUrl);
return {
url: acUrl,
title: "Air Canada",
extra
};
}
function addACPromoControls(url) {
var script = document.createElement("script");
script.appendChild(document.createTextNode("(" + addACPromo + ")();"));
(document.body || document.head || document.documentElement).appendChild(
script
);
var label = "Open";
if (_settings_translations__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"][_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].language] !== undefined) {
if (_settings_translations__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"][_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].language]["open"] !== undefined) {
label = _settings_translations__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"][_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].language]["open"];
}
}
var extra =
'<input type="input" id="ac-promo-input" size="8" style="display:none;margin:0 5px;"></input>';
extra +=
'<label style="font-size:' + Number(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].linkFontsize) + '%;">';
extra +=
'<a id="ac-promo-link" style="display:none" target="_blank" href="' +
url +
'">' +
label +
"</a></label>";
return extra;
}
function addACPromo() {
window.addACPromo = function() {
var input = document.getElementById("ac-promo-input");
input.style.display = "inline";
input.addEventListener("change", event => {
var replacement =
event.target.value != ""
? "&AUTHORIZATION_ID=" + event.target.value
: "";
var link = document.getElementById("ac-promo-link");
var match = link.href.match(/(&AUTHORIZATION_ID=.*)/g);
if (match == null) {
link.href += replacement;
} else {
link.href = link.href.replace(match, replacement);
}
});
var link = document.getElementById("ac-promo-link");
link.style.display = "inline";
};
}
Object(___WEBPACK_IMPORTED_MODULE_4__["register"])("airlines", printAC);
Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* registerSetting */ "c"])("Air Canada", "acEdition", acEditions, "us");
/***/ }),
/* 22 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(0);
const afEditions = [
{ value: "DE/de", name: "Germany / Deutsch" },
{ value: "DE/en", name: "Germany / English" },
{ value: "FR/en", name: "France / English" },
{ value: "FI/en", name: "Finland / English" },
{ value: "FR/fr", name: "France / French" },
{ value: "NL/en", name: "Netherlands / English" },
{ value: "GB/en", name: "United Kingdom / English" },
{ value: "US/en", name: "US / English" }
];
function printAF() {
var createUrl = function(edition) {
if (
!_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].showAllAirlines &&
!(
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin &&
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin.length == 2 &&
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[0].orig == _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[1].dest &&
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[0].dest == _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[1].orig
)
) {
return;
}
var cabins = ["Y", "W", "C", "F"];
var mincabin = 3;
var afUrl =
"https://www.airfrance.com/" +
edition +
"/local/process/standardbooking/DisplayUpsellAction.do?calendarSearch=1&subCabin=MCHER&typeTrip=2";
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin.length; i++) {
if (i == 0) {
afUrl += "&from=" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].orig;
afUrl += "&to=" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dest;
afUrl +=
"&outboundDate=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.year +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.month).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.day).slice(-2);
afUrl +=
"&firstOutboundHour=" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.time).slice(-5);
let flights = "";
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length; j++) {
if (j > 0) flights += "|";
flights +=
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].carrier +
("000" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].fnr).slice(-4);
}
afUrl += "&flightOutbound=" + flights;
} else if (i == 1) {
afUrl +=
"&inboundDate=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.year +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.month).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.day).slice(-2);
afUrl +=
"&firstInboundHour=" + ("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.time).slice(-5);
let flights = "";
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length; j++) {
if (j > 0) flights += "|";
flights +=
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].carrier +
("000" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].fnr).slice(-4);
if (_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin < mincabin) {
mincabin = _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin;
}
}
afUrl += "&flightInbound=" + flights;
}
}
afUrl +=
"&cabin=" +
cabins[_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin === "Auto" ? mincabin : Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getForcedCabin */ "c"])()];
var pax = Object(___WEBPACK_IMPORTED_MODULE_3__["validatePax"])({
maxPaxcount: 9,
countInf: true,
childAsAdult: 18,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printAF");
return;
}
var tmpPax = { c: 0, y: 0 };
for (i = 0; i < pax.children.length; i++) {
if (pax.children[i] > 11) {
tmpPax.y++;
} else {
tmpPax.c++;
}
}
var curPax = 0;
afUrl += "&nbAdults=" + pax.adults;
for (i = 0; i < pax.adults; i++) {
afUrl += "&paxTypoList=ADT";
curPax++;
}
afUrl += "&nbEnfants=" + tmpPax.y;
for (i = 0; i < tmpPax.y; i++) {
afUrl += "&paxTypoList=YTH_MIN";
curPax++;
}
afUrl += "&nbChildren=" + tmpPax.c;
for (i = 0; i < tmpPax.y; i++) {
afUrl += "&paxTypoList=CHD";
curPax++;
}
afUrl += "&nbBebes=" + pax.infLap;
for (i = 0; i < pax.infLap; i++) {
afUrl += "&paxTypoList=INF";
curPax++;
}
afUrl += "&nbPassenger=" + curPax + "&nbPax=" + curPax;
return afUrl;
};
// get edition
var edition = _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].afEdition;
var url = createUrl(edition);
if (!url) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += afEditions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.value) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "Air France",
extra
};
}
Object(___WEBPACK_IMPORTED_MODULE_3__["register"])("airlines", printAF);
Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* registerSetting */ "c"])("Air France", "afEdition", afEditions, "US/en");
/***/ }),
/* 23 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(0);
function printAS() {
if (!Object(___WEBPACK_IMPORTED_MODULE_1__["anyCarriers"])("AS")) {
return;
}
// validate Passengers here: Max Paxcount = 7 (Infs not included) - >11 = Adult - InfSeat = Child
var createUrl = function() {
var pax = Object(___WEBPACK_IMPORTED_MODULE_1__["validatePax"])({
maxPaxcount: 6,
countInf: true,
childAsAdult: 6,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printAS");
return;
}
var url = "https://www.alaskaair.com/planbook/shoppingstart?";
url += "A=" + pax.adults + "&C=" + pax.children.length + "&FT=";
if (_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin.length == 1) {
url += "ow";
} else {
url += "rt";
}
var k = 0;
//Build multi-city search based on legs
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin.length; i++) {
// walks each leg
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg.length; j++) {
//walks each segment of leg
var itinseg =
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].orig +
"|" +
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].dest;
itinseg +=
"|" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
"/" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2);
itinseg += "/" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].dep.year;
itinseg += "|" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].fnr + "|";
itinseg += _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].cabin ? "f" : "c";
url += "&F" + ++k + "=" + encodeURIComponent(itinseg);
}
}
url +=
"&DEST=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[0].seg[_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[0].seg.length - 1].dest;
url += "&FARE=" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].price + "&frm=cart&META=GOO_CS";
return url;
};
var url = createUrl();
if (!url) {
return;
}
return {
url,
title: "Alaska"
};
}
Object(___WEBPACK_IMPORTED_MODULE_1__["register"])("airlines", printAS);
/***/ }),
/* 24 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
const azEditions = [
{ value: "de_de", name: "Germany / Deutsch" },
{ value: "at_de", name: "Austria / Deutsch" },
{ value: "ch_de", name: "Switzerland / Deutsch" },
{ value: "fr_fr", name: "France / French" },
{ value: "nl_nl", name: "Netherlands / Dutch" },
{ value: "it_it", name: "Italy / Italian" },
{ value: "ca_en", name: "Canada / Englisch" },
{ value: "us_en", name: "US / Englisch" },
{ value: "gb_en", name: "GB / Englisch" },
{ value: "en_en", name: "International / Englisch" }
];
function printAZ() {
if (!Object(___WEBPACK_IMPORTED_MODULE_2__["anyCarriers"])("AZ")) {
return;
}
var createUrl = function(edition) {
var azUrl =
"https://www.alitalia.com/" +
edition +
"/home-page.metasearch.json?SearchType=BrandMetasearch";
var cabins = ["Economy", "Economy", "Business", "First"];
var seg = 0;
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length; j++) {
azUrl +=
"&MetaSearchDestinations[" +
seg +
"].From=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].orig;
azUrl +=
"&MetaSearchDestinations[" +
seg +
"].To=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dest;
azUrl +=
"&MetaSearchDestinations[" +
seg +
"].DepartureDate=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2) +
":" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.time).slice(-5);
azUrl +=
"&MetaSearchDestinations[" +
seg +
"].ArrivalDate=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].arr.year +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].arr.month).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].arr.day).slice(-2) +
":" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].arr.time).slice(-5);
azUrl +=
"&MetaSearchDestinations[" +
seg +
"].Flight=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].fnr;
azUrl +=
"&MetaSearchDestinations[" +
seg +
"].code=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].farebase;
azUrl += "&MetaSearchDestinations[" + seg + "].MseType=";
azUrl +=
"&MetaSearchDestinations[" +
seg +
"].bookingClass=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].bookingclass;
azUrl +=
"&MetaSearchDestinations[" +
seg +
"].cabinClass=" +
cabins[_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].cabin];
azUrl += "&MetaSearchDestinations[" + seg + "].slices=" + i;
seg++;
}
}
var pax = Object(___WEBPACK_IMPORTED_MODULE_2__["validatePax"])({
maxPaxcount: 7,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printAZ");
return false;
}
azUrl +=
"&children_number=" +
pax.children.length +
"&newborn_number=" +
pax.infLap +
"&adult_number=" +
pax.adults;
return azUrl;
};
// get edition
var edition = _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].azEdition;
var azUrl = createUrl(edition);
if (!azUrl) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += azEditions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.value) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url: azUrl,
title: "Alitalia",
extra
};
}
Object(___WEBPACK_IMPORTED_MODULE_2__["register"])("airlines", printAZ);
Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* registerSetting */ "c"])("Alitalia", "azEdition", azEditions, "us_en");
/***/ }),
/* 25 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(0);
const baEditions = [
{ value: "AF", name: "Afghanistan" },
{ value: "AL", name: "Albania" },
{ value: "DZ", name: "Algeria" },
{ value: "AS", name: "American Samoa" },
{ value: "AD", name: "Andorra" },
{ value: "AO", name: "Angola" },
{ value: "AI", name: "Anguilla" },
{ value: "AG", name: "Antigua" },
{ value: "AR", name: "Argentina" },
{ value: "AM", name: "Armenia" },
{ value: "AW", name: "Aruba" },
{ value: "AU", name: "Australia" },
{ value: "AT", name: "Austria" },
{ value: "AZ", name: "Azerbaijan" },
{ value: "BS", name: "Bahamas" },
{ value: "BH", name: "Bahrain" },
{ value: "BD", name: "Bangladesh" },
{ value: "BB", name: "Barbados" },
{ value: "BY", name: "Belarus" },
{ value: "BE", name: "Belgium" },
{ value: "BZ", name: "Belize" },
{ value: "BJ", name: "Benin Republic" },
{ value: "BM", name: "Bermuda" },
{ value: "BT", name: "Bhutan" },
{ value: "BO", name: "Bolivia" },
{ value: "BA", name: "Bosnia-Herzegovina" },
{ value: "BW", name: "Botswana" },
{ value: "BR", name: "Brazil" },
{ value: "VG", name: "British Virgin Islands" },
{ value: "BN", name: "Brunei" },
{ value: "BG", name: "Bulgaria" },
{ value: "BF", name: "Burkina Faso" },
{ value: "BI", name: "Burundi" },
{ value: "KH", name: "Cambodia" },
{ value: "CA", name: "Canada" },
{ value: "CV", name: "Cape Verde" },
{ value: "KY", name: "Cayman Islands" },
{ value: "CF", name: "Central African Rep" },
{ value: "TD", name: "Chad" },
{ value: "CL", name: "Chile" },
{ value: "CN", name: "China" },
{ value: "CX", name: "Christmas Island" },
{ value: "CC", name: "Cocos Islands" },
{ value: "CO", name: "Colombia" },
{ value: "CG", name: "Congo" },
{ value: "CK", name: "Cook Islands" },
{ value: "CR", name: "Costa Rica" },
{ value: "HR", name: "Croatia" },
{ value: "CU", name: "Cuba" },
{ value: "CY", name: "Cyprus" },
{ value: "CZ", name: "Czech Republic" },
{ value: "DK", name: "Denmark" },
{ value: "DJ", name: "Djibouti" },
{ value: "DM", name: "Dominica" },
{ value: "DO", name: "Dominican Rep" },
{ value: "EC", name: "Ecuador" },
{ value: "EG", name: "Egypt" },
{ value: "SV", name: "El Salvador" },
{ value: "GQ", name: "Equatorial Guinea" },
{ value: "ER", name: "Eritrea" },
{ value: "EE", name: "Estonia" },
{ value: "ET", name: "Ethiopia" },
{ value: "FO", name: "Faeroe Is" },
{ value: "FK", name: "Falkland Is" },
{ value: "FJ", name: "Fiji" },
{ value: "FI", name: "Finland" },
{ value: "FR", name: "France" },
{ value: "GF", name: "French Guyana" },
{ value: "PF", name: "French Polynesia" },
{ value: "GA", name: "Gabon" },
{ value: "GM", name: "Gambia" },
{ value: "GE", name: "Georgia" },
{ value: "DE", name: "Germany" },
{ value: "GH", name: "Ghana" },
{ value: "GI", name: "Gibraltar (UK)" },
{ value: "GR", name: "Greece" },
{ value: "GL", name: "Greenland" },
{ value: "GD", name: "Grenada" },
{ value: "GP", name: "Guadeloupe" },
{ value: "GU", name: "Guam" },
{ value: "GT", name: "Guatemala" },
{ value: "GN", name: "Guinea" },
{ value: "GW", name: "Guinea Bissau" },
{ value: "GY", name: "Guyana" },
{ value: "HT", name: "Haiti" },
{ value: "HN", name: "Honduras" },
{ value: "HK", name: "Hong Kong" },
{ value: "HU", name: "Hungary" },
{ value: "IS", name: "Iceland" },
{ value: "IN", name: "India" },
{ value: "ID", name: "Indonesia" },
{ value: "IR", name: "Iran" },
{ value: "IQ", name: "Iraq" },
{ value: "IE", name: "Ireland" },
{ value: "IL", name: "Israel" },
{ value: "IT", name: "Italy" },
{ value: "CI", name: "Ivory Coast" },
{ value: "JM", name: "Jamaica" },
{ value: "JP", name: "Japan" },
{ value: "JO", name: "Jordan" },
{ value: "KZ", name: "Kazakhstan" },
{ value: "KE", name: "Kenya" },
{ value: "KI", name: "Kiribati" },
{ value: "XK", name: "Kosovo" },
{ value: "KW", name: "Kuwait" },
{ value: "KG", name: "Kyrgyzstan" },
{ value: "LA", name: "Laos" },
{ value: "LV", name: "Latvia" },
{ value: "LB", name: "Lebanon" },
{ value: "LS", name: "Lesotho" },
{ value: "LR", name: "Liberia" },
{ value: "LY", name: "Libya" },
{ value: "LI", name: "Liechtenstein" },
{ value: "LT", name: "Lithuania" },
{ value: "LU", name: "Luxembourg" },
{ value: "MO", name: "Macau" },
{ value: "MK", name: "Macedonia" },
{ value: "MG", name: "Madagascar" },
{ value: "MW", name: "Malawi" },
{ value: "MY", name: "Malaysia" },
{ value: "MV", name: "Maldives" },
{ value: "ML", name: "Mali" },
{ value: "MT", name: "Malta" },
{ value: "MP", name: "Mariana Islands" },
{ value: "MH", name: "Marshall Islands" },
{ value: "MQ", name: "Martinique" },
{ value: "MR", name: "Mauritania" },
{ value: "MU", name: "Mauritius" },
{ value: "MX", name: "Mexico" },
{ value: "FM", name: "Micronesia" },
{ value: "UM", name: "Minor Island" },
{ value: "MD", name: "Moldova" },
{ value: "MC", name: "Monaco" },
{ value: "ME", name: "Montenegro" },
{ value: "MS", name: "Montserrat" },
{ value: "MA", name: "Morocco" },
{ value: "MZ", name: "Mozambique" },
{ value: "MM", name: "Myanmar" },
{ value: "NA", name: "Namibia" },
{ value: "NR", name: "Nauru" },
{ value: "NP", name: "Nepal" },
{ value: "AN", name: "Netherland Antilles" },
{ value: "NL", name: "Netherlands" },
{ value: "NC", name: "New Caledonia" },
{ value: "NZ", name: "New Zealand" },
{ value: "NI", name: "Nicaragua" },
{ value: "NE", name: "Niger" },
{ value: "NG", name: "Nigeria" },
{ value: "NU", name: "Niue" },
{ value: "NF", name: "Norfolk Island" },
{ value: "NO", name: "Norway" },
{ value: "OM", name: "Oman" },
{ value: "PK", name: "Pakistan" },
{ value: "PA", name: "Panama" },
{ value: "PG", name: "Papua New Guinea" },
{ value: "PY", name: "Paraguay" },
{ value: "KP", name: "Peoples Rep Korea" },
{ value: "PE", name: "Peru" },
{ value: "PH", name: "Philippines" },
{ value: "PL", name: "Poland" },
{ value: "PT", name: "Portugal" },
{ value: "PR", name: "Puerto Rico" },
{ value: "QA", name: "Qatar" },
{ value: "CM", name: "Republic Cameroon" },
{ value: "RE", name: "Reunion" },
{ value: "RO", name: "Romania" },
{ value: "RU", name: "Russia" },
{ value: "RW", name: "Rwanda" },
{ value: "SM", name: "San Marino" },
{ value: "SA", name: "Saudi Arabia" },
{ value: "SN", name: "Senegal" },
{ value: "RS", name: "Serbia" },
{ value: "SC", name: "Seychelles" },
{ value: "SL", name: "Sierra Leone" },
{ value: "SG", name: "Singapore" },
{ value: "SK", name: "Slovakia" },
{ value: "SI", name: "Slovenia" },
{ value: "SB", name: "Solomon Island" },
{ value: "SO", name: "Somalia" },
{ value: "ZA", name: "South Africa" },
{ value: "KR", name: "South Korea" },
{ value: "ES", name: "Spain" },
{ value: "LK", name: "Sri Lanka" },
{ value: "KN", name: "St Kitts and Nevis" },
{ value: "LC", name: "St Lucia" },
{ value: "VC", name: "St Vincent" },
{ value: "SD", name: "Sudan" },
{ value: "SR", name: "Suriname" },
{ value: "SZ", name: "Swaziland" },
{ value: "SE", name: "Sweden" },
{ value: "CH", name: "Switzerland" },
{ value: "SY", name: "Syria" },
{ value: "TW", name: "Taiwan" },
{ value: "TJ", name: "Tajikistan" },
{ value: "TZ", name: "Tanzania" },
{ value: "TH", name: "Thailand" },
{ value: "TL", name: "Timor - Leste" },
{ value: "TG", name: "Togo" },
{ value: "TO", name: "Tonga" },
{ value: "TT", name: "Trinidad and Tobago" },
{ value: "TN", name: "Tunisia" },
{ value: "TR", name: "Turkey" },
{ value: "TM", name: "Turkmenistan" },
{ value: "TC", name: "Turks Caicos" },
{ value: "TV", name: "Tuvalu" },
{ value: "VI", name: "US Virgin Islands" },
{ value: "US", name: "USA" },
{ value: "UG", name: "Uganda" },
{ value: "UA", name: "Ukraine" },
{ value: "AE", name: "United Arab Emirates" },
{ value: "GB", name: "United Kingdom" },
{ value: "UY", name: "Uruguay" },
{ value: "UZ", name: "Uzbekistan" },
{ value: "VU", name: "Vanuatu" },
{ value: "VE", name: "Venezuela" },
{ value: "VN", name: "Vietnam" },
{ value: "WS", name: "Western Samoa" },
{ value: "YE", name: "Yemen Republic" },
{ value: "ZM", name: "Zambia" },
{ value: "ZW", name: "Zimbabwe" }
];
function printBA() {
if (!Object(___WEBPACK_IMPORTED_MODULE_3__["anyCarriers"])("IB", "BA")) {
return;
}
var createUrl = function(edition, language) {
// 0 = Economy; 1=Premium Economy; 2=Business; 3=First
var cabins = ["M", "W", "C", "F"];
var pax = Object(___WEBPACK_IMPORTED_MODULE_3__["validatePax"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 16,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printBA");
return false;
}
var tmpPax = { c: 0, y: 0 };
for (i = 0; i < pax.children.length; i++) {
if (pax.children[i] > 11) {
tmpPax.y++;
} else {
tmpPax.c++;
}
}
var url =
"https://www.britishairways.com/travel/fx/public/" +
language +
"_" +
edition +
"?eId=111054&data=F" +
pax.adults +
tmpPax.y +
tmpPax.c +
pax.infLap +
"LF";
var mincabin = 3;
//Build multi-city search based on legs
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin.length; i++) {
// walks each leg
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length; j++) {
//walks each segment of leg
var k = 0;
// lets have a look if we need to skip segments - fnr has to be the same and it must be just a layover
while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length - 1) {
if (
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !=
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440
)
break;
k++;
}
url +=
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2) +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dep.time.replace(":", "")).slice(
-4
);
url +=
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].carrier +
("000" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].fnr).slice(-4);
url += cabins[_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin];
url +=
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].orig + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + k].dest;
if (_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin.length == 2 && i == 1) {
url += "F";
} else {
url += "T";
}
if (_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin < mincabin) {
mincabin = _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin;
}
j += k;
}
}
url +=
"&p=EUR6666.66&e=SL&c=" +
cabins[_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin === "Auto" ? mincabin : Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getForcedCabin */ "c"])()] +
"&source=FareQuoteEmail&isEmailHBOFareQuote=false";
return url;
};
// get edition
var url = createUrl(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].baEdition, _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].baLanguage);
if (!url) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += baEditions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.value, _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].baLanguage) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "British Airways",
extra
};
}
Object(___WEBPACK_IMPORTED_MODULE_3__["register"])("airlines", printBA);
Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* registerSetting */ "c"])("British Airways", "baEdition", baEditions, "US");
/***/ }),
/* 26 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
/* harmony import */ var _print_amadeus__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7);
const czEditions = [
{ value: "AR-GB", name: "Argentina / English" },
{ value: "AU-GB", name: "Australia / English" },
{ value: "AZ-GB", name: "Azerbaijan / English" },
{ value: "BD-GB", name: "Bangladesh / English" },
{ value: "BE-GB", name: "Belgium / English" },
{ value: "BR-GB", name: "Brazil / English" },
{ value: "KH-GB", name: "Cambodia / English" },
{ value: "CA-GB", name: "Canada / English" },
{ value: "CA-FR", name: "Canada / French" },
{ value: "CN-GB", name: "China / English" },
{ value: "DK-GB", name: "Denmark / English" },
{ value: "FI-GB", name: "Finland / English" },
{ value: "FR-GB", name: "France / English" },
{ value: "FR-FR", name: "France / French" },
{ value: "GE-GB", name: "Georgia / English" },
{ value: "DE-GB", name: "Germany / English" },
{ value: "DE-DE", name: "Germany / German" },
{ value: "GR-GB", name: "Greece / English" },
{ value: "HK-GB", name: "Hong Kong / English" },
{ value: "IN-GB", name: "India / English" },
{ value: "ID-GB", name: "Indonesia / English" },
{ value: "IR-GB", name: "Iran / English" },
{ value: "IE-GB", name: "Ireland / English" },
{ value: "IT-GB", name: "Italy / English" },
{ value: "JP-GB", name: "Japan / English" },
{ value: "JO-GB", name: "Jordan / English" },
{ value: "KZ-GB", name: "Kazakhstan / English" },
{ value: "KE-GB", name: "Kenya / English" },
{ value: "KG-GB", name: "Kyrgyzstan / English" },
{ value: "MY-GB", name: "Malaysia / English" },
{ value: "MV-GB", name: "Maldives / English" },
{ value: "MO-GB", name: "Macau / English" },
{ value: "MM-GB", name: "Myanmar / English" },
{ value: "NP-GB", name: "Nepal / English" },
{ value: "NL-GB", name: "Netherlands / English" },
{ value: "NZ-GB", name: "New Zealand / English" },
{ value: "NO-GB", name: "Norway / English" },
{ value: "PK-GB", name: "Pakistan / English" },
{ value: "PA-GB", name: "Panama / English" },
{ value: "PE-GB", name: "Peru / English" },
{ value: "PH-GB", name: "Philippines / English" },
{ value: "PT-GB", name: "Portugal / English" },
{ value: "RU-GB", name: "Russia / English" },
{ value: "SA-GB", name: "Saudi Arabia / English" },
{ value: "SG-GB", name: "Singapore / English" },
{ value: "ZA-GB", name: "South Africa / English" },
{ value: "KR-GB", name: "South Korea / English" },
{ value: "ES-GB", name: "Spain / English" },
{ value: "SE-GB", name: "Sweden / English" },
{ value: "CH-GB", name: "Switzerland / English" },
{ value: "TW-GB", name: "Taiwan / English" },
{ value: "TJ-GB", name: "Tajikistan / English" },
{ value: "TZ-GB", name: "Tanzania / English" },
{ value: "TH-GB", name: "Thailand / English" },
{ value: "TR-GB", name: "Turkey / English" },
{ value: "TM-GB", name: "Turkmenistan / English" },
{ value: "UA-GB", name: "Ukraine / English" },
{ value: "GB-GB", name: "United Kingdom / English" },
{ value: "AE-GB", name: "United Arab Emirates / English" },
{ value: "UG-GB", name: "Uganda / English" },
{ value: "US-GB", name: "United States / English" },
{ value: "UZ-GB", name: "Uzbekistan / English" },
{ value: "VE-GB", name: "Venezuela / English" },
{ value: "VN-GB", name: "Vietnam / English" }
];
function printCZ() {
if (!Object(___WEBPACK_IMPORTED_MODULE_2__["anyCarriers"])("CZ")) {
return;
}
var createUrl = function(edition) {
var paxConfig = { allowinf: 1, youthage: 0 };
var pax = Object(___WEBPACK_IMPORTED_MODULE_2__["validatePax"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printCZ");
return;
}
var amadeusConfig = {
sepcabin: 0,
detailed: 0,
allowpremium: 0,
inctimes: 0
};
var url =
"http://global.csair.com/CZPortal/dyn/portal/doEnc?SITE=J00YJ00Y&BOOKING_FLOW=REVENUE&IS_FLEXIBLE=FALSE&LANGUAGE=" +
edition[1] +
"&PRICING_TYPE=O&COUNTRY_SITE=" +
edition[0] +
"&DISPLAY_TYPE=1";
var tmpPax = Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_3__[/* getAmadeusPax */ "a"])(pax, paxConfig);
url += tmpPax.url;
url += "&NB_ADT=" + tmpPax.adults;
url += "&NB_INF=" + tmpPax.infants;
url += "&NB_CHD=" + tmpPax.children;
url += "&TRIP_TYPE=M";
url += Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_3__[/* getAmadeusUrl */ "c"])(amadeusConfig);
return url;
};
// get edition
var edition = _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].czEdition.split("-");
if (edition.length != 2) {
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "g"])("Error:Invalid CZ-Edition");
return;
}
var url = createUrl(edition);
if (!url) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += czEditions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.value.split("-")) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "China Southern",
extra
};
}
Object(___WEBPACK_IMPORTED_MODULE_2__["register"])("airlines", printCZ);
Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* registerSetting */ "c"])("China Southern", "czEdition", czEditions, "US-GB");
/***/ }),
/* 27 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(0);
const dlEditions = [
{ value: "de_de", name: "Germany" },
{ value: "www_us", name: "US" }
];
function printDL() {
/* Steppo: What about farebasis?
* What about segmentskipping? */
var createUrl = function(edition) {
// 0 = Economy; 1=Premium Economy; 2=Business; 3=First
// Defaults for cabin identifiers for DL pricing engine; exceptions handled later
var cabins = ["MAIN", "DPPS", "BU", "FIRST"];
var mincabin = 3;
var farebases = new Array();
var pax = Object(___WEBPACK_IMPORTED_MODULE_3__["validatePax"])({
maxPaxcount: 9,
countInf: true,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printDL");
return;
}
var deltaURL =
"http://" +
edition[0] +
".delta.com/air-shopping/priceTripAction.action?ftw_reroute=true&tripType=multiCity";
deltaURL += "¤cyCd=" + (_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].cur == "EUR" ? "EUR" : "USD");
deltaURL += "&exitCountry=" + edition[1];
var segcounter = 0;
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin.length; i++) {
// walks each leg
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length; j++) {
//walks each segment of leg
deltaURL +=
"&itinSegment[" +
segcounter.toString() +
"]=" +
i.toString() +
":" +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].bookingclass;
deltaURL +=
":" +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].orig +
":" +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dest +
":" +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].carrier +
":" +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].fnr;
deltaURL +=
":" +
Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* monthnumberToName */ "f"])(_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dep.month) +
":" +
(_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dep.day < 10 ? "0" : "") +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dep.day +
":" +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
":0";
farebases.push(_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].farebase);
if (_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin < mincabin) {
mincabin = _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin;
}
// Exceptions to cabin identifiers for pricing
switch (_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].bookingclass) {
// Basic Economy fares
case "E":
cabins[0] = "BASIC-ECONOMY";
break;
// Comfort+ fares
case "W":
cabins[1] = "DCP";
break;
default:
}
segcounter++;
}
}
deltaURL +=
"&cabin=" +
cabins[_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin === "Auto" ? mincabin : Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getForcedCabin */ "c"])()];
deltaURL += "&fareBasis=" + farebases.join(":");
//deltaURL += "&price=0";
deltaURL +=
"&numOfSegments=" +
segcounter.toString() +
"&paxCount=" +
(pax.adults + pax.children.length + pax.infLap);
deltaURL += "&vendorRedirectFlag=true&vendorID=Google";
return deltaURL;
};
// get edition
var edition = _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].dlEdition.split("_");
if (edition.length != 2) {
Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "g"])("Error:Invalid Delta-Edition");
return;
}
var url = createUrl(edition);
if (!url) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += dlEditions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.value.split("_")) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "Delta",
extra
};
}
Object(___WEBPACK_IMPORTED_MODULE_3__["register"])("airlines", printDL);
Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* registerSetting */ "c"])("Delta", "dlEdition", dlEditions, "www_us");
/***/ }),
/* 28 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(4);
const cabins = ["0", "0", "1", "2"];
const editions = [
{ name: "Arabic (AE)", value: "/ae/arabic" },
{ name: "Arabic (BH)", value: "/bh/arabic" },
{ name: "Arabic (DZ)", value: "/dz/arabic" },
{ name: "Arabic (EG)", value: "/eg/arabic" },
{ name: "Arabic (IQ)", value: "/iq/arabic" },
{ name: "Arabic (JO)", value: "/jo/arabic" },
{ name: "Arabic (KW)", value: "/kw/arabic" },
{ name: "Arabic (LB)", value: "/lb/arabic" },
{ name: "Arabic (LY)", value: "/ly/arabic" },
{ name: "Arabic (MA)", value: "/ma/arabic" },
{ name: "Arabic (OM)", value: "/om/arabic" },
{ name: "Arabic (QA)", value: "/qa/arabic" },
{ name: "Arabic (SA)", value: "/sa/arabic" },
{ name: "Arabic (SD)", value: "/sd/arabic" },
{ name: "Arabic (SY)", value: "/sy/arabic" },
{ name: "Arabic (YE)", value: "/ye/arabic" },
{ name: "Chinese (CN)", value: "/cn/chinese" },
{ name: "Chinese (HK)", value: "/hk/chinese" },
{ name: "Chinese (TW)", value: "/tw/chinese" },
{ name: "Czech (CZ)", value: "/cz/czech" },
{ name: "Danish (DK)", value: "/dk/danish" },
{ name: "Dutch (BE)", value: "/be/dutch" },
{ name: "Dutch (NL)", value: "/nl/dutch" },
{ name: "English (AF)", value: "/af/english" },
{ name: "English (AU)", value: "/au/english" },
{ name: "English (BD)", value: "/bd/english" },
{ name: "English (BG)", value: "/bg/english" },
{ name: "English (EE)", value: "/ee/english" },
{ name: "English (ET)", value: "/et/english" },
{ name: "English (FI)", value: "/fi/english" },
{ name: "English (GH)", value: "/gh/english" },
{ name: "English (Global)", value: "/global/english" },
{ name: "English (HR)", value: "/hr/english" },
{ name: "English (IE)", value: "/ie/english" },
{ name: "English (IN)", value: "/in/english" },
{ name: "English (IR)", value: "/ir/english" },
{ name: "English (IS)", value: "/is/english" },
{ name: "English (KE)", value: "/ke/english" },
{ name: "English (KH)", value: "/kh/english" },
{ name: "English (LK)", value: "/lk/english" },
{ name: "English (LT)", value: "/lt/english" },
{ name: "English (LV)", value: "/lv/english" },
{ name: "English (MM)", value: "/mm/english" },
{ name: "English (MT)", value: "/mt/english" },
{ name: "English (MU)", value: "/mu/english" },
{ name: "English (MV)", value: "/mv/english" },
{ name: "English (MY)", value: "/my/english" },
{ name: "English (NG)", value: "/ng/english" },
{ name: "English (NZ)", value: "/nz/english" },
{ name: "English (PH)", value: "/ph/english" },
{ name: "English (PK)", value: "/pk/english" },
{ name: "English (RO)", value: "/ro/english" },
{ name: "English (SC)", value: "/sc/english" },
{ name: "English (SG)", value: "/sg/english" },
{ name: "English (TZ)", value: "/tz/english" },
{ name: "English (UG)", value: "/ug/english" },
{ name: "English (UK)", value: "/uk/english" },
{ name: "English (US)", value: "/us/english" },
{ name: "English (ZA)", value: "/za/english" },
{ name: "English (ZM)", value: "/zm/english" },
{ name: "English (ZW)", value: "/zw/english" },
{ name: "French (CA)", value: "/ca/french" },
{ name: "French (CI)", value: "/ci/french" },
{ name: "French (FR)", value: "/fr/french" },
{ name: "French (GN)", value: "/gn/french" },
{ name: "French (SN)", value: "/sn/french" },
{ name: "French (TN)", value: "/tn/french" },
{ name: "German (AT)", value: "/at/german" },
{ name: "German (DE)", value: "/de/german" },
{ name: "Greek (CY)", value: "/cy/greek" },
{ name: "Greek (GR)", value: "/gr/greek" },
{ name: "Hungarian (HU)", value: "/hu/hungarian" },
{ name: "Indonesian (ID)", value: "/id/indonesian" },
{ name: "Italian (CH)", value: "/ch/italian" },
{ name: "Italian (IT)", value: "/it/italian" },
{ name: "Japanese (JP)", value: "/jp/japanese" },
{ name: "Korean (KR)", value: "/kr/korean" },
{ name: "Norwegian (NO)", value: "/no/norwegian" },
{ name: "Polish (PL)", value: "/pl/polish" },
{ name: "Portuguese (AO)", value: "/ao/portuguese" },
{ name: "Portuguese (BR)", value: "/br/portuguese" },
{ name: "Portuguese (PT)", value: "/pt/portuguese" },
{ name: "Russian (RU)", value: "/ru/russian" },
{ name: "Russian (UA)", value: "/ua/russian" },
{ name: "Spanish (AR)", value: "/ar/spanish" },
{ name: "Spanish (CL)", value: "/cl/spanish" },
{ name: "Spanish (CO)", value: "/co/spanish" },
{ name: "Spanish (EC)", value: "/ec/spanish" },
{ name: "Spanish (ES)", value: "/es/spanish" },
{ name: "Spanish (MX)", value: "/mx/spanish" },
{ name: "Spanish (PA)", value: "/pa/spanish" },
{ name: "Spanish (PE)", value: "/pe/spanish" },
{ name: "Spanish (UY)", value: "/uy/spanish" },
{ name: "Swedish (SE)", value: "/se/swedish" },
{ name: "Thai (TH)", value: "/th/thai" },
{ name: "Turkish (TR)", value: "/tr/turkish" },
{ name: "Vietnamese (VN)", value: "/vn/vietnamese" }
];
function print() {
if (!Object(___WEBPACK_IMPORTED_MODULE_2__["anyCarriers"])("EK")) {
return;
}
const pax = Object(___WEBPACK_IMPORTED_MODULE_2__["validatePax"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printEK");
return;
}
let desc = "";
const createUrl = function(edition) {
let url = `https://www.emirates.com/sessionhandler.aspx?pageurl=/IBE.aspx&pub=${edition}&j=f§ion=IBE&j=t&seldcity1=${
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].orig
}&selacity1=${_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].dest}&selddate1=${formatDate(
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].dep
)}&seladults=${pax.adults}&selofw=0&selteenager=0&selchildren=${
pax.children.length
}&selinfants=${pax.infLap}&selcabinclass=${
cabins[Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_4__[/* getCabin */ "b"])(Math.max(...Object(_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* getCurrentSegs */ "b"])().map(seg => seg.cabin)))]
}&selcabinclass1=${
cabins[
Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_4__[/* getCabin */ "b"])(Math.max(..._parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].seg.map(seg => seg.cabin)))
]
}&showsearch=false&showTeenager=false&showOFW=false&chkFlexibleDates=false&resultby=0&multiCity=`;
if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length == 1) {
url += `&seladate1=&TID=OW`;
} else if (
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length == 2 &&
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].orig == _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[1].dest &&
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].dest == _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[1].orig
) {
url += `&seladate1=${formatDate(_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[1].dep)}&TID=SB`;
} else {
// open-jaw and multi-city for mobile only (TID=AS)
url =
`https://mobile.emirates.com${edition}/CAB/IBE/searchResults.xhtml?cugoDisabledCabinClass=true&flexiDate=false&searchType=MC&classTypeRadioMulti=0&bookingType=Revenue&originInterlineFlag=false&destInterlineFlag=false&totalAdults=${pax.adults}&totalTeens=0&totalChildren=${pax.children.length}&totalInfants=${pax.infLap}&` +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin
.map(
itin =>
`fromCity=${itin.orig}&toCity=${itin.dest}&classType=${
cabins[Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_4__[/* getCabin */ "b"])(Math.max(...itin.seg.map(seg => seg.cabin)))]
}&departDay=${Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* to2digits */ "h"])(itin.dep.day)}&departMonth=${Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* to2digits */ "h"])(
itin.dep.month
)}&departYear=${
itin.dep.year
}&returnDay=&returnMonth=&returnYear=`
)
.join("&");
desc = "Mobile (or resize browser)";
}
return url;
};
const url = createUrl(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].ekEdition);
if (!url) {
return;
}
let extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += editions
.map(function(edition, i) {
return (
'<a href="' +
createUrl(edition.value) +
'" target="_blank">' +
edition.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "Emirates",
desc,
extra
};
}
function formatDate(date) {
return `${Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* to2digits */ "h"])(date.day)}-${Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* monthnumberToName */ "f"])(date.month)}-${Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* to2digits */ "h"])(
date.year
)}`;
}
Object(___WEBPACK_IMPORTED_MODULE_2__["register"])("airlines", print);
Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* registerSetting */ "c"])("Emirates", "ekEdition", editions, "/global/english");
/***/ }),
/* 29 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
/* harmony import */ var _print_links__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(0);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(3);
const cabins = ["ECONOMY", "ECONOMY", "BUSINESS", "FIRST"];
function printEY() {
if (!Object(___WEBPACK_IMPORTED_MODULE_4__["anyCarriers"])("EY")) {
return;
}
var createUrl = function() {
var pax = Object(___WEBPACK_IMPORTED_MODULE_4__["validatePax"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printEY");
return;
}
let url =
"https://booking.etihad.com/SSW2010/EYEY/webqtrip.html?journeySpan=MC";
url += `&numAdults=${pax.adults}`;
url += `&numChildren=${pax.children.length}`;
url += `&numInfants=${pax.infLap}`;
url += `&advertisedFare=${_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].price}`;
url += `¤cy=${_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].cur || "USD"}`;
let segnum = 0;
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin.forEach((itin, legnum) => {
itin.seg.forEach(seg => {
url += `&ms[${segnum}].from=${seg.orig}`;
url += `&ms[${segnum}].to=${seg.dest}`;
url += `&ms[${segnum}].departure=${seg.dep.year}-${Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* to2digits */ "h"])(
seg.dep.month
)}-${Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* to2digits */ "h"])(seg.dep.day)}T${Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* to4digitTime */ "i"])(seg.dep.time24)}`;
url += `&ms[${segnum}].arrival=${seg.arr.year}-${Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* to2digits */ "h"])(
seg.arr.month
)}-${Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* to2digits */ "h"])(seg.arr.day)}T${Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* to4digitTime */ "i"])(seg.arr.time24)}`;
url += `&ms[${segnum}].leg=${legnum}`;
url += `&ms[${segnum}].cbnClass=${cabins[Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_3__[/* getCabin */ "b"])(seg.cabin)]}`;
segnum++;
});
});
return url;
};
var url = createUrl();
if (!url) {
return;
}
return {
url,
title: "Etihad"
};
}
Object(_print_links__WEBPACK_IMPORTED_MODULE_1__[/* registerLink */ "b"])("airlines", printEY);
/***/ }),
/* 30 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
const ibEditions = [
{ value: "es-AO", name: "Angola - Español" },
{ value: "pt-AO", name: "Angola - Português" },
{ value: "es-DZ", name: "Argelia - Español" },
{ value: "fr-DZ", name: "Algérie - Français" },
{ value: "en-AR", name: "Argentina - English" },
{ value: "es-AR", name: "Argentina - Español" },
{ value: "en-BE", name: "Belgium - English" },
{ value: "es-BE", name: "Bélgica - Español" },
{ value: "fr-BE", name: "Belgique - Français" },
{ value: "es-BR", name: "Brasil - Español" },
{ value: "pt-BR", name: "Brasil - Português" },
{ value: "en-CL", name: "Chile - English" },
{ value: "es-CL", name: "Chile - Español" },
{ value: "en-CO", name: "Colombia - English" },
{ value: "es-CO", name: "Colombia - Español" },
{ value: "en-CR", name: "Costa Rica - English" },
{ value: "es-CR", name: "Costa Rica - Español" },
{ value: "en-HR", name: "Croatia - English" },
{ value: "es-HR", name: "Croacia - Español" },
{ value: "it-HR", name: "Croazia - Italiano" },
{ value: "en-CU", name: "Cuba - English" },
{ value: "es-CU", name: "Cuba - Español" },
{ value: "en-CZ", name: "Czech Republic - English" },
{ value: "es-CZ", name: "República Checa - Español" },
{ value: "en-DK", name: "Denmark - English" },
{ value: "es-DK", name: "Dinamarca - Español" },
{ value: "de-DE", name: "Deutschland - Deutsch" },
{ value: "es-DE", name: "Alemania - Español" },
{ value: "en-DO", name: "Dominican Republic - English" },
{ value: "es-DO", name: "República Dominicana - Español" },
{ value: "en-EC", name: "Ecuador - English" },
{ value: "es-EC", name: "Ecuador - Español" },
{ value: "en-SV", name: "El Salvador - English" },
{ value: "es-SV", name: "El Salvador - Español" },
{ value: "en-GQ", name: "Equatorial Guinea - English" },
{ value: "es-GQ", name: "Guinea Ecuatorial - Español" },
{ value: "ca-ES", name: "Espanya - Català" },
{ value: "en-ES", name: "Spain - English" },
{ value: "es-ES", name: "España - Español" },
{ value: "es-FR", name: "Francia - Español" },
{ value: "fr-FR", name: "France - Français" },
{ value: "en-GH", name: "Ghana - English" },
{ value: "es-GH", name: "Ghana - Español" },
{ value: "en-GR", name: "Greece - English" },
{ value: "es-GR", name: "Grecia - Español" },
{ value: "en-GT", name: "Guatemala - English" },
{ value: "es-GT", name: "Guatemala - Español" },
{ value: "en-HN", name: "Honduras - English" },
{ value: "es-HN", name: "Honduras - Español" },
{ value: "en-IE", name: "Ireland - English" },
{ value: "es-IE", name: "Irlanda - Español" },
{ value: "en-IL", name: "Israel - English" },
{ value: "es-IL", name: "Israel - Español" },
{ value: "en-IT", name: "Italy - English" },
{ value: "es-IT", name: "Italia - Español" },
{ value: "it-IT", name: "Italia - Italiano" },
{ value: "en-JP", name: "Japan - English" },
{ value: "es-JP", name: "Japón - Español" },
{ value: "ja-JP", name: "日本 - 日本語" },
{ value: "en-MT", name: "Malta - English" },
{ value: "es-MT", name: "Malta - Español" },
{ value: "it-MT", name: "Malta - Italiano" },
{ value: "es-MA", name: "Marruecos - Español" },
{ value: "fr-MA", name: "Maroc - Français" },
{ value: "es-MR", name: "Mauritania - Español" },
{ value: "fr-MR", name: "Mauritanie - Français" },
{ value: "en-MX", name: "Mexico - English" },
{ value: "es-MX", name: "México - Español" },
{ value: "en-NL", name: "Netherlands - English" },
{ value: "es-NL", name: "Holanda - Español" },
{ value: "nl-NL", name: "Nederland - Nederlands" },
{ value: "en-NI", name: "Nicaragua - English" },
{ value: "es-NI", name: "Nicaragua - Español" },
{ value: "en-NG", name: "Nigeria - English" },
{ value: "es-NG", name: "Nigeria - Español" },
{ value: "en-PA", name: "Panama - English" },
{ value: "es-PA", name: "Panamá - Español" },
{ value: "en-PE", name: "Peru - English" },
{ value: "es-PE", name: "Perú - Español" },
{ value: "es-PT", name: "Portugal - Español" },
{ value: "pt-PT", name: "Portugal - Português" },
{ value: "en-PR", name: "Puerto Rico - English" },
{ value: "es-PR", name: "Puerto Rico - Español" },
{ value: "en-RU", name: "Russian Federation - English" },
{ value: "es-RU", name: "Rusia - Español" },
{ value: "ru-RU", name: "Rossiya - Русский" },
{ value: "de-CH", name: "Schweiz - Deutsch" },
{ value: "es-CH", name: "Suiza - Español" },
{ value: "fr-CH", name: "Suisse - Français" },
{ value: "es-SN", name: "Senegal - Español" },
{ value: "fr-SN", name: "Sénégal - Français" },
{ value: "en-ZA", name: "South Africa - English" },
{ value: "es-ZA", name: "Sudáfrica - Español" },
{ value: "en-SE", name: "Sweden - English" },
{ value: "es-SE", name: "Suecia - Español" },
{ value: "en-TR", name: "Turkey - English" },
{ value: "es-TR", name: "Turquía - Español" },
{ value: "en-US", name: "USA - English" },
{ value: "es-US", name: "USA - Español" },
{ value: "en-GB", name: "United Kingdom - English" },
{ value: "es-GB", name: "Reino Unido - Español" },
{ value: "en-UY", name: "Uruguay - English" },
{ value: "es-UY", name: "Uruguay - Español" },
{ value: "en-VE", name: "Venezuela - English" },
{ value: "es-VE", name: "Venezuela - Español" }
];
function printIB() {
if (!Object(___WEBPACK_IMPORTED_MODULE_2__["anyCarriers"])("IB", "BA")) {
return;
}
var createUrl = function(edition, currency) {
// 0 = Economy; 1=Premium Economy; 2=Business; 3=First
var cabins = ["Economy", "Economy", "Business", "First"];
var pax = Object(___WEBPACK_IMPORTED_MODULE_2__["validatePax"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printIB");
return;
}
var url =
"http://www.iberia.com/web/partnerLink.do?Adult=" +
pax.adults +
"&Child=" +
pax.children.length +
"&Infant=0&InfantLap=" +
pax.infLap +
"&PointOfSaleCountry=" +
edition[1] +
"&UserCurrency=" +
currency +
"&UserLanguage=" +
edition[0] +
"&TripType=";
if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length == 1) {
url += "OneWay";
} else if (
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length == 2 &&
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].orig == _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[1].dest &&
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].dest == _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[1].orig
) {
url += "RoundTrip";
} else {
url += "MultiCity";
}
var seg = 0;
var slice = 1;
var slicestr = "";
//Build multi-city search based on legs
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
// walks each leg
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length; j++) {
seg++;
//walks each segment of leg
var k = 0;
// lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length - 1) {
if (
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !=
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440
)
break;
k++;
}
url += "&Origin" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].orig;
url += "&Destination" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].dest;
url += "&Carrier" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].carrier;
url +=
"&DepartureDate" +
seg +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2);
url += "&FlightNumber" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].fnr;
url +=
"&BookingCode" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].bookingclass;
url += "&Cabin" + seg + "=" + cabins[_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].cabin];
slicestr += (slicestr === "" ? "" : "%2C") + seg;
j += k;
}
url += "&Slice" + slice + "=" + slicestr;
slice++;
slicestr = "";
}
return url;
};
// get edition
var edition = _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].ibEdition.split("-");
var url = createUrl(edition, "USD");
if (!url) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += ibEditions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.value.split("-"), "USD") +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "Iberia",
extra
};
}
Object(___WEBPACK_IMPORTED_MODULE_2__["register"])("airlines", printIB);
Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* registerSetting */ "c"])("Iberia", "ibEdition", ibEditions, "en-US");
/***/ }),
/* 31 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(0);
const klEditions = [
{ value: "de_de", name: "Germany / Deutsch" },
{ value: "de_en", name: "Germany / English" },
{ value: "fr_en", name: "France / English" },
{ value: "fr_fr", name: "France / French" },
{ value: "nl_en", name: "Netherlands / English" },
{ value: "gb_en", name: "United Kingdom / English" },
{ value: "us_en", name: "US / English" }
];
const cabins = ["M", "W", "C", "F"];
function printKL() {
if (!Object(___WEBPACK_IMPORTED_MODULE_3__["anyCarriers"])("KL")) {
return;
}
var createUrl = function(edition) {
var pax = Object(___WEBPACK_IMPORTED_MODULE_3__["validatePax"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printKL");
return;
}
const segs = Object(_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* getCurrentSegs */ "b"])();
let url =
"https://www.klm.com/ams/search-web/api/metasearch?application=EBT7";
url +=
"&trip=" +
segs
.map(
seg =>
`${seg.orig}:${seg.dep.year}${Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* to2digits */ "h"])(seg.dep.month)}${Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* to2digits */ "h"])(
seg.dep.day
)}@${Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* to4digitTime */ "i"])(seg.dep.time)}:${seg.carrier}${Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* to4digits */ "j"])(
seg.fnr
)}:${seg.bookingclass}>${seg.dest}`
)
.join("-");
url += "&ref=MS,fb=" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].farebases.join(".");
url += "&numberOfAdults=" + pax.adults;
url += "&numberOfChildren=" + pax.children.length;
url += "&numberOfInfants=" + pax.infLap;
url +=
"&cabinClass=" +
cabins[Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getCabin */ "b"])(Math.min(...segs.map(seg => seg.cabin)))];
url += "&country=" + edition[0];
url += "&language=" + edition[1];
return url;
};
// get edition
var edition = _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].klEdition.split("_");
if (edition.length != 2) {
Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "g"])("Error:Invalid KLM-Edition");
return;
}
var url = createUrl(edition);
if (!url) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += klEditions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.value.split("_")) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "KLM",
extra
};
}
Object(___WEBPACK_IMPORTED_MODULE_3__["register"])("airlines", printKL);
Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* registerSetting */ "c"])("KLM", "klEdition", klEditions, "us_en");
/***/ }),
/* 32 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
const laEditions = [
{ value: "es/ar", name: "Argentina / Spanish" },
{ value: "pt/br", name: "Brasil / Portuguese" },
{ value: "es/cl", name: "Chile / Spanish" },
{ value: "es/co", name: "Colombia / Spanish" },
{ value: "es/ec", name: "Ecuador / Spanish" },
{ value: "es/pe", name: "Peru / Spanish" },
{ value: "es/uy", name: "Uruguay / Spanish" },
{ value: "en/us", name: "US / English" },
{ value: "es/mx", name: "Mexico / Spanish" },
{ value: "en/ca", name: "Canada / English" },
{ value: "de/de", name: "Germany / German" },
{ value: "es/es", name: "Spain / Spanish" },
{ value: "fr/fr", name: "France / French" },
{ value: "en/it", name: "Italy / English" },
{ value: "en/uk", name: "UK / English" },
{ value: "en/ue", name: "Rest of Europe / English" },
{ value: "en/au", name: "Australia / English" },
{ value: "en/nz", name: "New Zealand / English" },
{ value: "es/un", name: "Other Countries / Spanish" },
{ value: "en/un", name: "Other Countries / English" }
];
function printLA() {
if (!Object(___WEBPACK_IMPORTED_MODULE_2__["anyCarriers"])("LA")) {
return;
}
// NOTE: currency will be determined by the locale; the deeplink does not support manually specifying the currency
var createUrl = function(edition) {
var pax = Object(___WEBPACK_IMPORTED_MODULE_2__["validatePax"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printLA");
return;
}
var laUrl = '"trip":{"flights":[';
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
// amount and currency required for each segment:
laUrl +=
'{"amount":"' +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].price +
'","currency":"' +
"USD" +
'","segments":[';
var mincabin = 3;
// walks each leg
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length; j++) {
//walks each segment of leg
var k = 0;
// lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length - 1) {
if (
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !=
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440
)
break;
k++;
}
laUrl +=
'{"departure_airport":"' +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].orig +
'","flight_number":"' +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].fnr +
'","departure_date":"' +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.year.toString() +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.month.toString()).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.day.toString()).slice(-2) +
'","arrival_airport":"' +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].dest +
'","farebasis":"' +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].farebase +
'","marketing_airline":"' +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].carrier +
'","class":"' +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].bookingclass +
'","arrival_date":"' +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].arr.year.toString() +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].arr.month.toString()).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].arr.day.toString()).slice(-2) +
'"},';
// check the minimum cabin:
if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].cabin < mincabin) {
mincabin = _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].cabin;
}
j += k;
}
laUrl = laUrl.substring(0, laUrl.length - 1) + "]},";
}
// Build passengers info:
var laPassengers =
'"passengers":{"numberAdults":"' +
pax.adults +
'","numberInfants":"' +
pax.infLap +
'","numberChildren":"' +
pax.children.length +
'"},';
// Compile the final URL (and encode it):
laUrl =
"https://ssl.lan.com/cgi-bin/compra/paso4.cgi?forced_home=" +
edition +
"&sessionParameters=%7B" +
encodeURIComponent(laPassengers) +
encodeURIComponent(laUrl.substring(0, laUrl.length - 1)) +
"]}}&utm_medium=metasearch&utm_source=gfs&utm_campaign=US_deeplink_s4&gclsrc=gf";
return laUrl;
};
var url = createUrl(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].laEdition);
if (!url) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += laEditions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.value) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "LATAM",
extra
};
}
Object(___WEBPACK_IMPORTED_MODULE_2__["register"])("airlines", printLA);
Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* registerSetting */ "c"])("LATAM", "laEdition", laEditions, "en/us");
/***/ }),
/* 33 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
/* harmony import */ var _print_amadeus__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7);
const lhEditions = [
{ value: "AL-gb", name: "Albania / English" },
{ value: "DZ-fr", name: "Algeria / Français" },
{ value: "AO-gb", name: "Angola / English" },
{ value: "AR-es", name: "Argentina / Español" },
{ value: "AM-gb", name: "Armenia / English" },
{ value: "AU-gb", name: "Australia / English" },
{ value: "AT-de", name: "Austria / Deutsch" },
{ value: "AT-gb", name: "Austria / English" },
{ value: "AZ-gb", name: "Azerbaijan / English" },
{ value: "BH-gb", name: "Bahrain / English" },
{ value: "BY-gb", name: "Belarus / English" },
{ value: "BE-gb", name: "Belgium / English" },
{ value: "BA-gb", name: "Bosnia/Hercegovina / English" },
{ value: "BR-pt", name: "Brazil / Português" },
{ value: "BG-gb", name: "Bulgaria / English" },
{ value: "CA-gb", name: "Canada / English" },
{ value: "CA-fr", name: "Canada / Français" },
{ value: "CL-es", name: "Chile / Español" },
{ value: "CN-gb", name: "China / English" },
{ value: "CO-es", name: "Colombia / Español" },
{ value: "HR-gb", name: "Croatia / English" },
{ value: "CY-gb", name: "Cyprus / English" },
{ value: "CZ-gb", name: "Czech Republic / English" },
{ value: "DK-gb", name: "Denmark / English" },
{ value: "EG-gb", name: "Egypt / English" },
{ value: "GQ-gb", name: "Equatorial Guinea / English" },
{ value: "ER-gb", name: "Eritrea / English" },
{ value: "EE-gb", name: "Estonia / English" },
{ value: "ET-gb", name: "Ethiopia / English" },
{ value: "FI-gb", name: "Finland / English" },
{ value: "FR-gb", name: "France / English" },
{ value: "FR-fr", name: "France / Français" },
{ value: "GA-gb", name: "Gabon / English" },
{ value: "GE-gb", name: "Georgia / English" },
{ value: "DE-de", name: "Germany / Deutsch" },
{ value: "DE-gb", name: "Germany / English" },
{ value: "GH-gb", name: "Ghana / English" },
{ value: "GR-gb", name: "Greece / English" },
{ value: "HK-gb", name: "Hong Kong / English" },
{ value: "HU-gb", name: "Hungary / English" },
{ value: "IS-gb", name: "Iceland / English" },
{ value: "IN-gb", name: "India / English" },
{ value: "ID-gb", name: "Indonesia / English" },
{ value: "IR-gb", name: "Iran / English" },
{ value: "IQ-gb", name: "Iraq / English" },
{ value: "IE-gb", name: "Ireland / English" },
{ value: "IL-gb", name: "Israel / English" },
{ value: "IT-it", name: "Italy / Italiano" },
{ value: "IT-gb", name: "Italy / English" },
{ value: "JP-gb", name: "Japan / English" },
{ value: "JO-gb", name: "Jordan / English" },
{ value: "KZ-gb", name: "Kazakhstan / English" },
{ value: "KE-gb", name: "Kenya / English" },
{ value: "KR-gb", name: "Republic of Korea / English" },
{ value: "KW-gb", name: "Kuwait / English" },
{ value: "LV-gb", name: "Latvia / English" },
{ value: "LB-gb", name: "Lebanon / English" },
{ value: "LY-gb", name: "Libya / English" },
{ value: "LT-gb", name: "Lithuania / English" },
{ value: "LU-gb", name: "Luxembourg / English" },
{ value: "MY-gb", name: "Malaysia / English" },
{ value: "MV-gb", name: "Maldives / English" },
{ value: "MT-gb", name: "Malta / English" },
{ value: "MU-gb", name: "Mauritius / English" },
{ value: "MX-es", name: "Mexico / Español" },
{ value: "MD-gb", name: "Moldova / English" },
{ value: "MA-fr", name: "Morocco / Français" },
{ value: "NL-gb", name: "Netherlands / English" },
{ value: "NZ-gb", name: "New Zealand / English" },
{ value: "NG-gb", name: "Nigeria / English" },
{ value: "NO-gb", name: "Norway / English" },
{ value: "OM-gb", name: "Oman / English" },
{ value: "PK-gb", name: "Pakistan / English" },
{ value: "PA-es", name: "Panama / Español" },
{ value: "PH-gb", name: "Philippines / English" },
{ value: "PL-gb", name: "Poland / English" },
{ value: "PL-pl", name: "Poland / Polski" },
{ value: "PT-gb", name: "Portugal / English" },
{ value: "PT-pt", name: "Portugal / Português" },
{ value: "QA-gb", name: "Qatar / English" },
{ value: "CD-gb", name: "Republic of the Congo / English" },
{ value: "RO-gb", name: "Romania / English" },
{ value: "RU-gb", name: "Russia / English" },
{ value: "RU-ru", name: "Russia / Русский" },
{ value: "SA-gb", name: "Saudi Arabia / English" },
{ value: "RS-gb", name: "Serbia / English" },
{ value: "SG-gb", name: "Singapore / English" },
{ value: "SK-gb", name: "Slovakia / English" },
{ value: "SI-gb", name: "Slovenia / English" },
{ value: "ZA-gb", name: "South Africa / English" },
{ value: "ES-gb", name: "Spain / English" },
{ value: "ES-es", name: "Spain / Español" },
{ value: "SD-gb", name: "Sudan / English" },
{ value: "SE-gb", name: "Sweden / English" },
{ value: "CH-de", name: "Switzerland / Deutsch" },
{ value: "CH-gb", name: "Switzerland / English" },
{ value: "CH-fr", name: "Switzerland / Français" },
{ value: "TW-gb", name: "Taiwan / English " },
{ value: "TH-gb", name: "Thailand / English" },
{ value: "TN-fr", name: "Tunisia / Français" },
{ value: "TR-gb", name: "Turkey / English" },
{ value: "TM-gb", name: "Turkmenistan / English" },
{ value: "UA-gb", name: "Ukraine / English" },
{ value: "AE-gb", name: "United Arab Emirates / English" },
{ value: "UK-gb", name: "United Kingdom / English" },
{ value: "US-gb", name: "United States / English" },
{ value: "VE-es", name: "Venezuela / Español" },
{ value: "VN-gb", name: "Vietnam / English" },
{ value: "XX-gb", name: "Other countries / English" }
];
function printLH() {
if (!Object(___WEBPACK_IMPORTED_MODULE_2__["anyCarriers"])("LH", "OS")) {
return;
}
var createUrl = function(edition) {
var style = 0; // 0 is direct booking - 1 is pre selected
var paxConfig = { allowinf: 1, youthage: 0 };
var pax = Object(___WEBPACK_IMPORTED_MODULE_2__["validatePax"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printLH");
return false;
}
var amadeusConfig = {
sepcabin: 0,
detailed: 0,
allowpremium: 1,
inctimes: 0
};
if (style == 0) {
var url =
"https://book.lufthansa.com/lh/dyn/air-lh/revenue/availThenFare?";
url += "WDS_MSE_PRICE_CURRENCY=EUR&WDS_MSE_TOTAL_PRICE=1.00&";
} else {
var url = "https://book.lufthansa.com/lh/dyn/air-lh/revenue/viewFlights?";
}
url +=
"PORTAL=LH&COUNTRY_SITE=" +
edition[0].toUpperCase() +
"&POS=" +
edition[0].toUpperCase() +
"&LANGUAGE=" +
edition[1].toUpperCase() +
"&SECURE=TRUE&SITE=LUFTLUFT&SO_SITE_LH_FRONTEND_URL=www.lufthansa.com&WDS_WR_CHANNEL=LHCOM";
var tmpPax = Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_3__[/* getAmadeusPax */ "a"])(pax, paxConfig);
url += tmpPax.url;
url += "&NB_ADT=" + tmpPax.adults;
url += "&NB_INF=" + tmpPax.infants;
url += "&NB_CHD=" + tmpPax.children;
url += "&TRIP_TYPE=" + Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_3__[/* getAmadeusTriptype */ "b"])();
url += Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_3__[/* getAmadeusUrl */ "c"])(amadeusConfig);
return url;
};
// get edition
var edition = _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].lhEdition.split("-");
if (edition.length != 2) {
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "g"])("Error:Invalid Lufthansa-Edition");
return;
}
var url = createUrl(edition);
if (!url) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += lhEditions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.value.split("-")) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "Lufthansa",
extra
};
}
Object(___WEBPACK_IMPORTED_MODULE_2__["register"])("airlines", printLH);
Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* registerSetting */ "c"])("Lufthansa", "lhEdition", lhEditions, "US-gb");
/***/ }),
/* 34 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(0);
const lxEditions = [
{ value: "de_de", name: "Germany" },
{ value: "us_en", name: "US" }
];
function printLX() {
if (!Object(___WEBPACK_IMPORTED_MODULE_3__["anyCarriers"])("LX")) {
return;
}
// 0 = Economy; 1=Premium Economy; 2=Business; 3=First
var cabins = ["", "", "/class-business", "/class-first"];
var mincabin = 3;
var createUrl = function(edition) {
var url =
"https://www.swiss.com/" +
edition[0] +
"/" +
edition[1] +
"/Book/Combined";
var pax = Object(___WEBPACK_IMPORTED_MODULE_3__["validatePax"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printLX");
return;
}
//Build multi-city search based on legs
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin.length; i++) {
// walks each leg
url +=
"/" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].orig + "-" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dest + "/";
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length; j++) {
//walks each segment of leg
var k = 0;
// lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length - 1) {
if (
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !=
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440
)
break;
k++;
}
url +=
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].carrier +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].fnr +
"-";
if (_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin < mincabin) {
mincabin = _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin;
}
j += k;
}
url = url.substring(0, url.length - 1);
url +=
"/" +
(i > 0 ? "to" : "from") +
"-" +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.year +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.month).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.day).slice(-2);
}
url +=
"/adults-" +
pax.adults +
"/children-" +
pax.children.length +
"/infants-" +
pax.infLap;
url += cabins[_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin === "Auto" ? mincabin : Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getForcedCabin */ "c"])()];
return url;
};
// get edition
var edition = _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].lxEdition.split("_");
if (edition.length != 2) {
Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "g"])("Error:Invalid Swiss-Edition");
return;
}
var url = createUrl(edition);
if (!url) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += lxEditions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.value.split("_")) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "Swiss",
extra
};
}
Object(___WEBPACK_IMPORTED_MODULE_3__["register"])("airlines", printLX);
Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* registerSetting */ "c"])("Swiss", "lxEdition", lxEditions, "us_en");
/***/ }),
/* 35 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
/* harmony import */ var _print_amadeus__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7);
function printOA() {
if (!Object(___WEBPACK_IMPORTED_MODULE_2__["anyCarriers"])("OA", "A3")) {
return;
}
var url =
"https://e-ticket.olympicair.com/A3Responsive/dyn/air/booking/?BOOKING_FLOW=REVENUE&FLEXIBILITY=3&DISPLAY_TYPE=2&FORCE_OVERRIDE=TRUE&PRICING_TYPE=O";
var pax = Object(___WEBPACK_IMPORTED_MODULE_2__["validatePax"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printOA");
return;
}
var paxConfig = { allowinf: 1, youthage: 0 };
var amadeusConfig = {
sepcabin: 0,
detailed: 0,
allowpremium: 1,
inctimes: 1
};
var tmpPax = Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_3__[/* getAmadeusPax */ "a"])(pax, paxConfig);
url += "&TRIP_TYPE=" + Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_3__[/* getAmadeusTriptype */ "b"])();
url += tmpPax.url;
url += Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_3__[/* getAmadeusUrl */ "c"])(amadeusConfig);
url +=
"&SITE=E00KE00K&SKIN=skin_oa&SO_GL=%3CSO_GL%3E%09%3CGLOBAL_LIST%3E%09%09%3CNAME%3ESL_TRAVELLER_TYPE_LIST%3C%2FNAME%3E%09%09%3CLIST_ELEMENT%3E%3CCODE%3EADT%3C%2FCODE%3E%3CLIST_VALUE%3EAdult%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EN%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EADT%3C%2FLIST_VALUE%3E%3C%2FLIST_ELEMENT%3E%09%09%3CLIST_ELEMENT%3E%3CCODE%3EB15%3C%2FCODE%3E%3CLIST_VALUE%3EYoung+adult%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EN%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EB15%3C%2FLIST_VALUE%3E%3C%2FLIST_ELEMENT%3E%09%09%3CLIST_ELEMENT%3E%3CCODE%3EC07%3C%2FCODE%3E%3CLIST_VALUE%3EYouth%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EN%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EC07%3C%2FLIST_VALUE%3E%3C%2FLIST_ELEMENT%3E%09%09%3CLIST_ELEMENT%3E%3CCODE%3EC03%3C%2FCODE%3E%3CLIST_VALUE%3EChild%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EN%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EC03%3C%2FLIST_VALUE%3E%3C%2FLIST_ELEMENT%3E%09%09%3CLIST_ELEMENT%3E%3CCODE%3EINF%3C%2FCODE%3E%3CLIST_VALUE%3EInfant%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EN%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EINF%3C%2FLIST_VALUE%3E%3C%2FLIST_ELEMENT%3E++++++++%3CLIST_ELEMENT%3E%3CCODE%3EUNN%3C%2FCODE%3E%3CLIST_VALUE%3EUMNR%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EN%3C%2FLIST_VALUE%3E%3CLIST_VALUE%3EUNN%3C%2FLIST_VALUE%3E%3C%2FLIST_ELEMENT%3E%09%3C%2FGLOBAL_LIST%3E%3C%2FSO_GL%3E&SO_SITE_ETKT_Q_OFFICE_ID=ATHA308OA&SO_SITE_OFFICE_ID=ATHA308OA&SO_SITE_POINT_OF_SALE=ATH&SO_SITE_POINT_OF_TICKETING=ATH&SO_SITE_PREBOOK_DURATION=I180&SO_SITE_QUEUE_OFFICE_ID=ATHA308OA&SO_SITE_SP_QUEUE_OFFICE_ID=ATHA308OA";
url +=
"&LANGUAGE=" +
(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].language == "oa" || _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].language == "de"
? _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].language.toUpperCase()
: "GB");
url +=
"&WDS_ADD_BOOK_NOW_BUTTON_EMAF=TRUE&WDS_ADVERTISING_PANEL_CONF_ACTIVATED=true&WDS_AFFILIATE_STATUS=C&WDS_AMOP_DISPLAY_PRIORITY=PAYPAL:SOFORT:KLARNA:EPS:IDEAL:BANCONTACT:ENTERCASH:ALIPAY:CUP&WDS_AMOP_FEE=PAYPAL:0;KLARNA:0;SOFORT:0;ENTERCASH:0;EPS:0;IDEAL:0;BANCONTACT:0;ALIPAY:0;CUP:0;&WDS_AMOP_FEE_APPLY=PER_TRANSACTION&WDS_AMOP_FEE_CALCULATION=PER&WDS_AMOP_LIST_ACTIVATED=PAYPAL;KLARNA;SOFORT;ENTERCASH;EPS;IDEAL;BANCONTACT;ALIPAY;CUP&WDS_AMOP_LIST_DEACTIVATED=&WDS_AMOP_TIME_LIMIT=PAYPAL:48;KLARNA:0;SOFORT:0;ENTERCASH:0;EPS:0;IDEAL:0;BANCONTACT:0;ALIPAY:24;CUP:24;&WDS_ANCILLARY_IN_MILES_ENABLED=TRUE&WDS_ASSISTANCE_REQUEST_ACTIVATED=TRUE&WDS_ATCOM_TIMEOUT=2000&WDS_AVAIL_PRICE_DISPLAY_TYPE=PER_ADT_WITH_TAX_NO_FEE&WDS_BAG_PLACEHOLDER_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_BAG_POLICY_PANEL_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_BOOKING_LISTENER_URL=https://en.aegeanair.com/BookingListener.axd&WDS_BOUND_INDEX_EXPANDED=1&WDS_BUSINESS_MEAL_FARE_FAMILIES=BUSINESS:BUSINESTES:BUSINESSI&WDS_BUSINESS_MEAL_FREQUENT_FLYER_LEVELS=GOLD:SILVER&WDS_BUSINESS_MEAL_SUPPORTED=true&WDS_BUSINESS_ON_BOARD_DISPLAY_IN_LOGIN_PANEL=TRUE&WDS_BUSINESS_ON_BOARD_ENABLED=TRUE&WDS_BUSINESS_ON_BOARD_PAX_TYPE=ADT&WDS_CABIN_CLASS_DISPLAY=TRUE&WDS_CALENDAR_TO_UPSELL_FLEXIBLE_ACTIVATED=3&[email protected]&WDS_CAR_ENABLED=FALSE&WDS_CAR_PANEL_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_CC_FEE_CARD_TYPE=VI:0;CA:0;MA:0;AX:0;DC:0;TP:;&WDS_CC_FEE_NO_CARD=0&WDS_CC_FEE_ZERO_DISPLAYED=FALSE&WDS_CC_LIST=VI:CA:MA:AX:DC:TP&WDS_CFF_TOUSE=CFF01FEB14&WDS_CHANNEL=B2C&WDS_CLEAR_CONTENT_URL=https://en.aegeanair.com/PlainContent.axd&WDS_DEVICE_NAME=DESKTOP_UNKNOWN&WDS_DEVICE_OS=Windows_10&WDS_DEVICE_VIEWPORT=L&WDS_DISPLAY_EMAIL_IN_BROWSER_URL=https://en.aegeanair.com/ConfirmationEmail.axd&WDS_DISPLAY_FBA_AND_REFUNDABILITY_PER_BOUND_IN_SB=TRUE&WDS_DISPLAY_GREEK_RURAL_ID=FALSE&WDS_DISPLAY_RECEIPT=SHOW&WDS_DISPLAY_REGULATION_CONDITIONS_COUNTRY=FR&WDS_DISPLAY_REGULATION_CONDITIONS_LANG=FR&WDS_DONATION_PANEL_ACTIVATED=FALSE&WDS_DONATION_PANEL_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_EMAF_BOOK_NOW_URL=https://en.aegeanair.com/PostHandler.axd&WDS_ENABLE_PARKING=FALSE&WDS_ENABLE_TOKEN=true&WDS_ENABLE_TOKEN_FOR_CAR=false&WDS_ENABLE_TOKEN_FOR_HOTEL=false&WDS_EPTS=unknown_call&WDS_EXTERNAL_CSS_URL=https://en.aegeanair.com/css/1A/responsive.css?v=10&WDS_EXTRAS_DEFAULT_PANEL_ORDER=BAGGAGE;MEALS;SPEQ;PETS;FASTTRACK;INSURANCE;PARKING;DONATION&WDS_FARE_COMPARISON_URL=https://en.aegeanair.com/FareFamilyComparison.axd&WDS_FARE_CONDITIONS_URL=https://en.aegeanair.com/ffc.axd&WDS_FASTTRACK_ELIGIBLE_AIRPORTS=LCA;ATH&WDS_FASTTRACK_ENABLED=TRUE&WDS_FASTTRACK_HANDLER_URL=https://en.aegeanair.com/FastTrackHandler.axd&WDS_FREQUENT_FLYER_PROGRAMS_OA_FLIGHTS=A3;AC;UA;MS;TK;NH;LH;SQ&WDS_GDPR_DISPLAY_PROMOS_CONFIRMATION_NO_CONSENT=FALSE&WDS_GDPR_HANDLER_URL=https://en.aegeanair.com/api/v1/members/checkgdpremailstatus&WDS_GO_TO_FINALIZE_URL=https://en.aegeanair.com/FinalizeRedirect.axd&WDS_GO_TO_MY_BOOKING_URL=https://en.aegeanair.com/MyBooking.axd&WDS_GO_TO_SEAT_SELECTION_URL=https://en.aegeanair.com/SeatRedirect.axd&WDS_HANDLE_SOS_AS_RM_FEE=TRUE&WDS_HOTEL_ENABLED=FALSE&WDS_HOTEL_PANEL_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_HOTEL_POPUP_CONF_ACTIVATED=TRUE&WDS_HOTEL_POPUP_CONF_DELAY=10000&WDS_HOTEL_RECOMMENDATION_PANEL_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_INSURANCE_ACTIVATED=TRUE&WDS_INSURANCE_PANEL_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_INSURANCE_PRESELECT=NONE&WDS_LATE_LOGIN_ENABLED=TRUE&WDS_LATE_LOGIN_URL=https://en.aegeanair.com/api/v1/members/loyaltyauth&WDS_MEAL_FORBIDDEN_PAX_TYPE=INF&WDS_MEAL_HANDLER_URL=https://en.aegeanair.com/MealHandler.axd&WDS_MEAL_LIST_PROPOSED=BBML:BLML:CHML:DBML:FPML:GFML:KSML:LCML:LFML:NLML:LSML:MOML:HNML:SFML:VOML:VLML:AVML:VJML:VGML:RVML&WDS_MILES_EARNED_HANDLER_URL=https://en.aegeanair.com/AwardedMiles.axd&WDS_NEW_PROMOTION_TYPE=NONE&WDS_NEW_PROMOTION_WEBSERVICES_ENVIRONMENT=PRODUCTION&WDS_OBFEE_FROM_NEWPOLICY_ACTIVATED=TRUE&WDS_OLYMPIC_TRACKING=true&WDS_ONLY_DIRECT_REQUESTED=FALSE&WDS_PARKING_PANEL_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_PETS_ENABLED=TRUE&WDS_PHONE_PRESELECT_COUNTRY_CODE=US&WDS_PLUSGRADE_ENABLED=false&WDS_PLUSGRADE_HANDLER_URL=https://en.aegeanair.com/PlusgradeHandler.axd&WDS_PROMO_SLOT_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_PROMOCODE_ROUTE_AUTHORIZED=FALSE&WDS_PROMOTION_RBD_LIST=P&WDS_REBOOKING_HIGHSEASON_DATE=&WDS_RESKIN=TRUE&WDS_SB_HOTEL_TIMEOUT=15000&WDS_SEAT_BANNER_URL=https://en.aegeanair.com/SeatBanner.axd&WDS_SEATMAP_ENABLED=TRUE&WDS_SMS_OPTION=SHOW&[email protected]&[email protected]&WDS_SPECIAL_MEAL_LIST=BBML:BLML:CHML:DBML:FPML:GFML:KSML:LCML:LFML:NLML:LSML:MOML:HNML:SFML:VOML:VLML:AVML:VJML:VGML:RVML&WDS_SPECIAL_MEAL_SUPPORTED=TRUE&WDS_SPEQ_ENABLED=TRUE&WDS_TAX_BREAKDOWN_REGULATION_ALLOW_LANG=FR&WDS_TEALEAF_ENABLED=TRUE&WDS_TTT_ENABLED=TRUE&WDS_TTT_PROMO_FARES_REG_EXP=^PR([0-9])+$&WDS_TTT_SELECTION_PANEL_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_UMNR_ENTRY_OVERRIDE=WDS_HOTEL_ENABLED:FALSE;WDS_CAR_ENABLED:FALSE;WDS_TTT_ENABLED:false;WDS_FASTTRACK_ENABLED:false;WDS_ANCILLARY_IN_MILES:false;WDS_ENABLE_PARKING:false;WDS_ASSISTANCE_REQUEST_ACTIVATED:false;WDS_LATE_LOGIN_ENABLED:false;WDS_BUSINESS_ON_BOARD_ENABLED:false&WDS_URL_FACADE_ERROR=https://www.olympicair.com/en/Travel/Reservations/Tickets&WDS_URL_FACADE_NEWSEARCH=https://www.olympicair.com/en/Travel/Reservations/Tickets&WDS_URL_WAITING_CONTENT=https://en.aegeanair.com/WaitingPage.axd&WDS_USE_A3_SOS_INSURANCE_PANEL=TRUE&WDS_USEFUL_LINKS_PANEL_URL=https://en.aegeanair.com/PromoSlots.axd&WDS_VOUCHER_BANNER_ACTIVATED=TRUE&WDS_VOUCHER_BANNER_URL=https://en.aegeanair.com/PromoSlots.axd";
return {
url,
title: "Olympic Air"
};
}
Object(___WEBPACK_IMPORTED_MODULE_2__["register"])("airlines", printOA);
/***/ }),
/* 36 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(0);
function printPS() {
if (!Object(___WEBPACK_IMPORTED_MODULE_1__["anyCarriers"])("PS")) {
return;
}
var createUrl = function(edition, currency) {
// 0 = Economy; 1=Premium Economy; 2=Business; 3=First
var cabins = ["Economy", "Economy", "Business", "First"];
var pax = Object(___WEBPACK_IMPORTED_MODULE_1__["validatePax"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printPS");
return false;
}
var url =
"https://bookapi.flyuia.com/flights/metaSearchQuery?Adult=" +
pax.adults +
"&Child=" +
pax.children.length +
"&Infant=" +
pax.infLap +
"&PointOfSaleCountry=" +
edition[1] +
"&UserCurrency=" +
currency +
"&UserLanguage=" +
edition[0] +
"&TripType=";
if (_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin.length == 1) {
url += "OneWay";
} else if (
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin.length == 2 &&
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[0].orig == _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[1].dest &&
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[0].dest == _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[1].orig
) {
url += "RoundTrip";
} else {
url += "MultiCity";
}
var seg = 0;
var slice = 1;
var slicestr = "";
//Build multi-city search based on legs
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin.length; i++) {
// walks each leg
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg.length; j++) {
seg++;
//walks each segment of leg
var k = 0;
// lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg.length - 1) {
if (
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !=
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440
)
break;
k++;
}
url += "&Origin" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].orig;
url += "&Destination" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j + k].dest;
url += "&Carrier" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].carrier;
url +=
"&DepartureDate" +
seg +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2);
url += "&FlightNumber" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].fnr;
url +=
"&BookingCode" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].bookingclass;
url += "&Cabin" + seg + "=" + cabins[_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].cabin];
slicestr += (slicestr === "" ? "" : "%2C") + seg;
j += k;
}
url += "&Slice" + slice + "=" + slicestr;
slice++;
slicestr = "";
}
return url;
};
var url = createUrl(["EN", "US"], "USD");
if (!url) {
return;
}
return {
url,
title: "UIA"
};
}
Object(___WEBPACK_IMPORTED_MODULE_1__["register"])("airlines", printPS);
/***/ }),
/* 37 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(0);
const qfEditions = [
{ value: "EN_AU", name: "Australia" },
{ value: "EN_NZ", name: "New Zealand" },
{ value: "EN_US", name: "United States" }
];
const qfCurrencies = [
{ value: "AUD", name: "AUD" },
{ value: "NZD", name: "NZD" },
{ value: "USD", name: "USD" }
];
function printQF() {
if (!Object(___WEBPACK_IMPORTED_MODULE_3__["anyCarriers"])("QF", "JQ", "NZ")) {
return;
}
/* Qantas partner deep-link */
var createUrl = function(edition, currency) {
// 0 = Economy; 1=Premium Economy; 2=Business; 3=First
var travelClass = ["ECO", "PRM", "BUS", "FIR"];
// Start the minimum cabin at highest possible (it will drop as we check each leg):
var mincabin = 3;
// Validate the passenger totals first:
var pax = Object(___WEBPACK_IMPORTED_MODULE_3__["validatePax"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 16,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printQF");
return false;
}
var nbrChildren = pax.children.length;
if (!nbrChildren || typeof nbrChildren === "undefined") {
// default to 0 children if undefined:
nbrChildren = 0;
}
// Build search based on legs:
console.log("printQF: begin leg traversal...");
var url = "";
var prefixFltNbr = "sdcFlightNumber";
var prefixSegRbd = "sdcSegmentRbd";
var depAirports = "&depAirports=";
var destAirports = "&destAirports=";
var segDepAirports = "&depAirports=";
var segDestAirports = "&destAirports=";
var tmpTravelDates = "";
var finalDest = _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[0].seg[0].dest;
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin.length; i++) {
// walks each parent "leg" of the itinerary (a leg can have multiple flight segments)
// Record the travel date for each leg:
if (tmpTravelDates === "" || !tmpTravelDates) {
tmpTravelDates +=
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.year.toString() +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.month).slice(-2).toString() +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.day).slice(-2).toString() +
"0000";
} else {
tmpTravelDates +=
"%2C" +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.year.toString() +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.month).slice(-2).toString() +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dep.day).slice(-2).toString() +
"0000";
}
// Grab the origin airport of each leg:
if (segDepAirports.length > 13) segDepAirports += "%2C";
segDepAirports += _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].orig.toString();
// Grab the destination airport of each leg:
if (segDestAirports.length > 14) segDestAirports += "%2C";
segDestAirports += _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].dest.toString();
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length; j++) {
// walks each flight segment of the parent leg
var k = 0;
// Do we need to skip segments? fnr has to be the same and it must be just a layover:
while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg.length - 1) {
if (
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !=
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440
) {
break;
}
k++;
}
// Construct URL for this leg:
url +=
"&" +
prefixFltNbr +
(i + 1) +
(j + 1) +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].carrier +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].fnr;
url +=
"&" +
prefixSegRbd +
(i + 1) +
(j + 1) +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].bookingclass;
// record the departing and destination airports for this leg:
// all departing airports:
if (depAirports.length > 13) depAirports += "%2C";
depAirports += _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].orig.toString();
// all destination airports:
if (destAirports.length > 14) destAirports += "%2C";
destAirports += _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].dest.toString();
if (_parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin < mincabin) {
mincabin = _parse_itin__WEBPACK_IMPORTED_MODULE_4__[/* currentItin */ "a"].itin[i].seg[j].cabin;
}
j += k;
}
}
// Add airports:
// url += depAirports + destAirports;
url += segDepAirports + segDestAirports;
// Add travel dates:
url += "&travelDates=" + tmpTravelDates;
// Add price info:
url += "&sdcTripPriceAmount=0.00";
// Add device type:
url += "&QFdeviceType=desktop";
// Begin final deeplink URL construction:
var urlBase =
"https://book.qantas.com/qf-booking/dyn/air/tripflow.redirect?APPLICATION_NAME=SDC";
// Add edition / locale:
urlBase += "&USER_LANG=EN&USER_LOCALE=" + edition;
// Add class(es) of service:
urlBase +=
"&travelClass=" +
travelClass[_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin === "Auto" ? mincabin : Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getForcedCabin */ "c"])()];
// Add passenger info:
urlBase +=
"&numberOfAdults=" +
pax.adults +
"&numberOfChildren=" +
nbrChildren.toString() +
"&numberOfInfants=" +
pax.infLap;
// Add currency:
urlBase += "&sdcPriceCurrency=" + currency;
return urlBase + url;
};
// get edition
var url = createUrl(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].qfEdition, _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].qfCurrency);
if (!url) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += qfEditions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.value, _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].qfCurrency) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "Qantas",
extra
};
}
Object(___WEBPACK_IMPORTED_MODULE_3__["register"])("airlines", printQF);
Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* registerSetting */ "c"])("Qantas", "qfEdition", qfEditions, "EN_US");
Object(_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* registerSetting */ "c"])("Qantas", "qfCurrency", qfCurrencies, "USD");
/***/ }),
/* 38 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(0);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4);
var cabins = ["E", "E", "B", "F"];
function print() {
if (!Object(___WEBPACK_IMPORTED_MODULE_1__["allCarriers"])("QR")) {
return;
}
const pax = Object(___WEBPACK_IMPORTED_MODULE_1__["validatePax"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printQR");
return;
}
const cabin =
cabins[Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_3__[/* getCabin */ "b"])(Math.min(...Object(_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* getCurrentSegs */ "b"])().map(seg => seg.cabin)))];
const tripType = _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin.length > 1 ? "M" : "O";
let url = `https://booking.qatarairways.com/nsp/views/showBooking.action?widget=MLC&selLang=${_settings_appSettings__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].itaLanguage}&tripType=${tripType}&bookingClass=${cabin}&adults=${pax.adults}&children=${pax.children.length}&infants=${pax.infLap}&isMetaSearch=true&`;
url += _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin
.map((itin, i) => {
let qs = `fromStation=${itin.orig}&toStation=${itin.dest}&departing=${
itin.dep.year
}-${Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* to2digits */ "h"])(itin.dep.month)}-${Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* to2digits */ "h"])(itin.dep.day)}`;
if (i <= 1)
qs += `&${i === 0 ? "out" : "in"}boundFltNumber=${itin.seg
.map(seg => seg.fnr)
.join(",")}`;
return qs;
})
.join("&");
if (_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin.length <= 2) url += "&price=0";
return {
url,
title: "Qatar Airways"
};
}
Object(___WEBPACK_IMPORTED_MODULE_1__["register"])("airlines", print);
/***/ }),
/* 39 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
/* harmony import */ var _print_amadeus__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7);
function printTK() {
if (!Object(___WEBPACK_IMPORTED_MODULE_2__["anyCarriers"])("TK")) {
return;
}
var url =
"https://book.eu2.amadeus.com/plnext/turkishairlines/Override.action?";
var paxConfig = { allowinf: 1, youthage: 0 };
var pax = Object(___WEBPACK_IMPORTED_MODULE_2__["validatePax"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printTK");
return;
}
var amadeusConfig = {
sepcabin: 0,
detailed: 0,
allowpremium: 1,
inctimes: 1
};
var tmpPax = Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_3__[/* getAmadeusPax */ "a"])(pax, paxConfig);
url += "TRIP_TYPE=" + Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_3__[/* getAmadeusTriptype */ "b"])();
url += tmpPax.url;
url += Object(_print_amadeus__WEBPACK_IMPORTED_MODULE_3__[/* getAmadeusUrl */ "c"])(amadeusConfig);
url +=
"&PORT_TSC=FALSE&SO_SITE_ALLOW_SERVICE_FEE=0&SO_SITE_SERVICE_FEE_MODE=AIR&SITE=BBAHBBAH";
url +=
"&LANGUAGE=" +
(_settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].language == "tk" || _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].language == "de"
? _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].language.toUpperCase()
: "GB");
url += "&EMBEDDED_TRANSACTION=AirComplexAvailability&TRIPFLOW=YES";
url +=
"SO_LANG_TRIPFLOW_ENTRY_ADDRE=online.turkishairlines.com%2Finternet-booking%2Famadeus.tk&ARRANGE_BY=N&DIRECT_NON_STOP=false&REFRESH=0&SO_SITE_TAX_BREAKDOWN_DISP=TRUE&SO_LANG_DISABLE_X_XSS_PROTEC=TRUE&SO_SITE_REDIRECT_MODE=AUTOMATIC&SO_LANG_URL_AIR_NFS_SRCH=http%3A%2F%2Fonline.turkishairlines.com%2Finternet-booking%2Fstart.tk";
return {
url,
title: "Turkish"
};
}
Object(___WEBPACK_IMPORTED_MODULE_2__["register"])("airlines", printTK);
/***/ }),
/* 40 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(0);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4);
const cabins = ["", "p", "b", "f"];
function print() {
var pax = Object(___WEBPACK_IMPORTED_MODULE_0__["validatePax"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: true,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "g"])(
"Error: Failed to validate Passengers in printGoogleFlights"
);
return;
}
const cabin =
cabins[Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_3__[/* getCabin */ "b"])(Math.min(...Object(_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* getCurrentSegs */ "b"])().map(seg => seg.cabin)))];
const url =
"https://www.google.com/flights/#flt=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin
.map(
itin =>
`${itin.orig}.${itin.dest}.${itin.dep.year}-${Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* to2digits */ "h"])(
itin.dep.month
)}-${Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* to2digits */ "h"])(itin.dep.day)}.${itin.seg
.map(
(seg, j) => `${seg.orig}${seg.dest}${j}${seg.carrier}${seg.fnr}`
)
.join("~")}`
)
.join("*") +
`;c:${_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].cur || "USD"};px:${pax.adults},${pax.children.length},${
pax.infLap
},${pax.infSeat};sc:${cabin};tt:${
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin.length === 1 ? "o" : "m"
}`;
return {
url,
title: "Google Flights"
};
}
Object(___WEBPACK_IMPORTED_MODULE_0__["register"])("meta", print);
/***/ }),
/* 41 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(0);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4);
const editions = [
{ name: "Argentina", host: "https://ar.jetcost.com/vuelos/busqueda" },
{ name: "Australia", host: "https://www.jetcost.com.au/flights/search" },
{ name: "Bolivia", host: "https://www.jetcost.com.bo/vuelos/busqueda" },
{ name: "Brasil", host: "https://www.jetcost.com.br/voos/pesquisa" },
{ name: "Canada (en)", host: "https://ca.jetcost.com/en/flights/search" },
{ name: "Canada (fr)", host: "https://ca.jetcost.com/fr/vols/recherche" },
{ name: "Chile", host: "https://www.jetcost.cl/vuelos/busqueda" },
{ name: "Colombia", host: "https://www.jetcost.com.co/vuelos/busqueda" },
{ name: "Danmark", host: "https://www.jetcost.dk/flyrejser/sogning" },
{ name: "Deutschland", host: "https://www.jetcost.de/fluge/suche" },
{ name: "España", host: "https://www.jetcost.es/vuelos/busqueda" },
{
name: "Estados Unidos (es)",
host: "https://us.jetcost.com/es/vuelos/busqueda"
},
{ name: "France", host: "https://www.jetcost.com/vols/recherche" },
{ name: "Hong Kong", host: "https://www.jetcost.hk/en/flights/search" },
{ name: "India", host: "https://www.jetcost.co.in/en/flights/search" },
{ name: "Indonesia", host: "https://www.jetcost.co.id/en/flights/search" },
{ name: "Ireland", host: "https://www.jetcost.ie/flights/search" },
{ name: "Italia", host: "https://www.jetcost.it/voli/ricerca" },
{ name: "Magyarország", host: "https://www.jetcost.hu/jaratok/kereses" },
{ name: "Malaysia", host: "https://www.jetcost.com.my/en/flights/search" },
{ name: "México", host: "https://www.jetcost.com.mx/vuelos/busqueda" },
{ name: "Nederland", host: "https://www.jetcost.nl/vluchten/zoeken" },
{ name: "New Zealand", host: "https://www.jetcost.co.nz/flights/search" },
{ name: "Norge", host: "https://www.jetcost.no/flyvninger/sok" },
{ name: "Österreich", host: "https://www.jetcost.at/fluge/suche" },
{ name: "Perú", host: "https://www.jetcost.com.pe/vuelos/busqueda" },
{ name: "Philippines", host: "https://www.jetcost.com.ph/en/flights/search" },
{ name: "Polska", host: "https://www.jetcost.pl/loty/wyszukiwanie" },
{ name: "Portugal", host: "https://www.jetcost.pt/voos/pesquisar" },
{ name: "România", host: "https://www.jetcost.ro/zboruri/cautare" },
{ name: "Россия", host: "https://www.jetcost.ru/reysy/poisk" },
{ name: "Singapore", host: "https://www.jetcost.com.sg/en/flights/search" },
{ name: "South Africa", host: "https://www.jetcost.co.za/en/flights/search" },
{ name: "Suomi", host: "https://www.jetcost.fi/lennot/hae" },
{ name: "Sverige", host: "https://www.jetcost.se/flighter/sokning" },
{ name: "Thailand", host: "https://www.jetcost.co.th/en/flights/search" },
{ name: "United Kingdom", host: "https://www.jetcost.co.uk/flights/search" },
{
name: "United States (en)",
host: "https://us.jetcost.com/en/flights/search"
},
{ name: "Uruguay", host: "https://www.jetcost.com.uy/vuelos/busqueda" },
{ name: "Venezuela", host: "https://www.jetcost.co.ve/vuelos/busqueda" },
{ name: "한국", host: "https://www.jetcost.co.kr/flights/search" }
];
const cabins = [0, 0, 1, 2];
function print() {
if (_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin.length > 2) return; // no multi segments
if (
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin.length == 2 &&
!(
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[0].orig == _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[1].dest &&
_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[0].dest == _parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin[1].orig
)
)
return; // no open jaws
var pax = Object(___WEBPACK_IMPORTED_MODULE_0__["validatePax"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printOvago");
return;
}
const cabin =
cabins[Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_3__[/* getCabin */ "b"])(Math.min(...Object(_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* getCurrentSegs */ "b"])().map(seg => seg.cabin)))];
var createUrl = function(host) {
return `${host}?adults=${pax.adults}&children=${
pax.children.length
}&infants=${pax.infLap}&cabin_class=${cabin}&${_parse_itin__WEBPACK_IMPORTED_MODULE_1__[/* currentItin */ "a"].itin
.map(
(seg, i) =>
`trips[${i}][date]=${formatDate(seg.dep)}&trips[${i}][from_iata]=${
seg.orig
}&trips[${i}][to_iata]=${seg.dest}`
)
.join("&")}`;
};
var url = createUrl("https://us.jetcost.com/en/flights/search");
if (!url) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += editions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.host) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "Jetcost",
extra
};
}
function formatDate(date) {
return `${date.year}-${Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* to2digits */ "h"])(date.month)}-${Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* to2digits */ "h"])(date.day)}`;
}
Object(___WEBPACK_IMPORTED_MODULE_0__["register"])("meta", print);
/***/ }),
/* 42 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1);
const editions = [
{ name: "Kayak.ae", host: "www.kayak.ae" },
{ name: "Kayak.ar", host: "www.kayak.com.ar" },
{ name: "Kayak.at", host: "www.kayak.cat" },
{ name: "Kayak.au", host: "www.kayak.com.au" },
{ name: "Kayak.br", host: "www.kayak.com.br" },
{ name: "Kayak.ca", host: "www.ca.kayak.com" },
{ name: "Kayak.ch", host: "www.kayak.ch" },
{ name: "Kayak.cl", host: "www.kayak.cl" },
{ name: "Kayak.cn", host: "www.cn.kayak.com" },
{ name: "Kayak.co", host: "www.kayak.com.co" },
{ name: "Kayak.com", host: "www.kayak.com" },
{ name: "Kayak.de", host: "www.kayak.de" },
{ name: "Kayak.dk", host: "www.kayak.dk" },
{ name: "Kayak.es", host: "www.es.kayak.com" },
{ name: "Kayak.es", host: "www.kayak.es" },
{ name: "Kayak.fi", host: "www.fi.kayak.com" },
{ name: "Kayak.fr", host: "www.kayak.fr" },
{ name: "Kayak.gr", host: "www.gr.kayak.com" },
{ name: "Kayak.hk", host: "www.kayak.com.hk" },
{ name: "Kayak.id", host: "www.kayak.co.id" },
{ name: "Kayak.ie", host: "www.kayak.ie" },
{ name: "Kayak.in", host: "www.kayak.co.in" },
{ name: "Kayak.it", host: "www.kayak.it" },
{ name: "Kayak.jp", host: "www.kayak.co.jp" },
{ name: "Kayak.kr", host: "www.kayak.co.kr" },
{ name: "Kayak.mx", host: "www.kayak.com.mx" },
{ name: "Kayak.my", host: "www.kayak.com.my" },
{ name: "Kayak.nl", host: "www.kayak.nl" },
{ name: "Kayak.no", host: "www.kayak.no" },
{ name: "Kayak.nz", host: "www.nz.kayak.com" },
{ name: "Kayak.pe", host: "www.kayak.com.pe" },
{ name: "Kayak.pl", host: "www.kayak.pl" },
{ name: "Kayak.pt", host: "www.kayak.pt" },
{ name: "Kayak.ru", host: "www.kayak.ru" },
{ name: "Kayak.se", host: "www.kayak.se" },
{ name: "Kayak.sg", host: "www.kayak.sg" },
{ name: "Kayak.th", host: "www.kayak.co.th" },
{ name: "Kayak.tr", host: "www.kayak.com.tr" },
{ name: "Kayak.tw", host: "www.tw.kayak.com" },
{ name: "Kayak.uk", host: "www.kayak.co.uk" },
{ name: "Kayak.vn", host: "www.vn.kayak.com" },
{ name: "Kayak.za", host: "www.za.kayak.com" }
];
const cabins = ["economy", "premium", "business", "first"];
function print(method) {
//example https://www.Kayak.ru/flights/MOW-CPH...OW/2016-05-20/
// method: 0 = based on leg; 1 = based on segment
const segs = !method ? _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin : Object(_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* getCurrentSegs */ "b"])();
if (method && _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length === segs.length) return;
var pax = Object(___WEBPACK_IMPORTED_MODULE_2__["validatePax"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: true,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_4__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printOvago");
return;
}
const cabin =
cabins[Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getCabin */ "b"])(Math.min(...Object(_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* getCurrentSegs */ "b"])().map(seg => seg.cabin)))];
const createUrl = function(host) {
let url =
`https://${host}/flights/` +
segs
.map(
seg =>
`${seg.orig}-${seg.dest}/${seg.dep.year}-${Object(_utils__WEBPACK_IMPORTED_MODULE_4__[/* to2digits */ "h"])(
seg.dep.month
)}-${Object(_utils__WEBPACK_IMPORTED_MODULE_4__[/* to2digits */ "h"])(seg.dep.day)}`
)
.join("/");
if (pax.adults > 1 || pax.children.length || pax.infSeat || pax.infLap) {
url += `/${_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].numPax}adults`;
}
if (pax.children.length || pax.infSeat || pax.infLap) {
url += "/children";
for (let i = 0; i < pax.infSeat; i++) {
url += "-1S";
}
for (let i = 0; i < pax.infLap; i++) {
url += "-1L";
}
for (let i = 0; i < pax.children.length; i++) {
url += "-11";
}
}
url += "/" + cabin;
return url;
};
var url = createUrl("kayak.com");
if (!url) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += editions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.host) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "Kayak",
desc:
_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].language == "de"
? `Benutze ${segs.length} Segment(e)`
: `Based on ${segs.length} segment(s)`,
extra
};
}
Object(___WEBPACK_IMPORTED_MODULE_2__["register"])("meta", () => print(0));
Object(___WEBPACK_IMPORTED_MODULE_2__["register"])("meta", () => print(1));
/***/ }),
/* 43 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1);
const editions = [
{ name: "Momondo.ar", host: "www.momondo.com.ar" },
{ name: "Momondo.at", host: "www.momondo.at" },
{ name: "Momondo.au", host: "www.momondo.com.au" },
{ name: "Momondo.be", host: "www.momondo.be" },
{ name: "Momondo.br", host: "www.momondo.com.br" },
{ name: "Momondo.by", host: "www.momondo.by" },
{ name: "Momondo.ca", host: "www.momondo.ca" },
{ name: "Momondo.ch", host: "www.momondo.ch" },
{ name: "Momondo.cl", host: "www.momondo.cl" },
{ name: "Momondo.cn", host: "www.cn.momondo.com" },
{ name: "Momondo.co", host: "www.momondo.com.co" },
{ name: "Momondo.cz", host: "www.momondo.cz" },
{ name: "Momondo.de", host: "www.momondo.de" },
{ name: "Momondo.dk", host: "www.momondo.dk" },
{ name: "Momondo.ee", host: "www.momondo.ee" },
{ name: "Momondo.es", host: "www.momondo.es" },
{ name: "Momondo.fi", host: "www.momondo.fi" },
{ name: "Momondo.fr", host: "www.momondo.fr" },
{ name: "Momondo.hk", host: "www.momondo.hk" },
{ name: "Momondo.ie", host: "www.momondo.ie" },
{ name: "Momondo.in", host: "www.momondo.in" },
{ name: "Momondo.it", host: "www.momondo.it" },
{ name: "Momondo.kz", host: "www.momondo.kz" },
{ name: "Momondo.mx", host: "www.momondo.mx" },
{ name: "Momondo.nl", host: "www.momondo.nl" },
{ name: "Momondo.no", host: "www.momondo.no" },
{ name: "Momondo.nz", host: "www.momondo.co.nz" },
{ name: "Momondo.om", host: "www.momondo.com" },
{ name: "Momondo.pe", host: "www.momondo.com.pe" },
{ name: "Momondo.pl", host: "www.momondo.pl" },
{ name: "Momondo.pt", host: "www.momondo.pt" },
{ name: "Momondo.ro", host: "www.momondo.ro" },
{ name: "Momondo.ru", host: "www.momondo.ru" },
{ name: "Momondo.se", host: "www.momondo.se" },
{ name: "Momondo.tr", host: "www.momondo.com.tr" },
{ name: "Momondo.tw", host: "www.momondo.tw" },
{ name: "Momondo.ua", host: "www.momondo.ua" },
{ name: "Momondo.uk", host: "www.momondo.co.uk" },
{ name: "Momondo.za", host: "www.momondo.co.za" }
];
var cabins = ["economy", "premium", "business", "first"];
function print(method) {
//example https://www.Momondo.ru/flightsearch/?...false&NA=false
//pax # &AD=2&CA=0,8 – not working with children (total amount of adults + kids goes to adult)
// method: 0 = based on leg; 1 = based on segment
const segs = !method ? _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin : Object(_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* getCurrentSegs */ "b"])();
if (method && _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length === segs.length) return;
var pax = Object(___WEBPACK_IMPORTED_MODULE_2__["validatePax"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: true,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_4__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printOvago");
return;
}
const cabin =
cabins[Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getCabin */ "b"])(Math.min(...Object(_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* getCurrentSegs */ "b"])().map(seg => seg.cabin)))];
var createUrl = function(host) {
let url =
`https://${host}/flight-search/` +
segs
.map(
seg =>
`${seg.orig}-${seg.dest}/${seg.dep.year}-${Object(_utils__WEBPACK_IMPORTED_MODULE_4__[/* to2digits */ "h"])(
seg.dep.month
)}-${Object(_utils__WEBPACK_IMPORTED_MODULE_4__[/* to2digits */ "h"])(seg.dep.day)}`
)
.join("/");
if (pax.adults > 1 || pax.children.length || pax.infSeat || pax.infLap) {
url += `/${_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].numPax}adults`;
}
if (pax.children.length || pax.infSeat || pax.infLap) {
url += "/children";
for (let i = 0; i < pax.infSeat; i++) {
url += "-1S";
}
for (let i = 0; i < pax.infLap; i++) {
url += "-1L";
}
for (let i = 0; i < pax.children.length; i++) {
url += "-11";
}
}
url += "/" + cabin;
return url;
};
var url = createUrl("www.momondo.com");
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += editions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.host) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "Momondo",
desc:
_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].language == "de"
? `Benutze ${segs.length} Segment(e)`
: `Based on ${segs.length} segment(s)`,
extra
};
}
Object(___WEBPACK_IMPORTED_MODULE_2__["register"])("meta", () => print(0));
Object(___WEBPACK_IMPORTED_MODULE_2__["register"])("meta", () => print(1));
/***/ }),
/* 44 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1);
const editions = [
{ name: "Skyscanner.com", market: "US" },
{ name: "Skyscanner.de", market: "DE" },
{ name: "Skyscanner.it", market: "IT" },
{ name: "Skyscanner.es", market: "ES" },
{ name: "Skyscanner.co.uk", market: "UK" },
{ name: "Skyscanner.dk", market: "DK" },
{ name: "Skyscanner.mx", market: "MX" },
{ name: "Skyscanner.fi", market: "FI" },
{ name: "Skyscanner.fr", market: "FR" },
{ name: "Skyscanner.no", market: "NO" },
{ name: "Skyscanner.nl", market: "NL" },
{ name: "Skyscanner.pt", market: "PT" },
{ name: "Skyscanner.se", market: "SE" },
{ name: "Skyscanner.ru", market: "RU" }
];
var cabins = ["", "premiumeconomy", "business", "first"];
function print(method) {
//example https://www.skyscanner.ru/transport/d/stoc/2017-09-02/akl/akl/2017-09-16/stoc/akl/2017-09-29/syd?adults=1&children=0&adultsv2=1&childrenv2=&infants=0&cabinclass=economy&ref=day-view#results
// method: 0 = based on leg; 1 = based on segment
const segs = !method ? _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin : Object(_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* getCurrentSegs */ "b"])();
if (method && _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length === segs.length) return;
var pax = Object(___WEBPACK_IMPORTED_MODULE_2__["validatePax"])({
maxPaxcount: 8,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_4__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printOvago");
return;
}
const cabin =
cabins[Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getCabin */ "b"])(Math.min(...Object(_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* getCurrentSegs */ "b"])().map(seg => seg.cabin)))];
var createUrl = function(market) {
var url = "http://www.skyscanner.com/transport/d/";
// Add the segments:
url += segs
.map(
seg =>
`${seg.orig}/${seg.dep.year}-${Object(_utils__WEBPACK_IMPORTED_MODULE_4__[/* to2digits */ "h"])(seg.dep.month)}-${Object(_utils__WEBPACK_IMPORTED_MODULE_4__[/* to2digits */ "h"])(
seg.dep.day
)}/${seg.dest}`
)
.join("/");
// Add passenger info:
url += "?adults=" + pax.adults + "adultsv2=" + pax.adults;
if (pax.children.length || pax.infLap)
url +=
"&childrenv2=" +
Array.apply(null, { length: pax.infLap })
.map(o => 0)
.concat(pax.children)
.join("|");
if (pax.infLap) url += "&infants=" + pax.infLap;
// Add cabin / class of service:
url += "&cabinclass=" + cabin;
// Add locale ("market"):
url += "&ref=day-view&market=" + market;
return url;
};
var url = createUrl("US");
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += editions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.market) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "Skyscanner",
desc:
_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].language == "de"
? `Benutze ${segs.length} Segment(e)`
: `Based on ${segs.length} segment(s)`,
extra
};
}
Object(___WEBPACK_IMPORTED_MODULE_2__["register"])("meta", () => print(0));
Object(___WEBPACK_IMPORTED_MODULE_2__["register"])("meta", () => print(1));
/***/ }),
/* 45 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1);
const editions = [
{ name: "Arabic", host: "ar.tripadvisor.com" },
{ name: "Argentina", host: "www.tripadvisor.com.ar" },
{ name: "Australia", host: "www.tripadvisor.com.au" },
{ name: "Austria", host: "www.tripadvisor.at" },
{ name: "Belgium", host: "fr.tripadvisor.be" },
{ name: "Belgium", host: "www.tripadvisor.be" },
{ name: "Brazil", host: "www.tripadvisor.com.br" },
{ name: "Canada (English)", host: "www.tripadvisor.ca" },
{ name: "Canada (French)", host: "fr.tripadvisor.ca" },
{ name: "Chile", host: "www.tripadvisor.cl" },
{ name: "China", host: "www.tripadvisor.cn" },
{ name: "Chinese International", host: "cn.tripadvisor.com" },
{ name: "Colombia", host: "www.tripadvisor.co" },
{ name: "Czech Republic", host: "www.tripadvisor.cz" },
{ name: "Denmark", host: "www.tripadvisor.dk" },
{ name: "Egypt", host: "www.tripadvisor.com.eg" },
{ name: "Finland", host: "www.tripadvisor.fi" },
{ name: "France", host: "www.tripadvisor.fr" },
{ name: "Germany", host: "www.tripadvisor.de" },
{ name: "Greece", host: "www.tripadvisor.com.gr" },
{ name: "Hong Kong", host: "en.tripadvisor.com.hk" },
{ name: "Hong Kong", host: "www.tripadvisor.com.hk" },
{ name: "Hungary", host: "www.tripadvisor.co.hu" },
{ name: "India", host: "www.tripadvisor.in" },
{ name: "Indonesia", host: "www.tripadvisor.co.id" },
{ name: "Ireland", host: "www.tripadvisor.ie" },
{ name: "Israel", host: "www.tripadvisor.co.il" },
{ name: "Italy", host: "www.tripadvisor.it" },
{ name: "Japan", host: "www.tripadvisor.jp" },
{ name: "Malaysia", host: "www.tripadvisor.com.my" },
{ name: "Mexico", host: "www.tripadvisor.com.mx" },
{ name: "New Zealand", host: "www.tripadvisor.co.nz" },
{ name: "Norway", host: "no.tripadvisor.com" },
{ name: "Peru", host: "www.tripadvisor.com.pe" },
{ name: "Philippines", host: "www.tripadvisor.com.ph" },
{ name: "Poland", host: "pl.tripadvisor.com" },
{ name: "Portugal", host: "www.tripadvisor.pt" },
{ name: "Russia", host: "www.tripadvisor.ru" },
{ name: "Serbia", host: "www.tripadvisor.rs" },
{ name: "Singapore", host: "www.tripadvisor.com.sg" },
{ name: "Slovakia", host: "www.tripadvisor.sk" },
{ name: "South Africa", host: "www.tripadvisor.co.za" },
{ name: "South Korea", host: "www.tripadvisor.co.kr" },
{ name: "Spain", host: "www.tripadvisor.es" },
{ name: "Sweden", host: "www.tripadvisor.se" },
{ name: "Switzerland", host: "www.tripadvisor.ch" },
{ name: "Switzerland", host: "fr.tripadvisor.ch" },
{ name: "Switzerland", host: "it.tripadvisor.ch" },
{ name: "Taiwan", host: "www.tripadvisor.com.tw" },
{ name: "Thailand", host: "th.tripadvisor.com" },
{ name: "The Netherlands", host: "www.tripadvisor.nl" },
{ name: "Turkey", host: "www.tripadvisor.com.tr" },
{ name: "United Kingdom", host: "www.tripadvisor.co.uk" },
{ name: "United States", host: "www.tripadvisor.com" },
{ name: "Venezuela", host: "www.tripadvisor.com.ve" },
{ name: "Vietnam", host: "www.tripadvisor.com.vn" }
];
const cabins = ["0", "3", "1", "2"];
function print(method) {
// method: 0 = based on leg; 1 = based on segment
const segs = !method ? _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin : Object(_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* getCurrentSegs */ "b"])();
if (method && _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length === segs.length) return;
const pax = Object(___WEBPACK_IMPORTED_MODULE_2__["validatePax"])({
maxPaxcount: 8,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_4__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printOvago");
return;
}
const cabin =
cabins[Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getCabin */ "b"])(Math.min(...Object(_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* getCurrentSegs */ "b"])().map(seg => seg.cabin)))];
const nonstop = method ? "yes" : "no";
const createUrl = function(host) {
let url = `https://${host}/CheapFlightsSearchResults?&cos=${cabin}&nonstop=${nonstop}`;
let paxNum = 0;
const addPax = age => (url += `&pax${paxNum++}=${age}`);
Array.apply(null, { length: pax.adults }).forEach(o => addPax("a"));
Array.apply(null, { length: pax.infLap }).forEach(o => addPax(0));
pax.children.forEach(age => addPax(age));
url +=
"&" +
segs
.map(
(seg, i) =>
`date${i * 2}=${seg.dep.year}${Object(_utils__WEBPACK_IMPORTED_MODULE_4__[/* to2digits */ "h"])(seg.dep.month)}${Object(_utils__WEBPACK_IMPORTED_MODULE_4__[/* to2digits */ "h"])(
seg.dep.day
)}&airport${i * 2}=${seg.orig}&nearby${i * 2}=no&airport${i * 2 +
1}=${seg.dest}&nearby${i * 2 + 1}=no`
)
.join("&");
return url;
};
const url = createUrl("www.tripadvisor.com");
let extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += editions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.host) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "Tripadvisor",
desc:
_settings_userSettings__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].language == "de"
? `Benutze ${segs.length} Segment(e)`
: `Based on ${segs.length} segment(s)`,
extra
};
}
Object(___WEBPACK_IMPORTED_MODULE_2__["register"])("meta", () => print(0));
Object(___WEBPACK_IMPORTED_MODULE_2__["register"])("meta", () => print(1));
/***/ }),
/* 46 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
function printCheapOair() {
// 0 = Economy; 1=Premium Economy; 2=Business; 3=First
var cabins = ["Economy", "PremiumEconomy", "Business", "First"];
var coaUrl = "http://www.cheapoair.com/default.aspx?tabid=1832&ulang=en";
var pax = Object(___WEBPACK_IMPORTED_MODULE_1__["validatePax"])({
maxPaxcount: 9,
countInf: true,
childAsAdult: 12,
sepInfSeat: true,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_2__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printCheapOair");
return;
}
coaUrl +=
"&ad=" +
pax.adults +
"&ch=" +
pax.children.length +
"&sr=0&is=" +
pax.infSeat +
"&il=" +
pax.infLap;
coaUrl += "&pos=US";
coaUrl += "&dispr=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].price;
var seg = 0;
var slices = {};
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
slices[i] = "";
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length; j++) {
seg++;
if (slices[i]) slices[i] += ",";
slices[i] += seg;
coaUrl +=
"&cbn" +
seg +
"=" +
cabins[
_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin === "Auto"
? _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].cabin
: Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getForcedCabin */ "c"])()
];
coaUrl += "&carr" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].carrier;
coaUrl +=
"&dd" +
seg +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2);
coaUrl += "&og" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].orig;
coaUrl += "&dt" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dest;
coaUrl += "&fbc" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].bookingclass;
coaUrl += "&fnum" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].fnr;
}
coaUrl += "&Slice" + (i + 1) + "=" + slices[i];
}
if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length == 1) {
coaUrl += "&tt=OneWay";
} else if (
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length == 2 &&
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].orig == _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[1].dest &&
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].dest == _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[1].orig
) {
coaUrl += "&tt=RoundTrip";
} else {
coaUrl += "&tt=MultiCity";
}
return {
url: coaUrl,
title: "CheapOair"
};
}
Object(___WEBPACK_IMPORTED_MODULE_1__["register"])("otas", printCheapOair);
/***/ }),
/* 47 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(0);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4);
const eDreams = [
{ name: "eDreams.com", domain: "www.edreams.com" },
{ name: "eDreams.au", domain: "www.edreams.com.au" },
{ name: "eDreams.br", domain: "www.edreams.com.br" },
{ name: "eDreams.ca", domain: "ca.edreams.com" },
{ name: "eDreams.ch", domain: "www.edreams.ch" },
{ name: "eDreams.cl", domain: "cl.edreams.com" },
{ name: "eDreams.cn", domain: "cn.edreams.com" },
{ name: "eDreams.co", domain: "co.edreams.com" },
{ name: "eDreams.co.uk", domain: "www.edreams.co.uk" },
{ name: "eDreams.com.ar", domain: "www.edreams.com.ar" },
{ name: "eDreams.com.mx", domain: "www.edreams.com.mx" },
{ name: "eDreams.com.ru", domain: "www.edreams.com.ru" },
{ name: "eDreams.com.tr", domain: "www.edreams.com.tr" },
{ name: "eDreams.de", domain: "www.edreams.de" },
{ name: "eDreams.es", domain: "www.edreams.es" },
{ name: "eDreams.fr", domain: "www.edreams.fr" },
{ name: "eDreams.gr", domain: "www.edreams.gr" },
{ name: "eDreams.hk", domain: "www.edreams.hk" },
{ name: "eDreams.id", domain: "id.edreams.com" },
{ name: "eDreams.in", domain: "www.edreams.in" },
{ name: "eDreams.it", domain: "www.edreams.it" },
{ name: "eDreams.jp", domain: "www.edreams.jp" },
{ name: "eDreams.ma", domain: "www.edreams.ma" },
{ name: "eDreams.net", domain: "www.edreams.net" },
{ name: "eDreams.nl", domain: "nl.edreams.com" },
{ name: "eDreams.nz", domain: "nz.edreams.com" },
{ name: "eDreams.pe", domain: "www.edreams.pe" },
{ name: "eDreams.ph", domain: "www.edreams.ph" },
{ name: "eDreams.pt", domain: "www.edreams.pt" },
{ name: "eDreams.sg", domain: "sg.edreams.com" },
{ name: "eDreams.th", domain: "th.edreams.com" },
{ name: "eDreams.za", domain: "za.edreams.com" }
];
const opodo = [
{ name: "Opodo.com", domain: "www.opodo.com" },
{ name: "Opodo.at", domain: "www.opodo.at" },
{ name: "Opodo.be", domain: "www.opodo.be" },
{ name: "Opodo.ch", domain: "www.opodo.ch" },
{ name: "Opodo.co.uk", domain: "www.opodo.co.uk" },
{ name: "Opodo.com.au", domain: "www.opodo.com.au" },
{ name: "Opodo.de", domain: "www.opodo.de" },
{ name: "Opodo.dk", domain: "www.opodo.dk" },
{ name: "Opodo.es", domain: "www.opodo.es" },
{ name: "Opodo.fi", domain: "www.opodo.fi" },
{ name: "Opodo.fr", domain: "www.opodo.fr" },
{ name: "Opodo.it", domain: "www.opodo.it" },
{ name: "Opodo.nl", domain: "www.opodo.nl" },
{ name: "Opodo.no", domain: "www.opodo.no" },
{ name: "Opodo.pl", domain: "www.opodo.pl" },
{ name: "Opodo.pt", domain: "www.opodo.pt" },
{ name: "Opodo.se", domain: "www.opodo.se" }
];
const travellink = [
{ name: "Travellink.com", domain: "www.travellink.com" },
{ name: "Travellink.de", domain: "www.travellink.de" },
{ name: "Travellink.dk", domain: "www.travellink.dk" },
{ name: "Travellink.fi", domain: "www.travellink.fi" },
{ name: "Travellink.is", domain: "www.travellink.is" },
{ name: "Travellink.no", domain: "www.travellink.no" },
{ name: "Travellink.se", domain: "www.travellink.se" }
];
const cabins = ["TOURIST", "PREMIUM_ECONOMY", "BUSINESS", "FIRST"];
function printEdreams(title, editions) {
var pax = Object(___WEBPACK_IMPORTED_MODULE_1__["validatePax"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printEdreams");
return;
}
const cabin =
cabins[Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_3__[/* getCabin */ "b"])(Math.min(...Object(_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* getCurrentSegs */ "b"])().map(seg => seg.cabin)))];
var createUrl = function(domain) {
const deeplink = `/results/type=M;${_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin
.map(
(itin, i) =>
`dep${i}=${itin.dep.year}-${Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* to2digits */ "h"])(itin.dep.month)}-${Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* to2digits */ "h"])(
itin.dep.day
)};from${i}=${itin.orig};to${i}=${itin.dest}`
)
.join(";")};class=${cabin};adults=${pax.adults};children=${
pax.children.length
};infants=${
pax.infLap
};collectionmethod=false;airlinescodes=false;internalSearch=true`;
const segKeys = _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin
.map(
(itin, i) =>
`segmentKey${i}=0,${itin.seg
.map(seg => seg.carrier + seg.fnr)
.join(",")}`
)
.join("&");
return `https://${domain}/travel/?landingPageType=TEST_AB&searchId=${new Date().getTime()}&deeplink=${deeplink}&fareItineraryKey=0,1A&${segKeys}&searchMainProductTypeName=FLIGHT`;
};
var url = createUrl(editions[0].domain);
if (!url) return;
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += editions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.domain) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title,
extra
};
}
Object(___WEBPACK_IMPORTED_MODULE_1__["register"])("otas", () => printEdreams("eDreams", eDreams));
Object(___WEBPACK_IMPORTED_MODULE_1__["register"])("otas", () => printEdreams("Opodo", opodo));
Object(___WEBPACK_IMPORTED_MODULE_1__["register"])("otas", () => printEdreams("Travellink", travellink));
/***/ }),
/* 48 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(0);
const editions = [
{ name: "Seat24.se", host: "www.seat24.se" },
{ name: "Seat24.de", host: "www.seat24.de" },
{ name: "Seat24.dk", host: "www.seat24.dk" },
{ name: "Seat24.fi", host: "www.seat24.fi" },
{ name: "Seat24.no", host: "www.seat24.no" },
{ name: "Flygvaruhuset.se", host: "www.flygvaruhuset.se" },
{ name: "Travelpartner.se", host: "www.travelpartner.se" },
{ name: "Travelpartner.fi", host: "www.travelpartner.fi" },
{ name: "Travelpartner.no", host: "www.travelpartner.no" },
{ name: "Budjet.se", host: "www.budjet.se" },
{ name: "Budjet.fi", host: "www.budjet.fi" },
{ name: "Budjet.no", host: "www.budjet.no" },
{ name: "Budjet.dk", host: "www.budjet.dk" },
{ name: "Goleif.dk", host: "www.goleif.dk" },
{ name: "Travelfinder.se", host: "www.travelfinder.se" },
{ name: "Gotogate.no", host: "www.gotogate.no" },
{ name: "Gotogate.at", host: "www.gotogate.at" },
{ name: "Gotogate.be", host: "be.gotogate.com" },
{ name: "Gotogate.bg", host: "bg.gotogate.com" },
{ name: "Gotogate.ch", host: "www.gotogate.ch" },
{ name: "Gotogate.cz", host: "cz.gotogate.com" },
{ name: "Gotogate.es", host: "www.gotogate.es" },
{ name: "Gotogate.fr", host: "www.gotogate.fr" },
{ name: "Gotogate.gr", host: "www.gotogate.gr" },
{ name: "Gotogate.hu", host: "hu.gotogate.com" },
{ name: "Gotogate.ie", host: "ie.gotogate.com" },
{ name: "Gotogate.it", host: "www.gotogate.it" },
{ name: "Gotogate.pl", host: "www.gotogate.pl" },
{ name: "Gotogate.pt", host: "www.gotogate.pt" },
{ name: "Gotogate.ro", host: "ro.gotogate.com" },
{ name: "Gotogate.sk", host: "www.gotogate.sk" },
{ name: "Gotogate.tr", host: "tr.gotogate.com" },
{ name: "Gotogate.com.ua", host: "www.gotogate.com.ua" },
{ name: "Gotogate.co.uk", host: "www.gotogate.co.uk" },
{ name: "Flybillet.dk", host: "www.flybillet.dk" },
{ name: "Travelstart.se", host: "www.travelstart.se" },
{ name: "Travelstart.de", host: "www.travelstart.de" },
{ name: "Travelstart.dk", host: "www.travelstart.dk" },
{ name: "Travelstart.fi", host: "www.travelstart.fi" },
{ name: "Travelstart.no", host: "www.travelstart.no" },
{ name: "Supersaver.se", host: "www.supersavertravel.se" },
{ name: "Supersaver.dk", host: "www.supersaver.dk" },
{ name: "Supersaver.fi", host: "www.supersaver.fi" },
{ name: "Supersaver.nl", host: "www.supersaver.nl" },
{ name: "Supersaver.no", host: "www.supersaver.no" },
{ name: "Supersaver.ru", host: "www.supersaver.ru" }
];
function printEtraveli() {
if (_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin.length > 2) return; // no multi segments
if (
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin.length == 2 &&
!(
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[0].orig == _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[1].dest &&
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[0].dest == _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[1].orig
)
)
return; // no open jaws
var convertDate = function(date, withYear) {
return (
("0" + date.day).slice(-2) +
Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* monthnumberToName */ "f"])(date.month) +
(withYear ? date.year.toString().slice(-2) : "")
);
};
var createUrl = function(host) {
var ggUrl = "http://" + host + "/air/";
ggUrl +=
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[0].orig +
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[0].dest +
convertDate(_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[0].dep, false);
if (_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin.length > 1)
ggUrl += convertDate(_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[1].dep, false);
ggUrl += "/" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].numPax;
ggUrl +=
"?selectionKey=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin
.map(function(itin) {
return itin.seg
.map(function(seg) {
return (
seg.carrier +
seg.fnr +
"-" +
convertDate(seg.dep, true) +
"-" +
seg.bookingclass
);
})
.join("_");
})
.join("_");
return ggUrl;
};
// picked seat24 as main one, but could be any of them
var ggUrl = createUrl("www.seat24.de");
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += editions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.host) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url: ggUrl,
title: "Seat24.de",
extra
};
}
Object(___WEBPACK_IMPORTED_MODULE_1__["register"])("otas", printEtraveli);
/***/ }),
/* 49 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
const editions = [
{ name: "expedia.com", host: "expedia.com" },
{ name: "orbitz.com", host: "orbitz.com" },
{ name: "expedia.ca", host: "expedia.ca" },
{ name: "expedia.de", host: "expedia.de" },
{ name: "expedia.it", host: "expedia.it" },
{ name: "expedia.es", host: "expedia.es" },
{ name: "expedia.co.uk", host: "expedia.co.uk" },
{ name: "expedia.dk", host: "expedia.dk" },
{ name: "expedia.mx", host: "expedia.mx" },
{ name: "expedia.fi", host: "expedia.fi" },
{ name: "expedia.fr", host: "expedia.fr" },
{ name: "expedia.no", host: "expedia.no" },
{ name: "expedia.nl", host: "expedia.nl" },
{ name: "expedia.ch", host: "expedia.ch" },
{ name: "expedia.se", host: "expedia.se" },
{ name: "expedia.at", host: "expedia.at" },
{ name: "expedia.co.jp", host: "expedia.co.jp" }
];
function printExpedia() {
var pax = Object(___WEBPACK_IMPORTED_MODULE_2__["validatePax"])({
maxPaxcount: 9,
countInf: true,
childAsAdult: 18,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printExpedia");
return;
}
let expediaClasses = ["coach", "premium", "business", "first"];
let minCabin = 3;
let ExpediaCreateUrl = function(expediaBase) {
let segUrl = "";
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
segUrl +=
"&legs%5B" + i + "%5D.departureAirport=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].orig;
segUrl +=
"&legs%5B" + i + "%5D.arrivalAirport=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dest;
segUrl +=
"&legs%5B" +
i +
"%5D.departureDate=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].arr.year.toString() +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dep.month).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].dep.day).slice(-2);
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length; j++) {
segUrl += (
"&legs%5B" +
i +
"%5D.segments%5B" +
j +
"%5D=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.year.toString() +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2) +
"-" +
expediaClasses[
_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin === "Auto" ? minCabin : Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getForcedCabin */ "c"])()
] +
"-" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].orig +
"-" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dest +
"-" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].carrier +
"-" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].fnr
).toLowerCase();
// check the min cabin:
if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].cabin < minCabin) {
minCabin = _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].cabin;
}
}
}
// Build the URL:
let baseUrl =
"https://www." +
expediaBase +
"/Flight-Search-Details?action=dl&trip=MultipleDestination";
// Add travel class to URL:
baseUrl +=
"&cabinClass=" +
expediaClasses[
_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].cabin === "Auto" ? minCabin : Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_0__[/* getForcedCabin */ "c"])()
];
// Add passenger info to URL:
baseUrl += "&adults=" + pax.adults;
return baseUrl + segUrl;
};
var ExpediaUrl = ExpediaCreateUrl("expedia.com");
var container =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
container += editions
.map(function(obj, i) {
return (
'<a href="' +
ExpediaCreateUrl(obj.host) +
'" target="_blank">' +
obj.name +
"</a>"
);
})
.join("<br/>");
container += "</span></span>";
return {
url: ExpediaUrl,
title: "Expedia",
extra: container
};
}
Object(___WEBPACK_IMPORTED_MODULE_2__["register"])("otas", printExpedia);
/***/ }),
/* 50 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(0);
const editions = [
{ name: "English", url: "" },
{ name: "Español", url: "es" },
{ name: "Português", url: "pt" },
{ name: "Deutsch", url: "de" },
{ name: "Italiano", url: "it" },
{ name: "Dansk", url: "da" },
{ name: "Svenska", url: "sv" },
{ name: "Norsk", url: "no" },
{ name: "Nederlands", url: "nl" },
{ name: "Finnish", url: "fi" },
{ name: "Polish", url: "pl" },
{ name: "Turkish", url: "tk" }
];
function printFN() {
var pax = Object(___WEBPACK_IMPORTED_MODULE_1__["validatePax"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printFN");
return;
}
const createUrl = function(edition) {
const tty = _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin.length === 2 ? 1 : 0;
let search = `cref=fnbwmint&tty=${tty}&curr=${_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].cur ||
"USD"}&nativecurr=${_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].cur || "USD"}&cls=0&adt=${
pax.adults
}&chd=${pax.children.length}&inf=${
pax.infLap
}&tot=0.00&tax=0.00&chdtot=0.00&chdtax=0.00&inftot=0.00&inftax=0.00&`;
let segCount = 0;
search += _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin
.map((leg, i) => {
const key = _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin.length === 2 && i === 1 ? "ib" : "ob";
const legNum = _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin.length > 2 ? 0 : i;
return leg.seg
.map((seg, j) => {
const segNum = _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin.length > 2 ? segCount++ : j;
return `${key}${legNum + 1}${segNum ? segNum : ""}=${seg.carrier}${
seg.fnr
}${seg.bookingclass}!${formatDate(seg.dep)}!${seg.orig}${
seg.dest
}!${formatDate(seg.arr)}`;
})
.join("&");
})
.join("&");
return `https://www.flightnetwork.com/${edition.url}${
edition.url ? "/" : ""
}flights/showflight?enc=${btoa(search)}`;
};
var url = createUrl(editions[0]);
if (!url) return;
let extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += editions
.map(function(obj, i) {
return (
'<a href="' + createUrl(obj) + '" target="_blank">' + obj.name + "</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "FlightNetwork",
extra
};
}
function formatDate(date) {
return (
"" +
date.year +
Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* to2digits */ "h"])(date.month) +
Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* to2digits */ "h"])(date.day) +
date.time24.replace(":", "")
);
}
Object(___WEBPACK_IMPORTED_MODULE_1__["register"])("otas", printFN);
/***/ }),
/* 51 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(0);
/* harmony import */ var _settings_appSettings__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4);
const editions = [
{ title: "Ovago", host: "ovago.com" },
{ title: "Wowfare", host: "wowfare.com" }
];
const cabins = ["Y", "S", "C", "F"];
function print() {
var pax = Object(___WEBPACK_IMPORTED_MODULE_1__["validatePax"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printHop2");
return;
}
const cabin =
cabins[Object(_settings_appSettings__WEBPACK_IMPORTED_MODULE_3__[/* getCabin */ "b"])(Math.min(...Object(_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* getCurrentSegs */ "b"])().map(seg => seg.cabin)))];
const segs = Object(_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* getCurrentSegs */ "b"])();
const search = `OSKDCR*${cabin}${pax.adults}${pax.children.length}${
pax.infSeat
}0/${_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin
.map(
itin =>
itin.orig +
itin.dest +
`${itin.dep.year}-${Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* to2digits */ "h"])(itin.dep.month)}-${Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* to2digits */ "h"])(
itin.dep.day
)}`
)
.join("/")}*${segs[segs.length - 1].carrier}~#${segs
.map(seg => seg.carrier + seg.fnr)
.join("#")}`;
const createUrl = function(host) {
return `https://${host}/ms?key=1_${btoa(search)}`;
};
var url = createUrl("hop2.com");
if (!url) return;
let extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += editions
.map(function(obj, i) {
return (
'<a href="' +
createUrl(obj.host) +
'" target="_blank">' +
obj.title +
"</a>"
);
})
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "Hop2",
extra
};
}
Object(___WEBPACK_IMPORTED_MODULE_1__["register"])("otas", print);
/***/ }),
/* 52 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _settings_userSettings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
const editions = [
{ lang: "pl", country: "PL" },
{ lang: "bg", country: "BG" },
{ lang: "ro", country: "RO" },
{ lang: "cs", country: "CZ" },
{ lang: "hu", country: "HU" },
{ lang: "sk", country: "SK" },
{ lang: "pt", country: "PT" },
{ lang: "es", country: "ES" },
{ lang: "en", country: "GB" },
{ lang: "en", country: "IE" },
{ lang: "en", country: "US" },
{ lang: "it", country: "IT" },
{ lang: "de", country: "DE" },
{ lang: "fr", country: "FR" },
{ lang: "el", country: "GR" }
];
function printLucky2go() {
var createUrl = function(edition) {
// 0 = Economy; 1=Premium Economy; 2=Business; 3=First
var cabins = ["Economy", "Economy", "Business", "First"];
var pax = Object(___WEBPACK_IMPORTED_MODULE_2__["validatePax"])({
maxPaxcount: 9,
countInf: false,
childAsAdult: 12,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_1__[/* printNotification */ "g"])(
"Error: Failed to validate Passengers in printLucky2go"
);
return;
}
var url =
"https://secure.lucky2go.com/flights/options/?Adult=" +
pax.adults +
"&Child=" +
pax.children.length +
"&Infant=0&InfantLap=" +
pax.infLap +
"&PointOfSaleCountry=" +
edition.country +
"&UserCurrency=" +
(_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].cur || "USD") +
"&DisplayedPrice=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].price +
"&DisplayedPriceCurrency=" +
(_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].cur || "USD") +
"&UserLanguage=" +
edition.lang +
"&TripType=";
if (_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length == 1) {
url += "OneWay";
} else if (
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length == 2 &&
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].orig == _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[1].dest &&
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[0].dest == _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[1].orig
) {
url += "RoundTrip";
} else {
url += "MultiCity";
}
var seg = 0;
var slice = 1;
var slicestr = "";
//Build multi-city search based on legs
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin.length; i++) {
// walks each leg
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length; j++) {
seg++;
//walks each segment of leg
var k = 0;
// lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg.length - 1) {
if (
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !=
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440
)
break;
k++;
}
url += "&Origin" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].orig;
url += "&Destination" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j + k].dest;
url += "&Carrier" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].carrier;
url +=
"&DepartureDate" +
seg +
"=" +
_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.year +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
"-" +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2);
url += "&FlightNumber" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].fnr;
url +=
"&BookingCode" + seg + "=" + _parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].bookingclass;
url += "&Cabin" + seg + "=" + cabins[_parse_itin__WEBPACK_IMPORTED_MODULE_3__[/* currentItin */ "a"].itin[i].seg[j].cabin];
slicestr += (slicestr === "" ? "" : "%2C") + seg;
j += k;
}
url += "&Slice" + slice + "=" + slicestr;
slice++;
slicestr = "";
}
return url;
};
// get edition
var url = createUrl({ lang: "en", country: "US" });
if (!url) {
return;
}
var extra =
' <span class="pt-hover-container">[+]<span class="pt-hover-menu">';
extra += editions
.map(
edition =>
`<a href="${createUrl(edition)}" target="_blank">${
edition.lang
}‑${edition.country}</a>`
)
.join("<br/>");
extra += "</span></span>";
return {
url,
title: "lucky2go",
extra
};
}
Object(___WEBPACK_IMPORTED_MODULE_2__["register"])("otas", printLucky2go);
/***/ }),
/* 53 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(0);
function printPriceline() {
var pricelineurl = "https://www.priceline.com/m/fly/search";
var searchparam = "~";
for (var i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin.length; i++) {
// walks each leg
searchparam = searchparam.substring(0, searchparam.length - 1) + "-";
pricelineurl += "/" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].orig;
pricelineurl += "-" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].dest;
pricelineurl +=
"-" +
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].arr.year.toString() +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].dep.month).slice(-2) +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].dep.day).slice(-2);
for (var j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg.length; j++) {
//walks each segment of leg
var k = 0;
// lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
while (j + k < _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg.length - 1) {
if (
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j + k].fnr !=
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j + k + 1].fnr ||
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j + k].layoverduration >= 1440
)
break;
k++;
}
searchparam += _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].orig;
searchparam +=
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].dep.year.toString() +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].dep.month).slice(-2) +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].dep.day).slice(-2) +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].dep.time.replace(":", "")).slice(-4);
searchparam += _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j + k].dest;
searchparam +=
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j + k].arr.year.toString() +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j + k].arr.month).slice(-2) +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j + k].arr.day).slice(-2) +
("0" + _parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j + k].arr.time.replace(":", "")).slice(
-4
);
searchparam +=
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].bookingclass +
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].carrier +
_parse_itin__WEBPACK_IMPORTED_MODULE_2__[/* currentItin */ "a"].itin[i].seg[j].fnr;
searchparam += "~";
j += k;
}
}
searchparam = searchparam.substring(1, searchparam.length - 1);
var pax = Object(___WEBPACK_IMPORTED_MODULE_1__["validatePax"])({
maxPaxcount: 9,
countInf: true,
childAsAdult: 18,
sepInfSeat: false,
childMinAge: 2
});
if (!pax) {
Object(_utils__WEBPACK_IMPORTED_MODULE_0__[/* printNotification */ "g"])("Error: Failed to validate Passengers in printPriceline");
return;
}
pricelineurl +=
"/desktop/details/R_" +
searchparam +
"_" +
(pax.adults + pax.children.length + pax.infLap) +
"_USD0.00_1-1-1?num-adults=" +
pax.adults +
"&num-children=" +
pax.children.length +
"&num-infants=" +
pax.infLap +
"&num-youths=0";
return {
url: pricelineurl,
title: "Priceline"
};
}
Object(___WEBPACK_IMPORTED_MODULE_1__["register"])("otas", printPriceline);
/***/ }),
/* 54 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
function printGCM() {
let url = "";
// Build multi-city search based on segments
// Keeping continous path as long as possible
for (let i = 0; i < _parse_itin__WEBPACK_IMPORTED_MODULE_0__[/* currentItin */ "a"].itin.length; i++) {
for (let j = 0; j < _parse_itin__WEBPACK_IMPORTED_MODULE_0__[/* currentItin */ "a"].itin[i].seg.length; j++) {
url += _parse_itin__WEBPACK_IMPORTED_MODULE_0__[/* currentItin */ "a"].itin[i].seg[j].orig + "-";
if (j + 1 < _parse_itin__WEBPACK_IMPORTED_MODULE_0__[/* currentItin */ "a"].itin[i].seg.length) {
if (
_parse_itin__WEBPACK_IMPORTED_MODULE_0__[/* currentItin */ "a"].itin[i].seg[j].dest != _parse_itin__WEBPACK_IMPORTED_MODULE_0__[/* currentItin */ "a"].itin[i].seg[j + 1].orig
) {
url += _parse_itin__WEBPACK_IMPORTED_MODULE_0__[/* currentItin */ "a"].itin[i].seg[j].dest + ";";
}
} else {
url += _parse_itin__WEBPACK_IMPORTED_MODULE_0__[/* currentItin */ "a"].itin[i].seg[j].dest + ";";
}
}
}
return {
img: "http://www.gcmap.com/map?MR=900&MX=182x182&PM=*&P=" + url,
url: "http://www.gcmap.com/mapui?P=" + url,
title: "GCM"
};
}
Object(___WEBPACK_IMPORTED_MODULE_1__["register"])("other", printGCM);
/***/ }),
/* 55 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _parse_itin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
function printWheretocredit() {
return {
url:
"https://www.wheretocredit.com/calculator#" +
Object(_parse_itin__WEBPACK_IMPORTED_MODULE_0__[/* getCurrentSegs */ "b"])()
.map(seg =>
[seg.orig, seg.dest, seg.carrier, seg.bookingclass].join("-")
)
.join("/"),
title: "Where to Credit"
};
}
Object(___WEBPACK_IMPORTED_MODULE_1__["register"])("other", printWheretocredit);
/***/ }),
/* 56 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
// EXTERNAL MODULE: ./src/settings/appSettings.js
var appSettings = __webpack_require__(4);
// EXTERNAL MODULE: ./src/settings/userSettings.js
var userSettings = __webpack_require__(2);
// EXTERNAL MODULE: ./src/settings/itaSettings.js
var itaSettings = __webpack_require__(5);
// EXTERNAL MODULE: ./src/utils.js
var utils = __webpack_require__(1);
// EXTERNAL MODULE: ./src/parse/itin.js
var parse_itin = __webpack_require__(0);
// EXTERNAL MODULE: ./src/settings/translations.js
var translations = __webpack_require__(8);
// EXTERNAL MODULE: ./src/print/links.js
var links = __webpack_require__(9);
// CONCATENATED MODULE: ./src/print/index.js
function render() {
// Editor mode?
if (
userSettings["a" /* default */].enableEditormode == 1 &&
Object(utils["d" /* findtargets */])("editoritem").length === 0
) {
Object(utils["k" /* toggleVis */])(document.getElementById("mptStartparse"), "inline-block");
addEditor();
return;
} else if (Object(utils["d" /* findtargets */])("editoritem").length > 0) {
Object(utils["k" /* toggleVis */])(document.getElementById("mptStartparse"));
removeEditor();
Object(parse_itin["c" /* readItinerary */])();
}
bindPageLayout();
if (userSettings["a" /* default */].enableFarerules == 1) bindRulelinks();
if (userSettings["a" /* default */].timeformat == "24h") bind24HourTime();
if (
userSettings["a" /* default */].language !== "en" &&
translations["a" /* default */][userSettings["a" /* default */].language].resultpage !== undefined
)
bindTranslations(
"resultpage",
userSettings["a" /* default */].language,
Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.itin, 1).nextElementSibling
);
if (userSettings["a" /* default */].enablePricebreakdown == 1) bindPriceBreakdown();
if (userSettings["a" /* default */].enableInlineMode == 1) printCPM();
Object(links["a" /* printLinksContainer */])();
if (userSettings["a" /* default */].enableSeatguru == 1) bindSeatguru();
if (userSettings["a" /* default */].enablePlanefinder == 1) bindPlanefinder();
if (userSettings["a" /* default */].enableWheretocredit == 1) bindWheretocredit();
}
function cleanUp() {
// empty outputcontainer
if (document.getElementById("powertoolslinkcontainer") != undefined) {
var div = document.getElementById("powertoolslinkcontainer");
div.innerHTML = "";
}
// S&D powertool items
var elems = Object(utils["d" /* findtargets */])("powertoolsitem");
for (var i = elems.length - 1; i >= 0; i--) {
elems[i].parentElement.removeChild(elems[i]);
}
// S&D price breakdown
var pbd = Object(utils["c" /* findtarget */])("pricebreakdown", 1);
if (pbd != undefined) pbd.parentElement.removeChild(pbd);
}
function addEditor() {
for (var i = 0; i < parse_itin["a" /* currentItin */].itin.length; i++) {
for (var j = 0; j < parse_itin["a" /* currentItin */].itin[i].seg.length; j++) {
var target = findItinTarget(i + 1, j + 1, "cabin").firstElementChild;
var tmp = target.innerHTML;
var bc = tmp.substr(tmp.length - 2, 1);
var cabin = tmp.substr(0, tmp.length - 4);
var cabins = [
["Economy", "Y"],
["Premium Economy", "Y+"],
["Business", "C"],
["First", "F"]
];
var str = '<select style="width:40px" class="editoritem">';
for (var k = 0; k < cabins.length; k++) {
str +=
'<option value="' +
cabins[k][0] +
'"' +
(cabins[k][0] === cabin ? ' selected="selected"' : "") +
">" +
cabins[k][1] +
"</option>";
}
str += "</select>";
str +=
' (<input type="text" class="editoritem" value="' +
bc +
'" style="width:20px;text-align:center">)';
target.innerHTML = str;
}
}
}
function removeEditor() {
for (var i = 0; i < parse_itin["a" /* currentItin */].itin.length; i++) {
for (var j = 0; j < parse_itin["a" /* currentItin */].itin[i].seg.length; j++) {
var target = findItinTarget(i + 1, j + 1, "cabin").firstElementChild;
var cabin =
target.firstElementChild.options[target.firstElementChild.selectedIndex]
.value;
var bc = target.firstElementChild.nextElementSibling.value;
var str = cabin + " (" + bc + ")";
target.innerHTML = str;
}
}
}
function bindPageLayout() {
Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.milagecontainer, 1).setAttribute(
"rowspan",
"10"
);
const target = Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.htbContainer, 1)
.parentElement.parentElement;
target.setAttribute("valign", "top");
target.setAttribute("height", "100%");
}
function bind24HourTime() {
// lets do the time-replacement
const segs = Object(parse_itin["b" /* getCurrentSegs */])();
if (segs.length > 0) {
const target = Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.itin, 1)
.nextElementSibling;
for (let i = 0; i < segs.length; i++) {
target.innerHTML = target.innerHTML.replace(
new RegExp(segs[i].dep.timeDisplay, "g"),
segs[i].dep.time24
);
target.innerHTML = target.innerHTML.replace(
new RegExp(segs[i].arr.timeDisplay, "g"),
segs[i].arr.time24
);
}
}
}
function bindRulelinks() {
var i = 0;
var j = 0;
var t = 1;
let target = Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.rulescontainer, t);
if (target != undefined) {
do {
var current = Number(
target.firstElementChild.innerHTML.replace(/[^\d]/gi, "")
);
if (i > current) {
j++;
i = 0;
}
target = target.nextElementSibling.nextElementSibling.nextElementSibling;
var targeturl =
window.location.href.replace(/view-details/, "view-rules") +
";fare-key=" +
j +
"/" +
i;
var newlink = document.createElement("a");
newlink.setAttribute("class", "gwt-Anchor");
newlink.setAttribute("href", targeturl);
newlink.setAttribute("target", "_blank");
var linkText = document.createTextNode("rules");
newlink.appendChild(linkText);
target.parentElement.replaceChild(newlink, target);
i++;
t++;
target = Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.rulescontainer, t);
} while (target != undefined);
}
}
function bindPriceBreakdown() {
var basefares = 0;
var taxes = 0;
var surcharges = 0;
var basefound = 0;
var cur = "";
// define searchpattern to detect carrier imposed surcharges
var searchpatt = new RegExp("((YQ|YR))");
var t = 1;
var target = Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.htbLeft, t);
if (userSettings["a" /* default */].enableInlineMode == 0) {
var output = "";
var count = 0;
}
if (target != undefined) {
do {
var type = target.firstChild.firstChild.nodeType;
if (type == 1) {
basefound = 1;
//it's a basefare
var price = Number(
target.nextElementSibling.firstElementChild.innerHTML.replace(
/[^\d]/gi,
""
)
);
if (cur == "")
cur = target.nextElementSibling.firstElementChild.innerHTML.replace(
/[\d,.]/g,
""
);
basefares += price;
} else if (basefound == 1 && type == 3) {
//its a pricenode
var name = target.firstElementChild.innerHTML;
var price = Number(
target.nextElementSibling.firstElementChild.innerHTML.replace(
/[^\d]/gi,
""
)
);
if (
Object(utils["e" /* hasClass */])(
target.nextElementSibling,
itaSettings["a" /* default */].resultpage.htbGreyBorder
)
) {
//we are done for this container
var sum = basefares + taxes + surcharges;
if (userSettings["a" /* default */].enableInlineMode == 1) {
var newtr = document.createElement("tr");
newtr.innerHTML =
'<td class="' +
itaSettings["a" /* default */].resultpage.htbLeft +
'"><div class="gwt-Label">Basefare per passenger (' +
((basefares / sum) * 100).toFixed(2).toString() +
'%)</div></td><td class="' +
itaSettings["a" /* default */].resultpage.htbGreyBorder +
'"><div class="gwt-Label">' +
cur +
(basefares / 100)
.toFixed(2)
.toString()
.replace(/\d(?=(\d{3})+\.)/g, "$&,") +
"</div></td>";
target.parentElement.parentElement.insertBefore(
newtr,
target.parentElement
);
var newtr = document.createElement("tr");
newtr.innerHTML =
'<td class="' +
itaSettings["a" /* default */].resultpage.htbLeft +
'"><div class="gwt-Label">Taxes per passenger (' +
((taxes / sum) * 100).toFixed(2).toString() +
'%)</div></td><td class="' +
itaSettings["a" /* default */].resultpage.htbRight +
'"><div class="gwt-Label">' +
cur +
(taxes / 100)
.toFixed(2)
.toString()
.replace(/\d(?=(\d{3})+\.)/g, "$&,") +
"</div></td>";
target.parentElement.parentElement.insertBefore(
newtr,
target.parentElement
);
var newtr = document.createElement("tr");
newtr.innerHTML =
'<td class="' +
itaSettings["a" /* default */].resultpage.htbLeft +
'"><div class="gwt-Label">Surcharges per passenger (' +
((surcharges / sum) * 100).toFixed(2).toString() +
'%)</div></td><td class="' +
itaSettings["a" /* default */].resultpage.htbRight +
'"><div class="gwt-Label">' +
cur +
(surcharges / 100)
.toFixed(2)
.toString()
.replace(/\d(?=(\d{3})+\.)/g, "$&,") +
"</div></td>";
target.parentElement.parentElement.insertBefore(
newtr,
target.parentElement
);
var newtr = document.createElement("tr");
newtr.innerHTML =
'<td class="' +
itaSettings["a" /* default */].resultpage.htbLeft +
'"><div class="gwt-Label">Basefare + Taxes per passenger (' +
(((basefares + taxes) / sum) * 100).toFixed(2).toString() +
'%)</div></td><td class="' +
itaSettings["a" /* default */].resultpage.htbGreyBorder +
'"><div class="gwt-Label">' +
cur +
((basefares + taxes) / 100)
.toFixed(2)
.toString()
.replace(/\d(?=(\d{3})+\.)/g, "$&,") +
"</div></td>";
target.parentElement.parentElement.insertBefore(
newtr,
target.parentElement
);
} else {
count++;
output += '<table style="float:left; margin-right:15px;"><tbody>';
output +=
'<tr><td colspan=3 style="text-align:center;">Price breakdown ' +
count +
": </td></tr>";
output +=
"<tr><td>" +
cur +
' per mile</td><td colspan=2 style="text-align:center;">' +
(sum / parse_itin["a" /* currentItin */].dist / 100).toFixed(4).toString() +
"</td></tr>";
output +=
'<tr><td>Basefare</td><td style="padding:0px 3px;text-align:right;">' +
((basefares / sum) * 100).toFixed(1).toString() +
'%</td><td style="text-align:right;">' +
cur +
(basefares / 100)
.toFixed(2)
.toString()
.replace(/\d(?=(\d{3})+\.)/g, "$&,") +
"</td></tr>";
output +=
'<tr><td>Tax</td><td style="padding:0px 3px;text-align:right;">' +
((taxes / sum) * 100).toFixed(1).toString() +
'%</td><td style="text-align:right;">' +
cur +
(taxes / 100)
.toFixed(2)
.toString()
.replace(/\d(?=(\d{3})+\.)/g, "$&,") +
"</td></tr>";
output +=
'<tr><td>Surcharges</td><td style="padding:0px 3px;text-align:right;">' +
((surcharges / sum) * 100).toFixed(1).toString() +
'%</td><td style="text-align:right;">' +
cur +
(surcharges / 100)
.toFixed(2)
.toString()
.replace(/\d(?=(\d{3})+\.)/g, "$&,") +
"</td></tr>";
output +=
'<tr><td style="border-top: 1px solid #878787;padding:2px 0">Bf+Tax</td><td style="border-top: 1px solid #878787;padding:2px 3px;text-align:right;">' +
(((basefares + taxes) / sum) * 100).toFixed(1).toString() +
'%</td><td style="border-top: 1px solid #878787;padding:2px 0; text-align:right;">' +
cur +
((basefares + taxes) / 100)
.toFixed(2)
.toString()
.replace(/\d(?=(\d{3})+\.)/g, "$&,") +
"</td></tr>";
output += "</tbody></table>";
}
parse_itin["a" /* currentItin */].basefares = +(basefares / 100).toFixed(2);
parse_itin["a" /* currentItin */].taxes = +(taxes / 100).toFixed(2);
parse_itin["a" /* currentItin */].surcharges = +(surcharges / 100).toFixed(2);
// reset var
basefound = 0;
basefares = 0;
taxes = 0;
surcharges = 0;
} else {
//Carrier surcharge?
if (searchpatt.test(name) === true) {
surcharges += price;
} else {
taxes += price;
}
}
}
t++;
target = Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.htbLeft, t);
} while (target != undefined);
}
if (userSettings["a" /* default */].enableInlineMode == 0) {
var printtarget = Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.htbContainer, 1)
.parentElement.parentElement.parentElement;
var newtr = document.createElement("tr");
newtr.setAttribute("class", "pricebreakdown");
newtr.innerHTML = "<td><div>" + output + "</div></td>";
printtarget.parentElement.insertBefore(newtr, printtarget);
}
}
function bindTranslations(page, lang, target) {
if (translations["a" /* default */][lang] === undefined) {
Object(utils["g" /* printNotification */])("Error: Translation " + lang + " not found");
return false;
}
if (translations["a" /* default */][lang][page] === undefined) {
Object(utils["g" /* printNotification */])(
"Error: Translation " + lang + " not found for page " + page
);
return false;
}
for (let i in translations["a" /* default */][lang][page]) {
const re = new RegExp(i, "g");
target.innerHTML = target.innerHTML.replace(
re,
translations["a" /* default */][lang][page][i]
);
}
}
function printCPM() {
document
.querySelector(".KIR33AB-y-c:nth-of-type(1)")
.insertAdjacentHTML(
"beforeend",
`<li class="powertoolsitem">${(
Number(parse_itin["a" /* currentItin */].price) / Number(parse_itin["a" /* currentItin */].dist)
).toFixed(4)} cpm</li>`
);
}
function bindSeatguru() {
for (var i = 0; i < parse_itin["a" /* currentItin */].itin.length; i++) {
// walks each leg
for (var j = 0; j < parse_itin["a" /* currentItin */].itin[i].seg.length; j++) {
//walks each segment of leg
var k = 0;
// lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
while (j + k < parse_itin["a" /* currentItin */].itin[i].seg.length - 1) {
if (
parse_itin["a" /* currentItin */].itin[i].seg[j + k].fnr !=
parse_itin["a" /* currentItin */].itin[i].seg[j + k + 1].fnr ||
parse_itin["a" /* currentItin */].itin[i].seg[j + k].layoverduration >= 1440
)
break;
k++;
}
// build the search to identify flight:
var target = findItinTarget(i + 1, j + 1, "plane");
if (!target) {
Object(utils["g" /* printNotification */])("Error: Could not find target in bindSeatguru");
return false;
} else {
var url =
"http://www.seatguru.com/findseatmap/findseatmap.php?carrier=" +
parse_itin["a" /* currentItin */].itin[i].seg[j].carrier +
"&flightno=" +
parse_itin["a" /* currentItin */].itin[i].seg[j].fnr +
"&date=" +
("0" + parse_itin["a" /* currentItin */].itin[i].seg[j].dep.month).slice(-2) +
"%2F" +
("0" + parse_itin["a" /* currentItin */].itin[i].seg[j].dep.day).slice(-2) +
"%2F" +
parse_itin["a" /* currentItin */].itin[i].seg[j].dep.year +
"&to=&from=" +
parse_itin["a" /* currentItin */].itin[i].seg[j].orig;
target.children[0].innerHTML =
'<a href="' +
url +
'" target="_blank" style="text-decoration:none;color:black">' +
target.children[0].innerHTML +
"</a>";
}
j += k;
}
}
}
function bindPlanefinder() {
for (var i = 0; i < parse_itin["a" /* currentItin */].itin.length; i++) {
// walks each leg
for (var j = 0; j < parse_itin["a" /* currentItin */].itin[i].seg.length; j++) {
//walks each segment of leg
var k = 0;
// lets have a look if we need to skip segments - Flightnumber has to be the same and it must be just a layover
while (j + k < parse_itin["a" /* currentItin */].itin[i].seg.length - 1) {
if (
parse_itin["a" /* currentItin */].itin[i].seg[j + k].fnr !=
parse_itin["a" /* currentItin */].itin[i].seg[j + k + 1].fnr ||
parse_itin["a" /* currentItin */].itin[i].seg[j + k].layoverduration >= 1440
)
break;
k++;
}
// build the search to identify flight:
var target = findItinTarget(i + 1, j + 1, "flight");
if (!target) {
Object(utils["g" /* printNotification */])("Error: Could not find target in bindPlanefinder");
return false;
} else {
var url =
"http://www.planefinder.net/data/flight/" +
parse_itin["a" /* currentItin */].itin[i].seg[j].carrier +
parse_itin["a" /* currentItin */].itin[i].seg[j].fnr;
target.children[0].innerHTML =
'<a href="' +
url +
'" target="_blank" style="text-decoration:none;color:black">' +
target.children[0].innerHTML +
"</a>";
}
j += k;
}
}
}
function bindWheretocredit() {
for (var i = 0; i < parse_itin["a" /* currentItin */].itin.length; i++) {
// walks each leg
for (var j = 0; j < parse_itin["a" /* currentItin */].itin[i].seg.length; j++) {
//walks each segment of leg
var target = findItinTarget(i + 1, j + 1, "cabin");
if (!target) {
Object(utils["g" /* printNotification */])("Error: Could not find target in bindWheretocredit");
return false;
} else {
var url =
"http://www.wheretocredit.com/" +
parse_itin["a" /* currentItin */].itin[i].seg[j].carrier.toLowerCase() +
"/" +
parse_itin["a" /* currentItin */].itin[i].seg[j].bookingclass.toLowerCase();
target.children[0].innerHTML = target.children[0].innerHTML
.replace(
/<a.*?\/a>/,
"(" + parse_itin["a" /* currentItin */].itin[i].seg[j].bookingclass + ")"
)
.replace(
"(" + parse_itin["a" /* currentItin */].itin[i].seg[j].bookingclass + ")",
'<a href="' +
url +
'" target="_blank" style="text-decoration:none;color:black">(' +
parse_itin["a" /* currentItin */].itin[i].seg[j].bookingclass +
")</a>"
);
}
}
}
}
function findItinTarget(leg, seg, tcell) {
var target = Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage.itin, 1);
if (!target) {
Object(utils["g" /* printNotification */])("Error: Itin not found in findItinTarget-function");
return;
}
// go to leg
var targetLeg = target.nextElementSibling.children[leg - 1];
if (targetLeg === undefined) {
Object(utils["g" /* printNotification */])("Error: Leg not found in findItinTarget-function");
return;
}
// go to segments of leg
var targetSeg = targetLeg.children[1].children;
if (targetSeg.length >= 2) {
// go to desired segment
var index = 0;
var j = 0;
let i = 0;
for (i = 0; i < targetSeg.length; i++) {
if (Object(utils["e" /* hasClass */])(targetSeg[i], itaSettings["a" /* default */].resultpage.itinRow)) {
j++;
if (j >= seg) {
index = i;
//special handling for one-seg-legs here
if (targetSeg.length === 2 || targetSeg.length === 3) {
// 1. Headline 2. Flight-details 3. arrival next day..
index--;
}
break;
}
}
} // end-for
if (i == targetSeg.length) {
//target not found
Object(utils["g" /* printNotification */])(
"Error: Call to unreachable Segment in Leg " +
leg +
" in findItinTarget-function"
);
return;
}
var rowoffset = 0;
var columnoffset = 0;
switch (tcell) {
case "headline":
// special case here allways first row... even in one-seg-legs
rowoffset = index * -1;
columnoffset = 1;
break;
case "logo":
rowoffset = 0;
columnoffset = 0;
break;
case "airportsdate":
rowoffset = 0;
columnoffset = 1;
break;
case "flight":
rowoffset = 1;
columnoffset = 0;
break;
case "deptime":
rowoffset = 1;
columnoffset = 1;
break;
case "arrtime":
rowoffset = 1;
columnoffset = 2;
break;
case "duration":
rowoffset = 1;
columnoffset = 2;
break;
case "plane":
rowoffset = 1;
columnoffset = 4;
break;
case "cabin":
rowoffset = 1;
columnoffset = 5;
break;
default:
Object(utils["g" /* printNotification */])("Error: Unknown Target in findItinTarget-function");
return;
}
return targetSeg[index + rowoffset].children[columnoffset];
} else {
Object(utils["g" /* printNotification */])("Error: Unknown error in findItinTarget-function");
return;
}
}
// EXTERNAL MODULE: ./src/settings/paxSettings.js
var paxSettings = __webpack_require__(6);
// CONCATENATED MODULE: ./src/print/settings.js
/**************************************** Settings Stuff *****************************************/
function createUsersettings() {
var str = "";
var settingscontainer = document.createElement("div");
settingscontainer.setAttribute("id", "mptSettingsContainer");
settingscontainer.setAttribute("style", "border-bottom: 1px dashed grey;");
settingscontainer.innerHTML =
'<div style="display:inline-block;float:left;cursor:pointer;" id="passengerVisToggler">Passengers (<label id="mtpPaxCount">1a</label>)</div><div id="mptStartparse" class="invis" style="margin-left:20px;display:none;cursor:pointer">Editor-Mode:Parse!</div><div id="mtpNotification" style="margin-left:50px;display:inline-block;"></div><div style="display:inline-block;float:right;"><div id="settingsVisToggler" style="display:inline-block;cursor:pointer;">Settings</div> (v' +
appSettings["a" /* default */].version +
') <div id="mptCabintoggler" style="display:inline-block;">(Cabin: <label id="mptCabinMode" style="width:30px;text-align:center;cursor:pointer;display:inline-block">Auto</label>)</div></div><div id="mptSettings" class="invis" style="display:none;border-top: 1px dotted grey;"></div><div id="mptPassengers" class="invis" style="display:none;border-top: 1px dotted grey;"></div>';
var target = document.getElementById("contentwrapper");
target.parentElement.insertBefore(settingscontainer, target);
document.getElementById("settingsVisToggler").onclick = function() {
Object(utils["k" /* toggleVis */])(document.getElementById("mptSettings"));
};
document.getElementById("passengerVisToggler").onclick = function() {
Object(utils["k" /* toggleVis */])(document.getElementById("mptPassengers"));
};
// Build settings
target = document.getElementById("mptSettings");
str =
'<div id="mptrestoredefault" style="text-align:right;font-weight:bold;text-decoration:underline;">Restore Defaults</div>';
str +=
'<div style="text-align:center;font-weight:bold">**** Display Settings: ****</div>';
str += '<div style="margin:5px 0;"><div style="float:left;width:33%">';
str +=
'<div id="mpttimeformat">Time Format: <label style="cursor:pointer;">' +
printSettingsvalue("timeformat") +
"</label></div>";
str +=
'<div id="mptlanguage">Language: <label style="cursor:pointer;">' +
printSettingsvalue("language") +
"</label></div>";
str +=
'<div id="mptenableFarerules">Open rules in new window: <label style="cursor:pointer;">' +
printSettingsvalue("enableFarerules") +
"</label></div>";
str += '</div><div style="float:left;width:33%">';
str +=
'<div id="mptenableInlineMode">Inline Mode: <label style="cursor:pointer;">' +
printSettingsvalue("enableInlineMode") +
"</label></div>";
str +=
'<div id="mptenableIMGautoload">Images autoload: <label style="cursor:pointer;">' +
printSettingsvalue("enableIMGautoload") +
"</label></div>";
str +=
'<div id="mptenablePricebreakdown">Price breakdown: <label style="cursor:pointer;">' +
printSettingsvalue("enablePricebreakdown") +
"</label></div>";
str += '</div><div style="float:left;width:33%">';
str +=
'<div id="mptenableDeviders">Enable link dividers: <label style="cursor:pointer;">' +
printSettingsvalue("enableDeviders") +
"</label></div>";
str +=
'<div id="mptlinkFontsize">Link font size: <label style="cursor:pointer;">' +
printSettingsvalue("linkFontsize") +
"</label>%</div>";
str +=
'<div id="mptshowAllAirlines">Show all airline links: <label style="cursor:pointer;">' +
printSettingsvalue("showAllAirlines") +
"</label></div>";
str += '</div><div style="clear:both"></div></div>';
str +=
'<div style="text-align:center;font-weight:bold">**** Feature Settings: ****</div>';
str += '<div style="margin:5px 0"><div style="float:left;width:33%">';
str +=
'<div id="mptenableEditormode">Editor mode: <label style="cursor:pointer;">' +
printSettingsvalue("enableEditormode") +
"</label></div>";
str += '</div><div style="float:left;width:33%">';
str +=
'<div id="mptenableAffiliates" title="Enables affiliate links to support the development of ITA Matrix Powertools">Support this tool: <label style="cursor:pointer;">' +
printSettingsvalue("enableAffiliates") +
"</label></div>";
str += '</div><div style="float:left;width:33%">';
str +=
'<div id="mptenableWheretocredit">Enable WhereToCredit: <label style="cursor:pointer;">' +
printSettingsvalue("enableWheretocredit") +
"</label></div>";
str +=
'<div id="mptenablePlanefinder">Enable Planefinder: <label style="cursor:pointer;">' +
printSettingsvalue("enablePlanefinder") +
"</label></div>";
str +=
'<div id="mptenableSeatguru">Enable Seatguru: <label style="cursor:pointer;">' +
printSettingsvalue("enableSeatguru") +
"</label></div>";
str += '</div><div style="clear:both"></div></div>';
str +=
'<div style="text-align:center;font-weight:bold">**** Link Settings: ****</div>';
str += '<div style="margin:5px 0">';
Object.keys(userSettings["d" /* registeredSettings */]).forEach(setting => {
str += `<div id="mpt${setting}" style="width:33%;float:left;">${
userSettings["d" /* registeredSettings */][setting].name
}: <label style="cursor:pointer;">${printSettingsvalue(
setting
)}</label></div>`;
});
str += '<div style="clear:both"></div></div>';
str +=
'<div style="text-align:center;font-weight:bold"><label id="configcloser" style="cursor:pointer;text-decoration:underline;">Close</label><div>';
target.innerHTML = str;
// these onClick event handlers need only be added once:
document.getElementById("mptrestoredefault").onclick = function() {
restoreDefaultSettings();
};
document.getElementById("mpttimeformat").onclick = function() {
toggleSettings("timeformat");
};
document.getElementById("mptlanguage").onclick = function() {
toggleSettings("language");
};
document.getElementById("mptenableDeviders").onclick = function() {
toggleSettings("enableDeviders");
};
document.getElementById("mptenableInlineMode").onclick = function() {
toggleSettings("enableInlineMode");
};
document.getElementById("mptenableEditormode").onclick = function() {
toggleSettings("enableEditormode");
};
document.getElementById("mptenableIMGautoload").onclick = function() {
toggleSettings("enableIMGautoload");
};
document.getElementById("mptenableFarerules").onclick = function() {
toggleSettings("enableFarerules");
};
document.getElementById("mptenablePricebreakdown").onclick = function() {
toggleSettings("enablePricebreakdown");
};
document.getElementById("mptlinkFontsize").onclick = function() {
toggleSettings("linkFontsize");
};
document.getElementById("mptshowAllAirlines").onclick = function() {
toggleSettings("showAllAirlines");
};
document.getElementById("mptenablePlanefinder").onclick = function() {
toggleSettings("enablePlanefinder");
};
document.getElementById("mptenableSeatguru").onclick = function() {
toggleSettings("enableSeatguru");
};
document.getElementById("mptenableWheretocredit").onclick = function() {
toggleSettings("enableWheretocredit");
};
document.getElementById("mptenableAffiliates").onclick = function() {
toggleSettings("enableAffiliates");
};
document.getElementById("mptCabintoggler").onclick = function() {
toggleSettings("cabin");
};
document.getElementById("configcloser").onclick = function() {
Object(utils["k" /* toggleVis */])(document.getElementById("mptSettings"));
};
document.getElementById("mptStartparse").onclick = function() {
setTimeout(function() {
render();
}, 50);
};
Object.keys(userSettings["d" /* registeredSettings */]).forEach(setting => {
document.getElementById("mpt" + setting).onclick = function() {
toggleSettings(setting);
};
});
// Build passengers
target = document.getElementById("mptPassengers");
str = '<div style="float:left;width:25%">';
str +=
'<div style="margin:2px 0"><label style="width:100px;display:inline-block">Adults: </label> <select name="numAdults" id="numAdults" style="width:50px">';
for (var i = 1; i <= 9; i++) {
str += "<option>" + i + "</option>";
}
str += "</select></div>";
str +=
'<div style="margin:2px 0"><label style="width:100px;display:inline-block">Infants (Lap): </label> <select name="numInfantsLap" id="numInfantsLap" style="width:50px">';
for (var i = 0; i <= 9; i++) {
str += "<option>" + i + "</option>";
}
str += "</select></div>";
str +=
'<div style="margin:2px 0"><label style="width:100px;display:inline-block">Infants (Seat): </label> <select name="numInfantsSeat" id="numInfantsSeat" style="width:50px">';
for (var i = 0; i <= 9; i++) {
str += "<option>" + i + "</option>";
}
str += "</select></div>";
str += '</div><div style="float:left;width:25%">';
for (var k = 1; k <= 3; k++) {
str +=
'<div style="margin:2px 0"><label style="width:100px;display:inline-block">Child ' +
k +
' - Age: </label> <select name="child' +
k +
'age" id="child' +
k +
'age" style="width:50px">';
str += '<option value="-1">-</option>';
for (var i = 2; i <= 17; i++) {
str += '<option value="' + i + '">' + i + "</option>";
}
str += "</select></div>";
}
str += '</div><div style="float:left;width:25%">';
for (var k = 4; k <= 6; k++) {
str +=
'<div style="margin:2px 0"><label style="width:100px;display:inline-block">Child ' +
k +
' - Age: </label> <select name="child' +
k +
'age" id="child' +
k +
'age" style="width:50px">';
str += '<option value="-1">-</option>';
for (var i = 2; i <= 17; i++) {
str += '<option value="' + i + '">' + i + "</option>";
}
str += "</select></div>";
}
str += '</div><div style="float:left;width:25%">';
for (var k = 7; k <= 8; k++) {
str +=
'<div style="margin:2px 0"><label style="width:100px;display:inline-block">Child ' +
k +
' - Age: </label> <select name="child' +
k +
'age" id="child' +
k +
'age" style="width:50px">';
str += '<option value="-1">-</option>';
for (var i = 2; i <= 17; i++) {
str += '<option value="' + i + '">' + i + "</option>";
}
str += "</select></div>";
}
str +=
'<div style="width:150px;margin:2px 0"><div id="mtpConfirmPax" style="float:left;width:50%;text-align:center;cursor:pointer;font-weight:bold">Confirm</div><div id="mtpCancelPax" style="float:left;width:50%;text-align:center;cursor:pointer;font-weight:bold">Cancel</div></div>';
str += '</div><div style="clear:both;"></div>';
target.innerHTML = str;
document.getElementById("mtpCancelPax").onclick = function() {
Object(utils["k" /* toggleVis */])(document.getElementById("mptPassengers"));
};
document.getElementById("mtpConfirmPax").onclick = function() {
processPassengers();
};
}
function restoreDefaultSettings() {
// this function will remove any saved settings and restore default values
if (
window.confirm(
"Are you sure you want to reset any saved settings to the default values? The page will automatically reload to complete the reset."
)
) {
(async () => {
if (typeof GM === "undefined" || typeof GM.info != "undefined") {
await Object(userSettings["e" /* saveUserSettings */])(null);
}
// Reload the current page:
window.location.reload();
})(); // end async for GM4
}
}
function toggleSettings(target) {
console.log("toggleSettings called. target=" + target);
if (userSettings["d" /* registeredSettings */][target] && userSettings["d" /* registeredSettings */][target].values) {
const pos = findPositionForValue(
userSettings["a" /* default */][target],
userSettings["d" /* registeredSettings */][target].values
);
if (pos >= userSettings["d" /* registeredSettings */][target].values.length - 1 || pos === -1) {
userSettings["a" /* default */][target] = userSettings["d" /* registeredSettings */][target].values[0].value;
} else {
userSettings["a" /* default */][target] =
userSettings["d" /* registeredSettings */][target].values[pos + 1].value;
}
} else {
switch (target) {
case "timeformat":
if (userSettings["a" /* default */].timeformat == "12h") {
userSettings["a" /* default */].timeformat = "24h";
} else {
userSettings["a" /* default */].timeformat = "12h";
}
break;
case "language":
if (userSettings["a" /* default */].language == "de") {
userSettings["a" /* default */].language = "en";
} else {
userSettings["a" /* default */].language = "de";
}
break;
case "linkFontsize":
if (
userSettings["a" /* default */].linkFontsize <= 190 &&
userSettings["a" /* default */].linkFontsize >= 50
) {
userSettings["a" /* default */].linkFontsize += 10;
} else {
userSettings["a" /* default */].linkFontsize = 50;
}
break;
case "cabin":
if (appSettings["a" /* default */].cabin === "Auto") {
appSettings["a" /* default */].cabin = "Y";
} else if (appSettings["a" /* default */].cabin === "Y") {
appSettings["a" /* default */].cabin = "Y+";
} else if (appSettings["a" /* default */].cabin === "Y+") {
appSettings["a" /* default */].cabin = "C";
} else if (appSettings["a" /* default */].cabin === "C") {
appSettings["a" /* default */].cabin = "F";
} else if (appSettings["a" /* default */].cabin === "F") {
appSettings["a" /* default */].cabin = "Auto";
}
document.getElementById("mptCabinMode").innerHTML = appSettings["a" /* default */].cabin;
// refresh links
Object(links["a" /* printLinksContainer */])();
break;
default:
if (userSettings["a" /* default */][target] == 1) {
userSettings["a" /* default */][target] = 0;
} else {
userSettings["a" /* default */][target] = 1;
}
}
}
document.getElementById(
"mpt" + target
).firstElementChild.innerHTML = printSettingsvalue(target);
Object(userSettings["e" /* saveUserSettings */])();
}
function processPassengers() {
var paxText = "";
var e = document.getElementById("numAdults");
paxSettings["a" /* default */].adults = Number(e.options[e.selectedIndex].value);
e = document.getElementById("numInfantsLap");
paxSettings["a" /* default */].infantsLap = Number(e.options[e.selectedIndex].value);
e = document.getElementById("numInfantsSeat");
paxSettings["a" /* default */].infantsSeat = Number(e.options[e.selectedIndex].value);
paxSettings["a" /* default */].cAges = new Array();
for (var i = 1; i <= 8; i++) {
processChild("child" + i + "age");
}
paxText =
paxSettings["a" /* default */].adults +
"a" +
(paxSettings["a" /* default */].cAges.length > 0
? " " + paxSettings["a" /* default */].cAges.length + "c"
: "") +
(paxSettings["a" /* default */].infantsLap + paxSettings["a" /* default */].infantsSeat > 0
? " " +
(paxSettings["a" /* default */].infantsLap + paxSettings["a" /* default */].infantsSeat) +
"i"
: "");
document.getElementById("mtpPaxCount").innerHTML = paxText;
Object(utils["k" /* toggleVis */])(document.getElementById("mptPassengers"));
// reload links
Object(links["a" /* printLinksContainer */])();
}
function processChild(target) {
var e = document.getElementById(target);
var tmp = 0;
tmp = Number(e.options[e.selectedIndex].value);
if (tmp >= 2) {
paxSettings["a" /* default */].cAges.push(tmp);
}
}
function printSettingsvalue(target) {
if (userSettings["d" /* registeredSettings */][target]) {
return findNameForValue(
userSettings["a" /* default */][target],
userSettings["d" /* registeredSettings */][target].values
);
}
switch (target) {
case "timeformat":
return userSettings["a" /* default */].timeformat;
case "language":
return userSettings["a" /* default */].language;
case "linkFontsize":
return userSettings["a" /* default */].linkFontsize.toString();
default:
return boolToEnabled(userSettings["a" /* default */][target]);
}
}
function findNameForValue(needle, haystack) {
var ret = "Unknown";
for (var i in haystack) {
if (haystack[i].value == needle) {
return haystack[i].name;
}
}
return ret;
}
function findPositionForValue(needle, haystack) {
return haystack.findIndex(o => o.value == needle);
}
function boolToEnabled(value) {
if (value == 1) {
return "enabled";
} else {
return "disabled";
}
}
// CONCATENATED MODULE: ./src/index.js
/**************************************** Start Script *****************************************/
// *** DO NOT CHANGE BELOW THIS LINE***/
(async () => {
await Object(userSettings["b" /* loadUserSettings */])();
createUsersettings();
injectCss();
if (window.top === window.self) {
if (appSettings["a" /* default */].scriptEngine === 0) {
startScript();
} else {
// execute language detection and afterwards functions for current page
if (typeof window.addEventListener !== "undefined") {
window.addEventListener("load", () => startScript(), false);
} else {
window.onload = () => startScript();
}
}
}
})(); // end async for GM4
function startScript() {
if (window.location.href !== appSettings["a" /* default */].laststatus) {
setTimeout(function() {
Object(appSettings["d" /* reset */])();
cleanUp();
getPageLang();
}, 100);
appSettings["a" /* default */].laststatus = window.location.href;
}
if (appSettings["a" /* default */].scriptrunning === 1) {
setTimeout(function() {
startScript();
}, 500);
}
}
/**************************************** Get Language *****************************************/
function getPageLang() {
if (window.location.href.indexOf("view-details") != -1) {
setTimeout(function() {
fePS();
}, 200);
} else if (
window.location.href.indexOf("#search:") != -1 ||
window.location.href == "https://matrix.itasoftware.com/" ||
window.location.href == "https://matrix.itasoftware.com/"
) {
setTimeout(function() {
startPage();
}, 200);
}
}
/********************************************* Start page *********************************************/
function startPage() {
// try to get content
if (!Object(itaSettings["b" /* findTargetSetVersion */])(settings => settings.startpage.maindiv, 1)) {
Object(utils["g" /* printNotification */])("Error: Unable to find content on start page.");
return false;
} else {
// apply style-fix
const target = Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].startpage.maindiv, 1);
target.children[0].children[0].children[0].children[0].setAttribute(
"valign",
"top"
);
}
}
/********************************************* Result page *********************************************/
//Primary function for extracting flight data from ITA/Matrix
function fePS() {
// try to get content
const itin = Object(itaSettings["b" /* findTargetSetVersion */])(settings => settings.resultpage.itin, 1);
if (!itin) {
Object(utils["g" /* printNotification */])("Error: Unable to find Content on result page.");
return false;
}
// retry if itin not loaded
if (itin.parentElement.previousElementSibling.style.display != "none") {
appSettings["a" /* default */].retrycount++;
if (appSettings["a" /* default */].retrycount > 50) {
Object(utils["g" /* printNotification */])(
"Error: Timeout on result page. Content not found after 10s."
);
return false;
}
setTimeout(function() {
fePS();
}, 200);
return false;
}
// do some self-testing to prevent crashing on class-changes
for (let i in itaSettings["a" /* default */].resultpage) {
if (Object(utils["c" /* findtarget */])(itaSettings["a" /* default */].resultpage[i], 1) === undefined) {
Object(utils["g" /* printNotification */])(
"Error: Unable to find class " +
itaSettings["a" /* default */].resultpage[i] +
" for " +
i +
"."
);
return false;
}
}
Object(parse_itin["c" /* readItinerary */])();
render();
}
function injectCss() {
var css = "",
head = document.head || document.getElementsByTagName("head")[0],
style = document.createElement("style");
style.type = "text/css";
css +=
".pt-hover-menu { position:absolute; padding: 8px; background-color: #FFF; border: 1px solid #808080; display:none; }";
css += ".pt-hover-container:hover .pt-hover-menu { display:inline; }";
style.appendChild(document.createTextNode(css));
head.appendChild(style);
}
/***/ })
/******/ ]);