Repository: VKCOM/noverify
Pull request #635 (2020-08-06 07:43:24)

parser: added support of type hints for class property by parser


Patch:
diff --git a/src/php/parser/node/stmt/n_property_list.go b/src/php/parser/node/stmt/n_property_list.go
index bfa6144..1dda3ee 100644
--- a/src/php/parser/node/stmt/n_property_list.go
+++ b/src/php/parser/node/stmt/n_property_list.go
@@ -12,14 +12,16 @@ type PropertyList struct {
 	FreeFloating freefloating.Collection
 	Position     *position.Position
 	Modifiers    []*node.Identifier
+	Type         node.Node
 	Properties   []node.Node
 }
 
 // NewPropertyList node constructor
-func NewPropertyList(Modifiers []*node.Identifier, Properties []node.Node) *PropertyList {
+func NewPropertyList(Modifiers []*node.Identifier, Type node.Node, Properties []node.Node) *PropertyList {
 	return &PropertyList{
 		FreeFloating: nil,
 		Modifiers:    Modifiers,
+		Type:         Type,
 		Properties:   Properties,
 	}
 }
@@ -53,6 +55,10 @@ func (n *PropertyList) Walk(v walker.Visitor) {
 		}
 	}
 
+	if n.Type != nil {
+		n.Type.Walk(v)
+	}
+
 	if n.Properties != nil {
 		for _, nn := range n.Properties {
 			if nn != nil {
diff --git a/src/php/parser/php7/php7.go b/src/php/parser/php7/php7.go
index 776ead4..01aba5a 100644
--- a/src/php/parser/php7/php7.go
+++ b/src/php/parser/php7/php7.go
@@ -512,8 +512,9 @@ var yyExca = [...]int{
 	149, 185,
 	-2, 425,
 	-1, 742,
-	12, 266,
-	-2, 269,
+	37, 269,
+	39, 269,
+	-2, 266,
 	-1, 756,
 	94, 209,
 	95, 209,
@@ -525,860 +526,856 @@ var yyExca = [...]int{
 	-1, 787,
 	149, 187,
 	-2, 399,
-	-1, 804,
+	-1, 802,
 	94, 210,
 	95, 210,
 	96, 210,
 	-2, 0,
-	-1, 855,
+	-1, 852,
 	31, 200,
 	32, 200,
 	33, 200,
 	145, 200,
 	-2, 0,
-	-1, 885,
+	-1, 884,
 	29, 77,
 	-2, 81,
-	-1, 890,
+	-1, 889,
 	31, 199,
 	32, 199,
 	33, 199,
 	145, 199,
 	-2, 0,
-	-1, 916,
+	-1, 917,
 	149, 214,
 	-2, 219,
 }
 
 const yyPrivate = 57344
 
-const yyLast = 7766
+const yyLast = 7722
 
 var yyAct = [...]int{
-	28, 132, 761, 627, 842, 865, 877, 581, 744, 438,
-	781, 109, 841, 818, 797, 678, 191, 631, 664, 719,
-	223, 128, 140, 140, 140, 378, 646, 153, 568, 645,
-	708, 325, 629, 81, 525, 188, 536, 576, 632, 370,
-	407, 320, 380, 517, 9, 319, 225, 149, 8, 318,
-	85, 152, 7, 227, 230, 145, 44, 238, 239, 240,
-	241, 242, 139, 130, 243, 244, 245, 246, 247, 248,
-	249, 317, 252, 2, 6, 260, 261, 262, 127, 256,
-	316, 516, 873, 5, 432, 142, 143, 849, 232, 232,
-	275, 276, 687, 278, 279, 83, 129, 859, 271, 134,
-	839, 846, 266, 845, 593, 234, 234, 336, 312, 896,
-	871, 231, 237, 107, 113, 836, 408, 680, 107, 571,
-	897, 545, 337, 285, 872, 680, 117, 123, 334, 837,
-	311, 332, 767, 310, 322, 305, 338, 304, 327, 328,
-	712, 702, 335, 639, 624, 333, 309, 311, 107, 569,
-	560, 305, 324, 288, 290, 413, 339, 340, 341, 342,
+	28, 132, 761, 627, 839, 876, 862, 581, 438, 744,
+	838, 109, 781, 816, 191, 835, 631, 678, 113, 630,
+	223, 128, 140, 140, 140, 708, 646, 153, 378, 568,
+	117, 123, 664, 645, 719, 188, 536, 629, 632, 525,
+	370, 407, 380, 325, 316, 320, 225, 5, 9, 319,
+	81, 152, 8, 227, 230, 576, 85, 238, 239, 240,
+	241, 242, 139, 134, 243, 244, 245, 246, 247, 248,
+	249, 318, 252, 149, 7, 260, 261, 262, 127, 317,
+	256, 517, 6, 130, 145, 142, 143, 516, 432, 129,
+	275, 276, 872, 278, 279, 83, 869, 846, 271, 2,
+	856, 266, 687, 593, 336, 232, 232, 843, 312, 842,
+	680, 234, 234, 895, 408, 870, 107, 866, 545, 571,
+	767, 285, 337, 680, 896, 712, 107, 334, 332, 871,
+	311, 867, 305, 293, 322, 295, 338, 310, 327, 328,
+	302, 335, 333, 308, 702, 639, 309, 624, 107, 569,
+	324, 311, 560, 181, 413, 863, 339, 340, 341, 342,
 	343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
 	353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
-	363, 364, 268, 366, 368, 192, 372, 704, 787, 374,
-	696, 692, 298, 271, 603, 866, 606, 604, 181, 80,
-	613, 600, 221, 588, 390, 392, 393, 394, 395, 396,
-	397, 398, 399, 400, 401, 402, 403, 426, 232, 404,
-	140, 406, 382, 227, 146, 609, 412, 263, 927, 293,
-	610, 295, 892, 826, 417, 234, 302, 227, 825, 308,
-	167, 371, 816, 411, 805, 286, 860, 791, 734, 724,
-	409, 706, 140, 701, 181, 521, 916, 418, 699, 427,
-	108, 691, 232, 662, 140, 108, 651, 641, 601, 433,
-	514, 166, 168, 169, 526, 527, 522, 268, 528, 234,
-	386, 592, 405, 373, 365, 415, 272, 533, 220, 294,
-	537, 833, 227, 232, 219, 108, 167, 170, 171, 820,
-	819, 922, 789, 177, 179, 727, 690, 762, 287, 425,
-	234, 292, 539, 555, 420, 673, 429, 165, 164, 659,
-	289, 574, 660, 906, 558, 309, 431, 166, 168, 169,
-	176, 178, 163, 556, 422, 423, 867, 564, 605, 153,
-	9, 520, 532, 416, 8, 905, 387, 519, 7, 385,
-	513, 291, 523, 277, 274, 273, 119, 251, 107, 222,
-	422, 218, 423, 423, 422, 186, 185, 184, 567, 181,
-	6, 542, 297, 138, 296, 554, 850, 137, 133, 5,
-	115, 272, 754, 563, 548, 931, 583, 930, 584, 562,
-	565, 585, 586, 578, 776, 777, 582, 389, 119, 181,
-	107, 776, 777, 573, 190, 891, 112, 856, 827, 580,
-	591, 167, 170, 171, 227, 595, 822, 227, 547, 815,
-	550, 410, 575, 773, 540, 755, 136, 723, 722, 114,
-	720, 612, 165, 164, 718, 715, 615, 598, 119, 559,
-	544, 167, 166, 168, 169, 235, 541, 163, 667, 111,
-	388, 590, 159, 158, 181, 376, 331, 330, 329, 299,
-	594, 119, 165, 164, 434, 515, 814, 119, 136, 107,
-	811, 114, 166, 168, 169, 806, 614, 163, 183, 180,
-	769, 540, 611, 540, 540, 911, 863, 235, 862, 634,
-	635, 807, 794, 790, 155, 156, 167, 170, 171, 172,
-	173, 174, 175, 177, 179, 108, 181, 821, 136, 736,
-	270, 114, 679, 421, 775, 182, 161, 165, 164, 579,
-	140, 619, 187, 167, 160, 77, 162, 166, 168, 169,
-	176, 178, 163, 146, 116, 122, 233, 136, 668, 640,
-	114, 666, 741, 255, 636, 743, 765, 108, 167, 198,
-	199, 148, 307, 623, 307, 116, 235, 616, 710, 655,
-	327, 657, 620, 257, 638, 307, 622, 661, 424, 292,
-	119, 309, 909, 647, 200, 202, 201, 119, 674, 518,
-	633, 650, 618, 265, 9, 677, 636, 307, 8, 582,
-	307, 656, 7, 264, 688, 118, 748, 749, 750, 747,
-	746, 745, 676, 232, 232, 119, 292, 193, 644, 663,
-	119, 694, 848, 675, 6, 649, 108, 643, 551, 553,
-	234, 234, 725, 5, 381, 526, 371, 665, 258, 259,
-	232, 748, 749, 750, 747, 746, 745, 125, 653, 126,
-	537, 546, 886, 549, 306, 636, 577, 234, 282, 283,
-	303, 907, 670, 689, 78, 79, 716, 301, 384, 700,
-	698, 257, 793, 908, 550, 709, 550, 148, 684, 227,
-	713, 647, 705, 729, 711, 136, 707, 733, 114, 714,
-	721, 257, 800, 124, 799, 636, 424, 756, 757, 728,
-	693, 227, 752, 531, 323, 751, 731, 732, 135, 106,
-	232, 735, 119, 823, 776, 777, 779, 776, 777, 898,
-	798, 758, 741, 810, 636, 743, 46, 234, 617, 327,
-	150, 410, 621, 726, 760, 529, 258, 259, 227, 125,
-	119, 126, 709, 257, 647, 763, 607, 766, 424, 770,
-	778, 768, 780, 771, 784, 530, 258, 259, 786, 801,
-	774, 802, 795, 582, 131, 194, 804, 552, 550, 232,
-	540, 379, 753, 550, 550, 377, 748, 749, 750, 747,
-	746, 745, 197, 257, 636, 196, 234, 817, 280, 257,
-	809, 257, 785, 150, 284, 824, 254, 808, 257, 812,
-	119, 648, 830, 195, 831, 832, 189, 813, 258, 259,
-	1, 829, 628, 535, 121, 782, 524, 864, 135, 106,
-	834, 369, 868, 876, 147, 796, 144, 843, 326, 151,
-	855, 840, 672, 847, 838, 550, 828, 550, 253, 38,
-	739, 854, 742, 740, 224, 792, 858, 281, 258, 259,
-	870, 634, 635, 383, 258, 259, 258, 259, 874, 887,
-	888, 883, 869, 258, 259, 889, 890, 652, 882, 851,
-	136, 929, 658, 114, 894, 895, 844, 226, 43, 42,
-	16, 15, 893, 602, 901, 269, 49, 48, 110, 50,
-	84, 883, 550, 904, 82, 900, 72, 250, 882, 62,
-	267, 61, 881, 880, 879, 878, 899, 852, 738, 45,
-	902, 630, 730, 914, 669, 313, 782, 120, 300, 3,
-	437, 764, 703, 923, 921, 917, 0, 920, 919, 582,
-	924, 0, 0, 0, 0, 925, 0, 915, 636, 0,
-	928, 0, 4, 932, 89, 90, 70, 47, 94, 95,
-	36, 0, 107, 0, 27, 0, 0, 0, 112, 26,
-	18, 17, 0, 19, 0, 30, 0, 31, 0, 0,
-	20, 0, 0, 0, 21, 22, 35, 37, 106, 13,
-	23, 33, 0, 0, 34, 12, 0, 24, 0, 29,
-	87, 88, 10, 39, 40, 41, 0, 0, 0, 0,
-	51, 111, 0, 103, 99, 100, 101, 96, 97, 741,
-	0, 0, 743, 0, 0, 104, 0, 0, 0, 0,
-	11, 102, 98, 114, 0, 91, 92, 93, 0, 0,
-	0, 0, 86, 53, 0, 0, 0, 74, 75, 25,
-	78, 79, 0, 0, 0, 54, 55, 76, 63, 64,
-	65, 66, 67, 68, 69, 0, 216, 217, 0, 0,
-	0, 0, 0, 748, 749, 750, 747, 746, 745, 204,
-	205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
-	215, 0, 105, 73, 14, 642, 32, 0, 60, 0,
-	52, 0, 0, 0, 57, 56, 58, 59, 71, 108,
-	4, 0, 89, 90, 70, 47, 94, 95, 36, 835,
-	107, 0, 27, 203, 0, 0, 112, 26, 18, 17,
+	363, 364, 268, 366, 368, 192, 372, 181, 304, 374,
+	44, 288, 290, 271, 603, 167, 606, 604, 704, 80,
+	787, 696, 305, 692, 390, 392, 393, 394, 395, 396,
+	397, 398, 399, 400, 401, 402, 403, 613, 298, 404,
+	140, 406, 600, 227, 146, 382, 166, 168, 169, 167,
+	170, 171, 588, 412, 417, 232, 263, 227, 928, 891,
+	824, 234, 609, 411, 386, 231, 237, 610, 409, 857,
+	165, 164, 140, 426, 221, 181, 823, 418, 286, 427,
+	166, 168, 169, 108, 140, 163, 814, 521, 803, 433,
+	514, 791, 734, 108, 526, 527, 373, 268, 528, 232,
+	180, 724, 405, 365, 706, 234, 272, 533, 522, 701,
+	537, 699, 227, 691, 662, 108, 864, 167, 170, 171,
+	172, 173, 174, 175, 177, 179, 651, 641, 287, 119,
+	232, 107, 539, 555, 420, 601, 234, 161, 165, 164,
+	592, 294, 547, 917, 550, 309, 431, 162, 166, 168,
+	169, 176, 178, 163, 831, 422, 423, 564, 605, 153,
+	220, 789, 727, 5, 9, 425, 219, 690, 8, 818,
+	817, 762, 270, 520, 513, 673, 289, 754, 523, 519,
+	181, 422, 574, 423, 423, 422, 659, 558, 567, 660,
+	7, 556, 532, 416, 119, 371, 107, 387, 6, 136,
+	385, 272, 114, 291, 548, 292, 583, 277, 584, 274,
+	565, 585, 586, 578, 273, 554, 582, 542, 235, 251,
+	222, 218, 167, 186, 185, 184, 573, 138, 137, 563,
+	591, 133, 580, 115, 227, 595, 923, 227, 562, 415,
+	389, 410, 575, 165, 164, 190, 157, 159, 158, 181,
+	932, 612, 931, 166, 168, 169, 615, 598, 163, 776,
+	777, 906, 776, 777, 136, 119, 297, 114, 296, 905,
+	429, 890, 853, 183, 180, 825, 820, 813, 108, 119,
+	594, 107, 773, 235, 434, 515, 755, 112, 723, 155,
+	156, 167, 170, 171, 172, 173, 174, 175, 177, 179,
+	722, 720, 718, 715, 818, 817, 559, 544, 541, 590,
+	182, 161, 165, 164, 388, 376, 331, 330, 329, 160,
+	299, 162, 166, 168, 169, 176, 178, 163, 847, 911,
+	111, 257, 812, 809, 614, 804, 424, 769, 116, 611,
+	140, 619, 860, 108, 540, 540, 540, 540, 859, 136,
+	805, 794, 114, 146, 790, 736, 679, 579, 187, 640,
+	421, 167, 119, 255, 636, 200, 202, 201, 235, 181,
+	198, 199, 819, 193, 623, 775, 765, 77, 116, 655,
+	327, 657, 122, 620, 307, 638, 622, 661, 550, 119,
+	550, 309, 292, 647, 909, 307, 258, 259, 674, 118,
+	518, 119, 618, 148, 650, 677, 636, 5, 9, 582,
+	307, 167, 8, 119, 688, 616, 125, 233, 126, 236,
+	78, 79, 653, 656, 265, 676, 264, 845, 108, 307,
+	663, 694, 136, 725, 7, 114, 670, 577, 292, 381,
+	232, 232, 6, 384, 907, 526, 234, 234, 119, 644,
+	119, 675, 684, 748, 749, 750, 747, 746, 745, 307,
+	537, 531, 124, 793, 553, 636, 908, 232, 282, 283,
+	257, 731, 732, 234, 549, 424, 716, 323, 710, 649,
+	643, 551, 550, 546, 700, 709, 303, 550, 550, 227,
+	713, 647, 705, 729, 46, 711, 707, 733, 698, 634,
+	635, 634, 635, 714, 301, 636, 693, 756, 757, 728,
+	836, 227, 752, 306, 798, 721, 797, 751, 136, 148,
+	136, 114, 897, 114, 735, 808, 257, 135, 106, 741,
+	150, 758, 743, 194, 636, 258, 259, 232, 617, 327,
+	648, 410, 621, 234, 119, 607, 753, 760, 227, 550,
+	131, 550, 709, 121, 647, 1, 768, 257, 766, 770,
+	763, 257, 284, 552, 771, 540, 424, 379, 786, 799,
+	257, 636, 800, 582, 795, 778, 802, 780, 784, 796,
+	371, 665, 774, 748, 749, 750, 747, 746, 745, 782,
+	633, 258, 259, 257, 636, 257, 232, 815, 280, 807,
+	254, 119, 234, 377, 197, 822, 550, 689, 196, 810,
+	806, 195, 828, 189, 829, 830, 150, 628, 811, 535,
+	524, 827, 258, 259, 861, 530, 258, 259, 125, 885,
+	126, 369, 832, 840, 529, 258, 259, 875, 852, 147,
+	834, 135, 106, 844, 821, 776, 777, 144, 326, 851,
+	779, 776, 777, 151, 837, 672, 855, 281, 258, 259,
+	258, 259, 826, 253, 38, 873, 886, 887, 882, 739,
+	742, 740, 888, 889, 224, 881, 792, 726, 383, 849,
+	652, 893, 894, 848, 930, 868, 658, 841, 782, 892,
+	899, 226, 43, 901, 42, 216, 217, 16, 15, 602,
+	882, 904, 900, 898, 269, 49, 48, 881, 204, 205,
+	206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+	110, 50, 902, 914, 84, 82, 72, 250, 62, 267,
+	61, 880, 879, 924, 922, 918, 785, 920, 921, 582,
+	878, 925, 877, 738, 45, 730, 926, 669, 915, 636,
+	916, 929, 203, 4, 933, 89, 90, 70, 47, 94,
+	95, 36, 313, 107, 120, 27, 300, 3, 437, 112,
+	26, 18, 17, 764, 19, 703, 30, 0, 31, 0,
+	0, 20, 0, 0, 0, 21, 22, 35, 37, 106,
+	13, 23, 33, 0, 0, 34, 12, 0, 24, 0,
+	29, 87, 88, 10, 39, 40, 41, 0, 0, 0,
+	0, 51, 111, 0, 103, 99, 100, 101, 96, 97,
+	741, 0, 0, 743, 0, 0, 104, 0, 0, 0,
+	0, 11, 102, 98, 114, 0, 91, 92, 93, 0,
+	0, 0, 0, 86, 53, 0, 0, 0, 74, 75,
+	25, 78, 79, 0, 0, 0, 54, 55, 76, 63,
+	64, 65, 66, 67, 68, 69, 0, 0, 0, 0,
+	0, 0, 0, 0, 748, 749, 750, 747, 746, 745,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 105, 73, 14, 642, 32, 0, 60,
+	0, 52, 0, 0, 0, 57, 56, 58, 59, 71,
+	108, 4, 0, 89, 90, 70, 47, 94, 95, 36,
+	865, 107, 0, 27, 0, 0, 0, 112, 26, 18,
+	17, 0, 19, 0, 30, 0, 31, 0, 0, 20,
+	0, 0, 0, 21, 22, 35, 37, 106, 13, 23,
+	33, 0, 0, 34, 12, 0, 24, 0, 29, 87,
+	88, 10, 39, 40, 41, 0, 0, 0, 0, 51,
+	111, 0, 103, 99, 100, 101, 96, 97, 741, 0,
+	0, 743, 0, 0, 104, 0, 0, 0, 0, 11,
+	102, 98, 114, 0, 91, 92, 93, 0, 0, 0,
+	0, 86, 53, 0, 0, 0, 74, 75, 25, 78,
+	79, 0, 0, 0, 54, 55, 76, 63, 64, 65,
+	66, 67, 68, 69, 0, 0, 0, 0, 0, 0,
+	0, 0, 748, 749, 750, 747, 746, 745, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 105, 73, 14, 543, 32, 0, 60, 0, 52,
+	0, 0, 0, 57, 56, 58, 59, 71, 108, 4,
+	0, 89, 90, 70, 47, 94, 95, 36, 833, 107,
+	0, 27, 0, 0, 0, 112, 26, 18, 17, 0,
+	19, 0, 30, 0, 31, 0, 0, 20, 0, 0,
+	0, 21, 22, 35, 37, 106, 13, 23, 33, 0,
+	0, 34, 12, 0, 24, 0, 29, 87, 88, 10,
+	39, 40, 41, 0, 0, 0, 0, 51, 111, 0,
+	103, 99, 100, 101, 96, 97, 741, 0, 0, 743,
+	0, 0, 104, 0, 0, 0, 0, 11, 102, 98,
+	114, 0, 91, 92, 93, 0, 0, 0, 0, 86,
+	53, 0, 0, 0, 74, 75, 25, 78, 79, 0,
+	0, 0, 54, 55, 76, 63, 64, 65, 66, 67,
+	68, 69, 0, 0, 0, 0, 0, 0, 0, 0,
+	748, 749, 750, 747, 746, 745, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 105,
+	73, 14, 0, 32, 0, 60, 0, 52, 0, 0,
+	0, 57, 56, 58, 59, 71, 108, 315, 0, 89,
+	90, 70, 47, 94, 95, 36, 801, 107, 0, 27,
+	0, 0, 0, 112, 26, 18, 17, 0, 19, 0,
+	30, 0, 31, 0, 0, 20, 0, 0, 0, 21,
+	22, 35, 37, 106, 0, 23, 33, 0, 0, 34,
+	0, 0, 24, 0, 29, 87, 88, 321, 39, 40,
+	41, 0, 0, 0, 0, 51, 111, 0, 103, 99,
+	100, 101, 96, 97, 741, 0, 0, 743, 0, 0,
+	104, 0, 0, 0, 0, 136, 102, 98, 114, 0,
+	91, 92, 93, 0, 0, 0, 0, 86, 53, 0,
+	0, 0, 74, 75, 25, 78, 79, 0, 0, 0,
+	54, 55, 76, 63, 64, 65, 66, 67, 68, 69,
+	0, 0, 0, 0, 0, 0, 0, 0, 748, 749,
+	750, 747, 746, 745, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 105, 73, 14,
+	934, 32, 0, 60, 0, 52, 0, 0, 0, 57,
+	56, 58, 59, 71, 108, 315, 0, 89, 90, 70,
+	47, 94, 95, 36, 737, 107, 0, 27, 0, 0,
+	0, 112, 26, 18, 17, 0, 19, 0, 30, 0,
+	31, 0, 0, 20, 0, 0, 0, 21, 22, 35,
+	37, 106, 0, 23, 33, 0, 0, 34, 0, 0,
+	24, 0, 29, 87, 88, 321, 39, 40, 41, 0,
+	0, 0, 0, 51, 111, 0, 103, 99, 100, 101,
+	96, 97, 0, 0, 0, 0, 0, 0, 104, 0,
+	0, 0, 0, 136, 102, 98, 114, 0, 91, 92,
+	93, 0, 0, 0, 0, 86, 53, 0, 0, 0,
+	74, 75, 25, 78, 79, 0, 0, 0, 54, 55,
+	76, 63, 64, 65, 66, 67, 68, 69, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 105, 73, 14, 927, 32,
+	0, 60, 0, 52, 0, 0, 0, 57, 56, 58,
+	59, 71, 108, 315, 0, 89, 90, 70, 47, 94,
+	95, 36, 0, 107, 0, 27, 0, 0, 0, 112,
+	26, 18, 17, 0, 19, 0, 30, 0, 31, 0,
+	0, 20, 0, 0, 0, 21, 22, 35, 37, 106,
+	0, 23, 33, 0, 0, 34, 0, 0, 24, 0,
+	29, 87, 88, 321, 39, 40, 41, 0, 0, 0,
+	0, 51, 111, 0, 103, 99, 100, 101, 96, 97,
+	0, 0, 0, 0, 0, 0, 104, 0, 0, 0,
+	0, 136, 102, 98, 114, 0, 91, 92, 93, 0,
+	0, 0, 0, 86, 53, 0, 0, 0, 74, 75,
+	25, 78, 79, 0, 0, 0, 54, 55, 76, 63,
+	64, 65, 66, 67, 68, 69, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 105, 73, 14, 913, 32, 0, 60,
+	0, 52, 0, 0, 0, 57, 56, 58, 59, 71,
+	108, 315, 0, 89, 90, 70, 47, 94, 95, 36,
+	0, 107, 0, 27, 0, 0, 0, 112, 26, 18,
+	17, 0, 19, 0, 30, 0, 31, 0, 0, 20,
+	0, 0, 0, 21, 22, 35, 37, 106, 0, 23,
+	33, 0, 0, 34, 0, 0, 24, 0, 29, 87,
+	88, 321, 39, 40, 41, 0, 0, 0, 0, 51,
+	111, 0, 103, 99, 100, 101, 96, 97, 0, 0,
+	0, 0, 0, 0, 104, 0, 0, 0, 0, 136,
+	102, 98, 114, 0, 91, 92, 93, 0, 0, 0,
+	0, 86, 53, 0, 0, 0, 74, 75, 25, 78,
+	79, 0, 0, 0, 54, 55, 76, 63, 64, 65,
+	66, 67, 68, 69, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 105, 73, 14, 912, 32, 0, 60, 0, 52,
+	0, 0, 0, 57, 56, 58, 59, 71, 108, 315,
+	0, 89, 90, 70, 47, 94, 95, 36, 0, 107,
+	0, 27, 0, 0, 0, 112, 26, 18, 17, 0,
+	19, 910, 30, 0, 31, 0, 0, 20, 0, 0,
+	0, 21, 22, 35, 37, 106, 0, 23, 33, 0,
+	0, 34, 0, 0, 24, 0, 29, 87, 88, 321,
+	39, 40, 41, 0, 0, 0, 0, 51, 111, 0,
+	103, 99, 100, 101, 96, 97, 0, 0, 0, 0,
+	0, 0, 104, 0, 0, 0, 0, 136, 102, 98,
+	114, 0, 91, 92, 93, 0, 0, 0, 0, 86,
+	53, 0, 0, 0, 74, 75, 25, 78, 79, 0,
+	0, 0, 54, 55, 76, 63, 64, 65, 66, 67,
+	68, 69, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 105,
+	73, 14, 0, 32, 0, 60, 0, 52, 0, 0,
+	0, 57, 56, 58, 59, 71, 108, 315, 0, 89,
+	90, 70, 47, 94, 95, 36, 0, 107, 0, 27,
+	0, 0, 0, 112, 26, 18, 17, 0, 19, 0,
+	30, 0, 31, 0, 0, 20, 0, 0, 0, 21,
+	22, 35, 37, 106, 0, 23, 33, 0, 0, 34,
+	0, 0, 24, 0, 29, 87, 88, 321, 39, 40,
+	41, 0, 0, 0, 0, 51, 111, 0, 103, 99,
+	100, 101, 96, 97, 0, 0, 0, 0, 0, 0,
+	104, 0, 0, 0, 0, 136, 102, 98, 114, 0,
+	91, 92, 93, 0, 0, 0, 0, 86, 53, 0,
+	0, 0, 74, 75, 25, 78, 79, 0, 0, 0,
+	54, 55, 76, 63, 64, 65, 66, 67, 68, 69,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 105, 73, 14,
+	858, 32, 0, 60, 0, 52, 0, 0, 0, 57,
+	56, 58, 59, 71, 108, 315, 0, 89, 90, 70,
+	47, 94, 95, 36, 0, 107, 0, 27, 0, 0,
+	0, 112, 26, 18, 17, 0, 19, 0, 30, 854,
+	31, 0, 0, 20, 0, 0, 0, 21, 22, 35,
+	37, 106, 0, 23, 33, 0, 0, 34, 0, 0,
+	24, 0, 29, 87, 88, 321, 39, 40, 41, 0,
+	0, 0, 0, 51, 111, 0, 103, 99, 100, 101,
+	96, 97, 0, 0, 0, 0, 0, 0, 104, 0,
+	0, 0, 0, 136, 102, 98, 114, 0, 91, 92,
+	93, 0, 0, 0, 0, 86, 53, 0, 0, 0,
+	74, 75, 25, 78, 79, 0, 0, 0, 54, 55,
+	76, 63, 64, 65, 66, 67, 68, 69, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 105, 73, 14, 0, 32,
+	0, 60, 0, 52, 0, 0, 0, 57, 56, 58,
+	59, 71, 108, 315, 0, 89, 90, 70, 47, 94,
+	95, 36, 0, 107, 0, 27, 0, 0, 0, 112,
+	26, 18, 17, 0, 19, 0, 30, 0, 31, 788,
+	0, 20, 0, 0, 0, 21, 22, 35, 37, 106,
+	0, 23, 33, 0, 0, 34, 0, 0, 24, 0,
+	29, 87, 88, 321, 39, 40, 41, 0, 0, 0,
+	0, 51, 111, 0, 103, 99, 100, 101, 96, 97,
+	0, 0, 0, 0, 0, 0, 104, 0, 0, 0,
+	0, 136, 102, 98, 114, 0, 91, 92, 93, 0,
+	0, 0, 0, 86, 53, 0, 0, 0, 74, 75,
+	25, 78, 79, 0, 0, 0, 54, 55, 76, 63,
+	64, 65, 66, 67, 68, 69, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 105, 73, 14, 0, 32, 0, 60,
+	0, 52, 0, 0, 0, 57, 56, 58, 59, 71,
+	108, 315, 0, 89, 90, 70, 47, 94, 95, 36,
+	0, 107, 0, 27, 0, 0, 0, 112, 26, 18,
+	17, 772, 19, 0, 30, 0, 31, 0, 0, 20,
+	0, 0, 0, 21, 22, 35, 37, 106, 0, 23,
+	33, 0, 0, 34, 0, 0, 24, 0, 29, 87,
+	88, 321, 39, 40, 41, 0, 0, 0, 0, 51,
+	111, 0, 103, 99, 100, 101, 96, 97, 0, 0,
+	0, 0, 0, 0, 104, 0, 0, 0, 0, 136,
+	102, 98, 114, 0, 91, 92, 93, 0, 0, 0,
+	0, 86, 53, 0, 0, 0, 74, 75, 25, 78,
+	79, 0, 0, 0, 54, 55, 76, 63, 64, 65,
+	66, 67, 68, 69, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 105, 73, 14, 0, 32, 0, 60, 0, 52,
+	0, 0, 0, 57, 56, 58, 59, 71, 108, 315,
+	0, 89, 90, 70, 47, 94, 95, 36, 0, 107,
+	0, 27, 0, 0, 0, 112, 26, 18, 17, 0,
+	19, 0, 30, 0, 31, 0, 0, 20, 0, 0,
+	0, 21, 22, 35, 37, 106, 0, 23, 33, 0,
+	0, 34, 0, 0, 24, 0, 29, 87, 88, 321,
+	39, 40, 41, 0, 0, 0, 0, 51, 111, 0,
+	103, 99, 100, 101, 96, 97, 0, 0, 0, 0,
+	0, 0, 104, 0, 0, 0, 0, 136, 102, 98,
+	114, 0, 91, 92, 93, 0, 0, 0, 0, 86,
+	53, 0, 0, 683, 74, 75, 25, 78, 79, 0,
+	0, 0, 54, 55, 76, 63, 64, 65, 66, 67,
+	68, 69, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 105,
+	73, 14, 0, 32, 0, 60, 0, 52, 0, 0,
+	0, 57, 56, 58, 59, 71, 108, 315, 0, 89,
+	90, 70, 47, 94, 95, 36, 0, 107, 0, 27,
+	0, 0, 0, 112, 26, 18, 17, 0, 19, 0,
+	30, 0, 31, 0, 0, 20, 0, 0, 0, 21,
+	22, 35, 37, 106, 0, 23, 33, 0, 0, 34,
+	0, 0, 24, 0, 29, 87, 88, 321, 39, 40,
+	41, 0, 0, 0, 0, 51, 111, 0, 103, 99,
+	100, 101, 96, 97, 0, 0, 0, 0, 0, 0,
+	104, 0, 0, 0, 0, 136, 102, 98, 114, 0,
+	91, 92, 93, 0, 0, 0, 0, 86, 53, 0,
+	0, 0, 74, 75, 25, 78, 79, 0, 0, 0,
+	54, 55, 76, 63, 64, 65, 66, 67, 68, 69,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 105, 73, 14,
+	572, 32, 0, 60, 0, 52, 0, 0, 0, 57,
+	56, 58, 59, 71, 108, 315, 0, 89, 90, 70,
+	47, 94, 95, 36, 0, 107, 0, 27, 0, 0,
+	0, 112, 26, 18, 17, 0, 19, 0, 30, 0,
+	31, 0, 0, 20, 0, 0, 0, 21, 22, 35,
+	37, 106, 0, 23, 33, 0, 0, 34, 0, 0,
+	24, 0, 29, 87, 88, 321, 39, 40, 41, 0,
+	0, 0, 0, 51, 111, 0, 103, 99, 100, 101,
+	96, 97, 0, 0, 0, 0, 0, 0, 104, 0,
+	0, 0, 0, 136, 102, 98, 114, 0, 91, 92,
+	93, 0, 0, 0, 0, 86, 53, 0, 0, 0,
+	74, 75, 25, 78, 79, 0, 0, 0, 54, 55,
+	76, 63, 64, 65, 66, 67, 68, 69, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 105, 73, 14, 314, 32,
+	0, 60, 0, 52, 0, 0, 0, 57, 56, 58,
+	59, 71, 108, 315, 0, 89, 90, 70, 47, 94,
+	95, 36, 0, 107, 0, 27, 0, 0, 0, 112,
+	26, 18, 17, 0, 19, 0, 30, 0, 31, 0,
+	0, 20, 0, 0, 0, 21, 22, 35, 37, 106,
+	0, 23, 33, 0, 0, 34, 0, 0, 24, 0,
+	29, 87, 88, 321, 39, 40, 41, 0, 0, 0,
+	0, 51, 111, 0, 103, 99, 100, 101, 96, 97,
+	0, 0, 0, 0, 0, 0, 104, 0, 0, 0,
+	0, 136, 102, 98, 114, 0, 91, 92, 93, 0,
+	0, 0, 0, 86, 53, 0, 0, 0, 74, 75,
+	25, 78, 79, 0, 0, 0, 54, 55, 76, 63,
+	64, 65, 66, 67, 68, 69, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 105, 73, 14, 0, 32, 0, 60,
+	0, 52, 0, 0, 0, 57, 56, 58, 59, 71,
+	108, 445, 446, 456, 457, 0, 0, 436, 0, 107,
+	0, 0, 0, 0, 0, 0, 461, 462, 463, 464,
+	465, 466, 467, 468, 469, 470, 471, 491, 492, 493,
+	494, 495, 483, 484, 485, 512, 486, 487, 472, 473,
+	474, 475, 476, 477, 478, 479, 480, 481, 482, 0,
+	503, 501, 502, 498, 499, 0, 0, 490, 496, 497,
+	504, 505, 507, 506, 508, 509, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 500, 511, 510,
+	0, 0, 447, 448, 449, 450, 451, 452, 453, 454,
+	455, 458, 459, 460, 488, 489, 439, 440, 441, 442,
+	443, 444, 89, 90, 70, 47, 94, 95, 36, 0,
+	107, 0, 27, 0, 0, 0, 112, 26, 18, 17,
 	0, 19, 0, 30, 0, 31, 0, 0, 20, 0,
-	0, 0, 21, 22, 35, 37, 106, 13, 23, 33,
-	0, 0, 34, 12, 0, 24, 0, 29, 87, 88,
-	10, 39, 40, 41, 0, 0, 0, 0, 51, 111,
-	0, 103, 99, 100, 101, 96, 97, 741, 0, 0,
-	743, 0, 0, 104, 0, 0, 0, 0, 11, 102,
+	0, 0, 21, 22, 35, 135, 106, 0, 23, 33,
+	0, 435, 34, 0, 0, 24, 0, 29, 87, 88,
+	181, 0, 0, 0, 0, 0, 108, 0, 51, 111,
+	0, 103, 99, 100, 101, 96, 97, 0, 0, 0,
+	0, 0, 0, 104, 0, 0, 0, 0, 136, 102,
 	98, 114, 0, 91, 92, 93, 0, 0, 0, 0,
-	86, 53, 0, 0, 0, 74, 75, 25, 78, 79,
-	0, 0, 0, 54, 55, 76, 63, 64, 65, 66,
-	67, 68, 69, 0, 0, 0, 0, 0, 0, 0,
-	0, 748, 749, 750, 747, 746, 745, 0, 0, 0,
+	86, 53, 167, 170, 171, 74, 75, 25, 0, 177,
+	179, 0, 0, 54, 55, 76, 63, 64, 65, 66,
+	67, 68, 69, 165, 164, 0, 0, 0, 0, 0,
+	0, 0, 0, 166, 168, 169, 176, 178, 163, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	105, 73, 14, 543, 32, 0, 60, 0, 52, 0,
-	0, 0, 57, 56, 58, 59, 71, 108, 4, 0,
-	89, 90, 70, 47, 94, 95, 36, 803, 107, 0,
-	27, 0, 0, 0, 112, 26, 18, 17, 0, 19,
-	0, 30, 0, 31, 0, 0, 20, 0, 0, 0,
-	21, 22, 35, 37, 106, 13, 23, 33, 0, 0,
-	34, 12, 0, 24, 0, 29, 87, 88, 10, 39,
-	40, 41, 0, 0, 0, 0, 51, 111, 0, 103,
-	99, 100, 101, 96, 97, 741, 0, 0, 743, 0,
-	0, 104, 0, 0, 0, 0, 11, 102, 98, 114,
-	0, 91, 92, 93, 0, 0, 0, 0, 86, 53,
-	0, 0, 0, 74, 75, 25, 78, 79, 0, 0,
-	0, 54, 55, 76, 63, 64, 65, 66, 67, 68,
-	69, 0, 0, 0, 0, 0, 0, 0, 0, 748,
-	749, 750, 747, 746, 745, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 105, 73,
-	14, 0, 32, 0, 60, 0, 52, 0, 0, 0,
-	57, 56, 58, 59, 71, 108, 315, 0, 89, 90,
-	70, 47, 94, 95, 36, 737, 107, 0, 27, 0,
+	105, 73, 14, 0, 32, 783, 60, 0, 52, 0,
+	0, 0, 57, 56, 58, 59, 71, 108, 89, 90,
+	70, 47, 94, 95, 36, 0, 107, 0, 27, 0,
 	0, 0, 112, 26, 18, 17, 0, 19, 0, 30,
 	0, 31, 0, 0, 20, 0, 0, 0, 21, 22,
-	35, 37, 106, 0, 23, 33, 0, 0, 34, 0,
-	0, 24, 0, 29, 87, 88, 321, 39, 40, 41,
+	35, 135, 106, 0, 23, 33, 0, 0, 34, 0,
+	0, 24, 0, 29, 87, 88, 0, 0, 0, 0,
 	0, 0, 0, 0, 51, 111, 0, 103, 99, 100,
 	101, 96, 97, 0, 0, 0, 0, 0, 0, 104,
 	0, 0, 0, 0, 136, 102, 98, 114, 0, 91,
 	92, 93, 0, 0, 0, 0, 86, 53, 0, 0,
-	0, 74, 75, 25, 78, 79, 0, 0, 0, 54,
+	0, 74, 75, 25, 0, 0, 0, 0, 0, 54,
 	55, 76, 63, 64, 65, 66, 67, 68, 69, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 105, 73, 14, 933,
-	32, 0, 60, 0, 52, 0, 0, 0, 57, 56,
-	58, 59, 71, 108, 315, 0, 89, 90, 70, 47,
-	94, 95, 36, 0, 107, 0, 27, 0, 0, 0,
-	112, 26, 18, 17, 0, 19, 0, 30, 0, 31,
-	0, 0, 20, 0, 0, 0, 21, 22, 35, 37,
-	106, 0, 23, 33, 0, 0, 34, 0, 0, 24,
-	0, 29, 87, 88, 321, 39, 40, 41, 0, 0,
-	0, 0, 51, 111, 0, 103, 99, 100, 101, 96,
-	97, 0, 0, 0, 0, 0, 0, 104, 0, 0,
-	0, 0, 136, 102, 98, 114, 0, 91, 92, 93,
-	0, 0, 0, 0, 86, 53, 0, 0, 0, 74,
-	75, 25, 78, 79, 0, 0, 0, 54, 55, 76,
-	63, 64, 65, 66, 67, 68, 69, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 105, 73, 14, 926, 32, 0,
-	60, 0, 52, 0, 0, 0, 57, 56, 58, 59,
-	71, 108, 315, 0, 89, 90, 70, 47, 94, 95,
+	0, 0, 0, 0, 0, 0, 105, 73, 14, 0,
+	32, 850, 60, 0, 52, 0, 0, 0, 57, 56,
+	58, 59, 71, 108, 89, 90, 70, 47, 94, 95,
 	36, 0, 107, 0, 27, 0, 0, 0, 112, 26,
 	18, 17, 0, 19, 0, 30, 0, 31, 0, 0,
-	20, 0, 0, 0, 21, 22, 35, 37, 106, 0,
+	20, 0, 0, 0, 21, 22, 35, 135, 106, 0,
 	23, 33, 0, 0, 34, 0, 0, 24, 0, 29,
-	87, 88, 321, 39, 40, 41, 0, 0, 0, 0,
+	87, 88, 0, 0, 0, 0, 0, 0, 0, 0,
 	51, 111, 0, 103, 99, 100, 101, 96, 97, 0,
 	0, 0, 0, 0, 0, 104, 0, 0, 0, 0,
 	136, 102, 98, 114, 0, 91, 92, 93, 0, 0,
 	0, 0, 86, 53, 0, 0, 0, 74, 75, 25,
-	78, 79, 0, 0, 0, 54, 55, 76, 63, 64,
+	0, 0, 0, 0, 0, 54, 55, 76, 63, 64,
 	65, 66, 67, 68, 69, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 105, 73, 14, 913, 32, 0, 60, 0,
+	0, 0, 105, 73, 14, 0, 32, 685, 60, 0,
 	52, 0, 0, 0, 57, 56, 58, 59, 71, 108,
-	315, 0, 89, 90, 70, 47, 94, 95, 36, 0,
-	107, 0, 27, 0, 0, 0, 112, 26, 18, 17,
-	0, 19, 0, 30, 0, 31, 0, 0, 20, 0,
-	0, 0, 21, 22, 35, 37, 106, 0, 23, 33,
-	0, 0, 34, 0, 0, 24, 0, 29, 87, 88,
-	321, 39, 40, 41, 0, 0, 0, 0, 51, 111,
-	0, 103, 99, 100, 101, 96, 97, 0, 0, 0,
-	0, 0, 0, 104, 0, 0, 0, 0, 136, 102,
-	98, 114, 0, 91, 92, 93, 0, 0, 0, 0,
-	86, 53, 0, 0, 0, 74, 75, 25, 78, 79,
-	0, 0, 0, 54, 55, 76, 63, 64, 65, 66,
-	67, 68, 69, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	105, 73, 14, 912, 32, 0, 60, 0, 52, 0,
-	0, 0, 57, 56, 58, 59, 71, 108, 315, 0,
 	89, 90, 70, 47, 94, 95, 36, 0, 107, 0,
 	27, 0, 0, 0, 112, 26, 18, 17, 0, 19,
-	910, 30, 0, 31, 0, 0, 20, 0, 0, 0,
-	21, 22, 35, 37, 106, 0, 23, 33, 0, 0,
-	34, 0, 0, 24, 0, 29, 87, 88, 321, 39,
-	40, 41, 0, 0, 0, 0, 51, 111, 0, 103,
+	0, 30, 0, 31, 0, 0, 20, 0, 0, 0,
+	21, 22, 35, 135, 106, 0, 23, 33, 0, 0,
+	34, 0, 0, 24, 0, 29, 87, 88, 0, 0,
+	0, 0, 0, 0, 0, 0, 51, 111, 0, 103,
 	99, 100, 101, 96, 97, 0, 0, 0, 0, 0,
 	0, 104, 0, 0, 0, 0, 136, 102, 98, 114,
 	0, 91, 92, 93, 0, 0, 0, 0, 86, 53,
-	0, 0, 0, 74, 75, 25, 78, 79, 0, 0,
+	0, 0, 0, 74, 75, 25, 0, 0, 0, 0,
 	0, 54, 55, 76, 63, 64, 65, 66, 67, 68,
 	69, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 105, 73,
-	14, 0, 32, 0, 60, 0, 52, 0, 0, 0,
-	57, 56, 58, 59, 71, 108, 315, 0, 89, 90,
-	70, 47, 94, 95, 36, 0, 107, 0, 27, 0,
-	0, 0, 112, 26, 18, 17, 0, 19, 0, 30,
-	0, 31, 0, 0, 20, 0, 0, 0, 21, 22,
-	35, 37, 106, 0, 23, 33, 0, 0, 34, 0,
-	0, 24, 0, 29, 87, 88, 321, 39, 40, 41,
-	0, 0, 0, 0, 51, 111, 0, 103, 99, 100,
-	101, 96, 97, 0, 0, 0, 0, 0, 0, 104,
-	0, 0, 0, 0, 136, 102, 98, 114, 0, 91,
-	92, 93, 0, 0, 0, 0, 86, 53, 0, 0,
-	0, 74, 75, 25, 78, 79, 0, 0, 0, 54,
-	55, 76, 63, 64, 65, 66, 67, 68, 69, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 105, 73, 14, 861,
-	32, 0, 60, 0, 52, 0, 0, 0, 57, 56,
-	58, 59, 71, 108, 315, 0, 89, 90, 70, 47,
+	14, 0, 32, 671, 60, 0, 52, 0, 0, 0,
+	57, 56, 58, 59, 71, 108, 89, 90, 70, 47,
 	94, 95, 36, 0, 107, 0, 27, 0, 0, 0,
-	112, 26, 18, 17, 0, 19, 0, 30, 857, 31,
-	0, 0, 20, 0, 0, 0, 21, 22, 35, 37,
+	112, 26, 18, 17, 0, 19, 0, 30, 0, 31,
+	0, 0, 20, 0, 0, 0, 21, 22, 35, 135,
 	106, 0, 23, 33, 0, 0, 34, 0, 0, 24,
-	0, 29, 87, 88, 321, 39, 40, 41, 0, 0,
+	0, 29, 87, 88, 0, 0, 0, 0, 0, 0,
 	0, 0, 51, 111, 0, 103, 99, 100, 101, 96,
 	97, 0, 0, 0, 0, 0, 0, 104, 0, 0,
 	0, 0, 136, 102, 98, 114, 0, 91, 92, 93,
 	0, 0, 0, 0, 86, 53, 0, 0, 0, 74,
-	75, 25, 78, 79, 0, 0, 0, 54, 55, 76,
+	75, 25, 0, 0, 0, 0, 0, 54, 55, 76,
 	63, 64, 65, 66, 67, 68, 69, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 105, 73, 14, 0, 32, 0,
+	0, 0, 0, 0, 105, 73, 14, 0, 32, 654,
 	60, 0, 52, 0, 0, 0, 57, 56, 58, 59,
-	71, 108, 315, 0, 89, 90, 70, 47, 94, 95,
-	36, 0, 107, 0, 27, 0, 0, 0, 112, 26,
-	18, 17, 0, 19, 0, 30, 0, 31, 788, 0,
-	20, 0, 0, 0, 21, 22, 35, 37, 106, 0,
-	23, 33, 0, 0, 34, 0, 0, 24, 0, 29,
-	87, 88, 321, 39, 40, 41, 0, 0, 0, 0,
-	51, 111, 0, 103, 99, 100, 101, 96, 97, 0,
-	0, 0, 0, 0, 0, 104, 0, 0, 0, 0,
-	136, 102, 98, 114, 0, 91, 92, 93, 0, 0,
-	0, 0, 86, 53, 0, 0, 0, 74, 75, 25,
-	78, 79, 0, 0, 0, 54, 55, 76, 63, 64,
-	65, 66, 67, 68, 69, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 105, 73, 14, 0, 32, 0, 60, 0,
-	52, 0, 0, 0, 57, 56, 58, 59, 71, 108,
-	315, 0, 89, 90, 70, 47, 94, 95, 36, 0,
+	71, 108, 89, 90, 70, 47, 94, 95, 36, 0,
 	107, 0, 27, 0, 0, 0, 112, 26, 18, 17,
-	772, 19, 0, 30, 0, 31, 0, 0, 20, 0,
-	0, 0, 21, 22, 35, 37, 106, 0, 23, 33,
+	0, 19, 0, 30, 0, 31, 0, 0, 20, 0,
+	0, 0, 21, 22, 35, 135, 106, 0, 23, 33,
 	0, 0, 34, 0, 0, 24, 0, 29, 87, 88,
-	321, 39, 40, 41, 0, 0, 0, 0, 51, 111,
+	0, 0, 0, 0, 0, 0, 0, 0, 51, 111,
 	0, 103, 99, 100, 101, 96, 97, 0, 0, 0,
 	0, 0, 0, 104, 0, 0, 0, 0, 136, 102,
 	98, 114, 0, 91, 92, 93, 0, 0, 0, 0,
-	86, 53, 0, 0, 0, 74, 75, 25, 78, 79,
+	86, 53, 0, 0, 0, 74, 75, 25, 0, 0,
 	0, 0, 0, 54, 55, 76, 63, 64, 65, 66,
 	67, 68, 69, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	105, 73, 14, 0, 32, 0, 60, 0, 52, 0,
-	0, 0, 57, 56, 58, 59, 71, 108, 315, 0,
-	89, 90, 70, 47, 94, 95, 36, 0, 107, 0,
-	27, 0, 0, 0, 112, 26, 18, 17, 0, 19,
-	0, 30, 0, 31, 0, 0, 20, 0, 0, 0,
-	21, 22, 35, 37, 106, 0, 23, 33, 0, 0,
-	34, 0, 0, 24, 0, 29, 87, 88, 321, 39,
-	40, 41, 0, 0, 0, 0, 51, 111, 0, 103,
+	0, 0, 57, 56, 58, 59, 71, 108, 445, 446,
+	456, 457, 0, 0, 884, 0, 0, 0, 0, 0,
+	0, 0, 0, 461, 462, 463, 464, 465, 466, 467,
+	468, 469, 470, 471, 491, 492, 493, 494, 495, 483,
+	484, 485, 512, 486, 487, 472, 473, 474, 475, 476,
+	477, 478, 479, 480, 481, 482, 0, 503, 501, 502,
+	498, 499, 0, 0, 490, 496, 497, 504, 505, 507,
+	506, 508, 509, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 883, 511, 510, 114, 0, 447,
+	448, 449, 450, 451, 452, 453, 454, 455, 458, 459,
+	460, 488, 489, 439, 440, 441, 442, 443, 444, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 445, 446, 456, 457, 0,
+	0, 884, 0, 0, 0, 0, 0, 0, 0, 903,
+	461, 462, 463, 464, 465, 466, 467, 468, 469, 470,
+	471, 491, 492, 493, 494, 495, 483, 484, 485, 512,
+	486, 487, 472, 473, 474, 475, 476, 477, 478, 479,
+	480, 481, 482, 0, 503, 501, 502, 498, 499, 0,
+	0, 490, 496, 497, 504, 505, 507, 506, 508, 509,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 883, 511, 510, 114, 0, 447, 448, 449, 450,
+	451, 452, 453, 454, 455, 458, 459, 460, 488, 489,
+	439, 440, 441, 442, 443, 444, 89, 90, 70, 0,
+	94, 95, 119, 0, 107, 0, 0, 0, 0, 0,
+	112, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 135,
+	106, 0, 0, 0, 0, 0, 874, 0, 0, 0,
+	0, 0, 87, 88, 0, 0, 0, 0, 0, 0,
+	0, 0, 51, 111, 0, 103, 99, 100, 101, 96,
+	97, 0, 0, 0, 0, 0, 0, 104, 0, 0,
+	0, 0, 136, 102, 98, 114, 538, 91, 92, 93,
+	0, 0, 0, 0, 86, 53, 0, 0, 0, 74,
+	75, 141, 0, 0, 0, 0, 0, 54, 55, 76,
+	63, 64, 65, 66, 67, 68, 69, 0, 0, 0,
+	89, 90, 70, 0, 94, 95, 119, 0, 107, 0,
+	0, 0, 0, 0, 112, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 105, 73, 0, 0, 0, 0,
+	60, 534, 52, 135, 106, 0, 57, 56, 58, 59,
+	71, 108, 0, 0, 0, 0, 87, 88, 0, 0,
+	0, 0, 0, 0, 0, 0, 229, 111, 0, 103,
 	99, 100, 101, 96, 97, 0, 0, 0, 0, 0,
 	0, 104, 0, 0, 0, 0, 136, 102, 98, 114,
 	0, 91, 92, 93, 0, 0, 0, 0, 86, 53,
-	0, 0, 683, 74, 75, 25, 78, 79, 0, 0,
+	0, 0, 0, 74, 75, 141, 0, 0, 0, 0,
 	0, 54, 55, 76, 63, 64, 65, 66, 67, 68,
-	69, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	69, 0, 0, 0, 89, 90, 70, 0, 94, 95,
+	119, 0, 107, 0, 0, 0, 0, 0, 112, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 105, 73,
-	14, 0, 32, 0, 60, 0, 52, 0, 0, 0,
-	57, 56, 58, 59, 71, 108, 315, 0, 89, 90,
-	70, 47, 94, 95, 36, 0, 107, 0, 27, 0,
-	0, 0, 112, 26, 18, 17, 0, 19, 0, 30,
-	0, 31, 0, 0, 20, 0, 0, 0, 21, 22,
-	35, 37, 106, 0, 23, 33, 0, 0, 34, 0,
-	0, 24, 0, 29, 87, 88, 321, 39, 40, 41,
-	0, 0, 0, 0, 51, 111, 0, 103, 99, 100,
+	0, 0, 0, 0, 60, 0, 52, 135, 106, 228,
+	57, 56, 58, 59, 71, 108, 0, 0, 0, 0,
+	87, 88, 0, 0, 0, 0, 0, 0, 0, 0,
+	51, 111, 0, 103, 99, 100, 101, 96, 97, 0,
+	0, 0, 0, 0, 0, 104, 0, 0, 0, 0,
+	136, 102, 98, 114, 538, 91, 92, 93, 0, 0,
+	0, 0, 86, 53, 0, 0, 0, 74, 75, 141,
+	0, 0, 0, 0, 0, 54, 55, 76, 63, 64,
+	65, 66, 67, 68, 69, 0, 0, 0, 89, 90,
+	70, 0, 94, 95, 119, 0, 107, 0, 0, 0,
+	0, 0, 112, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 105, 73, 0, 0, 0, 0, 60, 0,
+	52, 135, 106, 0, 57, 56, 58, 59, 71, 108,
+	0, 0, 0, 0, 87, 88, 0, 0, 0, 0,
+	0, 0, 0, 0, 597, 111, 0, 103, 99, 100,
 	101, 96, 97, 0, 0, 0, 0, 0, 0, 104,
 	0, 0, 0, 0, 136, 102, 98, 114, 0, 91,
 	92, 93, 0, 0, 0, 0, 86, 53, 0, 0,
-	0, 74, 75, 25, 78, 79, 0, 0, 0, 54,
+	0, 74, 75, 141, 0, 0, 0, 0, 0, 54,
 	55, 76, 63, 64, 65, 66, 67, 68, 69, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 105, 73, 14, 572,
-	32, 0, 60, 0, 52, 0, 0, 0, 57, 56,
-	58, 59, 71, 108, 315, 0, 89, 90, 70, 47,
-	94, 95, 36, 0, 107, 0, 27, 0, 0, 0,
-	112, 26, 18, 17, 0, 19, 0, 30, 0, 31,
-	0, 0, 20, 0, 0, 0, 21, 22, 35, 37,
-	106, 0, 23, 33, 0, 0, 34, 0, 0, 24,
-	0, 29, 87, 88, 321, 39, 40, 41, 0, 0,
+	0, 0, 89, 90, 70, 0, 94, 95, 119, 428,
+	107, 0, 0, 0, 0, 0, 112, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 105, 73, 0, 0,
+	0, 0, 60, 0, 52, 135, 106, 596, 57, 56,
+	58, 59, 71, 108, 0, 0, 0, 0, 87, 88,
+	0, 0, 0, 0, 0, 0, 0, 0, 51, 111,
+	0, 103, 99, 100, 101, 96, 97, 0, 0, 0,
+	0, 0, 0, 104, 0, 0, 0, 0, 136, 102,
+	98, 114, 0, 91, 92, 93, 0, 0, 0, 0,
+	86, 53, 0, 0, 0, 74, 75, 141, 0, 0,
+	0, 0, 0, 54, 55, 76, 63, 64, 65, 66,
+	67, 68, 69, 0, 0, 0, 89, 90, 70, 0,
+	94, 95, 119, 0, 107, 0, 0, 0, 0, 0,
+	112, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	105, 73, 0, 0, 0, 0, 60, 0, 52, 135,
+	106, 0, 57, 56, 58, 59, 71, 108, 0, 0,
+	0, 0, 87, 88, 0, 0, 0, 0, 0, 0,
 	0, 0, 51, 111, 0, 103, 99, 100, 101, 96,
 	97, 0, 0, 0, 0, 0, 0, 104, 0, 0,
 	0, 0, 136, 102, 98, 114, 0, 91, 92, 93,
 	0, 0, 0, 0, 86, 53, 0, 0, 0, 74,
-	75, 25, 78, 79, 0, 0, 0, 54, 55, 76,
+	75, 141, 0, 0, 0, 0, 0, 54, 55, 76,
 	63, 64, 65, 66, 67, 68, 69, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 105, 73, 14, 314, 32, 0,
-	60, 0, 52, 0, 0, 0, 57, 56, 58, 59,
-	71, 108, 315, 0, 89, 90, 70, 47, 94, 95,
-	36, 0, 107, 0, 27, 0, 0, 0, 112, 26,
-	18, 17, 0, 19, 0, 30, 0, 31, 0, 0,
-	20, 0, 0, 0, 21, 22, 35, 37, 106, 0,
-	23, 33, 0, 0, 34, 0, 0, 24, 0, 29,
-	87, 88, 321, 39, 40, 41, 0, 0, 0, 0,
+	89, 90, 70, 0, 94, 95, 119, 0, 107, 0,
+	0, 0, 0, 0, 112, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 105, 73, 0, 0, 0, 0,
+	60, 0, 52, 135, 106, 391, 57, 56, 58, 59,
+	71, 108, 0, 0, 0, 0, 87, 88, 0, 0,
+	0, 0, 0, 0, 0, 0, 51, 111, 0, 103,
+	99, 100, 101, 96, 97, 0, 0, 0, 0, 0,
+	0, 104, 0, 0, 0, 0, 136, 102, 98, 114,
+	0, 91, 92, 93, 0, 0, 0, 0, 86, 53,
+	0, 0, 0, 74, 75, 141, 0, 0, 0, 0,
+	0, 54, 55, 76, 63, 64, 65, 66, 67, 68,
+	69, 0, 0, 0, 89, 90, 70, 0, 94, 95,
+	119, 0, 107, 0, 0, 0, 0, 0, 112, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 105, 73,
+	0, 0, 0, 367, 60, 0, 52, 135, 106, 0,
+	57, 56, 58, 59, 71, 108, 0, 0, 0, 0,
+	87, 88, 0, 0, 0, 0, 0, 0, 0, 0,
 	51, 111, 0, 103, 99, 100, 101, 96, 97, 0,
 	0, 0, 0, 0, 0, 104, 0, 0, 0, 0,
 	136, 102, 98, 114, 0, 91, 92, 93, 0, 0,
-	0, 0, 86, 53, 0, 0, 0, 74, 75, 25,
-	78, 79, 0, 0, 0, 54, 55, 76, 63, 64,
-	65, 66, 67, 68, 69, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 86, 53, 0, 0, 0, 74, 75, 141,
+	0, 0, 0, 0, 0, 54, 55, 76, 63, 64,
+	65, 66, 67, 68, 69, 0, 0, 157, 159, 158,
+	181, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 105, 73, 14, 0, 32, 0, 60, 0,
+	0, 0, 105, 73, 183, 180, 0, 0, 60, 0,
 	52, 0, 0, 0, 57, 56, 58, 59, 71, 108,
-	445, 446, 456, 457, 0, 0, 436, 0, 107, 0,
-	0, 0, 0, 0, 0, 461, 462, 463, 464, 465,
-	466, 467, 468, 469, 470, 471, 491, 492, 493, 494,
-	495, 483, 484, 485, 512, 486, 487, 472, 473, 474,
-	475, 476, 477, 478, 479, 480, 481, 482, 0, 503,
-	501, 502, 498, 499, 0, 0, 490, 496, 497, 504,
-	505, 507, 506, 508, 509, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 500, 511, 510, 0,
-	0, 447, 448, 449, 450, 451, 452, 453, 454, 455,
-	458, 459, 460, 488, 489, 439, 440, 441, 442, 443,
-	444, 89, 90, 70, 47, 94, 95, 36, 0, 107,
-	0, 27, 0, 0, 0, 112, 26, 18, 17, 0,
-	19, 0, 30, 0, 31, 0, 0, 20, 0, 0,
-	0, 21, 22, 35, 135, 106, 0, 23, 33, 0,
-	435, 34, 0, 0, 24, 0, 29, 87, 88, 0,
-	0, 0, 0, 0, 0, 108, 0, 51, 111, 0,
-	103, 99, 100, 101, 96, 97, 0, 0, 0, 0,
-	0, 0, 104, 0, 0, 0, 0, 136, 102, 98,
-	114, 0, 91, 92, 93, 0, 0, 0, 0, 86,
-	53, 0, 0, 0, 74, 75, 25, 0, 0, 0,
-	0, 0, 54, 55, 76, 63, 64, 65, 66, 67,
-	68, 69, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 105,
-	73, 14, 0, 32, 783, 60, 0, 52, 0, 0,
-	0, 57, 56, 58, 59, 71, 108, 89, 90, 70,
-	47, 94, 95, 36, 0, 107, 0, 27, 0, 0,
-	0, 112, 26, 18, 17, 0, 19, 0, 30, 0,
-	31, 0, 0, 20, 0, 0, 0, 21, 22, 35,
-	135, 106, 0, 23, 33, 0, 0, 34, 0, 0,
-	24, 0, 29, 87, 88, 0, 0, 0, 0, 0,
-	0, 0, 0, 51, 111, 0, 103, 99, 100, 101,
-	96, 97, 0, 0, 0, 0, 0, 0, 104, 0,
-	0, 0, 0, 136, 102, 98, 114, 0, 91, 92,
-	93, 0, 0, 0, 0, 86, 53, 0, 0, 0,
-	74, 75, 25, 0, 0, 0, 0, 0, 54, 55,
-	76, 63, 64, 65, 66, 67, 68, 69, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 105, 73, 14, 0, 32,
-	853, 60, 0, 52, 0, 0, 0, 57, 56, 58,
-	59, 71, 108, 89, 90, 70, 47, 94, 95, 36,
-	0, 107, 0, 27, 0, 0, 0, 112, 26, 18,
-	17, 0, 19, 0, 30, 0, 31, 0, 0, 20,
-	0, 0, 0, 21, 22, 35, 135, 106, 0, 23,
-	33, 0, 0, 34, 0, 0, 24, 0, 29, 87,
-	88, 0, 0, 0, 0, 0, 0, 0, 0, 51,
-	111, 0, 103, 99, 100, 101, 96, 97, 0, 0,
-	0, 0, 0, 0, 104, 0, 0, 0, 0, 136,
-	102, 98, 114, 0, 91, 92, 93, 0, 0, 0,
-	0, 86, 53, 0, 0, 0, 74, 75, 25, 0,
-	0, 0, 0, 0, 54, 55, 76, 63, 64, 65,
-	66, 67, 68, 69, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 105, 73, 14, 0, 32, 685, 60, 0, 52,
-	0, 0, 0, 57, 56, 58, 59, 71, 108, 89,
-	90, 70, 47, 94, 95, 36, 0, 107, 0, 27,
-	0, 0, 0, 112, 26, 18, 17, 0, 19, 0,
-	30, 0, 31, 0, 0, 20, 0, 0, 0, 21,
-	22, 35, 135, 106, 0, 23, 33, 0, 0, 34,
-	0, 0, 24, 0, 29, 87, 88, 0, 0, 0,
-	0, 0, 0, 0, 0, 51, 111, 0, 103, 99,
-	100, 101, 96, 97, 0, 0, 0, 0, 0, 0,
-	104, 0, 0, 0, 0, 136, 102, 98, 114, 0,
-	91, 92, 93, 0, 0, 0, 0, 86, 53, 0,
-	0, 0, 74, 75, 25, 0, 0, 0, 0, 0,
-	54, 55, 76, 63, 64, 65, 66, 67, 68, 69,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 105, 73, 14,
-	0, 32, 671, 60, 0, 52, 0, 0, 0, 57,
-	56, 58, 59, 71, 108, 89, 90, 70, 47, 94,
-	95, 36, 0, 107, 0, 27, 0, 0, 0, 112,
-	26, 18, 17, 0, 19, 0, 30, 0, 31, 0,
-	0, 20, 0, 0, 0, 21, 22, 35, 135, 106,
-	0, 23, 33, 0, 0, 34, 0, 0, 24, 0,
-	29, 87, 88, 0, 0, 0, 0, 0, 0, 0,
-	0, 51, 111, 0, 103, 99, 100, 101, 96, 97,
-	0, 0, 0, 0, 0, 0, 104, 0, 0, 0,
-	0, 136, 102, 98, 114, 0, 91, 92, 93, 0,
-	0, 0, 0, 86, 53, 0, 0, 0, 74, 75,
-	25, 0, 0, 0, 0, 0, 54, 55, 76, 63,
-	64, 65, 66, 67, 68, 69, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 105, 73, 14, 0, 32, 654, 60,
-	0, 52, 0, 0, 0, 57, 56, 58, 59, 71,
-	108, 89, 90, 70, 47, 94, 95, 36, 0, 107,
-	0, 27, 0, 0, 0, 112, 26, 18, 17, 0,
-	19, 0, 30, 0, 31, 0, 0, 20, 0, 0,
-	0, 21, 22, 35, 135, 106, 0, 23, 33, 0,
-	0, 34, 0, 0, 24, 0, 29, 87, 88, 0,
-	0, 0, 0, 0, 0, 0, 0, 51, 111, 0,
-	103, 99, 100, 101, 96, 97, 0, 0, 0, 0,
-	0, 0, 104, 0, 0, 0, 0, 136, 102, 98,
-	114, 0, 91, 92, 93, 0, 0, 0, 0, 86,
-	53, 0, 0, 0, 74, 75, 25, 0, 0, 0,
-	0, 0, 54, 55, 76, 63, 64, 65, 66, 67,
-	68, 69, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 105,
-	73, 14, 0, 32, 0, 60, 0, 52, 0, 0,
-	0, 57, 56, 58, 59, 71, 108, 445, 446, 456,
-	457, 0, 0, 885, 0, 0, 0, 0, 0, 0,
-	0, 0, 461, 462, 463, 464, 465, 466, 467, 468,
-	469, 470, 471, 491, 492, 493, 494, 495, 483, 484,
-	485, 512, 486, 487, 472, 473, 474, 475, 476, 477,
-	478, 479, 480, 481, 482, 0, 503, 501, 502, 498,
-	499, 0, 0, 490, 496, 497, 504, 505, 507, 506,
-	508, 509, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 884, 511, 510, 114, 0, 447, 448,
-	449, 450, 451, 452, 453, 454, 455, 458, 459, 460,
-	488, 489, 439, 440, 441, 442, 443, 444, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 445, 446, 456, 457, 0, 0,
-	885, 0, 0, 0, 0, 0, 0, 0, 903, 461,
-	462, 463, 464, 465, 466, 467, 468, 469, 470, 471,
-	491, 492, 493, 494, 495, 483, 484, 485, 512, 486,
-	487, 472, 473, 474, 475, 476, 477, 478, 479, 480,
-	481, 482, 0, 503, 501, 502, 498, 499, 0, 0,
-	490, 496, 497, 504, 505, 507, 506, 508, 509, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	884, 511, 510, 114, 0, 447, 448, 449, 450, 451,
-	452, 453, 454, 455, 458, 459, 460, 488, 489, 439,
-	440, 441, 442, 443, 444, 89, 90, 70, 0, 94,
-	95, 119, 0, 107, 0, 0, 0, 0, 0, 112,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 135, 106,
-	0, 0, 0, 0, 0, 875, 0, 0, 0, 0,
-	0, 87, 88, 0, 0, 0, 0, 0, 0, 0,
-	0, 51, 111, 0, 103, 99, 100, 101, 96, 97,
-	0, 0, 0, 0, 0, 0, 104, 0, 0, 0,
-	0, 136, 102, 98, 114, 538, 91, 92, 93, 0,
-	0, 0, 0, 86, 53, 0, 0, 0, 74, 75,
-	141, 0, 0, 0, 0, 0, 54, 55, 76, 63,
-	64, 65, 66, 67, 68, 69, 0, 0, 0, 89,
-	90, 70, 0, 94, 95, 119, 0, 107, 0, 0,
-	0, 0, 0, 112, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 105, 73, 0, 0, 0, 0, 60,
-	534, 52, 135, 106, 0, 57, 56, 58, 59, 71,
-	108, 0, 0, 0, 0, 87, 88, 0, 0, 0,
-	0, 0, 0, 0, 0, 229, 111, 0, 103, 99,
-	100, 101, 96, 97, 0, 0, 0, 0, 0, 0,
-	104, 0, 0, 0, 0, 136, 102, 98, 114, 0,
-	91, 92, 93, 0, 0, 0, 0, 86, 53, 0,
-	0, 0, 74, 75, 141, 0, 0, 0, 0, 0,
-	54, 55, 76, 63, 64, 65, 66, 67, 68, 69,
-	0, 0, 0, 89, 90, 70, 0, 94, 95, 119,
-	0, 107, 0, 0, 0, 0, 0, 112, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 105, 73, 0,
-	0, 0, 0, 60, 0, 52, 135, 106, 228, 57,
-	56, 58, 59, 71, 108, 0, 0, 0, 0, 87,
-	88, 0, 0, 0, 0, 0, 0, 0, 0, 51,
-	111, 0, 103, 99, 100, 101, 96, 97, 0, 0,
-	0, 0, 0, 0, 104, 0, 0, 0, 0, 136,
-	102, 98, 114, 538, 91, 92, 93, 0, 0, 0,
-	0, 86, 53, 0, 0, 0, 74, 75, 141, 0,
-	0, 0, 0, 0, 54, 55, 76, 63, 64, 65,
-	66, 67, 68, 69, 0, 0, 0, 89, 90, 70,
-	0, 94, 95, 119, 0, 107, 0, 0, 0, 0,
-	0, 112, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 105, 73, 0, 0, 0, 0, 60, 0, 52,
-	135, 106, 0, 57, 56, 58, 59, 71, 108, 0,
-	0, 0, 0, 87, 88, 0, 0, 0, 0, 0,
-	0, 0, 0, 597, 111, 0, 103, 99, 100, 101,
-	96, 97, 0, 0, 0, 0, 0, 0, 104, 0,
-	0, 0, 0, 136, 102, 98, 114, 0, 91, 92,
-	93, 0, 0, 0, 0, 86, 53, 0, 0, 0,
-	74, 75, 141, 0, 0, 0, 0, 0, 54, 55,
-	76, 63, 64, 65, 66, 67, 68, 69, 0, 0,
-	0, 89, 90, 70, 0, 94, 95, 119, 428, 107,
-	0, 0, 0, 0, 0, 112, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 105, 73, 0, 0, 0,
-	0, 60, 0, 52, 135, 106, 596, 57, 56, 58,
-	59, 71, 108, 0, 0, 0, 0, 87, 88, 0,
-	0, 0, 0, 0, 0, 0, 0, 51, 111, 0,
-	103, 99, 100, 101, 96, 97, 0, 0, 0, 0,
-	0, 0, 104, 0, 0, 0, 0, 136, 102, 98,
-	114, 0, 91, 92, 93, 0, 0, 0, 0, 86,
-	53, 0, 0, 0, 74, 75, 141, 0, 0, 0,
-	0, 0, 54, 55, 76, 63, 64, 65, 66, 67,
-	68, 69, 0, 0, 0, 89, 90, 70, 0, 94,
-	95, 119, 0, 107, 0, 0, 0, 0, 0, 112,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 105,
-	73, 0, 0, 0, 0, 60, 0, 52, 135, 106,
-	0, 57, 56, 58, 59, 71, 108, 0, 0, 0,
-	0, 87, 88, 0, 0, 0, 0, 0, 0, 0,
-	0, 51, 111, 0, 103, 99, 100, 101, 96, 97,
-	0, 0, 0, 0, 0, 0, 104, 0, 0, 0,
-	0, 136, 102, 98, 114, 0, 91, 92, 93, 0,
-	0, 0, 0, 86, 53, 0, 0, 0, 74, 75,
-	141, 0, 0, 0, 0, 0, 54, 55, 76, 63,
-	64, 65, 66, 67, 68, 69, 0, 0, 0, 89,
-	90, 70, 0, 94, 95, 119, 0, 107, 0, 0,
-	0, 0, 0, 112, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 105, 73, 0, 0, 0, 0, 60,
-	0, 52, 135, 106, 391, 57, 56, 58, 59, 71,
-	108, 0, 0, 0, 0, 87, 88, 0, 0, 0,
-	0, 0, 0, 0, 0, 51, 111, 0, 103, 99,
-	100, 101, 96, 97, 0, 0, 0, 0, 0, 0,
-	104, 0, 0, 0, 0, 136, 102, 98, 114, 0,
-	91, 92, 93, 0, 0, 0, 0, 86, 53, 0,
-	0, 0, 74, 75, 141, 0, 0, 0, 0, 0,
-	54, 55, 76, 63, 64, 65, 66, 67, 68, 69,
-	0, 0, 0, 89, 90, 70, 0, 94, 95, 119,
-	0, 107, 0, 0, 0, 0, 0, 112, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 105, 73, 0,
-	0, 0, 367, 60, 0, 52, 135, 106, 0, 57,
-	56, 58, 59, 71, 108, 0, 0, 0, 0, 87,
-	88, 0, 0, 0, 0, 0, 0, 0, 0, 51,
-	111, 0, 103, 99, 100, 101, 96, 97, 0, 0,
-	0, 0, 0, 0, 104, 0, 0, 0, 0, 136,
-	102, 98, 114, 0, 91, 92, 93, 0, 0, 0,
-	0, 86, 53, 0, 0, 0, 74, 75, 141, 0,
-	0, 0, 0, 0, 54, 55, 76, 63, 64, 65,
-	66, 67, 68, 69, 0, 0, 157, 159, 158, 181,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	155, 156, 167, 170, 171, 172, 173, 174, 175, 177,
+	179, 0, 157, 159, 158, 181, 0, 0, 0, 0,
+	759, 182, 161, 165, 164, 0, 0, 0, 0, 0,
+	160, 0, 162, 166, 168, 169, 176, 178, 163, 183,
+	180, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 155, 156, 167, 170, 171,
+	172, 173, 174, 175, 177, 179, 0, 157, 159, 158,
+	181, 0, 0, 717, 0, 0, 182, 161, 165, 164,
+	0, 0, 0, 0, 0, 160, 0, 162, 166, 168,
+	169, 176, 178, 163, 183, 180, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 105, 73, 183, 180, 0, 0, 60, 0, 52,
-	0, 0, 0, 57, 56, 58, 59, 71, 108, 155,
-	156, 167, 170, 171, 172, 173, 174, 175, 177, 179,
-	0, 0, 0, 0, 820, 819, 157, 159, 158, 181,
-	182, 161, 165, 164, 0, 0, 0, 0, 0, 160,
-	0, 162, 166, 168, 169, 176, 178, 163, 0, 0,
-	0, 0, 0, 183, 180, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 155,
-	156, 167, 170, 171, 172, 173, 174, 175, 177, 179,
-	0, 157, 159, 158, 181, 0, 0, 0, 0, 759,
-	182, 161, 165, 164, 0, 0, 0, 0, 0, 160,
-	0, 162, 166, 168, 169, 176, 178, 163, 183, 180,
+	155, 156, 167, 170, 171, 172, 173, 174, 175, 177,
+	179, 0, 0, 0, 697, 157, 159, 158, 181, 0,
+	0, 182, 161, 165, 164, 0, 0, 0, 0, 0,
+	160, 0, 162, 166, 168, 169, 176, 178, 163, 0,
+	0, 0, 183, 180, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 155, 156,
+	167, 170, 171, 172, 173, 174, 175, 177, 179, 0,
+	0, 0, 695, 157, 159, 158, 181, 0, 0, 182,
+	161, 165, 164, 0, 0, 0, 0, 0, 160, 0,
+	162, 166, 168, 169, 176, 178, 163, 0, 0, 0,
+	183, 180, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 155, 156, 167, 170,
+	171, 172, 173, 174, 175, 177, 179, 0, 0, 0,
+	686, 157, 159, 158, 181, 0, 0, 182, 161, 165,
+	164, 0, 0, 0, 0, 0, 160, 0, 162, 166,
+	168, 169, 176, 178, 163, 0, 0, 0, 183, 180,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 155, 156, 167, 170, 171, 172,
 	173, 174, 175, 177, 179, 0, 157, 159, 158, 181,
-	0, 0, 717, 0, 0, 182, 161, 165, 164, 0,
+	0, 0, 682, 0, 0, 182, 161, 165, 164, 0,
 	0, 0, 0, 0, 160, 0, 162, 166, 168, 169,
 	176, 178, 163, 183, 180, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 155,
 	156, 167, 170, 171, 172, 173, 174, 175, 177, 179,
-	0, 0, 0, 697, 157, 159, 158, 181, 0, 0,
+	0, 157, 159, 158, 181, 0, 0, 681, 0, 0,
 	182, 161, 165, 164, 0, 0, 0, 0, 0, 160,
-	0, 162, 166, 168, 169, 176, 178, 163, 0, 0,
-	0, 183, 180, 0, 0, 0, 0, 0, 0, 0,
+	0, 162, 166, 168, 169, 176, 178, 163, 183, 180,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 155, 156, 167, 170, 171, 172,
+	173, 174, 175, 177, 179, 0, 0, 0, 637, 157,
+	159, 158, 181, 0, 0, 182, 161, 165, 164, 0,
+	0, 0, 0, 0, 160, 0, 162, 166, 168, 169,
+	176, 178, 163, 0, 0, 0, 183, 180, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 155, 156, 167, 170, 171, 172, 173, 174,
+	175, 177, 179, 0, 157, 159, 158, 181, 0, 0,
+	626, 0, 0, 182, 161, 165, 164, 0, 0, 0,
+	0, 0, 160, 0, 162, 166, 168, 169, 176, 178,
+	163, 183, 180, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 155, 156, 167,
-	170, 171, 172, 173, 174, 175, 177, 179, 0, 0,
-	0, 695, 157, 159, 158, 181, 0, 0, 182, 161,
+	170, 171, 172, 173, 174, 175, 177, 179, 0, 157,
+	159, 158, 181, 0, 0, 625, 0, 0, 182, 161,
 	165, 164, 0, 0, 0, 0, 0, 160, 0, 162,
-	166, 168, 169, 176, 178, 163, 0, 0, 0, 183,
+	166, 168, 169, 176, 178, 163, 183, 180, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 155, 156, 167, 170, 171, 172, 173, 174,
+	175, 177, 179, 0, 0, 0, 608, 157, 159, 158,
+	181, 0, 0, 182, 161, 165, 164, 0, 0, 0,
+	0, 0, 160, 0, 162, 166, 168, 169, 176, 178,
+	163, 0, 0, 0, 183, 180, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	155, 156, 167, 170, 171, 172, 173, 174, 175, 177,
+	179, 0, 157, 159, 158, 181, 0, 0, 599, 0,
+	0, 182, 161, 165, 164, 0, 0, 0, 0, 0,
+	160, 0, 162, 166, 168, 169, 176, 178, 163, 183,
 	180, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 155, 156, 167, 170, 171,
-	172, 173, 174, 175, 177, 179, 0, 0, 0, 686,
+	172, 173, 174, 175, 177, 179, 570, 0, 0, 589,
 	157, 159, 158, 181, 0, 0, 182, 161, 165, 164,
 	0, 0, 0, 0, 0, 160, 0, 162, 166, 168,
 	169, 176, 178, 163, 0, 0, 0, 183, 180, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 155, 156, 167, 170, 171, 172, 173,
 	174, 175, 177, 179, 0, 157, 159, 158, 181, 0,
-	0, 682, 0, 0, 182, 161, 165, 164, 0, 0,
+	0, 587, 0, 0, 182, 161, 165, 164, 0, 0,
 	0, 0, 0, 160, 0, 162, 166, 168, 169, 176,
 	178, 163, 183, 180, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 155, 156,
 	167, 170, 171, 172, 173, 174, 175, 177, 179, 0,
-	157, 159, 158, 181, 0, 0, 681, 0, 0, 182,
+	157, 159, 158, 181, 0, 0, 0, 0, 0, 182,
 	161, 165, 164, 0, 0, 0, 0, 0, 160, 0,
 	162, 166, 168, 169, 176, 178, 163, 183, 180, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 155, 156, 167, 170, 171, 172, 173,
-	174, 175, 177, 179, 0, 0, 0, 637, 157, 159,
-	158, 181, 0, 0, 182, 161, 165, 164, 0, 0,
+	174, 175, 177, 179, 0, 157, 159, 158, 181, 566,
+	0, 0, 0, 0, 182, 161, 165, 164, 0, 0,
 	0, 0, 0, 160, 0, 162, 166, 168, 169, 176,
-	178, 163, 0, 0, 0, 183, 180, 0, 0, 0,
+	178, 163, 183, 180, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 155, 156,
+	167, 170, 171, 172, 173, 174, 175, 177, 179, 0,
+	157, 159, 158, 181, 0, 0, 561, 0, 0, 182,
+	161, 165, 164, 0, 0, 0, 0, 0, 160, 0,
+	162, 166, 168, 169, 176, 178, 163, 183, 180, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 155, 156, 167, 170, 171, 172, 173,
+	174, 175, 177, 179, 0, 157, 159, 158, 181, 0,
+	0, 557, 0, 0, 182, 161, 165, 164, 0, 0,
+	0, 0, 0, 160, 0, 162, 166, 168, 169, 176,
+	178, 163, 183, 180, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 414, 0, 0, 0, 155, 156,
+	167, 170, 171, 172, 173, 174, 175, 177, 179, 0,
+	0, 0, 0, 0, 0, 0, 419, 0, 0, 182,
+	161, 165, 164, 157, 159, 158, 181, 0, 160, 0,
+	162, 166, 168, 169, 176, 178, 163, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 155, 156, 167, 170, 171, 172, 173, 174, 175,
-	177, 179, 0, 157, 159, 158, 181, 0, 0, 626,
-	0, 0, 182, 161, 165, 164, 0, 0, 0, 0,
-	0, 160, 0, 162, 166, 168, 169, 176, 178, 163,
 	183, 180, 0, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 155, 156, 167, 170,
 	171, 172, 173, 174, 175, 177, 179, 0, 157, 159,
-	158, 181, 0, 0, 625, 0, 0, 182, 161, 165,
+	158, 181, 0, 0, 0, 0, 0, 182, 161, 165,
 	164, 0, 0, 0, 0, 0, 160, 0, 162, 166,
 	168, 169, 176, 178, 163, 183, 180, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	0, 155, 156, 167, 170, 171, 172, 173, 174, 175,
-	177, 179, 0, 0, 0, 608, 157, 159, 158, 181,
-	0, 0, 182, 161, 165, 164, 0, 0, 0, 0,
+	177, 179, 0, 0, 0, 0, 375, 157, 159, 158,
+	181, 0, 182, 161, 165, 164, 0, 0, 0, 0,
 	0, 160, 0, 162, 166, 168, 169, 176, 178, 163,
+	0, 0, 0, 0, 183, 180, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	155, 156, 167, 170, 171, 172, 173, 174, 175, 177,
+	179, 0, 0, 0, 0, 154, 157, 159, 158, 181,
+	0, 182, 161, 165, 164, 0, 0, 0, 0, 0,
+	160, 0, 162, 166, 168, 169, 176, 178, 163, 0,
 	0, 0, 0, 183, 180, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 155,
 	156, 167, 170, 171, 172, 173, 174, 175, 177, 179,
-	0, 157, 159, 158, 181, 0, 0, 599, 0, 0,
+	0, 0, 159, 158, 181, 0, 0, 0, 0, 0,
 	182, 161, 165, 164, 0, 0, 0, 0, 0, 160,
 	0, 162, 166, 168, 169, 176, 178, 163, 183, 180,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 155, 156, 167, 170, 171, 172,
-	173, 174, 175, 177, 179, 570, 0, 0, 589, 157,
-	159, 158, 181, 0, 0, 182, 161, 165, 164, 0,
+	173, 174, 175, 177, 179, 0, 0, 0, 158, 181,
+	0, 0, 0, 0, 0, 182, 161, 165, 164, 0,
 	0, 0, 0, 0, 160, 0, 162, 166, 168, 169,
-	176, 178, 163, 0, 0, 0, 183, 180, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 155, 156, 167, 170, 171, 172, 173, 174,
-	175, 177, 179, 0, 157, 159, 158, 181, 0, 0,
-	587, 0, 0, 182, 161, 165, 164, 0, 0, 0,
-	0, 0, 160, 0, 162, 166, 168, 169, 176, 178,
-	163, 183, 180, 0, 0, 0, 0, 0, 0, 0,
+	176, 178, 163, 183, 180, 430, 0, 0, 0, 0,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 155,
+	156, 167, 170, 171, 172, 173, 174, 175, 177, 179,
+	0, 0, 0, 0, 0, 0, 0, 181, 0, 0,
+	182, 161, 165, 164, 0, 0, 0, 0, 0, 160,
+	0, 162, 166, 168, 169, 176, 178, 163, 0, 0,
+	0, 183, 180, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 155, 156, 167,
-	170, 171, 172, 173, 174, 175, 177, 179, 0, 157,
-	159, 158, 181, 0, 0, 0, 0, 0, 182, 161,
+	170, 171, 172, 173, 174, 175, 177, 179, 0, 0,
+	0, 0, 181, 0, 0, 0, 0, 0, 182, 161,
 	165, 164, 0, 0, 0, 0, 0, 160, 0, 162,
 	166, 168, 169, 176, 178, 163, 183, 180, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 155, 156, 167, 170, 171, 172, 173, 174,
-	175, 177, 179, 0, 157, 159, 158, 181, 566, 0,
+	175, 177, 179, 0, 0, 0, 0, 181, 0, 0,
 	0, 0, 0, 182, 161, 165, 164, 0, 0, 0,
 	0, 0, 160, 0, 162, 166, 168, 169, 176, 178,
 	163, 183, 180, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 155, 156, 167,
-	170, 171, 172, 173, 174, 175, 177, 179, 0, 157,
-	159, 158, 181, 0, 0, 561, 0, 0, 182, 161,
-	165, 164, 0, 0, 0, 0, 0, 160, 0, 162,
-	166, 168, 169, 176, 178, 163, 183, 180, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 155, 156, 167, 170, 171, 172, 173, 174,
-	175, 177, 179, 0, 157, 159, 158, 181, 0, 0,
-	557, 0, 0, 182, 161, 165, 164, 0, 0, 0,
-	0, 0, 160, 0, 162, 166, 168, 169, 176, 178,
-	163, 183, 180, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 414, 0, 0, 0, 155, 156, 167,
 	170, 171, 172, 173, 174, 175, 177, 179, 0, 0,
-	0, 0, 0, 0, 0, 419, 0, 0, 182, 161,
-	165, 164, 157, 159, 158, 181, 0, 160, 0, 162,
-	166, 168, 169, 176, 178, 163, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 183,
-	180, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 155, 156, 167, 170, 171,
-	172, 173, 174, 175, 177, 179, 0, 157, 159, 158,
-	181, 0, 0, 0, 0, 0, 182, 161, 165, 164,
-	0, 0, 0, 0, 0, 160, 0, 162, 166, 168,
-	169, 176, 178, 163, 183, 180, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	155, 156, 167, 170, 171, 172, 173, 174, 175, 177,
-	179, 0, 0, 0, 0, 375, 157, 159, 158, 181,
-	0, 182, 161, 165, 164, 0, 0, 0, 0, 0,
-	160, 0, 162, 166, 168, 169, 176, 178, 163, 0,
-	0, 0, 0, 183, 180, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 155,
-	156, 167, 170, 171, 172, 173, 174, 175, 177, 179,
-	0, 0, 0, 0, 154, 157, 159, 158, 181, 0,
-	182, 161, 165, 164, 0, 0, 0, 0, 0, 160,
-	0, 162, 166, 168, 169, 176, 178, 163, 0, 0,
-	0, 0, 183, 180, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 155, 156,
-	167, 170, 171, 172, 173, 174, 175, 177, 179, 0,
-	0, 0, 158, 181, 0, 0, 0, 0, 0, 182,
-	161, 165, 164, 0, 0, 0, 0, 0, 160, 0,
-	162, 166, 168, 169, 176, 178, 163, 183, 180, 430,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 155, 156, 167, 170, 171, 172, 173,
-	174, 175, 177, 179, 0, 0, 0, 0, 0, 0,
-	0, 181, 0, 0, 182, 161, 165, 164, 0, 0,
-	0, 0, 0, 160, 0, 162, 166, 168, 169, 176,
-	178, 163, 0, 0, 0, 183, 180, 0, 0, 0,
+	0, 181, 0, 0, 0, 0, 0, 0, 0, 161,
+	165, 164, 0, 0, 0, 0, 0, 160, 0, 162,
+	166, 168, 169, 176, 178, 163, 180, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 155, 156, 167, 170, 171, 172, 173, 174, 175,
-	177, 179, 0, 0, 0, 0, 181, 0, 0, 0,
-	0, 0, 182, 161, 165, 164, 0, 0, 0, 0,
+	0, 181, 156, 167, 170, 171, 172, 173, 174, 175,
+	177, 179, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 161, 165, 164, 180, 0, 0, 0,
 	0, 160, 0, 162, 166, 168, 169, 176, 178, 163,
-	183, 180, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 155, 156, 167, 170,
-	171, 172, 173, 174, 175, 177, 179, 0, 0, 0,
-	0, 181, 0, 0, 0, 0, 0, 182, 161, 165,
-	164, 0, 0, 0, 0, 0, 160, 0, 162, 166,
-	168, 169, 176, 178, 163, 183, 180, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 155, 156, 167, 170, 171, 172, 173, 174, 175,
-	177, 179, 0, 0, 0, 181, 0, 0, 0, 0,
-	0, 0, 0, 161, 165, 164, 0, 0, 0, 0,
+	0, 181, 0, 167, 170, 171, 172, 173, 174, 175,
+	177, 179, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 161, 165, 164, 180, 0, 0, 0,
 	0, 160, 0, 162, 166, 168, 169, 176, 178, 163,
-	180, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 181, 156, 167, 170, 171,
-	172, 173, 174, 175, 177, 179, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 161, 165, 164,
-	180, 0, 0, 0, 0, 160, 0, 162, 166, 168,
-	169, 176, 178, 163, 0, 181, 0, 167, 170, 171,
-	172, 173, 174, 175, 177, 179, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 161, 165, 164,
-	180, 0, 0, 0, 0, 160, 0, 162, 166, 168,
-	169, 176, 178, 163, 0, 181, 0, 167, 170, 171,
-	172, 173, 174, 175, 177, 179, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 161, 165, 164,
-	180, 0, 0, 0, 0, 0, 0, 162, 166, 168,
-	169, 176, 178, 163, 0, 181, 0, 167, 170, 171,
-	172, 173, 174, 175, 177, 179, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 161, 165, 164,
-	180, 0, 0, 0, 0, 0, 0, 0, 166, 168,
-	169, 176, 178, 163, 0, 0, 0, 167, 170, 171,
-	172, 173, 174, 175, 177, 179, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 165, 164,
-	445, 446, 456, 457, 0, 0, 436, 0, 166, 168,
-	169, 176, 178, 163, 0, 461, 462, 463, 464, 465,
-	466, 467, 468, 469, 470, 471, 491, 492, 493, 494,
-	495, 483, 484, 485, 512, 486, 487, 472, 473, 474,
-	475, 476, 477, 478, 479, 480, 481, 482, 0, 503,
-	501, 502, 498, 499, 0, 0, 490, 496, 497, 504,
-	505, 507, 506, 508, 509, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 500, 511, 510, 0,
-	0, 447, 448, 449, 450, 451, 452, 453, 454, 455,
-	458, 459, 460, 488, 489, 439, 440, 441, 442, 443,
-	444, 445, 446, 456, 457, 0, 0, 918, 0, 0,
-	0, 0, 0, 0, 0, 0, 461, 462, 463, 464,
-	465, 466, 467, 468, 469, 470, 471, 491, 492, 493,
-	494, 495, 483, 484, 485, 512, 486, 487, 472, 473,
-	474, 475, 476, 477, 478, 479, 480, 481, 482, 0,
-	503, 501, 502, 498, 499, 0, 0, 490, 496, 497,
-	504, 505, 507, 506, 508, 509, 119, 0, 107, 0,
-	0, 0, 0, 0, 112, 0, 0, 500, 511, 510,
-	0, 0, 447, 448, 449, 450, 451, 452, 453, 454,
-	455, 458, 459, 460, 488, 489, 748, 749, 750, 747,
-	746, 745, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 111, 0, 0,
+	0, 181, 0, 167, 170, 171, 172, 173, 174, 175,
+	177, 179, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 161, 165, 164, 180, 0, 0, 0,
+	0, 0, 0, 0, 166, 168, 169, 176, 178, 163,
+	0, 0, 0, 167, 170, 171, 172, 173, 174, 175,
+	177, 179, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 0, 0, 165, 164, 445, 446, 456, 457,
+	0, 0, 436, 0, 166, 168, 169, 176, 178, 163,
+	0, 461, 462, 463, 464, 465, 466, 467, 468, 469,
+	470, 471, 491, 492, 493, 494, 495, 483, 484, 485,
+	512, 486, 487, 472, 473, 474, 475, 476, 477, 478,
+	479, 480, 481, 482, 0, 503, 501, 502, 498, 499,
+	0, 0, 490, 496, 497, 504, 505, 507, 506, 508,
+	509, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 0, 500, 511, 510, 0, 0, 447, 448, 449,
+	450, 451, 452, 453, 454, 455, 458, 459, 460, 488,
+	489, 439, 440, 441, 442, 443, 444, 445, 446, 456,
+	457, 0, 0, 919, 0, 0, 0, 0, 0, 0,
+	0, 0, 461, 462, 463, 464, 465, 466, 467, 468,
+	469, 470, 471, 491, 492, 493, 494, 495, 483, 484,
+	485, 512, 486, 487, 472, 473, 474, 475, 476, 477,
+	478, 479, 480, 481, 482, 0, 503, 501, 502, 498,
+	499, 0, 0, 490, 496, 497, 504, 505, 507, 506,
+	508, 509, 119, 0, 107, 0, 0, 0, 0, 0,
+	112, 0, 0, 500, 511, 510, 0, 0, 447, 448,
+	449, 450, 451, 452, 453, 454, 455, 458, 459, 460,
+	488, 489, 748, 749, 750, 747, 746, 745, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 136, 0, 0, 114,
+	0, 0, 667, 111, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 235, 0, 0, 0, 0,
+	0, 0, 136, 0, 0, 114, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	0, 235, 0, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 233, 0, 236, 0, 0, 0,
-	0, 0, 0, 0, 0, 108,
+	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+	233, 0, 668, 0, 0, 666, 0, 0, 0, 0,
+	0, 108,
 }
 
 var yyPact = [...]int{
-	-1000, -1000, 1246, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-	232, 451, 600, 744, -1000, -1000, -1000, 230, 4337, 229,
-	225, 5519, 5519, 5519, 136, 771, 5519, -1000, 6798, 219,
-	218, 217, -1000, 378, 5519, 786, 257, 32, 554, 783,
-	765, 762, 455, 480, 941, -1000, -1000, 213, -1000, -1000,
-	144, 211, 4835, 5519, 7606, 7606, 5519, 5519, 5519, 5519,
-	5519, -1000, -1000, 5519, 5519, 5519, 5519, 5519, 5519, 5519,
-	209, 5519, -1000, 769, 5519, 5519, 5519, -1000, -1000, -1000,
-	-1000, 77, -1000, 514, 504, -1000, 457, 207, 206, 5519,
-	5519, 205, 5519, 5519, -1000, -1000, -1000, -1000, -1000, -1000,
-	-1000, -1000, -1000, -1000, 761, 767, 32, -1000, 101, 172,
-	172, 203, -1000, 486, 720, 140, 720, 228, -1000, -1000,
-	313, 567, -9, 561, 720, -1000, -1000, -1000, -1000, -13,
-	-1000, -54, 3142, 5519, 673, 32, 472, 5519, 5519, 312,
-	6857, 661, 311, 310, -15, -1000, -1000, -18, -1000, -1000,
-	-55, -24, -1000, 6857, -1000, 5519, 5519, 5519, 5519, 5519,
-	5519, 5519, 5519, 5519, 5519, 5519, 5519, 5519, 5519, 5519,
-	5519, 5519, 5519, 5519, 5519, 5519, 5519, 5519, 5519, 5519,
-	5519, 346, 5405, 5519, 7606, 5519, 744, -1000, 6739, 309,
-	-1000, 755, -1000, 751, -1000, 568, -1000, 602, 201, 4337,
-	198, 304, 250, 5291, 5519, 5519, 5519, 5519, 5519, 5519,
-	5519, 5519, 5519, 5519, 5519, 5519, -1000, -1000, 5519, 5519,
-	5519, 106, 4835, 75, -5, -1000, -1000, 6684, 7606, 195,
-	-1000, -1000, 77, 5519, -1000, -1000, 4835, -1000, 390, 390,
-	415, 390, 6616, 390, 390, 390, 390, 390, 390, 390,
-	-1000, 5519, 390, 370, 776, 721, -1000, 159, 5177, 7606,
-	7025, 6970, 7025, 5519, 3456, 3456, 172, -1000, 500, 197,
-	172, -1000, -1000, 5519, 5519, 6857, 6857, 5519, 6857, 6857,
-	649, -1000, 669, 551, 776, 194, 5519, -1000, -1000, 4721,
-	-1000, 4835, 750, 486, 300, 486, -1000, -1000, 1088, -1000,
-	294, -25, 558, 720, -1000, 560, 474, 747, 536, -1000,
-	-1000, 744, 5519, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-	-1000, 185, 6561, 176, -1000, 293, -10, 6857, 6506, -1000,
-	-1000, -1000, -1000, 136, -1000, 708, 5519, -1000, 5519, 7134,
-	7174, 363, 7025, 6912, 7214, 7294, 7254, 107, 107, 107,
-	415, 390, 415, 415, 308, 308, 163, 163, 163, 163,
-	278, 278, 278, 278, 163, -1000, 6451, 5519, 7080, -11,
-	-1000, -1000, 6396, -30, 2984, -1000, -1000, -1000, 173, 568,
-	589, 595, 375, -1000, 595, 5519, -1000, 5519, -1000, -1000,
-	7025, 5519, 7025, 7025, 7025, 7025, 7025, 7025, 7025, 7025,
-	7025, 7025, 7025, 7025, 6341, 52, 6283, 172, -1000, 5519,
-	-1000, 132, -58, 4835, 5063, -1000, 4835, 6228, 50, -1000,
-	119, -1000, -1000, -1000, -1000, 184, 726, 6170, 80, 337,
-	5519, 49, 172, -1000, -1000, 5519, -1000, -1000, -1000, -1000,
+	-1000, -1000, 1247, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
+	265, 435, 559, 720, -1000, -1000, -1000, 263, 4338, 260,
+	259, 5520, 5520, 5520, 136, 784, 5520, -1000, 6739, 257,
+	256, 255, -1000, 394, 5520, 783, 278, 32, 500, 781,
+	778, 774, 456, 451, 770, -1000, -1000, 253, -1000, -1000,
+	196, 252, 4836, 5520, 449, 449, 5520, 5520, 5520, 5520,
+	5520, -1000, -1000, 5520, 5520, 5520, 5520, 5520, 5520, 5520,
+	251, 5520, -1000, 763, 5520, 5520, 5520, -1000, -1000, -1000,
+	-1000, 86, -1000, 527, 525, -1000, 299, 246, 241, 5520,
+	5520, 239, 5520, 5520, -1000, -1000, -1000, -1000, -1000, -1000,
+	-1000, -1000, -1000, -1000, 761, 725, 32, -1000, 114, 208,
+	208, 235, -1000, 489, 714, 172, 714, 302, -1000, -1000,
+	354, 583, 42, 610, 714, -1000, -1000, -1000, -1000, -9,
+	-1000, -54, 3143, 5520, 636, 32, 475, 5520, 5520, 352,
+	6798, 670, 351, 350, -18, -1000, -1000, -19, -1000, -1000,
+	-58, -24, -1000, 6798, -1000, 5520, 5520, 5520, 5520, 5520,
+	5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520,
+	5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520, 5520,
+	5520, 364, 5406, 5520, 449, 5520, 720, -1000, 6680, 349,
+	-1000, 773, -1000, 737, -1000, 563, -1000, 567, 232, 4338,
+	229, 348, 273, 5292, 5520, 5520, 5520, 5520, 5520, 5520,
+	5520, 5520, 5520, 5520, 5520, 5520, -1000, -1000, 5520, 5520,
+	5520, 104, 4836, 82, -6, -1000, -1000, 6625, 449, 225,
+	-1000, -1000, 86, 5520, -1000, -1000, 4836, -1000, 408, 408,
+	458, 408, 6557, 408, 408, 408, 408, 408, 408, 408,
+	-1000, 5520, 408, 397, 694, 638, -1000, 195, 5178, 449,
+	7021, 6966, 7021, 5520, 3457, 3457, 208, -1000, 501, 209,
+	208, -1000, -1000, 5520, 5520, 6798, 6798, 5520, 6798, 6798,
+	738, -1000, 729, 499, 694, 224, 5520, -1000, -1000, 4722,
+	-1000, 4836, 735, 489, 342, 489, -1000, -1000, 1089, -1000,
+	341, -28, 580, 714, -1000, 571, 517, 733, 561, -1000,
+	-1000, 720, 5520, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
+	-1000, 223, 6502, 219, -1000, 340, -8, 6798, 6447, -1000,
+	-1000, -1000, -1000, 136, -1000, 698, 5520, -1000, 5520, 7130,
+	7170, 6853, 7021, 6908, 164, 7250, 7210, 62, 62, 62,
+	458, 408, 458, 458, 269, 269, 3519, 3519, 3519, 3519,
+	96, 96, 96, 96, 3519, -1000, 6392, 5520, 7076, -11,
+	-1000, -1000, 6337, -30, 2985, -1000, -1000, -1000, 214, 563,
+	560, 532, 393, -1000, 532, 5520, -1000, 5520, -1000, -1000,
+	7021, 5520, 7021, 7021, 7021, 7021, 7021, 7021, 7021, 7021,
+	7021, 7021, 7021, 7021, 6282, 81, 6224, 208, -1000, 5520,
+	-1000, 171, -59, 4836, 5064, -1000, 4836, 6169, 71, -1000,
+	166, -1000, -1000, -1000, -1000, 184, 715, 6111, 97, 374,
+	5520, 66, 208, -1000, -1000, 5520, -1000, -1000, -1000, -1000,
 	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
 	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
 	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
@@ -1386,65 +1383,65 @@ var yyPact = [...]int{
 	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
 	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
 	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-	-1000, -1000, -1000, 172, -1000, -1000, -1000, -1000, 136, 5519,
-	5519, 106, 136, 568, -16, -1000, 6857, 6115, 6060, -1000,
-	-1000, -1000, 428, 6002, -1000, -17, -1000, 6857, 5519, 118,
-	-1000, -1000, 930, -1000, -1000, -1000, 473, 525, -1000, 720,
-	523, 692, -1000, 471, -1000, 6857, 117, 4181, 5519, 5519,
-	5519, 175, -1000, -1000, 6857, -1000, 5519, 7080, 114, 7606,
-	388, 4025, -1000, 167, 428, 589, -1000, 595, -1000, -1000,
-	368, -35, -1000, 5947, 5892, 2826, 7294, 3869, -1000, -1000,
-	-1000, 5834, -70, 5519, -1000, 6857, 7606, 158, 112, -1000,
-	-1000, -1000, 40, -1000, -1000, 677, -1000, -1000, -1000, -1000,
-	5519, -1000, 7025, -1000, -1000, 5776, -1000, -1000, 39, 5718,
-	-1000, -1000, 589, 109, 5519, -1000, -1000, 104, -19, -1000,
-	34, -1000, -1000, 780, -1000, -1000, -1000, -1000, 102, 4949,
-	6857, -1000, -1000, 720, 414, -20, -1000, -1000, 720, 692,
-	-1000, 289, -1000, -1000, -1000, 5663, 288, 6857, -1000, 284,
-	282, 7080, 281, -1000, 100, 563, 7606, 157, 4835, -1000,
-	-1000, -1000, 654, 428, 99, -1000, 365, -35, 1270, -1000,
-	595, 4337, 235, 279, -1000, -1000, -1000, 5519, 7025, -1000,
-	4835, -70, -1000, -1000, 5608, -1000, -1000, -1000, -1000, -1000,
-	-1000, 160, 428, 462, -1000, -1000, -1000, -1000, -28, -1000,
-	720, 335, 692, -1000, -20, -1000, 2668, 277, 5519, 369,
-	-1000, 675, -1000, -1000, 3557, 388, -1000, 4835, 37, 2510,
-	-1000, 154, 349, 98, 617, 348, -1000, -1000, -1000, 698,
-	645, 595, 532, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-	-1000, 1112, -1000, -1000, -1000, -1000, 3300, 7025, 95, 330,
-	347, -1000, 428, -1000, 701, -1000, 325, 720, -28, -1000,
-	-1000, 321, 273, -1000, 93, -1000, 5519, 153, 362, 270,
-	672, -1000, -1000, -1000, 89, -1000, 84, -1000, 262, 595,
-	-1000, 160, 160, 143, -1000, 954, -31, -1000, -62, 7446,
-	32, -43, -1000, -1000, 3300, -70, -1000, -1000, 553, -1000,
-	-75, -1000, -1000, 231, -1000, -1000, 3713, 5548, -1000, -1000,
-	-1000, -1000, -1000, 261, 2352, 3557, -1000, -1000, 85, -1000,
-	2194, 344, 342, 183, 667, -1000, -1000, 698, -1000, 5519,
-	-36, -1000, -80, 7446, -1000, -1000, 4620, 497, 5519, 5519,
-	-1000, -1000, -1000, -1000, -1000, 3300, -1000, 259, -1000, 83,
-	595, -1000, -1000, -1000, -40, -1000, -1000, 697, -1000, -1000,
-	6857, -1000, 7446, 5519, -1000, -1000, 4493, -1000, 199, 177,
-	605, 634, 493, -1000, 472, -1000, -1000, 7025, 6857, 2036,
-	3300, -1000, 341, -1000, 1878, 1720, -1000, 183, -1000, -1000,
-	-1000, 6857, 108, -1000, -1000, -1000, -1000, 595, 7547, 7446,
-	155, -1000, -1000, -1000, -1000, -1000, 428, -35, -1000, -1000,
-	7446, -1000, -1000, 1562, 79, -1000, -1000, 160, 241, -1000,
-	-1000, -1000, 1404, -1000,
+	-1000, -1000, -1000, 208, -1000, -1000, -1000, -1000, 136, 5520,
+	5520, 104, 136, 563, -13, -1000, 6798, 6056, 6001, -1000,
+	-1000, -1000, 618, 5943, -1000, -15, -1000, 6798, 5520, 158,
+	-1000, -1000, 931, -1000, -1000, -1000, 516, 546, -1000, 714,
+	535, 771, -1000, 515, -1000, 6798, 157, 4182, 5520, 5520,
+	5520, 222, -1000, -1000, 6798, -1000, 5520, 7076, 145, 449,
+	7562, 4026, -1000, 207, 618, 560, -1000, 532, -1000, -1000,
+	392, -50, -1000, 5888, 5833, 2827, 7250, 3870, -1000, -1000,
+	-1000, 5775, -60, 5520, -1000, 6798, 449, 199, 144, -1000,
+	-1000, -1000, 52, -1000, -1000, 673, -1000, -1000, -1000, -1000,
+	5520, -1000, 7021, -1000, -1000, 5717, -1000, -1000, 50, 5659,
+	-1000, -1000, 560, 142, 5520, -1000, -1000, 140, -16, -1000,
+	45, -1000, -1000, 620, -1000, -1000, -1000, -1000, 135, 4950,
+	6798, -1000, -1000, 714, 514, -35, -1000, -1000, 714, 771,
+	-1000, 337, -1000, -1000, -1000, 5604, 336, 6798, -1000, 335,
+	334, 7076, 322, -1000, 132, 554, 449, 194, 4836, -1000,
+	-1000, -1000, 609, 618, 123, -1000, 391, -50, 1429, -1000,
+	532, 4338, 210, 320, -1000, -1000, -1000, 5520, 7021, -1000,
+	4836, -60, -1000, -1000, 5549, -1000, -1000, -1000, -1000, -1000,
+	-1000, 204, 618, 472, -1000, -1000, -1000, -1000, -40, -1000,
+	714, 372, 771, -1000, -35, -1000, 2669, 316, 5520, 410,
+	-1000, 799, -1000, -1000, 3558, 7562, -1000, 4836, 49, 2511,
+	-1000, 193, 390, 122, 598, 387, -1000, -1000, -1000, 618,
+	657, 532, 534, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
+	-1000, 1271, -1000, -1000, -1000, -1000, 3301, 7021, 119, 370,
+	386, -1000, 618, -1000, 693, -1000, 368, 714, -40, -1000,
+	-1000, 367, 311, -1000, 117, -1000, 5520, 203, 407, 310,
+	793, -1000, -1000, -1000, 107, -1000, 91, -1000, 309, 532,
+	-1000, 204, 204, 186, -1000, 1113, 678, 7402, 32, -37,
+	-1000, -1000, 3301, -60, -1000, -1000, 548, -1000, -65, -1000,
+	-1000, 363, -1000, -1000, 3714, 338, -1000, -1000, -1000, -1000,
+	-1000, 306, 2353, 3558, -1000, -1000, 88, -1000, 2195, 384,
+	378, 143, 955, -1000, -29, -1000, -66, -31, -1000, -70,
+	7402, -1000, -1000, 4621, 664, 5520, 5520, -1000, -1000, -1000,
+	-1000, -1000, 3301, -1000, 305, -1000, 90, 532, -1000, -1000,
+	-1000, -36, -1000, -1000, 690, -1000, -1000, 678, -1000, 5520,
+	-1000, 7402, 5520, -1000, -1000, 4494, -1000, 303, 295, 578,
+	617, 495, -1000, 475, -1000, -1000, 7021, 6798, 2037, 3301,
+	-1000, 365, -1000, 1879, 1721, -1000, 143, -1000, -1000, 6798,
+	-1000, 6798, 175, -1000, -1000, -1000, -1000, 532, 7503, 7402,
+	270, -1000, -1000, -1000, -1000, -1000, -1000, 618, -50, -1000,
+	-1000, 7402, -1000, -1000, 1563, 89, -1000, -1000, 204, 286,
+	-1000, -1000, -1000, 1405, -1000,
 }
 
 var yyPgo = [...]int{
-	0, 912, 911, 16, 9, 910, 4, 28, 13, 909,
-	11, 80, 71, 49, 45, 41, 908, 26, 907, 78,
-	21, 63, 905, 0, 62, 904, 902, 39, 56, 32,
-	901, 36, 899, 55, 47, 898, 6, 895, 894, 893,
-	892, 14, 51, 891, 890, 95, 102, 199, 889, 887,
-	886, 5, 884, 84, 40, 880, 50, 33, 879, 878,
-	877, 876, 875, 79, 873, 871, 870, 869, 12, 868,
-	867, 46, 34, 38, 2, 17, 716, 43, 81, 866,
-	862, 861, 10, 859, 857, 525, 42, 37, 843, 835,
-	8, 791, 18, 20, 834, 833, 832, 830, 829, 543,
-	828, 114, 826, 822, 821, 96, 819, 31, 818, 816,
-	30, 29, 815, 814, 19, 813, 811, 535, 807, 806,
-	803, 73, 1, 3, 802, 15, 7, 25, 800,
+	0, 955, 953, 14, 8, 948, 4, 29, 13, 947,
+	11, 44, 79, 71, 49, 45, 946, 26, 944, 78,
+	21, 83, 942, 0, 62, 927, 925, 40, 190, 37,
+	19, 36, 924, 84, 73, 923, 5, 922, 920, 912,
+	911, 15, 51, 910, 909, 95, 101, 199, 908, 907,
+	906, 6, 905, 88, 41, 904, 56, 50, 901, 900,
+	886, 885, 884, 80, 879, 878, 877, 874, 10, 872,
+	871, 46, 39, 38, 2, 16, 674, 81, 87, 867,
+	866, 864, 12, 863, 860, 557, 42, 55, 858, 856,
+	9, 720, 32, 20, 854, 851, 850, 849, 844, 543,
+	843, 18, 842, 835, 834, 89, 833, 43, 828, 827,
+	25, 33, 820, 819, 34, 817, 811, 562, 804, 800,
+	799, 99, 1, 3, 797, 17, 7, 28, 735,
 }
 
 var yyR1 = [...]int{
@@ -1525,7 +1522,7 @@ var yyR2 = [...]int{
 	7, 3, 6, 1, 0, 1, 3, 4, 6, 0,
 	1, 1, 2, 1, 1, 1, 0, 2, 2, 4,
 	1, 3, 1, 2, 3, 1, 1, 3, 1, 1,
-	3, 2, 0, 3, 4, 3, 10, 1, 3, 1,
+	3, 2, 0, 4, 4, 3, 10, 1, 3, 1,
 	2, 3, 1, 2, 2, 2, 3, 3, 3, 4,
 	3, 1, 1, 3, 1, 3, 1, 1, 0, 1,
 	1, 2, 1, 1, 1, 1, 1, 1, 3, 1,
@@ -1633,21 +1630,21 @@ var yyChk = [...]int{
 	-127, -74, 147, -29, -2, 84, -7, 160, -110, 145,
 	-17, -7, 22, 146, -107, 145, 32, 33, -114, 31,
 	-114, -82, -11, 147, -92, -28, -93, 151, 28, 148,
-	144, 149, -89, 45, 144, -125, -112, -41, 12, 39,
-	37, -126, -90, 145, -122, 149, 145, 144, -127, -75,
-	12, 145, -20, -7, 145, 146, 149, -23, -8, 147,
-	146, 145, 146, 31, -122, 149, 149, 146, -102, -10,
-	-122, -74, -74, 148, -125, 145, 146, 160, -127, 162,
-	-104, -68, -6, -3, -79, 146, 144, -125, 59, 162,
-	145, -83, -11, 147, -8, -122, 146, 26, -82, 12,
-	161, 145, 144, 144, -118, -51, 12, 153, 145, -41,
-	-23, 146, 160, 162, -6, 145, -115, -36, -37, -38,
-	-39, -40, -10, -6, 80, 10, 145, -23, -23, -122,
-	-122, 146, 149, -10, -122, -122, 149, 160, 12, -127,
+	144, 149, -89, 45, 144, -125, -30, 39, 37, -126,
+	-90, 145, -122, 149, 145, 144, -127, -75, 12, 145,
+	-20, -7, 145, 146, 149, -23, -8, 147, 146, 145,
+	146, 31, -122, 149, 149, 146, -102, -10, -122, -74,
+	-74, 148, -125, 145, -112, -41, 12, -104, -68, -6,
+	-3, -79, 146, 144, -125, 59, 162, 145, -83, -11,
+	147, -8, -122, 146, 26, -82, 12, 161, 145, 144,
+	144, -118, -51, 12, 153, 145, 146, 160, -127, 162,
+	146, 160, 162, -6, 145, -115, -36, -37, -38, -39,
+	-40, -10, -6, 80, 10, 145, -23, -23, -122, -122,
+	146, 149, -10, -122, -122, 149, 160, 12, -41, -23,
 	-68, -23, -127, 145, -36, 146, 146, 46, 29, 79,
-	24, 144, 145, 145, -51, -127, 148, -126, 10, -4,
-	-90, -6, 146, -122, -123, -6, 145, 149, -74, -81,
-	146, 144, -122, 145,
+	24, 144, 145, 145, -51, -127, -127, 148, -126, 10,
+	-4, -90, -6, 146, -122, -123, -6, 145, 149, -74,
+	-81, 146, 144, -122, 145,
 }
 
 var yyDef = [...]int{
@@ -1724,27 +1721,27 @@ var yyDef = [...]int{
 	491, 226, 219, 168, 167, 222, 229, 231, 107, 112,
 	0, 0, 108, 116, 107, 131, 0, 0, 289, 0,
 	198, 0, 198, 147, 0, 0, -2, 458, 0, 0,
-	152, 0, 0, 0, 377, 0, 242, 176, 241, 0,
+	152, 0, 0, 0, 377, 0, 242, 176, 241, 219,
 	0, 0, -2, 267, 270, 272, 273, 274, 275, 276,
 	277, 268, 248, 206, 124, 212, -2, 296, 0, 0,
 	0, 374, 0, 216, 0, 169, 0, 108, 107, 105,
 	109, 0, 0, 136, 0, 194, 0, 0, 0, 0,
 	0, 148, 190, 124, 0, -2, 0, -2, 0, 0,
-	124, 226, 226, 0, 242, 268, 0, 279, 374, 0,
-	375, 0, 271, 177, -2, 466, 477, 242, 0, 227,
-	217, 103, 111, 0, 106, 204, 0, 0, 124, 201,
-	202, 195, 196, 0, 0, 0, 186, 193, 0, 158,
-	0, 0, 0, 0, 268, 171, 243, 0, 280, 0,
-	0, 283, 0, 0, 245, 249, 0, 268, 0, 0,
-	104, 137, 188, 124, 124, -2, 197, 0, 149, 0,
-	0, 161, 124, 124, 0, 380, 381, 0, 170, 278,
-	374, 244, 0, 0, 374, 250, 0, 252, 0, 0,
-	262, 0, 0, 261, 57, -2, 293, 373, 218, 0,
-	-2, 191, 0, 159, 0, 0, 378, 0, 382, 281,
+	124, 226, 226, 0, 242, 268, 0, 0, 375, 0,
+	271, 177, -2, 466, 477, 242, 0, 227, 217, 103,
+	111, 0, 106, 204, 0, 0, 124, 201, 202, 195,
+	196, 0, 0, 0, 186, 193, 0, 158, 0, 0,
+	0, 0, 268, 171, 0, 279, 374, 0, 283, 0,
+	0, 245, 249, 0, 268, 0, 0, 104, 137, 188,
+	124, 124, -2, 197, 0, 149, 0, 0, 161, 124,
+	124, 0, 380, 381, 0, 170, 243, 0, 280, 0,
+	244, 0, 0, 374, 250, 0, 252, 0, 0, 262,
+	0, 0, 261, 57, -2, 293, 373, 218, 0, -2,
+	191, 0, 159, 0, 0, 378, 0, 382, 278, 374,
 	282, 374, 0, 251, 253, 254, 255, 0, 0, 0,
-	0, 124, 165, 372, 379, 284, -2, 256, 257, 258,
-	260, 263, 189, 0, 0, 259, 157, 226, 0, 246,
-	264, 124, 0, 265,
+	0, 124, 165, 372, 379, 281, 284, -2, 256, 257,
+	258, 260, 263, 189, 0, 0, 259, 157, 226, 0,
+	246, 264, 124, 0, 265,
 }
 
 var yyTok1 = [...]int{
@@ -4924,18 +4921,18 @@ yydefault:
 			yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
 		}
 	case 243:
-		yyDollar = yyS[yypt-3 : yypt+1]
+		yyDollar = yyS[yypt-4 : yypt+1]
 //line php7.y:2522
 		{
-			yyVAL.node = stmt.NewPropertyList(yyDollar[1].identList, yyDollar[2].list)
+			yyVAL.node = stmt.NewPropertyList(yyDollar[1].identList, yyDollar[2].node, yyDollar[3].list)
 
 			// save position
-			yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewPosPos(identListStartPos(yyDollar[1].identList), &yyDollar[3].token.Position))
+			yyVAL.node.SetPosition(yylex.(*Parser).positionBuilder.NewPosPos(identListStartPos(yyDollar[1].identList), &yyDollar[4].token.Position))
 
 			// save comments
 			yylex.(*Parser).MoveFreeFloating(yyDollar[1].identList[0], yyVAL.node)
-			yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.PropertyList, yyDollar[3].token.FreeFloating)
-			yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[3].token))
+			yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.PropertyList, yyDollar[4].token.FreeFloating)
+			yylex.(*Parser).setFreeFloating(yyVAL.node, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token))
 
 			yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
 		}
diff --git a/src/php/parser/php7/php7.y b/src/php/parser/php7/php7.y
index 66d157a..d16412c 100644
--- a/src/php/parser/php7/php7.y
+++ b/src/php/parser/php7/php7.y
@@ -2518,17 +2518,17 @@ class_statement_list:
 ;
 
 class_statement:
-        variable_modifiers property_list ';'
+        variable_modifiers optional_type property_list ';'
             {
-                $$ = stmt.NewPropertyList($1, $2)
+                $$ = stmt.NewPropertyList($1, $2, $3)
 
                 // save position
-                $$.SetPosition(yylex.(*Parser).positionBuilder.NewPosPos(identListStartPos($1), &$3.Position))
+                $$.SetPosition(yylex.(*Parser).positionBuilder.NewPosPos(identListStartPos($1), &$4.Position))
 
                 // save comments
                 yylex.(*Parser).MoveFreeFloating($1[0], $$)
-                yylex.(*Parser).setFreeFloating($$, freefloating.PropertyList, $3.FreeFloating)
-                yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($3))
+                yylex.(*Parser).setFreeFloating($$, freefloating.PropertyList, $4.FreeFloating)
+                yylex.(*Parser).setFreeFloating($$, freefloating.SemiColon, yylex.(*Parser).GetFreeFloatingToken($4))
 
                 yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
             }
diff --git a/src/php/parser/printer/printer.go b/src/php/parser/printer/printer.go
index 1c343cc..211e241 100644
--- a/src/php/parser/printer/printer.go
+++ b/src/php/parser/printer/printer.go
@@ -2768,6 +2768,12 @@ func (p *Printer) printStmtPropertyList(n node.Node) {
 		p.Print(m)
 	}
 
+	if nn.Type != nil && nn.Type.GetFreeFloating().IsEmpty() {
+		io.WriteString(p.w, " ")
+	}
+
+	p.Print(nn.Type)
+
 	if nn.Properties[0].GetFreeFloating().IsEmpty() {
 		io.WriteString(p.w, " ")
 	}


Test patch:
diff --git a/src/php/parser/node/stmt/t_property_list_test.go b/src/php/parser/node/stmt/t_property_list_test.go
index 8be56c8..64309d6 100644
--- a/src/php/parser/node/stmt/t_property_list_test.go
+++ b/src/php/parser/node/stmt/t_property_list_test.go
@@ -4,6 +4,7 @@ import (
 	"testing"
 
 	"github.com/VKCOM/noverify/src/linttest/assert"
+	"github.com/VKCOM/noverify/src/php/parser/node/name"
 
 	"github.com/VKCOM/noverify/src/php/parser/node"
 	"github.com/VKCOM/noverify/src/php/parser/node/scalar"
@@ -320,3 +321,101 @@ func TestProperties2(t *testing.T) {
 	actual := php7parser.GetRootNode()
 	assert.DeepEqual(t, expected, actual)
 }
+
+func TestPropertyType(t *testing.T) {
+	src := `<? class foo {var bar $a;}`
+
+	expected := &node.Root{
+		Position: &position.Position{
+			StartLine: 1,
+			EndLine:   1,
+			StartPos:  3,
+			EndPos:    26,
+		},
+		Stmts: []node.Node{
+			&stmt.Class{
+				Position: &position.Position{
+					StartLine: 1,
+					EndLine:   1,
+					StartPos:  3,
+					EndPos:    26,
+				},
+				PhpDocComment: "",
+				ClassName: &node.Identifier{
+					Position: &position.Position{
+						StartLine: 1,
+						EndLine:   1,
+						StartPos:  9,
+						EndPos:    12,
+					},
+					Value: "foo",
+				},
+				Stmts: []node.Node{
+					&stmt.PropertyList{
+						Position: &position.Position{
+							StartLine: 1,
+							EndLine:   1,
+							StartPos:  14,
+							EndPos:    25,
+						},
+						Modifiers: []*node.Identifier{
+							{
+								Position: &position.Position{
+									StartLine: 1,
+									EndLine:   1,
+									StartPos:  14,
+									EndPos:    17,
+								},
+								Value: "var",
+							},
+						},
+						Type: &name.Name{
+							Position: &position.Position{
+								StartLine: 1,
+								EndLine:   1,
+								StartPos:  18,
+								EndPos:    21,
+							},
+							Parts: []node.Node{
+								&name.NamePart{
+									Position: &position.Position{
+										StartLine: 1,
+										EndLine:   1,
+										StartPos:  18,
+										EndPos:    21,
+									},
+									Value: "bar",
+								},
+							},
+						},
+						Properties: []node.Node{
+							&stmt.Property{
+								Position: &position.Position{
+									StartLine: 1,
+									EndLine:   1,
+									StartPos:  22,
+									EndPos:    24,
+								},
+								PhpDocComment: "",
+								Variable: &node.SimpleVar{
+									Position: &position.Position{
+										StartLine: 1,
+										EndLine:   1,
+										StartPos:  22,
+										EndPos:    24,
+									},
+									Name: "a",
+								},
+							},
+						},
+					},
+				},
+			},
+		},
+	}
+
+	php7parser := php7.NewParser([]byte(src))
+	php7parser.Parse()
+	actual := php7parser.GetRootNode()
+	assert.DeepEqual(t, expected, actual)
+}
diff --git a/src/php/parser/printer/printer_parsed_php7_test.go b/src/php/parser/printer/printer_parsed_php7_test.go
index c5311e0..5345d4c 100644
--- a/src/php/parser/printer/printer_parsed_php7_test.go
+++ b/src/php/parser/printer/printer_parsed_php7_test.go
@@ -1255,7 +1255,7 @@ func TestParseAndPrintPropertyList(t *testing.T) {
 	class Foo {
 		var $a = '' , $b = null ;
 		private $c ;
-		public static $d ;
+		public static Bar $d ;
 		
 	}`
 
diff --git a/src/php/parser/printer/printer_test.go b/src/php/parser/printer/printer_test.go
index 0212340..1fb91be 100644
--- a/src/php/parser/printer/printer_test.go
+++ b/src/php/parser/printer/printer_test.go
@@ -3495,6 +3495,13 @@ func TestPrinterPrintPropertyList(t *testing.T) {
 			{Value: "public"},
 			{Value: "static"},
 		},
+		Type: &name.Name{
+			Parts: []node.Node{
+				&name.NamePart{
+					Value: "Foo",
+				},
+			},
+		},
 		Properties: []node.Node{
 			&stmt.Property{
 				Variable: &node.SimpleVar{
@@ -3510,7 +3517,7 @@ func TestPrinterPrintPropertyList(t *testing.T) {
 		},
 	})
 
-	expected := `public static $a='a',$b;`
+	expected := `public static Foo $a='a',$b;`
 	actual := o.String()
 
 	if expected != actual {