Subversion Repositories munaweb

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
//! moment-timezone.js
2
//! version : 0.5.17
3
//! Copyright (c) JS Foundation and other contributors
4
//! license : MIT
5
//! github.com/moment/moment-timezone
6
 
7
(function (root, factory) {
8
	"use strict";
9
 
10
	/*global define*/
11
	if (typeof define === 'function' && define.amd) {
12
		define(['moment'], factory);                 // AMD
13
	} else if (typeof module === 'object' && module.exports) {
14
		module.exports = factory(require('moment')); // Node
15
	} else {
16
		factory(root.moment);                        // Browser
17
	}
18
}(this, function (moment) {
19
	"use strict";
20
 
21
	// Do not load moment-timezone a second time.
22
	// if (moment.tz !== undefined) {
23
	// 	logError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);
24
	// 	return moment;
25
	// }
26
 
27
	var VERSION = "0.5.17",
28
		zones = {},
29
		links = {},
30
		names = {},
31
		guesses = {},
32
		cachedGuess,
33
 
34
		momentVersion = moment.version.split('.'),
35
		major = +momentVersion[0],
36
		minor = +momentVersion[1];
37
 
38
	// Moment.js version check
39
	if (major < 2 || (major === 2 && minor < 6)) {
40
		logError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');
41
	}
42
 
43
	/************************************
44
		Unpacking
45
	************************************/
46
 
47
	function charCodeToInt(charCode) {
48
		if (charCode > 96) {
49
			return charCode - 87;
50
		} else if (charCode > 64) {
51
			return charCode - 29;
52
		}
53
		return charCode - 48;
54
	}
55
 
56
	function unpackBase60(string) {
57
		var i = 0,
58
			parts = string.split('.'),
59
			whole = parts[0],
60
			fractional = parts[1] || '',
61
			multiplier = 1,
62
			num,
63
			out = 0,
64
			sign = 1;
65
 
66
		// handle negative numbers
67
		if (string.charCodeAt(0) === 45) {
68
			i = 1;
69
			sign = -1;
70
		}
71
 
72
		// handle digits before the decimal
73
		for (i; i < whole.length; i++) {
74
			num = charCodeToInt(whole.charCodeAt(i));
75
			out = 60 * out + num;
76
		}
77
 
78
		// handle digits after the decimal
79
		for (i = 0; i < fractional.length; i++) {
80
			multiplier = multiplier / 60;
81
			num = charCodeToInt(fractional.charCodeAt(i));
82
			out += num * multiplier;
83
		}
84
 
85
		return out * sign;
86
	}
87
 
88
	function arrayToInt (array) {
89
		for (var i = 0; i < array.length; i++) {
90
			array[i] = unpackBase60(array[i]);
91
		}
92
	}
93
 
94
	function intToUntil (array, length) {
95
		for (var i = 0; i < length; i++) {
96
			array[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds
97
		}
98
 
99
		array[length - 1] = Infinity;
100
	}
101
 
102
	function mapIndices (source, indices) {
103
		var out = [], i;
104
 
105
		for (i = 0; i < indices.length; i++) {
106
			out[i] = source[indices[i]];
107
		}
108
 
109
		return out;
110
	}
111
 
112
	function unpack (string) {
113
		var data = string.split('|'),
114
			offsets = data[2].split(' '),
115
			indices = data[3].split(''),
116
			untils  = data[4].split(' ');
117
 
118
		arrayToInt(offsets);
119
		arrayToInt(indices);
120
		arrayToInt(untils);
121
 
122
		intToUntil(untils, indices.length);
123
 
124
		return {
125
			name       : data[0],
126
			abbrs      : mapIndices(data[1].split(' '), indices),
127
			offsets    : mapIndices(offsets, indices),
128
			untils     : untils,
129
			population : data[5] | 0
130
		};
131
	}
132
 
133
	/************************************
134
		Zone object
135
	************************************/
136
 
137
	function Zone (packedString) {
138
		if (packedString) {
139
			this._set(unpack(packedString));
140
		}
141
	}
142
 
143
	Zone.prototype = {
144
		_set : function (unpacked) {
145
			this.name       = unpacked.name;
146
			this.abbrs      = unpacked.abbrs;
147
			this.untils     = unpacked.untils;
148
			this.offsets    = unpacked.offsets;
149
			this.population = unpacked.population;
150
		},
151
 
152
		_index : function (timestamp) {
153
			var target = +timestamp,
154
				untils = this.untils,
155
				i;
156
 
157
			for (i = 0; i < untils.length; i++) {
158
				if (target < untils[i]) {
159
					return i;
160
				}
161
			}
162
		},
163
 
164
		parse : function (timestamp) {
165
			var target  = +timestamp,
166
				offsets = this.offsets,
167
				untils  = this.untils,
168
				max     = untils.length - 1,
169
				offset, offsetNext, offsetPrev, i;
170
 
171
			for (i = 0; i < max; i++) {
172
				offset     = offsets[i];
173
				offsetNext = offsets[i + 1];
174
				offsetPrev = offsets[i ? i - 1 : i];
175
 
176
				if (offset < offsetNext && tz.moveAmbiguousForward) {
177
					offset = offsetNext;
178
				} else if (offset > offsetPrev && tz.moveInvalidForward) {
179
					offset = offsetPrev;
180
				}
181
 
182
				if (target < untils[i] - (offset * 60000)) {
183
					return offsets[i];
184
				}
185
			}
186
 
187
			return offsets[max];
188
		},
189
 
190
		abbr : function (mom) {
191
			return this.abbrs[this._index(mom)];
192
		},
193
 
194
		offset : function (mom) {
195
			logError("zone.offset has been deprecated in favor of zone.utcOffset");
196
			return this.offsets[this._index(mom)];
197
		},
198
 
199
		utcOffset : function (mom) {
200
			return this.offsets[this._index(mom)];
201
		}
202
	};
203
 
204
	/************************************
205
		Current Timezone
206
	************************************/
207
 
208
	function OffsetAt(at) {
209
		var timeString = at.toTimeString();
210
		var abbr = timeString.match(/\([a-z ]+\)/i);
211
		if (abbr && abbr[0]) {
212
			// 17:56:31 GMT-0600 (CST)
213
			// 17:56:31 GMT-0600 (Central Standard Time)
214
			abbr = abbr[0].match(/[A-Z]/g);
215
			abbr = abbr ? abbr.join('') : undefined;
216
		} else {
217
			// 17:56:31 CST
218
			// 17:56:31 GMT+0800 (??????)
219
			abbr = timeString.match(/[A-Z]{3,5}/g);
220
			abbr = abbr ? abbr[0] : undefined;
221
		}
222
 
223
		if (abbr === 'GMT') {
224
			abbr = undefined;
225
		}
226
 
227
		this.at = +at;
228
		this.abbr = abbr;
229
		this.offset = at.getTimezoneOffset();
230
	}
231
 
232
	function ZoneScore(zone) {
233
		this.zone = zone;
234
		this.offsetScore = 0;
235
		this.abbrScore = 0;
236
	}
237
 
238
	ZoneScore.prototype.scoreOffsetAt = function (offsetAt) {
239
		this.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);
240
		if (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {
241
			this.abbrScore++;
242
		}
243
	};
244
 
245
	function findChange(low, high) {
246
		var mid, diff;
247
 
248
		while ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {
249
			mid = new OffsetAt(new Date(low.at + diff));
250
			if (mid.offset === low.offset) {
251
				low = mid;
252
			} else {
253
				high = mid;
254
			}
255
		}
256
 
257
		return low;
258
	}
259
 
260
	function userOffsets() {
261
		var startYear = new Date().getFullYear() - 2,
262
			last = new OffsetAt(new Date(startYear, 0, 1)),
263
			offsets = [last],
264
			change, next, i;
265
 
266
		for (i = 1; i < 48; i++) {
267
			next = new OffsetAt(new Date(startYear, i, 1));
268
			if (next.offset !== last.offset) {
269
				change = findChange(last, next);
270
				offsets.push(change);
271
				offsets.push(new OffsetAt(new Date(change.at + 6e4)));
272
			}
273
			last = next;
274
		}
275
 
276
		for (i = 0; i < 4; i++) {
277
			offsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));
278
			offsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));
279
		}
280
 
281
		return offsets;
282
	}
