Changes On Branch bug-16828b3744
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Changes In Branch bug-16828b3744 Excluding Merge-Ins

This is equivalent to a diff from 840e5d4825 to 3da2ce641b

2016-06-16
16:38
[16828b3744] [vwait] *must* successfully undo its variable trace, or else it risks corrupting memory... check-in: fac5b3732e user: dgp tags: core-8-6-branch
16:27
Merge tip of core-8-6-branch Closed-Leaf check-in: 3da2ce641b user: dgp tags: bug-16828b3744
16:14
Correct the patch. check-in: 333574afba user: dgp tags: bug-16828b3744
2016-06-14
09:57
Fix [7393be0be6e7f91cbb2016fa777896e3895929e3|7393be0be6]: Tcl Thread library doesn't work in Debug ... check-in: 5ed3db2343 user: jan.nijtmans tags: core-8-6-branch
2016-03-03
19:45
Bump trunk to 8.7a0 to accept new feature development. check-in: 4def3fa682 user: dgp tags: trunk
19:29
Open branch for continued 8.6.* patching. check-in: 6e1ff473d8 user: dgp tags: core-8-6-branch
08:34
merge trunk check-in: 00229de885 user: gahr tags: gahr-bug-5f71353740, tip-444
2016-03-02
15:29
[bbc304f61a] Proposed fix for reflected watch race condition. Closed-Leaf check-in: 5057f650ba user: dgp tags: bug-bbc304f61a
15:10
merge trunk check-in: 24900c193e user: jan.nijtmans tags: zipfs
09:32
merge trunk check-in: ada65114d8 user: jan.nijtmans tags: tip-439, semver
09:06
Merge trunk check-in: f547a7f8c4 user: jan.nijtmans tags: novem
08:49
Eliminate exess spacings in many doc pages. check-in: 840e5d4825 user: jan.nijtmans tags: trunk
2016-03-01
16:45
[80304238ac] Prevent RC cycle in the localVarName objtype. check-in: 7070d2aa22 user: dgp tags: trunk

Changes to doc/tcltest.n.
868
869
870
871
872
873
874
875
876


877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892










893
894
895
896
897
898
899
868
869
870
871
872
873
874


875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909







-
-
+
+
















+
+
+
+
+
+
+
+
+
+







harness are doing.
.RE
.TP
\fB\-verbose \fIlevel\fR
.
Sets the type of output verbosity desired to \fIlevel\fR,
a list of zero or more of the elements \fBbody\fR, \fBpass\fR,
\fBskip\fR, \fBstart\fR, \fBerror\fR and \fBline\fR.  Default value
is
\fBskip\fR, \fBstart\fR, \fBerror\fR, \fBline\fR, \fBmsec\fR and \fBusec\fR.
Default value is
.QW "\fBbody error\fR" .
Levels are defined as:
.RS
.IP "body (\fBb\fR)"
Display the body of failed tests
.IP "pass (\fBp\fR)"
Print output when a test passes
.IP "skip (\fBs\fR)"
Print output when a test is skipped
.IP "start (\fBt\fR)"
Print output whenever a test starts
.IP "error (\fBe\fR)"
Print errorInfo and errorCode, if they exist, when a test return code
does not match its expected return code
.IP "line (\fBl\fR)"
Print source file line information of failed tests
.IP "msec (\fBm\fR)"
Print each test's execution time in milliseconds
.IP "usec (\fBu\fR)"
Print each test's execution time in microseconds
.PP
Note that the \fBmsec\fR and \fBusec\fR verbosity levels are provided as
indicative measures only. They do not tackle the problem of repeatibility which
should be considered in performance tests or benchmarks. To use these verbosity
levels to thoroughly track performance degradations, consider wrapping your
test bodies with \fBtime\fR commands.
.PP
The single letter abbreviations noted above are also recognized
so that
.QW "\fBconfigure \-verbose pt\fR"
is the same as
.QW "\fBconfigure \-verbose {pass start}\fR" .
.RE
Changes to generic/regc_lex.c.
252
253
254
255
256
257
258













259
260
261
262

263
264
265
266
267

268
269
270
271
272

273
274
275
276
277
278
279
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274

275
276
277
278
279

280
281
282
283
284

285
286
287
288
289
290
291
292







+
+
+
+
+
+
+
+
+
+
+
+
+



-
+




-
+




-
+







    CHR(':'), CHR(']'), CHR(']')
};
static const chr brbacks[] = {	/* \s within brackets */
    CHR('['), CHR(':'),
    CHR('s'), CHR('p'), CHR('a'), CHR('c'), CHR('e'),
    CHR(':'), CHR(']')
};

#define PUNCT_CONN \
	CHR('_'), \
	0x203f /* UNDERTIE */, \
	0x2040 /* CHARACTER TIE */,\
	0x2054 /* INVERTED UNDERTIE */,\
	0xfe33 /* PRESENTATION FORM FOR VERTICAL LOW LINE */, \
	0xfe34 /* PRESENTATION FORM FOR VERTICAL WAVY LOW LINE */, \
	0xfe4d /* DASHED LOW LINE */, \
	0xfe4e /* CENTRELINE LOW LINE */, \
	0xfe4f /* WAVY LOW LINE */, \
	0xff3f /* FULLWIDTH LOW LINE */

static const chr backw[] = {	/* \w */
    CHR('['), CHR('['), CHR(':'),
    CHR('a'), CHR('l'), CHR('n'), CHR('u'), CHR('m'),
    CHR(':'), CHR(']'), CHR('_'), CHR(']')
    CHR(':'), CHR(']'), PUNCT_CONN, CHR(']')
};
static const chr backW[] = {	/* \W */
    CHR('['), CHR('^'), CHR('['), CHR(':'),
    CHR('a'), CHR('l'), CHR('n'), CHR('u'), CHR('m'),
    CHR(':'), CHR(']'), CHR('_'), CHR(']')
    CHR(':'), CHR(']'), PUNCT_CONN, CHR(']')
};
static const chr brbackw[] = {	/* \w within brackets */
    CHR('['), CHR(':'),
    CHR('a'), CHR('l'), CHR('n'), CHR('u'), CHR('m'),
    CHR(':'), CHR(']'), CHR('_')
    CHR(':'), CHR(']'), PUNCT_CONN
};

/*
 - lexword - interpolate a bracket expression for word characters
 * Possibly ought to inquire whether there is a "word" character class.
 ^ static void lexword(struct vars *);
 */
Changes to generic/tclAssembly.c.
3980
3981
3982
3983
3984
3985
3986

3987
3988
3989
3990





3991
3992
3993
3994
3995
3996
3997
3980
3981
3982
3983
3984
3985
3986
3987




3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999







+
-
-
-
-
+
+
+
+
+







    /*
     * Unstack any catches that are deeper than the nesting level of the basic
     * block being entered.
     */

    while (catchDepth > bbPtr->catchDepth) {
	--catchDepth;
	if (catches[catchDepth] != NULL) {
	range = envPtr->exceptArrayPtr + catchIndices[catchDepth];
	range->numCodeBytes = bbPtr->startOffset - range->codeOffset;
	catches[catchDepth] = NULL;
	catchIndices[catchDepth] = -1;
	    range = envPtr->exceptArrayPtr + catchIndices[catchDepth];
	    range->numCodeBytes = bbPtr->startOffset - range->codeOffset;
	    catches[catchDepth] = NULL;
	    catchIndices[catchDepth] = -1;
	}
    }

    /*
     * Unstack any catches that don't match the basic block being entered,
     * either because they are no longer part of the context, or because the
     * context has changed from INCATCH to CAUGHT.
     */
Changes to generic/tclCmdIL.c.
2751
2752
2753
2754
2755
2756
2757
2758

2759
2760
2761
2762
2763
2764
2765
2751
2752
2753
2754
2755
2756
2757

2758
2759
2760
2761
2762
2763
2764
2765







-
+







    /*
     * Complain if the user asked for a start element that is greater than the
     * list length. This won't ever trigger for the "end-*" case as that will
     * be properly constrained by TclGetIntForIndex because we use listLen-1
     * (to allow for replacing the last elem).
     */

    if ((first >= listLen) && (listLen > 0)) {
    if ((first > listLen) && (listLen > 0)) {
	Tcl_SetObjResult(interp, Tcl_ObjPrintf(
		"list doesn't contain element %s", TclGetString(objv[2])));
	Tcl_SetErrorCode(interp, "TCL", "OPERATION", "LREPLACE", "BADIDX",
		NULL);
	return TCL_ERROR;
    }
    if (last >= listLen) {
Changes to generic/tclCompCmdsGR.c.
1484
1485
1486
1487
1488
1489
1490



















1491
1492


1493
1494
1495
1496
1497
1498
1499
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509


1510
1511
1512
1513
1514
1515
1516
1517
1518







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+







    }

    tokenPtr = TokenAfter(tokenPtr);
    if (GetIndexFromToken(tokenPtr, &idx2) != TCL_OK) {
	return TCL_ERROR;
    }

    /*
     * idx1, idx2 are now in canonical form:
     *
     *  - integer:	[0,len+1]
     *  - end index:    INDEX_END
     *  - -ive offset:  INDEX_END-[len-1,0]
     *  - +ive offset:  INDEX_END+1
     */

    /*
     * Compilation fails when one index is end-based but the other isn't.
     * Fixing this will require more bytecodes, but this is a workaround for
     * now. [Bug 47ac84309b]
     */

    if ((idx1 <= INDEX_END) != (idx2 <= INDEX_END)) {
	return TCL_ERROR;
    }

    if(idx2 != INDEX_END && idx2 >= 0 && idx2 < idx1) {
	idx2 = idx1-1;
    if (idx2 != INDEX_END && idx2 >= 0 && idx2 < idx1) {
	idx2 = idx1 - 1;
    }

    /*
     * Work out what this [lreplace] is actually doing.
     */

    tmpObj = NULL;
1507
1508
1509
1510
1511
1512
1513



1514
1515
1516
1517
1518
1519
1520
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542







+
+
+







	    idx2 = INDEX_END;
	    goto dropEnd;
	} else if (idx2 == INDEX_END) {
	    idx2 = idx1 - 1;
	    idx1 = 0;
	    goto dropEnd;
	} else {
	    if (idx2 < idx1) {
		idx2 = idx1 - 1;
	    }
	    if (idx1 > 0) {
		tmpObj = Tcl_NewIntObj(idx1);
		Tcl_IncrRefCount(tmpObj);
	    }
	    goto dropRange;
	}
    }
1534
1535
1536
1537
1538
1539
1540
1541

1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559

1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571




1572
1573
1574
1575

1576
1577





1578
1579
1580
1581
1582
1583
1584
1556
1557
1558
1559
1560
1561
1562

1563


1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578

1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598

1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613







-
+
-
-















-
+












+
+
+
+



-
+