283
 
284
	function sortZoneScores (a, b) {
285
		if (a.offsetScore !== b.offsetScore) {
286
			return a.offsetScore - b.offsetScore;
287
		}
288
		if (a.abbrScore !== b.abbrScore) {
289
			return a.abbrScore - b.abbrScore;
290
		}
291
		return b.zone.population - a.zone.population;
292
	}
293
 
294
	function addToGuesses (name, offsets) {
295
		var i, offset;
296
		arrayToInt(offsets);
297
		for (i = 0; i < offsets.length; i++) {
298
			offset = offsets[i];
299
			guesses[offset] = guesses[offset] || {};
300
			guesses[offset][name] = true;
301
		}
302
	}
303
 
304
	function guessesForUserOffsets (offsets) {
305
		var offsetsLength = offsets.length,
306
			filteredGuesses = {},
307
			out = [],
308
			i, j, guessesOffset;
309
 
310
		for (i = 0; i < offsetsLength; i++) {
311
			guessesOffset = guesses[offsets[i].offset] || {};
312
			for (j in guessesOffset) {
313
				if (guessesOffset.hasOwnProperty(j)) {
314
					filteredGuesses[j] = true;
315
				}
316
			}
317
		}
318
 
319
		for (i in filteredGuesses) {
320
			if (filteredGuesses.hasOwnProperty(i)) {
321
				out.push(names[i]);
322
			}
323
		}
324
 
325
		return out;
326
	}
327
 
328
	function rebuildGuess () {
329
 
330
		// use Intl API when available and returning valid time zone
331
		try {
332
			var intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;
333
			if (intlName && intlName.length > 3) {
334
				var name = names[normalizeName(intlName)];
335
				if (name) {
336
					return name;
337
				}
338
				logError("Moment Timezone found " + intlName + " from the Intl api, but did not have that data loaded.");
339
			}
340
		} catch (e) {
341
			// Intl unavailable, fall back to manual guessing.
342
		}
343
 
344
		var offsets = userOffsets(),
345
			offsetsLength = offsets.length,
346
			guesses = guessesForUserOffsets(offsets),
347
			zoneScores = [],
348
			zoneScore, i, j;
349
 
350
		for (i = 0; i < guesses.length; i++) {
351
			zoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);
352
			for (j = 0; j < offsetsLength; j++) {
353
				zoneScore.scoreOffsetAt(offsets[j]);
354
			}
355
			zoneScores.push(zoneScore);
356
		}
357
 
358
		zoneScores.sort(sortZoneScores);
359
 
360
		return zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;
361
	}
362
 
363
	function guess (ignoreCache) {
364
		if (!cachedGuess || ignoreCache) {
365
			cachedGuess = rebuildGuess();
366
		}
367
		return cachedGuess;
368
	}
369
 
370
	/************************************
371
		Global Methods
372
	************************************/
373
 
374
	function normalizeName (name) {
375
		return (name || '').toLowerCase().replace(/\//g, '_');
376
	}
377
 
378
	function addZone (packed) {
379
		var i, name, split, normalized;
380
 
381
		if (typeof packed === "string") {
382
			packed = [packed];
383
		}
384
 
385
		for (i = 0; i < packed.length; i++) {
386
			split = packed[i].split('|');
387
			name = split[0];
388
			normalized = normalizeName(name);
389
			zones[normalized] = packed[i];
390
			names[normalized] = name;
391
			addToGuesses(normalized, split[2].split(' '));
392
		}
393
	}
394
 
395
	function getZone (name, caller) {
396
		name = normalizeName(name);
397
 
398
		var zone = zones[name];
399
		var link;
400
 
401
		if (zone instanceof Zone) {
402
			return zone;
403
		}
404
 
405
		if (typeof zone === 'string') {
406
			zone = new Zone(zone);
407
			zones[name] = zone;
408
			return zone;
409
		}
410
 
411
		// Pass getZone to prevent recursion more than 1 level deep
412
		if (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {
413
			zone = zones[name] = new Zone();
414
			zone._set(link);
415
			zone.name = names[name];
416
			return zone;
417
		}
418
 
419
		return null;
420
	}
421
 
422
	function getNames () {
423
		var i, out = [];
424
 
425
		for (i in names) {
426
			if (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {
427
				out.push(names[i]);
428
			}
429
		}
430
 
431
		return out.sort();
432
	}
433
 
434
	function addLink (aliases) {
435
		var i, alias, normal0, normal1;
436
 
437
		if (typeof aliases === "string") {
438
			aliases = [aliases];
439
		}
440
 
441
		for (i = 0; i < aliases.length; i++) {
442
			alias = aliases[i].split('|');
443
 
444
			normal0 = normalizeName(alias[0]);
445
			normal1 = normalizeName(alias[1]);
446
 
447
			links[normal0] = normal1;
448
			names[normal0] = alias[0];
449
 
450
			links[normal1] = normal0;
451
			names[normal1] = alias[1];
452
		}
453
	}
454
 
455
	function loadData (data) {
456
		addZone(data.zones);
457
		addLink(data.links);
458
		tz.dataVersion = data.version;
459
	}
460
 
461
	function zoneExists (name) {
462
		if (!zoneExists.didShowError) {
463
			zoneExists.didShowError = true;
464
				logError("moment.tz.zoneExists('" + name + "') has been deprecated in favor of !moment.tz.zone('" + name + "')");
465
		}
466
		return !!getZone(name);
467
	}
468
 
469
	function needsOffset (m) {
470
		var isUnixTimestamp = (m._f === 'X' || m._f === 'x');
471
		return !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);
472
	}
473
 
474
	function logError (message) {
475
		if (typeof console !== 'undefined' && typeof console.error === 'function') {
476
			console.error(message);
477
		}
478
	}
479
 
480
	/************************************
481
		moment.tz namespace
482
	************************************/
483
 
484
	function tz (input) {
485
		var args = Array.prototype.slice.call(arguments, 0, -1),
486
			name = arguments[arguments.length - 1],
487
			zone = getZone(name),
488
			out  = moment.utc.apply(null, args);
489
 
490
		if (zone && !moment.isMoment(input) && needsOffset(out)) {
491
			out.add(zone.parse(out), 'minutes');
492
		}
493
 
494
		out.tz(name);
495
 
496
		return out;
497
	}
498
 
499
	tz.version      = VERSION;
500
	tz.dataVersion  = '';
501
	tz._zones       = zones;
502
	tz._links       = links;
503
	tz._names       = names;
504
	tz.add          = addZone;
505
	tz.link         = addLink;
506
	tz.load         = loadData;
507
	tz.zone         = getZone;
508
	tz.zoneExists   = zoneExists; // deprecated in 0.1.0
509
	tz.guess        = guess;
510
	tz.names        = getNames;
511
	tz.Zone         = Zone;
512
	tz.unpack       = unpack;
513
	tz.unpackBase60 = unpackBase60;
514
	tz.needsOffset  = needsOffset;
515
	tz.moveInvalidForward   = true;
516
	tz.moveAmbiguousForward = false;
517
 
518
	/************************************
519
		Interface with Moment.js
520
	************************************/
521
 
522
	var fn = moment.fn;
523
 
524
	moment.tz = tz;
525
 
526
	moment.defaultZone = null;
527
 
528
	moment.updateOffset = function (mom, keepTime) {
529
		var zone = moment.defaultZone,
530
			offset;
531
 
532
		if (mom._z === undefined) {
533
			if (zone && needsOffset(mom) && !mom._isUTC) {
534
				mom._d = moment.utc(mom._a)._d;
535
				mom.utc().add(zone.parse(mom), 'minutes');
536
			}
537
			mom._z = zone;
538
		}
539
		if (mom._z) {
540
			offset = mom._z.utcOffset(mom);
541
			if (Math.abs(offset) < 16) {
542
				offset = offset / 60;
543
			}
544
			if (mom.utcOffset !== undefined) {
545
				mom.utcOffset(-offset, keepTime);
546
			} else {
547
				mom.zone(offset, keepTime);
548
			}
549
		}
550
	};
551
 
552
	fn.tz = function (name, keepTime) {
553
		if (name) {
554
			this._z = getZone(name);
555
			if (this._z) {
556
				moment.updateOffset(this, keepTime);
557
			} else {
558
				logError("Moment Timezone has no data for " + name + ". See http://momentjs.com/timezone/docs/#/data-loading/.");
559
			}
560
			return this;
561
		}
562
		if (this._z) { return this._z.name; }
563
	};
564
 
565
	function abbrWrap (old) {
566
		return function () {
567
			if (this._z) { return this._z.abbr(this); }
568
			return old.call(this);
569
		};
570
	}
571
 
572
	function resetZoneWrap (old) {
573
		return function () {
574
			this._z = null;
575
			return old.apply(this, arguments);
576
		};
577
	}
578
 
579
	fn.zoneName = abbrWrap(fn.zoneName);
580
	fn.zoneAbbr = abbrWrap(fn.zoneAbbr);
581
	fn.utc      = resetZoneWrap(fn.utc);
582
 
583
	moment.tz.setDefault = function(name) {
584
		if (major < 2 || (major === 2 && minor < 9)) {
585
			logError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');
586
		}
587
		moment.defaultZone = name ? getZone(name) : null;
588
		return moment;
589
	};
590
 
591
	// Cloning a moment should include the _z property.
592
	var momentProperties = moment.momentProperties;
593
	if (Object.prototype.toString.call(momentProperties) === '[object Array]') {
594
		// moment 2.8.1+
595
		momentProperties.push('_z');
596
		momentProperties.push('_a');
597
	} else if (momentProperties) {
598
		// moment 2.7.0
599
		momentProperties._z = null;
600
	}
601
 
602
	loadData({
603
		"version": "2018e",
604
		"zones": [
605
			"Africa/Abidjan|GMT|0|0||48e5",
606
			"Africa/Nairobi|EAT|-30|0||47e5",
607
			"Africa/Algiers|CET|-10|0||26e5",
608
			"Africa/Lagos|WAT|-10|0||17e6",
609
			"Africa/Maputo|CAT|-20|0||26e5",
610
			"Africa/Cairo|EET EEST|-20 -30|01010|1M2m0 gL0 e10 mn0|15e6",
611
			"Africa/Casablanca|WET WEST|0 -10|0101010101010101010101010101010101010101010|1H3C0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0 11A0 5A0 e00 17c0 1fA0 1a00|32e5",
612
			"Europe/Paris|CET CEST|-10 -20|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|11e6",
613
			"Africa/Johannesburg|SAST|-20|0||84e5",
614
			"Africa/Khartoum|EAT CAT|-30 -20|01|1Usl0|51e5",
615
			"Africa/Sao_Tome|GMT WAT|0 -10|01|1UQN0",
616
			"Africa/Tripoli|EET CET CEST|-20 -10 -20|0120|1IlA0 TA0 1o00|11e5",
617
			"Africa/Windhoek|CAT WAT|-20 -10|0101010101010|1GQo0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|32e4",
618
			"America/Adak|HST HDT|a0 90|01010101010101010101010|1GIc0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|326",
619
			"America/Anchorage|AKST AKDT|90 80|01010101010101010101010|1GIb0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|30e4",
620
			"America/Santo_Domingo|AST|40|0||29e5",
621
			"America/Araguaina|-03 -02|30 20|010|1IdD0 Lz0|14e4",
622
			"America/Fortaleza|-03|30|0||34e5",
623
			"America/Asuncion|-03 -04|30 40|01010101010101010101010|1GTf0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0|28e5",
624
			"America/Panama|EST|50|0||15e5",
625
			"America/Mexico_City|CST CDT|60 50|01010101010101010101010|1GQw0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|20e6",
626
			"America/Bahia|-02 -03|20 30|01|1GCq0|27e5",
627
			"America/Managua|CST|60|0||22e5",
628
			"America/La_Paz|-04|40|0||19e5",
629
			"America/Lima|-05|50|0||11e6",
630
			"America/Denver|MST MDT|70 60|01010101010101010101010|1GI90 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|26e5",
631
			"America/Campo_Grande|-03 -04|30 40|01010101010101010101010|1GCr0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0 1HB0 FX0 1HB0 IL0 1HB0 FX0 1HB0|77e4",
632
			"America/Cancun|CST CDT EST|60 50 50|01010102|1GQw0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4",
633
			"America/Caracas|-0430 -04|4u 40|01|1QMT0|29e5",
634
			"America/Chicago|CST CDT|60 50|01010101010101010101010|1GI80 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|92e5",
635
			"America/Chihuahua|MST MDT|70 60|01010101010101010101010|1GQx0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|81e4",
636
			"America/Phoenix|MST|70|0||42e5",
637
			"America/Los_Angeles|PST PDT|80 70|01010101010101010101010|1GIa0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|15e6",
638
			"America/New_York|EST EDT|50 40|01010101010101010101010|1GI70 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|21e6",
639
			"America/Rio_Branco|-04 -05|40 50|01|1KLE0|31e4",
640
			"America/Fort_Nelson|PST PDT MST|80 70 70|01010102|1GIa0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2",
641
			"America/Halifax|AST ADT|40 30|01010101010101010101010|1GI60 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|39e4",
642
			"America/Godthab|-03 -02|30 20|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|17e3",
643
			"America/Grand_Turk|EST EDT AST|50 40 40|0101010121010101010|1GI70 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 5Ip0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|37e2",
644
			"America/Havana|CST CDT|50 40|01010101010101010101010|1GQt0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0|21e5",
645
			"America/Metlakatla|PST AKST AKDT|80 90 80|0121212121212121|1PAa0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|14e2",
646
			"America/Miquelon|-03 -02|30 20|01010101010101010101010|1GI50 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|61e2",
647
			"America/Montevideo|-02 -03|20 30|01010101|1GI40 1o10 11z0 1o10 11z0 1o10 11z0|17e5",
648
			"America/Noronha|-02|20|0||30e2",
649
			"America/Port-au-Prince|EST EDT|50 40|010101010101010101010|1GI70 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|23e5",
650
			"Antarctica/Palmer|-03 -04|30 40|010101010|1H3D0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|40",
651
			"America/Santiago|-03 -04|30 40|010101010101010101010|1H3D0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0|62e5",
652
			"America/Sao_Paulo|-02 -03|20 30|01010101010101010101010|1GCq0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0 1HB0 FX0 1HB0 IL0 1HB0 FX0 1HB0|20e6",
653
			"Atlantic/Azores|-01 +00|10 0|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|25e4",
654
			"America/St_Johns|NST NDT|3u 2u|01010101010101010101010|1GI5u 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|11e4",
655
			"Antarctica/Casey|+11 +08|-b0 -80|0101|1GAF0 blz0 3m10|10",
656
			"Antarctica/Davis|+05 +07|-50 -70|01|1GAI0|70",
657
			"Pacific/Port_Moresby|+10|-a0|0||25e4",
658
			"Pacific/Guadalcanal|+11|-b0|0||11e4",
659
			"Asia/Tashkent|+05|-50|0||23e5",
660
			"Pacific/Auckland|NZDT NZST|-d0 -c0|01010101010101010101010|1GQe0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00|14e5",
661
			"Asia/Baghdad|+03|-30|0||66e5",
662
			"Antarctica/Troll|+00 +02|0 -20|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|40",
663
			"Asia/Dhaka|+06|-60|0||16e6",
664
			"Asia/Amman|EET EEST|-20 -30|010101010101010101010|1GPy0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00|25e5",
665
			"Asia/Kamchatka|+12|-c0|0||18e4",
666
			"Asia/Baku|+04 +05|-40 -50|010101010|1GNA0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5",
667
			"Asia/Bangkok|+07|-70|0||15e6",
668
			"Asia/Barnaul|+07 +06|-70 -60|010|1N7v0 3rd0",
669
			"Asia/Beirut|EET EEST|-20 -30|01010101010101010101010|1GNy0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0|22e5",
670
			"Asia/Manila|+08|-80|0||24e6",
671
			"Asia/Kolkata|IST|-5u|0||15e6",
672
			"Asia/Chita|+10 +08 +09|-a0 -80 -90|012|1N7s0 3re0|33e4",
673
			"Asia/Ulaanbaatar|+08 +09|-80 -90|01010|1O8G0 1cJ0 1cP0 1cJ0|12e5",
674
			"Asia/Shanghai|CST|-80|0||23e6",
675
			"Asia/Colombo|+0530|-5u|0||22e5",
676
			"Asia/Damascus|EET EEST|-20 -30|01010101010101010101010|1GPy0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0|26e5",
677
			"Asia/Dili|+09|-90|0||19e4",
678
			"Asia/Dubai|+04|-40|0||39e5",
679
			"Asia/Famagusta|EET EEST +03|-20 -30 -30|0101010101201010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0",
680
			"Asia/Gaza|EET EEST|-20 -30|01010101010101010101010|1GPy0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0|18e5",
681
			"Asia/Hong_Kong|HKT|-80|0||73e5",
682
			"Asia/Hovd|+07 +08|-70 -80|01010|1O8H0 1cJ0 1cP0 1cJ0|81e3",
683
			"Asia/Irkutsk|+09 +08|-90 -80|01|1N7t0|60e4",
684
			"Europe/Istanbul|EET EEST +03|-20 -30 -30|01010101012|1GNB0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6",
685
			"Asia/Jakarta|WIB|-70|0||31e6",
686
			"Asia/Jayapura|WIT|-90|0||26e4",
687
			"Asia/Jerusalem|IST IDT|-20 -30|01010101010101010101010|1GPA0 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0|81e4",
688
			"Asia/Kabul|+0430|-4u|0||46e5",
689
			"Asia/Karachi|PKT|-50|0||24e6",
690
			"Asia/Kathmandu|+0545|-5J|0||12e5",
691
			"Asia/Yakutsk|+10 +09|-a0 -90|01|1N7s0|28e4",
692
			"Asia/Krasnoyarsk|+08 +07|-80 -70|01|1N7u0|10e5",
693
			"Asia/Magadan|+12 +10 +11|-c0 -a0 -b0|012|1N7q0 3Cq0|95e3",
694
			"Asia/Makassar|WITA|-80|0||15e5",
695
			"Europe/Athens|EET EEST|-20 -30|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|35e5",
696
			"Asia/Novosibirsk|+07 +06|-70 -60|010|1N7v0 4eN0|15e5",
697
			"Asia/Omsk|+07 +06|-70 -60|01|1N7v0|12e5",
698
			"Asia/Pyongyang|KST KST|-90 -8u|010|1P4D0 6BAu|29e5",
699
			"Asia/Rangoon|+0630|-6u|0||48e5",
700
			"Asia/Sakhalin|+11 +10|-b0 -a0|010|1N7r0 3rd0|58e4",
701
			"Asia/Seoul|KST|-90|0||23e6",
702
			"Asia/Srednekolymsk|+12 +11|-c0 -b0|01|1N7q0|35e2",
703
			"Asia/Tehran|+0330 +0430|-3u -4u|01010101010101010101010|1GLUu 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0|14e6",
704
			"Asia/Tokyo|JST|-90|0||38e6",
705
			"Asia/Tomsk|+07 +06|-70 -60|010|1N7v0 3Qp0|10e5",
706
			"Asia/Vladivostok|+11 +10|-b0 -a0|01|1N7r0|60e4",
707
			"Asia/Yekaterinburg|+06 +05|-60 -50|01|1N7w0|14e5",
708
			"Europe/Lisbon|WET WEST|0 -10|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|27e5",
709
			"Atlantic/Cape_Verde|-01|10|0||50e4",
710
			"Australia/Sydney|AEDT AEST|-b0 -a0|01010101010101010101010|1GQg0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|40e5",
711
			"Australia/Adelaide|ACDT ACST|-au -9u|01010101010101010101010|1GQgu 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|11e5",
712
			"Australia/Brisbane|AEST|-a0|0||20e5",
713
			"Australia/Darwin|ACST|-9u|0||12e4",
714
			"Australia/Eucla|+0845|-8J|0||368",
715
			"Australia/Lord_Howe|+11 +1030|-b0 -au|01010101010101010101010|1GQf0 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu|347",
716
			"Australia/Perth|AWST|-80|0||18e5",
717
			"Pacific/Easter|-05 -06|50 60|010101010101010101010|1H3D0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0|30e2",
718
			"Europe/Dublin|GMT IST|0 -10|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|12e5",
719
			"Etc/GMT-1|+01|-10|0|",
720
			"Pacific/Fakaofo|+13|-d0|0||483",
721
			"Pacific/Kiritimati|+14|-e0|0||51e2",
722
			"Etc/GMT-2|+02|-20|0|",
723
			"Pacific/Tahiti|-10|a0|0||18e4",
724
			"Pacific/Niue|-11|b0|0||12e2",
725
			"Etc/GMT+12|-12|c0|0|",
726
			"Pacific/Galapagos|-06|60|0||25e3",
727
			"Etc/GMT+7|-07|70|0|",
728
			"Pacific/Pitcairn|-08|80|0||56",
729
			"Pacific/Gambier|-09|90|0||125",
730
			"Etc/UCT|UCT|0|0|",
731
			"Etc/UTC|UTC|0|0|",
732
			"Europe/Astrakhan|+04 +03|-40 -30|010|1N7y0 3rd0",
733
			"Europe/London|GMT BST|0 -10|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|10e6",
734
			"Europe/Chisinau|EET EEST|-20 -30|01010101010101010101010|1GNA0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|67e4",
735
			"Europe/Kaliningrad|+03 EET|-30 -20|01|1N7z0|44e4",
736
			"Europe/Volgograd|+04 +03|-40 -30|01|1N7y0|10e5",
737
			"Europe/Moscow|MSK MSK|-40 -30|01|1N7y0|16e6",
738
			"Europe/Saratov|+04 +03|-40 -30|010|1N7y0 5810",
739
			"Europe/Simferopol|EET EEST MSK MSK|-20 -30 -40 -30|0101023|1GNB0 1qM0 11A0 1o00 11z0 1nW0|33e4",
740
			"Pacific/Honolulu|HST|a0|0||37e4",
741
			"MET|MET MEST|-10 -20|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0",
742
			"Pacific/Chatham|+1345 +1245|-dJ -cJ|01010101010101010101010|1GQe0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00|600",
743
			"Pacific/Apia|+14 +13|-e0 -d0|01010101010101010101010|1GQe0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00|37e3",
744
			"Pacific/Bougainville|+10 +11|-a0 -b0|01|1NwE0|18e4",
745
			"Pacific/Fiji|+13 +12|-d0 -c0|01010101010101010101010|1Goe0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0|88e4",
746
			"Pacific/Guam|ChST|-a0|0||17e4",
747
			"Pacific/Marquesas|-0930|9u|0||86e2",
748
			"Pacific/Pago_Pago|SST|b0|0||37e2",
749
			"Pacific/Norfolk|+1130 +11|-bu -b0|01|1PoCu|25e4",
750
			"Pacific/Tongatapu|+13 +14|-d0 -e0|010|1S4d0 s00|75e3"
751
		],
752
		"links": [
753
			"Africa/Abidjan|Africa/Accra",
754
			"Africa/Abidjan|Africa/Bamako",
755
			"Africa/Abidjan|Africa/Banjul",
756
			"Africa/Abidjan|Africa/Bissau",
757
			"Africa/Abidjan|Africa/Conakry",
758
			"Africa/Abidjan|Africa/Dakar",
759
			"Africa/Abidjan|Africa/Freetown",
760
			"Africa/Abidjan|Africa/Lome",
761
			"Africa/Abidjan|Africa/Monrovia",
762
			"Africa/Abidjan|Africa/Nouakchott",
763
			"Africa/Abidjan|Africa/Ouagadougou",
764
			"Africa/Abidjan|Africa/Timbuktu",
765
			"Africa/Abidjan|America/Danmarkshavn",
766
			"Africa/Abidjan|Atlantic/Reykjavik",
767
			"Africa/Abidjan|Atlantic/St_Helena",
768
			"Africa/Abidjan|Etc/GMT",
769
			"Africa/Abidjan|Etc/GMT+0",
770
			"Africa/Abidjan|Etc/GMT-0",
771
			"Africa/Abidjan|Etc/GMT0",
772
			"Africa/Abidjan|Etc/Greenwich",
773
			"Africa/Abidjan|GMT",
774
			"Africa/Abidjan|GMT+0",
775
			"Africa/Abidjan|GMT-0",
776
			"Africa/Abidjan|GMT0",
777
			"Africa/Abidjan|Greenwich",
778
			"Africa/Abidjan|Iceland",
779
			"Africa/Algiers|Africa/Tunis",
780
			"Africa/Cairo|Egypt",
781
			"Africa/Casablanca|Africa/El_Aaiun",
782
			"Africa/Johannesburg|Africa/Maseru",
783
			"Africa/Johannesburg|Africa/Mbabane",
784
			"Africa/Lagos|Africa/Bangui",
785
			"Africa/Lagos|Africa/Brazzaville",
786
			"Africa/Lagos|Africa/Douala",
787
			"Africa/Lagos|Africa/Kinshasa",
788
			"Africa/Lagos|Africa/Libreville",
789
			"Africa/Lagos|Africa/Luanda",
790
			"Africa/Lagos|Africa/Malabo",
791
			"Africa/Lagos|Africa/Ndjamena",
792
			"Africa/Lagos|Africa/Niamey",
793
			"Africa/Lagos|Africa/Porto-Novo",
794
			"Africa/Maputo|Africa/Blantyre",
795
			"Africa/Maputo|Africa/Bujumbura",
796
			"Africa/Maputo|Africa/Gaborone",
797
			"Africa/Maputo|Africa/Harare",
798
			"Africa/Maputo|Africa/Kigali",
799
			"Africa/Maputo|Africa/Lubumbashi",
800
			"Africa/Maputo|Africa/Lusaka",
801
			"Africa/Nairobi|Africa/Addis_Ababa",
802
			"Africa/Nairobi|Africa/Asmara",
803
			"Africa/Nairobi|Africa/Asmera",
804
			"Africa/Nairobi|Africa/Dar_es_Salaam",
805
			"Africa/Nairobi|Africa/Djibouti",
806
			"Africa/Nairobi|Africa/Juba",
807
			"Africa/Nairobi|Africa/Kampala",
808
			"Africa/Nairobi|Africa/Mogadishu",
809
			"Africa/Nairobi|Indian/Antananarivo",
810
			"Africa/Nairobi|Indian/Comoro",
811
			"Africa/Nairobi|Indian/Mayotte",
812
			"Africa/Tripoli|Libya",
813
			"America/Adak|America/Atka",
814
			"America/Adak|US/Aleutian",
815
			"America/Anchorage|America/Juneau",
816
			"America/Anchorage|America/Nome",
817
			"America/Anchorage|America/Sitka",
818
			"America/Anchorage|America/Yakutat",
819
			"America/Anchorage|US/Alaska",
820
			"America/Campo_Grande|America/Cuiaba",
821
			"America/Chicago|America/Indiana/Knox",
822
			"America/Chicago|America/Indiana/Tell_City",
823
			"America/Chicago|America/Knox_IN",
824
			"America/Chicago|America/Matamoros",
825
			"America/Chicago|America/Menominee",
826
			"America/Chicago|America/North_Dakota/Beulah",
827
			"America/Chicago|America/North_Dakota/Center",
828
			"America/Chicago|America/North_Dakota/New_Salem",
829
			"America/Chicago|America/Rainy_River",
830
			"America/Chicago|America/Rankin_Inlet",
831
			"America/Chicago|America/Resolute",
832
			"America/Chicago|America/Winnipeg",
833
			"America/Chicago|CST6CDT",
834
			"America/Chicago|Canada/Central",
835
			"America/Chicago|US/Central",
836
			"America/Chicago|US/Indiana-Starke",
837
			"America/Chihuahua|America/Mazatlan",
838
			"America/Chihuahua|Mexico/BajaSur",
839
			"America/Denver|America/Boise",
840
			"America/Denver|America/Cambridge_Bay",
841
			"America/Denver|America/Edmonton",
842
			"America/Denver|America/Inuvik",
843
			"America/Denver|America/Ojinaga",
844
			"America/Denver|America/Shiprock",
845
			"America/Denver|America/Yellowknife",
846
			"America/Denver|Canada/Mountain",
847
			"America/Denver|MST7MDT",
848
			"America/Denver|Navajo",
849
			"America/Denver|US/Mountain",
850
			"America/Fortaleza|America/Argentina/Buenos_Aires",
851
			"America/Fortaleza|America/Argentina/Catamarca",
852
			"America/Fortaleza|America/Argentina/ComodRivadavia",
853
			"America/Fortaleza|America/Argentina/Cordoba",
854
			"America/Fortaleza|America/Argentina/Jujuy",
855
			"America/Fortaleza|America/Argentina/La_Rioja",
856
			"America/Fortaleza|America/Argentina/Mendoza",
857
			"America/Fortaleza|America/Argentina/Rio_Gallegos",
858
			"America/Fortaleza|America/Argentina/Salta",
859
			"America/Fortaleza|America/Argentina/San_Juan",
860
			"America/Fortaleza|America/Argentina/San_Luis",
861
			"America/Fortaleza|America/Argentina/Tucuman",
862
			"America/Fortaleza|America/Argentina/Ushuaia",
863
			"America/Fortaleza|America/Belem",
864
			"America/Fortaleza|America/Buenos_Aires",
865
			"America/Fortaleza|America/Catamarca",
866
			"America/Fortaleza|America/Cayenne",
867
			"America/Fortaleza|America/Cordoba",
868
			"America/Fortaleza|America/Jujuy",
869
			"America/Fortaleza|America/Maceio",
870
			"America/Fortaleza|America/Mendoza",
871
			"America/Fortaleza|America/Paramaribo",
872
			"America/Fortaleza|America/Recife",
873
			"America/Fortaleza|America/Rosario",
874
			"America/Fortaleza|America/Santarem",
875
			"America/Fortaleza|Antarctica/Rothera",
876
			"America/Fortaleza|Atlantic/Stanley",
877
			"America/Fortaleza|Etc/GMT+3",
878
			"America/Halifax|America/Glace_Bay",
879
			"America/Halifax|America/Goose_Bay",
880
			"America/Halifax|America/Moncton",
881
			"America/Halifax|America/Thule",
882
			"America/Halifax|Atlantic/Bermuda",
883
			"America/Halifax|Canada/Atlantic",
884
			"America/Havana|Cuba",
885
			"America/La_Paz|America/Boa_Vista",
886
			"America/La_Paz|America/Guyana",
887
			"America/La_Paz|America/Manaus",
888
			"America/La_Paz|America/Porto_Velho",
889
			"America/La_Paz|Brazil/West",
890
			"America/La_Paz|Etc/GMT+4",
891
			"America/Lima|America/Bogota",
892
			"America/Lima|America/Guayaquil",
893
			"America/Lima|Etc/GMT+5",
894
			"America/Los_Angeles|America/Dawson",
895
			"America/Los_Angeles|America/Ensenada",
896
			"America/Los_Angeles|America/Santa_Isabel",
897
			"America/Los_Angeles|America/Tijuana",
898
			"America/Los_Angeles|America/Vancouver",
899
			"America/Los_Angeles|America/Whitehorse",
900
			"America/Los_Angeles|Canada/Pacific",
901
			"America/Los_Angeles|Canada/Yukon",
902
			"America/Los_Angeles|Mexico/BajaNorte",
903
			"America/Los_Angeles|PST8PDT",
904
			"America/Los_Angeles|US/Pacific",
905
			"America/Los_Angeles|US/Pacific-New",
906
			"America/Managua|America/Belize",
907
			"America/Managua|America/Costa_Rica",
908
			"America/Managua|America/El_Salvador",
909
			"America/Managua|America/Guatemala",
910
			"America/Managua|America/Regina",
911
			"America/Managua|America/Swift_Current",
912
			"America/Managua|America/Tegucigalpa",
913
			"America/Managua|Canada/Saskatchewan",
914
			"America/Mexico_City|America/Bahia_Banderas",
915
			"America/Mexico_City|America/Merida",
916
			"America/Mexico_City|America/Monterrey",
917
			"America/Mexico_City|Mexico/General",
918
			"America/New_York|America/Detroit",
919
			"America/New_York|America/Fort_Wayne",
920
			"America/New_York|America/Indiana/Indianapolis",
921
			"America/New_York|America/Indiana/Marengo",
922
			"America/New_York|America/Indiana/Petersburg",
923
			"America/New_York|America/Indiana/Vevay",
924
			"America/New_York|America/Indiana/Vincennes",
925
			"America/New_York|America/Indiana/Winamac",
926
			"America/New_York|America/Indianapolis",
927
			"America/New_York|America/Iqaluit",
928
			"America/New_York|America/Kentucky/Louisville",
929
			"America/New_York|America/Kentucky/Monticello",
930
			"America/New_York|America/Louisville",
931
			"America/New_York|America/Montreal",
932
			"America/New_York|America/Nassau",
933
			"America/New_York|America/Nipigon",
934
			"America/New_York|America/Pangnirtung",
935
			"America/New_York|America/Thunder_Bay",
936
			"America/New_York|America/Toronto",
937
			"America/New_York|Canada/Eastern",
938
			"America/New_York|EST5EDT",
939
			"America/New_York|US/East-Indiana",
940
			"America/New_York|US/Eastern",
941
			"America/New_York|US/Michigan",
942
			"America/Noronha|Atlantic/South_Georgia",
943
			"America/Noronha|Brazil/DeNoronha",
944
			"America/Noronha|Etc/GMT+2",
945
			"America/Panama|America/Atikokan",
946
			"America/Panama|America/Cayman",
947
			"America/Panama|America/Coral_Harbour",
948
			"America/Panama|America/Jamaica",
949
			"America/Panama|EST",
950
			"America/Panama|Jamaica",
951
			"America/Phoenix|America/Creston",
952
			"America/Phoenix|America/Dawson_Creek",
953
			"America/Phoenix|America/Hermosillo",
954
			"America/Phoenix|MST",
955
			"America/Phoenix|US/Arizona",
956
			"America/Rio_Branco|America/Eirunepe",
957
			"America/Rio_Branco|America/Porto_Acre",
958
			"America/Rio_Branco|Brazil/Acre",
959
			"America/Santiago|Chile/Continental",
960
			"America/Santo_Domingo|America/Anguilla",
961
			"America/Santo_Domingo|America/Antigua",
962
			"America/Santo_Domingo|America/Aruba",
963
			"America/Santo_Domingo|America/Barbados",
964
			"America/Santo_Domingo|America/Blanc-Sablon",
965
			"America/Santo_Domingo|America/Curacao",
966
			"America/Santo_Domingo|America/Dominica",
967
			"America/Santo_Domingo|America/Grenada",
968
			"America/Santo_Domingo|America/Guadeloupe",
969
			"America/Santo_Domingo|America/Kralendijk",
970
			"America/Santo_Domingo|America/Lower_Princes",
971
			"America/Santo_Domingo|America/Marigot",
972
			"America/Santo_Domingo|America/Martinique",
973
			"America/Santo_Domingo|America/Montserrat",
974
			"America/Santo_Domingo|America/Port_of_Spain",
975
			"America/Santo_Domingo|America/Puerto_Rico",
976
			"America/Santo_Domingo|America/St_Barthelemy",
977
			"America/Santo_Domingo|America/St_Kitts",
978
			"America/Santo_Domingo|America/St_Lucia",
979
			"America/Santo_Domingo|America/St_Thomas",
980
			"America/Santo_Domingo|America/St_Vincent",
981
			"America/Santo_Domingo|America/Tortola",
982
			"America/Santo_Domingo|America/Virgin",
983
			"America/Sao_Paulo|Brazil/East",
984
			"America/St_Johns|Canada/Newfoundland",
985
			"Antarctica/Palmer|America/Punta_Arenas",
986
			"Asia/Baghdad|Antarctica/Syowa",
987
			"Asia/Baghdad|Asia/Aden",
988
			"Asia/Baghdad|Asia/Bahrain",
989
			"Asia/Baghdad|Asia/Kuwait",
990
			"Asia/Baghdad|Asia/Qatar",
991
			"Asia/Baghdad|Asia/Riyadh",
992
			"Asia/Baghdad|Etc/GMT-3",
993
			"Asia/Baghdad|Europe/Minsk",
994
			"Asia/Bangkok|Asia/Ho_Chi_Minh",
995
			"Asia/Bangkok|Asia/Novokuznetsk",
996
			"Asia/Bangkok|Asia/Phnom_Penh",
997
			"Asia/Bangkok|Asia/Saigon",
998
			"Asia/Bangkok|Asia/Vientiane",
999
			"Asia/Bangkok|Etc/GMT-7",
1000
			"Asia/Bangkok|Indian/Christmas",
1001
			"Asia/Dhaka|Antarctica/Vostok",
1002
			"Asia/Dhaka|Asia/Almaty",
1003
			"Asia/Dhaka|Asia/Bishkek",
1004
			"Asia/Dhaka|Asia/Dacca",
1005
			"Asia/Dhaka|Asia/Kashgar",
1006
			"Asia/Dhaka|Asia/Qyzylorda",
1007
			"Asia/Dhaka|Asia/Thimbu",
1008
			"Asia/Dhaka|Asia/Thimphu",
1009
			"Asia/Dhaka|Asia/Urumqi",
1010
			"Asia/Dhaka|Etc/GMT-6",
1011
			"Asia/Dhaka|Indian/Chagos",
1012
			"Asia/Dili|Etc/GMT-9",
1013
			"Asia/Dili|Pacific/Palau",
1014
			"Asia/Dubai|Asia/Muscat",
1015
			"Asia/Dubai|Asia/Tbilisi",
1016
			"Asia/Dubai|Asia/Yerevan",
1017
			"Asia/Dubai|Etc/GMT-4",
1018
			"Asia/Dubai|Europe/Samara",
1019
			"Asia/Dubai|Indian/Mahe",
1020
			"Asia/Dubai|Indian/Mauritius",
1021
			"Asia/Dubai|Indian/Reunion",
1022
			"Asia/Gaza|Asia/Hebron",
1023
			"Asia/Hong_Kong|Hongkong",
1024
			"Asia/Jakarta|Asia/Pontianak",
1025
			"Asia/Jerusalem|Asia/Tel_Aviv",
1026
			"Asia/Jerusalem|Israel",
1027
			"Asia/Kamchatka|Asia/Anadyr",
1028
			"Asia/Kamchatka|Etc/GMT-12",
1029
			"Asia/Kamchatka|Kwajalein",
1030
			"Asia/Kamchatka|Pacific/Funafuti",
1031
			"Asia/Kamchatka|Pacific/Kwajalein",
1032
			"Asia/Kamchatka|Pacific/Majuro",
1033
			"Asia/Kamchatka|Pacific/Nauru",
1034
			"Asia/Kamchatka|Pacific/Tarawa",
1035
			"Asia/Kamchatka|Pacific/Wake",
1036
			"Asia/Kamchatka|Pacific/Wallis",
1037
			"Asia/Kathmandu|Asia/Katmandu",
1038
			"Asia/Kolkata|Asia/Calcutta",
1039
			"Asia/Makassar|Asia/Ujung_Pandang",
1040
			"Asia/Manila|Asia/Brunei",
1041
			"Asia/Manila|Asia/Kuala_Lumpur",
1042
			"Asia/Manila|Asia/Kuching",
1043
			"Asia/Manila|Asia/Singapore",
1044
			"Asia/Manila|Etc/GMT-8",
1045
			"Asia/Manila|Singapore",
1046
			"Asia/Rangoon|Asia/Yangon",
1047
			"Asia/Rangoon|Indian/Cocos",
1048
			"Asia/Seoul|ROK",
1049
			"Asia/Shanghai|Asia/Chongqing",
1050
			"Asia/Shanghai|Asia/Chungking",
1051
			"Asia/Shanghai|Asia/Harbin",
1052
			"Asia/Shanghai|Asia/Macao",
1053
			"Asia/Shanghai|Asia/Macau",
1054
			"Asia/Shanghai|Asia/Taipei",
1055
			"Asia/Shanghai|PRC",
1056
			"Asia/Shanghai|ROC",
1057
			"Asia/Tashkent|Antarctica/Mawson",
1058
			"Asia/Tashkent|Asia/Aqtau",
1059
			"Asia/Tashkent|Asia/Aqtobe",
1060
			"Asia/Tashkent|Asia/Ashgabat",
1061
			"Asia/Tashkent|Asia/Ashkhabad",
1062
			"Asia/Tashkent|Asia/Atyrau",
1063
			"Asia/Tashkent|Asia/Dushanbe",
1064
			"Asia/Tashkent|Asia/Oral",
1065
			"Asia/Tashkent|Asia/Samarkand",
1066
			"Asia/Tashkent|Etc/GMT-5",
1067
			"Asia/Tashkent|Indian/Kerguelen",
1068
			"Asia/Tashkent|Indian/Maldives",
1069
			"Asia/Tehran|Iran",
1070
			"Asia/Tokyo|Japan",
1071
			"Asia/Ulaanbaatar|Asia/Choibalsan",
1072
			"Asia/Ulaanbaatar|Asia/Ulan_Bator",
1073
			"Asia/Vladivostok|Asia/Ust-Nera",
1074
			"Asia/Yakutsk|Asia/Khandyga",
1075
			"Atlantic/Azores|America/Scoresbysund",
1076
			"Atlantic/Cape_Verde|Etc/GMT+1",
1077
			"Australia/Adelaide|Australia/Broken_Hill",
1078
			"Australia/Adelaide|Australia/South",
1079
			"Australia/Adelaide|Australia/Yancowinna",
1080
			"Australia/Brisbane|Australia/Lindeman",
1081
			"Australia/Brisbane|Australia/Queensland",
1082
			"Australia/Darwin|Australia/North",
1083
			"Australia/Lord_Howe|Australia/LHI",
1084
			"Australia/Perth|Australia/West",
1085
			"Australia/Sydney|Australia/ACT",
1086
			"Australia/Sydney|Australia/Canberra",
1087
			"Australia/Sydney|Australia/Currie",
1088
			"Australia/Sydney|Australia/Hobart",
1089
			"Australia/Sydney|Australia/Melbourne",
1090
			"Australia/Sydney|Australia/NSW",
1091
			"Australia/Sydney|Australia/Tasmania",
1092
			"Australia/Sydney|Australia/Victoria",
1093
			"Etc/UCT|UCT",
1094
			"Etc/UTC|Etc/Universal",
1095
			"Etc/UTC|Etc/Zulu",
1096
			"Etc/UTC|UTC",
1097
			"Etc/UTC|Universal",
1098
			"Etc/UTC|Zulu",
1099
			"Europe/Astrakhan|Europe/Ulyanovsk",
1100
			"Europe/Athens|Asia/Nicosia",
1101
			"Europe/Athens|EET",
1102
			"Europe/Athens|Europe/Bucharest",
1103
			"Europe/Athens|Europe/Helsinki",
1104
			"Europe/Athens|Europe/Kiev",
1105
			"Europe/Athens|Europe/Mariehamn",
1106
			"Europe/Athens|Europe/Nicosia",
1107
			"Europe/Athens|Europe/Riga",
1108
			"Europe/Athens|Europe/Sofia",
1109
			"Europe/Athens|Europe/Tallinn",
1110
			"Europe/Athens|Europe/Uzhgorod",
1111
			"Europe/Athens|Europe/Vilnius",
1112
			"Europe/Athens|Europe/Zaporozhye",
1113
			"Europe/Chisinau|Europe/Tiraspol",
1114
			"Europe/Dublin|Eire",
1115
			"Europe/Istanbul|Asia/Istanbul",
1116
			"Europe/Istanbul|Turkey",
1117
			"Europe/Lisbon|Atlantic/Canary",
1118
			"Europe/Lisbon|Atlantic/Faeroe",
1119
			"Europe/Lisbon|Atlantic/Faroe",
1120
			"Europe/Lisbon|Atlantic/Madeira",
1121
			"Europe/Lisbon|Portugal",
1122
			"Europe/Lisbon|WET",
1123
			"Europe/London|Europe/Belfast",
1124
			"Europe/London|Europe/Guernsey",
1125
			"Europe/London|Europe/Isle_of_Man",
1126
			"Europe/London|Europe/Jersey",
1127
			"Europe/London|GB",
1128
			"Europe/London|GB-Eire",
1129
			"Europe/Moscow|W-SU",
1130
			"Europe/Paris|Africa/Ceuta",
1131
			"Europe/Paris|Arctic/Longyearbyen",
1132
			"Europe/Paris|Atlantic/Jan_Mayen",
1133
			"Europe/Paris|CET",
1134
			"Europe/Paris|Europe/Amsterdam",
1135
			"Europe/Paris|Europe/Andorra",
1136
			"Europe/Paris|Europe/Belgrade",
1137
			"Europe/Paris|Europe/Berlin",
1138
			"Europe/Paris|Europe/Bratislava",
1139
			"Europe/Paris|Europe/Brussels",
1140
			"Europe/Paris|Europe/Budapest",
1141
			"Europe/Paris|Europe/Busingen",
1142
			"Europe/Paris|Europe/Copenhagen",
1143
			"Europe/Paris|Europe/Gibraltar",
1144
			"Europe/Paris|Europe/Ljubljana",
1145
			"Europe/Paris|Europe/Luxembourg",
1146
			"Europe/Paris|Europe/Madrid",
1147
			"Europe/Paris|Europe/Malta",
1148
			"Europe/Paris|Europe/Monaco",
1149
			"Europe/Paris|Europe/Oslo",
1150
			"Europe/Paris|Europe/Podgorica",
1151
			"Europe/Paris|Europe/Prague",
1152
			"Europe/Paris|Europe/Rome",
1153
			"Europe/Paris|Europe/San_Marino",
1154
			"Europe/Paris|Europe/Sarajevo",
1155
			"Europe/Paris|Europe/Skopje",
1156
			"Europe/Paris|Europe/Stockholm",
1157
			"Europe/Paris|Europe/Tirane",
1158
			"Europe/Paris|Europe/Vaduz",
1159
			"Europe/Paris|Europe/Vatican",
1160
			"Europe/Paris|Europe/Vienna",
1161
			"Europe/Paris|Europe/Warsaw",
1162
			"Europe/Paris|Europe/Zagreb",
1163
			"Europe/Paris|Europe/Zurich",
1164
			"Europe/Paris|Poland",
1165
			"Europe/Volgograd|Europe/Kirov",
1166
			"Pacific/Auckland|Antarctica/McMurdo",
1167
			"Pacific/Auckland|Antarctica/South_Pole",
1168
			"Pacific/Auckland|NZ",
1169
			"Pacific/Chatham|NZ-CHAT",
1170
			"Pacific/Easter|Chile/EasterIsland",
1171
			"Pacific/Fakaofo|Etc/GMT-13",
1172
			"Pacific/Fakaofo|Pacific/Enderbury",
1173
			"Pacific/Galapagos|Etc/GMT+6",
1174
			"Pacific/Gambier|Etc/GMT+9",
1175
			"Pacific/Guadalcanal|Antarctica/Macquarie",
1176
			"Pacific/Guadalcanal|Etc/GMT-11",
1177
			"Pacific/Guadalcanal|Pacific/Efate",
1178
			"Pacific/Guadalcanal|Pacific/Kosrae",
1179
			"Pacific/Guadalcanal|Pacific/Noumea",
1180
			"Pacific/Guadalcanal|Pacific/Pohnpei",
1181
			"Pacific/Guadalcanal|Pacific/Ponape",
1182
			"Pacific/Guam|Pacific/Saipan",
1183
			"Pacific/Honolulu|HST",
1184
			"Pacific/Honolulu|Pacific/Johnston",
1185
			"Pacific/Honolulu|US/Hawaii",
1186
			"Pacific/Kiritimati|Etc/GMT-14",
1187
			"Pacific/Niue|Etc/GMT+11",
1188
			"Pacific/Pago_Pago|Pacific/Midway",
1189
			"Pacific/Pago_Pago|Pacific/Samoa",
1190
			"Pacific/Pago_Pago|US/Samoa",
1191
			"Pacific/Pitcairn|Etc/GMT+8",
1192
			"Pacific/Port_Moresby|Antarctica/DumontDUrville",
1193
			"Pacific/Port_Moresby|Etc/GMT-10",
1194
			"Pacific/Port_Moresby|Pacific/Chuuk",
1195
			"Pacific/Port_Moresby|Pacific/Truk",
1196
			"Pacific/Port_Moresby|Pacific/Yap",
1197
			"Pacific/Tahiti|Etc/GMT+10",
1198
			"Pacific/Tahiti|Pacific/Rarotonga"
1199
		]
1200
	});
1201
 
1202
 
1203
	return moment;
1204
}));