+
+
+
+
+







	idx2 = INDEX_END;
	goto replaceHead;
    } else if (idx2 == INDEX_END) {
	idx2 = idx1 - 1;
	idx1 = 0;
	goto replaceTail;
    } else {
	if (idx1 > 0 && idx2 > 0 && idx2 < idx1) {
	if (idx2 < idx1) {
	    idx2 = idx1 - 1;
	} else if (idx1 < 0 && idx2 < 0 && idx2 < idx1) {
	    idx2 = idx1 - 1;
	}
	if (idx1 > 0) {
	    tmpObj = Tcl_NewIntObj(idx1);
	    Tcl_IncrRefCount(tmpObj);
	}
	goto replaceRange;
    }

    /*
     * Issue instructions to perform the operations relating to configurations
     * that just drop. The only argument pushed on the stack is the list to
     * operate on.
     */

  dropAll:
  dropAll:			/* This just ensures the arg is a list. */
    TclEmitOpcode(		INST_LIST_LENGTH,		envPtr);
    TclEmitOpcode(		INST_POP,			envPtr);
    PushStringLiteral(envPtr,	"");
    goto done;

  dropEnd:
    TclEmitInstInt4(		INST_LIST_RANGE_IMM, idx1,	envPtr);
    TclEmitInt4(			idx2,			envPtr);
    goto done;

  dropRange:
    if (tmpObj != NULL) {
	/*
	 * Emit bytecode to check the list length.
	 */

	TclEmitOpcode(		INST_DUP,			envPtr);
	TclEmitOpcode(		INST_LIST_LENGTH,		envPtr);
	TclEmitPush(TclAddLiteralObj(envPtr, tmpObj, NULL),	envPtr);
	TclEmitOpcode(		INST_GT,			envPtr);
	TclEmitOpcode(		INST_GE,			envPtr);
	offset = CurrentOffset(envPtr);
	TclEmitInstInt1(	INST_JUMP_TRUE1, 0,		envPtr);

	/*
	 * Emit an error if we've been given an empty list.
	 */

	TclEmitOpcode(		INST_DUP,			envPtr);
	TclEmitOpcode(		INST_LIST_LENGTH,		envPtr);
	offset2 = CurrentOffset(envPtr);
	TclEmitInstInt1(	INST_JUMP_FALSE1, 0,		envPtr);
	TclEmitPush(TclAddLiteralObj(envPtr, Tcl_ObjPrintf(
		"list doesn't contain element %d", idx1), NULL), envPtr);
	CompileReturnInternal(envPtr, INST_RETURN_IMM, TCL_ERROR, 0,
1621
1622
1623
1624
1625
1626
1627




1628
1629





1630
1631

1632
1633





1634
1635
1636
1637

1638
1639
1640
1641
1642
1643
1644
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668

1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679

1680
1681
1682
1683
1684
1685
1686
1687







+
+
+
+


+
+
+
+
+

-
+


+
+
+
+
+



-
+







    TclEmitInt4(			idx2,			envPtr);
    TclEmitInstInt4(		INST_REVERSE, 2,		envPtr);
    TclEmitOpcode(		INST_LIST_CONCAT,		envPtr);
    goto done;

  replaceRange:
    if (tmpObj != NULL) {
	/*
	 * Emit bytecode to check the list length.
	 */

	TclEmitOpcode(		INST_DUP,			envPtr);
	TclEmitOpcode(		INST_LIST_LENGTH,		envPtr);

	/*
	 * Check the list length vs idx1.
	 */

	TclEmitPush(TclAddLiteralObj(envPtr, tmpObj, NULL),	envPtr);
	TclEmitOpcode(		INST_GT,			envPtr);
	TclEmitOpcode(		INST_GE,			envPtr);
	offset = CurrentOffset(envPtr);
	TclEmitInstInt1(	INST_JUMP_TRUE1, 0,		envPtr);

	/*
	 * Emit an error if we've been given an empty list.
	 */

	TclEmitOpcode(		INST_DUP,			envPtr);
	TclEmitOpcode(		INST_LIST_LENGTH,		envPtr);
	offset2 = CurrentOffset(envPtr);
	TclEmitInstInt1(	INST_JUMP_TRUE1, 0,		envPtr);
	TclEmitInstInt1(	INST_JUMP_FALSE1, 0,		envPtr);
	TclEmitPush(TclAddLiteralObj(envPtr, Tcl_ObjPrintf(
		"list doesn't contain element %d", idx1), NULL), envPtr);
	CompileReturnInternal(envPtr, INST_RETURN_IMM, TCL_ERROR, 0,
		Tcl_ObjPrintf("-errorcode {TCL OPERATION LREPLACE BADIDX}"));
	TclStoreInt1AtPtr(CurrentOffset(envPtr) - offset,
		envPtr->codeStart + offset + 1);
	TclStoreInt1AtPtr(CurrentOffset(envPtr) - offset2,
2962
2963
2964
2965
2966
2967
2968
2969


2970
2971
2972

2973
2974
2975
2976
2977
2978
2979
3005
3006
3007
3008
3009
3010
3011

3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024







-
+
+



+







    TclNewObj(tailPtr);
    if (TclWordKnownAtCompileTime(varTokenPtr, tailPtr)) {
	full = 1;
	lastTokenPtr = varTokenPtr;
    } else {
	full = 0;
	lastTokenPtr = varTokenPtr + n;
	if (!TclWordKnownAtCompileTime(lastTokenPtr, tailPtr)) {

	if (lastTokenPtr->type != TCL_TOKEN_TEXT) {
	    Tcl_DecrRefCount(tailPtr);
	    return -1;
	}
	Tcl_SetStringObj(tailPtr, lastTokenPtr->start, lastTokenPtr->size);
    }

    tailName = TclGetStringFromObj(tailPtr, &len);

    if (len) {
	if (*(tailName+len-1) == ')') {
	    /*
Changes to generic/tclCompCmdsSZ.c.
2024
2025
2026
2027
2028
2029
2030
2031

2032
2033
2034
2035
2036
2037
2038
2024
2025
2026
2027
2028
2029
2030

2031
2032
2033
2034
2035
2036
2037
2038







-
+







				 * items. */
    int **bodyContLines)	/* Array of continuation line info. */
{
    enum {Switch_Exact, Switch_Glob, Switch_Regexp};
    int foundDefault;		/* Flag to indicate whether a "default" clause
				 * is present. */
    JumpFixup *fixupArray;	/* Array of forward-jump fixup records. */
    int *fixupTargetArray;	/* Array of places for fixups to point at. */
    unsigned int *fixupTargetArray; /* Array of places for fixups to point at. */
    int fixupCount;		/* Number of places to fix up. */
    int contFixIndex;		/* Where the first of the jumps due to a group
				 * of continuation bodies starts, or -1 if
				 * there aren't any. */
    int contFixCount;		/* Number of continuation bodies pointing to
				 * the current (or next) real body. */
    int nextArmFixupIndex;
Changes to generic/tclCompExpr.c.
560
561
562
563
564
565
566
567

568
569
570
571
572
573

574
575
576
577
578
579
580
560
561
562
563
564
565
566

567
568
569
570
571
572

573
574
575
576
577
578
579
580







-
+





-
+







				 * aim is just a parse, or whether it will go
				 * on to compile the expression. Different
				 * optimizations are appropriate for the two
				 * scenarios. */
{
    OpNode *nodes = NULL;	/* Pointer to the OpNode storage array where
				 * we build the parse tree. */
    int nodesAvailable = 64;	/* Initial size of the storage array. This
    unsigned int nodesAvailable = 64; /* Initial size of the storage array. This
				 * value establishes a minimum tree memory
				 * cost of only about 1 kibyte, and is large
				 * enough for most expressions to parse with
				 * no need for array growth and
				 * reallocation. */
    int nodesUsed = 0;		/* Number of OpNodes filled. */
    unsigned int nodesUsed = 0;	/* Number of OpNodes filled. */
    int scanned = 0;		/* Capture number of byte scanned by parsing
				 * routines. */
    int lastParsed;		/* Stores info about what the lexeme parsed
				 * the previous pass through the parsing loop
				 * was. If it was an operator, lastParsed is
				 * the index of the OpNode for that operator.
				 * If it was not an operator, lastParsed holds
658
659
660
661
662
663
664
665

666
667
668
669
670
671
672
658
659
660
661
662
663
664

665
666
667
668
669
670
671
672







-
+








	/*
	 * Each pass through this loop adds up to one more OpNode. Allocate
	 * space for one if required.
	 */

	if (nodesUsed >= nodesAvailable) {
	    int size = nodesUsed * 2;
	    unsigned int size = nodesUsed * 2;
	    OpNode *newPtr = NULL;

	    do {
	      if (size <= UINT_MAX/sizeof(OpNode)) {
		newPtr = attemptckrealloc(nodes, size * sizeof(OpNode));
	      }
	    } while ((newPtr == NULL)
Changes to generic/tclCompile.c.
3356
3357
3358
3359
3360
3361
3362
3363


3364
3365
3366


3367
3368
3369
3370
3371
3372
3373
3374
3375




3376
3377
3378


3379
3380
3381
3382

3383
3384
3385
3386
3387
3388
3389
3356
3357
3358
3359
3360
3361
3362

3363
3364
3365


3366
3367
3368
3369
3370
3371
3372
3373



3374
3375
3376
3377



3378
3379


3380

3381
3382
3383
3384
3385
3386
3387
3388







-
+
+

-
-
+
+






-
-
-
+
+
+
+
-
-
-
+
+
-
-

-
+








ExceptionRange *
TclGetInnermostExceptionRange(
    CompileEnv *envPtr,
    int returnCode,
    ExceptionAux **auxPtrPtr)
{
    int exnIdx = -1, i;
    int i = envPtr->exceptArrayNext;
    ExceptionRange *rangePtr = envPtr->exceptArrayPtr + i;

    for (i=0 ; i<envPtr->exceptArrayNext ; i++) {
	ExceptionRange *rangePtr = &envPtr->exceptArrayPtr[i];
    while (i > 0) {
	rangePtr--; i--;

	if (CurrentOffset(envPtr) >= rangePtr->codeOffset &&
		(rangePtr->numCodeBytes == -1 || CurrentOffset(envPtr) <
			rangePtr->codeOffset+rangePtr->numCodeBytes) &&
		(returnCode != TCL_CONTINUE ||
			envPtr->exceptAuxArrayPtr[i].supportsContinue)) {
	    exnIdx = i;
	}
    }

	    if (auxPtrPtr) {
		*auxPtrPtr = envPtr->exceptAuxArrayPtr + i;
	    }
    if (exnIdx == -1) {
	return NULL;
    }
	    return rangePtr;
	}
    if (auxPtrPtr) {
	*auxPtrPtr = &envPtr->exceptAuxArrayPtr[exnIdx];
    }
    return &envPtr->exceptArrayPtr[exnIdx];
    return NULL;
}

/*
 * ---------------------------------------------------------------------
 *
 * TclAddLoopBreakFixup, TclAddLoopContinueFixup --
 *
Changes to generic/tclCompile.h.
131
132
133
134
135
136
137
138

139
140
141
142
143
144
145
146
147
148

149
150
151
152
153
154
155
131
132
133
134
135
136
137

138
139
140
141
142
143
144
145
146
147

148
149
150
151
152
153
154
155







-
+









-
+







				 * expansion within the loop. Not meaningful
				 * if there are no open expansions between the
				 * looping level and the point of jump
				 * issue. */
    int numBreakTargets;	/* The number of [break]s that want to be
				 * targeted to the place where this loop
				 * exception will be bound to. */
    int *breakTargets;		/* The offsets of the INST_JUMP4 instructions
    unsigned int *breakTargets;	/* The offsets of the INST_JUMP4 instructions
				 * issued by the [break]s that we must
				 * update. Note that resizing a jump (via
				 * TclFixupForwardJump) can cause the contents
				 * of this array to be updated. When
				 * numBreakTargets==0, this is NULL. */
    int allocBreakTargets;	/* The size of the breakTargets array. */
    int numContinueTargets;	/* The number of [continue]s that want to be
				 * targeted to the place where this loop
				 * exception will be bound to. */
    int *continueTargets;	/* The offsets of the INST_JUMP4 instructions
    unsigned int *continueTargets; /* The offsets of the INST_JUMP4 instructions
				 * issued by the [continue]s that we must
				 * update. Note that resizing a jump (via
				 * TclFixupForwardJump) can cause the contents
				 * of this array to be updated. When
				 * numContinueTargets==0, this is NULL. */
    int allocContinueTargets;	/* The size of the continueTargets array. */
} ExceptionAux;
924
925
926
927
928
929
930
931

932
933
934
935
936
937
938
924
925
926
927
928
929
930

931
932
933
934
935
936
937
938







-
+







    TCL_UNCONDITIONAL_JUMP,
    TCL_TRUE_JUMP,
    TCL_FALSE_JUMP
} TclJumpType;

typedef struct JumpFixup {
    TclJumpType jumpType;	/* Indicates the kind of jump. */
    int codeOffset;		/* Offset of the first byte of the one-byte
    unsigned int codeOffset;	/* Offset of the first byte of the one-byte
				 * forward jump's code. */
    int cmdIndex;		/* Index of the first command after the one
				 * for which the jump was emitted. Used to
				 * update the code offsets for subsequent
				 * commands if the two-byte jump at jumpPc
				 * must be replaced with a five-byte one. */
    int exceptIndex;		/* Index of the first range entry in the
Changes to generic/tclDate.c.
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369

370
371
372
373
374
375
376
355
356
357
358
359
360
361






362

363
364
365
366
367
368
369
370







-
-
-
-
-
-

-
+







#else
typedef short int yytype_int16;
#endif

#ifndef YYSIZE_T
# ifdef __SIZE_TYPE__
#  define YYSIZE_T __SIZE_TYPE__
# elif defined size_t
#  define YYSIZE_T size_t
# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
     || defined __cplusplus || defined _MSC_VER)
#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
#  define YYSIZE_T size_t
# else
#  define YYSIZE_T unsigned int
#  define YYSIZE_T size_t
# endif
#endif

#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)

#ifndef YY_
# if YYENABLE_NLS
Changes to generic/tclEnsemble.c.
3078
3079
3080
3081
3082
3083
3084





3085
3086
3087
3088
3089
3090
3091
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096







+
+
+
+
+







    Command *cmdPtr,
    CompileEnv *envPtr)		/* Holds resulting instructions. */
{
    int result, i;
    Tcl_Token *saveTokenPtr = parsePtr->tokenPtr;
    int savedStackDepth = envPtr->currStackDepth;
    unsigned savedCodeNext = envPtr->codeNext - envPtr->codeStart;
    int savedAuxDataArrayNext = envPtr->auxDataArrayNext;
    int savedExceptArrayNext = envPtr->exceptArrayNext;
#ifdef TCL_COMPILE_DEBUG
    int savedExceptDepth = envPtr->exceptDepth;
#endif
    DefineLineInformation;

    if (cmdPtr->compileProc == NULL) {
	return TCL_ERROR;
    }

    /*
3125
3126
3127
3128
3129
3130
3131
3132






3133
































3134
3135
3136
3137
3138
3139
3140
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183








+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







    parsePtr->tokenPtr = saveTokenPtr;

    /*
     * If our target failed to compile, revert any data from failed partial
     * compiles.  Note that envPtr->numCommands need not be checked because
     * we avoid compiling subcommands that recursively call TclCompileScript().
     */

#ifdef TCL_COMPILE_DEBUG
    if (envPtr->exceptDepth != savedExceptDepth) {
	Tcl_Panic("ExceptionRange Starts and Ends do not balance");
    }
#endif

    if (result != TCL_OK) {
	ExceptionAux *auxPtr = envPtr->exceptAuxArrayPtr;

	for (i = 0; i < savedExceptArrayNext; i++) {
	    while (auxPtr->numBreakTargets > 0
		    && auxPtr->breakTargets[auxPtr->numBreakTargets - 1]
		    >= savedCodeNext) {
		auxPtr->numBreakTargets--;
	    }
	    while (auxPtr->numContinueTargets > 0
		    && auxPtr->continueTargets[auxPtr->numContinueTargets - 1]
		    >= savedCodeNext) {
		auxPtr->numContinueTargets--;
	    }
	    auxPtr++;
	}
	envPtr->exceptArrayNext = savedExceptArrayNext;

	if (savedAuxDataArrayNext != envPtr->auxDataArrayNext) {
	    AuxData *auxDataPtr = envPtr->auxDataArrayPtr;
	    AuxData *auxDataEnd = auxDataPtr;

	    auxDataPtr += savedAuxDataArrayNext;
	    auxDataEnd += envPtr->auxDataArrayNext;

	    while (auxDataPtr < auxDataEnd) {
		if (auxDataPtr->type->freeProc != NULL) {
		    auxDataPtr->type->freeProc(auxDataPtr->clientData);
		}
		auxDataPtr++;
	    }
	    envPtr->auxDataArrayNext = savedAuxDataArrayNext;
	}
	envPtr->currStackDepth = savedStackDepth;
	envPtr->codeNext = envPtr->codeStart + savedCodeNext;
#ifdef TCL_COMPILE_DEBUG
    } else {
	/*
	 * Confirm that the command compiler generated a single value on
	 * the stack as its result. This is only done in debugging mode,
Changes to generic/tclEvent.c.
1458
1459
1460
1461
1462
1463
1464


1465
1466
1467
1468
1469
1470
1471
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473







+
+







    const char *name1,		/* Name of variable. */
    const char *name2,		/* Second part of variable name. */
    int flags)			/* Information about what happened. */
{
    int *donePtr = clientData;

    *donePtr = 1;
    Tcl_UntraceVar(interp, name1, TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
	    VwaitVarProc, clientData);
    return NULL;
}

/*
 *----------------------------------------------------------------------
 *
 * Tcl_UpdateObjCmd --
Changes to generic/tclExecute.c.
15
16
17
18
19
20
21

22
23
24
25
26
27
28
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29







+







 * this file, and for a DISCLAIMER OF ALL WARRANTIES.
 */

#include "tclInt.h"
#include "tclCompile.h"
#include "tclOOInt.h"
#include "tommath.h"
#include "tclStringRep.h"
#include <math.h>
#include <assert.h>

/*
 * Hack to determine whether we may expect IEEE floating point. The hack is
 * formally incorrect in that non-IEEE platforms might have the same precision
 * and range, but VAX, IBM, and Cray do not; are there any other floating
5733
5734
5735
5736
5737
5738
5739










5740
5741
5742
5743
5744
5745
5746
5747
5748
5749
5750
5751
5752

5753
5754
5755
5756
5757
5758
5759
5760
5761
5762
5763
5764
5765
5766
5767
5768
5769
5770
5771
5772
5773
5774
5775
5776
5777
5778
5779

5780
5781
5782
5783
5784
5785
5786
5787
5788
5789
5790
5791
5792
5793
5794
5795
5796
5734
5735
5736
5737
5738
5739
5740
5741
5742
5743
5744
5745
5746
5747
5748
5749
5750
5751
5752
5753
5754
5755
5756
5757
5758
5759
5760
5761
5762

5763










5764
5765
5766
5767
5768
5769
5770
5771
5772
5773
5774
5775
5776
5777
5778
5779

5780










5781
5782
5783
5784
5785
5786
5787







+
+
+
+
+
+
+
+
+
+












-
+
-
-
-
-
-
-
-
-
-
-
















-
+
-
-
-
-
-
-
-
-
-
-







	 * characters being replaced is the same as the number of characters
	 * in the string to be inserted.
	 */

	if (length3 - 1 == toIdx - fromIdx) {
	    unsigned char *bytes1, *bytes2;

	    /*
	     * Flush the info in the string internal rep that refers to the
	     * about-to-be-invalidated UTF-8 rep. This indicates that a new
	     * buffer needs to be allocated, and assumes that the value is
	     * already of tclStringTypePtr type, which should be true provided
	     * we call it after Tcl_GetUnicodeFromObj.
	     */
#define MarkStringInternalRepForFlush(objPtr) \
	    (GET_STRING(objPtr)->allocated = 0)

	    if (Tcl_IsShared(valuePtr)) {
		objResultPtr = Tcl_DuplicateObj(valuePtr);
		if (TclIsPureByteArray(objResultPtr)
			&& TclIsPureByteArray(value3Ptr)) {
		    bytes1 = Tcl_GetByteArrayFromObj(objResultPtr, NULL);
		    bytes2 = Tcl_GetByteArrayFromObj(value3Ptr, NULL);
		    memcpy(bytes1 + fromIdx, bytes2, length3);
		} else {
		    ustring1 = Tcl_GetUnicodeFromObj(objResultPtr, NULL);
		    ustring2 = Tcl_GetUnicodeFromObj(value3Ptr, NULL);
		    memcpy(ustring1 + fromIdx, ustring2,
			    length3 * sizeof(Tcl_UniChar));

		    MarkStringInternalRepForFlush(objResultPtr);
		    /*
		     * Magic! Flush the info in the string internal rep that
		     * refers to the about-to-be-invalidated UTF-8 rep. This
		     * sets the 'allocated' field of the String structure to 0
		     * to indicate that a new buffer needs to be allocated.
		     * This is safe; we know we've got a tclStringTypePtr set
		     * at this point (post Tcl_GetUnicodeFromObj).
		     */

		    ((int *) objResultPtr->internalRep.twoPtrValue.ptr1)[1] = 0;
		}
		Tcl_InvalidateStringRep(objResultPtr);
		TclDecrRefCount(value3Ptr);
		TRACE_APPEND(("\"%.30s\"\n", O2S(objResultPtr)));
		NEXT_INST_F(1, 1, 1);
	    } else {
		if (TclIsPureByteArray(valuePtr)
			&& TclIsPureByteArray(value3Ptr)) {
		    bytes1 = Tcl_GetByteArrayFromObj(valuePtr, NULL);
		    bytes2 = Tcl_GetByteArrayFromObj(value3Ptr, NULL);
		    memcpy(bytes1 + fromIdx, bytes2, length3);
		} else {
		    ustring1 = Tcl_GetUnicodeFromObj(valuePtr, NULL);
		    ustring2 = Tcl_GetUnicodeFromObj(value3Ptr, NULL);
		    memcpy(ustring1 + fromIdx, ustring2,
			    length3 * sizeof(Tcl_UniChar));

		    MarkStringInternalRepForFlush(valuePtr);
		    /*
		     * Magic! Flush the info in the string internal rep that
		     * refers to the about-to-be-invalidated UTF-8 rep. This
		     * sets the 'allocated' field of the String structure to 0
		     * to indicate that a new buffer needs to be allocated.
		     * This is safe; we know we've got a tclStringTypePtr set
		     * at this point (post Tcl_GetUnicodeFromObj).
		     */

		    ((int *) objResultPtr->internalRep.twoPtrValue.ptr1)[1] = 0;
		}
		Tcl_InvalidateStringRep(valuePtr);
		TclDecrRefCount(value3Ptr);
		TRACE_APPEND(("\"%.30s\"\n", O2S(valuePtr)));
		NEXT_INST_F(1, 0, 0);
	    }
	}
Changes to generic/tclIORChan.c.
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1605
1606
1607
1608
1609
1610
1611


1612
1613
1614
1615
1616
1617
1618







-
-







	/*
	 * Same old, same old, why should we do something?
	 */

	return;
    }

    rcPtr->interest = mask;

    /*
     * Are we in the correct thread?
     */

#ifdef TCL_THREADS
    if (rcPtr->thread != Tcl_GetCurrentThread()) {
	ForwardParam p;
1629
1630
1631
1632
1633
1634
1635

1636
1637
1638
1639
1640
1641
1642
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641







+








	return;
    }
#endif

    Tcl_Preserve(rcPtr);

    rcPtr->interest = mask;
    maskObj = DecodeEventMask(mask);
    /* assert maskObj.refCount == 1 */
    (void) InvokeTclMethod(rcPtr, METH_WATCH, maskObj, NULL, NULL);
    Tcl_DecrRefCount(maskObj);

    Tcl_Release(rcPtr);
}
3079
3080
3081
3082
3083
3084
3085

3086
3087
3088
3089
3090
3091
3092
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092







+







    }

    case ForwardedWatch: {
	Tcl_Obj *maskObj = DecodeEventMask(paramPtr->watch.mask);
        /* assert maskObj.refCount == 1 */

        Tcl_Preserve(rcPtr);
	rcPtr->interest = paramPtr->watch.mask;
	(void) InvokeTclMethod(rcPtr, METH_WATCH, maskObj, NULL, NULL);
	Tcl_DecrRefCount(maskObj);
        Tcl_Release(rcPtr);
	break;
    }

    case ForwardedBlock: {
Changes to generic/tclInt.h.
44
45
46
47
48
49
50
51


52
53
54
55
56
57
58
44
45
46
47
48
49
50

51
52
53
54
55
56
57
58
59







-
+
+







#   include <stdlib.h>
#endif
#ifdef NO_STRING_H
#include "../compat/string.h"
#else
#include <string.h>
#endif
#ifdef STDC_HEADERS
#if defined(STDC_HEADERS) || defined(__STDC__) || defined(__C99__FUNC__) \
     || defined(__cplusplus) || defined(_MSC_VER)
#include <stddef.h>
#else
typedef int ptrdiff_t;
#endif

/*
 * Ensure WORDS_BIGENDIAN is defined correctly:
Changes to generic/tclInterp.c.
719
720
721
722
723
724
725
726

727
728
729
730
731
732
733
719
720
721
722
723
724
725

726
727
728
729
730
731
732
733







-
+







	    case OPT_LAST:
		i++;
		goto endOfForLoop;
	    }
	}

    endOfForLoop:
	if ((i + 2) < objc) {
	if (i < objc - 2) {
	    Tcl_WrongNumArgs(interp, 2, objv,
		    "?-unwind? ?--? ?path? ?result?");
	    return TCL_ERROR;
	}

	/*
	 * Did they specify a slave interp to cancel the script in progress
Changes to generic/tclNamesp.c.
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123



1124
1125
1126



1127




1128

1129
1130
1131
1132
1133













1134
1135
1136
1137
1138
1139
1140
1101
1102
1103
1104
1105
1106
1107


1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124



1125
1126
1127

1128
1129
1130
1131
1132
1133





1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153







-
-














+
+
+
-
-
-
+
+
+
-
+
+
+
+

+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+







TclTeardownNamespace(
    register Namespace *nsPtr)	/* Points to the namespace to be dismantled
				 * and unlinked from its parent. */
{
    Interp *iPtr = (Interp *) nsPtr->interp;
    register Tcl_HashEntry *entryPtr;
    Tcl_HashSearch search;
    Tcl_Namespace *childNsPtr;
    Tcl_Command cmd;
    int i;

    /*
     * Start by destroying the namespace's variable table, since variables
     * might trigger traces. Variable table should be cleared but not freed!
     * TclDeleteNamespaceVars frees it, so we reinitialize it afterwards.
     */

    TclDeleteNamespaceVars(nsPtr);
    TclInitVarHashTable(&nsPtr->varTable, nsPtr);

    /*
     * Delete all commands in this namespace. Be careful when traversing the
     * hash table: when each command is deleted, it removes itself from the
     * command table. Because of traces (and the desire to avoid the quadratic
     * problems of just using Tcl_FirstHashEntry over and over, [Bug
     * f97d4ee020]) we copy to a temporary array and then delete all those
     * command table.
     *
     * Don't optimize to Tcl_NextHashEntry() because of traces.
     * commands.
     */

     */
    while (nsPtr->cmdTable.numEntries > 0) {
	int length = nsPtr->cmdTable.numEntries;
	Command **cmds = TclStackAlloc((Tcl_Interp *) iPtr,
		sizeof(Command *) * length);

	i = 0;
    for (entryPtr = Tcl_FirstHashEntry(&nsPtr->cmdTable, &search);
	    entryPtr != NULL;
	    entryPtr = Tcl_FirstHashEntry(&nsPtr->cmdTable, &search)) {
	cmd = Tcl_GetHashValue(entryPtr);
	Tcl_DeleteCommandFromToken((Tcl_Interp *) iPtr, cmd);
	for (entryPtr = Tcl_FirstHashEntry(&nsPtr->cmdTable, &search);
		entryPtr != NULL;
		entryPtr = Tcl_NextHashEntry(&search)) {
	    cmds[i] = Tcl_GetHashValue(entryPtr);
	    cmds[i]->refCount++;
	    i++;
	}
	for (i = 0 ; i < length ; i++) {
	    Tcl_DeleteCommandFromToken((Tcl_Interp *) iPtr,
		    (Tcl_Command) cmds[i]);
	    TclCleanupCommandMacro(cmds[i]);
	}
	TclStackFree((Tcl_Interp *) iPtr, cmds);
    }
    Tcl_DeleteHashTable(&nsPtr->cmdTable);
    Tcl_InitHashTable(&nsPtr->cmdTable, TCL_STRING_KEYS);

    /*
     * Remove the namespace from its parent's child hashtable.
     */
1171
1172
1173
1174
1175
1176
1177

1178



1179
1180

1181
1182
1183






1184
1185
1186
1187
1188
1189













1190
1191






1192
1193
1194
1195
1196












1197
1198
1199
1200
1201
1202
1203
1184
1185
1186
1187
1188
1189
1190
1191

1192
1193
1194
1195

1196
1197
1198
1199
1200
1201
1202
1203
1204
1205






1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226





1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245







+
-
+
+
+

-
+



+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+


+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+







    }

    /*
     * Delete all the child namespaces.
     *
     * BE CAREFUL: When each child is deleted, it will divorce itself from its
     * parent. You can't traverse a hash table properly if its elements are
     * being deleted.  Because of traces (and the desire to avoid the
     * being deleted. We use only the Tcl_FirstHashEntry function to be safe.
     * quadratic problems of just using Tcl_FirstHashEntry over and over, [Bug
     * f97d4ee020]) we copy to a temporary array and then delete all those
     * namespaces.
     *
     * Don't optimize to Tcl_NextHashEntry() because of traces.
     * Important: leave the hash table itself still live.
     */

#ifndef BREAK_NAMESPACE_COMPAT
    while (nsPtr->childTable.numEntries > 0) {
	int length = nsPtr->childTable.numEntries;
	Namespace **children = TclStackAlloc((Tcl_Interp *) iPtr,
		sizeof(Namespace *) * length);

	i = 0;
    for (entryPtr = Tcl_FirstHashEntry(&nsPtr->childTable, &search);
	    entryPtr != NULL;
	    entryPtr = Tcl_FirstHashEntry(&nsPtr->childTable, &search)) {
	childNsPtr = Tcl_GetHashValue(entryPtr);
	Tcl_DeleteNamespace(childNsPtr);
    }
	for (entryPtr = Tcl_FirstHashEntry(&nsPtr->childTable, &search);
		entryPtr != NULL;
		entryPtr = Tcl_NextHashEntry(&search)) {
	    children[i] = Tcl_GetHashValue(entryPtr);
	    children[i]->refCount++;
	    i++;
	}
	for (i = 0 ; i < length ; i++) {
	    Tcl_DeleteNamespace((Tcl_Namespace *) children[i]);
	    TclNsDecrRefCount(children[i]);
	}
	TclStackFree((Tcl_Interp *) iPtr, children);
    }
#else
    if (nsPtr->childTablePtr != NULL) {
	while (nsPtr->childTablePtr->numEntries > 0) {
	    int length = nsPtr->childTablePtr->numEntries;
	    Namespace **children = TclStackAlloc((Tcl_Interp *) iPtr,
		    sizeof(Namespace *) * length);

	    i = 0;
	for (entryPtr = Tcl_FirstHashEntry(nsPtr->childTablePtr, &search);
		entryPtr != NULL;
		entryPtr = Tcl_FirstHashEntry(nsPtr->childTablePtr,&search)) {
	    childNsPtr = Tcl_GetHashValue(entryPtr);
	    Tcl_DeleteNamespace(childNsPtr);
	    for (entryPtr = Tcl_FirstHashEntry(nsPtr->childTablePtr, &search);
		    entryPtr != NULL;
		    entryPtr = Tcl_NextHashEntry(&search)) {
		children[i] = Tcl_GetHashValue(entryPtr);
		children[i]->refCount++;
		i++;
	    }
	    for (i = 0 ; i < length ; i++) {
		Tcl_DeleteNamespace((Tcl_Namespace *) children[i]);
		TclNsDecrRefCount(children[i]);
	    }
	    TclStackFree((Tcl_Interp *) iPtr, children);
	}
    }
#endif

    /*
     * Free the namespace's export pattern array.
     */
Changes to generic/tclObj.c.
316
317
318
319
320
321
322
323

324
325
326
327
328
329
330
316
317
318
319
320
321
322

323
324
325
326
327
328
329
330







-
+







 * own purposes.
 *
 * TRICKY POINT! Some extensions update this structure! (Notably, these
 * include TclBlend and TCom). This is highly ill-advised on their part, but
 * does allow them to delete a command when references to it are gone, which
 * is fragile but useful given their somewhat-OO style. Because of this, this
 * structure MUST NOT be const so that the C compiler puts the data in
 * writable memory. [Bug 2558422]
 * writable memory. [Bug 2558422] [Bug 07d13d99b0a9]
 * TODO: Provide a better API for those extensions so that they can coexist...
 */

Tcl_ObjType tclCmdNameType = {
    "cmdName",			/* name */
    FreeCmdNameInternalRep,	/* freeIntRepProc */
    DupCmdNameInternalRep,	/* dupIntRepProc */
4172
4173
4174
4175
4176
4177
4178

4179

4180
4181
4182
4183
4184
4185
4186
4172
4173
4174
4175
4176
4177
4178
4179

4180
4181
4182
4183
4184
4185
4186
4187







+
-
+







    }

    /*
     * OK, must create a new internal representation (or fail) as any cache we
     * had is invalid one way or another.
     */

    /* See [] why we cannot call SetCmdNameFromAny() directly here. */
    if (SetCmdNameFromAny(interp, objPtr) != TCL_OK) {
    if (tclCmdNameType.setFromAnyProc(interp, objPtr) != TCL_OK) {
        return NULL;
    }
    resPtr = objPtr->internalRep.twoPtrValue.ptr1;
    return (Tcl_Command) (resPtr ? resPtr->cmdPtr : NULL);
}

/*
Changes to generic/tclProc.c.
65
66
67
68
69
70
71
72
73


74
75
76
77
78
79
80
81
65
66
67
68
69
70
71


72
73

74
75
76
77
78
79
80







-
-
+
+
-







				 * Tcl_GetStringFromObj should panic
				 * instead. */
    NULL			/* SetFromAny function; Tcl_ConvertToType
				 * should panic instead. */
};

/*
 * The [upvar]/[uplevel] level reference type. Uses the twoPtrValue field,
 * encoding the type of level reference in ptr and the actual parsed out
 * The [upvar]/[uplevel] level reference type. Uses the longValue field
 * to remember the integer value of a parsed #<integer> format.
 * offset in ptr2.
 *
 * Uses the default behaviour throughout, and never disposes of the string
 * rep; it's just a cache type.
 */

static const Tcl_ObjType levelReferenceType = {
    "levelReference",
781
782
783
784
785
786
787
788

789
790
791
792
793
794
795
780
781
782
783
784
785
786

787
788
789
790
791
792
793
794







-
+







 *	Given a description of a procedure frame, such as the first argument
 *	to an "uplevel" or "upvar" command, locate the call frame for the
 *	appropriate level of procedure.
 *
 * Results:
 *	The return value is -1 if an error occurred in finding the frame (in
 *	this case an error message is left in the interp's result). 1 is
 *	returned if objPtr was either a number or a number preceded by "#" and
 *	returned if objPtr was either an int or an int preceded by "#" and
 *	it specified a valid frame. 0 is returned if objPtr isn't one of the
 *	two things above (in this case, the lookup acts as if objPtr were
 *	"1"). The variable pointed to by framePtrPtr is filled in with the
 *	address of the desired frame (unless an error occurs, in which case it
 *	isn't modified).
 *
 * Side effects:
803
804
805
806
807
808
809
810
811

812
813
814
815
816
817

818
819
820
821
822





823
824
825
826


827
828

829
830
831
832


833
834
835
836
837
838
839
840
841











842
843
844


845
846
847
848
849




850
851
852





853
854
855
856
857

858
859
860
861


862
863
864
865
866
867
868
869
870
871


872
873
874
875
876

877
878
879

880
881

882
883
884
885
886
887
888
889
890
891
892










893
894


895
896
897
898


899
900
901
902
903
904
905
802
803
804
805
806
807
808


809
810
811
812
813
814

815
816




817
818
819
820
821
822



823
824


825




826
827









828
829
830
831
832
833
834
835
836
837
838



839
840





841
842
843
844



845
846
847
848
849





850




851
852










853
854





855



856


857











858
859
860
861
862
863
864
865
866
867


868
869




870
871
872
873
874
875
876
877
878







-
-
+





-
+

-
-
-
-
+
+
+
+
+

-
-
-
+
+
-
-
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
-
-
-
-
-
+
+
+
+
-
-
-
+
+
+
+
+
-
-
-
-
-
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
+
-
-
-
+
-
-
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
-
-
+
+







    Tcl_Interp *interp,		/* Interpreter in which to find frame. */
    Tcl_Obj *objPtr,		/* Object describing frame. */
    CallFrame **framePtrPtr)	/* Store pointer to frame here (or NULL if
				 * global frame indicated). */
{
    register Interp *iPtr = (Interp *) interp;
    int curLevel, level, result;
    CallFrame *framePtr;
    const char *name;
    const char *name = NULL;

    /*
     * Parse object to figure out which level number to go to.
     */

    result = 1;
    result = 0;
    curLevel = iPtr->varFramePtr->level;
    if (objPtr == NULL) {
	name = "1";
	goto haveLevel1;
    }

    /*
     * Check for integer first, since that has potential to spare us
     * a generation of a stringrep.
     */

    name = TclGetString(objPtr);
    if (objPtr->typePtr == &levelReferenceType) {
	if (objPtr->internalRep.twoPtrValue.ptr1) {
    if (objPtr == NULL) {
	/* Do nothing */
	    level = curLevel - PTR2INT(objPtr->internalRep.twoPtrValue.ptr2);
	} else {
    } else if (TCL_OK == Tcl_GetIntFromObj(NULL, objPtr, &level)
	    level = PTR2INT(objPtr->internalRep.twoPtrValue.ptr2);
	}
	if (level < 0) {
	    goto levelError;
	    && (level >= 0)) {
	level = curLevel - level;
	}
	/* TODO: Consider skipping the typePtr checks */
    } else if (objPtr->typePtr == &tclIntType
#ifndef TCL_WIDE_INT_IS_LONG
	    || objPtr->typePtr == &tclWideIntType
#endif
	    ) {
	if (TclGetIntFromObj(NULL, objPtr, &level) != TCL_OK || level < 0) {
	    goto levelError;
	result = 1;
    } else if (objPtr->typePtr == &levelReferenceType) {
	level = (int) objPtr->internalRep.longValue;
	result = 1;
    } else {
	name = TclGetString(objPtr);
	if (name[0] == '#') {
	    if (TCL_OK == Tcl_GetInt(NULL, name+1, &level) && level >= 0) {
		TclFreeIntRep(objPtr);
		objPtr->typePtr = &levelReferenceType;
		objPtr->internalRep.longValue = level;
	}
	level = curLevel - level;
    } else if (*name == '#') {
		result = 1;
	    } else {
	if (Tcl_GetInt(interp, name+1, &level) != TCL_OK || level < 0) {
	    goto levelError;
	}

	/*
		result = -1;
	    }
	} else if (isdigit(UCHAR(name[0]))) { /* INTL: digit */
	    /*
	 * Cache for future reference.
	 */

	     * If this were an integer, we'd have succeeded already.
	     * Docs say we have to treat this as a 'bad level'  error.
	     */
	    result = -1;
	}
	TclFreeIntRep(objPtr);
	objPtr->typePtr = &levelReferenceType;
	objPtr->internalRep.twoPtrValue.ptr1 = (void *) 0;
	objPtr->internalRep.twoPtrValue.ptr2 = INT2PTR(level);
    } else if (isdigit(UCHAR(*name))) { /* INTL: digit */
    }
	if (Tcl_GetInt(interp, name, &level) != TCL_OK) {
	    return -1;
	}


    if (result == 0) {
	/*
	 * Cache for future reference.
	 */

	TclFreeIntRep(objPtr);
	objPtr->typePtr = &levelReferenceType;
	objPtr->internalRep.twoPtrValue.ptr1 = (void *) 1;
	objPtr->internalRep.twoPtrValue.ptr2 = INT2PTR(level);
	level = curLevel - level;
    } else {
	level = curLevel - 1;
	name = "1";
	/*
	 * Don't cache as the object *isn't* a level reference (might even be
	 * NULL...)
	 */

    }
    haveLevel1:
	level = curLevel - 1;
	result = 0;
    if (result != -1) {
    }

	if (level >= 0) {
    /*
     * Figure out which frame to use, and return it to the caller.
     */

    for (framePtr = iPtr->varFramePtr; framePtr != NULL;
	    framePtr = framePtr->callerVarPtr) {
	if (framePtr->level == level) {
	    break;
	}
    }
    if (framePtr == NULL) {
	    CallFrame *framePtr;
	    for (framePtr = iPtr->varFramePtr; framePtr != NULL;
		    framePtr = framePtr->callerVarPtr) {
		if (framePtr->level == level) {
		    *framePtrPtr = framePtr;
		    return result;
		}
	    }
	}
	if (name == NULL) {
	goto levelError;
    }
	    name = TclGetString(objPtr);
	}
    *framePtrPtr = framePtr;
    return result;

  levelError:
    }

    Tcl_SetObjResult(interp, Tcl_ObjPrintf("bad level \"%s\"", name));
    Tcl_SetErrorCode(interp, "TCL", "VALUE", "STACKLEVEL", NULL);
    return -1;
}

/*
 *----------------------------------------------------------------------
Changes to generic/tclStringObj.c.
32
33
34
35
36
37
38

39
40
41
42
43
44
45
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46







+







 *
 * See the file "license.terms" for information on usage and redistribution of
 * this file, and for a DISCLAIMER OF ALL WARRANTIES.
 */

#include "tclInt.h"
#include "tommath.h"
#include "tclStringRep.h"

/*
 * Set COMPAT to 1 to restore the shimmering patterns to those of Tcl 8.5.
 * This is an escape hatch in case the changes have some unexpected unwelcome
 * impact on performance. If things go well, this mechanism can go away when
 * post-8.6 development begins.
 */
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
86
87
88
89
90
91
92






















































93
94
95
96
97
98
99







-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-







const Tcl_ObjType tclStringType = {
    "string",			/* name */
    FreeStringInternalRep,	/* freeIntRepPro */
    DupStringInternalRep,	/* dupIntRepProc */
    UpdateStringOfString,	/* updateStringProc */
    SetStringFromAny		/* setFromAnyProc */
};

/*
 * The following structure is the internal rep for a String object. It keeps
 * track of how much memory has been used and how much has been allocated for
 * the Unicode and UTF string to enable growing and shrinking of the UTF and
 * Unicode reps of the String object with fewer mallocs. To optimize string
 * length and indexing operations, this structure also stores the number of
 * characters (same of UTF and Unicode!) once that value has been computed.
 *
 * Under normal configurations, what Tcl calls "Unicode" is actually UTF-16
 * restricted to the Basic Multilingual Plane (i.e. U+00000 to U+0FFFF). This
 * can be officially modified by altering the definition of Tcl_UniChar in
 * tcl.h, but do not do that unless you are sure what you're doing!
 */

typedef struct String {
    int numChars;		/* The number of chars in the string. -1 means
				 * this value has not been calculated. >= 0
				 * means that there is a valid Unicode rep, or
				 * that the number of UTF bytes == the number
				 * of chars. */
    int allocated;		/* The amount of space actually allocated for
				 * the UTF string (minus 1 byte for the
				 * termination char). */
    int maxChars;		/* Max number of chars that can fit in the
				 * space allocated for the unicode array. */
    int hasUnicode;		/* Boolean determining whether the string has
				 * a Unicode representation. */
    Tcl_UniChar unicode[1];	/* The array of Unicode chars. The actual size
				 * of this field depends on the 'maxChars'
				 * field above. */
} String;

#define STRING_MAXCHARS \
	(int)(((size_t)UINT_MAX - sizeof(String))/sizeof(Tcl_UniChar))
#define STRING_SIZE(numChars) \
	(sizeof(String) + ((numChars) * sizeof(Tcl_UniChar)))
#define stringCheckLimits(numChars) \
    if ((numChars) < 0 || (numChars) > STRING_MAXCHARS) { \
	Tcl_Panic("max length for a Tcl unicode value (%d chars) exceeded", \
		STRING_MAXCHARS); \
    }
#define stringAttemptAlloc(numChars) \
	(String *) attemptckalloc((unsigned) STRING_SIZE(numChars) )
#define stringAlloc(numChars) \
	(String *) ckalloc((unsigned) STRING_SIZE(numChars) )
#define stringRealloc(ptr, numChars) \
    (String *) ckrealloc((ptr), (unsigned) STRING_SIZE(numChars) )
#define stringAttemptRealloc(ptr, numChars) \
    (String *) attemptckrealloc((ptr), (unsigned) STRING_SIZE(numChars) )
#define GET_STRING(objPtr) \
	((String *) (objPtr)->internalRep.twoPtrValue.ptr1)
#define SET_STRING(objPtr, stringPtr) \
	((objPtr)->internalRep.twoPtrValue.ptr1 = (void *) (stringPtr))

/*
 * TCL STRING GROWTH ALGORITHM
 *
 * When growing strings (during an append, for example), the following growth
 * algorithm is used:
 *
Added generic/tclStringRep.h.

































































































1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
/*
 * tclStringRep.h --
 *
 *	This file contains the definition of the Unicode string internal
 *	representation and macros to access it.
 *
 *	A Unicode string is an internationalized string. Conceptually, a
 *	Unicode string is an array of 16-bit quantities organized as a
 *	sequence of properly formed UTF-8 characters. There is a one-to-one
 *	map between Unicode and UTF characters. Because Unicode characters
 *	have a fixed width, operations such as indexing operate on Unicode
 *	data. The String object is optimized for the case where each UTF char
 *	in a string is only one byte. In this case, we store the value of
 *	numChars, but we don't store the Unicode data (unless Tcl_GetUnicode
 *	is explicitly called).
 *
 *	The String object type stores one or both formats. The default
 *	behavior is to store UTF. Once Unicode is calculated by a function, it
 *	is stored in the internal rep for future access (without an additional
 *	O(n) cost).
 *
 *	To allow many appends to be done to an object without constantly
 *	reallocating the space for the string or Unicode representation, we
 *	allocate double the space for the string or Unicode and use the
 *	internal representation to keep track of how much space is used vs.
 *	allocated.
 *
 * Copyright (c) 1995-1997 Sun Microsystems, Inc.
 * Copyright (c) 1999 by Scriptics Corporation.
 *
 * See the file "license.terms" for information on usage and redistribution of
 * this file, and for a DISCLAIMER OF ALL WARRANTIES.
 */

/*
 * The following structure is the internal rep for a String object. It keeps
 * track of how much memory has been used and how much has been allocated for
 * the Unicode and UTF string to enable growing and shrinking of the UTF and
 * Unicode reps of the String object with fewer mallocs. To optimize string
 * length and indexing operations, this structure also stores the number of
 * characters (same of UTF and Unicode!) once that value has been computed.
 *
 * Under normal configurations, what Tcl calls "Unicode" is actually UTF-16
 * restricted to the Basic Multilingual Plane (i.e. U+00000 to U+0FFFF). This
 * can be officially modified by altering the definition of Tcl_UniChar in
 * tcl.h, but do not do that unless you are sure what you're doing!
 */

typedef struct String {
    int numChars;		/* The number of chars in the string. -1 means
				 * this value has not been calculated. >= 0
				 * means that there is a valid Unicode rep, or
				 * that the number of UTF bytes == the number
				 * of chars. */
    int allocated;		/* The amount of space actually allocated for
				 * the UTF string (minus 1 byte for the
				 * termination char). */
    int maxChars;		/* Max number of chars that can fit in the
				 * space allocated for the unicode array. */
    int hasUnicode;		/* Boolean determining whether the string has
				 * a Unicode representation. */
    Tcl_UniChar unicode[1];	/* The array of Unicode chars. The actual size
				 * of this field depends on the 'maxChars'
				 * field above. */
} String;

#define STRING_MAXCHARS \
    (int)(((size_t)UINT_MAX - sizeof(String))/sizeof(Tcl_UniChar))
#define STRING_SIZE(numChars) \
    (sizeof(String) + ((numChars) * sizeof(Tcl_UniChar)))
#define stringCheckLimits(numChars) \
    do {								\
	if ((numChars) < 0 || (numChars) > STRING_MAXCHARS) {		\
	    Tcl_Panic("max length for a Tcl unicode value (%d chars) exceeded", \
		      STRING_MAXCHARS);					\
	}								\
    } while (0)
#define stringAttemptAlloc(numChars) \
    (String *) attemptckalloc((unsigned) STRING_SIZE(numChars))
#define stringAlloc(numChars) \
    (String *) ckalloc((unsigned) STRING_SIZE(numChars))
#define stringRealloc(ptr, numChars) \
    (String *) ckrealloc((ptr), (unsigned) STRING_SIZE(numChars))
#define stringAttemptRealloc(ptr, numChars) \
    (String *) attemptckrealloc((ptr), (unsigned) STRING_SIZE(numChars))
#define GET_STRING(objPtr) \
    ((String *) (objPtr)->internalRep.twoPtrValue.ptr1)
#define SET_STRING(objPtr, stringPtr) \
    ((objPtr)->internalRep.twoPtrValue.ptr1 = (void *) (stringPtr))

/*
 * Local Variables:
 * mode: c
 * c-basic-offset: 4
 * fill-column: 78
 * End:
 */
Changes to generic/tclTest.c.
6887
6888
6889
6890
6891
6892
6893
6894

6895
6896
6897
6898
6899
6900
6901
6887
6888
6889
6890
6891
6892
6893

6894
6895
6896
6897
6898
6899
6900
6901







-
+







    int objc,
    Tcl_Obj *const objv[])
{
    /*
     * Insure that callbacks effectively run at the proper level during the
     * unwinding of the NRE stack.
     */
    

    Tcl_NRAddCallback(interp, NREUnwind_callback, INT2PTR(-1), INT2PTR(-1),
            INT2PTR(-1), NULL);
    return TCL_OK;
}


static int
Changes to generic/tclThreadTest.c.
830
831
832
833
834
835
836
837

838
839
840
841
842
843
844
830
831
832
833
834
835
836

837
838
839
840
841
842
843
844







-
+







    /*
     * Short circut sends to ourself. Ought to do something with -async, like
     * run in an idle handler.
     */

    if (threadId == Tcl_GetCurrentThread()) {
	Tcl_MutexUnlock(&threadMutex);
	return Tcl_EvalEx(interp, script,-1,TCL_EVAL_GLOBAL);	
	return Tcl_EvalEx(interp, script,-1,TCL_EVAL_GLOBAL);
    }

    /*
     * Create the event for its event queue.
     */

    threadEventPtr = ckalloc(sizeof(ThreadEvent));
1025
1026
1027
1028
1029
1030
1031
1032

1033
1034
1035
1036
1037
1038
1039
1025
1026
1027
1028
1029
1030
1031

1032
1033
1034
1035
1036
1037
1038
1039







-
+







	result = "no target interp!";
	errorCode = "THREAD";
	errorInfo = "";
    } else {
	Tcl_Preserve(interp);
	Tcl_ResetResult(interp);
	Tcl_CreateThreadExitHandler(ThreadFreeProc, threadEventPtr->script);
	code = Tcl_EvalEx(interp, threadEventPtr->script,-1,TCL_EVAL_GLOBAL);	
	code = Tcl_EvalEx(interp, threadEventPtr->script,-1,TCL_EVAL_GLOBAL);
	Tcl_DeleteThreadExitHandler(ThreadFreeProc, threadEventPtr->script);
	if (code != TCL_OK) {
	    errorCode = Tcl_GetVar(interp, "errorCode", TCL_GLOBAL_ONLY);
	    errorInfo = Tcl_GetVar(interp, "errorInfo", TCL_GLOBAL_ONLY);
	} else {
	    errorCode = errorInfo = NULL;
	}
Changes to generic/tclZlib.c.
1190
1191
1192
1193
1194
1195
1196
1197

1198
1199
1200
1201




1202
1203
1204
1205
1206
1207
1208
1190
1191
1192
1193
1194
1195
1196

1197
1198



1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209







-
+

-
-
-
+
+
+
+








	outSize = deflateBound(&zshPtr->stream, zshPtr->stream.avail_in)+100;
	zshPtr->stream.avail_out = outSize;
	dataTmp = ckalloc(zshPtr->stream.avail_out);
	zshPtr->stream.next_out = (Bytef *) dataTmp;

	e = deflate(&zshPtr->stream, flush);
	while (e == Z_BUF_ERROR) {
	while (e == Z_BUF_ERROR || (flush == Z_FINISH && e == Z_OK)) {
	    /*
	     * Output buffer too small to hold the data being generated; so
	     * put a new buffer into place after saving the old generated
	     * data to the outData list.
	     * Output buffer too small to hold the data being generated or we
	     * are doing the end-of-stream flush (which can spit out masses of
	     * data). This means we need to put a new buffer into place after
	     * saving the old generated data to the outData list.
	     */

	    obj = Tcl_NewByteArrayObj((unsigned char *) dataTmp, outSize);
	    Tcl_ListObjAppendElement(NULL, zshPtr->outData, obj);

	    if (outSize < 0xFFFF) {
		outSize = 0xFFFF;	/* There may be *lots* of data left to
Changes to library/reg/pkgIndex.tcl.
1
2
3
4

5
6
7

8
9
1
2
3

4
5
6

7
8
9



-
+


-
+


if {([info commands ::tcl::pkgconfig] eq "")
	|| ([info sharedlibextension] ne ".dll")} return
if {[::tcl::pkgconfig get debug]} {
    package ifneeded registry 1.3.1 \
    package ifneeded registry 1.3.2 \
            [list load [file join $dir tclreg13g.dll] registry]
} else {
    package ifneeded registry 1.3.1 \
    package ifneeded registry 1.3.2 \
            [list load [file join $dir tclreg13.dll] registry]
}
Changes to library/tcltest/pkgIndex.tcl.
1
2
3
4
5
6
7
8
9
10
11
12

1
2
3
4
5
6
7
8
9
10
11

12











-
+
# Tcl package index file, version 1.1
# This file is generated by the "pkg_mkIndex -direct" command
# and sourced either when an application starts up or
# by a "package unknown" script.  It invokes the
# "package ifneeded" command to set up package-related
# information so that packages will be loaded automatically
# in response to "package require" commands.  When this
# script is sourced, the variable $dir must contain the
# full path name of this file's directory.

if {![package vsatisfies [package provide Tcl] 8.5]} {return}
package ifneeded tcltest 2.3.8 [list source [file join $dir tcltest.tcl]]
package ifneeded tcltest 2.4.0 [list source [file join $dir tcltest.tcl]]
Changes to library/tcltest/tcltest.tcl.
18
19
20
21
22
23
24
25

26
27
28
29
30
31
32
18
19
20
21
22
23
24

25
26
27
28
29
30
31
32







-
+








package require Tcl 8.5		;# -verbose line uses [info frame]
namespace eval tcltest {

    # When the version number changes, be sure to update the pkgIndex.tcl file,
    # and the install directory in the Makefiles.  When the minor version
    # changes (new feature) be sure to update the man page as well.
    variable Version 2.3.8
    variable Version 2.4.0

    # Compatibility support for dumb variables defined in tcltest 1
    # Do not use these.  Call [package provide Tcl] and [info patchlevel]
    # yourself.  You don't need tcltest to wrap it for you.
    variable version [package provide Tcl]
    variable patchLevel [info patchlevel]

607
608
609
610
611
612
613












614
615

616
617
618

619
620
621
622
623

624
625
626
627
628
629
630
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626

627
628


629
630
631
632
633

634
635
636
637
638
639
640
641







+
+
+
+
+
+
+
+
+
+
+
+

-
+

-
-
+




-
+







	}
	set code [catch {Configure {*}$args} msg]
	return -code $code $msg
    }

    proc AcceptVerbose { level } {
	set level [AcceptList $level]
	set levelMap {
	    l list
	    p pass
	    b body 
	    s skip
	    t start
	    e error
	    l line
	    m msec
	    u usec
	}
	set levelRegexp "^([join [dict values $levelMap] |])\$"
	if {[llength $level] == 1} {
	    if {![regexp {^(pass|body|skip|start|error|line)$} $level]} {
	    if {![regexp $levelRegexp $level]} {
		# translate single characters abbreviations to expanded list
		set level [string map {p pass b body s skip t start e error l line} \
			[split $level {}]]
		set level [string map $levelMap [split $level {}]]
	    }
	}
	set valid [list]
	foreach v $level {
	    if {[regexp {^(pass|body|skip|start|error|line)$} $v]} {
	    if {[regexp $levelRegexp $v]} {
		lappend valid $v
	    }
	}
	return $valid
    }

    proc IsVerbose {level} {
1967
1968
1969
1970
1971
1972
1973





1974
1975
1976
1977
1978
1979
1980
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996







+
+
+
+
+







	set errorInfo(setup) $::errorInfo
	set errorCode(setup) $::errorCode
    }
    set setupFailure [expr {$code != 0}]

    # Only run the test body if the setup was successful
    if {!$setupFailure} {

	# Register startup time
	if {[IsVerbose msec] || [IsVerbose usec]} {
	    set timeStart [clock microseconds]
	}

	# Verbose notification of $body start
	if {[IsVerbose start]} {
	    puts [outputChannel] "---- $name start"
	    flush [outputChannel]
	}

2071
2072
2073
2074
2075
2076
2077










2078
2079
2080
2081
2082
2083
2084
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110







+
+
+
+
+
+
+
+
+
+







		if {$msg ne {}} {
		    append coreMsg "\nError:\
			Problem renaming core file: $msg"
		}
	    }
	}
    }

    if {[IsVerbose msec] || [IsVerbose usec]} {
	set t [expr {[clock microseconds] - $timeStart}]
	if {[IsVerbose usec]} {
	    puts [outputChannel] "++++ $name took $t μs"
	}
	if {[IsVerbose msec]} {
	    puts [outputChannel] "++++ $name took [expr {round($t/1000.)}] ms"
	}
    }

    # if we didn't experience any failures, then we passed
    variable numTests
    if {!($setupFailure || $cleanupFailure || $coreFailure
	    || $outputFailure || $errorFailure || $codeFailure
	    || $scriptFailure)} {
	if {$testLevel == 1} {
Changes to library/tzdata/America/Caracas.
1
2
3
4
5
6
7
8

9
1
2
3
4
5
6
7
8
9
10








+

# created by tools/tclZIC.tcl - do not edit

set TZData(:America/Caracas) {
    {-9223372036854775808 -16064 0 LMT}
    {-2524505536 -16060 0 CMT}
    {-1826739140 -16200 0 VET}
    {-157750200 -14400 0 VET}
    {1197183600 -16200 0 VET}
    {1462086000 -14400 0 VET}
}
Changes to library/tzdata/America/Port-au-Prince.
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
42
43
44
45
46
47
48








































































































































































49







-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

    {1352008800 -18000 0 EST}
    {1362898800 -14400 1 EDT}
    {1383458400 -18000 0 EST}
    {1394348400 -14400 1 EDT}
    {1414908000 -18000 0 EST}
    {1425798000 -14400 1 EDT}
    {1446357600 -18000 0 EST}
    {1457852400 -14400 1 EDT}
    {1478412000 -18000 0 EST}
    {1489302000 -14400 1 EDT}
    {1509861600 -18000 0 EST}
    {1520751600 -14400 1 EDT}
    {1541311200 -18000 0 EST}
    {1552201200 -14400 1 EDT}
    {1572760800 -18000 0 EST}
    {1583650800 -14400 1 EDT}
    {1604210400 -18000 0 EST}
    {1615705200 -14400 1 EDT}
    {1636264800 -18000 0 EST}
    {1647154800 -14400 1 EDT}
    {1667714400 -18000 0 EST}
    {1678604400 -14400 1 EDT}
    {1699164000 -18000 0 EST}
    {1710054000 -14400 1 EDT}
    {1730613600 -18000 0 EST}
    {1741503600 -14400 1 EDT}
    {1762063200 -18000 0 EST}
    {1772953200 -14400 1 EDT}
    {1793512800 -18000 0 EST}
    {1805007600 -14400 1 EDT}
    {1825567200 -18000 0 EST}
    {1836457200 -14400 1 EDT}
    {1857016800 -18000 0 EST}
    {1867906800 -14400 1 EDT}
    {1888466400 -18000 0 EST}
    {1899356400 -14400 1 EDT}
    {1919916000 -18000 0 EST}
    {1930806000 -14400 1 EDT}
    {1951365600 -18000 0 EST}
    {1962860400 -14400 1 EDT}
    {1983420000 -18000 0 EST}
    {1994310000 -14400 1 EDT}
    {2014869600 -18000 0 EST}
    {2025759600 -14400 1 EDT}
    {2046319200 -18000 0 EST}
    {2057209200 -14400 1 EDT}
    {2077768800 -18000 0 EST}
    {2088658800 -14400 1 EDT}
    {2109218400 -18000 0 EST}
    {2120108400 -14400 1 EDT}
    {2140668000 -18000 0 EST}
    {2152162800 -14400 1 EDT}
    {2172722400 -18000 0 EST}
    {2183612400 -14400 1 EDT}
    {2204172000 -18000 0 EST}
    {2215062000 -14400 1 EDT}
    {2235621600 -18000 0 EST}
    {2246511600 -14400 1 EDT}
    {2267071200 -18000 0 EST}
    {2277961200 -14400 1 EDT}
    {2298520800 -18000 0 EST}
    {2309410800 -14400 1 EDT}
    {2329970400 -18000 0 EST}
    {2341465200 -14400 1 EDT}
    {2362024800 -18000 0 EST}
    {2372914800 -14400 1 EDT}
    {2393474400 -18000 0 EST}
    {2404364400 -14400 1 EDT}
    {2424924000 -18000 0 EST}
    {2435814000 -14400 1 EDT}
    {2456373600 -18000 0 EST}
    {2467263600 -14400 1 EDT}
    {2487823200 -18000 0 EST}
    {2499318000 -14400 1 EDT}
    {2519877600 -18000 0 EST}
    {2530767600 -14400 1 EDT}
    {2551327200 -18000 0 EST}
    {2562217200 -14400 1 EDT}
    {2582776800 -18000 0 EST}
    {2593666800 -14400 1 EDT}
    {2614226400 -18000 0 EST}
    {2625116400 -14400 1 EDT}
    {2645676000 -18000 0 EST}
    {2656566000 -14400 1 EDT}
    {2677125600 -18000 0 EST}
    {2688620400 -14400 1 EDT}
    {2709180000 -18000 0 EST}
    {2720070000 -14400 1 EDT}
    {2740629600 -18000 0 EST}
    {2751519600 -14400 1 EDT}
    {2772079200 -18000 0 EST}
    {2782969200 -14400 1 EDT}
    {2803528800 -18000 0 EST}
    {2814418800 -14400 1 EDT}
    {2834978400 -18000 0 EST}
    {2846473200 -14400 1 EDT}
    {2867032800 -18000 0 EST}
    {2877922800 -14400 1 EDT}
    {2898482400 -18000 0 EST}
    {2909372400 -14400 1 EDT}
    {2929932000 -18000 0 EST}
    {2940822000 -14400 1 EDT}
    {2961381600 -18000 0 EST}
    {2972271600 -14400 1 EDT}
    {2992831200 -18000 0 EST}
    {3003721200 -14400 1 EDT}
    {3024280800 -18000 0 EST}
    {3035775600 -14400 1 EDT}
    {3056335200 -18000 0 EST}
    {3067225200 -14400 1 EDT}
    {3087784800 -18000 0 EST}
    {3098674800 -14400 1 EDT}
    {3119234400 -18000 0 EST}
    {3130124400 -14400 1 EDT}
    {3150684000 -18000 0 EST}
    {3161574000 -14400 1 EDT}
    {3182133600 -18000 0 EST}
    {3193023600 -14400 1 EDT}
    {3213583200 -18000 0 EST}
    {3225078000 -14400 1 EDT}
    {3245637600 -18000 0 EST}
    {3256527600 -14400 1 EDT}
    {3277087200 -18000 0 EST}
    {3287977200 -14400 1 EDT}
    {3308536800 -18000 0 EST}
    {3319426800 -14400 1 EDT}
    {3339986400 -18000 0 EST}
    {3350876400 -14400 1 EDT}
    {3371436000 -18000 0 EST}
    {3382930800 -14400 1 EDT}
    {3403490400 -18000 0 EST}
    {3414380400 -14400 1 EDT}
    {3434940000 -18000 0 EST}
    {3445830000 -14400 1 EDT}
    {3466389600 -18000 0 EST}
    {3477279600 -14400 1 EDT}
    {3497839200 -18000 0 EST}
    {3508729200 -14400 1 EDT}
    {3529288800 -18000 0 EST}
    {3540178800 -14400 1 EDT}
    {3560738400 -18000 0 EST}
    {3572233200 -14400 1 EDT}
    {3592792800 -18000 0 EST}
    {3603682800 -14400 1 EDT}
    {3624242400 -18000 0 EST}
    {3635132400 -14400 1 EDT}
    {3655692000 -18000 0 EST}
    {3666582000 -14400 1 EDT}
    {3687141600 -18000 0 EST}
    {3698031600 -14400 1 EDT}
    {3718591200 -18000 0 EST}
    {3730086000 -14400 1 EDT}
    {3750645600 -18000 0 EST}
    {3761535600 -14400 1 EDT}
    {3782095200 -18000 0 EST}
    {3792985200 -14400 1 EDT}
    {3813544800 -18000 0 EST}
    {3824434800 -14400 1 EDT}
    {3844994400 -18000 0 EST}
    {3855884400 -14400 1 EDT}
    {3876444000 -18000 0 EST}
    {3887334000 -14400 1 EDT}
    {3907893600 -18000 0 EST}
    {3919388400 -14400 1 EDT}
    {3939948000 -18000 0 EST}
    {3950838000 -14400 1 EDT}
    {3971397600 -18000 0 EST}
    {3982287600 -14400 1 EDT}
    {4002847200 -18000 0 EST}
    {4013737200 -14400 1 EDT}
    {4034296800 -18000 0 EST}
    {4045186800 -14400 1 EDT}
    {4065746400 -18000 0 EST}
    {4076636400 -14400 1 EDT}
    {4097196000 -18000 0 EST}
}
Changes to library/tzdata/America/Santiago.
114
115
116
117
118
119
120















































121

























































































































122
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167

168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

    {1313899200 -10800 1 CLST}
    {1335668400 -14400 0 CLT}
    {1346558400 -10800 1 CLST}
    {1367118000 -14400 0 CLT}
    {1378612800 -10800 1 CLST}
    {1398567600 -14400 0 CLT}
    {1410062400 -10800 1 CLST}
    {1463281200 -14400 0 CLT}
    {1471147200 -10800 1 CLST}
    {1494730800 -14400 0 CLT}
    {1502596800 -10800 1 CLST}
    {1526180400 -14400 0 CLT}
    {1534046400 -10800 1 CLST}
    {1557630000 -14400 0 CLT}
    {1565496000 -10800 1 CLST}
    {1589079600 -14400 0 CLT}
    {1596945600 -10800 1 CLST}
    {1620529200 -14400 0 CLT}
    {1629000000 -10800 1 CLST}
    {1652583600 -14400 0 CLT}
    {1660449600 -10800 1 CLST}
    {1684033200 -14400 0 CLT}
    {1691899200 -10800 1 CLST}
    {1715482800 -14400 0 CLT}
    {1723348800 -10800 1 CLST}
    {1746932400 -14400 0 CLT}
    {1754798400 -10800 1 CLST}
    {1778382000 -14400 0 CLT}
    {1786248000 -10800 1 CLST}
    {1809831600 -14400 0 CLT}
    {1818302400 -10800 1 CLST}
    {1841886000 -14400 0 CLT}
    {1849752000 -10800 1 CLST}
    {1873335600 -14400 0 CLT}
    {1881201600 -10800 1 CLST}
    {1904785200 -14400 0 CLT}
    {1912651200 -10800 1 CLST}
    {1936234800 -14400 0 CLT}
    {1944100800 -10800 1 CLST}
    {1967684400 -14400 0 CLT}
    {1976155200 -10800 1 CLST}
    {1999738800 -14400 0 CLT}
    {2007604800 -10800 1 CLST}
    {2031188400 -14400 0 CLT}
    {2039054400 -10800 1 CLST}
    {2062638000 -14400 0 CLT}
    {2070504000 -10800 1 CLST}
    {2094087600 -14400 0 CLT}
    {2101953600 -10800 1 CLST}
    {2125537200 -14400 0 CLT}
    {2133403200 -10800 1 CLST}
    {2156986800 -14400 0 CLT}
    {2165457600 -10800 1 CLST}
    {2189041200 -14400 0 CLT}
    {1430017200 -10800 0 CLT}
    {2196907200 -10800 1 CLST}
    {2220490800 -14400 0 CLT}
    {2228356800 -10800 1 CLST}
    {2251940400 -14400 0 CLT}
    {2259806400 -10800 1 CLST}
    {2283390000 -14400 0 CLT}
    {2291256000 -10800 1 CLST}
    {2314839600 -14400 0 CLT}
    {2322705600 -10800 1 CLST}
    {2346894000 -14400 0 CLT}
    {2354760000 -10800 1 CLST}
    {2378343600 -14400 0 CLT}
    {2386209600 -10800 1 CLST}
    {2409793200 -14400 0 CLT}
    {2417659200 -10800 1 CLST}
    {2441242800 -14400 0 CLT}
    {2449108800 -10800 1 CLST}
    {2472692400 -14400 0 CLT}
    {2480558400 -10800 1 CLST}
    {2504142000 -14400 0 CLT}
    {2512612800 -10800 1 CLST}
    {2536196400 -14400 0 CLT}
    {2544062400 -10800 1 CLST}
    {2567646000 -14400 0 CLT}
    {2575512000 -10800 1 CLST}
    {2599095600 -14400 0 CLT}
    {2606961600 -10800 1 CLST}
    {2630545200 -14400 0 CLT}
    {2638411200 -10800 1 CLST}
    {2661994800 -14400 0 CLT}
    {2669860800 -10800 1 CLST}
    {2693444400 -14400 0 CLT}
    {2701915200 -10800 1 CLST}
    {2725498800 -14400 0 CLT}
    {2733364800 -10800 1 CLST}
    {2756948400 -14400 0 CLT}
    {2764814400 -10800 1 CLST}
    {2788398000 -14400 0 CLT}
    {2796264000 -10800 1 CLST}
    {2819847600 -14400 0 CLT}
    {2827713600 -10800 1 CLST}
    {2851297200 -14400 0 CLT}
    {2859768000 -10800 1 CLST}
    {2883351600 -14400 0 CLT}
    {2891217600 -10800 1 CLST}
    {2914801200 -14400 0 CLT}
    {2922667200 -10800 1 CLST}
    {2946250800 -14400 0 CLT}
    {2954116800 -10800 1 CLST}
    {2977700400 -14400 0 CLT}
    {2985566400 -10800 1 CLST}
    {3009150000 -14400 0 CLT}
    {3017016000 -10800 1 CLST}
    {3040599600 -14400 0 CLT}
    {3049070400 -10800 1 CLST}
    {3072654000 -14400 0 CLT}
    {3080520000 -10800 1 CLST}
    {3104103600 -14400 0 CLT}
    {3111969600 -10800 1 CLST}
    {3135553200 -14400 0 CLT}
    {3143419200 -10800 1 CLST}
    {3167002800 -14400 0 CLT}
    {3174868800 -10800 1 CLST}
    {3198452400 -14400 0 CLT}
    {3206318400 -10800 1 CLST}
    {3230506800 -14400 0 CLT}
    {3238372800 -10800 1 CLST}
    {3261956400 -14400 0 CLT}
    {3269822400 -10800 1 CLST}
    {3293406000 -14400 0 CLT}
    {3301272000 -10800 1 CLST}
    {3324855600 -14400 0 CLT}
    {3332721600 -10800 1 CLST}
    {3356305200 -14400 0 CLT}
    {3364171200 -10800 1 CLST}
    {3387754800 -14400 0 CLT}
    {3396225600 -10800 1 CLST}
    {3419809200 -14400 0 CLT}
    {3427675200 -10800 1 CLST}
    {3451258800 -14400 0 CLT}
    {3459124800 -10800 1 CLST}
    {3482708400 -14400 0 CLT}
    {3490574400 -10800 1 CLST}
    {3514158000 -14400 0 CLT}
    {3522024000 -10800 1 CLST}
    {3545607600 -14400 0 CLT}
    {3553473600 -10800 1 CLST}
    {3577057200 -14400 0 CLT}
    {3585528000 -10800 1 CLST}
    {3609111600 -14400 0 CLT}
    {3616977600 -10800 1 CLST}
    {3640561200 -14400 0 CLT}
    {3648427200 -10800 1 CLST}
    {3672010800 -14400 0 CLT}
    {3679876800 -10800 1 CLST}
    {3703460400 -14400 0 CLT}
    {3711326400 -10800 1 CLST}
    {3734910000 -14400 0 CLT}
    {3743380800 -10800 1 CLST}
    {3766964400 -14400 0 CLT}
    {3774830400 -10800 1 CLST}
    {3798414000 -14400 0 CLT}
    {3806280000 -10800 1 CLST}
    {3829863600 -14400 0 CLT}
    {3837729600 -10800 1 CLST}
    {3861313200 -14400 0 CLT}
    {3869179200 -10800 1 CLST}
    {3892762800 -14400 0 CLT}
    {3900628800 -10800 1 CLST}
    {3924212400 -14400 0 CLT}
    {3932683200 -10800 1 CLST}
    {3956266800 -14400 0 CLT}
    {3964132800 -10800 1 CLST}
    {3987716400 -14400 0 CLT}
    {3995582400 -10800 1 CLST}
    {4019166000 -14400 0 CLT}
    {4027032000 -10800 1 CLST}
    {4050615600 -14400 0 CLT}
    {4058481600 -10800 1 CLST}
    {4082065200 -14400 0 CLT}
    {4089931200 -10800 1 CLST}
}
Changes to library/tzdata/Antarctica/Palmer.
77
78
79
80
81
82
83















































84

























































































































85
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130

131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

    {1313899200 -10800 1 CLST}
    {1335668400 -14400 0 CLT}
    {1346558400 -10800 1 CLST}
    {1367118000 -14400 0 CLT}
    {1378612800 -10800 1 CLST}
    {1398567600 -14400 0 CLT}
    {1410062400 -10800 1 CLST}
    {1463281200 -14400 0 CLT}
    {1471147200 -10800 1 CLST}
    {1494730800 -14400 0 CLT}
    {1502596800 -10800 1 CLST}
    {1526180400 -14400 0 CLT}
    {1534046400 -10800 1 CLST}
    {1557630000 -14400 0 CLT}
    {1565496000 -10800 1 CLST}
    {1589079600 -14400 0 CLT}
    {1596945600 -10800 1 CLST}
    {1620529200 -14400 0 CLT}
    {1629000000 -10800 1 CLST}
    {1652583600 -14400 0 CLT}
    {1660449600 -10800 1 CLST}
    {1684033200 -14400 0 CLT}
    {1691899200 -10800 1 CLST}
    {1715482800 -14400 0 CLT}
    {1723348800 -10800 1 CLST}
    {1746932400 -14400 0 CLT}
    {1754798400 -10800 1 CLST}
    {1778382000 -14400 0 CLT}
    {1786248000 -10800 1 CLST}
    {1809831600 -14400 0 CLT}
    {1818302400 -10800 1 CLST}
    {1841886000 -14400 0 CLT}
    {1849752000 -10800 1 CLST}
    {1873335600 -14400 0 CLT}
    {1881201600 -10800 1 CLST}
    {1904785200 -14400 0 CLT}
    {1912651200 -10800 1 CLST}
    {1936234800 -14400 0 CLT}
    {1944100800 -10800 1 CLST}
    {1967684400 -14400 0 CLT}
    {1976155200 -10800 1 CLST}
    {1999738800 -14400 0 CLT}
    {2007604800 -10800 1 CLST}
    {2031188400 -14400 0 CLT}
    {2039054400 -10800 1 CLST}
    {2062638000 -14400 0 CLT}
    {2070504000 -10800 1 CLST}
    {2094087600 -14400 0 CLT}
    {2101953600 -10800 1 CLST}
    {2125537200 -14400 0 CLT}
    {2133403200 -10800 1 CLST}
    {2156986800 -14400 0 CLT}
    {2165457600 -10800 1 CLST}
    {2189041200 -14400 0 CLT}
    {1430017200 -10800 0 CLT}
    {2196907200 -10800 1 CLST}
    {2220490800 -14400 0 CLT}
    {2228356800 -10800 1 CLST}
    {2251940400 -14400 0 CLT}
    {2259806400 -10800 1 CLST}
    {2283390000 -14400 0 CLT}
    {2291256000 -10800 1 CLST}
    {2314839600 -14400 0 CLT}
    {2322705600 -10800 1 CLST}
    {2346894000 -14400 0 CLT}
    {2354760000 -10800 1 CLST}
    {2378343600 -14400 0 CLT}
    {2386209600 -10800 1 CLST}
    {2409793200 -14400 0 CLT}
    {2417659200 -10800 1 CLST}
    {2441242800 -14400 0 CLT}
    {2449108800 -10800 1 CLST}
    {2472692400 -14400 0 CLT}
    {2480558400 -10800 1 CLST}
    {2504142000 -14400 0 CLT}
    {2512612800 -10800 1 CLST}
    {2536196400 -14400 0 CLT}
    {2544062400 -10800 1 CLST}
    {2567646000 -14400 0 CLT}
    {2575512000 -10800 1 CLST}
    {2599095600 -14400 0 CLT}
    {2606961600 -10800 1 CLST}
    {2630545200 -14400 0 CLT}
    {2638411200 -10800 1 CLST}
    {2661994800 -14400 0 CLT}
    {2669860800 -10800 1 CLST}
    {2693444400 -14400 0 CLT}
    {2701915200 -10800 1 CLST}
    {2725498800 -14400 0 CLT}
    {2733364800 -10800 1 CLST}
    {2756948400 -14400 0 CLT}
    {2764814400 -10800 1 CLST}
    {2788398000 -14400 0 CLT}
    {2796264000 -10800 1 CLST}
    {2819847600 -14400 0 CLT}
    {2827713600 -10800 1 CLST}
    {2851297200 -14400 0 CLT}
    {2859768000 -10800 1 CLST}
    {2883351600 -14400 0 CLT}
    {2891217600 -10800 1 CLST}
    {2914801200 -14400 0 CLT}
    {2922667200 -10800 1 CLST}
    {2946250800 -14400 0 CLT}
    {2954116800 -10800 1 CLST}
    {2977700400 -14400 0 CLT}
    {2985566400 -10800 1 CLST}
    {3009150000 -14400 0 CLT}
    {3017016000 -10800 1 CLST}
    {3040599600 -14400 0 CLT}
    {3049070400 -10800 1 CLST}
    {3072654000 -14400 0 CLT}
    {3080520000 -10800 1 CLST}
    {3104103600 -14400 0 CLT}
    {3111969600 -10800 1 CLST}
    {3135553200 -14400 0 CLT}
    {3143419200 -10800 1 CLST}
    {3167002800 -14400 0 CLT}
    {3174868800 -10800 1 CLST}
    {3198452400 -14400 0 CLT}
    {3206318400 -10800 1 CLST}
    {3230506800 -14400 0 CLT}
    {3238372800 -10800 1 CLST}
    {3261956400 -14400 0 CLT}
    {3269822400 -10800 1 CLST}
    {3293406000 -14400 0 CLT}
    {3301272000 -10800 1 CLST}
    {3324855600 -14400 0 CLT}
    {3332721600 -10800 1 CLST}
    {3356305200 -14400 0 CLT}
    {3364171200 -10800 1 CLST}
    {3387754800 -14400 0 CLT}
    {3396225600 -10800 1 CLST}
    {3419809200 -14400 0 CLT}
    {3427675200 -10800 1 CLST}
    {3451258800 -14400 0 CLT}
    {3459124800 -10800 1 CLST}
    {3482708400 -14400 0 CLT}
    {3490574400 -10800 1 CLST}
    {3514158000 -14400 0 CLT}
    {3522024000 -10800 1 CLST}
    {3545607600 -14400 0 CLT}
    {3553473600 -10800 1 CLST}
    {3577057200 -14400 0 CLT}
    {3585528000 -10800 1 CLST}
    {3609111600 -14400 0 CLT}
    {3616977600 -10800 1 CLST}
    {3640561200 -14400 0 CLT}
    {3648427200 -10800 1 CLST}
    {3672010800 -14400 0 CLT}
    {3679876800 -10800 1 CLST}
    {3703460400 -14400 0 CLT}
    {3711326400 -10800 1 CLST}
    {3734910000 -14400 0 CLT}
    {3743380800 -10800 1 CLST}
    {3766964400 -14400 0 CLT}
    {3774830400 -10800 1 CLST}
    {3798414000 -14400 0 CLT}
    {3806280000 -10800 1 CLST}
    {3829863600 -14400 0 CLT}
    {3837729600 -10800 1 CLST}
    {3861313200 -14400 0 CLT}
    {3869179200 -10800 1 CLST}
    {3892762800 -14400 0 CLT}
    {3900628800 -10800 1 CLST}
    {3924212400 -14400 0 CLT}
    {3932683200 -10800 1 CLST}
    {3956266800 -14400 0 CLT}
    {3964132800 -10800 1 CLST}
    {3987716400 -14400 0 CLT}
    {3995582400 -10800 1 CLST}
    {4019166000 -14400 0 CLT}
    {4027032000 -10800 1 CLST}
    {4050615600 -14400 0 CLT}
    {4058481600 -10800 1 CLST}
    {4082065200 -14400 0 CLT}
    {4089931200 -10800 1 CLST}
}
Changes to library/tzdata/Asia/Almaty.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

























29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54



























55
56
1
2
3
4
























5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29


























30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56

57




-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-

# created by tools/tclZIC.tcl - do not edit

set TZData(:Asia/Almaty) {
    {-9223372036854775808 18468 0 LMT}
    {-1441170468 18000 0 ALMT}
    {-1247547600 21600 0 ALMT}
    {354909600 25200 1 ALMST}
    {370717200 21600 0 ALMT}
    {386445600 25200 1 ALMST}
    {402253200 21600 0 ALMT}
    {417981600 25200 1 ALMST}
    {433789200 21600 0 ALMT}
    {449604000 25200 1 ALMST}
    {465336000 21600 0 ALMT}
    {481060800 25200 1 ALMST}
    {496785600 21600 0 ALMT}
    {512510400 25200 1 ALMST}
    {528235200 21600 0 ALMT}
    {543960000 25200 1 ALMST}
    {559684800 21600 0 ALMT}
    {575409600 25200 1 ALMST}
    {591134400 21600 0 ALMT}
    {606859200 25200 1 ALMST}
    {622584000 21600 0 ALMT}
    {638308800 25200 1 ALMST}
    {654638400 21600 0 ALMT}
    {662666400 21600 0 ALMT}
    {694202400 21600 0 ALMT}
    {-1441170468 18000 0 +05}
    {-1247547600 21600 0 +06}
    {354909600 25200 1 +07}
    {370717200 21600 0 +06}
    {386445600 25200 1 +07}
    {402253200 21600 0 +06}
    {417981600 25200 1 +07}
    {433789200 21600 0 +06}
    {449604000 25200 1 +07}
    {465336000 21600 0 +06}
    {481060800 25200 1 +07}
    {496785600 21600 0 +06}
    {512510400 25200 1 +07}
    {528235200 21600 0 +06}
    {543960000 25200 1 +07}
    {559684800 21600 0 +06}
    {575409600 25200 1 +07}
    {591134400 21600 0 +06}
    {606859200 25200 1 +07}
    {622584000 21600 0 +06}
    {638308800 25200 1 +07}
    {654638400 21600 0 +06}
    {670363200 18000 0 +05}
    {670366800 21600 1 +06}
    {686091600 18000 0 +05}
    {701802000 25200 1 ALMST}
    {717523200 21600 0 ALMT}
    {733262400 25200 1 ALMST}
    {748987200 21600 0 ALMT}
    {764712000 25200 1 ALMST}
    {780436800 21600 0 ALMT}
    {796161600 25200 1 ALMST}
    {811886400 21600 0 ALMT}
    {828216000 25200 1 ALMST}
    {846360000 21600 0 ALMT}
    {859665600 25200 1 ALMST}
    {877809600 21600 0 ALMT}
    {891115200 25200 1 ALMST}
    {909259200 21600 0 ALMT}
    {922564800 25200 1 ALMST}
    {941313600 21600 0 ALMT}
    {954014400 25200 1 ALMST}
    {972763200 21600 0 ALMT}
    {985464000 25200 1 ALMST}
    {1004212800 21600 0 ALMT}
    {1017518400 25200 1 ALMST}
    {1035662400 21600 0 ALMT}
    {1048968000 25200 1 ALMST}
    {1067112000 21600 0 ALMT}
    {1080417600 25200 1 ALMST}
    {1099166400 21600 0 ALMT}
    {695768400 21600 0 +06}
    {701812800 25200 1 +07}
    {717537600 21600 0 +06}
    {733262400 25200 1 +07}
    {748987200 21600 0 +06}
    {764712000 25200 1 +07}
    {780436800 21600 0 +06}
    {796161600 25200 1 +07}
    {811886400 21600 0 +06}
    {828216000 25200 1 +07}
    {846360000 21600 0 +06}
    {859665600 25200 1 +07}
    {877809600 21600 0 +06}
    {891115200 25200 1 +07}
    {909259200 21600 0 +06}
    {922564800 25200 1 +07}
    {941313600 21600 0 +06}
    {954014400 25200 1 +07}
    {972763200 21600 0 +06}
    {985464000 25200 1 +07}
    {1004212800 21600 0 +06}
    {1017518400 25200 1 +07}
    {1035662400 21600 0 +06}
    {1048968000 25200 1 +07}
    {1067112000 21600 0 +06}
    {1080417600 25200 1 +07}
    {1099166400 21600 0 +06}
    {1110823200 21600 0 ALMT}
}
Changes to library/tzdata/Asia/Anadyr.
25
26
27
28
29
30
31
32
33


34
35
36
37
38
39
40
25
26
27
28
29
30
31


32
33
34
35
36
37
38
39
40







-
-
+
+







    {622562400 43200 0 ANAT}
    {638287200 46800 1 ANAST}
    {654616800 43200 0 ANAT}
    {670341600 39600 0 ANAMMTT}
    {670345200 43200 1 ANAST}
    {686070000 39600 0 ANAT}
    {695746800 43200 0 ANAMMTT}
    {701780400 46800 1 ANAST}
    {717501600 43200 0 ANAT}
    {701791200 46800 1 ANAST}
    {717516000 43200 0 ANAT}
    {733240800 46800 1 ANAST}
    {748965600 43200 0 ANAT}
    {764690400 46800 1 ANAST}
    {780415200 43200 0 ANAT}
    {796140000 46800 1 ANAST}
    {811864800 43200 0 ANAT}
    {828194400 46800 1 ANAST}
Changes to library/tzdata/Asia/Aqtau.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56






















































57
58
1
2
3
4




















































5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58

59




-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-

# created by tools/tclZIC.tcl - do not edit

set TZData(:Asia/Aqtau) {
    {-9223372036854775808 12064 0 LMT}
    {-1441164064 14400 0 FORT}
    {-1247544000 18000 0 FORT}
    {-220942800 18000 0 SHET}
    {370724400 21600 0 SHET}
    {386445600 18000 0 SHET}
    {386449200 21600 1 SHEST}
    {402256800 18000 0 SHET}
    {417985200 21600 1 SHEST}
    {433792800 18000 0 SHET}
    {449607600 21600 1 SHEST}
    {465339600 18000 0 SHET}
    {481064400 21600 1 SHEST}
    {496789200 18000 0 SHET}
    {512514000 21600 1 SHEST}
    {528238800 18000 0 SHET}
    {543963600 21600 1 SHEST}
    {559688400 18000 0 SHET}
    {575413200 21600 1 SHEST}
    {591138000 18000 0 SHET}
    {606862800 21600 1 SHEST}
    {622587600 18000 0 SHET}
    {638312400 21600 1 SHEST}
    {654642000 18000 0 SHET}
    {662670000 18000 0 SHET}
    {692823600 18000 0 AQTT}
    {701805600 21600 1 AQTST}
    {717526800 18000 0 AQTT}
    {733266000 21600 1 AQTST}
    {748990800 18000 0 AQTT}
    {764715600 21600 1 AQTST}
    {780440400 18000 0 AQTT}
    {796165200 14400 0 AQTT}
    {796168800 18000 1 AQTST}
    {811893600 14400 0 AQTT}
    {828223200 18000 1 AQTST}
    {846367200 14400 0 AQTT}
    {859672800 18000 1 AQTST}
    {877816800 14400 0 AQTT}
    {891122400 18000 1 AQTST}
    {909266400 14400 0 AQTT}
    {922572000 18000 1 AQTST}
    {941320800 14400 0 AQTT}
    {954021600 18000 1 AQTST}
    {972770400 14400 0 AQTT}
    {985471200 18000 1 AQTST}
    {1004220000 14400 0 AQTT}
    {1017525600 18000 1 AQTST}
    {1035669600 14400 0 AQTT}
    {1048975200 18000 1 AQTST}
    {1067119200 14400 0 AQTT}
    {1080424800 18000 1 AQTST}
    {1099173600 14400 0 AQTT}
    {-1441164064 14400 0 +04}
    {-1247544000 18000 0 +05}
    {-220942800 18000 0 +05}
    {370724400 21600 0 +06}
    {386445600 18000 0 +05}
    {386449200 21600 1 +06}
    {402256800 18000 0 +05}
    {417985200 21600 1 +06}
    {433792800 18000 0 +05}
    {449607600 21600 1 +06}
    {465339600 18000 0 +05}
    {481064400 21600 1 +06}
    {496789200 18000 0 +05}
    {512514000 21600 1 +06}
    {528238800 18000 0 +05}
    {543963600 21600 1 +06}
    {559688400 18000 0 +05}
    {575413200 21600 1 +06}
    {591138000 18000 0 +05}
    {606862800 21600 1 +06}
    {622587600 18000 0 +05}
    {638312400 21600 1 +06}
    {654642000 18000 0 +05}
    {670366800 14400 0 +04}
    {670370400 18000 1 +05}
    {686095200 14400 0 +04}
    {695772000 18000 0 +05}
    {701816400 21600 1 +06}
    {717541200 18000 0 +05}
    {733266000 21600 1 +06}
    {748990800 18000 0 +05}
    {764715600 21600 1 +06}
    {780440400 18000 0 +05}
    {780444000 14400 0 +04}
    {796168800 18000 1 +05}
    {811893600 14400 0 +04}
    {828223200 18000 1 +05}
    {846367200 14400 0 +04}
    {859672800 18000 1 +05}
    {877816800 14400 0 +04}
    {891122400 18000 1 +05}
    {909266400 14400 0 +04}
    {922572000 18000 1 +05}
    {941320800 14400 0 +04}
    {954021600 18000 1 +05}
    {972770400 14400 0 +04}
    {985471200 18000 1 +05}
    {1004220000 14400 0 +04}
    {1017525600 18000 1 +05}
    {1035669600 14400 0 +04}
    {1048975200 18000 1 +05}
    {1067119200 14400 0 +04}
    {1080424800 18000 1 +05}
    {1099173600 18000 0 +05}
    {1110830400 18000 0 AQTT}
}
Changes to library/tzdata/Asia/Aqtobe.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27



























28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55


























56
57
1
2
3
4























5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31




























32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57

58




-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-

# created by tools/tclZIC.tcl - do not edit

set TZData(:Asia/Aqtobe) {
    {-9223372036854775808 13720 0 LMT}
    {-1441165720 14400 0 AKTT}
    {-1247544000 18000 0 AKTT}
    {354913200 21600 1 AKTST}
    {370720800 21600 0 AKTT}
    {386445600 18000 0 AKTT}
    {386449200 21600 1 AKTST}
    {402256800 18000 0 AKTT}
    {417985200 21600 1 AKTST}
    {433792800 18000 0 AKTT}
    {449607600 21600 1 AKTST}
    {465339600 18000 0 AKTT}
    {481064400 21600 1 AKTST}
    {496789200 18000 0 AKTT}
    {512514000 21600 1 AKTST}
    {528238800 18000 0 AKTT}
    {543963600 21600 1 AKTST}
    {559688400 18000 0 AKTT}
    {575413200 21600 1 AKTST}
    {591138000 18000 0 AKTT}
    {606862800 21600 1 AKTST}
    {622587600 18000 0 AKTT}
    {638312400 21600 1 AKTST}
    {654642000 18000 0 AKTT}
    {-1441165720 14400 0 +04}
    {-1247544000 18000 0 +05}
    {354913200 21600 1 +06}
    {370720800 21600 0 +06}
    {386445600 18000 0 +05}
    {386449200 21600 1 +06}
    {402256800 18000 0 +05}
    {417985200 21600 1 +06}
    {433792800 18000 0 +05}
    {449607600 21600 1 +06}
    {465339600 18000 0 +05}
    {481064400 21600 1 +06}
    {496789200 18000 0 +05}
    {512514000 21600 1 +06}
    {528238800 18000 0 +05}
    {543963600 21600 1 +06}
    {559688400 18000 0 +05}
    {575413200 21600 1 +06}
    {591138000 18000 0 +05}
    {606862800 21600 1 +06}
    {622587600 18000 0 +05}
    {638312400 21600 1 +06}
    {654642000 18000 0 +05}
    {670366800 14400 0 +04}
    {670370400 18000 1 +05}
    {686095200 14400 0 +04}
    {695772000 18000 0 +05}
    {662670000 18000 0 AKTT}
    {692823600 18000 0 AQTT}
    {701805600 21600 1 AQTST}
    {717526800 18000 0 AQTT}
    {733266000 21600 1 AQTST}
    {748990800 18000 0 AQTT}
    {764715600 21600 1 AQTST}
    {780440400 18000 0 AQTT}
    {796165200 21600 1 AQTST}
    {811890000 18000 0 AQTT}
    {828219600 21600 1 AQTST}
    {846363600 18000 0 AQTT}
    {859669200 21600 1 AQTST}
    {877813200 18000 0 AQTT}
    {891118800 21600 1 AQTST}
    {909262800 18000 0 AQTT}
    {922568400 21600 1 AQTST}
    {941317200 18000 0 AQTT}
    {954018000 21600 1 AQTST}
    {972766800 18000 0 AQTT}
    {985467600 21600 1 AQTST}
    {1004216400 18000 0 AQTT}
    {1017522000 21600 1 AQTST}
    {1035666000 18000 0 AQTT}
    {1048971600 21600 1 AQTST}
    {1067115600 18000 0 AQTT}
    {1080421200 21600 1 AQTST}
    {1099170000 18000 0 AQTT}
    {701816400 21600 1 +06}
    {717541200 18000 0 +05}
    {733266000 21600 1 +06}
    {748990800 18000 0 +05}
    {764715600 21600 1 +06}
    {780440400 18000 0 +05}
    {796165200 21600 1 +06}
    {811890000 18000 0 +05}
    {828219600 21600 1 +06}
    {846363600 18000 0 +05}
    {859669200 21600 1 +06}
    {877813200 18000 0 +05}
    {891118800 21600 1 +06}
    {909262800 18000 0 +05}
    {922568400 21600 1 +06}
    {941317200 18000 0 +05}
    {954018000 21600 1 +06}
    {972766800 18000 0 +05}
    {985467600 21600 1 +06}
    {1004216400 18000 0 +05}
    {1017522000 21600 1 +06}
    {1035666000 18000 0 +05}
    {1048971600 21600 1 +06}
    {1067115600 18000 0 +05}
    {1080421200 21600 1 +06}
    {1099170000 18000 0 +05}
    {1110826800 18000 0 AQTT}
}
Changes to library/tzdata/Asia/Baku.
23
24
25
26
27
28
29
30

31
32
33
34
35
36
37
23
24
25
26
27
28
29

30
31
32
33
34
35
36
37







-
+







    {606866400 18000 1 BAKST}
    {622591200 14400 0 BAKT}
    {638316000 18000 1 BAKST}
    {654645600 14400 0 BAKT}
    {670370400 14400 1 BAKST}
    {683496000 14400 0 AZST}
    {686098800 10800 0 AZT}
    {701812800 14400 1 AZST}
    {701823600 14400 1 AZST}
    {717537600 14400 0 AZT}
    {820440000 14400 0 AZT}
    {828234000 18000 1 AZST}
    {846378000 14400 0 AZT}
    {852062400 14400 0 AZT}
    {859680000 18000 1 AZST}
    {877824000 14400 0 AZT}
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
67
68
69
70
71
72
73








































































































































































74







-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

    {1351382400 14400 0 AZT}
    {1364688000 18000 1 AZST}
    {1382832000 14400 0 AZT}
    {1396137600 18000 1 AZST}
    {1414281600 14400 0 AZT}
    {1427587200 18000 1 AZST}
    {1445731200 14400 0 AZT}
    {1459036800 18000 1 AZST}
    {1477785600 14400 0 AZT}
    {1490486400 18000 1 AZST}
    {1509235200 14400 0 AZT}
    {1521936000 18000 1 AZST}
    {1540684800 14400 0 AZT}
    {1553990400 18000 1 AZST}
    {1572134400 14400 0 AZT}
    {1585440000 18000 1 AZST}
    {1603584000 14400 0 AZT}
    {1616889600 18000 1 AZST}
    {1635638400 14400 0 AZT}
    {1648339200 18000 1 AZST}
    {1667088000 14400 0 AZT}
    {1679788800 18000 1 AZST}
    {1698537600 14400 0 AZT}
    {1711843200 18000 1 AZST}
    {1729987200 14400 0 AZT}
    {1743292800 18000 1 AZST}
    {1761436800 14400 0 AZT}
    {1774742400 18000 1 AZST}
    {1792886400 14400 0 AZT}
    {1806192000 18000 1 AZST}
    {1824940800 14400 0 AZT}
    {1837641600 18000 1 AZST}
    {1856390400 14400 0 AZT}
    {1869091200 18000 1 AZST}
    {1887840000 14400 0 AZT}
    {1901145600 18000 1 AZST}
    {1919289600 14400 0 AZT}
    {1932595200 18000 1 AZST}
    {1950739200 14400 0 AZT}
    {1964044800 18000 1 AZST}
    {1982793600 14400 0 AZT}
    {1995494400 18000 1 AZST}
    {2014243200 14400 0 AZT}
    {2026944000 18000 1 AZST}
    {2045692800 14400 0 AZT}
    {2058393600 18000 1 AZST}
    {2077142400 14400 0 AZT}
    {2090448000 18000 1 AZST}
    {2108592000 14400 0 AZT}
    {2121897600 18000 1 AZST}
    {2140041600 14400 0 AZT}
    {2153347200 18000 1 AZST}
    {2172096000 14400 0 AZT}
    {2184796800 18000 1 AZST}
    {2203545600 14400 0 AZT}
    {2216246400 18000 1 AZST}
    {2234995200 14400 0 AZT}
    {2248300800 18000 1 AZST}
    {2266444800 14400 0 AZT}
    {2279750400 18000 1 AZST}
    {2297894400 14400 0 AZT}
    {2311200000 18000 1 AZST}
    {2329344000 14400 0 AZT}
    {2342649600 18000 1 AZST}
    {2361398400 14400 0 AZT}
    {2374099200 18000 1 AZST}
    {2392848000 14400 0 AZT}
    {2405548800 18000 1 AZST}
    {2424297600 14400 0 AZT}
    {2437603200 18000 1 AZST}
    {2455747200 14400 0 AZT}
    {2469052800 18000 1 AZST}
    {2487196800 14400 0 AZT}
    {2500502400 18000 1 AZST}
    {2519251200 14400 0 AZT}
    {2531952000 18000 1 AZST}
    {2550700800 14400 0 AZT}
    {2563401600 18000 1 AZST}
    {2582150400 14400 0 AZT}
    {2595456000 18000 1 AZST}
    {2613600000 14400 0 AZT}
    {2626905600 18000 1 AZST}
    {2645049600 14400 0 AZT}
    {2658355200 18000 1 AZST}
    {2676499200 14400 0 AZT}
    {2689804800 18000 1 AZST}
    {2708553600 14400 0 AZT}
    {2721254400 18000 1 AZST}
    {2740003200 14400 0 AZT}
    {2752704000 18000 1 AZST}
    {2771452800 14400 0 AZT}
    {2784758400 18000 1 AZST}
    {2802902400 14400 0 AZT}
    {2816208000 18000 1 AZST}
    {2834352000 14400 0 AZT}
    {2847657600 18000 1 AZST}
    {2866406400 14400 0 AZT}
    {2879107200 18000 1 AZST}
    {2897856000 14400 0 AZT}
    {2910556800 18000 1 AZST}
    {2929305600 14400 0 AZT}
    {2942006400 18000 1 AZST}
    {2960755200 14400 0 AZT}
    {2974060800 18000 1 AZST}
    {2992204800 14400 0 AZT}
    {3005510400 18000 1 AZST}
    {3023654400 14400 0 AZT}
    {3036960000 18000 1 AZST}
    {3055708800 14400 0 AZT}
    {3068409600 18000 1 AZST}
    {3087158400 14400 0 AZT}
    {3099859200 18000 1 AZST}
    {3118608000 14400 0 AZT}
    {3131913600 18000 1 AZST}
    {3150057600 14400 0 AZT}
    {3163363200 18000 1 AZST}
    {3181507200 14400 0 AZT}
    {3194812800 18000 1 AZST}
    {3212956800 14400 0 AZT}
    {3226262400 18000 1 AZST}
    {3245011200 14400 0 AZT}
    {3257712000 18000 1 AZST}
    {3276460800 14400 0 AZT}
    {3289161600 18000 1 AZST}
    {3307910400 14400 0 AZT}
    {3321216000 18000 1 AZST}
    {3339360000 14400 0 AZT}
    {3352665600 18000 1 AZST}
    {3370809600 14400 0 AZT}
    {3384115200 18000 1 AZST}
    {3402864000 14400 0 AZT}
    {3415564800 18000 1 AZST}
    {3434313600 14400 0 AZT}
    {3447014400 18000 1 AZST}
    {3465763200 14400 0 AZT}
    {3479068800 18000 1 AZST}
    {3497212800 14400 0 AZT}
    {3510518400 18000 1 AZST}
    {3528662400 14400 0 AZT}
    {3541968000 18000 1 AZST}
    {3560112000 14400 0 AZT}
    {3573417600 18000 1 AZST}
    {3592166400 14400 0 AZT}
    {3604867200 18000 1 AZST}
    {3623616000 14400 0 AZT}
    {3636316800 18000 1 AZST}
    {3655065600 14400 0 AZT}
    {3668371200 18000 1 AZST}
    {3686515200 14400 0 AZT}
    {3699820800 18000 1 AZST}
    {3717964800 14400 0 AZT}
    {3731270400 18000 1 AZST}
    {3750019200 14400 0 AZT}
    {3762720000 18000 1 AZST}
    {3781468800 14400 0 AZT}
    {3794169600 18000 1 AZST}
    {3812918400 14400 0 AZT}
    {3825619200 18000 1 AZST}
    {3844368000 14400 0 AZT}
    {3857673600 18000 1 AZST}
    {3875817600 14400 0 AZT}
    {3889123200 18000 1 AZST}
    {3907267200 14400 0 AZT}
    {3920572800 18000 1 AZST}
    {3939321600 14400 0 AZT}
    {3952022400 18000 1 AZST}
    {3970771200 14400 0 AZT}
    {3983472000 18000 1 AZST}
    {4002220800 14400 0 AZT}
    {4015526400 18000 1 AZST}
    {4033670400 14400 0 AZT}
    {4046976000 18000 1 AZST}
    {4065120000 14400 0 AZT}
    {4078425600 18000 1 AZST}
    {4096569600 14400 0 AZT}
}
Added library/tzdata/Asia/Barnaul.









































































1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
# created by tools/tclZIC.tcl - do not edit

set TZData(:Asia/Barnaul) {
    {-9223372036854775808 20100 0 LMT}
    {-1579844100 21600 0 +06}
    {-1247551200 25200 0 +08}
    {354906000 28800 1 +08}
    {370713600 25200 0 +07}
    {386442000 28800 1 +08}
    {402249600 25200 0 +07}
    {417978000 28800 1 +08}
    {433785600 25200 0 +07}
    {449600400 28800 1 +08}
    {465332400 25200 0 +07}
    {481057200 28800 1 +08}
    {496782000 25200 0 +07}
    {512506800 28800 1 +08}
    {528231600 25200 0 +07}
    {543956400 28800 1 +08}
    {559681200 25200 0 +07}
    {575406000 28800 1 +08}
    {591130800 25200 0 +07}
    {606855600 28800 1 +08}
    {622580400 25200 0 +07}
    {638305200 28800 1 +08}
    {654634800 25200 0 +07}
    {670359600 21600 0 +07}
    {670363200 25200 1 +07}
    {686088000 21600 0 +06}
    {695764800 25200 0 +08}
    {701809200 28800 1 +08}
    {717534000 25200 0 +07}
    {733258800 28800 1 +08}
    {748983600 25200 0 +07}
    {764708400 28800 1 +08}
    {780433200 25200 0 +07}
    {796158000 28800 1 +08}
    {801594000 25200 0 +07}
    {811886400 21600 0 +06}
    {828216000 25200 1 +07}
    {846360000 21600 0 +06}
    {859665600 25200 1 +07}
    {877809600 21600 0 +06}
    {891115200 25200 1 +07}
    {909259200 21600 0 +06}
    {922564800 25200 1 +07}
    {941313600 21600 0 +06}
    {954014400 25200 1 +07}
    {972763200 21600 0 +06}
    {985464000 25200 1 +07}
    {1004212800 21600 0 +06}
    {1017518400 25200 1 +07}
    {1035662400 21600 0 +06}
    {1048968000 25200 1 +07}
    {1067112000 21600 0 +06}
    {1080417600 25200 1 +07}
    {1099166400 21600 0 +06}
    {1111867200 25200 1 +07}
    {1130616000 21600 0 +06}
    {1143316800 25200 1 +07}
    {1162065600 21600 0 +06}
    {1174766400 25200 1 +07}
    {1193515200 21600 0 +06}
    {1206820800 25200 1 +07}
    {1224964800 21600 0 +06}
    {1238270400 25200 1 +07}
    {1256414400 21600 0 +06}
    {1269720000 25200 1 +07}
    {1288468800 21600 0 +06}
    {1301169600 25200 0 +07}
    {1414263600 21600 0 +06}
    {1459022400 25200 0 +07}
}
Changes to library/tzdata/Asia/Chita.
24
25
26
27
28
29
30
31
32


33
34
35
36
37
38
39
24
25
26
27
28
29
30


31
32
33
34
35
36
37
38
39







-
-
+
+







    {622573200 32400 0 YAKT}
    {638298000 36000 1 YAKST}
    {654627600 32400 0 YAKT}
    {670352400 28800 0 YAKMMTT}
    {670356000 32400 1 YAKST}
    {686080800 28800 0 YAKT}
    {695757600 32400 0 YAKMMTT}
    {701791200 36000 1 YAKST}
    {717512400 32400 0 YAKT}
    {701802000 36000 1 YAKST}
    {717526800 32400 0 YAKT}
    {733251600 36000 1 YAKST}
    {748976400 32400 0 YAKT}
    {764701200 36000 1 YAKST}
    {780426000 32400 0 YAKT}
    {796150800 36000 1 YAKST}
    {811875600 32400 0 YAKT}
    {828205200 36000 1 YAKST}
Changes to library/tzdata/Asia/Gaza.
103
104
105
106
107
108
109
110

111
112

113
114

115
116

117
118

119
120

121
122

123
124

125
126

127
128

129
130

131
132

133
134

135
136

137
138

139
140

141
142

143
144

145
146

147
148

149
150

151
152

153
154

155
156

157
158

159
160

161
162

163
164

165
166

167
168

169
170

171
172

173
174

175
176

177
178

179
180

181
182

183
184

185
186

187
188

189
190

191
192

193
194

195
196

197
198

199
200

201
202

203
204

205
206

207
208

209
210

211
212

213
214

215
216

217
218

219
220

221
222

223
224

225
226

227
228

229
230

231
232

233
234

235
236

237
238

239
240

241
242

243
244

245
246

247
248

249
250

251
252

253
254

255
256

257
258

259
260

261
262

263
264

265
266

267
268

269
270

271
272

273
274

275
276

277
278
103
104
105
106
107
108
109

110
111

112
113

114
115

116
117

118
119

120
121

122
123

124
125

126
127

128
129

130
131

132
133

134
135

136
137

138
139

140
141

142
143

144
145

146
147

148
149

150
151

152
153

154
155

156
157

158
159

160
161

162
163

164
165

166
167

168
169

170
171

172
173

174
175

176
177

178
179

180
181

182
183

184
185

186
187

188
189

190
191

192
193

194
195

196
197

198
199

200
201

202
203

204
205

206
207

208
209

210
211

212
213

214
215

216
217

218
219

220
221

222
223

224
225

226
227

228
229

230
231

232
233

234
235

236
237

238
239

240
241

242
243

244
245

246
247

248
249

250
251

252
253

254
255

256
257

258
259

260
261

262
263

264
265

266
267

268
269

270
271

272
273

274
275

276
277
278







-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+


    {1348178400 7200 0 EET}
    {1364508000 10800 1 EEST}
    {1380229200 7200 0 EET}
    {1395957600 10800 1 EEST}
    {1414098000 7200 0 EET}
    {1427493600 10800 1 EEST}
    {1445547600 7200 0 EET}
    {1458943200 10800 1 EEST}
    {1458946800 10800 1 EEST}
    {1476997200 7200 0 EET}
    {1490997600 10800 1 EEST}
    {1490396400 10800 1 EEST}
    {1509051600 7200 0 EET}
    {1522447200 10800 1 EEST}
    {1522450800 10800 1 EEST}
    {1540501200 7200 0 EET}
    {1553896800 10800 1 EEST}
    {1553900400 10800 1 EEST}
    {1571950800 7200 0 EET}
    {1585346400 10800 1 EEST}
    {1585350000 10800 1 EEST}
    {1603400400 7200 0 EET}
    {1616796000 10800 1 EEST}
    {1616799600 10800 1 EEST}
    {1634850000 7200 0 EET}
    {1648245600 10800 1 EEST}
    {1648249200 10800 1 EEST}
    {1666299600 7200 0 EET}
    {1680300000 10800 1 EEST}
    {1679698800 10800 1 EEST}
    {1698354000 7200 0 EET}
    {1711749600 10800 1 EEST}
    {1711753200 10800 1 EEST}
    {1729803600 7200 0 EET}
    {1743199200 10800 1 EEST}
    {1743202800 10800 1 EEST}
    {1761253200 7200 0 EET}
    {1774648800 10800 1 EEST}
    {1774652400 10800 1 EEST}
    {1792702800 7200 0 EET}
    {1806098400 10800 1 EEST}
    {1806102000 10800 1 EEST}
    {1824152400 7200 0 EET}
    {1838152800 10800 1 EEST}
    {1837551600 10800 1 EEST}
    {1856206800 7200 0 EET}
    {1869602400 10800 1 EEST}
    {1869606000 10800 1 EEST}
    {1887656400 7200 0 EET}
    {1901052000 10800 1 EEST}
    {1901055600 10800 1 EEST}
    {1919106000 7200 0 EET}
    {1932501600 10800 1 EEST}
    {1932505200 10800 1 EEST}
    {1950555600 7200 0 EET}
    {1963951200 10800 1 EEST}
    {1963954800 10800 1 EEST}
    {1982005200 7200 0 EET}
    {1995400800 10800 1 EEST}
    {1995404400 10800 1 EEST}
    {2013454800 7200 0 EET}
    {2027455200 10800 1 EEST}
    {2026854000 10800 1 EEST}
    {2045509200 7200 0 EET}
    {2058904800 10800 1 EEST}
    {2058908400 10800 1 EEST}
    {2076958800 7200 0 EET}
    {2090354400 10800 1 EEST}
    {2090358000 10800 1 EEST}
    {2108408400 7200 0 EET}
    {2121804000 10800 1 EEST}
    {2121807600 10800 1 EEST}
    {2139858000 7200 0 EET}
    {2153253600 10800 1 EEST}
    {2153257200 10800 1 EEST}
    {2171307600 7200 0 EET}
    {2184703200 10800 1 EEST}
    {2184706800 10800 1 EEST}
    {2202757200 7200 0 EET}
    {2216757600 10800 1 EEST}
    {2216761200 10800 1 EEST}
    {2234811600 7200 0 EET}
    {2248207200 10800 1 EEST}
    {2248210800 10800 1 EEST}
    {2266261200 7200 0 EET}
    {2279656800 10800 1 EEST}
    {2279660400 10800 1 EEST}
    {2297710800 7200 0 EET}
    {2311106400 10800 1 EEST}
    {2311110000 10800 1 EEST}
    {2329160400 7200 0 EET}
    {2342556000 10800 1 EEST}
    {2342559600 10800 1 EEST}
    {2360610000 7200 0 EET}
    {2374610400 10800 1 EEST}
    {2374009200 10800 1 EEST}
    {2392664400 7200 0 EET}
    {2406060000 10800 1 EEST}
    {2406063600 10800 1 EEST}
    {2424114000 7200 0 EET}
    {2437509600 10800 1 EEST}
    {2437513200 10800 1 EEST}
    {2455563600 7200 0 EET}
    {2468959200 10800 1 EEST}
    {2468962800 10800 1 EEST}
    {2487013200 7200 0 EET}
    {2500408800 10800 1 EEST}
    {2500412400 10800 1 EEST}
    {2518462800 7200 0 EET}
    {2531858400 10800 1 EEST}
    {2531862000 10800 1 EEST}
    {2549912400 7200 0 EET}
    {2563912800 10800 1 EEST}
    {2563311600 10800 1 EEST}
    {2581966800 7200 0 EET}
    {2595362400 10800 1 EEST}
    {2595366000 10800 1 EEST}
    {2613416400 7200 0 EET}
    {2626812000 10800 1 EEST}
    {2626815600 10800 1 EEST}
    {2644866000 7200 0 EET}
    {2658261600 10800 1 EEST}
    {2658265200 10800 1 EEST}
    {2676315600 7200 0 EET}
    {2689711200 10800 1 EEST}
    {2689714800 10800 1 EEST}
    {2707765200 7200 0 EET}
    {2721765600 10800 1 EEST}
    {2721164400 10800 1 EEST}
    {2739819600 7200 0 EET}
    {2753215200 10800 1 EEST}
    {2753218800 10800 1 EEST}
    {2771269200 7200 0 EET}
    {2784664800 10800 1 EEST}
    {2784668400 10800 1 EEST}
    {2802718800 7200 0 EET}
    {2816114400 10800 1 EEST}
    {2816118000 10800 1 EEST}
    {2834168400 7200 0 EET}
    {2847564000 10800 1 EEST}
    {2847567600 10800 1 EEST}
    {2865618000 7200 0 EET}
    {2879013600 10800 1 EEST}
    {2879017200 10800 1 EEST}
    {2897067600 7200 0 EET}
    {2911068000 10800 1 EEST}
    {2910466800 10800 1 EEST}
    {2929122000 7200 0 EET}
    {2942517600 10800 1 EEST}
    {2942521200 10800 1 EEST}
    {2960571600 7200 0 EET}
    {2973967200 10800 1 EEST}
    {2973970800 10800 1 EEST}
    {2992021200 7200 0 EET}
    {3005416800 10800 1 EEST}
    {3005420400 10800 1 EEST}
    {3023470800 7200 0 EET}
    {3036866400 10800 1 EEST}
    {3036870000 10800 1 EEST}
    {3054920400 7200 0 EET}
    {3068316000 10800 1 EEST}
    {3068319600 10800 1 EEST}
    {3086370000 7200 0 EET}
    {3100370400 10800 1 EEST}
    {3100374000 10800 1 EEST}
    {3118424400 7200 0 EET}
    {3131820000 10800 1 EEST}
    {3131823600 10800 1 EEST}
    {3149874000 7200 0 EET}
    {3163269600 10800 1 EEST}
    {3163273200 10800 1 EEST}
    {3181323600 7200 0 EET}
    {3194719200 10800 1 EEST}
    {3194722800 10800 1 EEST}
    {3212773200 7200 0 EET}
    {3226168800 10800 1 EEST}
    {3226172400 10800 1 EEST}
    {3244222800 7200 0 EET}
    {3258223200 10800 1 EEST}
    {3257622000 10800 1 EEST}
    {3276277200 7200 0 EET}
    {3289672800 10800 1 EEST}
    {3289676400 10800 1 EEST}
    {3307726800 7200 0 EET}
    {3321122400 10800 1 EEST}
    {3321126000 10800 1 EEST}
    {3339176400 7200 0 EET}
    {3352572000 10800 1 EEST}
    {3352575600 10800 1 EEST}
    {3370626000 7200 0 EET}
    {3384021600 10800 1 EEST}
    {3384025200 10800 1 EEST}
    {3402075600 7200 0 EET}
    {3415471200 10800 1 EEST}
    {3415474800 10800 1 EEST}
    {3433525200 7200 0 EET}
    {3447525600 10800 1 EEST}
    {3446924400 10800 1 EEST}
    {3465579600 7200 0 EET}
    {3478975200 10800 1 EEST}
    {3478978800 10800 1 EEST}
    {3497029200 7200 0 EET}
    {3510424800 10800 1 EEST}
    {3510428400 10800 1 EEST}
    {3528478800 7200 0 EET}
    {3541874400 10800 1 EEST}
    {3541878000 10800 1 EEST}
    {3559928400 7200 0 EET}
    {3573324000 10800 1 EEST}
    {3573327600 10800 1 EEST}
    {3591378000 7200 0 EET}
    {3605378400 10800 1 EEST}
    {3604777200 10800 1 EEST}
    {3623432400 7200 0 EET}
    {3636828000 10800 1 EEST}
    {3636831600 10800 1 EEST}
    {3654882000 7200 0 EET}
    {3668277600 10800 1 EEST}
    {3668281200 10800 1 EEST}
    {3686331600 7200 0 EET}
    {3699727200 10800 1 EEST}
    {3699730800 10800 1 EEST}
    {3717781200 7200 0 EET}
    {3731176800 10800 1 EEST}
    {3731180400 10800 1 EEST}
    {3749230800 7200 0 EET}
    {3762626400 10800 1 EEST}
    {3762630000 10800 1 EEST}
    {3780680400 7200 0 EET}
    {3794680800 10800 1 EEST}
    {3794079600 10800 1 EEST}
    {3812734800 7200 0 EET}
    {3826130400 10800 1 EEST}
    {3826134000 10800 1 EEST}
    {3844184400 7200 0 EET}
    {3857580000 10800 1 EEST}
    {3857583600 10800 1 EEST}
    {3875634000 7200 0 EET}
    {3889029600 10800 1 EEST}
    {3889033200 10800 1 EEST}
    {3907083600 7200 0 EET}
    {3920479200 10800 1 EEST}
    {3920482800 10800 1 EEST}
    {3938533200 7200 0 EET}
    {3951928800 10800 1 EEST}
    {3951932400 10800 1 EEST}
    {3969982800 7200 0 EET}
    {3983983200 10800 1 EEST}
    {3983986800 10800 1 EEST}
    {4002037200 7200 0 EET}
    {4015432800 10800 1 EEST}
    {4015436400 10800 1 EEST}
    {4033486800 7200 0 EET}
    {4046882400 10800 1 EEST}
    {4046886000 10800 1 EEST}
    {4064936400 7200 0 EET}
    {4078332000 10800 1 EEST}
    {4078335600 10800 1 EEST}
    {4096386000 7200 0 EET}
}
Changes to library/tzdata/Asia/Hebron.
102
103
104
105
106
107
108
109

110
111

112
113

114
115

116
117

118
119

120
121

122
123

124
125

126
127

128
129

130
131

132
133

134
135

136
137

138
139

140
141

142
143

144
145

146
147

148
149

150
151

152
153

154
155

156
157

158
159

160
161

162
163

164
165

166
167

168
169

170
171

172
173

174
175

176
177

178
179

180
181

182
183

184
185

186
187

188
189

190
191

192
193

194
195

196
197

198
199

200
201

202
203

204
205

206
207

208
209

210
211

212
213

214
215

216
217

218
219

220
221

222
223

224
225

226
227

228
229

230
231

232
233

234
235

236
237

238
239

240
241

242
243

244
245

246
247

248
249

250
251

252
253

254
255

256
257

258
259

260
261

262
263

264
265

266
267

268
269

270
271

272
273

274
275

276
277
102
103
104
105
106
107
108

109
110

111
112

113
114

115
116

117
118

119
120

121
122

123
124

125
126

127
128

129
130

131
132

133
134

135
136

137
138

139
140

141
142

143
144

145
146

147
148

149
150

151
152

153
154

155
156

157
158

159
160

161
162

163
164

165
166

167
168

169
170

171
172

173
174

175
176

177
178

179
180

181
182

183
184

185
186

187
188

189
190

191
192

193
194

195
196

197
198

199
200

201
202

203
204

205
206

207
208

209
210

211
212

213
214

215
216

217
218

219
220

221
222

223
224

225
226

227
228

229
230

231
232

233
234

235
236

237
238

239
240

241
242

243
244

245
246

247
248

249
250

251
252

253
254

255
256

257
258

259
260

261
262

263
264

265
266

267
268

269
270

271
272

273
274

275
276
277







-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+

-
+


    {1348178400 7200 0 EET}
    {1364508000 10800 1 EEST}
    {1380229200 7200 0 EET}
    {1395957600 10800 1 EEST}
    {1414098000 7200 0 EET}
    {1427493600 10800 1 EEST}
    {1445547600 7200 0 EET}
    {1458943200 10800 1 EEST}
    {1458946800 10800 1 EEST}
    {1476997200 7200 0 EET}
    {1490997600 10800 1 EEST}
    {1490396400 10800 1 EEST}
    {1509051600 7200 0 EET}
    {1522447200 10800 1 EEST}
    {1522450800 10800 1 EEST}
    {1540501200 7200 0 EET}
    {1553896800 10800 1 EEST}
    {1553900400 10800 1 EEST}
    {1571950800 7200 0 EET}
    {1585346400 10800 1 EEST}
    {1585350000 10800 1 EEST}
    {1603400400 7200 0 EET}
    {1616796000 10800 1 EEST}
    {1616799600 10800 1 EEST}
    {1634850000 7200 0 EET}
    {1648245600 10800 1 EEST}
    {1648249200 10800 1 EEST}
    {1666299600 7200 0 EET}
    {1680300000 10800 1 EEST}
    {1679698800 10800 1 EEST}
    {1698354000 7200 0 EET}
    {1711749600 10800 1 EEST}
    {1711753200 10800 1 EEST}
    {1729803600 7200 0 EET}
    {1743199200 10800 1 EEST}
    {1743202800 10800 1 EEST}
    {1761253200 7200 0 EET}
    {1774648800 10800 1 EEST}
    {1774652400 10800 1 EEST}
    {1792702800 7200 0 EET}
    {1806098400 10800 1 EEST}
    {1806102000 10800 1 EEST}
    {1824152400 7200 0 EET}
    {1838152800 10800 1 EEST}
    {1837551600 10800 1 EEST}
    {1856206800 7200 0 EET}
    {1869602400 10800 1 EEST}
    {1869606000 10800 1 EEST}
    {1887656400 7200 0 EET}
    {1901052000 10800 1 EEST}
    {1901055600 10800 1 EEST}
    {1919106000 7200 0 EET}
    {1932501600 10800 1 EEST}
    {1932505200 10800 1 EEST}
    {1950555600 7200 0 EET}
    {1963951200 10800 1 EEST}
    {1963954800 10800 1 EEST}
    {1982005200 7200 0 EET}
    {1995400800 10800 1 EEST}
    {1995404400 10800 1 EEST}
    {2013454800 7200 0 EET}
    {2027455200 10800 1 EEST}
    {2026854000 10800 1 EEST}
    {2045509200 7200 0 EET}
    {2058904800 10800 1 EEST}
    {2058908400 10800 1 EEST}
    {2076958800 7200 0 EET}
    {2090354400 10800 1 EEST}
    {2090358000 10800 1 EEST}
    {2108408400 7200 0 EET}
    {2121804000 10800 1 EEST}
    {2121807600 10800 1 EEST}
    {2139858000 7200 0 EET}
    {2153253600 10800 1 EEST}
    {2153257200 10800 1 EEST}
    {2171307600 7200 0 EET}
    {2184703200 10800 1 EEST}
    {2184706800 10800 1 EEST}
    {2202757200 7200 0 EET}
    {2216757600 10800 1 EEST}
    {2216761200 10800 1 EEST}
    {2234811600 7200 0 EET}
    {2248207200 10800 1 EEST}
    {2248210800 10800 1 EEST}
    {2266261200 7200 0 EET}
    {2279656800 10800 1 EEST}
    {2279660400 10800 1 EEST}
    {2297710800 7200 0 EET}
    {2311106400 10800 1 EEST}
    {2311110000 10800 1 EEST}
    {2329160400 7200 0 EET}
    {2342556000 10800 1 EEST}
    {2342559600 10800 1 EEST}
    {2360610000 7200 0 EET}
    {2374610400 10800 1 EEST}
    {2374009200 10800 1 EEST}
    {2392664400 7200 0 EET}
    {2406060000 10800 1 EEST}
    {2406063600 10800 1 EEST}
    {2424114000 7200 0 EET}
    {2437509600 10800 1 EEST}
    {2437513200 10800 1 EEST}
    {2455563600 7200 0 EET}
    {2468959200 10800 1 EEST}
    {2468962800 10800 1 EEST}
    {2487013200 7200 0 EET}
    {2500408800 10800 1 EEST}
    {2500412400 10800 1 EEST}
    {2518462800 7200 0 EET}
    {2531858400 10800 1 EEST}
    {2531862000 10800 1 EEST}
    {2549912400 7200 0 EET}
    {2563912800 10800 1 EEST}
    {2563311600 10800 1 EEST}
    {2581966800 7200 0 EET}
    {2595362400 10800 1 EEST}
    {2595366000 10800 1 EEST}
    {2613416400 7200 0 EET}
    {2626812000 10800 1 EEST}
    {2626815600 10800 1 EEST}
    {2644866000 7200 0 EET}
    {2658261600 10800 1 EEST}
    {2658265200 10800 1 EEST}
    {2676315600 7200 0 EET}
    {2689711200 10800 1 EEST}
    {2689714800 10800 1 EEST}
    {2707765200 7200 0 EET}
    {2721765600 10800 1 EEST}
    {2721164400 10800 1 EEST}
    {2739819600 7200 0 EET}
    {2753215200 10800 1 EEST}
    {2753218800 10800 1 EEST}
    {2771269200 7200 0 EET}
    {2784664800 10800 1 EEST}
    {2784668400 10800 1 EEST}
    {2802718800 7200 0 EET}
    {2816114400 10800 1 EEST}
    {2816118000 10800 1 EEST}
    {2834168400 7200 0 EET}
    {2847564000 10800 1 EEST}
    {2847567600 10800 1 EEST}
    {2865618000 7200 0 EET}
    {2879013600 10800 1 EEST}
    {2879017200 10800 1 EEST}
    {2897067600 7200 0 EET}
    {2911068000 10800 1 EEST}
    {2910466800 10800 1 EEST}
    {2929122000 7200 0 EET}
    {2942517600 10800 1 EEST}
    {2942521200 10800 1 EEST}
    {2960571600 7200 0 EET}
    {2973967200 10800 1 EEST}
    {2973970800 10800 1 EEST}
    {2992021200 7200 0 EET}
    {3005416800 10800 1 EEST}
    {3005420400 10800 1 EEST}
    {3023470800 7200 0 EET}
    {3036866400 10800 1 EEST}
    {3036870000 10800 1 EEST}
    {3054920400 7200 0 EET}
    {3068316000 10800 1 EEST}
    {3068319600 10800 1 EEST}
    {3086370000 7200 0 EET}
    {3100370400 10800 1 EEST}
    {3100374000 10800 1 EEST}
    {3118424400 7200 0 EET}
    {3131820000 10800 1 EEST}
    {3131823600 10800 1 EEST}
    {3149874000 7200 0 EET}
    {3163269600 10800 1 EEST}
    {3163273200 10800 1 EEST}
    {3181323600 7200 0 EET}
    {3194719200 10800 1 EEST}
    {3194722800 10800 1 EEST}
    {3212773200 7200 0 EET}
    {3226168800 10800 1 EEST}
    {3226172400 10800 1 EEST}
    {3244222800 7200 0 EET}
    {3258223200 10800 1 EEST}
    {3257622000 10800 1 EEST}
    {3276277200 7200 0 EET}
    {3289672800 10800 1 EEST}
    {3289676400 10800 1 EEST}
    {3307726800 7200 0 EET}
    {3321122400 10800 1 EEST}
    {3321126000 10800 1 EEST}
    {3339176400 7200 0 EET}
    {3352572000 10800 1 EEST}
    {3352575600 10800 1 EEST}
    {3370626000 7200 0 EET}
    {3384021600 10800 1 EEST}
    {3384025200 10800 1 EEST}
    {3402075600 7200 0 EET}
    {3415471200 10800 1 EEST}
    {3415474800 10800 1 EEST}
    {3433525200 7200 0 EET}
    {3447525600 10800 1 EEST}
    {3446924400 10800 1 EEST}
    {3465579600 7200 0 EET}
    {3478975200 10800 1 EEST}
    {3478978800 10800 1 EEST}
    {3497029200 7200 0 EET}
    {3510424800 10800 1 EEST}
    {3510428400 10800 1 EEST}
    {3528478800 7200 0 EET}
    {3541874400 10800 1 EEST}
    {3541878000 10800 1 EEST}
    {3559928400 7200 0 EET}
    {3573324000 10800 1 EEST}
    {3573327600 10800 1 EEST}
    {3591378000 7200 0 EET}
    {3605378400 10800 1 EEST}
    {3604777200 10800 1 EEST}
    {3623432400 7200 0 EET}
    {3636828000 10800 1 EEST}
    {3636831600 10800 1 EEST}
    {3654882000 7200 0 EET}
    {3668277600 10800 1 EEST}
    {3668281200 10800 1 EEST}
    {3686331600 7200 0 EET}
    {3699727200 10800 1 EEST}
    {3699730800 10800 1 EEST}
    {3717781200 7200 0 EET}
    {3731176800 10800 1 EEST}
    {3731180400 10800 1 EEST}
    {3749230800 7200 0 EET}
    {3762626400 10800 1 EEST}
    {3762630000 10800 1 EEST}
    {3780680400 7200 0 EET}
    {3794680800 10800 1 EEST}
    {3794079600 10800 1 EEST}
    {3812734800 7200 0 EET}
    {3826130400 10800 1 EEST}
    {3826134000 10800 1 EEST}
    {3844184400 7200 0 EET}
    {3857580000 10800 1 EEST}
    {3857583600 10800 1 EEST}
    {3875634000 7200 0 EET}
    {3889029600 10800 1 EEST}
    {3889033200 10800 1 EEST}
    {3907083600 7200 0 EET}
    {3920479200 10800 1 EEST}
    {3920482800 10800 1 EEST}
    {3938533200 7200 0 EET}
    {3951928800 10800 1 EEST}
    {3951932400 10800 1 EEST}
    {3969982800 7200 0 EET}
    {3983983200 10800 1 EEST}
    {3983986800 10800 1 EEST}
    {4002037200 7200 0 EET}
    {4015432800 10800 1 EEST}
    {4015436400 10800 1 EEST}
    {4033486800 7200 0 EET}
    {4046882400 10800 1 EEST}
    {4046886000 10800 1 EEST}
    {4064936400 7200 0 EET}
    {4078332000 10800 1 EEST}
    {4078335600 10800 1 EEST}
    {4096386000 7200 0 EET}
}
Changes to library/tzdata/Asia/Irkutsk.
25
26
27
28
29
30
31
32
33


34
35
36
37
38
39
40
25
26
27
28
29
30
31


32
33
34
35
36
37
38
39
40







-
-
+
+







    {622576800 28800 0 IRKT}
    {638301600 32400 1 IRKST}
    {654631200 28800 0 IRKT}
    {670356000 25200 0 IRKMMTT}
    {670359600 28800 1 IRKST}
    {686084400 25200 0 IRKT}
    {695761200 28800 0 IRKMMTT}
    {701794800 32400 1 IRKST}
    {717516000 28800 0 IRKT}
    {701805600 32400 1 IRKST}
    {717530400 28800 0 IRKT}
    {733255200 32400 1 IRKST}
    {748980000 28800 0 IRKT}
    {764704800 32400 1 IRKST}
    {780429600 28800 0 IRKT}
    {796154400 32400 1 IRKST}
    {811879200 28800 0 IRKT}
    {828208800 32400 1 IRKST}
Changes to library/tzdata/Asia/Kamchatka.
24
25
26
27
28
29
30
31
32


33
34
35
36
37
38
39
24
25
26
27
28
29
30


31
32
33
34
35
36
37
38
39







-
-
+
+







    {622562400 43200 0 PETT}
    {638287200 46800 1 PETST}
    {654616800 43200 0 PETT}
    {670341600 39600 0 PETMMTT}
    {670345200 43200 1 PETST}
    {686070000 39600 0 PETT}
    {695746800 43200 0 PETMMTT}
    {701780400 46800 1 PETST}
    {717501600 43200 0 PETT}
    {701791200 46800 1 PETST}
    {717516000 43200 0 PETT}
    {733240800 46800 1 PETST}
    {748965600 43200 0 PETT}
    {764690400 46800 1 PETST}
    {780415200 43200 0 PETT}
    {796140000 46800 1 PETST}
    {811864800 43200 0 PETT}
    {828194400 46800 1 PETST}
Changes to library/tzdata/Asia/Khandyga.
24
25
26
27
28
29
30
31
32


33
34
35
36
37
38
39
24
25
26
27
28
29
30


31
32
33
34
35
36
37
38
39







-
-
+
+







    {622573200 32400 0 YAKT}
    {638298000 36000 1 YAKST}
    {654627600 32400 0 YAKT}
    {670352400 28800 0 YAKMMTT}
    {670356000 32400 1 YAKST}
    {686080800 28800 0 YAKT}
    {695757600 32400 0 YAKMMTT}
    {701791200 36000 1 YAKST}
    {717512400 32400 0 YAKT}
    {701802000 36000 1 YAKST}
    {717526800 32400 0 YAKT}
    {733251600 36000 1 YAKST}
    {748976400 32400 0 YAKT}
    {764701200 36000 1 YAKST}
    {780426000 32400 0 YAKT}
    {796150800 36000 1 YAKST}
    {811875600 32400 0 YAKT}
    {828205200 36000 1 YAKST}
Changes to library/tzdata/Asia/Krasnoyarsk.
24
25
26
27
28
29
30
31
32


33
34
35
36
37
38
39
24
25
26
27
28
29
30


31
32
33
34
35
36
37
38
39







-
-
+
+







    {622580400 25200 0 KRAT}
    {638305200 28800 1 KRAST}
    {654634800 25200 0 KRAT}
    {670359600 21600 0 KRAMMTT}
    {670363200 25200 1 KRAST}
    {686088000 21600 0 KRAT}
    {695764800 25200 0 KRAMMTT}
    {701798400 28800 1 KRAST}
    {717519600 25200 0 KRAT}
    {701809200 28800 1 KRAST}
    {717534000 25200 0 KRAT}
    {733258800 28800 1 KRAST}
    {748983600 25200 0 KRAT}
    {764708400 28800 1 KRAST}
    {780433200 25200 0 KRAT}
    {796158000 28800 1 KRAST}
    {811882800 25200 0 KRAT}
    {828212400 28800 1 KRAST}
Changes to library/tzdata/Asia/Magadan.
24
25
26
27
28
29
30
31
32


33
34
35
36
37
38
39
24
25
26
27
28
29
30


31
32
33
34
35
36
37
38
39







-
-
+
+







    {622566000 39600 0 MAGT}
    {638290800 43200 1 MAGST}
    {654620400 39600 0 MAGT}
    {670345200 36000 0 MAGMMTT}
    {670348800 39600 1 MAGST}
    {686073600 36000 0 MAGT}
    {695750400 39600 0 MAGMMTT}
    {701784000 43200 1 MAGST}
    {717505200 39600 0 MAGT}
    {701794800 43200 1 MAGST}
    {717519600 39600 0 MAGT}
    {733244400 43200 1 MAGST}
    {748969200 39600 0 MAGT}
    {764694000 43200 1 MAGST}
    {780418800 39600 0 MAGT}
    {796143600 43200 1 MAGST}
    {811868400 39600 0 MAGT}
    {828198000 43200 1 MAGST}
64
65
66
67
68
69
70

71
64
65
66
67
68
69
70
71
72







+

    {1224946800 39600 0 MAGT}
    {1238252400 43200 1 MAGST}
    {1256396400 39600 0 MAGT}
    {1269702000 43200 1 MAGST}
    {1288450800 39600 0 MAGT}
    {1301151600 43200 0 MAGT}
    {1414245600 36000 0 MAGT}
    {1461427200 39600 0 MAGT}
}
Changes to library/tzdata/Asia/Novokuznetsk.
24
25
26
27
28
29
30
31
32


33
34
35
36
37
38
39
24
25
26
27
28
29
30


31
32
33
34
35
36
37
38
39







-
-
+
+







    {622580400 25200 0 KRAT}
    {638305200 28800 1 KRAST}
    {654634800 25200 0 KRAT}
    {670359600 21600 0 KRAMMTT}
    {670363200 25200 1 KRAST}
    {686088000 21600 0 KRAT}
    {695764800 25200 0 KRAMMTT}
    {701798400 28800 1 KRAST}
    {717519600 25200 0 KRAT}
    {701809200 28800 1 KRAST}
    {717534000 25200 0 KRAT}
    {733258800 28800 1 KRAST}
    {748983600 25200 0 KRAT}
    {764708400 28800 1 KRAST}
    {780433200 25200 0 KRAT}
    {796158000 28800 1 KRAST}
    {811882800 25200 0 KRAT}
    {828212400 28800 1 KRAST}
Changes to library/tzdata/Asia/Novosibirsk.
24
25
26
27
28
29
30
31
32


33
34
35
36
37
38
39
24
25
26
27
28
29
30


31
32
33
34
35
36
37
38
39







-
-
+
+







    {622580400 25200 0 NOVT}
    {638305200 28800 1 NOVST}
    {654634800 25200 0 NOVT}
    {670359600 21600 0 NOVMMTT}
    {670363200 25200 1 NOVST}
    {686088000 21600 0 NOVT}
    {695764800 25200 0 NOVMMTT}
    {701798400 28800 1 NOVST}
    {717519600 25200 0 NOVT}
    {701809200 28800 1 NOVST}
    {717534000 25200 0 NOVT}
    {733258800 28800 1 NOVST}
    {738090000 25200 0 NOVST}
    {748987200 21600 0 NOVT}
    {764712000 25200 1 NOVST}
    {780436800 21600 0 NOVT}
    {796161600 25200 1 NOVST}
    {811886400 21600 0 NOVT}
Changes to library/tzdata/Asia/Omsk.
24
25
26
27
28
29
30
31
32


33
34
35
36
37
38
39
24
25
26
27
28
29
30


31
32
33
34
35
36
37
38
39







-
-
+
+







    {622584000 21600 0 OMST}
    {638308800 25200 1 OMSST}
    {654638400 21600 0 OMST}
    {670363200 18000 0 OMSMMTT}
    {670366800 21600 1 OMSST}
    {686091600 18000 0 OMST}
    {695768400 21600 0 OMSMMTT}
    {701802000 25200 1 OMSST}
    {717523200 21600 0 OMST}
    {701812800 25200 1 OMSST}
    {717537600 21600 0 OMST}
    {733262400 25200 1 OMSST}
    {748987200 21600 0 OMST}
    {764712000 25200 1 OMSST}
    {780436800 21600 0 OMST}
    {796161600 25200 1 OMSST}
    {811886400 21600 0 OMST}
    {828216000 25200 1 OMSST}
Changes to library/tzdata/Asia/Oral.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30


























31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56



























57
58
1
2
3
4


























5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30


























31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57

58




-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-

# created by tools/tclZIC.tcl - do not edit

set TZData(:Asia/Oral) {
    {-9223372036854775808 12324 0 LMT}
    {-1441164324 14400 0 URAT}
    {-1247544000 18000 0 URAT}
    {354913200 21600 1 URAST}
    {370720800 21600 0 URAT}
    {386445600 18000 0 URAT}
    {386449200 21600 1 URAST}
    {402256800 18000 0 URAT}
    {417985200 21600 1 URAST}
    {433792800 18000 0 URAT}
    {449607600 21600 1 URAST}
    {465339600 18000 0 URAT}
    {481064400 21600 1 URAST}
    {496789200 18000 0 URAT}
    {512514000 21600 1 URAST}
    {528238800 18000 0 URAT}
    {543963600 21600 1 URAST}
    {559688400 18000 0 URAT}
    {575413200 21600 1 URAST}
    {591138000 18000 0 URAT}
    {606862800 14400 0 URAT}
    {606866400 18000 1 URAST}
    {622591200 14400 0 URAT}
    {638316000 18000 1 URAST}
    {654645600 14400 0 URAT}
    {662673600 14400 0 URAT}
    {692827200 14400 0 ORAT}
    {-1441164324 14400 0 +04}
    {-1247544000 18000 0 +05}
    {354913200 21600 1 +06}
    {370720800 21600 0 +06}
    {386445600 18000 0 +05}
    {386449200 21600 1 +06}
    {402256800 18000 0 +05}
    {417985200 21600 1 +06}
    {433792800 18000 0 +05}
    {449607600 21600 1 +06}
    {465339600 18000 0 +05}
    {481064400 21600 1 +06}
    {496789200 18000 0 +05}
    {512514000 21600 1 +06}
    {528238800 18000 0 +05}
    {543963600 21600 1 +06}
    {559688400 18000 0 +05}
    {575413200 21600 1 +06}
    {591138000 18000 0 +05}
    {606862800 14400 0 +04}
    {606866400 18000 1 +05}
    {622591200 14400 0 +04}
    {638316000 18000 1 +05}
    {654645600 14400 0 +04}
    {670370400 18000 1 +05}
    {686095200 14400 0 +04}
    {701809200 18000 1 ORAST}
    {717530400 14400 0 ORAT}
    {733269600 18000 1 ORAST}
    {748994400 14400 0 ORAT}
    {764719200 18000 1 ORAST}
    {780444000 14400 0 ORAT}
    {796168800 18000 1 ORAST}
    {811893600 14400 0 ORAT}
    {828223200 18000 1 ORAST}
    {846367200 14400 0 ORAT}
    {859672800 18000 1 ORAST}
    {877816800 14400 0 ORAT}
    {891122400 18000 1 ORAST}
    {909266400 14400 0 ORAT}
    {922572000 18000 1 ORAST}
    {941320800 14400 0 ORAT}
    {954021600 18000 1 ORAST}
    {972770400 14400 0 ORAT}
    {985471200 18000 1 ORAST}
    {1004220000 14400 0 ORAT}
    {1017525600 18000 1 ORAST}
    {1035669600 14400 0 ORAT}
    {1048975200 18000 1 ORAST}
    {1067119200 14400 0 ORAT}
    {1080424800 18000 1 ORAST}
    {1099173600 14400 0 ORAT}
    {701816400 14400 0 +04}
    {701820000 18000 1 +05}
    {717544800 14400 0 +04}
    {733269600 18000 1 +05}
    {748994400 14400 0 +04}
    {764719200 18000 1 +05}
    {780444000 14400 0 +04}
    {796168800 18000 1 +05}
    {811893600 14400 0 +04}
    {828223200 18000 1 +05}
    {846367200 14400 0 +04}
    {859672800 18000 1 +05}
    {877816800 14400 0 +04}
    {891122400 18000 1 +05}
    {909266400 14400 0 +04}
    {922572000 18000 1 +05}
    {941320800 14400 0 +04}
    {954021600 18000 1 +05}
    {972770400 14400 0 +04}
    {985471200 18000 1 +05}
    {1004220000 14400 0 +04}
    {1017525600 18000 1 +05}
    {1035669600 14400 0 +04}
    {1048975200 18000 1 +05}
    {1067119200 14400 0 +04}
    {1080424800 18000 1 +05}
    {1099173600 18000 0 +05}
    {1110830400 18000 0 ORAT}
}
Changes to library/tzdata/Asia/Qyzylorda.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29


























30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48



















49
50
51
52
53
54





55
56
57


58
1
2
3
4

























5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30



















31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49






50
51
52
53
54



55
56
57




-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
-
-
-
+
+

# created by tools/tclZIC.tcl - do not edit

set TZData(:Asia/Qyzylorda) {
    {-9223372036854775808 15712 0 LMT}
    {-1441167712 14400 0 KIZT}
    {-1247544000 18000 0 KIZT}
    {354913200 21600 1 KIZST}
    {370720800 21600 0 KIZT}
    {386445600 18000 0 KIZT}
    {386449200 21600 1 KIZST}
    {402256800 18000 0 KIZT}
    {417985200 21600 1 KIZST}
    {433792800 18000 0 KIZT}
    {449607600 21600 1 KIZST}
    {465339600 18000 0 KIZT}
    {481064400 21600 1 KIZST}
    {496789200 18000 0 KIZT}
    {512514000 21600 1 KIZST}
    {528238800 18000 0 KIZT}
    {543963600 21600 1 KIZST}
    {559688400 18000 0 KIZT}
    {575413200 21600 1 KIZST}
    {591138000 18000 0 KIZT}
    {606862800 21600 1 KIZST}
    {622587600 18000 0 KIZT}
    {638312400 21600 1 KIZST}
    {654642000 18000 0 KIZT}
    {662670000 18000 0 KIZT}
    {692823600 18000 0 QYZT}
    {-1441167712 14400 0 +04}
    {-1247544000 18000 0 +05}
    {354913200 21600 1 +06}
    {370720800 21600 0 +06}
    {386445600 18000 0 +05}
    {386449200 21600 1 +06}
    {402256800 18000 0 +05}
    {417985200 21600 1 +06}
    {433792800 18000 0 +05}
    {449607600 21600 1 +06}
    {465339600 18000 0 +05}
    {481064400 21600 1 +06}
    {496789200 18000 0 +05}
    {512514000 21600 1 +06}
    {528238800 18000 0 +05}
    {543963600 21600 1 +06}
    {559688400 18000 0 +05}
    {575413200 21600 1 +06}
    {591138000 18000 0 +05}
    {606862800 21600 1 +06}
    {622587600 18000 0 +05}
    {638312400 21600 1 +06}
    {654642000 18000 0 +05}
    {670366800 14400 0 +04}
    {670370400 18000 1 +05}
    {701812800 18000 0 +05}
    {695768400 21600 0 QYZT}
    {701802000 25200 1 QYZST}
    {717523200 21600 0 QYZT}
    {733262400 25200 1 QYZST}
    {748987200 21600 0 QYZT}
    {764712000 25200 1 QYZST}
    {780436800 21600 0 QYZT}
    {796161600 25200 1 QYZST}
    {811886400 21600 0 QYZT}
    {828216000 25200 1 QYZST}
    {846360000 21600 0 QYZT}
    {859665600 25200 1 QYZST}
    {877809600 21600 0 QYZT}
    {891115200 25200 1 QYZST}
    {909259200 21600 0 QYZT}
    {922564800 25200 1 QYZST}
    {941313600 21600 0 QYZT}
    {954014400 25200 1 QYZST}
    {972763200 21600 0 QYZT}
    {701816400 21600 1 +06}
    {717541200 18000 0 +05}
    {733266000 21600 1 +06}
    {748990800 18000 0 +05}
    {764715600 21600 1 +06}
    {780440400 18000 0 +05}
    {796165200 21600 1 +06}
    {811890000 18000 0 +05}
    {828219600 21600 1 +06}
    {846363600 18000 0 +05}
    {859669200 21600 1 +06}
    {877813200 18000 0 +05}
    {891118800 21600 1 +06}
    {909262800 18000 0 +05}
    {922568400 21600 1 +06}
    {941317200 18000 0 +05}
    {954018000 21600 1 +06}
    {972766800 18000 0 +05}
    {985467600 21600 1 +06}
    {985464000 25200 1 QYZST}
    {1004212800 21600 0 QYZT}
    {1017518400 25200 1 QYZST}
    {1035662400 21600 0 QYZT}
    {1048968000 25200 1 QYZST}
    {1067112000 21600 0 QYZT}
    {1004216400 18000 0 +05}
    {1017522000 21600 1 +06}
    {1035666000 18000 0 +05}
    {1048971600 21600 1 +06}
    {1067115600 18000 0 +05}
    {1080417600 25200 1 QYZST}
    {1099166400 21600 0 QYZT}
    {1110823200 21600 0 QYZT}
    {1080421200 21600 1 +06}
    {1099170000 21600 0 +06}
}
Changes to library/tzdata/Asia/Sakhalin.
25
26
27
28
29
30
31
32
33


34
35
36
37
38
39
40
25
26
27
28
29
30
31


32
33
34
35
36
37
38
39
40







-
-
+
+







    {622566000 39600 0 SAKT}
    {638290800 43200 1 SAKST}
    {654620400 39600 0 SAKT}
    {670345200 36000 0 SAKMMTT}
    {670348800 39600 1 SAKST}
    {686073600 36000 0 SAKT}
    {695750400 39600 0 SAKMMTT}
    {701784000 43200 1 SAKST}
    {717505200 39600 0 SAKT}
    {701794800 43200 1 SAKST}
    {717519600 39600 0 SAKT}
    {733244400 43200 1 SAKST}
    {748969200 39600 0 SAKT}
    {764694000 43200 1 SAKST}
    {780418800 39600 0 SAKT}
    {796143600 43200 1 SAKST}
    {811868400 39600 0 SAKT}
    {828198000 43200 1 SAKST}
66
67
68
69
70
71
72

73
66
67
68
69
70
71
72
73
74







+

    {1224950400 36000 0 SAKT}
    {1238256000 39600 1 SAKST}
    {1256400000 36000 0 SAKT}
    {1269705600 39600 1 SAKST}
    {1288454400 36000 0 SAKT}
    {1301155200 39600 0 SAKT}
    {1414249200 36000 0 SAKT}
    {1459008000 39600 0 SAKT}
}
Changes to library/tzdata/Asia/Srednekolymsk.
24
25
26
27
28
29
30
31
32


33
34
35
36
37
38
39
24
25
26
27
28
29
30


31
32
33
34
35
36
37
38
39







-
-
+
+







    {622566000 39600 0 MAGT}
    {638290800 43200 1 MAGST}
    {654620400 39600 0 MAGT}
    {670345200 36000 0 MAGMMTT}
    {670348800 39600 1 MAGST}
    {686073600 36000 0 MAGT}
    {695750400 39600 0 MAGMMTT}
    {701784000 43200 1 MAGST}
    {717505200 39600 0 MAGT}
    {701794800 43200 1 MAGST}
    {717519600 39600 0 MAGT}
    {733244400 43200 1 MAGST}
    {748969200 39600 0 MAGT}
    {764694000 43200 1 MAGST}
    {780418800 39600 0 MAGT}
    {796143600 43200 1 MAGST}
    {811868400 39600 0 MAGT}
    {828198000 43200 1 MAGST}
Added library/tzdata/Asia/Tomsk.









































































1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
# created by tools/tclZIC.tcl - do not edit

set TZData(:Asia/Tomsk) {
    {-9223372036854775808 20391 0 LMT}
    {-1578807591 21600 0 +06}
    {-1247551200 25200 0 +08}
    {354906000 28800 1 +08}
    {370713600 25200 0 +07}
    {386442000 28800 1 +08}
    {402249600 25200 0 +07}
    {417978000 28800 1 +08}
    {433785600 25200 0 +07}
    {449600400 28800 1 +08}
    {465332400 25200 0 +07}
    {481057200 28800 1 +08}
    {496782000 25200 0 +07}
    {512506800 28800 1 +08}
    {528231600 25200 0 +07}
    {543956400 28800 1 +08}
    {559681200 25200 0 +07}
    {575406000 28800 1 +08}
    {591130800 25200 0 +07}
    {606855600 28800 1 +08}
    {622580400 25200 0 +07}
    {638305200 28800 1 +08}
    {654634800 25200 0 +07}
    {670359600 21600 0 +07}
    {670363200 25200 1 +07}
    {686088000 21600 0 +06}
    {695764800 25200 0 +08}
    {701809200 28800 1 +08}
    {717534000 25200 0 +07}
    {733258800 28800 1 +08}
    {748983600 25200 0 +07}
    {764708400 28800 1 +08}
    {780433200 25200 0 +07}
    {796158000 28800 1 +08}
    {811882800 25200 0 +07}
    {828212400 28800 1 +08}
    {846356400 25200 0 +07}
    {859662000 28800 1 +08}
    {877806000 25200 0 +07}
    {891111600 28800 1 +08}
    {909255600 25200 0 +07}
    {922561200 28800 1 +08}
    {941310000 25200 0 +07}
    {954010800 28800 1 +08}
    {972759600 25200 0 +07}
    {985460400 28800 1 +08}
    {1004209200 25200 0 +07}
    {1017514800 28800 1 +08}
    {1020196800 25200 0 +07}
    {1035662400 21600 0 +06}
    {1048968000 25200 1 +07}
    {1067112000 21600 0 +06}
    {1080417600 25200 1 +07}
    {1099166400 21600 0 +06}
    {1111867200 25200 1 +07}
    {1130616000 21600 0 +06}
    {1143316800 25200 1 +07}
    {1162065600 21600 0 +06}
    {1174766400 25200 1 +07}
    {1193515200 21600 0 +06}
    {1206820800 25200 1 +07}
    {1224964800 21600 0 +06}
    {1238270400 25200 1 +07}
    {1256414400 21600 0 +06}
    {1269720000 25200 1 +07}
    {1288468800 21600 0 +06}
    {1301169600 25200 0 +07}
    {1414263600 21600 0 +06}
    {1464465600 25200 0 +07}
}
Changes to library/tzdata/Asia/Ust-Nera.
23
24
25
26
27
28
29
30
31


32
33
34
35
36
37
38
23
24
25
26
27
28
29


30
31
32
33
34
35
36
37
38







-
-
+
+







    {622566000 39600 0 MAGT}
    {638290800 43200 1 MAGST}
    {654620400 39600 0 MAGT}
    {670345200 36000 0 MAGMMTT}
    {670348800 39600 1 MAGST}
    {686073600 36000 0 MAGT}
    {695750400 39600 0 MAGMMTT}
    {701784000 43200 1 MAGST}
    {717505200 39600 0 MAGT}
    {701794800 43200 1 MAGST}
    {717519600 39600 0 MAGT}
    {733244400 43200 1 MAGST}
    {748969200 39600 0 MAGT}
    {764694000 43200 1 MAGST}
    {780418800 39600 0 MAGT}
    {796143600 43200 1 MAGST}
    {811868400 39600 0 MAGT}
    {828198000 43200 1 MAGST}
Changes to library/tzdata/Asia/Vladivostok.
24
25
26
27
28
29
30
31
32


33
34
35
36
37
38
39
24
25
26
27
28
29
30


31
32
33
34
35
36
37
38
39







-
-
+
+







    {622569600 36000 0 VLAT}
    {638294400 39600 1 VLAST}
    {654624000 36000 0 VLAT}
    {670348800 32400 0 VLAMMTT}
    {670352400 36000 1 VLAST}
    {686077200 32400 0 VLAT}
    {695754000 36000 0 VLAMMTT}
    {701787600 39600 1 VLAST}
    {717508800 36000 0 VLAT}
    {701798400 39600 1 VLAST}
    {717523200 36000 0 VLAT}
    {733248000 39600 1 VLAST}
    {748972800 36000 0 VLAT}
    {764697600 39600 1 VLAST}
    {780422400 36000 0 VLAT}
    {796147200 39600 1 VLAST}
    {811872000 36000 0 VLAT}
    {828201600 39600 1 VLAST}
Changes to library/tzdata/Asia/Yakutsk.
24
25
26
27
28
29
30
31
32


33
34
35
36
37
38
39
24
25
26
27
28
29
30


31
32
33
34
35
36
37
38
39







-
-
+
+







    {622573200 32400 0 YAKT}
    {638298000 36000 1 YAKST}
    {654627600 32400 0 YAKT}
    {670352400 28800 0 YAKMMTT}
    {670356000 32400 1 YAKST}
    {686080800 28800 0 YAKT}
    {695757600 32400 0 YAKMMTT}
    {701791200 36000 1 YAKST}
    {717512400 32400 0 YAKT}
    {701802000 36000 1 YAKST}
    {717526800 32400 0 YAKT}
    {733251600 36000 1 YAKST}
    {748976400 32400 0 YAKT}
    {764701200 36000 1 YAKST}
    {780426000 32400 0 YAKT}
    {796150800 36000 1 YAKST}
    {811875600 32400 0 YAKT}
    {828205200 36000 1 YAKST}
Changes to library/tzdata/Asia/Yekaterinburg.
25
26
27
28
29
30
31
32
33


34
35
36
37
38
39
40
25
26
27
28
29
30
31


32
33
34
35
36
37
38
39
40







-
-
+
+







    {622587600 18000 0 SVET}
    {638312400 21600 1 SVEST}
    {654642000 18000 0 SVET}
    {670366800 14400 0 SVEMMTT}
    {670370400 18000 1 SVEST}
    {686095200 14400 0 SVET}
    {695772000 18000 0 YEKMMTT}
    {701805600 21600 1 YEKST}
    {717526800 18000 0 YEKT}
    {701816400 21600 1 YEKST}
    {717541200 18000 0 YEKT}
    {733266000 21600 1 YEKST}
    {748990800 18000 0 YEKT}
    {764715600 21600 1 YEKST}
    {780440400 18000 0 YEKT}
    {796165200 21600 1 YEKST}
    {811890000 18000 0 YEKT}
    {828219600 21600 1 YEKST}
Changes to library/tzdata/Asia/Yerevan.
23
24
25
26
27
28
29
30
31


32
33
34
35
36
37
38
23
24
25
26
27
28
29


30
31
32
33
34
35
36
37
38







-
-
+
+







    {606866400 18000 1 YERST}
    {622591200 14400 0 YERT}
    {638316000 18000 1 YERST}
    {654645600 14400 0 YERT}
    {670370400 14400 1 YERST}
    {685569600 14400 0 AMST}
    {686098800 10800 0 AMT}
    {701812800 14400 1 AMST}
    {717534000 10800 0 AMT}
    {701823600 14400 1 AMST}
    {717548400 10800 0 AMT}
    {733273200 14400 1 AMST}
    {748998000 10800 0 AMT}
    {764722800 14400 1 AMST}
    {780447600 10800 0 AMT}
    {796172400 14400 1 AMST}
    {811897200 14400 0 AMT}
    {852062400 14400 0 AMT}
62
63
64
65
66
67
68
69

70
62
63
64
65
66
67
68

69
70







-
+

    {1224972000 14400 0 AMT}
    {1238277600 18000 1 AMST}
    {1256421600 14400 0 AMT}
    {1269727200 18000 1 AMST}
    {1288476000 14400 0 AMT}
    {1301176800 18000 1 AMST}
    {1319925600 14400 0 AMT}
    {1332626400 14400 0 AMT}
    {1328731200 14400 0 AMT}
}
Added library/tzdata/Europe/Astrakhan.







































































1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
# created by tools/tclZIC.tcl - do not edit

set TZData(:Europe/Astrakhan) {
    {-9223372036854775808 11532 0 LMT}
    {-1441249932 10800 0 +03}
    {-1247540400 14400 0 +05}
    {354916800 18000 1 +05}
    {370724400 14400 0 +04}
    {386452800 18000 1 +05}
    {402260400 14400 0 +04}
    {417988800 18000 1 +05}
    {433796400 14400 0 +04}
    {449611200 18000 1 +05}
    {465343200 14400 0 +04}
    {481068000 18000 1 +05}
    {496792800 14400 0 +04}
    {512517600 18000 1 +05}
    {528242400 14400 0 +04}
    {543967200 18000 1 +05}
    {559692000 14400 0 +04}
    {575416800 18000 1 +05}
    {591141600 14400 0 +04}
    {606866400 10800 0 +04}
    {606870000 14400 1 +04}
    {622594800 10800 0 +03}
    {638319600 14400 1 +04}
    {654649200 10800 0 +03}
    {670374000 14400 0 +04}
    {701820000 10800 0 +04}
    {701823600 14400 1 +04}
    {717548400 10800 0 +03}
    {733273200 14400 1 +04}
    {748998000 10800 0 +03}
    {764722800 14400 1 +04}
    {780447600 10800 0 +03}
    {796172400 14400 1 +04}
    {811897200 10800 0 +03}
    {828226800 14400 1 +04}
    {846370800 10800 0 +03}
    {859676400 14400 1 +04}
    {877820400 10800 0 +03}
    {891126000 14400 1 +04}
    {909270000 10800 0 +03}
    {922575600 14400 1 +04}
    {941324400 10800 0 +03}
    {954025200 14400 1 +04}
    {972774000 10800 0 +03}
    {985474800 14400 1 +04}
    {1004223600 10800 0 +03}
    {1017529200 14400 1 +04}
    {1035673200 10800 0 +03}
    {1048978800 14400 1 +04}
    {1067122800 10800 0 +03}
    {1080428400 14400 1 +04}
    {1099177200 10800 0 +03}
    {1111878000 14400 1 +04}
    {1130626800 10800 0 +03}
    {1143327600 14400 1 +04}
    {1162076400 10800 0 +03}
    {1174777200 14400 1 +04}
    {1193526000 10800 0 +03}
    {1206831600 14400 1 +04}
    {1224975600 10800 0 +03}
    {1238281200 14400 1 +04}
    {1256425200 10800 0 +03}
    {1269730800 14400 1 +04}
    {1288479600 10800 0 +03}
    {1301180400 14400 0 +04}
    {1414274400 10800 0 +03}
    {1459033200 14400 0 +04}
}
Changes to library/tzdata/Europe/Chisinau.
42
43
44
45
46
47
48

49
50


51
52
53
54
55
56
57
58
42
43
44
45
46
47
48
49


50
51

52
53
54
55
56
57
58







+
-
-
+
+
-







    {528246000 10800 0 MSK}
    {543970800 14400 1 MSD}
    {559695600 10800 0 MSK}
    {575420400 14400 1 MSD}
    {591145200 10800 0 MSK}
    {606870000 14400 1 MSD}
    {622594800 10800 0 MSK}
    {638319600 14400 1 MSD}
    {631141200 10800 0 MSK}
    {641941200 7200 0 EET}
    {641948400 10800 0 EEST}
    {654652800 7200 0 EET}
    {662680800 7200 0 EEMMTT}
    {670377600 10800 1 EEST}
    {686102400 7200 0 EET}
    {694216800 7200 0 EET}
    {701820000 10800 1 EEST}
    {717541200 7200 0 EET}
    {733269600 10800 1 EEST}
    {748990800 7200 0 EET}
Changes to library/tzdata/Europe/Kaliningrad.
31
32
33
34
35
36
37
38
39
40
41
42





43
44
45
46


47
48
49
50
51
52
53
31
32
33
34
35
36
37





38
39
40
41
42
43
44


45
46
47
48
49
50
51
52
53







-
-
-
-
-
+
+
+
+
+


-
-
+
+







    {496796400 10800 0 MSK}
    {512521200 14400 1 MSD}
    {528246000 10800 0 MSK}
    {543970800 14400 1 MSD}
    {559695600 10800 0 MSK}
    {575420400 14400 1 MSD}
    {591145200 10800 0 MSK}
    {606870000 14400 1 MSD}
    {622594800 10800 0 MSK}
    {638319600 14400 1 MSD}
    {654649200 10800 0 MSK}
    {670374000 7200 0 EEMMTT}
    {606870000 7200 0 EEMMTT}
    {606873600 10800 1 EEST}
    {622598400 7200 0 EET}
    {638323200 10800 1 EEST}
    {654652800 7200 0 EET}
    {670377600 10800 1 EEST}
    {686102400 7200 0 EET}
    {701816400 10800 1 EEST}
    {717537600 7200 0 EET}
    {701827200 10800 1 EEST}
    {717552000 7200 0 EET}
    {733276800 10800 1 EEST}
    {749001600 7200 0 EET}
    {764726400 10800 1 EEST}
    {780451200 7200 0 EET}
    {796176000 10800 1 EEST}
    {811900800 7200 0 EET}
    {828230400 10800 1 EEST}
Added library/tzdata/Europe/Kirov.






































































1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
# created by tools/tclZIC.tcl - do not edit

set TZData(:Europe/Kirov) {
    {-9223372036854775808 11928 0 LMT}
    {-1593825528 10800 0 +03}
    {-1247540400 14400 0 +05}
    {354916800 18000 1 +05}
    {370724400 14400 0 +04}
    {386452800 18000 1 +05}
    {402260400 14400 0 +04}
    {417988800 18000 1 +05}
    {433796400 14400 0 +04}
    {449611200 18000 1 +05}
    {465343200 14400 0 +04}
    {481068000 18000 1 +05}
    {496792800 14400 0 +04}
    {512517600 18000 1 +05}
    {528242400 14400 0 +04}
    {543967200 18000 1 +05}
    {559692000 14400 0 +04}
    {575416800 18000 1 +05}
    {591141600 14400 0 +04}
    {606866400 10800 0 +04}
    {606870000 14400 1 +04}
    {622594800 10800 0 +03}
    {638319600 14400 1 +04}
    {654649200 10800 0 +03}
    {670374000 14400 0 +04}
    {701820000 10800 0 +04}
    {701823600 14400 1 +04}
    {717548400 10800 0 +03}
    {733273200 14400 1 +04}
    {748998000 10800 0 +03}
    {764722800 14400 1 +04}
    {780447600 10800 0 +03}
    {796172400 14400 1 +04}
    {811897200 10800 0 +03}
    {828226800 14400 1 +04}
    {846370800 10800 0 +03}
    {859676400 14400 1 +04}
    {877820400 10800 0 +03}
    {891126000 14400 1 +04}
    {909270000 10800 0 +03}
    {922575600 14400 1 +04}
    {941324400 10800 0 +03}
    {954025200 14400 1 +04}
    {972774000 10800 0 +03}
    {985474800 14400 1 +04}
    {1004223600 10800 0 +03}
    {1017529200 14400 1 +04}
    {1035673200 10800 0 +03}
    {1048978800 14400 1 +04}
    {1067122800 10800 0 +03}
    {1080428400 14400 1 +04}
    {1099177200 10800 0 +03}
    {1111878000 14400 1 +04}
    {1130626800 10800 0 +03}
    {1143327600 14400 1 +04}
    {1162076400 10800 0 +03}
    {1174777200 14400 1 +04}
    {1193526000 10800 0 +03}
    {1206831600 14400 1 +04}
    {1224975600 10800 0 +03}
    {1238281200 14400 1 +04}
    {1256425200 10800 0 +03}
    {1269730800 14400 1 +04}
    {1288479600 10800 0 +03}
    {1301180400 14400 0 +04}
    {1414274400 10800 0 +03}
}
Changes to library/tzdata/Europe/Minsk.
29
30
31
32
33
34
35

36

37
38
39
40
41
42
43
29
30
31
32
33
34
35
36

37
38
39
40
41
42
43
44







+
-
+







    {591145200 10800 0 MSK}
    {606870000 14400 1 MSD}
    {622594800 10800 0 MSK}
    {631141200 10800 0 MSK}
    {670374000 10800 1 EEST}
    {686102400 7200 0 EET}
    {701820000 10800 1 EEST}
    {717544800 10800 0 EEST}
    {717544800 7200 0 EET}
    {717552000 7200 0 EET}
    {733276800 10800 1 EEST}
    {749001600 7200 0 EET}
    {764726400 10800 1 EEST}
    {780451200 7200 0 EET}
    {796176000 10800 1 EEST}
    {811900800 7200 0 EET}
    {828230400 10800 1 EEST}
Changes to library/tzdata/Europe/Moscow.
36
37
38
39
40
41
42
43
44


45
46
47
48
49
50
51
36
37
38
39
40
41
42


43
44
45
46
47
48
49
50
51







-
-
+
+







    {622594800 10800 0 MSK}
    {638319600 14400 1 MSD}
    {654649200 10800 0 MSK}
    {670374000 7200 0 EEMMTT}
    {670377600 10800 1 EEST}
    {686102400 7200 0 EET}
    {695779200 10800 0 MSD}
    {701812800 14400 1 MSD}
    {717534000 10800 0 MSK}
    {701823600 14400 1 MSD}
    {717548400 10800 0 MSK}
    {733273200 14400 1 MSD}
    {748998000 10800 0 MSK}
    {764722800 14400 1 MSD}
    {780447600 10800 0 MSK}
    {796172400 14400 1 MSD}
    {811897200 10800 0 MSK}
    {828226800 14400 1 MSD}
Changes to library/tzdata/Europe/Samara.
24
25
26
27
28
29
30
31

32
33
34


35
36
37
38
39
40
41
24
25
26
27
28
29
30

31
32


33
34
35
36
37
38
39
40
41







-
+

-
-
+
+







    {606866400 10800 0 MSD}
    {606870000 14400 1 MSD}
    {622594800 10800 0 MSK}
    {638319600 14400 1 MSD}
    {654649200 10800 0 MSK}
    {670374000 7200 0 EEMMTT}
    {670377600 10800 1 EEST}
    {686102400 10800 0 KUYT}
    {686102400 10800 0 SAMT}
    {687916800 14400 0 SAMT}
    {701809200 18000 1 SAMST}
    {717530400 14400 0 SAMT}
    {701820000 18000 1 SAMST}
    {717544800 14400 0 SAMT}
    {733269600 18000 1 SAMST}
    {748994400 14400 0 SAMT}
    {764719200 18000 1 SAMST}
    {780444000 14400 0 SAMT}
    {796168800 18000 1 SAMST}
    {811893600 14400 0 SAMT}
    {828223200 18000 1 SAMST}
Added library/tzdata/Europe/Ulyanovsk.









































































1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
# created by tools/tclZIC.tcl - do not edit

set TZData(:Europe/Ulyanovsk) {
    {-9223372036854775808 11616 0 LMT}
    {-1593825216 10800 0 +03}
    {-1247540400 14400 0 +05}
    {354916800 18000 1 +05}
    {370724400 14400 0 +04}
    {386452800 18000 1 +05}
    {402260400 14400 0 +04}
    {417988800 18000 1 +05}
    {433796400 14400 0 +04}
    {449611200 18000 1 +05}
    {465343200 14400 0 +04}
    {481068000 18000 1 +05}
    {496792800 14400 0 +04}
    {512517600 18000 1 +05}
    {528242400 14400 0 +04}
    {543967200 18000 1 +05}
    {559692000 14400 0 +04}
    {575416800 18000 1 +05}
    {591141600 14400 0 +04}
    {606866400 10800 0 +04}
    {606870000 14400 1 +04}
    {622594800 10800 0 +03}
    {638319600 14400 1 +04}
    {654649200 10800 0 +03}
    {670374000 7200 0 +03}
    {670377600 10800 1 +03}
    {686102400 7200 0 +02}
    {695779200 10800 0 +04}
    {701823600 14400 1 +04}
    {717548400 10800 0 +03}
    {733273200 14400 1 +04}
    {748998000 10800 0 +03}
    {764722800 14400 1 +04}
    {780447600 10800 0 +03}
    {796172400 14400 1 +04}
    {811897200 10800 0 +03}
    {828226800 14400 1 +04}
    {846370800 10800 0 +03}
    {859676400 14400 1 +04}
    {877820400 10800 0 +03}
    {891126000 14400 1 +04}
    {909270000 10800 0 +03}
    {922575600 14400 1 +04}
    {941324400 10800 0 +03}
    {954025200 14400 1 +04}
    {972774000 10800 0 +03}
    {985474800 14400 1 +04}
    {1004223600 10800 0 +03}
    {1017529200 14400 1 +04}
    {1035673200 10800 0 +03}
    {1048978800 14400 1 +04}
    {1067122800 10800 0 +03}
    {1080428400 14400 1 +04}
    {1099177200 10800 0 +03}
    {1111878000 14400 1 +04}
    {1130626800 10800 0 +03}
    {1143327600 14400 1 +04}
    {1162076400 10800 0 +03}
    {1174777200 14400 1 +04}
    {1193526000 10800 0 +03}
    {1206831600 14400 1 +04}
    {1224975600 10800 0 +03}
    {1238281200 14400 1 +04}
    {1256425200 10800 0 +03}
    {1269730800 14400 1 +04}
    {1288479600 10800 0 +03}
    {1301180400 14400 0 +04}
    {1414274400 10800 0 +03}
    {1459033200 14400 0 +04}
}
Changes to library/tzdata/Europe/Vilnius.
26
27
28
29
30
31
32
33
34
35
36
37






38
39
40
41
42
43
44
26
27
28
29
30
31
32





33
34
35
36
37
38
39
40
41
42
43
44
45







-
-
-
-
-
+
+
+
+
+
+







    {496796400 10800 0 MSK}
    {512521200 14400 1 MSD}
    {528246000 10800 0 MSK}
    {543970800 14400 1 MSD}
    {559695600 10800 0 MSK}
    {575420400 14400 1 MSD}
    {591145200 10800 0 MSK}
    {606870000 14400 1 MSD}
    {622594800 10800 0 MSK}
    {638319600 14400 1 MSD}
    {654649200 10800 0 MSK}
    {670374000 10800 1 EEST}
    {606870000 7200 0 EEMMTT}
    {606873600 10800 1 EEST}
    {622598400 7200 0 EET}
    {638323200 10800 1 EEST}
    {654652800 7200 0 EET}
    {670377600 10800 1 EEST}
    {686102400 7200 0 EET}
    {701827200 10800 1 EEST}
    {717552000 7200 0 EET}
    {733276800 10800 1 EEST}
    {749001600 7200 0 EET}
    {764726400 10800 1 EEST}
    {780451200 7200 0 EET}
Changes to library/tzdata/Europe/Volgograd.
16
17
18
19
20
21
22
23
24
25



26
27
28
29
30
31
32



33
34
35
36
37
38
39
16
17
18
19
20
21
22



23
24
25
26
27
28
29
30


31
32
33
34
35
36
37
38
39
40







-
-
-
+
+
+





-
-
+
+
+







    {465343200 14400 0 VOLT}
    {481068000 18000 1 VOLST}
    {496792800 14400 0 VOLT}
    {512517600 18000 1 VOLST}
    {528242400 14400 0 VOLT}
    {543967200 18000 1 VOLST}
    {559692000 14400 0 VOLT}
    {575416800 18000 1 VOLST}
    {591141600 14400 0 VOLT}
    {606866400 10800 0 VOLMMTT}
    {575416800 10800 0 VOLMMTT}
    {575420400 14400 1 VOLST}
    {591145200 10800 0 VOLT}
    {606870000 14400 1 VOLST}
    {622594800 10800 0 VOLT}
    {638319600 14400 1 VOLST}
    {654649200 10800 0 VOLT}
    {670374000 14400 0 VOLT}
    {701820000 14400 0 MSD}
    {717534000 10800 0 MSK}
    {701820000 10800 0 MSD}
    {701823600 14400 1 MSD}
    {717548400 10800 0 MSK}
    {733273200 14400 1 MSD}
    {748998000 10800 0 MSK}
    {764722800 14400 1 MSD}
    {780447600 10800 0 MSK}
    {796172400 14400 1 MSD}
    {811897200 10800 0 MSK}
    {828226800 14400 1 MSD}
Changes to library/tzdata/Pacific/Easter.
93
94
95
96
97
98
99















































100

























































































































101
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146

147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

    {1313899200 -18000 1 EASST}
    {1335668400 -21600 0 EAST}
    {1346558400 -18000 1 EASST}
    {1367118000 -21600 0 EAST}
    {1378612800 -18000 1 EASST}
    {1398567600 -21600 0 EAST}
    {1410062400 -18000 1 EASST}
    {1463281200 -21600 0 EAST}
    {1471147200 -18000 1 EASST}
    {1494730800 -21600 0 EAST}
    {1502596800 -18000 1 EASST}
    {1526180400 -21600 0 EAST}
    {1534046400 -18000 1 EASST}
    {1557630000 -21600 0 EAST}
    {1565496000 -18000 1 EASST}
    {1589079600 -21600 0 EAST}
    {1596945600 -18000 1 EASST}
    {1620529200 -21600 0 EAST}
    {1629000000 -18000 1 EASST}
    {1652583600 -21600 0 EAST}
    {1660449600 -18000 1 EASST}
    {1684033200 -21600 0 EAST}
    {1691899200 -18000 1 EASST}
    {1715482800 -21600 0 EAST}
    {1723348800 -18000 1 EASST}
    {1746932400 -21600 0 EAST}
    {1754798400 -18000 1 EASST}
    {1778382000 -21600 0 EAST}
    {1786248000 -18000 1 EASST}
    {1809831600 -21600 0 EAST}
    {1818302400 -18000 1 EASST}
    {1841886000 -21600 0 EAST}
    {1849752000 -18000 1 EASST}
    {1873335600 -21600 0 EAST}
    {1881201600 -18000 1 EASST}
    {1904785200 -21600 0 EAST}
    {1912651200 -18000 1 EASST}
    {1936234800 -21600 0 EAST}
    {1944100800 -18000 1 EASST}
    {1967684400 -21600 0 EAST}
    {1976155200 -18000 1 EASST}
    {1999738800 -21600 0 EAST}
    {2007604800 -18000 1 EASST}
    {2031188400 -21600 0 EAST}
    {2039054400 -18000 1 EASST}
    {2062638000 -21600 0 EAST}
    {2070504000 -18000 1 EASST}
    {2094087600 -21600 0 EAST}
    {2101953600 -18000 1 EASST}
    {2125537200 -21600 0 EAST}
    {2133403200 -18000 1 EASST}
    {2156986800 -21600 0 EAST}
    {2165457600 -18000 1 EASST}
    {2189041200 -21600 0 EAST}
    {1430017200 -18000 0 EAST}
    {2196907200 -18000 1 EASST}
    {2220490800 -21600 0 EAST}
    {2228356800 -18000 1 EASST}
    {2251940400 -21600 0 EAST}
    {2259806400 -18000 1 EASST}
    {2283390000 -21600 0 EAST}
    {2291256000 -18000 1 EASST}
    {2314839600 -21600 0 EAST}
    {2322705600 -18000 1 EASST}
    {2346894000 -21600 0 EAST}
    {2354760000 -18000 1 EASST}
    {2378343600 -21600 0 EAST}
    {2386209600 -18000 1 EASST}
    {2409793200 -21600 0 EAST}
    {2417659200 -18000 1 EASST}
    {2441242800 -21600 0 EAST}
    {2449108800 -18000 1 EASST}
    {2472692400 -21600 0 EAST}
    {2480558400 -18000 1 EASST}
    {2504142000 -21600 0 EAST}
    {2512612800 -18000 1 EASST}
    {2536196400 -21600 0 EAST}
    {2544062400 -18000 1 EASST}
    {2567646000 -21600 0 EAST}
    {2575512000 -18000 1 EASST}
    {2599095600 -21600 0 EAST}
    {2606961600 -18000 1 EASST}
    {2630545200 -21600 0 EAST}
    {2638411200 -18000 1 EASST}
    {2661994800 -21600 0 EAST}
    {2669860800 -18000 1 EASST}
    {2693444400 -21600 0 EAST}
    {2701915200 -18000 1 EASST}
    {2725498800 -21600 0 EAST}
    {2733364800 -18000 1 EASST}
    {2756948400 -21600 0 EAST}
    {2764814400 -18000 1 EASST}
    {2788398000 -21600 0 EAST}
    {2796264000 -18000 1 EASST}
    {2819847600 -21600 0 EAST}
    {2827713600 -18000 1 EASST}
    {2851297200 -21600 0 EAST}
    {2859768000 -18000 1 EASST}
    {2883351600 -21600 0 EAST}
    {2891217600 -18000 1 EASST}
    {2914801200 -21600 0 EAST}
    {2922667200 -18000 1 EASST}
    {2946250800 -21600 0 EAST}
    {2954116800 -18000 1 EASST}
    {2977700400 -21600 0 EAST}
    {2985566400 -18000 1 EASST}
    {3009150000 -21600 0 EAST}
    {3017016000 -18000 1 EASST}
    {3040599600 -21600 0 EAST}
    {3049070400 -18000 1 EASST}
    {3072654000 -21600 0 EAST}
    {3080520000 -18000 1 EASST}
    {3104103600 -21600 0 EAST}
    {3111969600 -18000 1 EASST}
    {3135553200 -21600 0 EAST}
    {3143419200 -18000 1 EASST}
    {3167002800 -21600 0 EAST}
    {3174868800 -18000 1 EASST}
    {3198452400 -21600 0 EAST}
    {3206318400 -18000 1 EASST}
    {3230506800 -21600 0 EAST}
    {3238372800 -18000 1 EASST}
    {3261956400 -21600 0 EAST}
    {3269822400 -18000 1 EASST}
    {3293406000 -21600 0 EAST}
    {3301272000 -18000 1 EASST}
    {3324855600 -21600 0 EAST}
    {3332721600 -18000 1 EASST}
    {3356305200 -21600 0 EAST}
    {3364171200 -18000 1 EASST}
    {3387754800 -21600 0 EAST}
    {3396225600 -18000 1 EASST}
    {3419809200 -21600 0 EAST}
    {3427675200 -18000 1 EASST}
    {3451258800 -21600 0 EAST}
    {3459124800 -18000 1 EASST}
    {3482708400 -21600 0 EAST}
    {3490574400 -18000 1 EASST}
    {3514158000 -21600 0 EAST}
    {3522024000 -18000 1 EASST}
    {3545607600 -21600 0 EAST}
    {3553473600 -18000 1 EASST}
    {3577057200 -21600 0 EAST}
    {3585528000 -18000 1 EASST}
    {3609111600 -21600 0 EAST}
    {3616977600 -18000 1 EASST}
    {3640561200 -21600 0 EAST}
    {3648427200 -18000 1 EASST}
    {3672010800 -21600 0 EAST}
    {3679876800 -18000 1 EASST}
    {3703460400 -21600 0 EAST}
    {3711326400 -18000 1 EASST}
    {3734910000 -21600 0 EAST}
    {3743380800 -18000 1 EASST}
    {3766964400 -21600 0 EAST}
    {3774830400 -18000 1 EASST}
    {3798414000 -21600 0 EAST}
    {3806280000 -18000 1 EASST}
    {3829863600 -21600 0 EAST}
    {3837729600 -18000 1 EASST}
    {3861313200 -21600 0 EAST}
    {3869179200 -18000 1 EASST}
    {3892762800 -21600 0 EAST}
    {3900628800 -18000 1 EASST}
    {3924212400 -21600 0 EAST}
    {3932683200 -18000 1 EASST}
    {3956266800 -21600 0 EAST}
    {3964132800 -18000 1 EASST}
    {3987716400 -21600 0 EAST}
    {3995582400 -18000 1 EASST}
    {4019166000 -21600 0 EAST}
    {4027032000 -18000 1 EASST}
    {4050615600 -21600 0 EAST}
    {4058481600 -18000 1 EASST}
    {4082065200 -21600 0 EAST}
    {4089931200 -18000 1 EASST}
}
Changes to library/word.tcl.
11
12
13
14
15
16
17

18
19





20
21

22
23





24
25
26
27
28
29
30
11
12
13
14
15
16
17
18


19
20
21
22
23
24
25
26


27
28
29
30
31
32
33
34
35
36
37
38







+
-
-
+
+
+
+
+


+
-
-
+
+
+
+
+







# of this file, and for a DISCLAIMER OF ALL WARRANTIES.

# The following variables are used to determine which characters are
# interpreted as white space.

if {$::tcl_platform(platform) eq "windows"} {
    # Windows style - any but a unicode space char
    if {![info exists ::tcl_wordchars]} {
    set ::tcl_wordchars {\S}
    set ::tcl_nonwordchars {\s}
	set ::tcl_wordchars {\S}
    }
    if {![info exists ::tcl_nonwordchars]} {
	set ::tcl_nonwordchars {\s}
    }
} else {
    # Motif style - any unicode word char (number, letter, or underscore)
    if {![info exists ::tcl_wordchars]} {
    set ::tcl_wordchars {\w}
    set ::tcl_nonwordchars {\W}
	set ::tcl_wordchars {\w}
    }
    if {![info exists ::tcl_nonwordchars]} {
	set ::tcl_nonwordchars {\W}
    }
}

# Arrange for caches of the real matcher REs to be kept, which enables the REs
# themselves to be cached for greater performance (and somewhat greater
# clarity too).

namespace eval ::tcl {
Changes to tests/assemble.test.
3275
3276
3277
3278
3279
3280
3281






















































































3282
3283
3284
3285
3286
3287
3288
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







	catch {
	    apply {{} {
		assemble {reverse polish notation}
	    }}
	}
    }
} 0

test assemble-52.1 {Bug 3154ea2759} {
    apply {{} {
	# Needs six exception ranges to force the range allocations to use the
	# malloced store.
	::tcl::unsupported::assemble {
	    beginCatch @badLabel
	    push error
	    push testing
	    invokeStk 2
	    pop
	    push 0
	    jump @okLabel
	    label @badLabel
	    push 1;		# should be pushReturnCode
	    label @okLabel
	    endCatch
	    pop
	    
	    beginCatch @badLabel2
	    push error
	    push testing
	    invokeStk 2
	    pop
	    push 0
	    jump @okLabel2
	    label @badLabel2
	    push 1;		# should be pushReturnCode
	    label @okLabel2
	    endCatch
	    pop
	    
	    beginCatch @badLabel3
	    push error
	    push testing
	    invokeStk 2
	    pop
	    push 0
	    jump @okLabel3
	    label @badLabel3
	    push 1;		# should be pushReturnCode
	    label @okLabel3
	    endCatch
	    pop
	    
	    beginCatch @badLabel4
	    push error
	    push testing
	    invokeStk 2
	    pop
	    push 0
	    jump @okLabel4
	    label @badLabel4
	    push 1;		# should be pushReturnCode
	    label @okLabel4
	    endCatch
	    pop
	    
	    beginCatch @badLabel5
	    push error
	    push testing
	    invokeStk 2
	    pop
	    push 0
	    jump @okLabel5
	    label @badLabel5
	    push 1;		# should be pushReturnCode
	    label @okLabel5
	    endCatch
	    pop
	    
	    beginCatch @badLabel6
	    push error
	    push testing
	    invokeStk 2
	    pop
	    push 0
	    jump @okLabel6
	    label @badLabel6
	    push 1;		# should be pushReturnCode
	    label @okLabel6
	    endCatch
	    pop
	}
    }}
} {};				# must not crash

rename fillTables {}
rename assemble {}

::tcltest::cleanupTests
return

Changes to tests/compile.test.
220
221
222
223
224
225
226











227
228
229
230
231
232
233
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244







+
+
+
+
+
+
+
+
+
+
+







    set ::foo 1
    proc foreach-test {} {
	foreach ::foo {1 2 3} {}
    }
    foreach-test
    set ::foo
} 3
test compile-5.3 {TclCompileForeachCmd: [Bug b9b2079e6d]} -setup {
    proc demo {} {
	foreach x y {
	    if 1 break else
	}
    }
} -body {
    demo
} -cleanup {
    rename demo {}
} -returnCodes error -result {wrong # args: no script following "else" argument}

test compile-6.1 {TclCompileSetCmd: global scalar names with ::s} -setup {
    catch {unset x}
    catch {unset y}
} -body {
    set x 123
    proc p {} {
Changes to tests/lreplace.test.
94
95
96
97
98
99
100
101






102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123


124
125
126
127
128
129
130
94
95
96
97
98
99
100

101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126


127
128
129
130
131
132
133
134
135







-
+
+
+
+
+
+




















-
-
+
+







test lreplace-1.26 {lreplace command} {
    catch {unset foo}
    set foo {a b}
    list [set foo [lreplace $foo end end]] \
        [set foo [lreplace $foo end end]] \
        [set foo [lreplace $foo end end]]
} {a {} {}}

test lreplace-1.27 {lreplace command} {
    lreplace x 1 1
} x
test lreplace-1.28 {lreplace command} {
    lreplace x 1 1 y
} {x y}

test lreplace-2.1 {lreplace errors} {
    list [catch lreplace msg] $msg
} {1 {wrong # args: should be "lreplace list first last ?element ...?"}}
test lreplace-2.2 {lreplace errors} {
    list [catch {lreplace a b} msg] $msg
} {1 {wrong # args: should be "lreplace list first last ?element ...?"}}
test lreplace-2.3 {lreplace errors} {
    list [catch {lreplace x a 10} msg] $msg
} {1 {bad index "a": must be integer?[+-]integer? or end?[+-]integer?}}
test lreplace-2.4 {lreplace errors} {
    list [catch {lreplace x 10 x} msg] $msg
} {1 {bad index "x": must be integer?[+-]integer? or end?[+-]integer?}}
test lreplace-2.5 {lreplace errors} {
    list [catch {lreplace x 10 1x} msg] $msg
} {1 {bad index "1x": must be integer?[+-]integer? or end?[+-]integer?}}
test lreplace-2.6 {lreplace errors} {
    list [catch {lreplace x 3 2} msg] $msg
} {1 {list doesn't contain element 3}}
test lreplace-2.7 {lreplace errors} {
    list [catch {lreplace x 1 1} msg] $msg
} {1 {list doesn't contain element 1}}
    list [catch {lreplace x 2 2} msg] $msg
} {1 {list doesn't contain element 2}}

test lreplace-3.1 {lreplace won't modify shared argument objects} {
    proc p {} {
        lreplace "a b c" 1 1 "x y"
        return "a b c"
    }
    p
177
178
179
180
181
182
183











































184
185
186
187
188
189
190
191
192
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+









} {0 1 a b c 3 4}
test lreplace-4.11 {lreplace end index first} {
    lreplace {0 1 2 3 4} end-2 1 a b c
} {0 1 a b c 2 3 4}
test lreplace-4.12 {lreplace end index first} {
    lreplace {0 1 2 3 4} end-2 2 a b c
} {0 1 a b c 3 4}
test lreplace-4.13 {lreplace empty list} {
    lreplace {} 1 1 1
} 1
test lreplace-4.14 {lreplace empty list} {
    lreplace {} 2 2 2
} 2

test lreplace-5.1 {compiled lreplace: Bug 47ac84309b} {
    apply {x {
	lreplace $x end 0
    }} {a b c}
} {a b c}
test lreplace-5.2 {compiled lreplace: Bug 47ac84309b} {
    apply {x {
	lreplace $x end 0 A
    }} {a b c}
} {a b A c}

# Testing for compiled behaviour. Far too many variations to check with
# spelt-out tests. Note that this *just* checks whether the compiled version
# and the interpreted version are the same, not whether the interpreted
# version is correct.
apply {{} {
    set lss     {{} {a} {a b c} {a b c d}}
    set ins     {{} A {A B}}
    set idxs    {-2 -1 0 1 2 3 end-3 end-2 end-1 end end+1 end+2}
    set lreplace lreplace

    foreach ls $lss {
	foreach a $idxs {
	    foreach b $idxs {
		foreach i $ins {
		    set expected [list [catch {$lreplace $ls $a $b {*}$i} m] $m]
		    set tester [list lreplace $ls $a $b {*}$i]
		    set script [list catch $tester m]
		    set script "list \[$script\] \$m"
		    test lreplace-6.[incr n] {lreplace battery} \
			[list apply [list {} $script]] $expected
		}
	    }
	}
    }
}}

# cleanup
catch {unset foo}
::tcltest::cleanupTests
return

# Local Variables:
# mode: tcl
# End:
Changes to tests/namespace.test.
2949
2950
2951
2952
2953
2954
2955







































2956
2957
2958
2959
2960
2961
2962
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







    rename getbytes {}
    unset i ns start end
} -result 0

test namespace-55.1 {compiled ensembles inside compiled ensembles: Bug 6d2f249a01} {
    info class [format %s constructor] oo::object
} ""

test namespace-56.1 {bug f97d4ee020: mutually-entangled deletion} {
    namespace eval ::testing {
	proc abc {} {}
	proc def {} {}
	trace add command abc delete "rename ::testing::def {}; #"
	trace add command def delete "rename ::testing::abc {}; #"
    }
    namespace delete ::testing
} {}
test namespace-56.2 {bug f97d4ee020: mutually-entangled deletion} {
    namespace eval ::testing {
	namespace eval abc {proc xyz {} {}}
	namespace eval def {proc xyz {} {}}
	trace add command abc::xyz delete "namespace delete ::testing::def {}; #"
	trace add command def::xyz delete "namespace delete ::testing::abc {}; #"
    }
    namespace delete ::testing
} {}
test namespace-56.3 {bug f97d4ee020: mutually-entangled deletion} {
    namespace eval ::testing {
	variable gone {}
	oo::class create CB {
	    variable cmd
	    constructor other {set cmd $other}
	    destructor {rename $cmd {}; lappend ::testing::gone $cmd}
	}
	namespace eval abc {
	    ::testing::CB create def ::testing::abc::ghi
	    ::testing::CB create ghi ::testing::abc::def
	}
	namespace delete abc
	try {
	    return [lsort $gone]
	} finally {
	    namespace delete ::testing
	}
    }
} {::testing::abc::def ::testing::abc::ghi}

# cleanup
catch {rename cmd1 {}}
catch {unset l}
catch {unset msg}
catch {unset trigger}
namespace delete {*}[namespace children :: test_ns_*]
Changes to tests/registry.test.
15
16
17
18
19
20
21
22

23
24
25
26
27
28
29
30
31
32
33
34
35
36

37
38
39
40
41
42
43
15
16
17
18
19
20
21

22
23
24
25
26
27
28
29
30
31
32
33
34
35

36
37
38
39
40
41
42
43







-
+













-
+







    namespace import -force ::tcltest::*
}

testConstraint reg 0
if {[testConstraint win]} {
    if {![catch {
	    ::tcltest::loadTestedCommands
	    set ::regver [package require registry 1.3.1]
	    set ::regver [package require registry 1.3.2]
	}]} {
	testConstraint reg 1
    }
}

# determine the current locale
testConstraint english [expr {
    [llength [info commands testlocale]]
    && [string match "English*" [testlocale all ""]]
}]

test registry-1.0 {check if we are testing the right dll} {win reg} {
    set ::regver
} {1.3.1}
} {1.3.2}
test registry-1.1 {argument parsing for registry command} {win reg} {
    list [catch {registry} msg] $msg
} {1 {wrong # args: should be "registry ?-32bit|-64bit? option ?arg ...?"}}
test registry-1.1a {argument parsing for registry command} {win reg} {
    list [catch {registry -32bit} msg] $msg
} {1 {wrong # args: should be "registry ?-32bit|-64bit? option ?arg ...?"}}
test registry-1.1b {argument parsing for registry command} {win reg} {
Changes to tests/stringComp.test.
724
725
726
727
728
729
730










731
732
733
734
735
736
737
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747







+
+
+
+
+
+
+
+
+
+







    apply {arg {
	set argCopy $arg
	set arg [string replace $arg 1 2 aa]
	# Crashes in comparison before fix
	expr {$arg ne $argCopy}
    }} abcde
} 1
test stringComp-14.4 {Bug 1af8de570511} {
    apply {{x y} {
	# Generate an unshared string value
	set val ""
	for { set i 0 } { $i < $x } { incr i } {
	    set val [format "0%s" $val]
	}
	string replace $val[unset val] 1 1 $y
    }} 4 x
} 0x00

## string tolower
## not yet bc

## string toupper
## not yet bc

Changes to tests/uplevel.test.
97
98
99
100
101
102
103



































































































104
105
106
107
108
109
110
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







    uplevel
} -result {wrong # args: should be "uplevel ?level? command ?arg ...?"}
test uplevel-4.4 {error: not enough args} -returnCodes error -body {
    apply {{} {
	uplevel 1
    }}
} -result {wrong # args: should be "uplevel ?level? command ?arg ...?"}
test uplevel-4.5 {level parsing} {
    apply {{} {uplevel 0 {}}}
} {}
test uplevel-4.6 {level parsing} {
    apply {{} {uplevel #0 {}}}
} {}
test uplevel-4.7 {level parsing} {
    apply {{} {uplevel [expr 0] {}}}
} {}
test uplevel-4.8 {level parsing} {
    apply {{} {uplevel #[expr 0] {}}}
} {}
test uplevel-4.9 {level parsing} {
    apply {{} {uplevel -0 {}}}
} {}
test uplevel-4.10 {level parsing} {
    apply {{} {uplevel #-0 {}}}
} {}
test uplevel-4.11 {level parsing} {
    apply {{} {uplevel [expr -0] {}}}
} {}
test uplevel-4.12 {level parsing} {
    apply {{} {uplevel #[expr -0] {}}}
} {}
test uplevel-4.13 {level parsing} {
    apply {{} {uplevel 1 {}}}
} {}
test uplevel-4.14 {level parsing} {
    apply {{} {uplevel #1 {}}}
} {}
test uplevel-4.15 {level parsing} {
    apply {{} {uplevel [expr 1] {}}}
} {}
test uplevel-4.16 {level parsing} {
    apply {{} {uplevel #[expr 1] {}}}
} {}
test uplevel-4.17 {level parsing} {
    apply {{} {uplevel -0xffffffff {}}}
} {}
test uplevel-4.18 {level parsing} {
    apply {{} {uplevel #-0xffffffff {}}}
} {}
test uplevel-4.19 {level parsing} {
    apply {{} {uplevel [expr -0xffffffff] {}}}
} {}
test uplevel-4.20 {level parsing} {
    apply {{} {uplevel #[expr -0xffffffff] {}}}
} {}
test uplevel-4.21 {level parsing} -body {
    apply {{} {uplevel -1 {}}}
} -returnCodes error -result {invalid command name "-1"}
test uplevel-4.22 {level parsing} -body {
    apply {{} {uplevel #-1 {}}}
} -returnCodes error -result {bad level "#-1"}
test uplevel-4.23 {level parsing} -body {
    apply {{} {uplevel [expr -1] {}}}
} -returnCodes error -result {invalid command name "-1"}
test uplevel-4.24 {level parsing} -body {
    apply {{} {uplevel #[expr -1] {}}}
} -returnCodes error -result {bad level "#-1"}
test uplevel-4.25 {level parsing} -body {
    apply {{} {uplevel 0xffffffff {}}}
} -returnCodes error -result {bad level "0xffffffff"}
test uplevel-4.26 {level parsing} -body {
    apply {{} {uplevel #0xffffffff {}}}
} -returnCodes error -result {bad level "#0xffffffff"}
test uplevel-4.27 {level parsing} -body {
    apply {{} {uplevel [expr 0xffffffff] {}}}
} -returnCodes error -result {bad level "4294967295"}
test uplevel-4.28 {level parsing} -body {
    apply {{} {uplevel #[expr 0xffffffff] {}}}
} -returnCodes error -result {bad level "#4294967295"}
test uplevel-4.29 {level parsing} -body {
    apply {{} {uplevel 0.2 {}}}
} -returnCodes error -result {bad level "0.2"}
test uplevel-4.30 {level parsing} -body {
    apply {{} {uplevel #0.2 {}}}
} -returnCodes error -result {bad level "#0.2"}
test uplevel-4.31 {level parsing} -body {
    apply {{} {uplevel [expr 0.2] {}}}
} -returnCodes error -result {bad level "0.2"}
test uplevel-4.32 {level parsing} -body {
    apply {{} {uplevel #[expr 0.2] {}}}
} -returnCodes error -result {bad level "#0.2"}
test uplevel-4.33 {level parsing} -body {
    apply {{} {uplevel .2 {}}}
} -returnCodes error -result {invalid command name ".2"}
test uplevel-4.34 {level parsing} -body {
    apply {{} {uplevel #.2 {}}}
} -returnCodes error -result {bad level "#.2"}
test uplevel-4.35 {level parsing} -body {
    apply {{} {uplevel [expr .2] {}}}
} -returnCodes error -result {bad level "0.2"}
test uplevel-4.36 {level parsing} -body {
    apply {{} {uplevel #[expr .2] {}}}
} -returnCodes error -result {bad level "#0.2"}




proc a2 {} {
    uplevel a3
}
proc a3 {} {
    global x y
    set x [info level]
Changes to tests/utf.test.
298
299
300
301
302
303
304
305

306
307
308
309
310
311
312
298
299
300
301
302
303
304

305
306
307
308
309
310
311
312







-
+








test utf-21.1 {TclUniCharIsAlnum} {
    # this returns 1 with Unicode 7 compliance
    string is alnum \u1040\u021f\u0220
} {1}
test utf-21.2 {unicode alnum char in regc_locale.c} {
    # this returns 1 with Unicode 7 compliance
    list [regexp {^[[:alnum:]]+$} \u1040\u021f\u0220] [regexp {^\w+$} \u1040\u021f\u0220]
    list [regexp {^[[:alnum:]]+$} \u1040\u021f\u0220] [regexp {^\w+$} \u1040\u021f\u0220_\u203f\u2040\u2054\ufe33\ufe34\ufe4d\ufe4e\ufe4f\uff3f]
} {1 1}
test utf-21.3 {unicode print char in regc_locale.c} {
    # this returns 1 with Unicode 7 compliance
    regexp {^[[:print:]]+$} \ufbc1
} 1
test utf-21.4 {TclUniCharIsGraph} {
    # [Bug 3464428]
Changes to tests/zlib.test.
871
872
873
874
875
876
877


















878
879
880
881
882
883
884
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







    set f [open $file rb]
    set d [read $f]
    close $f
    zlib gunzip $d -header noSuchNs::foo
} -cleanup {
    removeFile $file
} -returnCodes error -result {can't set "noSuchNs::foo": parent namespace doesn't exist}

test zlib-12.1 {Tk Bug 9eb55debc5} -constraints zlib -setup {
    set stream [zlib stream compress]
} -body {
    for {set opts {};set y 0} {$y < 60} {incr y} {
	for {set line {};set x 0} {$x < 100} {incr x} {
	    append line [binary format ccc $x $y 128]
	}
	if {$y == 59} {
	    set opts -finalize
	}
	$stream put {*}$opts $line
    }
    set data [$stream get]
    list [string length $data] [string length [zlib decompress $data]]
} -cleanup {
    $stream close
} -result {12026 18000}

::tcltest::cleanupTests
return

# Local Variables:
# mode: tcl
# End:
Changes to tools/genStubs.tcl.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1
2
3
4
5
6
7
8
9
10
11
12


13
14
15
16
17
18
19












-
-







# genStubs.tcl --
#
#	This script generates a set of stub files for a given
#	interface.
#
#
# Copyright (c) 1998-1999 by Scriptics Corporation.
# Copyright (c) 2007 Daniel A. Steffen <das@users.sourceforge.net>
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.

package require Tcl 8.4

namespace eval genStubs {
    # libraryName --
    #
    #	The name of the entire library.  This value is used to compute
    #	the USE_*_STUBS macro and the name of the init file.

    variable libraryName "UNKNOWN"
Changes to tools/man2html.tcl.
1
2
3
4
5
6
7
8
9
10
11
12
13
1
2
3
4


5
6
7
8
9
10
11




-
-







#!/bin/sh
# \
exec tclsh "$0" ${1+"$@"}

package require Tcl 8.4

# man2html.tcl --
#
# This file contains procedures that work in conjunction with the
# man2tcl program to generate a HTML files from Tcl manual entries.
#
# Copyright (c) 1996 by Sun Microsystems, Inc.

Changes to tools/man2html1.tcl.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1
2
3
4
5
6
7


8
9
10
11
12
13
14







-
-







# man2html1.tcl --
#
# This file defines procedures that are used during the first pass of the
# man page to html conversion process. It is sourced by h.tcl.
#
# Copyright (c) 1996 by Sun Microsystems, Inc.

package require Tcl 8.4

# Global variables used by these scripts:
#
# state -	state variable that controls action of text proc.
#
# curFile -	tail of current man page.
#
# file -	file pointer; for both xref.tcl and contents.html
Changes to tools/man2html2.tcl.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1
2
3
4
5
6
7
8


9
10
11
12
13
14
15








-
-







##############################################################################
# man2html2.tcl --
#
# This file defines procedures that are used during the second pass of the man
# page to html conversion process. It is sourced by man2html.tcl.
#
# Copyright (c) 1996 by Sun Microsystems, Inc.

package require Tcl 8.4

# Global variables used by these scripts:
#
# NAME_file -	array indexed by NAME and containing file names used for
#		hyperlinks.
#
# textState -	state variable defining action of 'text' proc.
#
Changes to tools/tclZIC.tcl.
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
26
27
28
29
30
31
32


33
34
35
36
37
38
39







-
-







#----------------------------------------------------------------------
#
# Copyright (c) 2004 by Kevin B. Kenny.	 All rights reserved.
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#----------------------------------------------------------------------

package require Tcl 8.5

# Define the names of the Olson files that we need to load.
# We avoid the solar time files and the leap seconds.

set olsonFiles {
    africa antarctica asia australasia
    backward etcetera europe northamerica
    pacificnew southamerica systemv
Changes to tools/tcltk-man2html.tcl.
1
2
3

4
5
6
7
8
9
10
1
2

3
4
5
6
7
8
9
10


-
+







#!/usr/bin/env tclsh

if {[catch {package require Tcl 8.6} msg]} {
if {[catch {package require Tcl 8.6-} msg]} {
    puts stderr "ERROR: $msg"
    puts stderr "If running this script from 'make html', set the\
	NATIVE_TCLSH environment\nvariable to point to an installed\
	tclsh8.6 (or the equivalent tclsh86.exe\non Windows)."
    exit 1
}

Changes to unix/Makefile.in.
653
654
655
656
657
658
659
660

661
662
663
664
665
666
667
653
654
655
656
657
658
659

660
661
662
663
664
665
666
667







-
+








Makefile: $(UNIX_DIR)/Makefile.in $(DLTEST_DIR)/Makefile.in
	$(SHELL) config.status
#tclConfig.h: $(UNIX_DIR)/tclConfig.h.in
#	$(SHELL) config.status

clean: clean-packages
	rm -f *.a *.o libtcl* core errs *~ \#* TAGS *.E a.out \
	rm -rf *.a *.o libtcl* core errs *~ \#* TAGS *.E a.out \
		errors ${TCL_EXE} ${TCLTEST_EXE} lib.exp Tcl @DTRACE_HDR@
	cd dltest ; $(MAKE) clean

distclean: distclean-packages clean
	rm -rf Makefile config.status config.cache config.log tclConfig.sh \
		tclConfig.h *.plist Tcl.framework tcl.pc
	cd dltest ; $(MAKE) distclean
845
846
847
848
849
850
851
852
853


854
855
856
857
858
859
860
845
846
847
848
849
850
851


852
853
854
855
856
857
858
859
860







-
-
+
+







	@echo "Installing package opt0.4 files to $(SCRIPT_INSTALL_DIR)/opt0.4/";
	@for i in $(TOP_DIR)/library/opt/*.tcl ; \
	    do \
	    $(INSTALL_DATA) $$i "$(SCRIPT_INSTALL_DIR)"/opt0.4; \
	    done;
	@echo "Installing package msgcat 1.6.0 as a Tcl Module";
	@$(INSTALL_DATA) $(TOP_DIR)/library/msgcat/msgcat.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.5/msgcat-1.6.0.tm;
	@echo "Installing package tcltest 2.3.8 as a Tcl Module";
	@$(INSTALL_DATA) $(TOP_DIR)/library/tcltest/tcltest.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.5/tcltest-2.3.8.tm;
	@echo "Installing package tcltest 2.4.0 as a Tcl Module";
	@$(INSTALL_DATA) $(TOP_DIR)/library/tcltest/tcltest.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.5/tcltest-2.4.0.tm;

	@echo "Installing package platform 1.0.14 as a Tcl Module";
	@$(INSTALL_DATA) $(TOP_DIR)/library/platform/platform.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/platform-1.0.14.tm;
	@echo "Installing package platform::shell 1.1.4 as a Tcl Module";
	@$(INSTALL_DATA) $(TOP_DIR)/library/platform/shell.tcl "$(SCRIPT_INSTALL_DIR)"/../tcl8/8.4/platform/shell-1.1.4.tm;

	@echo "Installing encoding files to $(SCRIPT_INSTALL_DIR)/encoding/";
1592
1593
1594
1595
1596
1597
1598
1599

1600
1601
1602
1603
1604
1605
1606
1592
1593
1594
1595
1596
1597
1598

1599
1600
1601
1602
1603
1604
1605
1606







-
+








# The following is a CYGWIN only source:
tclWinError.o: $(TOP_DIR)/win/tclWinError.c
	$(CC) -c $(CC_SWITCHES) $(TOP_DIR)/win/tclWinError.c

# DTrace support

$(TCL_OBJS) $(STUB_LIB_OBJS) $(TCLSH_OBJS) $(TCLTEST_OBJS) $(XTTEST_OBJS): @DTRACE_HDR@
$(TCL_OBJS) $(STUB_LIB_OBJS) $(TCLSH_OBJS) $(TCLTEST_OBJS) $(XTTEST_OBJS) $(TOMMATH_OBJS): @DTRACE_HDR@

$(DTRACE_HDR): $(DTRACE_SRC)
	$(DTRACE) -h $(DTRACE_SWITCHES) -o $@ -s $(DTRACE_SRC)

$(DTRACE_OBJ): $(DTRACE_SRC) $(TCL_OBJS)
	$(DTRACE) -G $(DTRACE_SWITCHES) -o $@ -s $(DTRACE_SRC) $(TCL_OBJS)

Changes to unix/tclUnixNotfy.c.
429
430
431
432
433
434
435

436
437
438

439
440
441
442
443
444
445
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447







+



+








	    if (triggerPipe != -1) {
		if (write(triggerPipe, "q", 1) != 1) {
		    Tcl_Panic("Tcl_FinalizeNotifier: %s",
			    "unable to write q to triggerPipe");
		}
		close(triggerPipe);
		pthread_mutex_lock(&notifierMutex);
		while(triggerPipe != -1) {
		    pthread_cond_wait(&notifierCV, &notifierMutex);
		}
		pthread_mutex_unlock(&notifierMutex);
		if (notifierThreadRunning) {
		    int result = pthread_join((pthread_t) notifierThread, NULL);

		    if (result) {
			Tcl_Panic("Tcl_FinalizeNotifier: unable to join notifier "
				"thread");
		    }
Changes to win/Makefile.in.
656
657
658
659
660
661
662
663
664


665
666
667
668
669
670
671
656
657
658
659
660
661
662


663
664
665
666
667
668
669
670
671







-
-
+
+







	@echo "Installing library opt0.4 directory";
	@for j in $(ROOT_DIR)/library/opt/*.tcl; \
	    do \
	    $(COPY) "$$j" "$(SCRIPT_INSTALL_DIR)/opt0.4"; \
	    done;
	@echo "Installing package msgcat 1.6.0 as a Tcl Module";
	@$(COPY) $(ROOT_DIR)/library/msgcat/msgcat.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.5/msgcat-1.6.0.tm;
	@echo "Installing package tcltest 2.3.8 as a Tcl Module";
	@$(COPY) $(ROOT_DIR)/library/tcltest/tcltest.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.5/tcltest-2.3.8.tm;
	@echo "Installing package tcltest 2.4.0 as a Tcl Module";
	@$(COPY) $(ROOT_DIR)/library/tcltest/tcltest.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.5/tcltest-2.4.0.tm;
	@echo "Installing package platform 1.0.14 as a Tcl Module";
	@$(COPY) $(ROOT_DIR)/library/platform/platform.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/platform-1.0.14.tm;
	@echo "Installing package platform::shell 1.1.4 as a Tcl Module";
	@$(COPY) $(ROOT_DIR)/library/platform/shell.tcl $(SCRIPT_INSTALL_DIR)/../tcl8/8.4/platform/shell-1.1.4.tm;
	@echo "Installing encodings";
	@for i in $(ROOT_DIR)/library/encoding/*.enc ; do \
		$(COPY) "$$i" "$(SCRIPT_INSTALL_DIR)/encoding"; \
709
710
711
712
713
714
715
716

717
718
719
720
721
722
723

724
725
726
727
728
729
730
709
710
711
712
713
714
715

716
717
718
719
720
721
722

723
724
725
726
727
728
729
730







-
+






-
+







test: test-tcl test-packages

test-tcl: binaries $(TCLSH) $(CAT32) $(TEST_DLL_FILE)
	TCL_LIBRARY="$(LIBRARY_DIR)"; export TCL_LIBRARY; \
	./$(TCLSH) "$(ROOT_DIR_NATIVE)/tests/all.tcl" $(TESTFLAGS) \
	-load "package ifneeded Tcltest ${VERSION}@TCL_PATCH_LEVEL@ [list load [file normalize ${TEST_DLL_FILE}] Tcltest]; \
	package ifneeded dde 1.4.0 [list load [file normalize ${DDE_DLL_FILE}] dde]; \
	package ifneeded registry 1.3.1 [list load [file normalize ${REG_DLL_FILE}] registry]" | ./$(CAT32)
	package ifneeded registry 1.3.2 [list load [file normalize ${REG_DLL_FILE}] registry]" | ./$(CAT32)

# Useful target to launch a built tclsh with the proper path,...
runtest: binaries $(TCLSH) $(TEST_DLL_FILE)
	@TCL_LIBRARY="$(LIBRARY_DIR)"; export TCL_LIBRARY; \
	./$(TCLSH) $(TESTFLAGS) -load "package ifneeded Tcltest ${VERSION}@TCL_PATCH_LEVEL@ [list load [file normalize ${TEST_DLL_FILE}] Tcltest]; \
	package ifneeded dde 1.4.0 [list load [file normalize ${DDE_DLL_FILE}] dde]; \
	package ifneeded registry 1.3.1 [list load [file normalize ${REG_DLL_FILE}] registry]" $(SCRIPT)
	package ifneeded registry 1.3.2 [list load [file normalize ${REG_DLL_FILE}] registry]" $(SCRIPT)

# This target can be used to run tclsh from the build directory via
# `make shell SCRIPT=foo.tcl`
shell: binaries
	@TCL_LIBRARY="$(LIBRARY_DIR)"; export TCL_LIBRARY; \
	./$(TCLSH) $(SCRIPT)

Changes to win/coffbase.txt.
30
31
32
33
34
35
36

37
38
39
40
41
42
30
31
32
33
34
35
36
37
38
39
40
41
42
43







+






tdom		0x109E0000	0x00080000
tclvfs		0x10A70000	0x00010000
tkvideo		0x10B00000	0x00010000
tclsdl		0x10B20000	0x00080000
vqtcl		0x10C00000	0x00010000
tdbc		0x10C40000	0x00010000
thread		0x10C80000	0x00020000
nsf		0x10ca0000	0x00080000
;
; insert new packages here
;
snack		0x1E000000	0x00400000
sound		0x1E400000	0x00400000
snackogg	0x1E800000	0x00200000
Changes to win/makefile.vc.
585
586
587
588
589
590
591
592

593
594
595
596
597
598

599
600
601
602
603
604
605
585
586
587
588
589
590
591

592
593
594
595
596
597

598
599
600
601
602
603
604
605







-
+





-
+








test: test-core test-pkgs
test-core: setup $(TCLTEST) dlls $(CAT32)
	set TCL_LIBRARY=$(ROOT:\=/)/library
!if "$(OS)" == "Windows_NT"  || "$(MSVCDIR)" == "IDE"
	$(DEBUGGER) $(TCLTEST) "$(ROOT:\=/)/tests/all.tcl" $(TESTFLAGS) -loadfile <<
		package ifneeded dde 1.4.0 [list load "$(TCLDDELIB:\=/)" dde]
		package ifneeded registry 1.3.1 [list load "$(TCLREGLIB:\=/)" registry]
		package ifneeded registry 1.3.2 [list load "$(TCLREGLIB:\=/)" registry]
<<
!else
	@echo Please wait while the tests are collected...
	$(TCLTEST) "$(ROOT:\=/)/tests/all.tcl" $(TESTFLAGS) -loadfile << > tests.log
		package ifneeded dde 1.4.0 "$(TCLDDELIB:\=/)" dde]
		package ifneeded registry 1.3.1 "$(TCLREGLIB:\=/)" registry]
		package ifneeded registry 1.3.2 "$(TCLREGLIB:\=/)" registry]
<<
	type tests.log | more
!endif

runtest: setup $(TCLTEST) dlls $(CAT32)
	set TCL_LIBRARY=$(ROOT:\=/)/library
	$(DEBUGGER) $(TCLTEST) $(SCRIPT)
Changes to win/tclWinReg.c.
159
160
161
162
163
164
165
166

167
168
169
170
171
172
173
159
160
161
162
163
164
165

166
167
168
169
170
171
172
173







-
+







    if (Tcl_InitStubs(interp, "8.5", 0) == NULL) {
	return TCL_ERROR;
    }

    cmd = Tcl_CreateObjCommand(interp, "registry", RegistryObjCmd,
	    interp, DeleteCmd);
    Tcl_SetAssocData(interp, REGISTRY_ASSOC_KEY, NULL, cmd);
    return Tcl_PkgProvide(interp, "registry", "1.3.1");
    return Tcl_PkgProvide(interp, "registry", "1.3.2");
}

/*
 *----------------------------------------------------------------------
 *
 * Registry_Unload --
 *
799
800
801
802
803
804
805
806
807


808
809
810
811
812
813

814
815
816


817
818
819
820
821
822
823
799
800
801
802
803
804
805


806
807
808
809
810
811
812

813
814


815
816
817
818
819
820
821
822
823







-
-
+
+





-
+

-
-
+
+








	/*
	 * Multistrings are stored as an array of null-terminated strings,
	 * terminated by two null characters. Also do a bounds check in case
	 * we get bogus data.
	 */

	while ((p < end) && *((Tcl_UniChar *) p) != 0) {
	    Tcl_UniChar *up;
	while ((p < end) && *((WCHAR *) p) != 0) {
	    WCHAR *wp;

	    Tcl_WinTCharToUtf((TCHAR *) p, -1, &buf);
	    Tcl_ListObjAppendElement(interp, resultPtr,
		    Tcl_NewStringObj(Tcl_DStringValue(&buf),
			    Tcl_DStringLength(&buf)));
	    up = (Tcl_UniChar *) p;
	    wp = (WCHAR *) p;

	    while (*up++ != 0) {/* empty body */}
	    p = (char *) up;
	    while (*wp++ != 0) {/* empty body */}
	    p = (char *) wp;
	    Tcl_DStringFree(&buf);
	}
	Tcl_SetObjResult(interp, resultPtr);
    } else if ((type == REG_SZ) || (type == REG_EXPAND_SZ)) {
	Tcl_WinTCharToUtf((TCHAR *) Tcl_DStringValue(&data), -1, &buf);
	Tcl_DStringResult(interp, &buf);
    } else {
1328
1329
1330
1331
1332
1333
1334
1335

1336
1337
1338
1339
1340
1341
1342
1328
1329
1330
1331
1332
1333
1334

1335
1336
1337
1338
1339
1340
1341
1342







-
+







	Tcl_DString buf;
	const char *data = Tcl_GetString(dataObj);

	length = dataObj->length;
	data = (char *) Tcl_WinUtfToTChar(data, length, &buf);

	/*
	 * Include the null in the length, padding if needed for Unicode.
	 * Include the null in the length, padding if needed for WCHAR.
	 */

	Tcl_DStringSetLength(&buf, Tcl_DStringLength(&buf)+1);
	length = Tcl_DStringLength(&buf) + 1;

	result = RegSetValueEx(key, (TCHAR *) valueName, 0,
		(DWORD) type, (BYTE *) data, (DWORD) length);
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398


1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413





1414
1415
1416
1417
1418
1419
1420
1421


1422
1423
1424
1425


1426
1427
1428
1429
1430
1431
1432
1389
1390
1391
1392
1393
1394
1395

1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411



1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423

1424
1425
1426
1427


1428
1429
1430
1431
1432
1433
1434
1435
1436







-


+
+












-
-
-
+
+
+
+
+







-
+
+


-
-
+
+







    int objc,			/* Number of arguments. */
    Tcl_Obj *const objv[])	/* Argument values. */
{
    LRESULT result;
    DWORD_PTR sendResult;
    int timeout = 3000;
    size_t len;
    int unilen;
    const char *str;
    Tcl_Obj *objPtr;
    WCHAR *wstr;
    Tcl_DString ds;

    if (objc == 3) {
	str = Tcl_GetString(objv[1]);
	len = objv[1]->length;
	if ((len < 2) || (*str != '-') || strncmp(str, "-timeout", len)) {
	    return TCL_BREAK;
	}
	if (Tcl_GetIntFromObj(interp, objv[2], &timeout) != TCL_OK) {
	    return TCL_ERROR;
	}
    }

    str = (char*)Tcl_GetUnicodeFromObj(objv[0], &unilen);
    if (unilen == 0) {
	str = NULL;
    str = Tcl_GetString(objv[0]);
    len = objv[0]->length;
    wstr = (WCHAR *) Tcl_WinUtfToTChar(str, len, &ds);
    if (Tcl_DStringLength(&ds) == 0) {
	wstr = NULL;
    }

    /*
     * Use the ignore the result.
     */

    result = SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE,
	    (WPARAM) 0, (LPARAM) str, SMTO_ABORTIFHUNG, (UINT) timeout, &sendResult);
	    (WPARAM) 0, (LPARAM) wstr, SMTO_ABORTIFHUNG, (UINT) timeout, &sendResult);
    Tcl_DStringFree(&ds);

    objPtr = Tcl_NewObj();
    Tcl_ListObjAppendElement(NULL, objPtr, Tcl_NewLongObj((long) result));
    Tcl_ListObjAppendElement(NULL, objPtr, Tcl_NewLongObj((long) sendResult));
    Tcl_ListObjAppendElement(NULL, objPtr, Tcl_NewWideIntObj((Tcl_WideInt) result));
    Tcl_ListObjAppendElement(NULL, objPtr, Tcl_NewWideIntObj((Tcl_WideInt) sendResult));
    Tcl_SetObjResult(interp, objPtr);

    return TCL_OK;
}

/*
 *----------------------------------------------------------------------
Changes to win/tclWinSock.c.
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2057
2058
2059
2060
2061
2062
2063

2064
2065
2066
2067
2068
2069
2070







-







    unsigned short chosenport = 0;
    struct addrinfo *addrlist = NULL;
    struct addrinfo *addrPtr;	/* Socket address to listen on. */
    TcpState *statePtr = NULL;	/* The returned value. */
    char channelName[SOCK_CHAN_LENGTH];
    u_long flag = 1;		/* Indicates nonblocking mode. */
    const char *errorMsg = NULL;
    ThreadSpecificData *tsdPtr = TclThreadDataKeyGet(&dataKey);

    if (TclpHasSockets(interp) != TCL_OK) {
	return NULL;
    }

    /*
     * Check that WinSock is initialized; do not call it if not, to prevent
2173
2174
2175
2176
2177
2178
2179

2180
2181
2182
2183
2184
2185
2186
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186







+








error:
    if (addrlist != NULL) {
	freeaddrinfo(addrlist);
    }

    if (statePtr != NULL) {
	ThreadSpecificData *tsdPtr = TclThreadDataKeyGet(&dataKey);

	statePtr->acceptProc = acceptProc;
	statePtr->acceptProcData = acceptProcData;
	sprintf(channelName, SOCK_TEMPLATE, statePtr);
	statePtr->channel = Tcl_CreateChannel(&tcpChannelType, channelName,
		statePtr, 0);
	/*
Changes to win/tclWinThrd.c.
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180


181
182

183
184

185
186
187
188
189
190
191
192
164
165
166
167
168
169
170

171
172
173
174
175
176
177


178
179


180
181

182

183
184
185
186
187
188
189







-







-
-
+
+
-
-
+

-
+
-








static DWORD WINAPI
TclWinThreadStart(
    LPVOID lpParameter)		/* The WinThread structure pointer passed
				 * from TclpThreadCreate */
{
    WinThread *winThreadPtr = (WinThread *) lpParameter;
    unsigned int fpmask;
    LPTHREAD_START_ROUTINE lpOrigStartAddress;
    LPVOID lpOrigParameter;

    if (!winThreadPtr) {
	return TCL_ERROR;
    }

    fpmask = _MCW_EM | _MCW_RC | _MCW_PC;

    _controlfp(winThreadPtr->fpControl, _MCW_EM | _MCW_RC | 0x03000000 /* _MCW_DN */
#if !defined(_WIN64)
#if defined(_MSC_VER) && _MSC_VER >= 1200
    fpmask |= _MCW_DN;
	    | _MCW_PC
#endif

    );
    _controlfp(winThreadPtr->fpControl, fpmask);

    lpOrigStartAddress = winThreadPtr->lpStartAddress;
    lpOrigParameter = winThreadPtr->lpParameter;

    ckfree((char *)winThreadPtr);
    return lpOrigStartAddress(lpOrigParameter);
}